orgnote-api 0.18.1 → 0.18.2
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/api.d.ts +9 -3
- package/mappers/orgnode-to-note.js +2 -2
- package/models/auth-store.d.ts +21 -0
- package/models/auth-store.js +1 -0
- package/models/default-commands.d.ts +2 -1
- package/models/default-commands.js +2 -0
- package/models/file-cache.d.ts +12 -0
- package/models/file-cache.js +1 -0
- package/models/file-manager-store.d.ts +14 -0
- package/models/file-manager-store.js +1 -0
- package/models/file-opener-store.d.ts +5 -0
- package/models/file-opener-store.js +1 -0
- package/models/file-path.d.ts +4 -0
- package/models/file-path.js +1 -0
- package/models/file-system-store.d.ts +0 -0
- package/models/file-system-store.js +0 -0
- package/models/file-system.d.ts +2 -1
- package/models/file-tree.d.ts +12 -0
- package/models/file-tree.js +1 -0
- package/models/files-store.d.ts +6 -0
- package/models/files-store.js +1 -0
- package/models/index.d.ts +11 -0
- package/models/index.js +13 -0
- package/models/oauth-provider.d.ts +1 -0
- package/models/oauth-provider.js +1 -0
- package/models/repositories.d.ts +70 -0
- package/models/repositories.js +1 -0
- package/models/store.d.ts +2 -0
- package/models/store.js +1 -0
- package/models/sync-store.d.ts +10 -0
- package/models/sync-store.js +1 -0
- package/models/user.d.ts +7 -0
- package/models/user.js +1 -0
- package/package.json +2 -2
- package/tools/__tests__/parent-folder.spec.d.ts +1 -0
- package/tools/__tests__/parent-folder.spec.js +14 -0
- package/tools/get-file-name.d.ts +1 -0
- package/tools/get-file-name.js +3 -0
- package/tools/get-parent-dir.d.ts +1 -0
- package/tools/get-parent-dir.js +7 -0
- package/tools/index.d.ts +1 -0
- package/tools/index.js +1 -0
package/api.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { Command, CSSVariable, ThemeVariable, Note, InlineEmbeddedWidget, MultilineEmbeddedWidget, OrgLineClass, WidgetBuilder, CommandPreview, OrgNoteEncryption, Modal } from './models/index.js';
|
|
1
|
+
import { Command, CSSVariable, ThemeVariable, Note, InlineEmbeddedWidget, MultilineEmbeddedWidget, OrgLineClass, FileSystem, WidgetBuilder, CommandPreview, OrgNoteEncryption, Modal, SyncStoreDefinition, FilesStoreDefinition, FileOpenerStoreDefinition, FileManageStoreDefinition } from './models/index.js';
|
|
2
2
|
import type { NavigationFailure } from 'vue-router';
|
|
3
3
|
import { WidgetType } from './models/widget-type.js';
|
|
4
4
|
import type { Component } from 'vue';
|
|
5
5
|
import { NodeType } from 'org-mode-ast';
|
|
6
6
|
import { EditorExtension } from './models/editor.js';
|
|
7
|
+
import { AuthStoreDefinition } from './models/auth-store.js';
|
|
7
8
|
type WithNodeType<T> = {
|
|
8
9
|
nodeType: NodeType;
|
|
9
10
|
} & T;
|
|
@@ -60,8 +61,13 @@ export interface OrgNoteApi {
|
|
|
60
61
|
}) => WidgetBuilder;
|
|
61
62
|
};
|
|
62
63
|
};
|
|
63
|
-
|
|
64
|
-
|
|
64
|
+
core: {
|
|
65
|
+
useFileSystem: () => FileSystem;
|
|
66
|
+
useSyncStore: SyncStoreDefinition;
|
|
67
|
+
useFilesStore: FilesStoreDefinition;
|
|
68
|
+
useFileOpenerStore: FileOpenerStoreDefinition;
|
|
69
|
+
useFileManagerStore: FileManageStoreDefinition;
|
|
70
|
+
useAuthStore: AuthStoreDefinition;
|
|
65
71
|
};
|
|
66
72
|
commands: {
|
|
67
73
|
add(...commands: Command[]): void;
|
|
@@ -4,8 +4,8 @@ export function orgnodeToNote(orgnode, fileInfo) {
|
|
|
4
4
|
id: orgnode.meta.id,
|
|
5
5
|
meta: orgnode.meta,
|
|
6
6
|
filePath: splitPath(fileInfo.path),
|
|
7
|
-
touchedAt: new Date(fileInfo.atime).toISOString(),
|
|
7
|
+
touchedAt: fileInfo.atime && new Date(fileInfo.atime).toISOString(),
|
|
8
8
|
updatedAt: new Date(Math.max(fileInfo.mtime, fileInfo.ctime)).toISOString(),
|
|
9
|
-
createdAt: new Date(fileInfo.ctime).toISOString(),
|
|
9
|
+
createdAt: fileInfo.ctime && new Date(fileInfo.ctime).toISOString(),
|
|
10
10
|
};
|
|
11
11
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Ref } from 'vue';
|
|
2
|
+
import { Store } from './store.js';
|
|
3
|
+
import { PersonalInfo } from './user.js';
|
|
4
|
+
import { OAuthProvider } from './oauth-provider.js';
|
|
5
|
+
export interface AuthStore {
|
|
6
|
+
token: Ref<string>;
|
|
7
|
+
user: Ref<PersonalInfo>;
|
|
8
|
+
provider: Ref<OAuthProvider>;
|
|
9
|
+
auth: (params: {
|
|
10
|
+
provider: string;
|
|
11
|
+
environment?: string;
|
|
12
|
+
redirectUrl?: string;
|
|
13
|
+
}) => Promise<void>;
|
|
14
|
+
authViaGithub: (redirectUrl: string) => Promise<void>;
|
|
15
|
+
logout: () => Promise<void>;
|
|
16
|
+
verifyUser: () => Promise<void>;
|
|
17
|
+
authUser: (u: PersonalInfo, token: string) => Promise<void>;
|
|
18
|
+
subscribe: (token: string, email?: string) => Promise<void>;
|
|
19
|
+
removeUserAccount: () => Promise<void>;
|
|
20
|
+
}
|
|
21
|
+
export type AuthStoreDefinition = Store<AuthStore>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -38,4 +38,6 @@ export var DefaultCommands;
|
|
|
38
38
|
// Native mobile specific
|
|
39
39
|
DefaultCommands["SELECT_FILE_PATH"] = "select file path";
|
|
40
40
|
DefaultCommands["PICK_SYNC_DIR"] = "pick sync dir";
|
|
41
|
+
// File sync
|
|
42
|
+
DefaultCommands["SYNC_FILES"] = "sync files";
|
|
41
43
|
})(DefaultCommands || (DefaultCommands = {}));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Ref } from 'vue';
|
|
2
|
+
import { Store } from './store.js';
|
|
3
|
+
import { FileNode } from './file-tree.js';
|
|
4
|
+
export interface FileManagerStore {
|
|
5
|
+
fileTree: Ref<FileNode[]>;
|
|
6
|
+
renameFile: (fileNode: FileNode, newName: string) => Promise<void>;
|
|
7
|
+
deleteFile: (fileNode: FileNode) => Promise<void>;
|
|
8
|
+
updateFileManager: () => void;
|
|
9
|
+
createFolder: (name?: string) => Promise<void>;
|
|
10
|
+
editedFileItem: Ref<FileNode>;
|
|
11
|
+
stopEdit: () => void;
|
|
12
|
+
expandedNodes: Ref<string[]>;
|
|
13
|
+
}
|
|
14
|
+
export type FileManageStoreDefinition = Store<FileManagerStore>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
File without changes
|
|
File without changes
|
package/models/file-system.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ export interface FileInfo {
|
|
|
10
10
|
uri?: string;
|
|
11
11
|
}
|
|
12
12
|
export interface FileSystem {
|
|
13
|
-
readFile: <T extends 'utf8'
|
|
13
|
+
readFile: <T extends 'utf8' | 'binary' = 'utf8', R = T extends 'utf8' ? string : Uint8Array>(path: string, encoding?: T) => Promise<R>;
|
|
14
14
|
writeFile: (path: string, content: string | Uint8Array, encoding?: BufferEncoding) => Promise<void>;
|
|
15
15
|
readDir: (path: string) => Promise<FileInfo[]>;
|
|
16
16
|
fileInfo: (path: string) => Promise<FileInfo>;
|
|
@@ -20,4 +20,5 @@ export interface FileSystem {
|
|
|
20
20
|
mkdir: (path: string) => Promise<void>;
|
|
21
21
|
isDirExist: (path: string) => Promise<boolean>;
|
|
22
22
|
isFileExist: (path: string) => Promise<boolean>;
|
|
23
|
+
utimeSync: (path: string, atime?: string | number | Date, mtime?: string | number | Date) => Promise<void>;
|
|
23
24
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/models/index.d.ts
CHANGED
|
@@ -11,3 +11,14 @@ export * from './default-commands.js';
|
|
|
11
11
|
export * from './encryption.js';
|
|
12
12
|
export * from './file-system.js';
|
|
13
13
|
export * from './sync.js';
|
|
14
|
+
export * from './file-cache.js';
|
|
15
|
+
export * from './file-path.js';
|
|
16
|
+
export * from './file-tree.js';
|
|
17
|
+
export * from './user.js';
|
|
18
|
+
export * from './oauth-provider.js';
|
|
19
|
+
export * from './sync-store.js';
|
|
20
|
+
export * from './files-store.js';
|
|
21
|
+
export * from './file-opener-store.js';
|
|
22
|
+
export * from './file-manager-store.js';
|
|
23
|
+
export * from './auth-store.js';
|
|
24
|
+
export * from './repositories.js';
|
package/models/index.js
CHANGED
|
@@ -11,3 +11,16 @@ export * from "./default-commands.js";
|
|
|
11
11
|
export * from "./encryption.js";
|
|
12
12
|
export * from "./file-system.js";
|
|
13
13
|
export * from "./sync.js";
|
|
14
|
+
export * from "./file-cache.js";
|
|
15
|
+
export * from "./file-path.js";
|
|
16
|
+
export * from "./file-tree.js";
|
|
17
|
+
export * from "./user.js";
|
|
18
|
+
export * from "./oauth-provider.js";
|
|
19
|
+
// Stores
|
|
20
|
+
export * from "./sync-store.js";
|
|
21
|
+
export * from "./files-store.js";
|
|
22
|
+
export * from "./file-opener-store.js";
|
|
23
|
+
export * from "./file-manager-store.js";
|
|
24
|
+
export * from "./auth-store.js";
|
|
25
|
+
// Repositories
|
|
26
|
+
export * from "./repositories.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type OAuthProvider = 'github' | 'google';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { ExtensionMeta, StoredExtension } from './extension.js';
|
|
2
|
+
import { FileCache } from './file-cache.js';
|
|
3
|
+
import { FilePathInfo } from './file-path.js';
|
|
4
|
+
import { Note, NotePreview } from './note.js';
|
|
5
|
+
export interface ExtensionRepository {
|
|
6
|
+
getMeta(): Promise<ExtensionMeta[]>;
|
|
7
|
+
getActiveExtensions(): Promise<StoredExtension[]>;
|
|
8
|
+
setActiveStatus(extensionName: string, active: boolean): Promise<void>;
|
|
9
|
+
activateExtension(extensionName: string): Promise<void>;
|
|
10
|
+
deactivateExtension(extensionName: string): Promise<void>;
|
|
11
|
+
upsertExtensions(extensions: StoredExtension[]): Promise<void>;
|
|
12
|
+
getExtension(extensionName: string): Promise<StoredExtension>;
|
|
13
|
+
getExtensionBySource(source: string): Promise<StoredExtension>;
|
|
14
|
+
deleteBySource(source: string): Promise<void>;
|
|
15
|
+
delete(extensionName: string): Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
export interface FileRepository {
|
|
18
|
+
upsert(file: FileCache): Promise<void>;
|
|
19
|
+
bulkUpsert(file: FileCache[]): Promise<void>;
|
|
20
|
+
update(filePath: string, file: Partial<FileCache>): Promise<void>;
|
|
21
|
+
delete(filePath: string): Promise<void>;
|
|
22
|
+
markAsDelete(filePath: string, deletedAt?: Date): Promise<void>;
|
|
23
|
+
clear(): Promise<void>;
|
|
24
|
+
getFirstUnuploaded(): Promise<FileCache>;
|
|
25
|
+
search(text: string): Promise<FileCache[]>;
|
|
26
|
+
getByPath(path: string): Promise<FileCache>;
|
|
27
|
+
getAll(): Promise<FileCache[]>;
|
|
28
|
+
getFilesAfterUpdateTime(updatedTime?: Date): Promise<FileCache[]>;
|
|
29
|
+
count(updatedTime?: Date): Promise<number>;
|
|
30
|
+
}
|
|
31
|
+
export interface NoteRepository {
|
|
32
|
+
getNotesAfterUpdateTime(updatedTime?: string): Promise<Note[]>;
|
|
33
|
+
getDeletedNotes(): Promise<Note[]>;
|
|
34
|
+
saveNotes(notes: Note[]): Promise<void>;
|
|
35
|
+
putNote(note: Note): Promise<void>;
|
|
36
|
+
getById(id: string): Promise<Note>;
|
|
37
|
+
getByPath(path: string[]): Promise<Note>;
|
|
38
|
+
getNotePreviews(options?: {
|
|
39
|
+
limit?: number;
|
|
40
|
+
offset?: number;
|
|
41
|
+
searchText?: string;
|
|
42
|
+
tags?: string[];
|
|
43
|
+
bookmarked?: boolean;
|
|
44
|
+
}): Promise<NotePreview[]>;
|
|
45
|
+
deleteNotes(noteIds: string[]): Promise<void>;
|
|
46
|
+
markAsDeleted(noteIds: string[]): Promise<void>;
|
|
47
|
+
bulkPartialUpdate(updates: {
|
|
48
|
+
id: string;
|
|
49
|
+
changes: Partial<Note>;
|
|
50
|
+
}[]): Promise<void>;
|
|
51
|
+
count(searchText?: string, tags?: string[]): Promise<number>;
|
|
52
|
+
getFilePaths(): Promise<FilePathInfo[]>;
|
|
53
|
+
touchNote(noteId: string): Promise<void>;
|
|
54
|
+
getTagsStatistic(): Promise<{
|
|
55
|
+
tag: string;
|
|
56
|
+
count: number;
|
|
57
|
+
}[]>;
|
|
58
|
+
addBookmark(noteId: string): Promise<void>;
|
|
59
|
+
deleteBookmark(noteId: string): Promise<void>;
|
|
60
|
+
modify(modifyCallback: (note: Note, ref: {
|
|
61
|
+
value: Note;
|
|
62
|
+
}) => void): Promise<void>;
|
|
63
|
+
getIds(filterCb?: (n: Note) => boolean): Promise<string[]>;
|
|
64
|
+
clear(): Promise<void>;
|
|
65
|
+
}
|
|
66
|
+
export interface Repositories {
|
|
67
|
+
notes: NoteRepository;
|
|
68
|
+
files: FileRepository;
|
|
69
|
+
extensions: ExtensionRepository;
|
|
70
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/models/store.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Ref } from 'vue';
|
|
2
|
+
import { Store } from './store.js';
|
|
3
|
+
export interface SyncStore {
|
|
4
|
+
markToSync: () => Promise<void>;
|
|
5
|
+
sync: () => Promise<void>;
|
|
6
|
+
forceResync: () => Promise<void>;
|
|
7
|
+
lastSyncTime: Ref<string>;
|
|
8
|
+
reset: () => void;
|
|
9
|
+
}
|
|
10
|
+
export type SyncStoreDefinition = Store<SyncStore>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/models/user.d.ts
ADDED
package/models/user.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "orgnote-api",
|
|
3
|
-
"version": "0.18.
|
|
3
|
+
"version": "0.18.2",
|
|
4
4
|
"description": "Official API for creating extensions for OrgNote app",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./index.js",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"axios": "1.7.3",
|
|
46
46
|
"openpgp": "5.11.1",
|
|
47
47
|
"org-mode-ast": "0.11.7",
|
|
48
|
-
"
|
|
48
|
+
"pinia": "2.1.7",
|
|
49
49
|
"vue": "3.4.15",
|
|
50
50
|
"vue-router": "4.2.5"
|
|
51
51
|
},
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { test, expect } from 'vitest';
|
|
2
|
+
import { getParentDir } from "../get-parent-dir.js";
|
|
3
|
+
test('Should return correct parent dirs', () => {
|
|
4
|
+
expect(getParentDir('some/path/to/file')).toBe('some/path/to');
|
|
5
|
+
expect(getParentDir('another/path/to/dir/')).toBe('another/path/to');
|
|
6
|
+
expect(getParentDir(['root', 'folder', 'subfolder'])).toBe('root/folder');
|
|
7
|
+
expect(getParentDir('single')).toBe('');
|
|
8
|
+
expect(getParentDir('/file')).toBe('');
|
|
9
|
+
expect(getParentDir(['/'])).toBe('');
|
|
10
|
+
expect(getParentDir('file')).toBe('');
|
|
11
|
+
});
|
|
12
|
+
test('Should not return parent dir when file at the root', () => {
|
|
13
|
+
expect(getParentDir('')).toBe('');
|
|
14
|
+
});
|
package/tools/get-file-name.d.ts
CHANGED
package/tools/get-file-name.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function getParentDir(path: string | string[]): string;
|
package/tools/index.d.ts
CHANGED
package/tools/index.js
CHANGED