html2any 0.0.6 → 0.0.7
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 +16 -26
- package/lib/index.js +30 -42
- package/lib/index.js.map +1 -0
- package/lib/index.mjs +30 -43
- package/lib/index.mjs.map +1 -0
- package/package.json +19 -17
package/README.md
CHANGED
|
@@ -10,19 +10,7 @@ But I also want to render the whole html easily rather than parse it manually.
|
|
|
10
10
|
|
|
11
11
|
Now `html2any` help you to render html string. It not only parses your html but also gives you ability to transform it from origin to the dest.
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
### Theory
|
|
15
|
-
|
|
16
|
-
Use `html2any` to construct an AST of html string, then convert each node recursively with `rule` passed to transform function.
|
|
17
|
-
|
|
18
|
-
For example, we translate `<p>` tag into React Native component `<Text style={styles.paragraph}>` with the prepared styles. Then decode the p tag' s content to avoid html entities mess up.
|
|
19
|
-
|
|
20
|
-
### Demo
|
|
21
|
-
|
|
22
|
-
- [Web React Online Demo](https://huozhi.github.io/html2any-web-demo/)
|
|
23
|
-
- React Native demo: https://github.com/huozhi/html2any-rn-demo
|
|
24
|
-
|
|
25
|
-
### Documentation
|
|
13
|
+
### API
|
|
26
14
|
|
|
27
15
|
html2any provide following APIs
|
|
28
16
|
|
|
@@ -39,29 +27,29 @@ html2any provide following APIs
|
|
|
39
27
|
- html2any
|
|
40
28
|
> Convert the html/xml to the final form directly.
|
|
41
29
|
|
|
42
|
-
|
|
30
|
+
### Usage
|
|
43
31
|
|
|
44
|
-
|
|
32
|
+
```
|
|
33
|
+
npm i -S html2any
|
|
34
|
+
```
|
|
45
35
|
|
|
46
36
|
```js
|
|
47
|
-
import html2any, {parse, transform} from 'html2any'
|
|
37
|
+
import html2any, { parse, transform } from 'html2any'
|
|
48
38
|
|
|
49
|
-
const html =
|
|
50
|
-
<div>123</div>
|
|
51
|
-
`
|
|
39
|
+
const html = escapeHTMLEntity(`<div>123</div>`)
|
|
52
40
|
|
|
53
41
|
const ast = parse(html)[0]
|
|
54
42
|
|
|
55
43
|
function rule(node, children) {
|
|
56
|
-
if (node
|
|
57
|
-
return
|
|
44
|
+
if (typeof node === 'string') {
|
|
45
|
+
return node
|
|
58
46
|
} else {
|
|
59
|
-
return node
|
|
47
|
+
return <div>{node}</div>
|
|
60
48
|
}
|
|
61
49
|
}
|
|
62
50
|
|
|
63
51
|
const vdom = transform(ast, rule)
|
|
64
|
-
// vdom form of
|
|
52
|
+
// JSX vdom form of html
|
|
65
53
|
// { type: 'div', props: {...}, children: '...' }
|
|
66
54
|
|
|
67
55
|
```
|
|
@@ -72,7 +60,9 @@ Or you can just call html2any directly
|
|
|
72
60
|
const vdom = html2any(html, rule)
|
|
73
61
|
```
|
|
74
62
|
|
|
75
|
-
###
|
|
63
|
+
### How It Works
|
|
64
|
+
|
|
65
|
+
Use `html2any` to construct an AST of html string, then convert each node recursively with `rule` passed to transform function.
|
|
66
|
+
|
|
67
|
+
For example, we translate `<p>` tag into React Native component `<Text style={styles.paragraph}>` with the prepared styles. Then decode the p tag' s content to avoid html entities mess up.
|
|
76
68
|
|
|
77
|
-
Any suggestions or beautifier API you expect, just post issue [here](https://github.com/huozhi/html2any/issues).
|
|
78
|
-
Reporting bugs is welcomed. : )
|
package/lib/index.js
CHANGED
|
@@ -1,16 +1,27 @@
|
|
|
1
|
-
function
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
function transform(ast, rule) {
|
|
2
|
+
function next(node) {
|
|
3
|
+
if (node) {
|
|
4
|
+
if (typeof node === 'string') {
|
|
5
|
+
return rule(node);
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
if (Array.isArray(node)) {
|
|
9
|
+
return node.map(function (n, index) {
|
|
10
|
+
if (typeof n !== 'string') {
|
|
11
|
+
n.index = index; // critical array element index
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
return rule(n, next(n.children));
|
|
15
|
+
});
|
|
16
|
+
} else {
|
|
17
|
+
return rule(node, next(node.children));
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
return null;
|
|
11
22
|
}
|
|
12
23
|
|
|
13
|
-
return
|
|
24
|
+
return next(ast);
|
|
14
25
|
}
|
|
15
26
|
|
|
16
27
|
var voidElementTags = ['area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source', 'track', 'wbr'];
|
|
@@ -112,7 +123,7 @@ function splitTokens(html) {
|
|
|
112
123
|
|
|
113
124
|
function tokenize(html) {
|
|
114
125
|
return splitTokens(html).map(function (s) {
|
|
115
|
-
return s.replace(/^\n
|
|
126
|
+
return s.replace(/^\n+$/g, '');
|
|
116
127
|
}).map(function (s) {
|
|
117
128
|
return s.trim();
|
|
118
129
|
}).filter(Boolean).map(makeToken);
|
|
@@ -140,7 +151,9 @@ function filterProps(node) {
|
|
|
140
151
|
}
|
|
141
152
|
|
|
142
153
|
return ['name', 'children', 'attributes'].reduce(function (r, c) {
|
|
143
|
-
|
|
154
|
+
var _Object$assign;
|
|
155
|
+
|
|
156
|
+
return Object.assign({}, r, (_Object$assign = {}, _Object$assign[c] = node[c], _Object$assign));
|
|
144
157
|
}, {});
|
|
145
158
|
}
|
|
146
159
|
|
|
@@ -175,36 +188,11 @@ function parse(src) {
|
|
|
175
188
|
return tree.children;
|
|
176
189
|
}
|
|
177
190
|
|
|
178
|
-
function
|
|
179
|
-
function next(node) {
|
|
180
|
-
if (node) {
|
|
181
|
-
if (typeof node === 'string') {
|
|
182
|
-
return rule(node);
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
if (Array.isArray(node)) {
|
|
186
|
-
return node.map(function (n, index) {
|
|
187
|
-
if (typeof n !== 'string') {
|
|
188
|
-
n.index = index; // critical array element index
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
return rule(n, next(n.children));
|
|
192
|
-
});
|
|
193
|
-
} else {
|
|
194
|
-
return rule(node, next(node.children));
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
return null;
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
return next(ast);
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
var html2any = function html2any(html, rule) {
|
|
191
|
+
function html2any(html, rule) {
|
|
205
192
|
return transform(parse(html)[0], rule);
|
|
206
|
-
}
|
|
193
|
+
}
|
|
207
194
|
|
|
208
|
-
exports
|
|
195
|
+
exports['default'] = html2any;
|
|
209
196
|
exports.parse = parse;
|
|
210
197
|
exports.transform = transform;
|
|
198
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/transform.js","../src/utils.js","../src/tokenize.js","../src/parse.js","../src/index.js"],"sourcesContent":["function transform(ast, rule) {\n function next(node) {\n if (node) {\n if (typeof node === 'string') {\n return rule(node)\n }\n if (Array.isArray(node)) {\n return node.map((n, index) => {\n if (typeof n !== 'string') {\n n.index = index // critical array element index\n }\n return rule(n, next(n.children))\n })\n } else {\n return rule(node, next(node.children))\n }\n }\n return null\n }\n return next(ast)\n}\n\nexport default transform\n","const voidElementTags = [\n 'area',\n 'base',\n 'br',\n 'col',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr',\n]\n\nfunction isSelfClose(tagName) {\n return voidElementTags.indexOf(tagName) > -1\n}\n\nfunction isPair(tagX, tagY) {\n return tagX.name === tagY.name && tagX.type === 'start' && tagY.type === 'end'\n}\n\nexport default { isPair, isSelfClose }\n","import utils from './utils'\n\n// assuming that quato always following equation - `=\"\"`\nconst ATTR_FIND = /((^\\w|\\s+)[a-zA-Z-:]+)(=\"[^\"]+\"|\\s+|\\s*$)?/\n\nfunction extraAttrs(str) {\n let i = 0\n const attrs = {}\n while (i < str.length) {\n const suffix = str.slice(i)\n const match = ATTR_FIND.exec(suffix)\n if (!match || !match[1]) {\n break\n }\n const result = match[0]\n let key = match[1]\n let value = match[3]\n\n key = key.trim()\n value = value && value.trim()\n\n attrs[key] = (value && value[0] === '=') ? value.slice(2, -1) : true\n i += result.length\n }\n return attrs\n}\n\nfunction makeToken(tag) {\n const isTag = tag[0] === '<' && tag[tag.length - 1] === '>'\n\n if (!isTag) {\n return {\n type: 'string',\n value: tag,\n }\n } else if (tag.startsWith('</')) {\n return {\n type: 'end',\n name: tag.slice(2, -1),\n }\n } else {\n const match = tag.match(/<([\\w+:?\\w*]+)\\s*([^>]*)/)\n const tagName = match[1]\n const tagBody = match[2]\n return {\n type: (utils.isSelfClose(tagName) || tagBody[tagBody.length - 1] === '/') ? 'self-close' : 'start',\n name: tagName,\n attributes: extraAttrs(tagBody),\n }\n }\n}\n\nfunction splitTokens(html) {\n let i = 0\n let j = 0\n const tokens = []\n while (i < html.length) {\n const curr = html[i]\n if (curr === '<') {\n if (j < i) {\n tokens.push(html.slice(j, i))\n j = i\n }\n let k = i\n while (html[k] !== '>') k++\n tokens.push(html.slice(i, k + 1))\n i = j = k + 1\n continue\n }\n i++\n }\n return tokens\n}\n\nfunction tokenize(html) {\n return splitTokens(html)\n .map(s => s.replace(/^\\n+$/g, ''))\n .map(s => s.trim())\n .filter(Boolean)\n .map(makeToken)\n}\n\nexport default tokenize\n","import tokenize from './tokenize'\nimport utils from './utils'\n\nfunction isEmpty(stack) {\n return stack.length === 0\n}\n\nfunction getTop(stack) {\n return stack[stack.length - 1]\n}\n\nfunction appendChild(node, child) {\n if (!node.children) {\n node.children = []\n }\n node.children.push(filterProps(child))\n}\n\nfunction filterProps(node) {\n if (typeof node === 'string') {\n return node\n }\n return ['name', 'children', 'attributes'].reduce(\n (r, c) => Object.assign({}, r, {[c]: node[c]}),\n {},\n )\n}\n\nfunction parse(src) {\n const tokens = tokenize(src)\n const stack = []\n const tree = {\n type: 'root',\n children: [],\n }\n\n stack.push(tree)\n while (!isEmpty(stack) && !isEmpty(tokens)) {\n const curr = tokens.shift()\n const top = getTop(stack)\n\n if (curr.type === 'string') {\n appendChild(top, curr.value)\n } else if (utils.isPair(top, curr)) {\n const node = stack.pop()\n if (!isEmpty(stack)) {\n appendChild(getTop(stack), node)\n }\n } else if (curr.type === 'self-close') {\n appendChild(top, curr)\n } else if (curr.type === 'start') {\n stack.push(curr)\n }\n }\n return tree.children\n}\n\nexport default parse\n","import transform from './transform'\nimport parse from './parse'\n\nfunction html2any(html, rule) {\n return transform(parse(html)[0], rule)\n}\n\nexport { parse, transform }\nexport default html2any\n"],"names":["transform","ast","rule","next","node","Array","isArray","map","n","index","children","voidElementTags","isSelfClose","tagName","indexOf","isPair","tagX","tagY","name","type","ATTR_FIND","extraAttrs","str","i","attrs","length","suffix","slice","match","exec","result","key","value","trim","makeToken","tag","isTag","startsWith","tagBody","utils","attributes","splitTokens","html","j","tokens","curr","push","k","tokenize","s","replace","filter","Boolean","isEmpty","stack","getTop","appendChild","child","filterProps","reduce","r","c","Object","assign","parse","src","tree","shift","top","pop","html2any"],"mappings":"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"}
|
package/lib/index.mjs
CHANGED
|
@@ -1,16 +1,27 @@
|
|
|
1
|
-
function
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
function transform(ast, rule) {
|
|
2
|
+
function next(node) {
|
|
3
|
+
if (node) {
|
|
4
|
+
if (typeof node === 'string') {
|
|
5
|
+
return rule(node);
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
if (Array.isArray(node)) {
|
|
9
|
+
return node.map(function (n, index) {
|
|
10
|
+
if (typeof n !== 'string') {
|
|
11
|
+
n.index = index; // critical array element index
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
return rule(n, next(n.children));
|
|
15
|
+
});
|
|
16
|
+
} else {
|
|
17
|
+
return rule(node, next(node.children));
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
return null;
|
|
11
22
|
}
|
|
12
23
|
|
|
13
|
-
return
|
|
24
|
+
return next(ast);
|
|
14
25
|
}
|
|
15
26
|
|
|
16
27
|
var voidElementTags = ['area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source', 'track', 'wbr'];
|
|
@@ -112,7 +123,7 @@ function splitTokens(html) {
|
|
|
112
123
|
|
|
113
124
|
function tokenize(html) {
|
|
114
125
|
return splitTokens(html).map(function (s) {
|
|
115
|
-
return s.replace(/^\n
|
|
126
|
+
return s.replace(/^\n+$/g, '');
|
|
116
127
|
}).map(function (s) {
|
|
117
128
|
return s.trim();
|
|
118
129
|
}).filter(Boolean).map(makeToken);
|
|
@@ -140,7 +151,9 @@ function filterProps(node) {
|
|
|
140
151
|
}
|
|
141
152
|
|
|
142
153
|
return ['name', 'children', 'attributes'].reduce(function (r, c) {
|
|
143
|
-
|
|
154
|
+
var _Object$assign;
|
|
155
|
+
|
|
156
|
+
return Object.assign({}, r, (_Object$assign = {}, _Object$assign[c] = node[c], _Object$assign));
|
|
144
157
|
}, {});
|
|
145
158
|
}
|
|
146
159
|
|
|
@@ -175,35 +188,9 @@ function parse(src) {
|
|
|
175
188
|
return tree.children;
|
|
176
189
|
}
|
|
177
190
|
|
|
178
|
-
function
|
|
179
|
-
function next(node) {
|
|
180
|
-
if (node) {
|
|
181
|
-
if (typeof node === 'string') {
|
|
182
|
-
return rule(node);
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
if (Array.isArray(node)) {
|
|
186
|
-
return node.map(function (n, index) {
|
|
187
|
-
if (typeof n !== 'string') {
|
|
188
|
-
n.index = index; // critical array element index
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
return rule(n, next(n.children));
|
|
192
|
-
});
|
|
193
|
-
} else {
|
|
194
|
-
return rule(node, next(node.children));
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
return null;
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
return next(ast);
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
var html2any = function html2any(html, rule) {
|
|
191
|
+
function html2any(html, rule) {
|
|
205
192
|
return transform(parse(html)[0], rule);
|
|
206
|
-
}
|
|
193
|
+
}
|
|
207
194
|
|
|
208
|
-
export default
|
|
209
|
-
|
|
195
|
+
export { html2any as default, parse, transform };
|
|
196
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../src/transform.js","../src/utils.js","../src/tokenize.js","../src/parse.js","../src/index.js"],"sourcesContent":["function transform(ast, rule) {\n function next(node) {\n if (node) {\n if (typeof node === 'string') {\n return rule(node)\n }\n if (Array.isArray(node)) {\n return node.map((n, index) => {\n if (typeof n !== 'string') {\n n.index = index // critical array element index\n }\n return rule(n, next(n.children))\n })\n } else {\n return rule(node, next(node.children))\n }\n }\n return null\n }\n return next(ast)\n}\n\nexport default transform\n","const voidElementTags = [\n 'area',\n 'base',\n 'br',\n 'col',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr',\n]\n\nfunction isSelfClose(tagName) {\n return voidElementTags.indexOf(tagName) > -1\n}\n\nfunction isPair(tagX, tagY) {\n return tagX.name === tagY.name && tagX.type === 'start' && tagY.type === 'end'\n}\n\nexport default { isPair, isSelfClose }\n","import utils from './utils'\n\n// assuming that quato always following equation - `=\"\"`\nconst ATTR_FIND = /((^\\w|\\s+)[a-zA-Z-:]+)(=\"[^\"]+\"|\\s+|\\s*$)?/\n\nfunction extraAttrs(str) {\n let i = 0\n const attrs = {}\n while (i < str.length) {\n const suffix = str.slice(i)\n const match = ATTR_FIND.exec(suffix)\n if (!match || !match[1]) {\n break\n }\n const result = match[0]\n let key = match[1]\n let value = match[3]\n\n key = key.trim()\n value = value && value.trim()\n\n attrs[key] = (value && value[0] === '=') ? value.slice(2, -1) : true\n i += result.length\n }\n return attrs\n}\n\nfunction makeToken(tag) {\n const isTag = tag[0] === '<' && tag[tag.length - 1] === '>'\n\n if (!isTag) {\n return {\n type: 'string',\n value: tag,\n }\n } else if (tag.startsWith('</')) {\n return {\n type: 'end',\n name: tag.slice(2, -1),\n }\n } else {\n const match = tag.match(/<([\\w+:?\\w*]+)\\s*([^>]*)/)\n const tagName = match[1]\n const tagBody = match[2]\n return {\n type: (utils.isSelfClose(tagName) || tagBody[tagBody.length - 1] === '/') ? 'self-close' : 'start',\n name: tagName,\n attributes: extraAttrs(tagBody),\n }\n }\n}\n\nfunction splitTokens(html) {\n let i = 0\n let j = 0\n const tokens = []\n while (i < html.length) {\n const curr = html[i]\n if (curr === '<') {\n if (j < i) {\n tokens.push(html.slice(j, i))\n j = i\n }\n let k = i\n while (html[k] !== '>') k++\n tokens.push(html.slice(i, k + 1))\n i = j = k + 1\n continue\n }\n i++\n }\n return tokens\n}\n\nfunction tokenize(html) {\n return splitTokens(html)\n .map(s => s.replace(/^\\n+$/g, ''))\n .map(s => s.trim())\n .filter(Boolean)\n .map(makeToken)\n}\n\nexport default tokenize\n","import tokenize from './tokenize'\nimport utils from './utils'\n\nfunction isEmpty(stack) {\n return stack.length === 0\n}\n\nfunction getTop(stack) {\n return stack[stack.length - 1]\n}\n\nfunction appendChild(node, child) {\n if (!node.children) {\n node.children = []\n }\n node.children.push(filterProps(child))\n}\n\nfunction filterProps(node) {\n if (typeof node === 'string') {\n return node\n }\n return ['name', 'children', 'attributes'].reduce(\n (r, c) => Object.assign({}, r, {[c]: node[c]}),\n {},\n )\n}\n\nfunction parse(src) {\n const tokens = tokenize(src)\n const stack = []\n const tree = {\n type: 'root',\n children: [],\n }\n\n stack.push(tree)\n while (!isEmpty(stack) && !isEmpty(tokens)) {\n const curr = tokens.shift()\n const top = getTop(stack)\n\n if (curr.type === 'string') {\n appendChild(top, curr.value)\n } else if (utils.isPair(top, curr)) {\n const node = stack.pop()\n if (!isEmpty(stack)) {\n appendChild(getTop(stack), node)\n }\n } else if (curr.type === 'self-close') {\n appendChild(top, curr)\n } else if (curr.type === 'start') {\n stack.push(curr)\n }\n }\n return tree.children\n}\n\nexport default parse\n","import transform from './transform'\nimport parse from './parse'\n\nfunction html2any(html, rule) {\n return transform(parse(html)[0], rule)\n}\n\nexport { parse, transform }\nexport default html2any\n"],"names":["transform","ast","rule","next","node","Array","isArray","map","n","index","children","voidElementTags","isSelfClose","tagName","indexOf","isPair","tagX","tagY","name","type","ATTR_FIND","extraAttrs","str","i","attrs","length","suffix","slice","match","exec","result","key","value","trim","makeToken","tag","isTag","startsWith","tagBody","utils","attributes","splitTokens","html","j","tokens","curr","push","k","tokenize","s","replace","filter","Boolean","isEmpty","stack","getTop","appendChild","child","filterProps","reduce","r","c","Object","assign","parse","src","tree","shift","top","pop","html2any"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,28 +1,30 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "html2any",
|
|
3
|
-
"version": "0.0.
|
|
4
|
-
"description": "
|
|
5
|
-
"main": "lib/index.js",
|
|
6
|
-
"
|
|
7
|
-
|
|
8
|
-
"
|
|
9
|
-
"test:update": "jest -u",
|
|
10
|
-
"build": "rm -rf lib && bun src/index.js"
|
|
3
|
+
"version": "0.0.7",
|
|
4
|
+
"description": "parse html to ast and transform to anything you need",
|
|
5
|
+
"main": "./lib/index.js",
|
|
6
|
+
"exports": {
|
|
7
|
+
"import": "./lib/index.mjs",
|
|
8
|
+
"require": "./lib/index.js"
|
|
11
9
|
},
|
|
12
|
-
"
|
|
13
|
-
"
|
|
10
|
+
"scripts": {
|
|
11
|
+
"test": "yarn node --experimental-vm-modules $(yarn bin jest)",
|
|
12
|
+
"build": "rm -rf lib && bunchee src/index.js"
|
|
14
13
|
},
|
|
15
14
|
"files": [
|
|
16
15
|
"*.md",
|
|
17
16
|
"lib"
|
|
18
17
|
],
|
|
19
|
-
"
|
|
20
|
-
"
|
|
18
|
+
"type": "module",
|
|
19
|
+
"jest": {
|
|
20
|
+
"transform": {}
|
|
21
|
+
},
|
|
22
|
+
"author": "huozhi",
|
|
23
|
+
"license": "MIT",
|
|
21
24
|
"devDependencies": {
|
|
22
|
-
"
|
|
23
|
-
"
|
|
24
|
-
"
|
|
25
|
-
"react": "^
|
|
26
|
-
"react-test-renderer": "^15.6.1"
|
|
25
|
+
"bunchee": "^1.8.2",
|
|
26
|
+
"jest": "^27.4.7",
|
|
27
|
+
"react": "^17.0.2",
|
|
28
|
+
"react-test-renderer": "^17.0.2"
|
|
27
29
|
}
|
|
28
30
|
}
|