@markitdownjs/xml 0.1.2 → 0.1.3
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@markitdownjs/xml",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "XML converter for MarkItDownJS",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"dist"
|
|
18
18
|
],
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@markitdownjs/shared": "0.
|
|
20
|
+
"@markitdownjs/shared": "0.3.0"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
23
|
"typescript": "^5.5.0"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"xml-converter.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/xml-converter.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import { XmlConverter } from '../xml-converter.js';
|
|
3
|
-
describe('XmlConverter', () => {
|
|
4
|
-
const converter = new XmlConverter();
|
|
5
|
-
it('should detect XML by MIME type', async () => {
|
|
6
|
-
expect(await converter.canConvert({ data: '', mimeType: 'application/xml' })).toBe(true);
|
|
7
|
-
expect(await converter.canConvert({ data: '', mimeType: 'text/xml' })).toBe(true);
|
|
8
|
-
});
|
|
9
|
-
it('should detect XML by extension', async () => {
|
|
10
|
-
expect(await converter.canConvert({ data: '', fileName: 'test.xml' })).toBe(true);
|
|
11
|
-
expect(await converter.canConvert({ data: '', fileName: 'feed.rss' })).toBe(true);
|
|
12
|
-
expect(await converter.canConvert({ data: '', fileName: 'feed.atom' })).toBe(true);
|
|
13
|
-
});
|
|
14
|
-
it('should detect XML by content', async () => {
|
|
15
|
-
expect(await converter.canConvert({ data: '<?xml version="1.0"?>\n<root/>' })).toBe(true);
|
|
16
|
-
expect(await converter.canConvert({ data: '<root><child/></root>' })).toBe(true);
|
|
17
|
-
});
|
|
18
|
-
it('should reject non-XML content', async () => {
|
|
19
|
-
expect(await converter.canConvert({ data: 'Hello world', fileName: 'test.txt' })).toBe(false);
|
|
20
|
-
});
|
|
21
|
-
it('should convert simple XML to markdown', async () => {
|
|
22
|
-
const result = await converter.convert({
|
|
23
|
-
data: '<root><name>Test</name></root>',
|
|
24
|
-
mimeType: 'application/xml',
|
|
25
|
-
});
|
|
26
|
-
expect(result.markdown).toBeDefined();
|
|
27
|
-
expect(result.ast).toBeDefined();
|
|
28
|
-
expect(result.ast.type).toBe('document');
|
|
29
|
-
});
|
|
30
|
-
it('should convert RSS feed to markdown with entries', async () => {
|
|
31
|
-
const rss = `<?xml version="1.0"?>
|
|
32
|
-
<rss version="2.0">
|
|
33
|
-
<channel>
|
|
34
|
-
<title>My Blog</title>
|
|
35
|
-
<item>
|
|
36
|
-
<title>First Post</title>
|
|
37
|
-
<link>https://example.com/1</link>
|
|
38
|
-
<description>This is the first post</description>
|
|
39
|
-
</item>
|
|
40
|
-
<item>
|
|
41
|
-
<title>Second Post</title>
|
|
42
|
-
<link>https://example.com/2</link>
|
|
43
|
-
<description>Another post</description>
|
|
44
|
-
</item>
|
|
45
|
-
</channel>
|
|
46
|
-
</rss>`;
|
|
47
|
-
const result = await converter.convert({ data: rss, mimeType: 'application/rss+xml' });
|
|
48
|
-
expect(result.markdown).toContain('My Blog');
|
|
49
|
-
expect(result.markdown).toContain('First Post');
|
|
50
|
-
expect(result.markdown).toContain('Second Post');
|
|
51
|
-
expect(result.markdown).toContain('https://example.com/1');
|
|
52
|
-
expect(result.headings.length).toBeGreaterThan(0);
|
|
53
|
-
});
|
|
54
|
-
it('should convert Atom feed', async () => {
|
|
55
|
-
const atom = `<?xml version="1.0"?>
|
|
56
|
-
<feed xmlns="http://www.w3.org/2005/Atom">
|
|
57
|
-
<title>Atom Feed</title>
|
|
58
|
-
<entry>
|
|
59
|
-
<title>Entry 1</title>
|
|
60
|
-
<link href="https://example.com/e1"/>
|
|
61
|
-
<summary>Summary of entry 1</summary>
|
|
62
|
-
</entry>
|
|
63
|
-
</feed>`;
|
|
64
|
-
const result = await converter.convert({ data: atom, mimeType: 'application/atom+xml' });
|
|
65
|
-
expect(result.markdown).toContain('Atom Feed');
|
|
66
|
-
expect(result.markdown).toContain('Entry 1');
|
|
67
|
-
});
|
|
68
|
-
it('should include XML source code block', async () => {
|
|
69
|
-
const result = await converter.convert({
|
|
70
|
-
data: '<root><child>value</child></root>',
|
|
71
|
-
mimeType: 'application/xml',
|
|
72
|
-
});
|
|
73
|
-
expect(result.markdown).toContain('```xml');
|
|
74
|
-
});
|
|
75
|
-
it('should throw on invalid XML', async () => {
|
|
76
|
-
await expect(converter.convert({ data: '<unclosed>', mimeType: 'application/xml' })).rejects.toThrow('XML parse error');
|
|
77
|
-
});
|
|
78
|
-
});
|
|
79
|
-
//# sourceMappingURL=xml-converter.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"xml-converter.test.js","sourceRoot":"","sources":["../../src/__tests__/xml-converter.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,MAAM,SAAS,GAAG,IAAI,YAAY,EAAE,CAAC;IAErC,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAC9C,MAAM,CAAC,MAAM,SAAS,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzF,MAAM,CAAC,MAAM,SAAS,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAC9C,MAAM,CAAC,MAAM,SAAS,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClF,MAAM,CAAC,MAAM,SAAS,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClF,MAAM,CAAC,MAAM,SAAS,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,CAAC,MAAM,SAAS,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,gCAAgC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1F,MAAM,CAAC,MAAM,SAAS,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,CAAC,MAAM,SAAS,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChG,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC;YACrC,IAAI,EAAE,gCAAgC;YACtC,QAAQ,EAAE,iBAAiB;SAC5B,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QACjC,MAAM,CAAC,MAAM,CAAC,GAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QAChE,MAAM,GAAG,GAAG;;;;;;;;;;;;;;;OAeT,CAAC;QACJ,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,qBAAqB,EAAE,CAAC,CAAC;QACvF,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAChD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACjD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;QAC3D,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,IAAI,GAAG;;;;;;;;QAQT,CAAC;QACL,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,sBAAsB,EAAE,CAAC,CAAC;QACzF,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAC/C,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC;YACrC,IAAI,EAAE,mCAAmC;YACzC,QAAQ,EAAE,iBAAiB;SAC5B,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;QAC3C,MAAM,MAAM,CACV,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC,CACvE,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|