bookmark-note-storage
v1.0.0
Published
A library for multi-note storage using Chrome bookmarks, providing a robust abstraction for storing notes with metadata, trash support, and configuration.
Downloads
5
Maintainers
Readme
BookmarkNoteStorage
BookmarkNoteStorage is a TypeScript library designed for storing multiple notes in Chrome bookmarks. It provides a robust and extensible abstraction for managing notes with support for metadata, trash functionality, and configuration options.
Features
- Multi-note CRUD (Create, Read, Update, Delete/Trash, Restore)
- Notes stored as bookmarks in a dedicated folder
- Each note is a bookmark: name = note ID, url = data:text/html with note body
- Metadata for all notes (createdAt, updatedAt, trashed) stored in a special bookmark
- Trash support: deleted notes are moved to a trash folder, not immediately deleted
- Config support: extension config stored as a JSON bookmark
- All folders and bookmarks are suffixed with your extension's ID for persistence
- Migration helper for single-note to multi-note upgrade
Installation
To install the package, use npm:
npm install bookmark-note-storageUsage
import { BookmarkNoteStorage } from 'bookmark-note-storage';
// Initialize with your extension's ID
const storage = new BookmarkNoteStorage({ extensionId: chrome.runtime.id });
// Create a new note
const note = await storage.createNote('Hello world!');
// List all notes
const notes = await storage.listNotes();
// Get a note by ID
const note2 = await storage.getNote(note.id);
// Update a note
await storage.updateNote(note.id, 'Updated content');
// Delete (move to trash)
await storage.deleteNote(note.id);
// Restore from trash
await storage.restoreNote(note.id);
// List all notes including trashed
const allNotes = await storage.listNotes(true);
// Get and set config
const config = await storage.getConfig();
await storage.setConfig({ theme: 'dark' });
// Migrate from single-note storage
await storage.migrateFromSingleNote('Old note body');Data Structure
- Root folder: "Ather Tab Storage (EXTENSION_ID)"
- Notes folder: "Ather Notes (EXTENSION_ID)"
- Each note: bookmark (name = note ID, url = data:text/html,)
- Trash folder: "Ather Trash (EXTENSION_ID)"
- Trashed notes: bookmarks
- Metadata bookmark: "Ather Metadata (EXTENSION_ID)" (url = data:application/json,)
- Config bookmark: "Ather Config (EXTENSION_ID)" (url = data:application/json,)
- Notes folder: "Ather Notes (EXTENSION_ID)"
License
This project is licensed under the MIT License. See the LICENSE file for details.
