@syzlm/ofdparser 0.0.1

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 (213) hide show
  1. package/.babelrc +14 -0
  2. package/.eslintignore +2 -0
  3. package/.eslintrc.json +18 -0
  4. package/.prettierrc.json +9 -0
  5. package/dist/OFD.d.ts +8 -0
  6. package/dist/Pages.d.ts +7 -0
  7. package/dist/RootDocumnet.d.ts +1 -0
  8. package/dist/bundle.cjs.js +64123 -0
  9. package/dist/bundle.esm.js +64115 -0
  10. package/dist/bundle.iife.js +14743 -0
  11. package/dist/bundle.umd.js +64045 -0
  12. package/dist/constant/index.d.ts +7 -0
  13. package/dist/constant.d.ts +6 -0
  14. package/dist/core/ofd-core/Annotations/AnnotationsXml.d.ts +16 -0
  15. package/dist/core/ofd-core/Asn.1Utils.d.ts +47 -0
  16. package/dist/core/ofd-core/Documents/DocumentResXml.d.ts +15 -0
  17. package/dist/core/ofd-core/Documents/DocumnetXml.d.ts +25 -0
  18. package/dist/core/ofd-core/Documents/PublicResXml.d.ts +15 -0
  19. package/dist/core/ofd-core/OFDElement.d.ts +232 -0
  20. package/dist/core/ofd-core/Ofd/OFDXml.d.ts +19 -0
  21. package/dist/core/ofd-core/Pages/PageXml.d.ts +20 -0
  22. package/dist/core/ofd-core/Signatures/Signatures.d.ts +20 -0
  23. package/dist/core/ofd-core/TemplatePages/TemplatePages.d.ts +20 -0
  24. package/dist/core/ofd-core/constant.d.ts +29 -0
  25. package/dist/core/ofd-core/utils.d.ts +21 -0
  26. package/dist/dicom/dicom.d.ts +15 -0
  27. package/dist/dicom/index.d.ts +1 -0
  28. package/dist/errors/ErrorHandle.d.ts +6 -0
  29. package/dist/errors/ErrorMsg.d.ts +16 -0
  30. package/dist/errors/FetchErrors.d.ts +4 -0
  31. package/dist/errors/MimeError.d.ts +4 -0
  32. package/dist/errors/OFDErrors.d.ts +4 -0
  33. package/dist/errors/UnzipErrors.d.ts +4 -0
  34. package/dist/errors/XmlErrors.d.ts +4 -0
  35. package/dist/errors/error-msg.d.ts +9 -0
  36. package/dist/es.d.ts +2 -0
  37. package/dist/index.d.ts +6 -0
  38. package/dist/lib/ParseFile.d.ts +7 -0
  39. package/dist/lib/UnitCoversion.d.ts +31 -0
  40. package/dist/lib/asn1/Asn.1.d.ts +34 -0
  41. package/dist/lib/asn1/Stream.d.ts +27 -0
  42. package/dist/lib/asn1/asn1.d.ts +4 -0
  43. package/dist/lib/asn1/base64.d.ts +4 -0
  44. package/dist/lib/asn1/hex.d.ts +5 -0
  45. package/dist/lib/asn1/index.d.ts +5 -0
  46. package/dist/lib/asn1/int10.d.ts +34 -0
  47. package/dist/lib/asn1/oids.d.ts +2 -0
  48. package/dist/lib/asn1/string-cut.d.ts +2 -0
  49. package/dist/lib/decode-html.d.ts +7 -0
  50. package/dist/lib/fetch.d.ts +17 -0
  51. package/dist/lib/is-element.d.ts +5 -0
  52. package/dist/lib/load-files.d.ts +3 -0
  53. package/dist/lib/load-opentype.d.ts +34 -0
  54. package/dist/lib/load-script.d.ts +1 -0
  55. package/dist/lib/mime.d.ts +8 -0
  56. package/dist/lib/read-buffer.d.ts +2 -0
  57. package/dist/lib/toFixeds.d.ts +7 -0
  58. package/dist/libs/Asn.1Utils.d.ts +47 -0
  59. package/dist/libs/asn1/Asn.1.d.ts +34 -0
  60. package/dist/libs/asn1/Stream.d.ts +27 -0
  61. package/dist/libs/asn1/asn1.d.ts +4 -0
  62. package/dist/libs/asn1/base64.d.ts +4 -0
  63. package/dist/libs/asn1/hex.d.ts +5 -0
  64. package/dist/libs/asn1/index.d.ts +5 -0
  65. package/dist/libs/asn1/int10.d.ts +34 -0
  66. package/dist/libs/asn1/oids.d.ts +2 -0
  67. package/dist/libs/asn1/string-cut.d.ts +2 -0
  68. package/dist/libs/decode-html.d.ts +7 -0
  69. package/dist/libs/fetch.d.ts +17 -0
  70. package/dist/libs/mime.d.ts +8 -0
  71. package/dist/libs/ofdArray.d.ts +10 -0
  72. package/dist/libs/ofdImageObject.d.ts +9 -0
  73. package/dist/libs/ofdLayer.d.ts +3 -0
  74. package/dist/libs/ofdName.d.ts +17 -0
  75. package/dist/libs/ofdPathObject.d.ts +11 -0
  76. package/dist/libs/ofdTextObject.d.ts +6 -0
  77. package/dist/libs/parseAnnotation.d.ts +5 -0
  78. package/dist/libs/parseColor.d.ts +5 -0
  79. package/dist/libs/parsePageArea.d.ts +17 -0
  80. package/dist/libs/parser-elements.d.ts +8 -0
  81. package/dist/libs/parserElements.d.ts +8 -0
  82. package/dist/libs/pipeExtensions.d.ts +4 -0
  83. package/dist/libs/read-buffer.d.ts +2 -0
  84. package/dist/main.d.ts +15 -0
  85. package/dist/ofd/ConverterDpi.d.ts +16 -0
  86. package/dist/ofd/index.d.ts +1 -0
  87. package/dist/ofd/ofd-utils.d.ts +137 -0
  88. package/dist/ofd/ofd.d.ts +35 -0
  89. package/dist/ofd/parse-ofd.d.ts +18 -0
  90. package/dist/ofd/render.d.ts +18 -0
  91. package/dist/ofd/svg-image.d.ts +12 -0
  92. package/dist/ofd/svg-path.d.ts +5 -0
  93. package/dist/ofd/svg-text.d.ts +8 -0
  94. package/dist/ofd.parse.d.ts +6 -0
  95. package/dist/ofd.xml.d.ts +1 -0
  96. package/dist/ofdParse.d.ts +6 -0
  97. package/dist/pipe/annotations.d.ts +13 -0
  98. package/dist/pipe/attachments.d.ts +13 -0
  99. package/dist/pipe/commonData.d.ts +18 -0
  100. package/dist/pipe/customTags.d.ts +14 -0
  101. package/dist/pipe/extensions.d.ts +14 -0
  102. package/dist/pipe/output.d.ts +7 -0
  103. package/dist/pipe/pages.d.ts +13 -0
  104. package/dist/pipe/permissions.d.ts +14 -0
  105. package/dist/pipe/pipeline.d.ts +63 -0
  106. package/dist/pipe/startPipe.d.ts +11 -0
  107. package/dist/xml/index.d.ts +2 -0
  108. package/dist/xml/render.d.ts +6 -0
  109. package/dist/xml/xml.d.ts +18 -0
  110. package/package.json +47 -0
  111. package/public/index.html +75 -0
  112. package/public/opentype.min.js +2 -0
  113. package/rollup.config.dev.mjs +47 -0
  114. package/rollup.config.mjs +70 -0
  115. package/src/constant/index.ts +13 -0
  116. package/src/core/ofd-core/Annotations/Annotation.km +206 -0
  117. package/src/core/ofd-core/Annotations/Annotations.km +59 -0
  118. package/src/core/ofd-core/Annotations/Annotations.md +13 -0
  119. package/src/core/ofd-core/Annotations/AnnotationsXml.ts +114 -0
  120. package/src/core/ofd-core/Asn.1Utils.ts +225 -0
  121. package/src/core/ofd-core/Documents/DocumentResXml.ts +55 -0
  122. package/src/core/ofd-core/Documents/Documnet.km +862 -0
  123. package/src/core/ofd-core/Documents/DocumnetXml.ts +118 -0
  124. package/src/core/ofd-core/Documents/Documnets.md +296 -0
  125. package/src/core/ofd-core/Documents/PublicResXml.ts +63 -0
  126. package/src/core/ofd-core/Documents//345/233/276/345/261/202/346/270/262/346/237/223/351/241/272/345/272/217.png +0 -0
  127. package/src/core/ofd-core/Documents//350/241/25022/347/272/277/346/235/241/350/277/236/346/216/245/346/240/267/345/274/217.png +0 -0
  128. package/src/core/ofd-core/Documents//350/241/25023/347/272/277/346/235/241/350/231/232/347/272/277/346/240/267/345/274/217.png +0 -0
  129. package/src/core/ofd-core/Documents//350/241/25023/347/273/223/345/220/210/347/202/271/351/225/277/345/272/246.png +0 -0
  130. package/src/core/ofd-core/Documents//350/241/25024/347/272/277/346/235/241/347/253/257/347/202/271/346/240/267/345/274/217.png +0 -0
  131. package/src/core/ofd-core/Documents//351/241/265/350/276/271/347/225/214/345/261/202/346/254/241/347/273/223/346/236/204.png +0 -0
  132. package/src/core/ofd-core/OFDElement.ts +724 -0
  133. package/src/core/ofd-core/Ofd/CT_DocInfo.km +197 -0
  134. package/src/core/ofd-core/Ofd/OFD.km +114 -0
  135. package/src/core/ofd-core/Ofd/OFD.md +99 -0
  136. package/src/core/ofd-core/Ofd/OFDXml.ts +69 -0
  137. package/src/core/ofd-core/Pages/PAGE.md +40 -0
  138. package/src/core/ofd-core/Pages/PageXml.ts +59 -0
  139. package/src/core/ofd-core/Signatures/Signature.km +308 -0
  140. package/src/core/ofd-core/Signatures/Signature.md +21 -0
  141. package/src/core/ofd-core/Signatures/Signatures.km +315 -0
  142. package/src/core/ofd-core/Signatures/Signatures.md +24 -0
  143. package/src/core/ofd-core/Signatures/Signatures.ts +247 -0
  144. package/src/core/ofd-core/TemplatePages/TemplatePages.ts +56 -0
  145. package/src/core/ofd-core/asn.md +60 -0
  146. package/src/core/ofd-core/constant.ts +35 -0
  147. package/src/core/ofd-core/index.d.ts +867 -0
  148. package/src/core/ofd-core/utils.ts +86 -0
  149. package/src/dicom/dicom.ts +42 -0
  150. package/src/dicom/index.ts +1 -0
  151. package/src/errors/ErrorHandle.ts +14 -0
  152. package/src/errors/FetchErrors.ts +8 -0
  153. package/src/errors/MimeError.ts +9 -0
  154. package/src/errors/OFDErrors.ts +11 -0
  155. package/src/errors/UnzipErrors.ts +9 -0
  156. package/src/errors/XmlErrors.ts +11 -0
  157. package/src/errors/error-msg.ts +17 -0
  158. package/src/es.ts +3 -0
  159. package/src/global.d.ts +7 -0
  160. package/src/index.ts +7 -0
  161. package/src/lib/ParseFile.ts +12 -0
  162. package/src/lib/README.md +69 -0
  163. package/src/lib/UnitCoversion.ts +55 -0
  164. package/src/lib/asn1/Asn.1.ts +284 -0
  165. package/src/lib/asn1/README.md +1 -0
  166. package/src/lib/asn1/Stream.ts +314 -0
  167. package/src/lib/asn1/asn1.ts +120 -0
  168. package/src/lib/asn1/base64.ts +97 -0
  169. package/src/lib/asn1/hex.ts +60 -0
  170. package/src/lib/asn1/index.ts +5 -0
  171. package/src/lib/asn1/int10.ts +103 -0
  172. package/src/lib/asn1/oids.ts +6164 -0
  173. package/src/lib/asn1/string-cut.ts +8 -0
  174. package/src/lib/decode-html.ts +37 -0
  175. package/src/lib/fetch.ts +70 -0
  176. package/src/lib/is-element.ts +13 -0
  177. package/src/lib/jbig/README.md +1 -0
  178. package/src/lib/jbig/arithmetic_decoder.js +184 -0
  179. package/src/lib/jbig/base_stream.js +117 -0
  180. package/src/lib/jbig/ccitt.js +1068 -0
  181. package/src/lib/jbig/ccitt_stream.js +60 -0
  182. package/src/lib/jbig/compatibility.js +108 -0
  183. package/src/lib/jbig/core_utils.js +591 -0
  184. package/src/lib/jbig/decode_stream.js +184 -0
  185. package/src/lib/jbig/is_node.js +28 -0
  186. package/src/lib/jbig/jbig2.js +2582 -0
  187. package/src/lib/jbig/jbig2_stream.js +78 -0
  188. package/src/lib/jbig/primitives.js +441 -0
  189. package/src/lib/jbig/stream.js +101 -0
  190. package/src/lib/jbig/util.js +1231 -0
  191. package/src/lib/load-files.ts +26 -0
  192. package/src/lib/load-opentype.ts +161 -0
  193. package/src/lib/load-script.ts +33 -0
  194. package/src/lib/mime.ts +97 -0
  195. package/src/lib/read-buffer.ts +19 -0
  196. package/src/lib/toFixeds.ts +56 -0
  197. package/src/ofd/ConverterDpi.ts +35 -0
  198. package/src/ofd/OFD.md +38 -0
  199. package/src/ofd/TODO.md +10 -0
  200. package/src/ofd/index.ts +1 -0
  201. package/src/ofd/ofd-utils.ts +627 -0
  202. package/src/ofd/ofd.demo.md +12 -0
  203. package/src/ofd/ofd.ts +200 -0
  204. package/src/ofd/ofdxml.km +162 -0
  205. package/src/ofd/parse-ofd.ts +103 -0
  206. package/src/ofd/render.ts +393 -0
  207. package/src/ofd/svg-image.ts +318 -0
  208. package/src/ofd/svg-path.ts +283 -0
  209. package/src/ofd/svg-text.ts +272 -0
  210. package/src/xml/index.ts +3 -0
  211. package/src/xml/render.ts +171 -0
  212. package/src/xml/xml.ts +136 -0
  213. package/tsconfig.json +21 -0
@@ -0,0 +1,171 @@
1
+ import { Element } from 'xml-js';
2
+ import decodeHtml from '../lib/decode-html';
3
+
4
+ const TYPE_ELEMENT = 'element';
5
+ const TYPE_TEXT = 'text';
6
+ const TYPE_CDATA = 'cdata';
7
+
8
+ const closeSvg = `<svg xmlns="http://www.w3.org/2000/svg" fill="#909090" width="10" height="10"><path d="M0 0 L0 8 L7 4 Z"/></svg>`;
9
+ const openSvg = `<svg xmlns="http://www.w3.org/2000/svg" fill="#909090" width="10" height="10"><path d="M0 0 L8 0 L4 7 Z"/></svg>`;
10
+ const attrTemplate: (
11
+ k: { [k: string]: string } | undefined
12
+ ) => string = attributes => {
13
+ let attr = '';
14
+ if (attributes) {
15
+ Object.entries(attributes).forEach(([keys, val]) => {
16
+ attr += `&nbsp;<span style="color:rgb(153, 69, 0)"><span>${keys}</span>="<span style="color:rgb(26, 26, 166)">${val}</span>"</span>`;
17
+ });
18
+ }
19
+ return attr;
20
+ };
21
+
22
+ const tagTemplate: (
23
+ a: string,
24
+ attributes: { [k: string]: string } | undefined,
25
+ elements: Element[] | undefined
26
+ ) => string = (name, attributes, elements) => {
27
+ let htmlTag = '';
28
+ if (elements) {
29
+ htmlTag += `<span class="folder-button" style="position:absolute;left:-10px;top:3px;user-select: none;cursor: pointer;width: 10px;height: 10px;">${openSvg}</span>`;
30
+ }
31
+ htmlTag += `<span class="html-tag" style="color:rgb(136, 18, 128);">&lt;${name}${attrTemplate(
32
+ attributes
33
+ )}${!elements ? '&nbsp;/' : ''}&gt;</span>`;
34
+
35
+ return htmlTag;
36
+ };
37
+
38
+ const findParentNode: (className: string, b: Node) => Node | null = (
39
+ className,
40
+ currentDom
41
+ ) => {
42
+ const parentNode = currentDom.parentElement;
43
+ if (!parentNode) {
44
+ return null;
45
+ }
46
+ const classes = parentNode.getAttribute('class');
47
+ if (classes !== className) {
48
+ return findParentNode(className, parentNode);
49
+ }
50
+ return parentNode;
51
+ };
52
+
53
+ export const elementRender: (w: Element[], d: HTMLElement) => boolean = (
54
+ elements,
55
+ dom
56
+ ) => {
57
+ if (!elements || !elements.length) {
58
+ return false;
59
+ }
60
+ elements.forEach(item => {
61
+ const { name, attributes, elements, type } = item;
62
+ if (type === TYPE_ELEMENT && name) {
63
+ const divLine = document.createElement('div');
64
+ const divOpen = document.createElement('div');
65
+
66
+ const htmlTmp = tagTemplate(
67
+ name,
68
+ attributes as { [k: string]: string },
69
+ elements
70
+ );
71
+ divLine.setAttribute('class', 'f-line');
72
+ divLine.setAttribute(
73
+ 'style',
74
+ 'position:relative;cursor: pointer;user-select: none;margin-left: 1em;font-family: monospace;font-size: 13px;'
75
+ );
76
+ divLine.innerHTML = htmlTmp;
77
+ divOpen.setAttribute('style', 'margin-left: 1em;');
78
+ divOpen.setAttribute('class', 'opened');
79
+ dom.appendChild(divLine);
80
+ dom.appendChild(divOpen);
81
+ if (elements && elements.length) {
82
+ divLine.addEventListener('click', function (e) {
83
+ const currentDom = e.target as HTMLElement;
84
+ const className = currentDom?.getAttribute('class');
85
+ let openDom = null;
86
+ if (className !== 'f-line') {
87
+ openDom = findParentNode('f-line', currentDom) as HTMLElement;
88
+ } else {
89
+ openDom = currentDom;
90
+ }
91
+ const closeDom = openDom?.nextSibling as HTMLElement;
92
+ if (!closeDom) {
93
+ console.error(closeDom);
94
+ return;
95
+ }
96
+ // 向上查找父节点
97
+ let styles = closeDom.getAttribute('style');
98
+ if (styles && openDom) {
99
+ const btnDom = openDom.querySelector('.folder-button');
100
+ if (btnDom) {
101
+ if (styles.indexOf('display') > -1) {
102
+ styles = styles.replace(/display:.*none;/, '');
103
+ btnDom.innerHTML = openSvg;
104
+ } else {
105
+ btnDom.innerHTML = closeSvg;
106
+ styles += 'display:none;';
107
+ }
108
+ }
109
+ }
110
+ closeDom.setAttribute('style', styles as string);
111
+ });
112
+ const divCloseTag = document.createElement('div');
113
+ divCloseTag.setAttribute('style', 'margin-left: 1em;');
114
+ divCloseTag.innerHTML = `<span class="html-tag" style="color:rgb(136, 18, 128);font-family: monospace;font-size: 13px;">&lt;/${name}&gt;</span>`;
115
+ dom.appendChild(divCloseTag);
116
+ elementRender(elements, divOpen);
117
+ }
118
+ }
119
+ if (type === TYPE_TEXT) {
120
+ textRender(item, dom);
121
+ } else if (type === TYPE_CDATA) {
122
+ cdataRender(item, dom);
123
+ } else {
124
+ if (type) {
125
+ // @ts-ignore
126
+ const elemHtml = item[type];
127
+ if (elemHtml !== undefined && typeof elemHtml === 'string') {
128
+ const divLine = document.createElement('div');
129
+ divLine.setAttribute('style', 'margin-left: 1em;');
130
+ divLine.innerHTML = `<span>${decodeHtml(
131
+ String(elemHtml || '')
132
+ )}<span>`;
133
+ dom.appendChild(divLine);
134
+ }
135
+ }
136
+ }
137
+ });
138
+ return true;
139
+ };
140
+
141
+ export const textRender: (a: Element, d: HTMLElement) => void = (info, dom) => {
142
+ const { text } = info;
143
+ const divLine = document.createElement('div');
144
+ divLine.setAttribute('style', 'margin-left: 1em;');
145
+ divLine.innerHTML = `<span>${decodeHtml(String(text || ''))}<span>`;
146
+ dom.appendChild(divLine);
147
+ };
148
+
149
+ export const cdataRender: (a: Element, d: HTMLElement) => void = (
150
+ info,
151
+ dom
152
+ ) => {
153
+ const { cdata } = info;
154
+ const divLine = document.createElement('div');
155
+ divLine.setAttribute('style', 'margin-left: 1em;');
156
+ divLine.innerHTML = `<span>&lt;![CDATA[ ${decodeHtml(
157
+ String(cdata || '')
158
+ )} ]]&gt;<span>`;
159
+ dom.appendChild(divLine);
160
+ };
161
+
162
+ const render: (a: any) => HTMLDivElement = xmlParse => {
163
+ const div = document.createElement('div');
164
+ div.setAttribute('class', 'm-xml-pre');
165
+ div.setAttribute('style', 'text-align:left;font-size:12px');
166
+ elementRender(xmlParse.elements, div);
167
+
168
+ return div;
169
+ };
170
+
171
+ export default render;
package/src/xml/xml.ts ADDED
@@ -0,0 +1,136 @@
1
+ import { xml2js } from 'xml-js';
2
+ import XmlErrors from '../errors/XmlErrors';
3
+ import fetchs from '../lib/fetch';
4
+ import getMime from '../lib/mime';
5
+ import isElement from '../lib/is-element';
6
+ import render from './render';
7
+
8
+ interface Options {
9
+ file: string | File | ArrayBuffer;
10
+ content?: Element;
11
+ id?: string;
12
+ success?: (k: Element) => any;
13
+ fail?: (e: Error) => any;
14
+ requestOptions?: undefined | { [key: string]: any };
15
+ requestData?: undefined | { [key: string]: any };
16
+ responseFilter?: (key: { [key: string]: string | number }) => string;
17
+ }
18
+
19
+ const xmlOptions = { compact: false, spaces: 4 };
20
+
21
+ const xmlParse = ({
22
+ file,
23
+ requestData,
24
+ requestOptions,
25
+ responseFilter
26
+ }: Options): Promise<{ code: number; data: any }> => {
27
+ return new Promise((resolve, reject) => {
28
+ //
29
+ if (typeof file === 'string') {
30
+ if (
31
+ file.indexOf('<') > -1 &&
32
+ file.indexOf('>') > -1 &&
33
+ /<[^>]+>/g.test(file)
34
+ ) {
35
+ // xml需要使用string格式化
36
+ const xmlJSON = xml2js(file, xmlOptions);
37
+ if (xmlJSON) {
38
+ resolve({
39
+ code: 200,
40
+ data: xmlJSON
41
+ });
42
+ return { code: 200, data: xmlJSON };
43
+ }
44
+ } else {
45
+ fetchs(file, { ...requestData }, { ...requestOptions }).then(res => {
46
+ let xmlStr = '';
47
+ if (res) {
48
+ if (responseFilter) {
49
+ xmlStr = responseFilter(res);
50
+ } else if (typeof res === 'string') {
51
+ xmlStr = res;
52
+ }
53
+ }
54
+ if (xmlStr) {
55
+ // xml需要使用string格式化
56
+ const xmlJSON = xml2js(xmlStr, xmlOptions);
57
+ if (xmlJSON) {
58
+ resolve({
59
+ code: 200,
60
+ data: xmlJSON
61
+ });
62
+ }
63
+ } else {
64
+ reject(new XmlErrors(404));
65
+ }
66
+ });
67
+ }
68
+ }
69
+ if (file instanceof File) {
70
+ // 优先获取魔数判断文件类型
71
+ getMime(file).then(fileType => {
72
+ if (fileType === 'xml') {
73
+ const fileReader = new FileReader();
74
+ fileReader.onload = () => {
75
+ if (fileReader.result && typeof fileReader.result === 'string') {
76
+ const xmlJSON = xml2js(fileReader.result, xmlOptions);
77
+ if (xmlJSON) {
78
+ resolve({
79
+ code: 200,
80
+ data: xmlJSON
81
+ });
82
+ }
83
+ }
84
+ };
85
+ fileReader.readAsText(file);
86
+ }
87
+ });
88
+ }
89
+
90
+ if (file instanceof ArrayBuffer) {
91
+ reject(
92
+ new XmlErrors(
93
+ 403,
94
+ 'file 参数只能为string或者File,不允许使用ArrayBuffer'
95
+ )
96
+ );
97
+ }
98
+ });
99
+ };
100
+
101
+ export default ({ file, content, id, ...restOptions }: Options) =>
102
+ new Promise((resolve, reject) => {
103
+ if (!file) {
104
+ reject(new XmlErrors(400));
105
+ return;
106
+ }
107
+ xmlParse({ file, ...restOptions })
108
+ .then(res => {
109
+ if (res && res.code === 200) {
110
+ let container = content;
111
+ if (id) {
112
+ container = document.querySelector(`#${id}`) as HTMLElement;
113
+ }
114
+ if (container) {
115
+ if (isElement(container)) {
116
+ // 清空 container 防止xml重复渲染
117
+ container.innerHTML = '';
118
+ const pres = render(res.data);
119
+ container.appendChild(pres);
120
+ if (restOptions.success) {
121
+ restOptions.success(pres as HTMLElement);
122
+ }
123
+ resolve(pres as HTMLElement);
124
+ return;
125
+ }
126
+ }
127
+ if (restOptions.fail) {
128
+ restOptions.fail(
129
+ new XmlErrors(403, 'content is not Element 或者 id 为空')
130
+ );
131
+ }
132
+ reject(new XmlErrors(403, 'content is not Element 或者 id 为空'));
133
+ }
134
+ })
135
+ .catch(reject);
136
+ });
package/tsconfig.json ADDED
@@ -0,0 +1,21 @@
1
+ {
2
+ "compilerOptions": {
3
+ "strict": true,
4
+ "target": "ESNext",
5
+ "module": "ESNext",
6
+ "moduleResolution": "Node",
7
+ "esModuleInterop": true,
8
+ "skipLibCheck": true,
9
+ "lib": ["dom", "ESNext"],
10
+ "jsx": "react",
11
+ "declaration": true,
12
+ "declarationDir": "./dist",
13
+ "sourceMap": true,
14
+ "removeComments": false,
15
+ "noUnusedLocals": true,
16
+ "noUnusedParameters": true,
17
+ "baseUrl": "./"
18
+ },
19
+ "include": ["src/**/*"],
20
+ "exclude": ["node_modules", "dist"]
21
+ }