@humanspeak/svelte-markdown 0.8.6 → 0.8.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -74,19 +74,16 @@ This package carefully selects its dependencies to provide a robust and maintain
74
74
  ### Core Dependencies
75
75
 
76
76
  - **marked**
77
-
78
77
  - Industry-standard markdown parser
79
78
  - Battle-tested in production
80
79
  - Extensive security features
81
80
 
82
81
  - **github-slugger**
83
-
84
82
  - GitHub-style heading ID generation
85
83
  - Unicode support
86
84
  - Collision handling
87
85
 
88
86
  - **htmlparser2**
89
-
90
87
  - High-performance HTML parsing
91
88
  - Streaming capabilities
92
89
  - Security-focused design
@@ -84,73 +84,88 @@
84
84
  {/if}
85
85
  {:else if type in renderers}
86
86
  {#if type === 'table'}
87
- <renderers.table {...rest}>
88
- <renderers.tablehead {...rest}>
89
- <renderers.tablerow {...rest}>
90
- {#each header ?? [] as headerItem, i (i)}
91
- {@const { align: _align, ...cellRest } = rest}
92
- <renderers.tablecell
93
- header={true}
94
- align={(rest.align as string[])[i]}
95
- {...cellRest}
96
- >
97
- <Parser tokens={headerItem.tokens} {renderers} />
98
- </renderers.tablecell>
99
- {/each}
100
- </renderers.tablerow>
101
- </renderers.tablehead>
102
- <renderers.tablebody {...rest}>
103
- {#each rows ?? [] as row, i (i)}
104
- <renderers.tablerow {...rest}>
105
- {#each row ?? [] as cells, i (i)}
106
- {@const { align: _align, ...cellRest } = rest}
107
- <renderers.tablecell
108
- header={false}
109
- align={(rest.align as string[])[i]}
110
- {...cellRest}
111
- >
112
- {#if cells.tokens?.[0]?.type === 'html'}
113
- {@const token = cells.tokens[0] as Token & {
114
- tag: string
115
- tokens?: Token[]
116
- }}
117
- {@const { tag, ...localRest } = token}
118
- {@const htmlTag = tag as keyof typeof Html}
119
- {#if renderers.html && htmlTag in renderers.html}
120
- {@const HtmlComponent =
121
- renderers.html[htmlTag as keyof typeof renderers.html]}
122
- <HtmlComponent {...token}>
123
- {#if token.tokens?.length}
124
- <Parser
125
- tokens={token.tokens}
126
- {renderers}
127
- {...Object.fromEntries(
128
- Object.entries(localRest).filter(
129
- ([key]) => key !== 'attributes'
130
- )
131
- )}
132
- />
87
+ {#if renderers.table && renderers.tablerow && renderers.tablecell}
88
+ <renderers.table {...rest}>
89
+ {#if renderers.tablehead}
90
+ <renderers.tablehead {...rest}>
91
+ <renderers.tablerow {...rest}>
92
+ {#each header ?? [] as headerItem, i (i)}
93
+ {@const { align: _align, ...cellRest } = rest}
94
+ <renderers.tablecell
95
+ header={true}
96
+ align={(rest.align as string[])[i]}
97
+ {...cellRest}
98
+ >
99
+ <Parser tokens={headerItem.tokens} {renderers} />
100
+ </renderers.tablecell>
101
+ {/each}
102
+ </renderers.tablerow>
103
+ </renderers.tablehead>
104
+ {/if}
105
+ {#if renderers.tablebody}
106
+ <renderers.tablebody {...rest}>
107
+ {#each rows ?? [] as row, i (i)}
108
+ <renderers.tablerow {...rest}>
109
+ {#each row ?? [] as cells, i (i)}
110
+ {@const { align: _align, ...cellRest } = rest}
111
+ <renderers.tablecell
112
+ header={false}
113
+ align={(rest.align as string[])[i]}
114
+ {...cellRest}
115
+ >
116
+ {#if cells.tokens?.[0]?.type === 'html'}
117
+ {@const token = cells.tokens[0] as Token & {
118
+ tag: string
119
+ tokens?: Token[]
120
+ }}
121
+ {@const { tag, ...localRest } = token}
122
+ {@const htmlTag = tag as keyof typeof Html}
123
+ {#if renderers.html && htmlTag in renderers.html}
124
+ {@const HtmlComponent =
125
+ renderers.html[
126
+ htmlTag as keyof typeof renderers.html
127
+ ]}
128
+ {#if HtmlComponent}
129
+ <HtmlComponent {...token}>
130
+ {#if token.tokens?.length}
131
+ <Parser
132
+ tokens={token.tokens}
133
+ {renderers}
134
+ {...Object.fromEntries(
135
+ Object.entries(
136
+ localRest
137
+ ).filter(
138
+ ([key]) =>
139
+ key !== 'attributes'
140
+ )
141
+ )}
142
+ />
143
+ {/if}
144
+ </HtmlComponent>
145
+ {/if}
133
146
  {/if}
134
- </HtmlComponent>
135
- {/if}
136
- {:else}
137
- <Parser tokens={cells.tokens} {renderers} />
138
- {/if}
139
- </renderers.tablecell>
147
+ {:else}
148
+ <Parser tokens={cells.tokens} {renderers} />
149
+ {/if}
150
+ </renderers.tablecell>
151
+ {/each}
152
+ </renderers.tablerow>
140
153
  {/each}
141
- </renderers.tablerow>
142
- {/each}
143
- </renderers.tablebody>
144
- </renderers.table>
145
- {:else if type === 'list'}
154
+ </renderers.tablebody>
155
+ {/if}
156
+ </renderers.table>
157
+ {/if}
158
+ {:else if type === 'list' && renderers.list}
146
159
  {#if ordered}
147
160
  <renderers.list {ordered} {...rest}>
148
161
  {@const { items, ...parserRest }: {items: Props[]} = rest}
149
162
  {#each items as item, index (index)}
150
163
  {@const OrderedListComponent = renderers.orderedlistitem || renderers.listitem}
151
- <OrderedListComponent {...item}>
152
- <Parser {...parserRest} tokens={item.tokens} {renderers} />
153
- </OrderedListComponent>
164
+ {#if OrderedListComponent}
165
+ <OrderedListComponent {...item}>
166
+ <Parser {...parserRest} tokens={item.tokens} {renderers} />
167
+ </OrderedListComponent>
168
+ {/if}
154
169
  {/each}
155
170
  </renderers.list>
156
171
  {:else}
@@ -159,9 +174,11 @@
159
174
  {#each items as item, index (index)}
160
175
  {@const UnorderedListComponent =
161
176
  renderers.unorderedlistitem || renderers.listitem}
162
- <UnorderedListComponent {...item}>
163
- <Parser {...parserRest} tokens={item.tokens} {renderers} />
164
- </UnorderedListComponent>
177
+ {#if UnorderedListComponent}
178
+ <UnorderedListComponent {...item}>
179
+ <Parser {...parserRest} tokens={item.tokens} {renderers} />
180
+ </UnorderedListComponent>
181
+ {/if}
165
182
  {/each}
166
183
  </renderers.list>
167
184
  {/if}
@@ -170,18 +187,20 @@
170
187
  {@const htmlTag = rest.tag as keyof typeof Html}
171
188
  {#if renderers.html && htmlTag in renderers.html}
172
189
  {@const HtmlComponent = renderers.html[htmlTag as keyof typeof renderers.html]}
173
- {@const tokens = (rest.tokens as Token[]) ?? ([] as Token[])}
174
- <HtmlComponent {...rest}>
175
- {#if tokens.length}
176
- <Parser
177
- {tokens}
178
- {renderers}
179
- {...Object.fromEntries(
180
- Object.entries(localRest).filter(([key]) => key !== 'attributes')
181
- )}
182
- />
183
- {/if}
184
- </HtmlComponent>
190
+ {#if HtmlComponent}
191
+ {@const tokens = (rest.tokens as Token[]) ?? ([] as Token[])}
192
+ <HtmlComponent {...rest}>
193
+ {#if tokens.length}
194
+ <Parser
195
+ {tokens}
196
+ {renderers}
197
+ {...Object.fromEntries(
198
+ Object.entries(localRest).filter(([key]) => key !== 'attributes')
199
+ )}
200
+ />
201
+ {/if}
202
+ </HtmlComponent>
203
+ {/if}
185
204
  {:else}
186
205
  <Parser
187
206
  tokens={(rest.tokens as Token[]) ?? ([] as Token[])}
@@ -191,13 +210,15 @@
191
210
  {/if}
192
211
  {:else}
193
212
  {@const GeneralComponent = renderers[type as keyof typeof renderers] as RendererComponent}
194
- <GeneralComponent {...rest}>
195
- {#if tokens}
196
- {@const { text: _text, raw: _raw, ...parserRest } = rest}
197
- <Parser {...parserRest} {tokens} {renderers} />
198
- {:else}
199
- <renderers.rawtext text={rest.raw} />
200
- {/if}
201
- </GeneralComponent>
213
+ {#if GeneralComponent}
214
+ <GeneralComponent {...rest}>
215
+ {#if tokens}
216
+ {@const { text: _text, raw: _raw, ...parserRest } = rest}
217
+ <Parser {...parserRest} {tokens} {renderers} />
218
+ {:else}
219
+ <renderers.rawtext text={rest.raw} {...rest} />
220
+ {/if}
221
+ </GeneralComponent>
222
+ {/if}
202
223
  {/if}
203
224
  {/if}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@humanspeak/svelte-markdown",
3
- "version": "0.8.6",
3
+ "version": "0.8.8",
4
4
  "description": "A powerful, customizable markdown renderer for Svelte with TypeScript support",
5
5
  "keywords": [
6
6
  "svelte",
@@ -69,59 +69,59 @@
69
69
  "test:only": "vitest run",
70
70
  "test:watch": "vitest"
71
71
  },
72
+ "overrides": {
73
+ "@sveltejs/kit": {
74
+ "cookie": "^0.7.0"
75
+ }
76
+ },
72
77
  "dependencies": {
73
78
  "github-slugger": "^2.0.0",
74
79
  "htmlparser2": "^10.0.0",
75
- "marked": "^15.0.11"
80
+ "marked": "^16.0.0"
76
81
  },
77
82
  "devDependencies": {
78
- "@eslint/compat": "^1.2.9",
79
- "@eslint/js": "^9.27.0",
80
- "@playwright/test": "^1.52.0",
83
+ "@eslint/compat": "^1.3.1",
84
+ "@eslint/js": "^9.31.0",
85
+ "@playwright/test": "^1.54.1",
81
86
  "@sveltejs/adapter-auto": "^6.0.1",
82
- "@sveltejs/kit": "^2.21.0",
83
- "@sveltejs/package": "^2.3.11",
84
- "@sveltejs/vite-plugin-svelte": "^5.0.3",
87
+ "@sveltejs/kit": "^2.22.5",
88
+ "@sveltejs/package": "^2.3.12",
89
+ "@sveltejs/vite-plugin-svelte": "^6.0.0",
85
90
  "@testing-library/jest-dom": "^6.6.3",
86
- "@testing-library/svelte": "^5.2.7",
91
+ "@testing-library/svelte": "^5.2.8",
87
92
  "@testing-library/user-event": "^14.6.1",
88
- "@types/node": "^22.15.18",
89
- "@typescript-eslint/eslint-plugin": "^8.32.1",
90
- "@typescript-eslint/parser": "^8.32.1",
91
- "@vitest/coverage-v8": "^3.1.3",
92
- "eslint": "^9.27.0",
93
+ "@types/node": "^24.0.13",
94
+ "@typescript-eslint/eslint-plugin": "^8.36.0",
95
+ "@typescript-eslint/parser": "^8.36.0",
96
+ "@vitest/coverage-v8": "^3.2.4",
97
+ "eslint": "^9.31.0",
93
98
  "eslint-config-prettier": "^10.1.5",
94
- "eslint-plugin-import": "^2.31.0",
95
- "eslint-plugin-svelte": "^3.8.0",
99
+ "eslint-plugin-import": "^2.32.0",
100
+ "eslint-plugin-svelte": "^3.10.1",
96
101
  "eslint-plugin-unused-imports": "^4.1.4",
97
- "globals": "^16.1.0",
102
+ "globals": "^16.3.0",
98
103
  "jsdom": "^26.1.0",
99
- "prettier": "^3.5.3",
104
+ "prettier": "^3.6.2",
100
105
  "prettier-plugin-organize-imports": "^4.1.0",
101
106
  "prettier-plugin-svelte": "^3.4.0",
102
- "prettier-plugin-tailwindcss": "^0.6.11",
107
+ "prettier-plugin-tailwindcss": "^0.6.14",
103
108
  "publint": "^0.3.12",
104
- "svelte": "^5.30.1",
105
- "svelte-check": "^4.2.1",
109
+ "svelte": "^5.35.6",
110
+ "svelte-check": "^4.2.2",
106
111
  "typescript": "^5.8.3",
107
- "typescript-eslint": "^8.32.1",
108
- "vite": "^6.3.5",
109
- "vitest": "^3.1.3"
112
+ "typescript-eslint": "^8.36.0",
113
+ "vite": "^7.0.4",
114
+ "vitest": "^3.2.4"
110
115
  },
111
116
  "peerDependencies": {
112
117
  "svelte": "^5.0.0"
113
118
  },
114
119
  "volta": {
115
- "node": "22.15.1"
120
+ "node": "22.17.0"
116
121
  },
117
122
  "publishConfig": {
118
123
  "access": "public"
119
124
  },
120
- "overrides": {
121
- "@sveltejs/kit": {
122
- "cookie": "^0.7.0"
123
- }
124
- },
125
125
  "tags": [
126
126
  "svelte",
127
127
  "markdown"