diff --git a/eslint.config.js b/eslint.config.js index 9c2c05e..34ebde3 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -7,7 +7,7 @@ export default [ {languageOptions: { globals: globals.browser }}, pluginJs.configs.recommended, { - name: 'Frankie WebApp', + name: 'Svelte Marked', ignores: [ 'vite.config.js.*', 'more.eslint.config.js', diff --git a/package.json b/package.json index abeff3d..7c047f0 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,8 @@ { "name": "svelte-marked", "description": "A markdown renderer for Svelte.", - "version": "0.7.1", + "version": "0.8.0", "packageManager": "yarn@4.6.0", - "engines": { - "node": ">=18" - }, "main": "dist/sveltemarkdown.js", "module": "dist/sveltemarkdown.es.js", "jsnext:main": "dist/sveltemarkdown.es.js", @@ -25,6 +22,10 @@ ], "license": "MIT", "author": "Pablo Berganza <pablo@berganza.dev>", + "contributors": { + "name": "Daniele Dellafiore", + "url": "https://linktr.ee/ildella/" + }, "repository": { "type": "git", "url": "git+https://github.com/ildella/svelte-marked.git" @@ -38,17 +39,17 @@ "test:watch": "vitest watch" }, "devDependencies": { - "@eslint/js": "9.19.0", - "@stylistic/eslint-plugin-js": "3.0.1", + "@eslint/js": "9.20.0", + "@stylistic/eslint-plugin-js": "3.1.0", "@sveltejs/vite-plugin-svelte": "5.0.3", "@testing-library/jest-dom": "6.6.3", "@testing-library/svelte": "5.2.6", - "eslint": "9.19.0", + "eslint": "9.20.0", "eslint-plugin-svelte": "2.46.1", "eslint-plugin-vitest": "0.5.4", "globals": "15.14.0", "jsdom": "26.0.0", - "prettier": "3.4.2", + "prettier": "3.5.0", "rollup-plugin-analyzer": "4.0.0", "rollup-plugin-filesize": "10.0.0", "rollup-plugin-terser": "7.0.2", @@ -61,7 +62,7 @@ "dependencies": { "@types/marked": "6.0.0", "github-slugger": "2.0.0", - "marked": "15.0.6" + "marked": "15.0.7" }, "peerDependencies": { "svelte": "^5" diff --git a/src/SvelteMarkdown.svelte b/src/SvelteMarkdown.svelte index ce027dd..db9aa03 100644 --- a/src/SvelteMarkdown.svelte +++ b/src/SvelteMarkdown.svelte @@ -1,7 +1,5 @@ <script> - import { run } from 'svelte/legacy'; - - import { setContext, createEventDispatcher, onMount } from 'svelte' + import { setContext } from 'svelte' import { marked } from 'marked' import Slugger from 'github-slugger' @@ -9,52 +7,34 @@ import { defaultOptions, defaultRenderers } from './markdown-parser' import { key } from './context' - /** - * @typedef {Object} Props - * @property {any} [source] - * @property {any} [renderers] - * @property {any} [options] - * @property {boolean} [isInline] - */ - - /** @type {Props} */ let { source = [], renderers = {}, options = {}, isInline = false - } = $props(); - - const dispatch = createEventDispatcher() + } = $props() let tokens = $state() - let mounted = $state() let preprocessed = $derived(Array.isArray(source)) let slugger = $derived(source ? new Slugger : undefined) let combinedOptions = $derived({ ...defaultOptions, ...options }) - run(() => { + let combinedRenderers = $derived({ ...defaultRenderers, ...renderers }) + + $effect(() => { if (preprocessed) { tokens = source } else { const lexer = new marked.Lexer(combinedOptions) tokens = isInline ? lexer.inlineTokens(source) : lexer.lex(source) - dispatch('parsed', { tokens }) } - }); - let combinedRenderers = $derived({ ...defaultRenderers, ...renderers }) - run(() => { - mounted && !preprocessed && dispatch('parsed', { tokens }) - }); + }) setContext(key, { slug: (val) => slugger ? slugger.slug(val) : '', getOptions: () => combinedOptions }) - onMount(() => { - mounted = true - }) </script> <Parser {tokens} renderers={combinedRenderers} /> diff --git a/src/renderers/Text.svelte b/src/renderers/Text.svelte index 0eecc9d..03ec03f 100644 --- a/src/renderers/Text.svelte +++ b/src/renderers/Text.svelte @@ -1,4 +1,4 @@ <script> - let { text, raw, children } = $props(); + let { children } = $props(); </script> {@render children?.()} diff --git a/vite.config.js b/vite.config.js index 5ba7687..eac229e 100644 --- a/vite.config.js +++ b/vite.config.js @@ -10,8 +10,7 @@ import pkg from './package.json' const removeDist = (p) => p.replace('dist/', '') export default defineConfig({ - plugins: [svelte({ hot: !process.env.VITEST })], - // plugins: [svelte()], + plugins: [svelte()], test: { globals: true, environment: 'jsdom', diff --git a/yarn.lock b/yarn.lock index f5515e9..7aad7f5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -332,6 +332,15 @@ __metadata: languageName: node linkType: hard +"@eslint/core@npm:^0.11.0": + version: 0.11.0 + resolution: "@eslint/core@npm:0.11.0" + dependencies: + "@types/json-schema": "npm:^7.0.15" + checksum: 10c0/1e0671d035c908175f445864a7864cf6c6a8b67a5dfba8c47b2ac91e2d3ed36e8c1f2fd81d98a73264f8677055559699d4adb0f97d86588e616fc0dc9a4b86c9 + languageName: node + linkType: hard + "@eslint/eslintrc@npm:^3.2.0": version: 3.2.0 resolution: "@eslint/eslintrc@npm:3.2.0" @@ -349,10 +358,10 @@ __metadata: languageName: node linkType: hard -"@eslint/js@npm:9.19.0": - version: 9.19.0 - resolution: "@eslint/js@npm:9.19.0" - checksum: 10c0/45dc544c8803984f80a438b47a8e578fae4f6e15bc8478a703827aaf05e21380b42a43560374ce4dad0d5cb6349e17430fc9ce1686fed2efe5d1ff117939ff90 +"@eslint/js@npm:9.20.0": + version: 9.20.0 + resolution: "@eslint/js@npm:9.20.0" + checksum: 10c0/10e7b5b9e628b5192e8fc6b0ecd27cf48322947e83e999ff60f9f9e44ac8d499138bcb9383cbfa6e51e780d53b4e76ccc2d1753b108b7173b8404fd484d37328 languageName: node linkType: hard @@ -794,15 +803,15 @@ __metadata: languageName: node linkType: hard -"@stylistic/eslint-plugin-js@npm:3.0.1": - version: 3.0.1 - resolution: "@stylistic/eslint-plugin-js@npm:3.0.1" +"@stylistic/eslint-plugin-js@npm:3.1.0": + version: 3.1.0 + resolution: "@stylistic/eslint-plugin-js@npm:3.1.0" dependencies: eslint-visitor-keys: "npm:^4.2.0" espree: "npm:^10.3.0" peerDependencies: eslint: ">=8.40.0" - checksum: 10c0/e4f3a60189395198773ad223773458708035555a1835dcf4f6736c0a25a2951f72c9489f5ab115bad57802c55bcbc5a7be58a899cfd0c2952f163b9b4e5d1402 + checksum: 10c0/9842e943e17f37f5e163f1994466346bd9302bb95a754764cf5255b102b099c6eabf8c44c257a94fa9cb5df68c766d36ec4a0b0b27e404ce223fef995441da71 languageName: node linkType: hard @@ -2075,16 +2084,16 @@ __metadata: languageName: node linkType: hard -"eslint@npm:9.19.0": - version: 9.19.0 - resolution: "eslint@npm:9.19.0" +"eslint@npm:9.20.0": + version: 9.20.0 + resolution: "eslint@npm:9.20.0" dependencies: "@eslint-community/eslint-utils": "npm:^4.2.0" "@eslint-community/regexpp": "npm:^4.12.1" "@eslint/config-array": "npm:^0.19.0" - "@eslint/core": "npm:^0.10.0" + "@eslint/core": "npm:^0.11.0" "@eslint/eslintrc": "npm:^3.2.0" - "@eslint/js": "npm:9.19.0" + "@eslint/js": "npm:9.20.0" "@eslint/plugin-kit": "npm:^0.2.5" "@humanfs/node": "npm:^0.16.6" "@humanwhocodes/module-importer": "npm:^1.0.1" @@ -2120,7 +2129,7 @@ __metadata: optional: true bin: eslint: bin/eslint.js - checksum: 10c0/3b0dfaeff6a831de086884a3e2432f18468fe37c69f35e1a0a9a2833d9994a65b6dd2a524aaee28f361c849035ad9d15e3841029b67d261d0abd62c7de6d51f5 + checksum: 10c0/5eb2d9b5ed85a0b022871d19719417d110afb07a4abfedd856ad03d9a821def5f6bc31d7c407ca27f56e5e66e39375300fd2b877017245eb99c44060d6c983bd languageName: node linkType: hard @@ -3139,12 +3148,12 @@ __metadata: languageName: node linkType: hard -"marked@npm:15.0.6": - version: 15.0.6 - resolution: "marked@npm:15.0.6" +"marked@npm:15.0.7": + version: 15.0.7 + resolution: "marked@npm:15.0.7" bin: marked: bin/marked.js - checksum: 10c0/8f30972ac5fdf879353484bdd7717409c241d15031a58bbc483070dedb58e4b314c41c0b59b78e536658907c02ee149eaf4b9be221f198df97beae703f529d40 + checksum: 10c0/0b9d07bace37bbf0548bae356c4184765afa4d2296ed0be4418aa4bb0ce703f323dc1a475125d536581f9fe264797e6265dd0b57499d97c0fe0f29bc6d016343 languageName: node linkType: hard @@ -3827,12 +3836,12 @@ __metadata: languageName: node linkType: hard -"prettier@npm:3.4.2": - version: 3.4.2 - resolution: "prettier@npm:3.4.2" +"prettier@npm:3.5.0": + version: 3.5.0 + resolution: "prettier@npm:3.5.0" bin: prettier: bin/prettier.cjs - checksum: 10c0/99e076a26ed0aba4ebc043880d0f08bbb8c59a4c6641cdee6cdadf2205bdd87aa1d7823f50c3aea41e015e99878d37c58d7b5f0e663bba0ef047f94e36b96446 + checksum: 10c0/6c355d74c377f5622953229d92477e8b9779162e848db90fd7e06c431deb73585d31fafc4516cf5868917825b97b9ec7c87c8d8b8e03ccd9fc9c0b7699d1a650 languageName: node linkType: hard @@ -4515,20 +4524,20 @@ __metadata: version: 0.0.0-use.local resolution: "svelte-marked@workspace:." dependencies: - "@eslint/js": "npm:9.19.0" - "@stylistic/eslint-plugin-js": "npm:3.0.1" + "@eslint/js": "npm:9.20.0" + "@stylistic/eslint-plugin-js": "npm:3.1.0" "@sveltejs/vite-plugin-svelte": "npm:5.0.3" "@testing-library/jest-dom": "npm:6.6.3" "@testing-library/svelte": "npm:5.2.6" "@types/marked": "npm:6.0.0" - eslint: "npm:9.19.0" + eslint: "npm:9.20.0" eslint-plugin-svelte: "npm:2.46.1" eslint-plugin-vitest: "npm:0.5.4" github-slugger: "npm:2.0.0" globals: "npm:15.14.0" jsdom: "npm:26.0.0" - marked: "npm:15.0.6" - prettier: "npm:3.4.2" + marked: "npm:15.0.7" + prettier: "npm:3.5.0" rollup-plugin-analyzer: "npm:4.0.0" rollup-plugin-filesize: "npm:10.0.0" rollup-plugin-terser: "npm:7.0.2"