@ncukondo/search-hub 0.1.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 (319) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +93 -0
  3. package/dist/_virtual/___vite-browser-external.js +7 -0
  4. package/dist/_virtual/___vite-browser-external.js.map +1 -0
  5. package/dist/_virtual/__vite-browser-external.js +5 -0
  6. package/dist/_virtual/__vite-browser-external.js.map +1 -0
  7. package/dist/_virtual/_commonjsHelpers.js +28 -0
  8. package/dist/_virtual/_commonjsHelpers.js.map +1 -0
  9. package/dist/_virtual/cli-progress.js +6 -0
  10. package/dist/_virtual/cli-progress.js.map +1 -0
  11. package/dist/_virtual/index.js +5 -0
  12. package/dist/_virtual/index.js.map +1 -0
  13. package/dist/_virtual/index2.js +5 -0
  14. package/dist/_virtual/index2.js.map +1 -0
  15. package/dist/cli/commands/config.d.ts +37 -0
  16. package/dist/cli/commands/config.d.ts.map +1 -0
  17. package/dist/cli/commands/config.js +117 -0
  18. package/dist/cli/commands/config.js.map +1 -0
  19. package/dist/cli/commands/export.d.ts +26 -0
  20. package/dist/cli/commands/export.d.ts.map +1 -0
  21. package/dist/cli/commands/export.js +86 -0
  22. package/dist/cli/commands/export.js.map +1 -0
  23. package/dist/cli/commands/init.d.ts +45 -0
  24. package/dist/cli/commands/init.d.ts.map +1 -0
  25. package/dist/cli/commands/init.js +134 -0
  26. package/dist/cli/commands/init.js.map +1 -0
  27. package/dist/cli/commands/query/translate.d.ts +32 -0
  28. package/dist/cli/commands/query/translate.d.ts.map +1 -0
  29. package/dist/cli/commands/query/translate.js +76 -0
  30. package/dist/cli/commands/query/translate.js.map +1 -0
  31. package/dist/cli/commands/query/validate.d.ts +25 -0
  32. package/dist/cli/commands/query/validate.d.ts.map +1 -0
  33. package/dist/cli/commands/query/validate.js +68 -0
  34. package/dist/cli/commands/query/validate.js.map +1 -0
  35. package/dist/cli/commands/register.d.ts +39 -0
  36. package/dist/cli/commands/register.d.ts.map +1 -0
  37. package/dist/cli/commands/register.js +78 -0
  38. package/dist/cli/commands/register.js.map +1 -0
  39. package/dist/cli/commands/resume-executor.d.ts +19 -0
  40. package/dist/cli/commands/resume-executor.d.ts.map +1 -0
  41. package/dist/cli/commands/resume-executor.js +170 -0
  42. package/dist/cli/commands/resume-executor.js.map +1 -0
  43. package/dist/cli/commands/resume.d.ts +26 -0
  44. package/dist/cli/commands/resume.d.ts.map +1 -0
  45. package/dist/cli/commands/resume.js +51 -0
  46. package/dist/cli/commands/resume.js.map +1 -0
  47. package/dist/cli/commands/search-executor.d.ts +26 -0
  48. package/dist/cli/commands/search-executor.d.ts.map +1 -0
  49. package/dist/cli/commands/search-executor.js +315 -0
  50. package/dist/cli/commands/search-executor.js.map +1 -0
  51. package/dist/cli/commands/search.d.ts +30 -0
  52. package/dist/cli/commands/search.d.ts.map +1 -0
  53. package/dist/cli/commands/search.js +67 -0
  54. package/dist/cli/commands/search.js.map +1 -0
  55. package/dist/cli/commands/status.d.ts +41 -0
  56. package/dist/cli/commands/status.d.ts.map +1 -0
  57. package/dist/cli/commands/status.js +123 -0
  58. package/dist/cli/commands/status.js.map +1 -0
  59. package/dist/cli/e2e-helpers.d.ts +165 -0
  60. package/dist/cli/e2e-helpers.d.ts.map +1 -0
  61. package/dist/cli/exit-codes.d.ts +25 -0
  62. package/dist/cli/exit-codes.d.ts.map +1 -0
  63. package/dist/cli/exit-codes.js +18 -0
  64. package/dist/cli/exit-codes.js.map +1 -0
  65. package/dist/cli/index.d.ts +25 -0
  66. package/dist/cli/index.d.ts.map +1 -0
  67. package/dist/cli/index.js +638 -0
  68. package/dist/cli/index.js.map +1 -0
  69. package/dist/cli/utils/progress.d.ts +24 -0
  70. package/dist/cli/utils/progress.d.ts.map +1 -0
  71. package/dist/cli/utils/progress.js +128 -0
  72. package/dist/cli/utils/progress.js.map +1 -0
  73. package/dist/cli/utils/sessions-dir.d.ts +14 -0
  74. package/dist/cli/utils/sessions-dir.d.ts.map +1 -0
  75. package/dist/cli/utils/sessions-dir.js +21 -0
  76. package/dist/cli/utils/sessions-dir.js.map +1 -0
  77. package/dist/cli/utils/validation.d.ts +18 -0
  78. package/dist/cli/utils/validation.d.ts.map +1 -0
  79. package/dist/cli/utils/validation.js +24 -0
  80. package/dist/cli/utils/validation.js.map +1 -0
  81. package/dist/config/defaults.d.ts +12 -0
  82. package/dist/config/defaults.d.ts.map +1 -0
  83. package/dist/config/defaults.js +10 -0
  84. package/dist/config/defaults.js.map +1 -0
  85. package/dist/config/env.d.ts +12 -0
  86. package/dist/config/env.d.ts.map +1 -0
  87. package/dist/config/env.js +36 -0
  88. package/dist/config/env.js.map +1 -0
  89. package/dist/config/index.d.ts +9 -0
  90. package/dist/config/index.d.ts.map +1 -0
  91. package/dist/config/loader.d.ts +49 -0
  92. package/dist/config/loader.d.ts.map +1 -0
  93. package/dist/config/loader.js +72 -0
  94. package/dist/config/loader.js.map +1 -0
  95. package/dist/config/paths.d.ts +23 -0
  96. package/dist/config/paths.d.ts.map +1 -0
  97. package/dist/config/paths.js +22 -0
  98. package/dist/config/paths.js.map +1 -0
  99. package/dist/config/schema.d.ts +109 -0
  100. package/dist/config/schema.d.ts.map +1 -0
  101. package/dist/config/schema.js +74 -0
  102. package/dist/config/schema.js.map +1 -0
  103. package/dist/index.d.ts +11 -0
  104. package/dist/index.d.ts.map +1 -0
  105. package/dist/index.js +54 -0
  106. package/dist/index.js.map +1 -0
  107. package/dist/integration/ref-cli.d.ts +41 -0
  108. package/dist/integration/ref-cli.d.ts.map +1 -0
  109. package/dist/integration/ref-cli.js +132 -0
  110. package/dist/integration/ref-cli.js.map +1 -0
  111. package/dist/integration/register.d.ts +27 -0
  112. package/dist/integration/register.d.ts.map +1 -0
  113. package/dist/integration/register.js +108 -0
  114. package/dist/integration/register.js.map +1 -0
  115. package/dist/integration/types.d.ts +61 -0
  116. package/dist/integration/types.d.ts.map +1 -0
  117. package/dist/integration/types.js +61 -0
  118. package/dist/integration/types.js.map +1 -0
  119. package/dist/node_modules/cli-progress/cli-progress.js +37 -0
  120. package/dist/node_modules/cli-progress/cli-progress.js.map +1 -0
  121. package/dist/node_modules/cli-progress/lib/eta.js +52 -0
  122. package/dist/node_modules/cli-progress/lib/eta.js.map +1 -0
  123. package/dist/node_modules/cli-progress/lib/format-bar.js +16 -0
  124. package/dist/node_modules/cli-progress/lib/format-bar.js.map +1 -0
  125. package/dist/node_modules/cli-progress/lib/format-time.js +32 -0
  126. package/dist/node_modules/cli-progress/lib/format-time.js.map +1 -0
  127. package/dist/node_modules/cli-progress/lib/format-value.js +25 -0
  128. package/dist/node_modules/cli-progress/lib/format-value.js.map +1 -0
  129. package/dist/node_modules/cli-progress/lib/formatter.js +57 -0
  130. package/dist/node_modules/cli-progress/lib/formatter.js.map +1 -0
  131. package/dist/node_modules/cli-progress/lib/generic-bar.js +137 -0
  132. package/dist/node_modules/cli-progress/lib/generic-bar.js.map +1 -0
  133. package/dist/node_modules/cli-progress/lib/multi-bar.js +147 -0
  134. package/dist/node_modules/cli-progress/lib/multi-bar.js.map +1 -0
  135. package/dist/node_modules/cli-progress/lib/options.js +59 -0
  136. package/dist/node_modules/cli-progress/lib/options.js.map +1 -0
  137. package/dist/node_modules/cli-progress/lib/single-bar.js +95 -0
  138. package/dist/node_modules/cli-progress/lib/single-bar.js.map +1 -0
  139. package/dist/node_modules/cli-progress/lib/terminal.js +125 -0
  140. package/dist/node_modules/cli-progress/lib/terminal.js.map +1 -0
  141. package/dist/node_modules/cli-progress/node_modules/ansi-regex/index.js +18 -0
  142. package/dist/node_modules/cli-progress/node_modules/ansi-regex/index.js.map +1 -0
  143. package/dist/node_modules/cli-progress/node_modules/emoji-regex/index.js +14 -0
  144. package/dist/node_modules/cli-progress/node_modules/emoji-regex/index.js.map +1 -0
  145. package/dist/node_modules/cli-progress/node_modules/string-width/index.js +44 -0
  146. package/dist/node_modules/cli-progress/node_modules/string-width/index.js.map +1 -0
  147. package/dist/node_modules/cli-progress/node_modules/strip-ansi/index.js +14 -0
  148. package/dist/node_modules/cli-progress/node_modules/strip-ansi/index.js.map +1 -0
  149. package/dist/node_modules/cli-progress/presets/index.js +25 -0
  150. package/dist/node_modules/cli-progress/presets/index.js.map +1 -0
  151. package/dist/node_modules/cli-progress/presets/legacy.js +16 -0
  152. package/dist/node_modules/cli-progress/presets/legacy.js.map +1 -0
  153. package/dist/node_modules/cli-progress/presets/rect.js +16 -0
  154. package/dist/node_modules/cli-progress/presets/rect.js.map +1 -0
  155. package/dist/node_modules/cli-progress/presets/shades-classic.js +16 -0
  156. package/dist/node_modules/cli-progress/presets/shades-classic.js.map +1 -0
  157. package/dist/node_modules/cli-progress/presets/shades-grey.js +16 -0
  158. package/dist/node_modules/cli-progress/presets/shades-grey.js.map +1 -0
  159. package/dist/node_modules/env-paths/index.js +58 -0
  160. package/dist/node_modules/env-paths/index.js.map +1 -0
  161. package/dist/node_modules/fast-xml-parser/src/ignoreAttributes.js +22 -0
  162. package/dist/node_modules/fast-xml-parser/src/ignoreAttributes.js.map +1 -0
  163. package/dist/node_modules/fast-xml-parser/src/util.js +33 -0
  164. package/dist/node_modules/fast-xml-parser/src/util.js.map +1 -0
  165. package/dist/node_modules/fast-xml-parser/src/validator.js +309 -0
  166. package/dist/node_modules/fast-xml-parser/src/validator.js.map +1 -0
  167. package/dist/node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js +265 -0
  168. package/dist/node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js.map +1 -0
  169. package/dist/node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js +53 -0
  170. package/dist/node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js.map +1 -0
  171. package/dist/node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js +515 -0
  172. package/dist/node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js.map +1 -0
  173. package/dist/node_modules/fast-xml-parser/src/xmlparser/XMLParser.js +68 -0
  174. package/dist/node_modules/fast-xml-parser/src/xmlparser/XMLParser.js.map +1 -0
  175. package/dist/node_modules/fast-xml-parser/src/xmlparser/node2json.js +88 -0
  176. package/dist/node_modules/fast-xml-parser/src/xmlparser/node2json.js.map +1 -0
  177. package/dist/node_modules/fast-xml-parser/src/xmlparser/xmlNode.js +36 -0
  178. package/dist/node_modules/fast-xml-parser/src/xmlparser/xmlNode.js.map +1 -0
  179. package/dist/node_modules/is-fullwidth-code-point/index.js +37 -0
  180. package/dist/node_modules/is-fullwidth-code-point/index.js.map +1 -0
  181. package/dist/node_modules/strnum/strnum.js +100 -0
  182. package/dist/node_modules/strnum/strnum.js.map +1 -0
  183. package/dist/providers/arxiv/client.d.ts +54 -0
  184. package/dist/providers/arxiv/client.d.ts.map +1 -0
  185. package/dist/providers/arxiv/client.js +105 -0
  186. package/dist/providers/arxiv/client.js.map +1 -0
  187. package/dist/providers/arxiv/index.d.ts +14 -0
  188. package/dist/providers/arxiv/index.d.ts.map +1 -0
  189. package/dist/providers/arxiv/parser.d.ts +16 -0
  190. package/dist/providers/arxiv/parser.d.ts.map +1 -0
  191. package/dist/providers/arxiv/parser.js +144 -0
  192. package/dist/providers/arxiv/parser.js.map +1 -0
  193. package/dist/providers/arxiv/provider.d.ts +39 -0
  194. package/dist/providers/arxiv/provider.d.ts.map +1 -0
  195. package/dist/providers/arxiv/provider.js +153 -0
  196. package/dist/providers/arxiv/provider.js.map +1 -0
  197. package/dist/providers/arxiv/translator.d.ts +17 -0
  198. package/dist/providers/arxiv/translator.d.ts.map +1 -0
  199. package/dist/providers/arxiv/translator.js +112 -0
  200. package/dist/providers/arxiv/translator.js.map +1 -0
  201. package/dist/providers/arxiv/types.d.ts +71 -0
  202. package/dist/providers/arxiv/types.d.ts.map +1 -0
  203. package/dist/providers/arxiv/types.js +17 -0
  204. package/dist/providers/arxiv/types.js.map +1 -0
  205. package/dist/providers/base/index.d.ts +16 -0
  206. package/dist/providers/base/index.d.ts.map +1 -0
  207. package/dist/providers/base/mock-provider.d.ts +76 -0
  208. package/dist/providers/base/mock-provider.d.ts.map +1 -0
  209. package/dist/providers/base/mock-provider.js +159 -0
  210. package/dist/providers/base/mock-provider.js.map +1 -0
  211. package/dist/providers/base/provider.d.ts +95 -0
  212. package/dist/providers/base/provider.d.ts.map +1 -0
  213. package/dist/providers/base/provider.js +117 -0
  214. package/dist/providers/base/provider.js.map +1 -0
  215. package/dist/providers/base/rate-limiter.d.ts +70 -0
  216. package/dist/providers/base/rate-limiter.d.ts.map +1 -0
  217. package/dist/providers/base/rate-limiter.js +111 -0
  218. package/dist/providers/base/rate-limiter.js.map +1 -0
  219. package/dist/providers/base/registry.d.ts +52 -0
  220. package/dist/providers/base/registry.d.ts.map +1 -0
  221. package/dist/providers/base/registry.js +55 -0
  222. package/dist/providers/base/registry.js.map +1 -0
  223. package/dist/providers/base/types.d.ts +163 -0
  224. package/dist/providers/base/types.d.ts.map +1 -0
  225. package/dist/providers/base/types.js +29 -0
  226. package/dist/providers/base/types.js.map +1 -0
  227. package/dist/providers/eric/client.d.ts +40 -0
  228. package/dist/providers/eric/client.d.ts.map +1 -0
  229. package/dist/providers/eric/client.js +93 -0
  230. package/dist/providers/eric/client.js.map +1 -0
  231. package/dist/providers/eric/index.d.ts +14 -0
  232. package/dist/providers/eric/index.d.ts.map +1 -0
  233. package/dist/providers/eric/parser.d.ts +21 -0
  234. package/dist/providers/eric/parser.d.ts.map +1 -0
  235. package/dist/providers/eric/parser.js +86 -0
  236. package/dist/providers/eric/parser.js.map +1 -0
  237. package/dist/providers/eric/provider.d.ts +59 -0
  238. package/dist/providers/eric/provider.d.ts.map +1 -0
  239. package/dist/providers/eric/provider.js +166 -0
  240. package/dist/providers/eric/provider.js.map +1 -0
  241. package/dist/providers/eric/translator.d.ts +12 -0
  242. package/dist/providers/eric/translator.d.ts.map +1 -0
  243. package/dist/providers/eric/translator.js +81 -0
  244. package/dist/providers/eric/translator.js.map +1 -0
  245. package/dist/providers/eric/types.d.ts +84 -0
  246. package/dist/providers/eric/types.d.ts.map +1 -0
  247. package/dist/providers/pubmed/client.d.ts +54 -0
  248. package/dist/providers/pubmed/client.d.ts.map +1 -0
  249. package/dist/providers/pubmed/client.js +141 -0
  250. package/dist/providers/pubmed/client.js.map +1 -0
  251. package/dist/providers/pubmed/index.d.ts +27 -0
  252. package/dist/providers/pubmed/index.d.ts.map +1 -0
  253. package/dist/providers/pubmed/parser.d.ts +22 -0
  254. package/dist/providers/pubmed/parser.d.ts.map +1 -0
  255. package/dist/providers/pubmed/parser.js +174 -0
  256. package/dist/providers/pubmed/parser.js.map +1 -0
  257. package/dist/providers/pubmed/provider.d.ts +44 -0
  258. package/dist/providers/pubmed/provider.d.ts.map +1 -0
  259. package/dist/providers/pubmed/provider.js +224 -0
  260. package/dist/providers/pubmed/provider.js.map +1 -0
  261. package/dist/providers/pubmed/translator.d.ts +7 -0
  262. package/dist/providers/pubmed/translator.d.ts.map +1 -0
  263. package/dist/providers/pubmed/translator.js +143 -0
  264. package/dist/providers/pubmed/translator.js.map +1 -0
  265. package/dist/providers/pubmed/types.d.ts +72 -0
  266. package/dist/providers/pubmed/types.d.ts.map +1 -0
  267. package/dist/providers/scopus/client.d.ts +64 -0
  268. package/dist/providers/scopus/client.d.ts.map +1 -0
  269. package/dist/providers/scopus/client.js +155 -0
  270. package/dist/providers/scopus/client.js.map +1 -0
  271. package/dist/providers/scopus/index.d.ts +21 -0
  272. package/dist/providers/scopus/index.d.ts.map +1 -0
  273. package/dist/providers/scopus/parser.d.ts +11 -0
  274. package/dist/providers/scopus/parser.d.ts.map +1 -0
  275. package/dist/providers/scopus/parser.js +128 -0
  276. package/dist/providers/scopus/parser.js.map +1 -0
  277. package/dist/providers/scopus/provider.d.ts +39 -0
  278. package/dist/providers/scopus/provider.d.ts.map +1 -0
  279. package/dist/providers/scopus/provider.js +175 -0
  280. package/dist/providers/scopus/provider.js.map +1 -0
  281. package/dist/providers/scopus/translator.d.ts +7 -0
  282. package/dist/providers/scopus/translator.d.ts.map +1 -0
  283. package/dist/providers/scopus/translator.js +83 -0
  284. package/dist/providers/scopus/translator.js.map +1 -0
  285. package/dist/providers/scopus/types.d.ts +86 -0
  286. package/dist/providers/scopus/types.d.ts.map +1 -0
  287. package/dist/query/index.d.ts +12 -0
  288. package/dist/query/index.d.ts.map +1 -0
  289. package/dist/query/parser.d.ts +18 -0
  290. package/dist/query/parser.d.ts.map +1 -0
  291. package/dist/query/parser.js +16 -0
  292. package/dist/query/parser.js.map +1 -0
  293. package/dist/query/types.d.ts +85 -0
  294. package/dist/query/types.d.ts.map +1 -0
  295. package/dist/query/validator.d.ts +635 -0
  296. package/dist/query/validator.d.ts.map +1 -0
  297. package/dist/query/validator.js +117 -0
  298. package/dist/query/validator.js.map +1 -0
  299. package/dist/session/index.d.ts +14 -0
  300. package/dist/session/index.d.ts.map +1 -0
  301. package/dist/session/logger.d.ts +15 -0
  302. package/dist/session/logger.d.ts.map +1 -0
  303. package/dist/session/logger.js +18 -0
  304. package/dist/session/logger.js.map +1 -0
  305. package/dist/session/manager.d.ts +63 -0
  306. package/dist/session/manager.d.ts.map +1 -0
  307. package/dist/session/manager.js +193 -0
  308. package/dist/session/manager.js.map +1 -0
  309. package/dist/session/types.d.ts +182 -0
  310. package/dist/session/types.d.ts.map +1 -0
  311. package/dist/utils/deep-merge.d.ts +17 -0
  312. package/dist/utils/deep-merge.d.ts.map +1 -0
  313. package/dist/utils/deep-merge.js +23 -0
  314. package/dist/utils/deep-merge.js.map +1 -0
  315. package/dist/utils/path.d.ts +9 -0
  316. package/dist/utils/path.d.ts.map +1 -0
  317. package/dist/utils/path.js +15 -0
  318. package/dist/utils/path.js.map +1 -0
  319. package/package.json +82 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocTypeReader.js","sources":["../../../../../node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js"],"sourcesContent":["import {isName} from '../util.js';\n\nexport default class DocTypeReader{\n constructor(processEntities){\n this.suppressValidationErr = !processEntities;\n }\n \n readDocType(xmlData, i){\n \n const entities = {};\n if( xmlData[i + 3] === 'O' &&\n xmlData[i + 4] === 'C' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'Y' &&\n xmlData[i + 7] === 'P' &&\n xmlData[i + 8] === 'E')\n { \n i = i+9;\n let angleBracketsCount = 1;\n let hasBody = false, comment = false;\n let exp = \"\";\n for(;i<xmlData.length;i++){\n if (xmlData[i] === '<' && !comment) { //Determine the tag type\n if( hasBody && hasSeq(xmlData, \"!ENTITY\",i)){\n i += 7; \n let entityName, val;\n [entityName, val,i] = this.readEntityExp(xmlData,i+1,this.suppressValidationErr);\n if(val.indexOf(\"&\") === -1) //Parameter entities are not supported\n entities[ entityName ] = {\n regx : RegExp( `&${entityName};`,\"g\"),\n val: val\n };\n }\n else if( hasBody && hasSeq(xmlData, \"!ELEMENT\",i)) {\n i += 8;//Not supported\n const {index} = this.readElementExp(xmlData,i+1);\n i = index;\n }else if( hasBody && hasSeq(xmlData, \"!ATTLIST\",i)){\n i += 8;//Not supported\n // const {index} = this.readAttlistExp(xmlData,i+1);\n // i = index;\n }else if( hasBody && hasSeq(xmlData, \"!NOTATION\",i)) {\n i += 9;//Not supported\n const {index} = this.readNotationExp(xmlData,i+1,this.suppressValidationErr);\n i = index;\n }else if( hasSeq(xmlData, \"!--\",i) ) comment = true;\n else throw new Error(`Invalid DOCTYPE`);\n\n angleBracketsCount++;\n exp = \"\";\n } else if (xmlData[i] === '>') { //Read tag content\n if(comment){\n if( xmlData[i - 1] === \"-\" && xmlData[i - 2] === \"-\"){\n comment = false;\n angleBracketsCount--;\n }\n }else{\n angleBracketsCount--;\n }\n if (angleBracketsCount === 0) {\n break;\n }\n }else if( xmlData[i] === '['){\n hasBody = true;\n }else{\n exp += xmlData[i];\n }\n }\n if(angleBracketsCount !== 0){\n throw new Error(`Unclosed DOCTYPE`);\n }\n }else{\n throw new Error(`Invalid Tag instead of DOCTYPE`);\n }\n return {entities, i};\n }\n readEntityExp(xmlData, i) { \n //External entities are not supported\n // <!ENTITY ext SYSTEM \"http://normal-website.com\" >\n\n //Parameter entities are not supported\n // <!ENTITY entityname \"&anotherElement;\">\n\n //Internal entities are supported\n // <!ENTITY entityname \"replacement text\">\n\n // Skip leading whitespace after <!ENTITY\n i = skipWhitespace(xmlData, i);\n\n // Read entity name\n let entityName = \"\";\n while (i < xmlData.length && !/\\s/.test(xmlData[i]) && xmlData[i] !== '\"' && xmlData[i] !== \"'\") {\n entityName += xmlData[i];\n i++;\n }\n validateEntityName(entityName);\n\n // Skip whitespace after entity name\n i = skipWhitespace(xmlData, i);\n\n // Check for unsupported constructs (external entities or parameter entities)\n if(!this.suppressValidationErr){\n if (xmlData.substring(i, i + 6).toUpperCase() === \"SYSTEM\") {\n throw new Error(\"External entities are not supported\");\n }else if (xmlData[i] === \"%\") {\n throw new Error(\"Parameter entities are not supported\");\n }\n }\n\n // Read entity value (internal entity)\n let entityValue = \"\";\n [i, entityValue] = this.readIdentifierVal(xmlData, i, \"entity\");\n i--;\n return [entityName, entityValue, i ];\n }\n\n readNotationExp(xmlData, i) {\n // Skip leading whitespace after <!NOTATION\n i = skipWhitespace(xmlData, i);\n\n // Read notation name\n let notationName = \"\";\n while (i < xmlData.length && !/\\s/.test(xmlData[i])) {\n notationName += xmlData[i];\n i++;\n }\n !this.suppressValidationErr && validateEntityName(notationName);\n\n // Skip whitespace after notation name\n i = skipWhitespace(xmlData, i);\n\n // Check identifier type (SYSTEM or PUBLIC)\n const identifierType = xmlData.substring(i, i + 6).toUpperCase();\n if (!this.suppressValidationErr && identifierType !== \"SYSTEM\" && identifierType !== \"PUBLIC\") {\n throw new Error(`Expected SYSTEM or PUBLIC, found \"${identifierType}\"`);\n }\n i += identifierType.length;\n\n // Skip whitespace after identifier type\n i = skipWhitespace(xmlData, i);\n\n // Read public identifier (if PUBLIC)\n let publicIdentifier = null;\n let systemIdentifier = null;\n\n if (identifierType === \"PUBLIC\") {\n [i, publicIdentifier ] = this.readIdentifierVal(xmlData, i, \"publicIdentifier\");\n\n // Skip whitespace after public identifier\n i = skipWhitespace(xmlData, i);\n\n // Optionally read system identifier\n if (xmlData[i] === '\"' || xmlData[i] === \"'\") {\n [i, systemIdentifier ] = this.readIdentifierVal(xmlData, i,\"systemIdentifier\");\n }\n } else if (identifierType === \"SYSTEM\") {\n // Read system identifier (mandatory for SYSTEM)\n [i, systemIdentifier ] = this.readIdentifierVal(xmlData, i, \"systemIdentifier\");\n\n if (!this.suppressValidationErr && !systemIdentifier) {\n throw new Error(\"Missing mandatory system identifier for SYSTEM notation\");\n }\n }\n \n return {notationName, publicIdentifier, systemIdentifier, index: --i};\n }\n\n readIdentifierVal(xmlData, i, type) {\n let identifierVal = \"\";\n const startChar = xmlData[i];\n if (startChar !== '\"' && startChar !== \"'\") {\n throw new Error(`Expected quoted string, found \"${startChar}\"`);\n }\n i++;\n\n while (i < xmlData.length && xmlData[i] !== startChar) {\n identifierVal += xmlData[i];\n i++;\n }\n\n if (xmlData[i] !== startChar) {\n throw new Error(`Unterminated ${type} value`);\n }\n i++;\n return [i, identifierVal];\n }\n\n readElementExp(xmlData, i) {\n // <!ELEMENT br EMPTY>\n // <!ELEMENT div ANY>\n // <!ELEMENT title (#PCDATA)>\n // <!ELEMENT book (title, author+)>\n // <!ELEMENT name (content-model)>\n \n // Skip leading whitespace after <!ELEMENT\n i = skipWhitespace(xmlData, i);\n\n // Read element name\n let elementName = \"\";\n while (i < xmlData.length && !/\\s/.test(xmlData[i])) {\n elementName += xmlData[i];\n i++;\n }\n\n // Validate element name\n if (!this.suppressValidationErr && !isName(elementName)) {\n throw new Error(`Invalid element name: \"${elementName}\"`);\n }\n\n // Skip whitespace after element name\n i = skipWhitespace(xmlData, i);\n let contentModel = \"\";\n // Expect '(' to start content model\n if(xmlData[i] === \"E\" && hasSeq(xmlData, \"MPTY\",i)) i+=4;\n else if(xmlData[i] === \"A\" && hasSeq(xmlData, \"NY\",i)) i+=2;\n else if (xmlData[i] === \"(\") {\n i++; // Move past '('\n\n // Read content model\n while (i < xmlData.length && xmlData[i] !== \")\") {\n contentModel += xmlData[i];\n i++;\n }\n if (xmlData[i] !== \")\") {\n throw new Error(\"Unterminated content model\");\n }\n\n }else if(!this.suppressValidationErr){\n throw new Error(`Invalid Element Expression, found \"${xmlData[i]}\"`);\n }\n \n return {\n elementName,\n contentModel: contentModel.trim(),\n index: i\n };\n }\n\n readAttlistExp(xmlData, i) {\n // Skip leading whitespace after <!ATTLIST\n i = skipWhitespace(xmlData, i);\n\n // Read element name\n let elementName = \"\";\n while (i < xmlData.length && !/\\s/.test(xmlData[i])) {\n elementName += xmlData[i];\n i++;\n }\n\n // Validate element name\n validateEntityName(elementName)\n\n // Skip whitespace after element name\n i = skipWhitespace(xmlData, i);\n\n // Read attribute name\n let attributeName = \"\";\n while (i < xmlData.length && !/\\s/.test(xmlData[i])) {\n attributeName += xmlData[i];\n i++;\n }\n\n // Validate attribute name\n if (!validateEntityName(attributeName)) {\n throw new Error(`Invalid attribute name: \"${attributeName}\"`);\n }\n\n // Skip whitespace after attribute name\n i = skipWhitespace(xmlData, i);\n\n // Read attribute type\n let attributeType = \"\";\n if (xmlData.substring(i, i + 8).toUpperCase() === \"NOTATION\") {\n attributeType = \"NOTATION\";\n i += 8; // Move past \"NOTATION\"\n\n // Skip whitespace after \"NOTATION\"\n i = skipWhitespace(xmlData, i);\n\n // Expect '(' to start the list of notations\n if (xmlData[i] !== \"(\") {\n throw new Error(`Expected '(', found \"${xmlData[i]}\"`);\n }\n i++; // Move past '('\n\n // Read the list of allowed notations\n let allowedNotations = [];\n while (i < xmlData.length && xmlData[i] !== \")\") {\n let notation = \"\";\n while (i < xmlData.length && xmlData[i] !== \"|\" && xmlData[i] !== \")\") {\n notation += xmlData[i];\n i++;\n }\n\n // Validate notation name\n notation = notation.trim();\n if (!validateEntityName(notation)) {\n throw new Error(`Invalid notation name: \"${notation}\"`);\n }\n\n allowedNotations.push(notation);\n\n // Skip '|' separator or exit loop\n if (xmlData[i] === \"|\") {\n i++; // Move past '|'\n i = skipWhitespace(xmlData, i); // Skip optional whitespace after '|'\n }\n }\n\n if (xmlData[i] !== \")\") {\n throw new Error(\"Unterminated list of notations\");\n }\n i++; // Move past ')'\n\n // Store the allowed notations as part of the attribute type\n attributeType += \" (\" + allowedNotations.join(\"|\") + \")\";\n } else {\n // Handle simple types (e.g., CDATA, ID, IDREF, etc.)\n while (i < xmlData.length && !/\\s/.test(xmlData[i])) {\n attributeType += xmlData[i];\n i++;\n }\n\n // Validate simple attribute type\n const validTypes = [\"CDATA\", \"ID\", \"IDREF\", \"IDREFS\", \"ENTITY\", \"ENTITIES\", \"NMTOKEN\", \"NMTOKENS\"];\n if (!this.suppressValidationErr && !validTypes.includes(attributeType.toUpperCase())) {\n throw new Error(`Invalid attribute type: \"${attributeType}\"`);\n }\n }\n\n // Skip whitespace after attribute type\n i = skipWhitespace(xmlData, i);\n\n // Read default value\n let defaultValue = \"\";\n if (xmlData.substring(i, i + 8).toUpperCase() === \"#REQUIRED\") {\n defaultValue = \"#REQUIRED\";\n i += 8;\n } else if (xmlData.substring(i, i + 7).toUpperCase() === \"#IMPLIED\") {\n defaultValue = \"#IMPLIED\";\n i += 7;\n } else {\n [i, defaultValue] = this.readIdentifierVal(xmlData, i, \"ATTLIST\");\n }\n\n return {\n elementName,\n attributeName,\n attributeType,\n defaultValue,\n index: i\n }\n }\n}\n\n\n\nconst skipWhitespace = (data, index) => {\n while (index < data.length && /\\s/.test(data[index])) {\n index++;\n }\n return index;\n};\n\n\n\nfunction hasSeq(data, seq,i){\n for(let j=0;j<seq.length;j++){\n if(seq[j]!==data[i+j+1]) return false;\n }\n return true;\n}\n\nfunction validateEntityName(name){\n if (isName(name))\n\t return name;\n else\n throw new Error(`Invalid entity name ${name}`);\n}\n"],"names":[],"mappings":"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","x_google_ignoreList":[0]}
@@ -0,0 +1,53 @@
1
+ const defaultOptions = {
2
+ preserveOrder: false,
3
+ attributeNamePrefix: "@_",
4
+ attributesGroupName: false,
5
+ textNodeName: "#text",
6
+ ignoreAttributes: true,
7
+ removeNSPrefix: false,
8
+ // remove NS from tag name or attribute name if true
9
+ allowBooleanAttributes: false,
10
+ //a tag can have attributes without any value
11
+ //ignoreRootElement : false,
12
+ parseTagValue: true,
13
+ parseAttributeValue: false,
14
+ trimValues: true,
15
+ //Trim string values of tag and attributes
16
+ cdataPropName: false,
17
+ numberParseOptions: {
18
+ hex: true,
19
+ leadingZeros: true,
20
+ eNotation: true
21
+ },
22
+ tagValueProcessor: function(tagName, val) {
23
+ return val;
24
+ },
25
+ attributeValueProcessor: function(attrName, val) {
26
+ return val;
27
+ },
28
+ stopNodes: [],
29
+ //nested tags will not be parsed even for errors
30
+ alwaysCreateTextNode: false,
31
+ isArray: () => false,
32
+ commentPropName: false,
33
+ unpairedTags: [],
34
+ processEntities: true,
35
+ htmlEntities: false,
36
+ ignoreDeclaration: false,
37
+ ignorePiTags: false,
38
+ transformTagName: false,
39
+ transformAttributeName: false,
40
+ updateTag: function(tagName, jPath, attrs) {
41
+ return tagName;
42
+ },
43
+ // skipEmptyListItem: false
44
+ captureMetaData: false
45
+ };
46
+ const buildOptions = function(options) {
47
+ return Object.assign({}, defaultOptions, options);
48
+ };
49
+ export {
50
+ buildOptions,
51
+ defaultOptions
52
+ };
53
+ //# sourceMappingURL=OptionsBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OptionsBuilder.js","sources":["../../../../../node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js"],"sourcesContent":["\nexport const defaultOptions = {\n preserveOrder: false,\n attributeNamePrefix: '@_',\n attributesGroupName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n removeNSPrefix: false, // remove NS from tag name or attribute name if true\n allowBooleanAttributes: false, //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseTagValue: true,\n parseAttributeValue: false,\n trimValues: true, //Trim string values of tag and attributes\n cdataPropName: false,\n numberParseOptions: {\n hex: true,\n leadingZeros: true,\n eNotation: true\n },\n tagValueProcessor: function(tagName, val) {\n return val;\n },\n attributeValueProcessor: function(attrName, val) {\n return val;\n },\n stopNodes: [], //nested tags will not be parsed even for errors\n alwaysCreateTextNode: false,\n isArray: () => false,\n commentPropName: false,\n unpairedTags: [],\n processEntities: true,\n htmlEntities: false,\n ignoreDeclaration: false,\n ignorePiTags: false,\n transformTagName: false,\n transformAttributeName: false,\n updateTag: function(tagName, jPath, attrs){\n return tagName\n },\n // skipEmptyListItem: false\n captureMetaData: false,\n};\n \nexport const buildOptions = function(options) {\n return Object.assign({}, defaultOptions, options);\n};\n"],"names":[],"mappings":"AACY,MAAC,iBAAiB;AAAA,EAC1B,eAAe;AAAA,EACf,qBAAqB;AAAA,EACrB,qBAAqB;AAAA,EACrB,cAAc;AAAA,EACd,kBAAkB;AAAA,EAClB,gBAAgB;AAAA;AAAA,EAChB,wBAAwB;AAAA;AAAA;AAAA,EAExB,eAAe;AAAA,EACf,qBAAqB;AAAA,EACrB,YAAY;AAAA;AAAA,EACZ,eAAe;AAAA,EACf,oBAAoB;AAAA,IAClB,KAAK;AAAA,IACL,cAAc;AAAA,IACd,WAAW;AAAA,EACjB;AAAA,EACI,mBAAmB,SAAS,SAAS,KAAK;AACxC,WAAO;AAAA,EACT;AAAA,EACA,yBAAyB,SAAS,UAAU,KAAK;AAC/C,WAAO;AAAA,EACT;AAAA,EACA,WAAW,CAAA;AAAA;AAAA,EACX,sBAAsB;AAAA,EACtB,SAAS,MAAM;AAAA,EACf,iBAAiB;AAAA,EACjB,cAAc,CAAA;AAAA,EACd,iBAAiB;AAAA,EACjB,cAAc;AAAA,EACd,mBAAmB;AAAA,EACnB,cAAc;AAAA,EACd,kBAAkB;AAAA,EAClB,wBAAwB;AAAA,EACxB,WAAW,SAAS,SAAS,OAAO,OAAM;AACxC,WAAO;AAAA,EACT;AAAA;AAAA,EAEA,iBAAiB;AACrB;AAEY,MAAC,eAAe,SAAS,SAAS;AAC1C,SAAO,OAAO,OAAO,IAAI,gBAAgB,OAAO;AACpD;","x_google_ignoreList":[0]}
@@ -0,0 +1,515 @@
1
+ import { getAllMatches, isExist } from "../util.js";
2
+ import XmlNode from "./xmlNode.js";
3
+ import DocTypeReader from "./DocTypeReader.js";
4
+ import toNumber from "../../../strnum/strnum.js";
5
+ import getIgnoreAttributesFn from "../ignoreAttributes.js";
6
+ class OrderedObjParser {
7
+ constructor(options) {
8
+ this.options = options;
9
+ this.currentNode = null;
10
+ this.tagsNodeStack = [];
11
+ this.docTypeEntities = {};
12
+ this.lastEntities = {
13
+ "apos": { regex: /&(apos|#39|#x27);/g, val: "'" },
14
+ "gt": { regex: /&(gt|#62|#x3E);/g, val: ">" },
15
+ "lt": { regex: /&(lt|#60|#x3C);/g, val: "<" },
16
+ "quot": { regex: /&(quot|#34|#x22);/g, val: '"' }
17
+ };
18
+ this.ampEntity = { regex: /&(amp|#38|#x26);/g, val: "&" };
19
+ this.htmlEntities = {
20
+ "space": { regex: /&(nbsp|#160);/g, val: " " },
21
+ // "lt" : { regex: /&(lt|#60);/g, val: "<" },
22
+ // "gt" : { regex: /&(gt|#62);/g, val: ">" },
23
+ // "amp" : { regex: /&(amp|#38);/g, val: "&" },
24
+ // "quot" : { regex: /&(quot|#34);/g, val: "\"" },
25
+ // "apos" : { regex: /&(apos|#39);/g, val: "'" },
26
+ "cent": { regex: /&(cent|#162);/g, val: "¢" },
27
+ "pound": { regex: /&(pound|#163);/g, val: "£" },
28
+ "yen": { regex: /&(yen|#165);/g, val: "¥" },
29
+ "euro": { regex: /&(euro|#8364);/g, val: "€" },
30
+ "copyright": { regex: /&(copy|#169);/g, val: "©" },
31
+ "reg": { regex: /&(reg|#174);/g, val: "®" },
32
+ "inr": { regex: /&(inr|#8377);/g, val: "₹" },
33
+ "num_dec": { regex: /&#([0-9]{1,7});/g, val: (_, str) => String.fromCodePoint(Number.parseInt(str, 10)) },
34
+ "num_hex": { regex: /&#x([0-9a-fA-F]{1,6});/g, val: (_, str) => String.fromCodePoint(Number.parseInt(str, 16)) }
35
+ };
36
+ this.addExternalEntities = addExternalEntities;
37
+ this.parseXml = parseXml;
38
+ this.parseTextData = parseTextData;
39
+ this.resolveNameSpace = resolveNameSpace;
40
+ this.buildAttributesMap = buildAttributesMap;
41
+ this.isItStopNode = isItStopNode;
42
+ this.replaceEntitiesValue = replaceEntitiesValue;
43
+ this.readStopNodeData = readStopNodeData;
44
+ this.saveTextToParentTag = saveTextToParentTag;
45
+ this.addChild = addChild;
46
+ this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes);
47
+ if (this.options.stopNodes && this.options.stopNodes.length > 0) {
48
+ this.stopNodesExact = /* @__PURE__ */ new Set();
49
+ this.stopNodesWildcard = /* @__PURE__ */ new Set();
50
+ for (let i = 0; i < this.options.stopNodes.length; i++) {
51
+ const stopNodeExp = this.options.stopNodes[i];
52
+ if (typeof stopNodeExp !== "string") continue;
53
+ if (stopNodeExp.startsWith("*.")) {
54
+ this.stopNodesWildcard.add(stopNodeExp.substring(2));
55
+ } else {
56
+ this.stopNodesExact.add(stopNodeExp);
57
+ }
58
+ }
59
+ }
60
+ }
61
+ }
62
+ function addExternalEntities(externalEntities) {
63
+ const entKeys = Object.keys(externalEntities);
64
+ for (let i = 0; i < entKeys.length; i++) {
65
+ const ent = entKeys[i];
66
+ this.lastEntities[ent] = {
67
+ regex: new RegExp("&" + ent + ";", "g"),
68
+ val: externalEntities[ent]
69
+ };
70
+ }
71
+ }
72
+ function parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {
73
+ if (val !== void 0) {
74
+ if (this.options.trimValues && !dontTrim) {
75
+ val = val.trim();
76
+ }
77
+ if (val.length > 0) {
78
+ if (!escapeEntities) val = this.replaceEntitiesValue(val);
79
+ const newval = this.options.tagValueProcessor(tagName, val, jPath, hasAttributes, isLeafNode);
80
+ if (newval === null || newval === void 0) {
81
+ return val;
82
+ } else if (typeof newval !== typeof val || newval !== val) {
83
+ return newval;
84
+ } else if (this.options.trimValues) {
85
+ return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);
86
+ } else {
87
+ const trimmedVal = val.trim();
88
+ if (trimmedVal === val) {
89
+ return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);
90
+ } else {
91
+ return val;
92
+ }
93
+ }
94
+ }
95
+ }
96
+ }
97
+ function resolveNameSpace(tagname) {
98
+ if (this.options.removeNSPrefix) {
99
+ const tags = tagname.split(":");
100
+ const prefix = tagname.charAt(0) === "/" ? "/" : "";
101
+ if (tags[0] === "xmlns") {
102
+ return "";
103
+ }
104
+ if (tags.length === 2) {
105
+ tagname = prefix + tags[1];
106
+ }
107
+ }
108
+ return tagname;
109
+ }
110
+ const attrsRegx = new RegExp(`([^\\s=]+)\\s*(=\\s*(['"])([\\s\\S]*?)\\3)?`, "gm");
111
+ function buildAttributesMap(attrStr, jPath) {
112
+ if (this.options.ignoreAttributes !== true && typeof attrStr === "string") {
113
+ const matches = getAllMatches(attrStr, attrsRegx);
114
+ const len = matches.length;
115
+ const attrs = {};
116
+ for (let i = 0; i < len; i++) {
117
+ const attrName = this.resolveNameSpace(matches[i][1]);
118
+ if (this.ignoreAttributesFn(attrName, jPath)) {
119
+ continue;
120
+ }
121
+ let oldVal = matches[i][4];
122
+ let aName = this.options.attributeNamePrefix + attrName;
123
+ if (attrName.length) {
124
+ if (this.options.transformAttributeName) {
125
+ aName = this.options.transformAttributeName(aName);
126
+ }
127
+ if (aName === "__proto__") aName = "#__proto__";
128
+ if (oldVal !== void 0) {
129
+ if (this.options.trimValues) {
130
+ oldVal = oldVal.trim();
131
+ }
132
+ oldVal = this.replaceEntitiesValue(oldVal);
133
+ const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath);
134
+ if (newVal === null || newVal === void 0) {
135
+ attrs[aName] = oldVal;
136
+ } else if (typeof newVal !== typeof oldVal || newVal !== oldVal) {
137
+ attrs[aName] = newVal;
138
+ } else {
139
+ attrs[aName] = parseValue(
140
+ oldVal,
141
+ this.options.parseAttributeValue,
142
+ this.options.numberParseOptions
143
+ );
144
+ }
145
+ } else if (this.options.allowBooleanAttributes) {
146
+ attrs[aName] = true;
147
+ }
148
+ }
149
+ }
150
+ if (!Object.keys(attrs).length) {
151
+ return;
152
+ }
153
+ if (this.options.attributesGroupName) {
154
+ const attrCollection = {};
155
+ attrCollection[this.options.attributesGroupName] = attrs;
156
+ return attrCollection;
157
+ }
158
+ return attrs;
159
+ }
160
+ }
161
+ const parseXml = function(xmlData) {
162
+ xmlData = xmlData.replace(/\r\n?/g, "\n");
163
+ const xmlObj = new XmlNode("!xml");
164
+ let currentNode = xmlObj;
165
+ let textData = "";
166
+ let jPath = "";
167
+ const docTypeReader = new DocTypeReader(this.options.processEntities);
168
+ for (let i = 0; i < xmlData.length; i++) {
169
+ const ch = xmlData[i];
170
+ if (ch === "<") {
171
+ if (xmlData[i + 1] === "/") {
172
+ const closeIndex = findClosingIndex(xmlData, ">", i, "Closing Tag is not closed.");
173
+ let tagName = xmlData.substring(i + 2, closeIndex).trim();
174
+ if (this.options.removeNSPrefix) {
175
+ const colonIndex = tagName.indexOf(":");
176
+ if (colonIndex !== -1) {
177
+ tagName = tagName.substr(colonIndex + 1);
178
+ }
179
+ }
180
+ if (this.options.transformTagName) {
181
+ tagName = this.options.transformTagName(tagName);
182
+ }
183
+ if (currentNode) {
184
+ textData = this.saveTextToParentTag(textData, currentNode, jPath);
185
+ }
186
+ const lastTagName = jPath.substring(jPath.lastIndexOf(".") + 1);
187
+ if (tagName && this.options.unpairedTags.indexOf(tagName) !== -1) {
188
+ throw new Error(`Unpaired tag can not be used as closing tag: </${tagName}>`);
189
+ }
190
+ let propIndex = 0;
191
+ if (lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1) {
192
+ propIndex = jPath.lastIndexOf(".", jPath.lastIndexOf(".") - 1);
193
+ this.tagsNodeStack.pop();
194
+ } else {
195
+ propIndex = jPath.lastIndexOf(".");
196
+ }
197
+ jPath = jPath.substring(0, propIndex);
198
+ currentNode = this.tagsNodeStack.pop();
199
+ textData = "";
200
+ i = closeIndex;
201
+ } else if (xmlData[i + 1] === "?") {
202
+ let tagData = readTagExp(xmlData, i, false, "?>");
203
+ if (!tagData) throw new Error("Pi Tag is not closed.");
204
+ textData = this.saveTextToParentTag(textData, currentNode, jPath);
205
+ if (this.options.ignoreDeclaration && tagData.tagName === "?xml" || this.options.ignorePiTags) ;
206
+ else {
207
+ const childNode = new XmlNode(tagData.tagName);
208
+ childNode.add(this.options.textNodeName, "");
209
+ if (tagData.tagName !== tagData.tagExp && tagData.attrExpPresent) {
210
+ childNode[":@"] = this.buildAttributesMap(tagData.tagExp, jPath);
211
+ }
212
+ this.addChild(currentNode, childNode, jPath, i);
213
+ }
214
+ i = tagData.closeIndex + 1;
215
+ } else if (xmlData.substr(i + 1, 3) === "!--") {
216
+ const endIndex = findClosingIndex(xmlData, "-->", i + 4, "Comment is not closed.");
217
+ if (this.options.commentPropName) {
218
+ const comment = xmlData.substring(i + 4, endIndex - 2);
219
+ textData = this.saveTextToParentTag(textData, currentNode, jPath);
220
+ currentNode.add(this.options.commentPropName, [{ [this.options.textNodeName]: comment }]);
221
+ }
222
+ i = endIndex;
223
+ } else if (xmlData.substr(i + 1, 2) === "!D") {
224
+ const result = docTypeReader.readDocType(xmlData, i);
225
+ this.docTypeEntities = result.entities;
226
+ i = result.i;
227
+ } else if (xmlData.substr(i + 1, 2) === "![") {
228
+ const closeIndex = findClosingIndex(xmlData, "]]>", i, "CDATA is not closed.") - 2;
229
+ const tagExp = xmlData.substring(i + 9, closeIndex);
230
+ textData = this.saveTextToParentTag(textData, currentNode, jPath);
231
+ let val = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true, true);
232
+ if (val == void 0) val = "";
233
+ if (this.options.cdataPropName) {
234
+ currentNode.add(this.options.cdataPropName, [{ [this.options.textNodeName]: tagExp }]);
235
+ } else {
236
+ currentNode.add(this.options.textNodeName, val);
237
+ }
238
+ i = closeIndex + 2;
239
+ } else {
240
+ let result = readTagExp(xmlData, i, this.options.removeNSPrefix);
241
+ let tagName = result.tagName;
242
+ const rawTagName = result.rawTagName;
243
+ let tagExp = result.tagExp;
244
+ let attrExpPresent = result.attrExpPresent;
245
+ let closeIndex = result.closeIndex;
246
+ if (this.options.transformTagName) {
247
+ const newTagName = this.options.transformTagName(tagName);
248
+ if (tagExp === tagName) {
249
+ tagExp = newTagName;
250
+ }
251
+ tagName = newTagName;
252
+ }
253
+ if (currentNode && textData) {
254
+ if (currentNode.tagname !== "!xml") {
255
+ textData = this.saveTextToParentTag(textData, currentNode, jPath, false);
256
+ }
257
+ }
258
+ const lastTag = currentNode;
259
+ if (lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1) {
260
+ currentNode = this.tagsNodeStack.pop();
261
+ jPath = jPath.substring(0, jPath.lastIndexOf("."));
262
+ }
263
+ if (tagName !== xmlObj.tagname) {
264
+ jPath += jPath ? "." + tagName : tagName;
265
+ }
266
+ const startIndex = i;
267
+ if (this.isItStopNode(this.stopNodesExact, this.stopNodesWildcard, jPath, tagName)) {
268
+ let tagContent = "";
269
+ if (tagExp.length > 0 && tagExp.lastIndexOf("/") === tagExp.length - 1) {
270
+ if (tagName[tagName.length - 1] === "/") {
271
+ tagName = tagName.substr(0, tagName.length - 1);
272
+ jPath = jPath.substr(0, jPath.length - 1);
273
+ tagExp = tagName;
274
+ } else {
275
+ tagExp = tagExp.substr(0, tagExp.length - 1);
276
+ }
277
+ i = result.closeIndex;
278
+ } else if (this.options.unpairedTags.indexOf(tagName) !== -1) {
279
+ i = result.closeIndex;
280
+ } else {
281
+ const result2 = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1);
282
+ if (!result2) throw new Error(`Unexpected end of ${rawTagName}`);
283
+ i = result2.i;
284
+ tagContent = result2.tagContent;
285
+ }
286
+ const childNode = new XmlNode(tagName);
287
+ if (tagName !== tagExp && attrExpPresent) {
288
+ childNode[":@"] = this.buildAttributesMap(
289
+ tagExp,
290
+ jPath
291
+ );
292
+ }
293
+ if (tagContent) {
294
+ tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);
295
+ }
296
+ jPath = jPath.substr(0, jPath.lastIndexOf("."));
297
+ childNode.add(this.options.textNodeName, tagContent);
298
+ this.addChild(currentNode, childNode, jPath, startIndex);
299
+ } else {
300
+ if (tagExp.length > 0 && tagExp.lastIndexOf("/") === tagExp.length - 1) {
301
+ if (tagName[tagName.length - 1] === "/") {
302
+ tagName = tagName.substr(0, tagName.length - 1);
303
+ jPath = jPath.substr(0, jPath.length - 1);
304
+ tagExp = tagName;
305
+ } else {
306
+ tagExp = tagExp.substr(0, tagExp.length - 1);
307
+ }
308
+ if (this.options.transformTagName) {
309
+ const newTagName = this.options.transformTagName(tagName);
310
+ if (tagExp === tagName) {
311
+ tagExp = newTagName;
312
+ }
313
+ tagName = newTagName;
314
+ }
315
+ const childNode = new XmlNode(tagName);
316
+ if (tagName !== tagExp && attrExpPresent) {
317
+ childNode[":@"] = this.buildAttributesMap(tagExp, jPath);
318
+ }
319
+ this.addChild(currentNode, childNode, jPath, startIndex);
320
+ jPath = jPath.substr(0, jPath.lastIndexOf("."));
321
+ } else {
322
+ const childNode = new XmlNode(tagName);
323
+ this.tagsNodeStack.push(currentNode);
324
+ if (tagName !== tagExp && attrExpPresent) {
325
+ childNode[":@"] = this.buildAttributesMap(tagExp, jPath);
326
+ }
327
+ this.addChild(currentNode, childNode, jPath, startIndex);
328
+ currentNode = childNode;
329
+ }
330
+ textData = "";
331
+ i = closeIndex;
332
+ }
333
+ }
334
+ } else {
335
+ textData += xmlData[i];
336
+ }
337
+ }
338
+ return xmlObj.child;
339
+ };
340
+ function addChild(currentNode, childNode, jPath, startIndex) {
341
+ if (!this.options.captureMetaData) startIndex = void 0;
342
+ const result = this.options.updateTag(childNode.tagname, jPath, childNode[":@"]);
343
+ if (result === false) ;
344
+ else if (typeof result === "string") {
345
+ childNode.tagname = result;
346
+ currentNode.addChild(childNode, startIndex);
347
+ } else {
348
+ currentNode.addChild(childNode, startIndex);
349
+ }
350
+ }
351
+ const replaceEntitiesValue = function(val) {
352
+ if (this.options.processEntities) {
353
+ for (let entityName in this.docTypeEntities) {
354
+ const entity = this.docTypeEntities[entityName];
355
+ val = val.replace(entity.regx, entity.val);
356
+ }
357
+ for (let entityName in this.lastEntities) {
358
+ const entity = this.lastEntities[entityName];
359
+ val = val.replace(entity.regex, entity.val);
360
+ }
361
+ if (this.options.htmlEntities) {
362
+ for (let entityName in this.htmlEntities) {
363
+ const entity = this.htmlEntities[entityName];
364
+ val = val.replace(entity.regex, entity.val);
365
+ }
366
+ }
367
+ val = val.replace(this.ampEntity.regex, this.ampEntity.val);
368
+ }
369
+ return val;
370
+ };
371
+ function saveTextToParentTag(textData, currentNode, jPath, isLeafNode) {
372
+ if (textData) {
373
+ if (isLeafNode === void 0) isLeafNode = currentNode.child.length === 0;
374
+ textData = this.parseTextData(
375
+ textData,
376
+ currentNode.tagname,
377
+ jPath,
378
+ false,
379
+ currentNode[":@"] ? Object.keys(currentNode[":@"]).length !== 0 : false,
380
+ isLeafNode
381
+ );
382
+ if (textData !== void 0 && textData !== "")
383
+ currentNode.add(this.options.textNodeName, textData);
384
+ textData = "";
385
+ }
386
+ return textData;
387
+ }
388
+ function isItStopNode(stopNodesExact, stopNodesWildcard, jPath, currentTagName) {
389
+ if (stopNodesWildcard && stopNodesWildcard.has(currentTagName)) return true;
390
+ if (stopNodesExact && stopNodesExact.has(jPath)) return true;
391
+ return false;
392
+ }
393
+ function tagExpWithClosingIndex(xmlData, i, closingChar = ">") {
394
+ let attrBoundary;
395
+ let tagExp = "";
396
+ for (let index = i; index < xmlData.length; index++) {
397
+ let ch = xmlData[index];
398
+ if (attrBoundary) {
399
+ if (ch === attrBoundary) attrBoundary = "";
400
+ } else if (ch === '"' || ch === "'") {
401
+ attrBoundary = ch;
402
+ } else if (ch === closingChar[0]) {
403
+ if (closingChar[1]) {
404
+ if (xmlData[index + 1] === closingChar[1]) {
405
+ return {
406
+ data: tagExp,
407
+ index
408
+ };
409
+ }
410
+ } else {
411
+ return {
412
+ data: tagExp,
413
+ index
414
+ };
415
+ }
416
+ } else if (ch === " ") {
417
+ ch = " ";
418
+ }
419
+ tagExp += ch;
420
+ }
421
+ }
422
+ function findClosingIndex(xmlData, str, i, errMsg) {
423
+ const closingIndex = xmlData.indexOf(str, i);
424
+ if (closingIndex === -1) {
425
+ throw new Error(errMsg);
426
+ } else {
427
+ return closingIndex + str.length - 1;
428
+ }
429
+ }
430
+ function readTagExp(xmlData, i, removeNSPrefix, closingChar = ">") {
431
+ const result = tagExpWithClosingIndex(xmlData, i + 1, closingChar);
432
+ if (!result) return;
433
+ let tagExp = result.data;
434
+ const closeIndex = result.index;
435
+ const separatorIndex = tagExp.search(/\s/);
436
+ let tagName = tagExp;
437
+ let attrExpPresent = true;
438
+ if (separatorIndex !== -1) {
439
+ tagName = tagExp.substring(0, separatorIndex);
440
+ tagExp = tagExp.substring(separatorIndex + 1).trimStart();
441
+ }
442
+ const rawTagName = tagName;
443
+ if (removeNSPrefix) {
444
+ const colonIndex = tagName.indexOf(":");
445
+ if (colonIndex !== -1) {
446
+ tagName = tagName.substr(colonIndex + 1);
447
+ attrExpPresent = tagName !== result.data.substr(colonIndex + 1);
448
+ }
449
+ }
450
+ return {
451
+ tagName,
452
+ tagExp,
453
+ closeIndex,
454
+ attrExpPresent,
455
+ rawTagName
456
+ };
457
+ }
458
+ function readStopNodeData(xmlData, tagName, i) {
459
+ const startIndex = i;
460
+ let openTagCount = 1;
461
+ for (; i < xmlData.length; i++) {
462
+ if (xmlData[i] === "<") {
463
+ if (xmlData[i + 1] === "/") {
464
+ const closeIndex = findClosingIndex(xmlData, ">", i, `${tagName} is not closed`);
465
+ let closeTagName = xmlData.substring(i + 2, closeIndex).trim();
466
+ if (closeTagName === tagName) {
467
+ openTagCount--;
468
+ if (openTagCount === 0) {
469
+ return {
470
+ tagContent: xmlData.substring(startIndex, i),
471
+ i: closeIndex
472
+ };
473
+ }
474
+ }
475
+ i = closeIndex;
476
+ } else if (xmlData[i + 1] === "?") {
477
+ const closeIndex = findClosingIndex(xmlData, "?>", i + 1, "StopNode is not closed.");
478
+ i = closeIndex;
479
+ } else if (xmlData.substr(i + 1, 3) === "!--") {
480
+ const closeIndex = findClosingIndex(xmlData, "-->", i + 3, "StopNode is not closed.");
481
+ i = closeIndex;
482
+ } else if (xmlData.substr(i + 1, 2) === "![") {
483
+ const closeIndex = findClosingIndex(xmlData, "]]>", i, "StopNode is not closed.") - 2;
484
+ i = closeIndex;
485
+ } else {
486
+ const tagData = readTagExp(xmlData, i, ">");
487
+ if (tagData) {
488
+ const openTagName = tagData && tagData.tagName;
489
+ if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length - 1] !== "/") {
490
+ openTagCount++;
491
+ }
492
+ i = tagData.closeIndex;
493
+ }
494
+ }
495
+ }
496
+ }
497
+ }
498
+ function parseValue(val, shouldParse, options) {
499
+ if (shouldParse && typeof val === "string") {
500
+ const newval = val.trim();
501
+ if (newval === "true") return true;
502
+ else if (newval === "false") return false;
503
+ else return toNumber(val, options);
504
+ } else {
505
+ if (isExist(val)) {
506
+ return val;
507
+ } else {
508
+ return "";
509
+ }
510
+ }
511
+ }
512
+ export {
513
+ OrderedObjParser as default
514
+ };
515
+ //# sourceMappingURL=OrderedObjParser.js.map