From cd544370ff38cae9927175eef2abd21adf710fbe Mon Sep 17 00:00:00 2001 From: Angelo Veltens Date: Thu, 25 Jul 2024 22:30:43 +0200 Subject: [PATCH] bookmarks-rdflib: simplify storage discovery there is no need to distinguish documents and containers, since the module will handle the nuances anyway when creating or listing bookmarks --- .../create-bookmark-within-container.mjs | 24 +++++++------------ .../create-bookmark-within-document.mjs | 24 +++++++------------ .../src/e2e-tests/bookmarks.e2e.spec.ts | 17 +++++-------- bookmarks/rdflib/src/index.ts | 18 ++------------ .../src/module/BookmarksModuleRdfLib.ts | 16 ++++++------- .../discover-storage.integration.spec.ts | 24 ++++++++----------- 6 files changed, 44 insertions(+), 79 deletions(-) diff --git a/bookmarks/rdflib/examples/create-bookmark-within-container.mjs b/bookmarks/rdflib/examples/create-bookmark-within-container.mjs index 9dd0f64e..a7ec4a69 100644 --- a/bookmarks/rdflib/examples/create-bookmark-within-container.mjs +++ b/bookmarks/rdflib/examples/create-bookmark-within-container.mjs @@ -1,21 +1,15 @@ -import BookmarksModule from "../dist/index.js"; -import { Fetcher, graph, UpdateManager } from "rdflib"; +import BookmarksModule from '../dist/index.js'; +import {Fetcher, graph, UpdateManager} from "rdflib"; -const store = graph(); -const fetcher = new Fetcher(store); -const updater = new UpdateManager(store); -const bookmarks = new BookmarksModule({ store, fetcher, updater }); - -const storages = await bookmarks.discoverStorage("http://localhost:3000/alice/profile/card#me"); -const privateContainerUrl = storages.private.containerUrls[0]; -if (!privateContainerUrl) { - throw new Error("there is no private container for bookmarks"); -} +const store = graph() +const fetcher = new Fetcher(store) +const updater = new UpdateManager(store) +const bookmarks = new BookmarksModule({store, fetcher, updater}) const uri = await bookmarks.createBookmark({ - storageUrl: privateContainerUrl, + storageUrl: "http://localhost:3000/alice/bookmarks/", title: "My favorite website", url: "https://favorite.example" -}); +}) -console.log("new bookmark: " + uri); +console.log("new bookmark: " + uri) diff --git a/bookmarks/rdflib/examples/create-bookmark-within-document.mjs b/bookmarks/rdflib/examples/create-bookmark-within-document.mjs index 00b9473c..e85d7002 100644 --- a/bookmarks/rdflib/examples/create-bookmark-within-document.mjs +++ b/bookmarks/rdflib/examples/create-bookmark-within-document.mjs @@ -1,21 +1,15 @@ -import BookmarksModule from "../dist/index.js"; -import { Fetcher, graph, UpdateManager } from "rdflib"; +import BookmarksModule from '../dist/index.js'; +import {Fetcher, graph, UpdateManager} from "rdflib"; -const store = graph(); -const fetcher = new Fetcher(store); -const updater = new UpdateManager(store); -const bookmarks = new BookmarksModule({ store, fetcher, updater }); - -const storages = await bookmarks.discoverStorage("http://localhost:3000/alice/profile/card#me"); -const publicDocumentUrl = storages.public.documentUrls[0]; -if (!publicDocumentUrl) { - throw new Error("there is no public document for bookmarks"); -} +const store = graph() +const fetcher = new Fetcher(store) +const updater = new UpdateManager(store) +const bookmarks = new BookmarksModule({store, fetcher, updater}) const uri = await bookmarks.createBookmark({ - storageUrl: publicDocumentUrl, + storageUrl: "http://localhost:3000/alice/public/bookmarks", title: "My favorite website", url: "https://favorite.example" -}); +}) -console.log("new bookmark: " + uri); +console.log("new bookmark: " + uri) diff --git a/bookmarks/rdflib/src/e2e-tests/bookmarks.e2e.spec.ts b/bookmarks/rdflib/src/e2e-tests/bookmarks.e2e.spec.ts index 7aa4f341..233b4949 100644 --- a/bookmarks/rdflib/src/e2e-tests/bookmarks.e2e.spec.ts +++ b/bookmarks/rdflib/src/e2e-tests/bookmarks.e2e.spec.ts @@ -1,20 +1,15 @@ import { setupModule } from "../test-support/setupModule.js"; describe("bookmarks", () => { - it("can discover bookmark storages", async () => { const bookmarks = setupModule(); - const result = await bookmarks.discoverStorage("http://localhost:3456/profile/card#me"); + const result = await bookmarks.discoverStorage( + "http://localhost:3456/profile/card#me", + ); expect(result).toEqual({ - private: { - documentUrls: [], - containerUrls: ["http://localhost:3456/bookmarks/"] - }, - public: { - documentUrls: ["http://localhost:3456/public/bookmarks"], - containerUrls: [] - }, - }) + privateUrls: ["http://localhost:3456/bookmarks/"], + publicUrls: ["http://localhost:3456/public/bookmarks"], + }); }); it("can create a new bookmark in a container", async () => { diff --git a/bookmarks/rdflib/src/index.ts b/bookmarks/rdflib/src/index.ts index bf599167..c44e422a 100644 --- a/bookmarks/rdflib/src/index.ts +++ b/bookmarks/rdflib/src/index.ts @@ -20,20 +20,6 @@ export interface CreateBookmarkCommand { url: string; } -/** - * URLs of potential bookmark storages (documents and/or containers) - */ -export interface StorageLocations { - /** - * List of URLs pointing to documents containing bookmarks - */ - documentUrls: string[]; - /** - * List of URLs pointing to containers containing bookmarks - */ - containerUrls: string[]; -} - /** * Object describing potential storage locations for bookmarks. * @@ -42,11 +28,11 @@ export interface BookmarkStorage { /** * locations for personal use, not listed publicly */ - private: StorageLocations; + privateUrls: string[]; /** * Locations that can be discovered by the public */ - public: StorageLocations; + publicUrls: string[]; } export interface BookmarksModule { diff --git a/bookmarks/rdflib/src/module/BookmarksModuleRdfLib.ts b/bookmarks/rdflib/src/module/BookmarksModuleRdfLib.ts index ef062b28..9d11c973 100644 --- a/bookmarks/rdflib/src/module/BookmarksModuleRdfLib.ts +++ b/bookmarks/rdflib/src/module/BookmarksModuleRdfLib.ts @@ -43,14 +43,14 @@ export class BookmarksModuleRdfLib implements BookmarksModule { BOOKM_BOOKMARK, ); return { - private: { - documentUrls: urisOf(registrations.private.instances), - containerUrls: urisOf(registrations.private.instanceContainers), - }, - public: { - documentUrls: urisOf(registrations.public.instances), - containerUrls: urisOf(registrations.public.instanceContainers), - }, + privateUrls: urisOf([ + ...registrations.private.instances, + ...registrations.private.instanceContainers, + ]), + publicUrls: urisOf([ + ...registrations.public.instances, + ...registrations.public.instanceContainers, + ]), }; } diff --git a/bookmarks/rdflib/src/module/_integration-tests/discover-storage.integration.spec.ts b/bookmarks/rdflib/src/module/_integration-tests/discover-storage.integration.spec.ts index 57f45a5e..ff1adcc8 100644 --- a/bookmarks/rdflib/src/module/_integration-tests/discover-storage.integration.spec.ts +++ b/bookmarks/rdflib/src/module/_integration-tests/discover-storage.integration.spec.ts @@ -94,20 +94,16 @@ describe("discover storage", () => { ); expect(result).toEqual({ - private: { - containerUrls: ["https://pod.test/private/read-it-later/"], - documentUrls: [ - "https://pod.test/alice/private/bookmarks.ttl", - "https://pod.test/alice/private/more-bookmarks", - ], - }, - public: { - containerUrls: ["https://pod.test/alice/public/recommended-readings/"], - documentUrls: [ - "https://pod.test/alice/public/bookmarks.ttl", - "https://pod.test/alice/public/more-bookmarks", - ], - }, + privateUrls: [ + "https://pod.test/alice/private/bookmarks.ttl", + "https://pod.test/alice/private/more-bookmarks", + "https://pod.test/private/read-it-later/", + ], + publicUrls: [ + "https://pod.test/alice/public/bookmarks.ttl", + "https://pod.test/alice/public/more-bookmarks", + "https://pod.test/alice/public/recommended-readings/", + ], }); }); });