@fuzdev/mdz 0.3.0 → 0.5.0

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.
Files changed (81) hide show
  1. package/LICENSE +10 -17
  2. package/README.md +6 -3
  3. package/dist/Mdz.svelte +8 -7
  4. package/dist/Mdz.svelte.d.ts.map +1 -1
  5. package/dist/MdzNodeView.svelte +74 -30
  6. package/dist/MdzNodeView.svelte.d.ts +1 -2
  7. package/dist/MdzNodeView.svelte.d.ts.map +1 -1
  8. package/dist/MdzPrecompiled.svelte +3 -3
  9. package/dist/MdzPrecompiled.svelte.d.ts.map +1 -1
  10. package/dist/MdzRoot.svelte +3 -3
  11. package/dist/MdzRoot.svelte.d.ts.map +1 -1
  12. package/dist/MdzStream.svelte +3 -3
  13. package/dist/MdzStream.svelte.d.ts.map +1 -1
  14. package/dist/MdzStreamNodeView.svelte +79 -31
  15. package/dist/MdzStreamNodeView.svelte.d.ts +1 -2
  16. package/dist/MdzStreamNodeView.svelte.d.ts.map +1 -1
  17. package/dist/context_helpers.js +1 -1
  18. package/dist/mdz.d.ts +12 -1
  19. package/dist/mdz.d.ts.map +1 -1
  20. package/dist/mdz.js +1 -1
  21. package/dist/mdz_contexts.d.ts +33 -6
  22. package/dist/mdz_contexts.d.ts.map +1 -1
  23. package/dist/mdz_debug_work.d.ts.map +1 -1
  24. package/dist/mdz_helpers.d.ts +31 -3
  25. package/dist/mdz_helpers.d.ts.map +1 -1
  26. package/dist/mdz_helpers.js +104 -12
  27. package/dist/mdz_lexer.d.ts +3 -1
  28. package/dist/mdz_lexer.d.ts.map +1 -1
  29. package/dist/mdz_lexer.js +115 -31
  30. package/dist/mdz_opcodes.d.ts +3 -1
  31. package/dist/mdz_opcodes.d.ts.map +1 -1
  32. package/dist/mdz_opcodes_to_nodes.d.ts.map +1 -1
  33. package/dist/mdz_opcodes_to_nodes.js +25 -17
  34. package/dist/mdz_stream_parser.d.ts.map +1 -1
  35. package/dist/mdz_stream_parser.js +8 -8
  36. package/dist/mdz_stream_parser_block.js +5 -5
  37. package/dist/mdz_stream_parser_inline.js +4 -4
  38. package/dist/mdz_stream_parser_link.d.ts.map +1 -1
  39. package/dist/mdz_stream_parser_link.js +83 -11
  40. package/dist/mdz_stream_parser_list.d.ts.map +1 -1
  41. package/dist/mdz_stream_parser_list.js +13 -7
  42. package/dist/mdz_stream_parser_state.d.ts.map +1 -1
  43. package/dist/mdz_stream_parser_state.js +7 -7
  44. package/dist/mdz_stream_parser_table.d.ts.map +1 -1
  45. package/dist/mdz_stream_parser_table.js +16 -9
  46. package/dist/mdz_stream_parser_text.js +2 -2
  47. package/dist/mdz_stream_parser_url.js +7 -7
  48. package/dist/mdz_stream_state.svelte.d.ts +3 -1
  49. package/dist/mdz_stream_state.svelte.d.ts.map +1 -1
  50. package/dist/mdz_stream_state.svelte.js +4 -0
  51. package/dist/mdz_to_svelte.d.ts +17 -4
  52. package/dist/mdz_to_svelte.d.ts.map +1 -1
  53. package/dist/mdz_to_svelte.js +22 -9
  54. package/dist/mdz_token_parser.d.ts.map +1 -1
  55. package/dist/mdz_token_parser.js +25 -11
  56. package/dist/svelte_preprocess_mdz.d.ts +6 -3
  57. package/dist/svelte_preprocess_mdz.d.ts.map +1 -1
  58. package/dist/svelte_preprocess_mdz.js +11 -11
  59. package/package.json +25 -40
  60. package/src/lib/context_helpers.ts +2 -2
  61. package/src/lib/mdz.ts +15 -3
  62. package/src/lib/mdz_contexts.ts +41 -11
  63. package/src/lib/mdz_debug_work.ts +1 -1
  64. package/src/lib/mdz_helpers.ts +164 -43
  65. package/src/lib/mdz_lexer.ts +173 -80
  66. package/src/lib/mdz_opcodes.ts +3 -1
  67. package/src/lib/mdz_opcodes_to_nodes.ts +40 -30
  68. package/src/lib/mdz_stream_parser.ts +17 -17
  69. package/src/lib/mdz_stream_parser_block.ts +14 -14
  70. package/src/lib/mdz_stream_parser_inline.ts +18 -18
  71. package/src/lib/mdz_stream_parser_link.ts +88 -18
  72. package/src/lib/mdz_stream_parser_list.ts +31 -25
  73. package/src/lib/mdz_stream_parser_state.ts +27 -27
  74. package/src/lib/mdz_stream_parser_table.ts +38 -31
  75. package/src/lib/mdz_stream_parser_text.ts +3 -3
  76. package/src/lib/mdz_stream_parser_url.ts +11 -11
  77. package/src/lib/mdz_stream_state.svelte.ts +11 -8
  78. package/src/lib/mdz_to_svelte.ts +71 -27
  79. package/src/lib/mdz_token_parser.ts +52 -38
  80. package/src/lib/svelte_preprocess_mdz.ts +66 -60
  81. package/src/lib/tsdoc_mdz.ts +1 -1
package/LICENSE CHANGED
@@ -1,21 +1,14 @@
1
- MIT License
1
+ BSD Zero Clause License
2
2
 
3
3
  Copyright (c) fuz.dev
4
4
 
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
5
+ Permission to use, copy, modify, and/or distribute this software for
6
+ any purpose with or without fee is hereby granted.
11
7
 
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
8
+ THE SOFTWARE IS PROVIDED “AS IS” AND THE AUTHOR DISCLAIMS ALL
9
+ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
10
+ OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE
11
+ FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY
12
+ DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
13
+ AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
14
+ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
package/README.md CHANGED
@@ -27,10 +27,13 @@ For more see the [docs](https://mdz.fuz.dev/docs).
27
27
  AI disclosure: almost everything here was generated by machine agents except
28
28
  for the designs and intros. mdz is the result of 5+ years of prototyping ideas.
29
29
 
30
- > ⚠️ This project is pre-stable: breaking changes are expected and
31
- > some features (like attributes) are not yet implemented.
30
+ > ⚠️ This project is pre-stable: breaking changes are expected.
32
31
  > Feedback is welcome!
33
32
 
33
+ ## Contributing
34
+
35
+ [fuz.dev/contributing](https://www.fuz.dev/contributing)
36
+
34
37
  ## License
35
38
 
36
- [MIT](LICENSE)
39
+ [0BSD](LICENSE)
package/dist/Mdz.svelte CHANGED
@@ -1,13 +1,13 @@
1
1
  <script lang="ts">
2
- import type {SvelteHTMLElements} from 'svelte/elements';
3
- import {DEV} from 'esm-env';
2
+ import type { SvelteHTMLElements } from 'svelte/elements';
3
+ import { DEV } from 'esm-env';
4
4
 
5
- import {mdz_parse, type MdzNode} from './mdz.js';
5
+ import { mdz_parse, type MdzNode } from './mdz.js';
6
6
  import MdzNodeView from './MdzNodeView.svelte';
7
7
  import {
8
8
  mdz_base_context,
9
9
  mdz_set_context_with_fallback,
10
- type MdzWhitespace,
10
+ type MdzWhitespace
11
11
  } from './mdz_contexts.js';
12
12
 
13
13
  const {
@@ -27,9 +27,10 @@
27
27
  whitespace?: MdzWhitespace;
28
28
  base?: string;
29
29
  } & // pass `content` to parse at render, or `nodes` to render a pre-parsed
30
- // tree (e.g. build-time-parsed docs content) and skip `mdz_parse` entirely
31
- (| {content: string; nodes?: undefined}
32
- | {content?: undefined; nodes: Array<MdzNode>}
30
+ // tree (e.g. one parsed once and rendered in several places) and skip
31
+ // `mdz_parse` entirely
32
+ (
33
+ { content: string; nodes?: undefined } | { content?: undefined; nodes: Array<MdzNode> }
33
34
  ) = $props();
34
35
 
35
36
  mdz_set_context_with_fallback(mdz_base_context, () => base);
@@ -1 +1 @@
1
- {"version":3,"file":"Mdz.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/Mdz.svelte"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,iBAAiB,CAAC;AAGxD,OAAO,EAAY,KAAK,OAAO,EAAC,MAAM,UAAU,CAAC;AAEjD,OAAO,EAGL,KAAK,aAAa,EAClB,MAAM,mBAAmB,CAAC;AAE3B,KAAK,gBAAgB,GAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,GAAG;IACnF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;CACd,GAAG,uEAAuE;AAE1E,CAAG;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,CAAA;CAAC,GACpC;IAAC,OAAO,CAAC,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;CAAC,CAC9C,CAAC;AAkCJ,QAAA,MAAM,GAAG,sDAAwC,CAAC;AAClD,KAAK,GAAG,GAAG,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC;AAClC,eAAe,GAAG,CAAC"}
1
+ {"version":3,"file":"Mdz.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/Mdz.svelte"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAG1D,OAAO,EAAa,KAAK,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnD,OAAO,EAGL,KAAK,aAAa,EAClB,MAAM,mBAAmB,CAAC;AAE3B,KAAK,gBAAgB,GAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,GAAG;IACnF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;CACd,GAAG,uEAAuE;AAG1E,CACC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,OAAO,CAAC,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;CAAE,CACvF,CAAC;AAkCJ,QAAA,MAAM,GAAG,sDAAwC,CAAC;AAClD,KAAK,GAAG,GAAG,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC;AAClC,eAAe,GAAG,CAAC"}
@@ -1,28 +1,48 @@
1
1
  <script lang="ts">
2
- import {resolve} from '$app/paths';
2
+ import { DEV } from 'esm-env';
3
+ import { resolve } from '$app/paths';
3
4
 
4
- import type {MdzNode, MdzNodeTableRow, MdzTableAlign} from './mdz.js';
5
- import {mdz_classify_link, mdz_is_void_element} from './mdz_helpers.js';
5
+ import type { MdzAttribute, MdzNode, MdzNodeTableRow, MdzTableAlign } from './mdz.js';
6
+ import {
7
+ mdz_classify_link,
8
+ mdz_is_void_element,
9
+ mdz_filter_element_attributes,
10
+ mdz_filter_component_attributes,
11
+ mdz_component_config,
12
+ mdz_format_unregistered_attributes,
13
+ ALLOWED_ELEMENT_ATTRIBUTES
14
+ } from './mdz_helpers.js';
6
15
  import {
7
16
  mdz_components_context,
8
17
  mdz_elements_context,
9
18
  mdz_base_context,
10
19
  mdz_code_context,
11
- mdz_codeblock_context,
20
+ mdz_codeblock_context
12
21
  } from './mdz_contexts.js';
13
22
 
14
23
  const {
15
24
  node,
16
- nodes,
17
- }: // exactly one of `node`/`nodes` — the array form renders a whole tree
25
+ nodes
26
+ }:
27
+ // exactly one of `node`/`nodes` — the array form renders a whole tree
18
28
  // through this single component instance (used by `Mdz`)
19
- {node: MdzNode; nodes?: undefined} | {node?: undefined; nodes: Array<MdzNode>} = $props();
29
+ { node: MdzNode; nodes?: undefined } | { node?: undefined; nodes: Array<MdzNode> } = $props();
20
30
 
21
31
  const get_components = mdz_components_context.get_maybe();
22
32
  const get_elements = mdz_elements_context.get_maybe();
23
33
  const get_mdz_base = mdz_base_context.get_maybe();
24
34
  const get_code = mdz_code_context.get_maybe();
25
35
  const get_codeblock = mdz_codeblock_context.get_maybe();
36
+
37
+ // `resolve()`'s pathname branch, widened to runtime strings: the app's `Path` union
38
+ // only types known routes, and mdz references are authored content. Sound because
39
+ // `mdz_classify_link` strips the leading slash, so the call never takes the route-id branch.
40
+ const resolve_pathname = resolve as (pathname: string) => string;
41
+
42
+ // the boundary renders the placeholder silently, so surface the cause in DEV
43
+ const on_component_error = DEV
44
+ ? (error: unknown) => console.error('mdz: component failed to render', error)
45
+ : undefined;
26
46
  </script>
27
47
 
28
48
  <!-- The tree renders through recursive snippets rather than recursive
@@ -37,30 +57,44 @@ tree instead of per node. -->
37
57
  {#snippet render_node(node: MdzNode)}
38
58
  {#if node.type === 'Element'}
39
59
  {@const element_config = get_elements?.()?.get(node.name)}
40
- {#if element_config !== undefined}
60
+ {#if element_config === true}
61
+ {@const attrs = mdz_filter_element_attributes(
62
+ node.name,
63
+ node.attributes,
64
+ ALLOWED_ELEMENT_ATTRIBUTES
65
+ )}
41
66
  {#if mdz_is_void_element(node.name)}
42
67
  <!-- void elements cannot have content — any parsed children are dropped -->
43
- <svelte:element this={node.name} />
68
+ <svelte:element this={node.name} {...attrs} />
44
69
  {:else}
45
- <svelte:element this={node.name}>
70
+ <svelte:element this={node.name} {...attrs}>
46
71
  {#if node.children.length > 0}
47
72
  {@render render_children(node.children)}
48
73
  {/if}
49
74
  </svelte:element>
50
75
  {/if}
51
76
  {:else}
52
- {@render render_unregistered_tag(node.name, node.children)}
77
+ {@render render_unregistered_tag(node.name, node.attributes, node.children)}
53
78
  {/if}
54
79
  {:else if node.type === 'Component'}
55
- {@const Component = get_components?.()?.get(node.name)}
56
- {#if Component}
57
- <Component>
58
- {#if node.children.length > 0}
59
- {@render render_children(node.children)}
60
- {/if}
61
- </Component>
80
+ {@const entry = get_components?.()?.get(node.name)}
81
+ {#if entry}
82
+ {@const config = mdz_component_config(entry)}
83
+ {@const props = mdz_filter_component_attributes(node.name, node.attributes, config.props)}
84
+ <!-- a per-node boundary: a component that throws (say on an unexpected prop
85
+ value) degrades to its literal placeholder instead of taking down the tree -->
86
+ <svelte:boundary onerror={on_component_error}>
87
+ <config.component {...props}>
88
+ {#if node.children.length > 0}
89
+ {@render render_children(node.children)}
90
+ {/if}
91
+ </config.component>
92
+ {#snippet failed()}
93
+ {@render render_unregistered_tag(node.name, node.attributes, node.children)}
94
+ {/snippet}
95
+ </svelte:boundary>
62
96
  {:else}
63
- {@render render_unregistered_tag(node.name, node.children)}
97
+ {@render render_unregistered_tag(node.name, node.attributes, node.children)}
64
98
  {/if}
65
99
  {:else if node.type === 'Text'}
66
100
  {node.content}
@@ -82,13 +116,14 @@ tree instead of per node. -->
82
116
  {#if link.kind === 'unsafe'}
83
117
  {@render render_children(node.children)}
84
118
  {:else if link.kind === 'resolve'}
85
- <a href={resolve(link.href as any)}>{@render render_children(node.children)}</a>
119
+ <a href={resolve_pathname(link.path)}>{@render render_children(node.children)}</a>
86
120
  {:else if link.kind === 'external'}
87
121
  <!-- eslint-disable-next-line svelte/no-navigation-without-resolve -->
88
- <a href={link.href} target="_blank" rel="noopener">{@render render_children(node.children)}</a
89
- >
122
+ <a href={link.href} target="_blank" rel="noopener">
123
+ {@render render_children(node.children)}
124
+ </a>
90
125
  {:else}
91
- <!-- fragment/query/relative/bare references skip resolve() (it accepts only absolute paths) -->
126
+ <!-- fragment/query/relative/bare references aren't under the base, so they skip resolve() -->
92
127
  <!-- eslint-disable-next-line svelte/no-navigation-without-resolve -->
93
128
  <a href={link.href}>{@render render_children(node.children)}</a>
94
129
  {/if}
@@ -115,14 +150,18 @@ tree instead of per node. -->
115
150
  <table>
116
151
  {#if header_row}
117
152
  <thead>
118
- <tr>{@render render_cells(header_row, 'th', node.align)}</tr>
153
+ <tr>
154
+ {@render render_cells(header_row, 'th', node.align)}
155
+ </tr>
119
156
  </thead>
120
157
  {/if}
121
158
  {#if node.children.length > (header_row ? 1 : 0)}
122
159
  <tbody>
123
160
  {#each node.children as row, i (i)}
124
161
  {#if !row.header}
125
- <tr>{@render render_cells(row, 'td', node.align)}</tr>
162
+ <tr>
163
+ {@render render_cells(row, 'td', node.align)}
164
+ </tr>
126
165
  {/if}
127
166
  {/each}
128
167
  </tbody>
@@ -164,12 +203,17 @@ tree instead of per node. -->
164
203
  {/each}
165
204
  {/snippet}
166
205
 
167
- {#snippet render_unregistered_tag(name: string, children: Array<MdzNode>)}
206
+ {#snippet render_unregistered_tag(
207
+ name: string,
208
+ attributes: Array<MdzAttribute>,
209
+ children: Array<MdzNode>
210
+ )}
211
+ {@const formatted = mdz_format_unregistered_attributes(attributes)}
168
212
  {#if children.length > 0}
169
- <code class="color_c_50">&lt;{name}&gt;</code>{@render render_children(children)}<code
170
- class="color_c_50">&lt;/{name}&gt;</code
171
- >
213
+ <code class="color_c_50">&lt;{name}{formatted}&gt;</code>{@render render_children(
214
+ children
215
+ )}<code class="color_c_50">&lt;/{name}&gt;</code>
172
216
  {:else}
173
- <code class="color_c_50">&lt;{name} /&gt;</code>
217
+ <code class="color_c_50">&lt;{name}{formatted} /&gt;</code>
174
218
  {/if}
175
219
  {/snippet}
@@ -1,6 +1,5 @@
1
1
  import type { MdzNode } from './mdz.js';
2
- type $$ComponentProps = // exactly one of `node`/`nodes` — the array form renders a whole tree
3
- {
2
+ type $$ComponentProps = {
4
3
  node: MdzNode;
5
4
  nodes?: undefined;
6
5
  } | {
@@ -1 +1 @@
1
- {"version":3,"file":"MdzNodeView.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/MdzNodeView.svelte"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,OAAO,EAAiC,MAAM,UAAU,CAAC;AAUrE,KAAK,gBAAgB,GAEpB,AAFwB,sEAAsE;AAE9F;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,CAAA;CAAC,GAAG;IAAC,IAAI,CAAC,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;CAAC,CAAC;AAgKjF,QAAA,MAAM,WAAW,sDAAwC,CAAC;AAC1D,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;AAClD,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"MdzNodeView.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/MdzNodeView.svelte"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAgB,OAAO,EAAkC,MAAM,UAAU,CAAC;AAkBrF,KAAK,gBAAgB,GAGpB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,IAAI,CAAC,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;CAAE,CAAC;AAkMrF,QAAA,MAAM,WAAW,sDAAwC,CAAC;AAC1D,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;AAClD,eAAe,WAAW,CAAC"}
@@ -1,8 +1,8 @@
1
1
  <script lang="ts">
2
- import type {Snippet} from 'svelte';
3
- import type {SvelteHTMLElements} from 'svelte/elements';
2
+ import type { Snippet } from 'svelte';
3
+ import type { SvelteHTMLElements } from 'svelte/elements';
4
4
 
5
- import type {MdzWhitespace} from './mdz_contexts.js';
5
+ import type { MdzWhitespace } from './mdz_contexts.js';
6
6
 
7
7
  /**
8
8
  * Wrapper for precompiled mdz content. Used by `svelte_preprocess_mdz`.
@@ -1 +1 @@
1
- {"version":3,"file":"MdzPrecompiled.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/MdzPrecompiled.svelte"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,QAAQ,CAAC;AACpC,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,iBAAiB,CAAC;AAExD,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAEpD,KAAK,gBAAgB,GAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,GAAG;IACnF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,QAAQ,EAAE,OAAO,CAAC;CAClB,CAAC;AA4BH,QAAA,MAAM,cAAc,sDAAwC,CAAC;AAC7D,KAAK,cAAc,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AACxD,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"MdzPrecompiled.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/MdzPrecompiled.svelte"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEtD,KAAK,gBAAgB,GAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,GAAG;IACnF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,QAAQ,EAAE,OAAO,CAAC;CAClB,CAAC;AA4BH,QAAA,MAAM,cAAc,sDAAwC,CAAC;AAC7D,KAAK,cAAc,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AACxD,eAAe,cAAc,CAAC"}
@@ -1,5 +1,5 @@
1
1
  <script lang="ts">
2
- import type {Snippet} from 'svelte';
2
+ import type { Snippet } from 'svelte';
3
3
 
4
4
  import {
5
5
  mdz_base_context,
@@ -11,7 +11,7 @@
11
11
  type MdzCodeComponent,
12
12
  type MdzCodeblockComponent,
13
13
  type MdzComponents,
14
- type MdzElements,
14
+ type MdzElements
15
15
  } from './mdz_contexts.js';
16
16
 
17
17
  const {
@@ -20,7 +20,7 @@
20
20
  elements,
21
21
  code,
22
22
  codeblock,
23
- children,
23
+ children
24
24
  }: {
25
25
  base?: string;
26
26
  components?: MdzComponents;
@@ -1 +1 @@
1
- {"version":3,"file":"MdzRoot.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/MdzRoot.svelte"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,QAAQ,CAAC;AAEpC,OAAO,EAOL,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,MAAM,mBAAmB,CAAC;AAE3B,KAAK,gBAAgB,GAAI;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,SAAS,CAAC,EAAE,qBAAqB,CAAC;IAClC,QAAQ,EAAE,OAAO,CAAC;CAClB,CAAC;AA0BH,QAAA,MAAM,OAAO,sDAAwC,CAAC;AACtD,KAAK,OAAO,GAAG,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC;AAC1C,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"MdzRoot.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/MdzRoot.svelte"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,EAOL,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,MAAM,mBAAmB,CAAC;AAE3B,KAAK,gBAAgB,GAAI;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,SAAS,CAAC,EAAE,qBAAqB,CAAC;IAClC,QAAQ,EAAE,OAAO,CAAC;CAClB,CAAC;AA0BH,QAAA,MAAM,OAAO,sDAAwC,CAAC;AACtD,KAAK,OAAO,GAAG,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC;AAC1C,eAAe,OAAO,CAAC"}
@@ -1,13 +1,13 @@
1
1
  <script lang="ts">
2
- import type {SvelteHTMLElements} from 'svelte/elements';
2
+ import type { SvelteHTMLElements } from 'svelte/elements';
3
3
 
4
4
  import MdzStreamNodeView from './MdzStreamNodeView.svelte';
5
5
  import {
6
6
  mdz_base_context,
7
7
  mdz_set_context_with_fallback,
8
- type MdzWhitespace,
8
+ type MdzWhitespace
9
9
  } from './mdz_contexts.js';
10
- import type {MdzStreamState} from './mdz_stream_state.svelte.js';
10
+ import type { MdzStreamState } from './mdz_stream_state.svelte.js';
11
11
 
12
12
  const {
13
13
  stream,
@@ -1 +1 @@
1
- {"version":3,"file":"MdzStream.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/MdzStream.svelte"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,iBAAiB,CAAC;AAGxD,OAAO,EAGL,KAAK,aAAa,EAClB,MAAM,mBAAmB,CAAC;AAC5B,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,8BAA8B,CAAC;AAEhE,KAAK,gBAAgB,GAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,GAAG;IACnF,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AA0BH,QAAA,MAAM,SAAS,sDAAwC,CAAC;AACxD,KAAK,SAAS,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;AAC9C,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"MdzStream.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/MdzStream.svelte"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAG1D,OAAO,EAGL,KAAK,aAAa,EAClB,MAAM,mBAAmB,CAAC;AAC5B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAElE,KAAK,gBAAgB,GAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,GAAG;IACnF,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AA0BH,QAAA,MAAM,SAAS,sDAAwC,CAAC;AACxD,KAAK,SAAS,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;AAC9C,eAAe,SAAS,CAAC"}
@@ -1,23 +1,33 @@
1
1
  <script lang="ts">
2
- import {resolve} from '$app/paths';
2
+ import { DEV } from 'esm-env';
3
+ import { resolve } from '$app/paths';
3
4
 
4
- import {mdz_classify_link, mdz_is_void_element} from './mdz_helpers.js';
5
+ import {
6
+ mdz_classify_link,
7
+ mdz_is_void_element,
8
+ mdz_filter_element_attributes,
9
+ mdz_filter_component_attributes,
10
+ mdz_component_config,
11
+ mdz_format_unregistered_attributes,
12
+ ALLOWED_ELEMENT_ATTRIBUTES
13
+ } from './mdz_helpers.js';
5
14
  import {
6
15
  mdz_components_context,
7
16
  mdz_elements_context,
8
17
  mdz_base_context,
9
18
  mdz_code_context,
10
- mdz_codeblock_context,
19
+ mdz_codeblock_context
11
20
  } from './mdz_contexts.js';
12
- import type {MdzStreamNode} from './mdz_stream_state.svelte.js';
13
- import type {MdzTableAlign} from './mdz.js';
21
+ import type { MdzStreamNode } from './mdz_stream_state.svelte.js';
22
+ import type { MdzAttribute, MdzTableAlign } from './mdz.js';
14
23
 
15
24
  const {
16
25
  node,
17
- nodes,
18
- }: // exactly one of `node`/`nodes` — the array form renders a whole tree
26
+ nodes
27
+ }:
28
+ // exactly one of `node`/`nodes` — the array form renders a whole tree
19
29
  // through this single component instance (used by `MdzStream`)
20
- {node: MdzStreamNode; nodes?: undefined} | {node?: undefined; nodes: Array<MdzStreamNode>} =
30
+ { node: MdzStreamNode; nodes?: undefined } | { node?: undefined; nodes: Array<MdzStreamNode> } =
21
31
  $props();
22
32
 
23
33
  const get_components = mdz_components_context.get_maybe();
@@ -26,6 +36,11 @@
26
36
  const get_code = mdz_code_context.get_maybe();
27
37
  const get_codeblock = mdz_codeblock_context.get_maybe();
28
38
 
39
+ // `resolve()`'s pathname branch, widened to runtime strings: the app's `Path` union
40
+ // only types known routes, and mdz references are authored content. Sound because
41
+ // `mdz_classify_link` strips the leading slash, so the call never takes the route-id branch.
42
+ const resolve_pathname = resolve as (pathname: string) => string;
43
+
29
44
  // While a Code/Codeblock container is open, streamed text accumulates in
30
45
  // `children`; `MdzStreamState` collapses it into `content` at close. Joining
31
46
  // the children makes the content visible as it streams instead of popping in
@@ -33,6 +48,11 @@
33
48
  // it's identical, the children are just retained in the render tree).
34
49
  const streaming_content = (n: MdzStreamNode): string =>
35
50
  n.content || n.children.map((c) => c.content).join('');
51
+
52
+ // the boundary renders the placeholder silently, so surface the cause in DEV
53
+ const on_component_error = DEV
54
+ ? (error: unknown) => console.error('mdz: component failed to render', error)
55
+ : undefined;
36
56
  </script>
37
57
 
38
58
  <!-- The tree renders through recursive snippets rather than recursive
@@ -47,30 +67,48 @@ tree instead of per node. -->
47
67
  {#snippet render_node(node: MdzStreamNode)}
48
68
  {#if node.type === 'Element'}
49
69
  {@const element_config = get_elements?.()?.get(node.name ?? '')}
50
- {#if element_config !== undefined}
70
+ {#if element_config === true}
71
+ {@const attrs = mdz_filter_element_attributes(
72
+ node.name ?? '',
73
+ node.attributes ?? [],
74
+ ALLOWED_ELEMENT_ATTRIBUTES
75
+ )}
51
76
  {#if mdz_is_void_element(node.name ?? '')}
52
77
  <!-- void elements cannot have content — any parsed children are dropped -->
53
- <svelte:element this={node.name} />
78
+ <svelte:element this={node.name} {...attrs} />
54
79
  {:else}
55
- <svelte:element this={node.name}>
80
+ <svelte:element this={node.name} {...attrs}>
56
81
  {#if node.children.length > 0}
57
82
  {@render render_children(node.children)}
58
83
  {/if}
59
84
  </svelte:element>
60
85
  {/if}
61
86
  {:else}
62
- {@render render_unregistered_tag(node.name ?? '', node.children)}
87
+ {@render render_unregistered_tag(node.name ?? '', node.attributes ?? [], node.children)}
63
88
  {/if}
64
89
  {:else if node.type === 'Component'}
65
- {@const Component = get_components?.()?.get(node.name ?? '')}
66
- {#if Component}
67
- <Component>
68
- {#if node.children.length > 0}
69
- {@render render_children(node.children)}
70
- {/if}
71
- </Component>
90
+ {@const entry = get_components?.()?.get(node.name ?? '')}
91
+ {#if entry}
92
+ {@const config = mdz_component_config(entry)}
93
+ {@const props = mdz_filter_component_attributes(
94
+ node.name ?? '',
95
+ node.attributes ?? [],
96
+ config.props
97
+ )}
98
+ <!-- a per-node boundary: a component that throws (say on an unexpected prop
99
+ value) degrades to its literal placeholder instead of taking down the tree -->
100
+ <svelte:boundary onerror={on_component_error}>
101
+ <config.component {...props}>
102
+ {#if node.children.length > 0}
103
+ {@render render_children(node.children)}
104
+ {/if}
105
+ </config.component>
106
+ {#snippet failed()}
107
+ {@render render_unregistered_tag(node.name ?? '', node.attributes ?? [], node.children)}
108
+ {/snippet}
109
+ </svelte:boundary>
72
110
  {:else}
73
- {@render render_unregistered_tag(node.name ?? '', node.children)}
111
+ {@render render_unregistered_tag(node.name ?? '', node.attributes ?? [], node.children)}
74
112
  {/if}
75
113
  {:else if node.type === 'Text'}
76
114
  {node.content}
@@ -93,13 +131,14 @@ tree instead of per node. -->
93
131
  {#if link.kind === 'unsafe'}
94
132
  {@render render_children(node.children)}
95
133
  {:else if link.kind === 'resolve'}
96
- <a href={resolve(link.href as any)}>{@render render_children(node.children)}</a>
134
+ <a href={resolve_pathname(link.path)}>{@render render_children(node.children)}</a>
97
135
  {:else if link.kind === 'external'}
98
136
  <!-- eslint-disable-next-line svelte/no-navigation-without-resolve -->
99
- <a href={link.href} target="_blank" rel="noopener">{@render render_children(node.children)}</a
100
- >
137
+ <a href={link.href} target="_blank" rel="noopener">
138
+ {@render render_children(node.children)}
139
+ </a>
101
140
  {:else}
102
- <!-- fragment/query/relative/bare references skip resolve() (it accepts only absolute paths) -->
141
+ <!-- fragment/query/relative/bare references aren't under the base, so they skip resolve() -->
103
142
  <!-- eslint-disable-next-line svelte/no-navigation-without-resolve -->
104
143
  <a href={link.href}>{@render render_children(node.children)}</a>
105
144
  {/if}
@@ -127,14 +166,18 @@ tree instead of per node. -->
127
166
  <table>
128
167
  {#if header_row}
129
168
  <thead>
130
- <tr>{@render render_cells(header_row, 'th', align)}</tr>
169
+ <tr>
170
+ {@render render_cells(header_row, 'th', align)}
171
+ </tr>
131
172
  </thead>
132
173
  {/if}
133
174
  {#if node.children.length > (header_row ? 1 : 0)}
134
175
  <tbody>
135
176
  {#each node.children as row (row.id)}
136
177
  {#if !row.header}
137
- <tr>{@render render_cells(row, 'td', align)}</tr>
178
+ <tr>
179
+ {@render render_cells(row, 'td', align)}
180
+ </tr>
138
181
  {/if}
139
182
  {/each}
140
183
  </tbody>
@@ -173,12 +216,17 @@ tree instead of per node. -->
173
216
  {/each}
174
217
  {/snippet}
175
218
 
176
- {#snippet render_unregistered_tag(name: string, children: Array<MdzStreamNode>)}
219
+ {#snippet render_unregistered_tag(
220
+ name: string,
221
+ attributes: Array<MdzAttribute>,
222
+ children: Array<MdzStreamNode>
223
+ )}
224
+ {@const formatted = mdz_format_unregistered_attributes(attributes)}
177
225
  {#if children.length > 0}
178
- <code class="color_c_50">&lt;{name}&gt;</code>{@render render_children(children)}<code
179
- class="color_c_50">&lt;/{name}&gt;</code
180
- >
226
+ <code class="color_c_50">&lt;{name}{formatted}&gt;</code>{@render render_children(
227
+ children
228
+ )}<code class="color_c_50">&lt;/{name}&gt;</code>
181
229
  {:else}
182
- <code class="color_c_50">&lt;{name} /&gt;</code>
230
+ <code class="color_c_50">&lt;{name}{formatted} /&gt;</code>
183
231
  {/if}
184
232
  {/snippet}
@@ -1,6 +1,5 @@
1
1
  import type { MdzStreamNode } from './mdz_stream_state.svelte.js';
2
- type $$ComponentProps = // exactly one of `node`/`nodes` — the array form renders a whole tree
3
- {
2
+ type $$ComponentProps = {
4
3
  node: MdzStreamNode;
5
4
  nodes?: undefined;
6
5
  } | {
@@ -1 +1 @@
1
- {"version":3,"file":"MdzStreamNodeView.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/MdzStreamNodeView.svelte"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,8BAA8B,CAAC;AAG/D,KAAK,gBAAgB,GAEpB,AAFwB,sEAAsE;AAE9F;IAAC,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,CAAA;CAAC,GAAG;IAAC,IAAI,CAAC,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,CAAA;CAAC,CAAC;AA4K7F,QAAA,MAAM,iBAAiB,sDAAwC,CAAC;AAChE,KAAK,iBAAiB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC9D,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"MdzStreamNodeView.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/MdzStreamNodeView.svelte"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAGjE,KAAK,gBAAgB,GAGpB;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,IAAI,CAAC,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,CAAA;CAAE,CAAC;AAkNjG,QAAA,MAAM,iBAAiB,sDAAwC,CAAC;AAChE,KAAK,iBAAiB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC9D,eAAe,iBAAiB,CAAC"}
@@ -14,6 +14,6 @@ export function create_context(fallback) {
14
14
  },
15
15
  get_maybe,
16
16
  // this is typesafe, so no runtime check:
17
- set: (value = fallback?.()) => setContext(key, value),
17
+ set: (value = fallback?.()) => setContext(key, value)
18
18
  };
19
19
  }
package/dist/mdz.d.ts CHANGED
@@ -45,7 +45,7 @@
45
45
  * ## Status
46
46
  *
47
47
  * Pre-stable — breaking changes are expected as the dialect matures.
48
- * Next: attributes, editing.
48
+ * Next: editing.
49
49
  *
50
50
  * @module
51
51
  */
@@ -194,16 +194,27 @@ export interface MdzNodeTableCell extends MdzNodeBase {
194
194
  /** Inline content only (text, bold, italic, strikethrough, code, links). */
195
195
  children: Array<MdzNode>;
196
196
  }
197
+ export interface MdzAttribute {
198
+ name: string;
199
+ /** `true` for bare boolean shorthand (`disabled` ≡ `disabled={true}`). */
200
+ value: string | true;
201
+ start: number;
202
+ end: number;
203
+ }
197
204
  export interface MdzNodeElement extends MdzNodeBase {
198
205
  type: 'Element';
199
206
  /** HTML element name (e.g. `div`, `span`, `aside`). */
200
207
  name: string;
208
+ /** Parsed tag attributes; always present, possibly empty. */
209
+ attributes: Array<MdzAttribute>;
201
210
  children: Array<MdzNode>;
202
211
  }
203
212
  export interface MdzNodeComponent extends MdzNodeBase {
204
213
  type: 'Component';
205
214
  /** Svelte component name (e.g. `Alert`, `Card`). */
206
215
  name: string;
216
+ /** Parsed tag attributes; always present, possibly empty. */
217
+ attributes: Array<MdzAttribute>;
207
218
  children: Array<MdzNode>;
208
219
  }
209
220
  //# sourceMappingURL=mdz.d.ts.map
package/dist/mdz.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mdz.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/mdz.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mdz.d.ts","sourceRoot":"../src/lib/","sources":["../src/lib/mdz.ts"],"names":[],"mappings":"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"}
package/dist/mdz.js CHANGED
@@ -45,7 +45,7 @@
45
45
  * ## Status
46
46
  *
47
47
  * Pre-stable — breaking changes are expected as the dialect matures.
48
- * Next: attributes, editing.
48
+ * Next: editing.
49
49
  *
50
50
  * @module
51
51
  */