From d4ad06e631b2117c32fc9a5bdf781c6e7e162eab Mon Sep 17 00:00:00 2001 From: Tyler Mayoff Date: Tue, 2 Jul 2024 21:35:34 -0400 Subject: [PATCH 01/10] Added wasm-pack --- bun.lockb | Bin 145266 -> 160308 bytes flake.nix | 22 ++++++++++++++++++++++ vite.config.ts | 3 ++- 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/bun.lockb b/bun.lockb index f8b5c68ed6b08e644200b10b0bcfb1a7b003e66a..0f4b7c44230daf2b151d1e17d4b2627c497706e5 100755 GIT binary patch delta 50320 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 diff --git a/flake.nix b/flake.nix index aed00ce..4c9cb78 100644 --- a/flake.nix +++ b/flake.nix @@ -15,6 +15,27 @@ system: let overlays = [ (final: prev: { + wasm-pack = prev.rustPlatform.buildRustPackage rec { + pname = "wasm-pack"; + version = "0.13.0"; + + src = prev.fetchFromGitHub { + owner = "rustwasm"; + repo = "wasm-pack"; + rev = "refs/tags/v${version}"; + hash = "sha256-NEujk4ZPQ2xHWBCVjBCD7H6f58P4KrwCNoDHKa0d5JE="; + }; + + cargoHash = "sha256-pFKGQcWW1/GaIIWMyWBzts4w1hMu27hTG/uUMjkfDMo="; + nativeBuildInputs = with prev; [cmake]; + + buildInputs = prev.lib.optional prev.stdenv.isDarwin prev.darwin.apple_sdk.frameworks.Security; + + # Most tests rely on external resources and build artifacts. + # Disabling check here to work with build sandboxing. + doCheck = false; + }; + biome = prev.rustPlatform.buildRustPackage rec { pname = "biome"; version = "1.8.1"; @@ -82,6 +103,7 @@ biome act just + wasm-pack ]; }; } diff --git a/vite.config.ts b/vite.config.ts index 506efd0..f1cd5e6 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,7 +1,7 @@ import { svelte, vitePreprocess } from '@sveltejs/vite-plugin-svelte'; import builtins from 'builtin-modules'; import UnoCSS from 'unocss/vite'; -import { PluginOption, defineConfig } from 'vite'; +import { type PluginOption, defineConfig } from 'vite'; const setOutDir = (mode: string) => { switch (mode) { @@ -12,6 +12,7 @@ const setOutDir = (mode: string) => { } }; +// biome-ignore lint/style/noDefaultExport: export default defineConfig(({ mode }) => { return { plugins: [ From 1f4be9533de210ade87ec786f8e2e748135230bc Mon Sep 17 00:00:00 2001 From: Tyler Mayoff Date: Wed, 3 Jul 2024 19:59:05 -0400 Subject: [PATCH 02/10] Added recipe-rs as a dependency --- bun.lockb | Bin 160308 -> 163903 bytes package.json | 4 ++- src/main.ts | 7 +++- vite.config.ts | 85 +++++++++++++++++++++++++------------------------ 4 files changed, 53 insertions(+), 43 deletions(-) diff --git a/bun.lockb b/bun.lockb index 0f4b7c44230daf2b151d1e17d4b2627c497706e5..70d80181672d037774829c1613fb6fd2c9bff411 100755 GIT binary patch delta 27181 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 export default class MealPlugin extends Plugin { @@ -13,6 +14,10 @@ export default class MealPlugin extends Plugin { async onload() { await this.loadSettings(); + await init(); + + let dom_text = await requestUrl('https://www.allrecipes.com/recipe/21014/good-old-fashioned-pancakes/').text; + console.log(scrape('https://www.allrecipes.com/recipe/21014/good-old-fashioned-pancakes/', dom_text)); this.ctx.loadRecipes(undefined); diff --git a/vite.config.ts b/vite.config.ts index f1cd5e6..024b6a4 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -2,6 +2,7 @@ import { svelte, vitePreprocess } from '@sveltejs/vite-plugin-svelte'; import builtins from 'builtin-modules'; import UnoCSS from 'unocss/vite'; import { type PluginOption, defineConfig } from 'vite'; +import wasmPack from 'vite-plugin-wasm-pack'; const setOutDir = (mode: string) => { switch (mode) { @@ -14,46 +15,48 @@ const setOutDir = (mode: string) => { // biome-ignore lint/style/noDefaultExport: export default defineConfig(({ mode }) => { - return { - plugins: [ - UnoCSS(), - svelte({ - preprocess: vitePreprocess(), - compilerOptions: { - customElement: true, - }, - }) as PluginOption, - ], - build: { - lib: { - entry: 'src/main', - formats: ['cjs'], - }, - rollupOptions: { - output: { - entryFileNames: 'main.js', - assetFileNames: 'styles.css', - }, - external: [ - 'obsidian', - 'electron', - '@codemirror/autocomplete', - '@codemirror/collab', - '@codemirror/commands', - '@codemirror/language', - '@codemirror/lint', - '@codemirror/search', - '@codemirror/state', - '@codemirror/view', - '@lezer/common', - '@lezer/highlight', - '@lezer/lr', - ...builtins, + return { + plugins: [ + wasmPack([], ['recipe-rs']), + UnoCSS(), + svelte({ + preprocess: vitePreprocess(), + compilerOptions: { + customElement: true, + }, + }) as PluginOption, ], - }, - outDir: setOutDir(mode), - emptyOutDir: false, - sourcemap: mode === 'production' ? false : 'inline', - }, - }; + build: { + ssrEmitAssets: true, + lib: { + entry: 'src/main', + formats: ['cjs'], + }, + rollupOptions: { + output: { + entryFileNames: 'main.js', + assetFileNames: 'styles.css', + }, + external: [ + 'obsidian', + 'electron', + '@codemirror/autocomplete', + '@codemirror/collab', + '@codemirror/commands', + '@codemirror/language', + '@codemirror/lint', + '@codemirror/search', + '@codemirror/state', + '@codemirror/view', + '@lezer/common', + '@lezer/highlight', + '@lezer/lr', + ...builtins, + ], + }, + outDir: setOutDir(mode), + emptyOutDir: false, + sourcemap: mode === 'production' ? false : 'inline', + }, + }; }); From 4d90244efa3a32ccb1c29e488cc08a28723b4cfc Mon Sep 17 00:00:00 2001 From: Tyler Mayoff Date: Wed, 3 Jul 2024 22:51:18 -0400 Subject: [PATCH 03/10] wasm now loads --- src/main.ts | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/main.ts b/src/main.ts index 187ae1a..02b738d 100644 --- a/src/main.ts +++ b/src/main.ts @@ -6,7 +6,7 @@ import { AddFileToShoppingList, AddMealPlanToShoppingList, ClearCheckedIngredien import SearchRecipe from './recipe/SearchRecipe.svelte'; import { MealSettings, RecipeFormat } from './settings'; import 'virtual:uno.css'; -import init, { scrape } from 'recipe-rs'; +import init, { type Recipe, scrape } from 'recipe-rs'; // biome-ignore lint/style/noDefaultExport: export default class MealPlugin extends Plugin { @@ -14,10 +14,15 @@ export default class MealPlugin extends Plugin { async onload() { await this.loadSettings(); - await init(); - let dom_text = await requestUrl('https://www.allrecipes.com/recipe/21014/good-old-fashioned-pancakes/').text; - console.log(scrape('https://www.allrecipes.com/recipe/21014/good-old-fashioned-pancakes/', dom_text)); + const wasmPath = this.app.vault.adapter.getResourcePath( + `${this.app.vault.configDir}/plugins/${this.manifest.id}/assets/recipe_rs_bg.wasm`, + ); + await init(wasmPath); + + const domText = await requestUrl('https://www.allrecipes.com/recipe/21014/good-old-fashioned-pancakes/').text; + const recipe: Recipe = scrape('https://www.allrecipes.com/recipe/21014/good-old-fashioned-pancakes/', domText); + console.log(recipe); this.ctx.loadRecipes(undefined); @@ -81,6 +86,8 @@ export default class MealPlugin extends Plugin { } }), ); + + console.info('obisidan-meals plugin loaded'); } async loadSettings() { From 4081cbeab6b6995b8bfd50d568f52cf64b83b554 Mon Sep 17 00:00:00 2001 From: Tyler Mayoff Date: Thu, 4 Jul 2024 09:02:53 -0400 Subject: [PATCH 04/10] Working wasm, printing content --- src/main.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/main.ts b/src/main.ts index 02b738d..8ec8a23 100644 --- a/src/main.ts +++ b/src/main.ts @@ -20,10 +20,6 @@ export default class MealPlugin extends Plugin { ); await init(wasmPath); - const domText = await requestUrl('https://www.allrecipes.com/recipe/21014/good-old-fashioned-pancakes/').text; - const recipe: Recipe = scrape('https://www.allrecipes.com/recipe/21014/good-old-fashioned-pancakes/', domText); - console.log(recipe); - this.ctx.loadRecipes(undefined); this.registerEvent( From 16c767df5c4395f1128bfac87e95d6c7139bab15 Mon Sep 17 00:00:00 2001 From: Tyler Mayoff Date: Thu, 4 Jul 2024 22:54:45 -0400 Subject: [PATCH 05/10] Download recipe dialog --- .gitmodules | 3 ++ bun.lockb | Bin 163903 -> 163903 bytes package.json | 5 ++-- recipe-rs | 1 + src/main.ts | 13 +++++++-- src/recipe/downloader.ts | 59 +++++++++++++++++++++++++++++++++++++++ vite.config.ts | 2 +- 7 files changed, 78 insertions(+), 5 deletions(-) create mode 160000 recipe-rs create mode 100644 src/recipe/downloader.ts diff --git a/.gitmodules b/.gitmodules index b4efb25..bad25e9 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "test_vault/.obsidian/plugins/hot-reload"] path = test_vault/.obsidian/plugins/hot-reload url = https://github.com/pjeby/hot-reload.git +[submodule "recipe-rs"] + path = recipe-rs + url = git@github.com:tmayoff/recipe-rs.git diff --git a/bun.lockb b/bun.lockb index 70d80181672d037774829c1613fb6fd2c9bff411..772dd133fbbe05d97acf5b62c1ceabc82b187650 100755 GIT binary patch delta 227 zcmV<90383nfC|5W3Xm=!OuXpw>iHzNOl_0BE>7}0eTyEN(8396IpL?BR&Ekw{A!R%O?Riw>oeF1rVK7XHNhC delta 229 zcmVKvODnC-K@N*~MZyh&D4K@w*-UHs3-9D3bS$G#g#; zOqH5df3b*L@26ZQkpol(KL%#wHVBK0I=BD$J+(s}UbFS;=rBNMkB+8S5_k3)tF~;d z@bu6!iFhn7HII60QUfO>d*A011))eww1VikX=C-b0KpeK*qE!6N$16Y!h8$Xo^L9L f9UK9-9UKBNESL5c0wA|;NCL|z0XMfgZ~_Go1gK*D diff --git a/package.json b/package.json index 1569ed3..6e373ee 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,8 @@ "scripts": { "dev": "vite build --mode development --watch", "build": "vite build --mode production", - "check": "svelte-check --tsconfig ./tsconfig.json" + "check": "svelte-check --tsconfig ./tsconfig.json", + "wasm": "wasm-pack build ./recipe-rs --target web" }, "keywords": [], "author": "", @@ -37,7 +38,7 @@ "@unocss/extractor-svelte": "^0.61.0", "moment": "^2.30.1", "pluralize": "^8.0.0", - "recipe-rs": "^0.1.2", + "recipe-rs": "^0.1.3", "unocss": "^0.61.0" } } diff --git a/recipe-rs b/recipe-rs new file mode 160000 index 0000000..a774823 --- /dev/null +++ b/recipe-rs @@ -0,0 +1 @@ +Subproject commit a7748236e1ced503fd10e3c9a75ab3814a80a5dc diff --git a/src/main.ts b/src/main.ts index 8ec8a23..dd8e986 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,4 +1,4 @@ -import { type App, Modal, Plugin, PluginSettingTab, Setting, TFile, requestUrl } from 'obsidian'; +import { type App, Modal, Plugin, PluginSettingTab, Setting, TFile } from 'obsidian'; import { get } from 'svelte/store'; import { Context } from './context'; import { OpenMealPlanNote } from './meal_plan/plan'; @@ -6,7 +6,8 @@ import { AddFileToShoppingList, AddMealPlanToShoppingList, ClearCheckedIngredien import SearchRecipe from './recipe/SearchRecipe.svelte'; import { MealSettings, RecipeFormat } from './settings'; import 'virtual:uno.css'; -import init, { type Recipe, scrape } from 'recipe-rs'; +import init from 'recipe-rs'; +import { DownloadRecipeCommand } from './recipe/downloader'; // biome-ignore lint/style/noDefaultExport: export default class MealPlugin extends Plugin { @@ -68,6 +69,14 @@ export default class MealPlugin extends Plugin { }, }); + this.addCommand({ + id: 'download-url', + name: 'Download recipe from url', + callback: async () => { + await DownloadRecipeCommand(this.ctx); + }, + }); + this.registerEvent( this.app.workspace.on('file-menu', (e, t) => { if (t instanceof TFile && t.path.contains(get(this.ctx.settings).recipeDirectory)) { diff --git a/src/recipe/downloader.ts b/src/recipe/downloader.ts new file mode 100644 index 0000000..07829c6 --- /dev/null +++ b/src/recipe/downloader.ts @@ -0,0 +1,59 @@ +import { SuggestModal, requestUrl } from 'obsidian'; +import { type Recipe, format, scrape } from 'recipe-rs'; +import type { Context } from '../context'; +import { AppendMarkdownExt, NoteExists, OpenNotePath } from '../utils/filesystem'; +import { get } from 'svelte/store'; + +class DownloadRecipeModal extends SuggestModal { + query = ''; + context: Context; + + constructor(ctx: Context) { + super(ctx.app); + this.context = ctx; + } + + getSuggestions(query: string): string[] | Promise { + this.query = query; + return ['download']; + } + + renderSuggestion(value: string, el: HTMLElement) { + el.createEl('div', { text: value }); + } + + async onChooseSuggestion(item: string, _evt: MouseEvent | KeyboardEvent) { + if (item === 'download') { + await DownloadRecipe(this.context, this.query); + } + } +} + +export function DownloadRecipeCommand(ctx: Context) { + new DownloadRecipeModal(ctx).open(); +} + +async function DownloadRecipe(ctx: Context, url: string) { + const dom = await requestUrl(url).text; + const recipe: Recipe = scrape(url, dom); + + const formatted: string = format(recipe); + + const newRecipeNotePath = AppendMarkdownExt(`${get(ctx.settings).recipeDirectory}/${recipe.name}`); + if (NoteExists(ctx.app, newRecipeNotePath)) { + console.error('Recipe with that name already exists'); + await OpenNotePath(ctx.app, newRecipeNotePath); + return; + } + + let content = '---\n'; + content += `source: ${url}\n`; + content += '---\n'; + + content += '\n'; + content += formatted; + + await ctx.app.vault.create(newRecipeNotePath, content); + + await OpenNotePath(ctx.app, newRecipeNotePath); +} diff --git a/vite.config.ts b/vite.config.ts index 024b6a4..2fdfa8f 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -17,7 +17,7 @@ const setOutDir = (mode: string) => { export default defineConfig(({ mode }) => { return { plugins: [ - wasmPack([], ['recipe-rs']), + wasmPack(['./recipe-rs']), UnoCSS(), svelte({ preprocess: vitePreprocess(), From e8802436eb2efe38dc9e82bda42063ef77477049 Mon Sep 17 00:00:00 2001 From: Tyler Mayoff Date: Fri, 5 Jul 2024 08:44:11 -0400 Subject: [PATCH 06/10] Bump versions --- bun.lockb | Bin 163903 -> 163903 bytes package.json | 6 +++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/bun.lockb b/bun.lockb index 772dd133fbbe05d97acf5b62c1ceabc82b187650..19ac2f7850e586559e2d99408173b961d0085abb 100755 GIT binary patch delta 29758 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 delta 29830 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 Date: Fri, 5 Jul 2024 08:59:56 -0400 Subject: [PATCH 07/10] Updates --- bun.lockb | Bin 163903 -> 163903 bytes src/recipe/downloader.ts | 2 +- vite.config.ts | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bun.lockb b/bun.lockb index 19ac2f7850e586559e2d99408173b961d0085abb..75defec7e8ad578eeca496a3d7ac2d55e7e92165 100755 GIT binary patch delta 33 pcmdnrz_q`Dt6>Xc-Zn;~>G|6jeHcxq@7cyE#b~ts`ZmUllK|e(4JrTt delta 33 pcmdnrz_q`Dt6>Xc-Zn;q>G|6jeHe|W@7cyE#b~ho`ZmUllK|d|4J7~o diff --git a/src/recipe/downloader.ts b/src/recipe/downloader.ts index 07829c6..4297188 100644 --- a/src/recipe/downloader.ts +++ b/src/recipe/downloader.ts @@ -1,8 +1,8 @@ import { SuggestModal, requestUrl } from 'obsidian'; import { type Recipe, format, scrape } from 'recipe-rs'; +import { get } from 'svelte/store'; import type { Context } from '../context'; import { AppendMarkdownExt, NoteExists, OpenNotePath } from '../utils/filesystem'; -import { get } from 'svelte/store'; class DownloadRecipeModal extends SuggestModal { query = ''; diff --git a/vite.config.ts b/vite.config.ts index 2fdfa8f..024b6a4 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -17,7 +17,7 @@ const setOutDir = (mode: string) => { export default defineConfig(({ mode }) => { return { plugins: [ - wasmPack(['./recipe-rs']), + wasmPack([], ['recipe-rs']), UnoCSS(), svelte({ preprocess: vitePreprocess(), From 176024232695f9020f2a97fab0492f0c118318dc Mon Sep 17 00:00:00 2001 From: Tyler Mayoff Date: Sat, 6 Jul 2024 12:05:22 -0400 Subject: [PATCH 08/10] Error handling --- bun.lockb | Bin 163903 -> 164241 bytes package.json | 4 ++-- src/recipe/downloader.ts | 36 ++++++++++++++++++++++++++++++++---- 3 files changed, 34 insertions(+), 6 deletions(-) diff --git a/bun.lockb b/bun.lockb index 75defec7e8ad578eeca496a3d7ac2d55e7e92165..0e41552cb87951a5dda191674a40bc3e450507b6 100755 GIT binary patch delta 2222 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 { } } +class ErrorDialog extends Modal { + message = 'unknown error'; + + constructor(app: App, message: string) { + super(app); + this.message = message; + } + + onOpen() { + this.contentEl.createEl('h4', { text: 'An error occured' }); + this.contentEl.createEl('p', { text: this.message }); + let div = this.contentEl.createEl('div', { + text: 'Please make an issue here so I can help resolve the issue', + }); + } + + onClose() { + this.contentEl.empty(); + } +} + export function DownloadRecipeCommand(ctx: Context) { new DownloadRecipeModal(ctx).open(); } async function DownloadRecipe(ctx: Context, url: string) { const dom = await requestUrl(url).text; - const recipe: Recipe = scrape(url, dom); - const formatted: string = format(recipe); + let recipe: Recipe | null = null; + let formatted = ''; + try { + recipe = scrape(url, dom); + formatted = format(recipe); + } catch (exception) { + new ErrorDialog(ctx.app, `${exception}`).open(); + return; + } const newRecipeNotePath = AppendMarkdownExt(`${get(ctx.settings).recipeDirectory}/${recipe.name}`); if (NoteExists(ctx.app, newRecipeNotePath)) { - console.error('Recipe with that name already exists'); + new ErrorDialog(ctx.app, 'Recipe with that name already exists').open(); await OpenNotePath(ctx.app, newRecipeNotePath); return; } From 24ea787d58adbe2b5a530dc1fe09de7d498b320b Mon Sep 17 00:00:00 2001 From: Tyler Mayoff Date: Sat, 6 Jul 2024 12:37:28 -0400 Subject: [PATCH 09/10] Added link in the error modal --- src/recipe/downloader.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/recipe/downloader.ts b/src/recipe/downloader.ts index d8b930c..e318535 100644 --- a/src/recipe/downloader.ts +++ b/src/recipe/downloader.ts @@ -40,10 +40,10 @@ class ErrorDialog extends Modal { onOpen() { this.contentEl.createEl('h4', { text: 'An error occured' }); this.contentEl.createEl('p', { text: this.message }); - let div = this.contentEl.createEl('div', { - text: 'Please make an issue here so I can help resolve the issue', - }); - } + this.contentEl.createEl('a', { + href: "https://github.com/tmayoff/recipe-rs/issues/new", + text: 'Please make an issue here so I can help resolve the issue', + }); } onClose() { this.contentEl.empty(); From 9d59ae61acb4996ce1bb442f926127872d50ee30 Mon Sep 17 00:00:00 2001 From: Tyler Mayoff Date: Sat, 6 Jul 2024 12:38:30 -0400 Subject: [PATCH 10/10] Formatted --- src/recipe/downloader.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/recipe/downloader.ts b/src/recipe/downloader.ts index e318535..ff87a83 100644 --- a/src/recipe/downloader.ts +++ b/src/recipe/downloader.ts @@ -41,9 +41,10 @@ class ErrorDialog extends Modal { this.contentEl.createEl('h4', { text: 'An error occured' }); this.contentEl.createEl('p', { text: this.message }); this.contentEl.createEl('a', { - href: "https://github.com/tmayoff/recipe-rs/issues/new", + href: 'https://github.com/tmayoff/recipe-rs/issues/new', text: 'Please make an issue here so I can help resolve the issue', - }); } + }); + } onClose() { this.contentEl.empty();