From 2e7e6361e338924b6f01f30a4f6fecb1efa75595 Mon Sep 17 00:00:00 2001 From: Huakun Shen Date: Thu, 6 Feb 2025 22:22:09 -0500 Subject: [PATCH] Update project configuration and dependencies for version 0.0.6 - Add .prettierrc for code formatting - Update package and jsr.json version to 0.0.6 - Upgrade @kksh/api dependency to version 0.1.1 - Refactor imports in source files to align with new structure --- .prettierrc | 4 + build.ts | 4 +- bun.lockb | Bin 64856 -> 104103 bytes jsr.json | 2 +- package.json | 4 +- src/bookmark.ts | 2 +- src/index.ts | 253 ++++++++++++++++++++++++------------------------ src/types.ts | 2 +- 8 files changed, 139 insertions(+), 132 deletions(-) create mode 100644 .prettierrc diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..27b720e --- /dev/null +++ b/.prettierrc @@ -0,0 +1,4 @@ +{ + "semi": false, + "trailingComma": "none" +} diff --git a/build.ts b/build.ts index a99deb5..f4118ae 100644 --- a/build.ts +++ b/build.ts @@ -1,6 +1,6 @@ import { watch } from "fs" import { join } from "path" -import { refreshTemplateWorkerExtension } from "@kksh/api/dev" +import { refreshTemplateWorkerCommand } from "@kksh/api/dev" import { $ } from "bun" const entrypoints = ["./src/index.ts"] @@ -11,7 +11,7 @@ async function build() { await $`bun build --minify --target=browser --outdir=./dist ${entrypoint}` } if (Bun.argv.includes("dev")) { - await refreshTemplateWorkerExtension() + await refreshTemplateWorkerCommand() } } catch (error) { console.error(error) diff --git a/bun.lockb b/bun.lockb index e89d7b9e9a919201a6aaa56c268ed1af57012434..86eac33a61ac79455d8eb7577e2e5f617197f2e1 100755 GIT binary patch delta 36064 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 Gr~d(az}mF{ delta 12229 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 diff --git a/jsr.json b/jsr.json index c79aebd..eed20e7 100644 --- a/jsr.json +++ b/jsr.json @@ -1,6 +1,6 @@ { "name": "@kunkun/kunkun-ext-browser-bookmark", - "version": "0.0.5", + "version": "0.0.6", "license": "MIT", "exports": "./mod.ts", "publish": { diff --git a/package.json b/package.json index 08b6c4a..cba8697 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "name": "Huakun", "url": "https://huakunshen.com" }, - "version": "0.0.5", + "version": "0.0.6", "repository": "https://github.com/kunkunsh/kunkun-ext-browser-bookmark", "type": "module", "kunkun": { @@ -98,7 +98,7 @@ "build": "bun build.ts" }, "dependencies": { - "@kksh/api": "^0.0.48", + "@kksh/api": "^0.1.1", "i18next": "^23.15.1", "valibot": "^0.40.0" }, diff --git a/src/bookmark.ts b/src/bookmark.ts index edfc930..9393c1c 100644 --- a/src/bookmark.ts +++ b/src/bookmark.ts @@ -1,4 +1,4 @@ -import { fs, os, path, shell, toast } from "@kksh/api/ui/worker" +import { fs, os, path, shell, toast } from "@kksh/api/ui/template" import * as v from "valibot" import { ChromeBookmarksFile } from "./types" import type { Browser, ChromeBookmark, Platform } from "./types" diff --git a/src/index.ts b/src/index.ts index ad550f7..397b9eb 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,140 +1,143 @@ import { - Action, - app, - expose, - Form, - fs, - Icon, - IconEnum, - List, - NodeNameEnum, - open, - os, - path, - shell, - toast, - ui, - WorkerExtension -} from "@kksh/api/ui/worker" -import { ChromeBookmarks, createBookmarkLoader, type Bookmark } from "./bookmark" -import { setupI18n, t } from "./i18n" -import type { Platform } from "./types" + expose, + Icon, + IconEnum, + List, + open, + toast, + ui, + TemplateUiCommand +} from "@kksh/api/ui/template" +import { createBookmarkLoader, type Bookmark } from "./bookmark" -function bookmarkToItem(bookmark: Bookmark, options: { browserIcon: Icon }): List.Item { - return new List.Item({ - title: bookmark.name, - subTitle: bookmark.subtitle, - value: bookmark.url, - icon: bookmark.favicon - ? new Icon({ - type: IconEnum.RemoteUrl, - value: bookmark.favicon - }) - : new Icon({ - type: IconEnum.Iconify, - value: options.browserIcon.value - }), - accessories: [ - new List.ItemAccessory({ - icon: new Icon({ - type: IconEnum.Iconify, - value: options.browserIcon.value - }) - }) - ] - }) +function bookmarkToItem( + bookmark: Bookmark, + options: { browserIcon: Icon } +): List.Item { + return new List.Item({ + title: bookmark.name, + subTitle: bookmark.subtitle, + value: bookmark.url, + icon: bookmark.favicon + ? new Icon({ + type: IconEnum.RemoteUrl, + value: bookmark.favicon + }) + : new Icon({ + type: IconEnum.Iconify, + value: options.browserIcon.value + }), + accessories: [ + new List.ItemAccessory({ + icon: new Icon({ + type: IconEnum.Iconify, + value: options.browserIcon.value + }) + }) + ] + }) } -class BrowserBookmark extends WorkerExtension { - async onFormSubmit(value: Record): Promise { - console.log("Form submitted", value) - toast.success(`Form submitted: ${JSON.stringify(value)}`) - } - async load() { - ui.showLoadingBar(true) - ui.setSearchBarPlaceholder("Search for bookmarks") - ui.render(new List.List({})) - // const platform: Platform = await os.platform() - const [chromeBookmarks, edgeBookmarks, firefoxBookmarks] = await Promise.all([ - createBookmarkLoader("chrome").then((loader) => loader?.load() ?? []), - createBookmarkLoader("edge").then((loader) => loader?.load() ?? []), - createBookmarkLoader("firefox").then((loader) => loader?.load() ?? []) - ]) +class BrowserBookmark extends TemplateUiCommand { + async onFormSubmit(value: Record): Promise { + console.log("Form submitted", value) + toast.success(`Form submitted: ${JSON.stringify(value)}`) + } + async load() { + ui.showLoadingBar(true) + ui.setSearchBarPlaceholder("Search for bookmarks") + ui.render(new List.List({})) + // const platform: Platform = await os.platform() + const [chromeBookmarks, edgeBookmarks, firefoxBookmarks] = + await Promise.all([ + createBookmarkLoader("chrome").then((loader) => loader?.load() ?? []), + createBookmarkLoader("edge").then((loader) => loader?.load() ?? []), + createBookmarkLoader("firefox").then((loader) => loader?.load() ?? []) + ]) - const sections: List.Section[] = [] + const sections: List.Section[] = [] - if (firefoxBookmarks.length > 0) { - sections.push( - new List.Section({ - title: "Firefox", - subtitle: "Firefox", - items: firefoxBookmarks.map((bookmark) => - bookmarkToItem(bookmark, { - browserIcon: new Icon({ type: IconEnum.Iconify, value: "logos:firefox" }) - }) - ) - }) - ) - } + if (firefoxBookmarks.length > 0) { + sections.push( + new List.Section({ + title: "Firefox", + subtitle: "Firefox", + items: firefoxBookmarks.map((bookmark) => + bookmarkToItem(bookmark, { + browserIcon: new Icon({ + type: IconEnum.Iconify, + value: "logos:firefox" + }) + }) + ) + }) + ) + } - if (chromeBookmarks.length > 0) { - sections.push( - new List.Section({ - title: "Chrome", - subtitle: "Chrome", - items: chromeBookmarks.map((bookmark) => - bookmarkToItem(bookmark, { - browserIcon: new Icon({ type: IconEnum.Iconify, value: "logos:chrome" }) - }) - ) - }) - ) - } - if (edgeBookmarks.length > 0) { - sections.push( - new List.Section({ - title: "Edge", - subtitle: "Edge", - items: edgeBookmarks.map((bookmark) => - bookmarkToItem(bookmark, { - browserIcon: new Icon({ type: IconEnum.Iconify, value: "logos:microsoft-edge" }) - }) - ) - }) - ) - } + if (chromeBookmarks.length > 0) { + sections.push( + new List.Section({ + title: "Chrome", + subtitle: "Chrome", + items: chromeBookmarks.map((bookmark) => + bookmarkToItem(bookmark, { + browserIcon: new Icon({ + type: IconEnum.Iconify, + value: "logos:chrome" + }) + }) + ) + }) + ) + } + if (edgeBookmarks.length > 0) { + sections.push( + new List.Section({ + title: "Edge", + subtitle: "Edge", + items: edgeBookmarks.map((bookmark) => + bookmarkToItem(bookmark, { + browserIcon: new Icon({ + type: IconEnum.Iconify, + value: "logos:microsoft-edge" + }) + }) + ) + }) + ) + } - return ui - .setSearchBarPlaceholder("Enter a search term, and press enter to search") - .then(async () => { - return ui.render(new List.List({ sections })) - }) - .finally(() => { - ui.showLoadingBar(false) - }) - } + return ui + .setSearchBarPlaceholder("Enter a search term, and press enter to search") + .then(async () => { + return ui.render(new List.List({ sections })) + }) + .finally(() => { + ui.showLoadingBar(false) + }) + } - async onActionSelected(actionValue: string): Promise { - switch (actionValue) { - case "open": - break + async onActionSelected(actionValue: string): Promise { + switch (actionValue) { + case "open": + break - default: - break - } - } + default: + break + } + } - onSearchTermChange(term: string): Promise { - return Promise.resolve() - } + onSearchTermChange(term: string): Promise { + return Promise.resolve() + } - onListItemSelected(value: string): Promise { - console.log("Item selected:", value) - if (value.startsWith("http")) { - open.url(value) - } - return Promise.resolve() - } + onListItemSelected(value: string): Promise { + console.log("Item selected:", value) + if (value.startsWith("http")) { + open.url(value) + } + return Promise.resolve() + } } expose(new BrowserBookmark()) diff --git a/src/types.ts b/src/types.ts index 5f05237..f015efb 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,4 +1,4 @@ -import { os } from "@kksh/api/ui/worker" +import { os } from "@kksh/api/ui/template" import * as v from "valibot" export type Platform = Awaited>