@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 +0 -3
- package/dist/Parser.svelte +104 -83
- package/package.json +30 -30
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
|
package/dist/Parser.svelte
CHANGED
|
@@ -84,73 +84,88 @@
|
|
|
84
84
|
{/if}
|
|
85
85
|
{:else if type in renderers}
|
|
86
86
|
{#if type === 'table'}
|
|
87
|
-
|
|
88
|
-
<renderers.
|
|
89
|
-
|
|
90
|
-
{
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
{#if
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
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
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
{/
|
|
139
|
-
</renderers.
|
|
147
|
+
{:else}
|
|
148
|
+
<Parser tokens={cells.tokens} {renderers} />
|
|
149
|
+
{/if}
|
|
150
|
+
</renderers.tablecell>
|
|
151
|
+
{/each}
|
|
152
|
+
</renderers.tablerow>
|
|
140
153
|
{/each}
|
|
141
|
-
</renderers.
|
|
142
|
-
{/
|
|
143
|
-
</renderers.
|
|
144
|
-
|
|
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
|
-
|
|
152
|
-
<
|
|
153
|
-
|
|
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
|
-
|
|
163
|
-
<
|
|
164
|
-
|
|
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
|
-
{
|
|
174
|
-
|
|
175
|
-
{
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
Object.
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
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
|
-
|
|
195
|
-
{
|
|
196
|
-
{
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
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.
|
|
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": "^
|
|
80
|
+
"marked": "^16.0.0"
|
|
76
81
|
},
|
|
77
82
|
"devDependencies": {
|
|
78
|
-
"@eslint/compat": "^1.
|
|
79
|
-
"@eslint/js": "^9.
|
|
80
|
-
"@playwright/test": "^1.
|
|
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.
|
|
83
|
-
"@sveltejs/package": "^2.3.
|
|
84
|
-
"@sveltejs/vite-plugin-svelte": "^
|
|
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.
|
|
91
|
+
"@testing-library/svelte": "^5.2.8",
|
|
87
92
|
"@testing-library/user-event": "^14.6.1",
|
|
88
|
-
"@types/node": "^
|
|
89
|
-
"@typescript-eslint/eslint-plugin": "^8.
|
|
90
|
-
"@typescript-eslint/parser": "^8.
|
|
91
|
-
"@vitest/coverage-v8": "^3.
|
|
92
|
-
"eslint": "^9.
|
|
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.
|
|
95
|
-
"eslint-plugin-svelte": "^3.
|
|
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.
|
|
102
|
+
"globals": "^16.3.0",
|
|
98
103
|
"jsdom": "^26.1.0",
|
|
99
|
-
"prettier": "^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.
|
|
107
|
+
"prettier-plugin-tailwindcss": "^0.6.14",
|
|
103
108
|
"publint": "^0.3.12",
|
|
104
|
-
"svelte": "^5.
|
|
105
|
-
"svelte-check": "^4.2.
|
|
109
|
+
"svelte": "^5.35.6",
|
|
110
|
+
"svelte-check": "^4.2.2",
|
|
106
111
|
"typescript": "^5.8.3",
|
|
107
|
-
"typescript-eslint": "^8.
|
|
108
|
-
"vite": "^
|
|
109
|
-
"vitest": "^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.
|
|
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"
|