gudong-inbox-cli 1.0.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/LICENSE +21 -0
- package/README.md +80 -0
- package/dist/cloud/factory.d.ts +4 -0
- package/dist/cloud/factory.js +27 -0
- package/dist/cloud/factory.js.map +1 -0
- package/dist/cloud/s3.d.ts +18 -0
- package/dist/cloud/s3.js +63 -0
- package/dist/cloud/s3.js.map +1 -0
- package/dist/cloud/types.d.ts +12 -0
- package/dist/cloud/types.js +2 -0
- package/dist/cloud/types.js.map +1 -0
- package/dist/cloud/webdav.d.ts +14 -0
- package/dist/cloud/webdav.js +39 -0
- package/dist/cloud/webdav.js.map +1 -0
- package/dist/config.d.ts +36 -0
- package/dist/config.js +106 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +352 -0
- package/dist/index.js.map +1 -0
- package/dist/note/parser.d.ts +2 -0
- package/dist/note/parser.js +110 -0
- package/dist/note/parser.js.map +1 -0
- package/dist/note/parser.test.d.ts +1 -0
- package/dist/note/parser.test.js +137 -0
- package/dist/note/parser.test.js.map +1 -0
- package/dist/note/service.d.ts +76 -0
- package/dist/note/service.js +360 -0
- package/dist/note/service.js.map +1 -0
- package/dist/note/service.test.d.ts +1 -0
- package/dist/note/service.test.js +274 -0
- package/dist/note/service.test.js.map +1 -0
- package/dist/note/types.d.ts +72 -0
- package/dist/note/types.js +16 -0
- package/dist/note/types.js.map +1 -0
- package/package.json +47 -0
- package/skill/SKILL.md +103 -0
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import type { CloudProvider } from '../cloud/types.js';
|
|
2
|
+
import type { NoteDetail, NoteJson, NoteSummary, TagCount } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Extract tags from note content, matching the Flutter app's behavior.
|
|
5
|
+
* Matches #tag, #parent/child/subchild, and Chinese tags (#标签).
|
|
6
|
+
* Returns full paths (e.g. "parent/child") for each tag found.
|
|
7
|
+
*/
|
|
8
|
+
export declare function extractTagsFromContent(content: string): string[];
|
|
9
|
+
export interface NoteServiceOptions {
|
|
10
|
+
cacheTtlMs: number;
|
|
11
|
+
/** injected for tests */
|
|
12
|
+
now?: () => number;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Thrown when a write conflicts with a newer remote version.
|
|
16
|
+
* The caller should re-fetch and retry (or abort and surface the conflict).
|
|
17
|
+
*/
|
|
18
|
+
export declare class ConflictError extends Error {
|
|
19
|
+
readonly remoteUpdatedAt: string;
|
|
20
|
+
readonly localUpdatedAt: string;
|
|
21
|
+
readonly noteId: string;
|
|
22
|
+
constructor(noteId: string, localUpdatedAt: string, remoteUpdatedAt: string);
|
|
23
|
+
}
|
|
24
|
+
export declare class NoteService {
|
|
25
|
+
private readonly cloud;
|
|
26
|
+
private readonly notesDir;
|
|
27
|
+
private cache;
|
|
28
|
+
private readonly ttlMs;
|
|
29
|
+
private readonly now;
|
|
30
|
+
private inflight;
|
|
31
|
+
constructor(cloud: CloudProvider, notesDir: string, opts: NoteServiceOptions);
|
|
32
|
+
invalidate(): void;
|
|
33
|
+
/**
|
|
34
|
+
* Re-reads the note from cloud storage and throws ConflictError if
|
|
35
|
+
* the remote updated_at is newer than what we cached (another device wrote first).
|
|
36
|
+
* Pass the cached `existing` note — its updated_at is the baseline.
|
|
37
|
+
*/
|
|
38
|
+
private assertNoConflict;
|
|
39
|
+
fetchAll(): Promise<NoteJson[]>;
|
|
40
|
+
private loadAll;
|
|
41
|
+
listRecent(opts?: {
|
|
42
|
+
limit?: number;
|
|
43
|
+
since?: string;
|
|
44
|
+
until?: string;
|
|
45
|
+
date_field?: 'updated_at' | 'created_at';
|
|
46
|
+
}): Promise<NoteSummary[]>;
|
|
47
|
+
readById(id: string): Promise<NoteDetail | null>;
|
|
48
|
+
search(query: string, limit?: number): Promise<NoteSummary[]>;
|
|
49
|
+
listTags(): Promise<TagCount[]>;
|
|
50
|
+
createNote(params: {
|
|
51
|
+
content: string;
|
|
52
|
+
title?: string;
|
|
53
|
+
tags?: string[];
|
|
54
|
+
box?: string | null;
|
|
55
|
+
}): Promise<{
|
|
56
|
+
id: string;
|
|
57
|
+
title: string | null;
|
|
58
|
+
updated_at: string;
|
|
59
|
+
}>;
|
|
60
|
+
updateNote(params: {
|
|
61
|
+
id: string;
|
|
62
|
+
content?: string;
|
|
63
|
+
title?: string;
|
|
64
|
+
tags?: string[];
|
|
65
|
+
box?: string | null;
|
|
66
|
+
}): Promise<{
|
|
67
|
+
id: string;
|
|
68
|
+
title: string | null;
|
|
69
|
+
updated_at: string;
|
|
70
|
+
}>;
|
|
71
|
+
deleteNote(id: string): Promise<{
|
|
72
|
+
id: string;
|
|
73
|
+
deleted: boolean;
|
|
74
|
+
}>;
|
|
75
|
+
private generateNoteId;
|
|
76
|
+
}
|
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
import { randomBytes } from 'node:crypto';
|
|
2
|
+
import { toLocalTime } from './types.js';
|
|
3
|
+
import { parseNote } from './parser.js';
|
|
4
|
+
const PREVIEW_LEN = 200;
|
|
5
|
+
/**
|
|
6
|
+
* Extract tags from note content, matching the Flutter app's behavior.
|
|
7
|
+
* Matches #tag, #parent/child/subchild, and Chinese tags (#标签).
|
|
8
|
+
* Returns full paths (e.g. "parent/child") for each tag found.
|
|
9
|
+
*/
|
|
10
|
+
export function extractTagsFromContent(content) {
|
|
11
|
+
const regex = /#([\w\u4e00-\u9fa5]+(?:\/[\w\u4e00-\u9fa5]+)*)/g;
|
|
12
|
+
const tags = new Set();
|
|
13
|
+
let m;
|
|
14
|
+
while ((m = regex.exec(content)) !== null) {
|
|
15
|
+
tags.add(m[1]);
|
|
16
|
+
}
|
|
17
|
+
return Array.from(tags);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Merge explicit tags (--tag) with tags extracted from content.
|
|
21
|
+
* Deduplicates while preserving order (explicit tags first).
|
|
22
|
+
*/
|
|
23
|
+
function mergeTags(explicitTags, content) {
|
|
24
|
+
const extracted = extractTagsFromContent(content);
|
|
25
|
+
const result = [];
|
|
26
|
+
const seen = new Set();
|
|
27
|
+
for (const t of explicitTags ?? []) {
|
|
28
|
+
if (!seen.has(t)) {
|
|
29
|
+
result.push(t);
|
|
30
|
+
seen.add(t);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
for (const t of extracted) {
|
|
34
|
+
if (!seen.has(t)) {
|
|
35
|
+
result.push(t);
|
|
36
|
+
seen.add(t);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return result;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Thrown when a write conflicts with a newer remote version.
|
|
43
|
+
* The caller should re-fetch and retry (or abort and surface the conflict).
|
|
44
|
+
*/
|
|
45
|
+
export class ConflictError extends Error {
|
|
46
|
+
remoteUpdatedAt;
|
|
47
|
+
localUpdatedAt;
|
|
48
|
+
noteId;
|
|
49
|
+
constructor(noteId, localUpdatedAt, remoteUpdatedAt) {
|
|
50
|
+
super(`conflict: note ${noteId} was modified remotely at ${remoteUpdatedAt}, ` +
|
|
51
|
+
`but local copy was from ${localUpdatedAt}. Re-fetch and retry.`);
|
|
52
|
+
this.name = 'ConflictError';
|
|
53
|
+
this.noteId = noteId;
|
|
54
|
+
this.localUpdatedAt = localUpdatedAt;
|
|
55
|
+
this.remoteUpdatedAt = remoteUpdatedAt;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
export class NoteService {
|
|
59
|
+
cloud;
|
|
60
|
+
notesDir;
|
|
61
|
+
cache = null;
|
|
62
|
+
ttlMs;
|
|
63
|
+
now;
|
|
64
|
+
inflight = null;
|
|
65
|
+
constructor(cloud, notesDir, opts) {
|
|
66
|
+
this.cloud = cloud;
|
|
67
|
+
this.notesDir = notesDir;
|
|
68
|
+
this.ttlMs = opts.cacheTtlMs;
|
|
69
|
+
this.now = opts.now ?? Date.now;
|
|
70
|
+
}
|
|
71
|
+
invalidate() {
|
|
72
|
+
this.cache = null;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Re-reads the note from cloud storage and throws ConflictError if
|
|
76
|
+
* the remote updated_at is newer than what we cached (another device wrote first).
|
|
77
|
+
* Pass the cached `existing` note — its updated_at is the baseline.
|
|
78
|
+
*/
|
|
79
|
+
async assertNoConflict(noteId, localUpdatedAt) {
|
|
80
|
+
const key = `${this.notesDir}/note-${noteId}.json`;
|
|
81
|
+
try {
|
|
82
|
+
const buf = await this.cloud.readNote(key);
|
|
83
|
+
const remote = parseNote(noteId, buf);
|
|
84
|
+
if (remote.meta.updated_at > localUpdatedAt) {
|
|
85
|
+
throw new ConflictError(noteId, localUpdatedAt, remote.meta.updated_at);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
catch (e) {
|
|
89
|
+
if (e instanceof ConflictError)
|
|
90
|
+
throw e;
|
|
91
|
+
// If we can't read the remote (e.g. it was deleted), there's no conflict to worry about.
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
async fetchAll() {
|
|
95
|
+
if (this.ttlMs > 0 && this.cache && this.now() - this.cache.ts < this.ttlMs) {
|
|
96
|
+
return this.cache.notes;
|
|
97
|
+
}
|
|
98
|
+
if (this.inflight)
|
|
99
|
+
return this.inflight;
|
|
100
|
+
this.inflight = this.loadAll().finally(() => {
|
|
101
|
+
this.inflight = null;
|
|
102
|
+
});
|
|
103
|
+
const notes = await this.inflight;
|
|
104
|
+
if (this.ttlMs > 0) {
|
|
105
|
+
this.cache = { ts: this.now(), notes };
|
|
106
|
+
}
|
|
107
|
+
return notes;
|
|
108
|
+
}
|
|
109
|
+
async loadAll() {
|
|
110
|
+
const files = await this.cloud.listNotes(this.notesDir);
|
|
111
|
+
const notes = [];
|
|
112
|
+
for (const f of files) {
|
|
113
|
+
try {
|
|
114
|
+
const buf = await this.cloud.readNote(f.key);
|
|
115
|
+
const note = parseNote(f.id, buf);
|
|
116
|
+
if (!note.meta.updated_at) {
|
|
117
|
+
if (f.lastModified)
|
|
118
|
+
note.meta.updated_at = f.lastModified.toISOString();
|
|
119
|
+
}
|
|
120
|
+
notes.push(note);
|
|
121
|
+
}
|
|
122
|
+
catch (err) {
|
|
123
|
+
process.stderr.write(`[warn] skip ${f.key}: ${err.message}\n`);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
notes.sort((a, b) => b.meta.updated_at.localeCompare(a.meta.updated_at));
|
|
127
|
+
return notes;
|
|
128
|
+
}
|
|
129
|
+
async listRecent(opts = {}) {
|
|
130
|
+
const limit = opts.limit ?? 20;
|
|
131
|
+
const field = opts.date_field ?? 'updated_at';
|
|
132
|
+
const sinceMs = opts.since ? Date.parse(opts.since) : null;
|
|
133
|
+
const untilMs = opts.until ? Date.parse(opts.until) : null;
|
|
134
|
+
const all = await this.fetchAll();
|
|
135
|
+
const filtered = all.filter((n) => {
|
|
136
|
+
if (n.flags.is_removed)
|
|
137
|
+
return false;
|
|
138
|
+
const ts = Date.parse(n.meta[field]);
|
|
139
|
+
if (!Number.isFinite(ts))
|
|
140
|
+
return false;
|
|
141
|
+
if (sinceMs != null && ts < sinceMs)
|
|
142
|
+
return false;
|
|
143
|
+
if (untilMs != null && ts > untilMs)
|
|
144
|
+
return false;
|
|
145
|
+
return true;
|
|
146
|
+
});
|
|
147
|
+
return filtered.slice(0, limit).map(toSummary);
|
|
148
|
+
}
|
|
149
|
+
async readById(id) {
|
|
150
|
+
if (!/^[a-f0-9]{20}$/.test(id))
|
|
151
|
+
return null;
|
|
152
|
+
const all = await this.fetchAll();
|
|
153
|
+
const note = all.find((n) => n.id === id);
|
|
154
|
+
if (!note)
|
|
155
|
+
return null;
|
|
156
|
+
return toDetail(note);
|
|
157
|
+
}
|
|
158
|
+
async search(query, limit = 20) {
|
|
159
|
+
const q = query.trim().toLowerCase();
|
|
160
|
+
if (!q)
|
|
161
|
+
return [];
|
|
162
|
+
const all = await this.fetchAll();
|
|
163
|
+
const matched = all.filter((n) => {
|
|
164
|
+
if (n.flags.is_removed)
|
|
165
|
+
return false;
|
|
166
|
+
const haystack = [
|
|
167
|
+
n.content.title ?? '',
|
|
168
|
+
n.content.content,
|
|
169
|
+
...n.content.tags,
|
|
170
|
+
]
|
|
171
|
+
.join('\n')
|
|
172
|
+
.toLowerCase();
|
|
173
|
+
return haystack.includes(q);
|
|
174
|
+
});
|
|
175
|
+
return matched.slice(0, limit).map(toSummary);
|
|
176
|
+
}
|
|
177
|
+
async listTags() {
|
|
178
|
+
const all = await this.fetchAll();
|
|
179
|
+
const counter = new Map();
|
|
180
|
+
for (const n of all) {
|
|
181
|
+
if (n.flags.is_removed)
|
|
182
|
+
continue;
|
|
183
|
+
for (const t of n.content.tags) {
|
|
184
|
+
counter.set(t, (counter.get(t) ?? 0) + 1);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
return Array.from(counter.entries())
|
|
188
|
+
.map(([tag, count]) => ({ tag, count }))
|
|
189
|
+
.sort((a, b) => b.count - a.count || a.tag.localeCompare(b.tag));
|
|
190
|
+
}
|
|
191
|
+
async createNote(params) {
|
|
192
|
+
const now = new Date(this.now()).toISOString();
|
|
193
|
+
const id = this.generateNoteId();
|
|
194
|
+
const note = {
|
|
195
|
+
id,
|
|
196
|
+
ver: 1,
|
|
197
|
+
meta: {
|
|
198
|
+
created_at: now,
|
|
199
|
+
updated_at: now,
|
|
200
|
+
device_id: 'gudong-inbox-cli',
|
|
201
|
+
},
|
|
202
|
+
content: {
|
|
203
|
+
content: params.content,
|
|
204
|
+
title: params.title ?? null,
|
|
205
|
+
tags: mergeTags(params.tags, params.content),
|
|
206
|
+
box: params.box ?? null,
|
|
207
|
+
links: [],
|
|
208
|
+
assets: [],
|
|
209
|
+
},
|
|
210
|
+
flags: {
|
|
211
|
+
is_removed: false,
|
|
212
|
+
is_top: false,
|
|
213
|
+
favorite: false,
|
|
214
|
+
},
|
|
215
|
+
parent_id: null,
|
|
216
|
+
};
|
|
217
|
+
const key = `${this.notesDir}/note-${id}.json`;
|
|
218
|
+
const body = Buffer.from(JSON.stringify(note, null, 2), 'utf-8');
|
|
219
|
+
await this.cloud.writeNote(key, body);
|
|
220
|
+
if (this.cache) {
|
|
221
|
+
// Insert at front: loadAll sorts by updated_at desc, and this note is
|
|
222
|
+
// now the newest. Keeping the cache sorted prevents listRecent from
|
|
223
|
+
// slicing the freshly created note off the end.
|
|
224
|
+
this.cache.notes.unshift(note);
|
|
225
|
+
}
|
|
226
|
+
return {
|
|
227
|
+
id,
|
|
228
|
+
title: note.content.title ?? null,
|
|
229
|
+
updated_at: now,
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
async updateNote(params) {
|
|
233
|
+
const all = await this.fetchAll();
|
|
234
|
+
const index = all.findIndex((n) => n.id === params.id);
|
|
235
|
+
if (index === -1) {
|
|
236
|
+
throw new Error(`note not found: ${params.id}`);
|
|
237
|
+
}
|
|
238
|
+
const existing = all[index];
|
|
239
|
+
const now = new Date(this.now()).toISOString();
|
|
240
|
+
// Merge: user-provided fields override, everything else stays
|
|
241
|
+
// Resolve final content first so we can extract tags from it
|
|
242
|
+
const finalContent = params.content !== undefined ? params.content : existing.content.content;
|
|
243
|
+
// Tags: if the user passed explicit tags, merge them with content-extracted tags.
|
|
244
|
+
// If they did NOT pass tags, preserve existing tags instead of overwriting them
|
|
245
|
+
// with content-extracted tags (which would silently drop manually-set tags).
|
|
246
|
+
const finalTags = params.tags !== undefined
|
|
247
|
+
? mergeTags(params.tags, finalContent)
|
|
248
|
+
: existing.content.tags;
|
|
249
|
+
const updated = {
|
|
250
|
+
...existing,
|
|
251
|
+
meta: {
|
|
252
|
+
...existing.meta,
|
|
253
|
+
updated_at: now,
|
|
254
|
+
},
|
|
255
|
+
content: {
|
|
256
|
+
...existing.content,
|
|
257
|
+
content: params.content !== undefined ? params.content : existing.content.content,
|
|
258
|
+
title: params.title !== undefined ? params.title : existing.content.title,
|
|
259
|
+
tags: finalTags,
|
|
260
|
+
box: params.box !== undefined ? params.box : existing.content.box,
|
|
261
|
+
},
|
|
262
|
+
};
|
|
263
|
+
// Conflict detection: ensure no one else wrote to this note since we cached it
|
|
264
|
+
await this.assertNoConflict(params.id, existing.meta.updated_at);
|
|
265
|
+
const key = `${this.notesDir}/note-${params.id}.json`;
|
|
266
|
+
const body = Buffer.from(JSON.stringify(updated, null, 2), 'utf-8');
|
|
267
|
+
await this.cloud.writeNote(key, body);
|
|
268
|
+
// Update cache: move the updated note to the front (it's now the newest)
|
|
269
|
+
if (this.cache) {
|
|
270
|
+
this.cache.notes.splice(index, 1);
|
|
271
|
+
this.cache.notes.unshift(updated);
|
|
272
|
+
}
|
|
273
|
+
return {
|
|
274
|
+
id: params.id,
|
|
275
|
+
title: updated.content.title ?? null,
|
|
276
|
+
updated_at: now,
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
async deleteNote(id) {
|
|
280
|
+
const all = await this.fetchAll();
|
|
281
|
+
const index = all.findIndex((n) => n.id === id);
|
|
282
|
+
if (index === -1) {
|
|
283
|
+
throw new Error(`note not found: ${id}`);
|
|
284
|
+
}
|
|
285
|
+
const existing = all[index];
|
|
286
|
+
if (existing.flags.is_removed) {
|
|
287
|
+
// Already removed — idempotent no-op (different from throw-on-nonexistent by design)
|
|
288
|
+
return { id, deleted: false };
|
|
289
|
+
}
|
|
290
|
+
const now = new Date(this.now()).toISOString();
|
|
291
|
+
const updated = {
|
|
292
|
+
...existing,
|
|
293
|
+
meta: {
|
|
294
|
+
...existing.meta,
|
|
295
|
+
updated_at: now,
|
|
296
|
+
},
|
|
297
|
+
flags: {
|
|
298
|
+
...existing.flags,
|
|
299
|
+
is_removed: true,
|
|
300
|
+
},
|
|
301
|
+
};
|
|
302
|
+
// Conflict detection: ensure no one else wrote to this note since we cached it
|
|
303
|
+
await this.assertNoConflict(id, existing.meta.updated_at);
|
|
304
|
+
const key = `${this.notesDir}/note-${id}.json`;
|
|
305
|
+
const body = Buffer.from(JSON.stringify(updated, null, 2), 'utf-8');
|
|
306
|
+
await this.cloud.writeNote(key, body);
|
|
307
|
+
// Update cache: move the soft-deleted note to the front (updated_at is now)
|
|
308
|
+
if (this.cache) {
|
|
309
|
+
this.cache.notes.splice(index, 1);
|
|
310
|
+
this.cache.notes.unshift(updated);
|
|
311
|
+
}
|
|
312
|
+
return { id, deleted: true };
|
|
313
|
+
}
|
|
314
|
+
generateNoteId() {
|
|
315
|
+
const existing = this.cache ? new Set(this.cache.notes.map((n) => n.id)) : new Set();
|
|
316
|
+
for (let i = 0; i < 10; i++) {
|
|
317
|
+
const id = randomBytes(10).toString('hex').slice(0, 20);
|
|
318
|
+
if (!existing.has(id))
|
|
319
|
+
return id;
|
|
320
|
+
}
|
|
321
|
+
throw new Error('failed to generate unique note id after 10 attempts');
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
function toSummary(n) {
|
|
325
|
+
const content = n.content.content ?? '';
|
|
326
|
+
const preview = content.length > PREVIEW_LEN ? `${content.slice(0, PREVIEW_LEN)}...` : content;
|
|
327
|
+
return {
|
|
328
|
+
id: n.id,
|
|
329
|
+
title: n.content.title ?? null,
|
|
330
|
+
updated_at: n.meta.updated_at,
|
|
331
|
+
updated_at_local: toLocalTime(n.meta.updated_at),
|
|
332
|
+
tags: n.content.tags,
|
|
333
|
+
content_preview: preview,
|
|
334
|
+
};
|
|
335
|
+
}
|
|
336
|
+
function toDetail(n) {
|
|
337
|
+
return {
|
|
338
|
+
id: n.id,
|
|
339
|
+
title: n.content.title ?? null,
|
|
340
|
+
content: n.content.content,
|
|
341
|
+
tags: n.content.tags,
|
|
342
|
+
links: n.content.links,
|
|
343
|
+
assets: n.content.assets.map((a) => ({
|
|
344
|
+
type: a.type,
|
|
345
|
+
path: a.path,
|
|
346
|
+
size: a.size,
|
|
347
|
+
mime_type: a.mime_type,
|
|
348
|
+
cloudUrl: a.cloudUrl,
|
|
349
|
+
storageType: a.storageType,
|
|
350
|
+
})),
|
|
351
|
+
created_at: n.meta.created_at,
|
|
352
|
+
updated_at: n.meta.updated_at,
|
|
353
|
+
created_at_local: toLocalTime(n.meta.created_at),
|
|
354
|
+
updated_at_local: toLocalTime(n.meta.updated_at),
|
|
355
|
+
is_top: n.flags.is_top,
|
|
356
|
+
favorite: n.flags.favorite,
|
|
357
|
+
is_removed: n.flags.is_removed,
|
|
358
|
+
};
|
|
359
|
+
}
|
|
360
|
+
//# sourceMappingURL=service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/note/service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|