mdast-util-to-vnode 0.1.0 → 0.3.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.
package/README.md CHANGED
@@ -92,7 +92,11 @@ This package exports the identifier `toVNode`. There is no default export.
92
92
  Support passing in custom Vue components to override mdast nodes.
93
93
 
94
94
  ```ts
95
- interface ToVNodeOptions {
96
- components?: Partial<Record<Nodes['type'], Component>>
95
+ export type ComponentReturn = [Component, Record<string, any> | undefined]
96
+
97
+ export interface ToVNodeOptions {
98
+ components?: Partial<Record<Nodes['type'], Component |
99
+ ComponentReturn |
100
+ ((node: Node) => ComponentReturn)>>
97
101
  }
98
102
  ```
package/dist/index.d.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  import { Node, Nodes, Root } from 'mdast';
2
2
  import { Component, VNode } from 'vue';
3
+ export type ComponentReturn = Component | [Component, Record<string, any> | undefined];
3
4
  export interface ToVNodeOptions {
4
- components?: Partial<Record<Nodes['type'], Component>>;
5
+ components?: Partial<Record<Nodes['type'], ComponentReturn | ((node: Node) => ComponentReturn)>>;
5
6
  }
6
7
  export declare function toVNode(node: Root, options?: ToVNodeOptions): VNode<import('vue').RendererNode, import('vue').RendererElement, {
7
8
  [key: string]: any;
package/dist/index.js CHANGED
@@ -1,176 +1,212 @@
1
- import { h as e, Text as i } from "vue";
2
- function u(t, l) {
3
- return l.reduce((r, c) => (r[c] = t[c], r), {});
1
+ import { h as t, Text as b } from "vue";
2
+ function f(r) {
3
+ return Array.isArray(r);
4
4
  }
5
- function p(t, l = {}) {
6
- return s(t, l);
5
+ function y(r) {
6
+ return typeof r == "object" && r !== null;
7
7
  }
8
- function s(t, l = {}) {
9
- var c;
10
- const r = (c = l.components) == null ? void 0 : c[t.type];
11
- switch (t.type) {
8
+ function m(r) {
9
+ return typeof r == "function";
10
+ }
11
+ function n(r) {
12
+ return y(r) && !f(r) && !m(r);
13
+ }
14
+ function s(r, ...u) {
15
+ if (!n(r))
16
+ return r;
17
+ const e = u.filter((l) => n(l));
18
+ if (!e.length)
19
+ return r;
20
+ const a = e.shift();
21
+ for (const l in a)
22
+ n(a[l]) ? (Object.prototype.hasOwnProperty.call(r, l) || Object.assign(r, { [l]: {} }), s(r[l], a[l])) : Object.assign(r, { [l]: a[l] });
23
+ return s(r, ...e);
24
+ }
25
+ function i(r, u) {
26
+ return u.reduce((e, a) => (e[a] = r[a], e), {});
27
+ }
28
+ function g(r, u = {}) {
29
+ return h(r, u);
30
+ }
31
+ function h(r, u = {}) {
32
+ var l;
33
+ let e = (l = u.components) == null ? void 0 : l[r.type], a = {};
34
+ switch (m(e) && (e = e(r)), f(e) && (a = e[1] ?? {}, e = e[0]), r.type) {
12
35
  case "blockquote":
13
- return e(
14
- r ?? "blockquote",
15
- a(t)
36
+ return t(
37
+ e ?? "blockquote",
38
+ a,
39
+ c(r, u)
16
40
  );
17
41
  case "break":
18
- return e(
19
- r ?? "br"
42
+ return t(
43
+ e ?? "br",
44
+ a
20
45
  );
21
46
  case "code":
22
- return r ? e(
23
- r,
24
- u(t, ["lang", "meta", "value"])
25
- ) : e(
47
+ return e ? t(
48
+ e,
49
+ s(i(r, ["lang", "meta", "value"]), a)
50
+ ) : t(
26
51
  "pre",
27
52
  {
28
- dataLang: t.lang,
29
- dataMeta: t.meta
53
+ dataLang: r.lang,
54
+ dataMeta: r.meta
30
55
  },
31
- e("code", t.value)
56
+ t("code", r.value)
32
57
  );
33
58
  case "delete":
34
- return e(
35
- r ?? "s",
36
- a(t)
59
+ return t(
60
+ e ?? "s",
61
+ a,
62
+ c(r, u)
37
63
  );
38
64
  case "emphasis":
39
- return e(
40
- r ?? "em",
41
- a(t)
65
+ return t(
66
+ e ?? "em",
67
+ a,
68
+ c(r, u)
42
69
  );
43
70
  case "heading":
44
- return r ? e(
45
- r,
46
- u(t, ["depth"])
47
- ) : e(
48
- `h${t.depth}`,
49
- a(t)
71
+ return e ? t(
72
+ e,
73
+ s(i(r, ["depth"]), a)
74
+ ) : t(
75
+ `h${r.depth}`,
76
+ c(r, u)
50
77
  );
51
78
  case "html":
52
- return r ? e(
53
- r,
54
- u(t, ["value"])
55
- ) : e(
79
+ return e ? t(
80
+ e,
81
+ s(i(r, ["value"]), a)
82
+ ) : t(
56
83
  "div",
57
84
  {
58
- innerHTML: t.value
85
+ innerHTML: r.value
59
86
  }
60
87
  );
61
88
  case "image":
62
- return r ? e(
63
- r,
64
- u(t, ["url", "alt", "title"])
65
- ) : e(
89
+ return e ? t(
90
+ e,
91
+ s(i(r, ["url", "alt", "title"]), a)
92
+ ) : t(
66
93
  "img",
67
94
  {
68
- src: t.url,
69
- alt: t.alt,
70
- title: t.title
95
+ src: r.url,
96
+ alt: r.alt,
97
+ title: r.title
71
98
  }
72
99
  );
73
100
  case "inlineCode":
74
- return r ? e(
75
- r,
76
- u(t, ["value"])
77
- ) : e(
101
+ return e ? t(
102
+ e,
103
+ s(i(r, ["value"]), a)
104
+ ) : t(
78
105
  "code",
79
- t.value
106
+ r.value
80
107
  );
81
108
  case "link":
82
- return r ? e(
83
- r,
84
- u(t, ["url", "title"]),
85
- a(t)
86
- ) : e(
109
+ return e ? t(
110
+ e,
111
+ s(i(r, ["url", "title"]), a),
112
+ c(r, u)
113
+ ) : t(
87
114
  "a",
88
115
  {
89
- href: t.url
116
+ href: r.url
90
117
  },
91
- a(t)
118
+ c(r, u)
92
119
  );
93
120
  case "list":
94
- return r ? e(
95
- r,
96
- u(t, ["ordered", "spread", "start"]),
97
- a(t)
98
- ) : e(
99
- t.ordered ? "ol" : "ul",
100
- a(t)
121
+ return e ? t(
122
+ e,
123
+ s(i(r, ["ordered", "spread", "start"]), a),
124
+ c(r, u)
125
+ ) : t(
126
+ r.ordered ? "ol" : "ul",
127
+ c(r, u)
101
128
  );
102
129
  case "listItem":
103
- return r ? e(
104
- r,
105
- u(t, ["checked", "spread"]),
106
- a(t)
107
- ) : e(
130
+ return e ? t(
131
+ e,
132
+ s(i(r, ["checked", "spread"]), a),
133
+ c(r, u)
134
+ ) : t(
108
135
  "li",
109
- a(t)
136
+ c(r, u)
110
137
  );
111
138
  case "paragraph":
112
- return e(
113
- r ?? "p",
114
- a(t)
139
+ return t(
140
+ e ?? "p",
141
+ a,
142
+ c(r, u)
115
143
  );
116
144
  case "root":
117
- return e(
118
- r ?? "div",
119
- a(t)
145
+ return t(
146
+ e ?? "div",
147
+ a,
148
+ c(r, u)
120
149
  );
121
150
  case "strong":
122
- return e(
123
- r ?? "strong",
124
- a(t)
151
+ return t(
152
+ e ?? "strong",
153
+ a,
154
+ c(r, u)
125
155
  );
126
156
  case "table":
127
- return e(
128
- r ?? "table",
129
- u(t, ["align"]),
130
- a(t)
157
+ return t(
158
+ e ?? "table",
159
+ s(i(r, ["align"]), a),
160
+ c(r, u)
131
161
  );
132
162
  case "tableCell":
133
- return e(
134
- r ?? "td",
135
- a(t)
163
+ return t(
164
+ e ?? "td",
165
+ a,
166
+ c(r, u)
136
167
  );
137
168
  case "tableRow":
138
- return e(
139
- r ?? "th",
140
- a(t)
169
+ return t(
170
+ e ?? "th",
171
+ a,
172
+ c(r, u)
141
173
  );
142
174
  case "text":
143
- return e(
144
- i,
145
- t.value
175
+ return t(
176
+ b,
177
+ r.value
146
178
  );
147
179
  case "thematicBreak":
148
- return e(
149
- r ?? "hr"
180
+ return t(
181
+ e ?? "hr",
182
+ a
150
183
  );
151
184
  case "yaml":
152
- return r ? e(
153
- r,
154
- {
155
- lang: "yaml",
156
- value: t.value
157
- }
158
- ) : e(
185
+ return e ? t(
186
+ e,
187
+ s(
188
+ {
189
+ lang: "yaml",
190
+ value: r.value
191
+ },
192
+ a
193
+ )
194
+ ) : t(
159
195
  "pre",
160
196
  {
161
197
  dataLang: "yaml"
162
198
  },
163
- e("code", t.value)
199
+ t("code", r.value)
164
200
  );
165
201
  default:
166
- return e(Comment);
202
+ return t(Comment);
167
203
  }
168
204
  }
169
- function a(t, l = {}) {
170
- var r;
171
- return ((r = t.children) == null ? void 0 : r.map((c) => s(c, l))) ?? [];
205
+ function c(r, u = {}) {
206
+ var e;
207
+ return ((e = r.children) == null ? void 0 : e.map((a) => h(a, u))) ?? [];
172
208
  }
173
209
  export {
174
- s as createVNode,
175
- p as toVNode
210
+ h as createVNode,
211
+ g as toVNode
176
212
  };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "mdast-util-to-vnode",
3
3
  "type": "module",
4
- "version": "0.1.0",
4
+ "version": "0.3.0",
5
5
  "private": false,
6
6
  "packageManager": "pnpm@10.5.2+sha512.da9dc28cd3ff40d0592188235ab25d3202add8a207afbedc682220e4a0029ffbff4562102b9e6e46b4e3f9e8bd53e6d05de48544b0c57d4b0179e22c76d1199b",
7
7
  "description": "mdast utility to get the vue vnode",
@@ -38,8 +38,6 @@
38
38
  "lint": "eslint .",
39
39
  "format": "eslint --fix .",
40
40
  "build": "vite build",
41
- "test": "vitest",
42
- "coverage": "vitest run --coverage",
43
41
  "commit": "git-cz",
44
42
  "release": "bumpp",
45
43
  "prepare": "husky"
@@ -54,8 +52,6 @@
54
52
  "@commitlint/cz-commitlint": "^19.6.1",
55
53
  "@types/mdast": "^4.0.4",
56
54
  "@types/node": "22",
57
- "@vitest/coverage-istanbul": "3.0.6",
58
- "@vitest/coverage-v8": "3.0.6",
59
55
  "bumpp": "^9.10.2",
60
56
  "commitizen": "^4.3.1",
61
57
  "eslint": "^9.18.0",
@@ -68,8 +64,7 @@
68
64
  "unplugin-external": "0.1.0-beta.3",
69
65
  "usexx": "^0.1.0",
70
66
  "vite": "^6.1.1",
71
- "vite-plugin-dts": "^4.5.0",
72
- "vitest": "^3.0.6"
67
+ "vite-plugin-dts": "^4.5.0"
73
68
  },
74
69
  "config": {
75
70
  "commitizen": {