staticalize 0.2.2

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 (433) hide show
  1. package/README.md +43 -0
  2. package/esm/_dnt.polyfills.d.ts +117 -0
  3. package/esm/_dnt.polyfills.d.ts.map +1 -0
  4. package/esm/_dnt.polyfills.js +144 -0
  5. package/esm/_dnt.polyfills.js.map +1 -0
  6. package/esm/_dnt.shims.d.ts +6 -0
  7. package/esm/_dnt.shims.d.ts.map +1 -0
  8. package/esm/_dnt.shims.js +62 -0
  9. package/esm/_dnt.shims.js.map +1 -0
  10. package/esm/config.d.ts +6 -0
  11. package/esm/config.d.ts.map +1 -0
  12. package/esm/config.js +25 -0
  13. package/esm/config.js.map +1 -0
  14. package/esm/deno.d.ts +45 -0
  15. package/esm/deno.d.ts.map +1 -0
  16. package/esm/deno.js +43 -0
  17. package/esm/deno.js.map +1 -0
  18. package/esm/deps/jsr.io/@libs/xml/6.0.8/_types.d.ts +48 -0
  19. package/esm/deps/jsr.io/@libs/xml/6.0.8/_types.d.ts.map +1 -0
  20. package/esm/deps/jsr.io/@libs/xml/6.0.8/_types.js +2 -0
  21. package/esm/deps/jsr.io/@libs/xml/6.0.8/_types.js.map +1 -0
  22. package/esm/deps/jsr.io/@libs/xml/6.0.8/parse.d.ts +127 -0
  23. package/esm/deps/jsr.io/@libs/xml/6.0.8/parse.d.ts.map +1 -0
  24. package/esm/deps/jsr.io/@libs/xml/6.0.8/parse.js +383 -0
  25. package/esm/deps/jsr.io/@libs/xml/6.0.8/parse.js.map +1 -0
  26. package/esm/deps/jsr.io/@libs/xml/6.0.8/stringify.d.ts +93 -0
  27. package/esm/deps/jsr.io/@libs/xml/6.0.8/stringify.d.ts.map +1 -0
  28. package/esm/deps/jsr.io/@libs/xml/6.0.8/stringify.js +262 -0
  29. package/esm/deps/jsr.io/@libs/xml/6.0.8/stringify.js.map +1 -0
  30. package/esm/deps/jsr.io/@libs/xml/6.0.8/wasm_xml_parser/wasm_xml_parser.d.ts +37 -0
  31. package/esm/deps/jsr.io/@libs/xml/6.0.8/wasm_xml_parser/wasm_xml_parser.d.ts.map +1 -0
  32. package/esm/deps/jsr.io/@libs/xml/6.0.8/wasm_xml_parser/wasm_xml_parser.js +90 -0
  33. package/esm/deps/jsr.io/@libs/xml/6.0.8/wasm_xml_parser/wasm_xml_parser.js.map +1 -0
  34. package/esm/deps/jsr.io/@std/fs/1.0.22/_get_file_info_type.d.ts +13 -0
  35. package/esm/deps/jsr.io/@std/fs/1.0.22/_get_file_info_type.d.ts.map +1 -0
  36. package/esm/deps/jsr.io/@std/fs/1.0.22/_get_file_info_type.js +19 -0
  37. package/esm/deps/jsr.io/@std/fs/1.0.22/_get_file_info_type.js.map +1 -0
  38. package/esm/deps/jsr.io/@std/fs/1.0.22/ensure_dir.d.ts +49 -0
  39. package/esm/deps/jsr.io/@std/fs/1.0.22/ensure_dir.d.ts.map +1 -0
  40. package/esm/deps/jsr.io/@std/fs/1.0.22/ensure_dir.js +103 -0
  41. package/esm/deps/jsr.io/@std/fs/1.0.22/ensure_dir.js.map +1 -0
  42. package/esm/deps/jsr.io/@std/internal/1.0.12/_os.d.ts +2 -0
  43. package/esm/deps/jsr.io/@std/internal/1.0.12/_os.d.ts.map +1 -0
  44. package/esm/deps/jsr.io/@std/internal/1.0.12/_os.js +13 -0
  45. package/esm/deps/jsr.io/@std/internal/1.0.12/_os.js.map +1 -0
  46. package/esm/deps/jsr.io/@std/internal/1.0.12/os.d.ts +3 -0
  47. package/esm/deps/jsr.io/@std/internal/1.0.12/os.d.ts.map +1 -0
  48. package/esm/deps/jsr.io/@std/internal/1.0.12/os.js +6 -0
  49. package/esm/deps/jsr.io/@std/internal/1.0.12/os.js.map +1 -0
  50. package/esm/deps/jsr.io/@std/path/1.1.4/_common/assert_path.d.ts +2 -0
  51. package/esm/deps/jsr.io/@std/path/1.1.4/_common/assert_path.d.ts.map +1 -0
  52. package/esm/deps/jsr.io/@std/path/1.1.4/_common/assert_path.js +8 -0
  53. package/esm/deps/jsr.io/@std/path/1.1.4/_common/assert_path.js.map +1 -0
  54. package/esm/deps/jsr.io/@std/path/1.1.4/_common/basename.d.ts +4 -0
  55. package/esm/deps/jsr.io/@std/path/1.1.4/_common/basename.d.ts.map +1 -0
  56. package/esm/deps/jsr.io/@std/path/1.1.4/_common/basename.js +41 -0
  57. package/esm/deps/jsr.io/@std/path/1.1.4/_common/basename.js.map +1 -0
  58. package/esm/deps/jsr.io/@std/path/1.1.4/_common/common.d.ts +2 -0
  59. package/esm/deps/jsr.io/@std/path/1.1.4/_common/common.d.ts.map +1 -0
  60. package/esm/deps/jsr.io/@std/path/1.1.4/_common/common.js +24 -0
  61. package/esm/deps/jsr.io/@std/path/1.1.4/_common/common.js.map +1 -0
  62. package/esm/deps/jsr.io/@std/path/1.1.4/_common/constants.d.ts +40 -0
  63. package/esm/deps/jsr.io/@std/path/1.1.4/_common/constants.d.ts.map +1 -0
  64. package/esm/deps/jsr.io/@std/path/1.1.4/_common/constants.js +47 -0
  65. package/esm/deps/jsr.io/@std/path/1.1.4/_common/constants.js.map +1 -0
  66. package/esm/deps/jsr.io/@std/path/1.1.4/_common/dirname.d.ts +2 -0
  67. package/esm/deps/jsr.io/@std/path/1.1.4/_common/dirname.d.ts.map +1 -0
  68. package/esm/deps/jsr.io/@std/path/1.1.4/_common/dirname.js +9 -0
  69. package/esm/deps/jsr.io/@std/path/1.1.4/_common/dirname.js.map +1 -0
  70. package/esm/deps/jsr.io/@std/path/1.1.4/_common/format.d.ts +4 -0
  71. package/esm/deps/jsr.io/@std/path/1.1.4/_common/format.d.ts.map +1 -0
  72. package/esm/deps/jsr.io/@std/path/1.1.4/_common/format.js +20 -0
  73. package/esm/deps/jsr.io/@std/path/1.1.4/_common/format.js.map +1 -0
  74. package/esm/deps/jsr.io/@std/path/1.1.4/_common/from_file_url.d.ts +2 -0
  75. package/esm/deps/jsr.io/@std/path/1.1.4/_common/from_file_url.d.ts.map +1 -0
  76. package/esm/deps/jsr.io/@std/path/1.1.4/_common/from_file_url.js +10 -0
  77. package/esm/deps/jsr.io/@std/path/1.1.4/_common/from_file_url.js.map +1 -0
  78. package/esm/deps/jsr.io/@std/path/1.1.4/_common/glob_to_reg_exp.d.ts +35 -0
  79. package/esm/deps/jsr.io/@std/path/1.1.4/_common/glob_to_reg_exp.d.ts.map +1 -0
  80. package/esm/deps/jsr.io/@std/path/1.1.4/_common/glob_to_reg_exp.js +236 -0
  81. package/esm/deps/jsr.io/@std/path/1.1.4/_common/glob_to_reg_exp.js.map +1 -0
  82. package/esm/deps/jsr.io/@std/path/1.1.4/_common/normalize.d.ts +2 -0
  83. package/esm/deps/jsr.io/@std/path/1.1.4/_common/normalize.d.ts.map +1 -0
  84. package/esm/deps/jsr.io/@std/path/1.1.4/_common/normalize.js +9 -0
  85. package/esm/deps/jsr.io/@std/path/1.1.4/_common/normalize.js.map +1 -0
  86. package/esm/deps/jsr.io/@std/path/1.1.4/_common/normalize_string.d.ts +2 -0
  87. package/esm/deps/jsr.io/@std/path/1.1.4/_common/normalize_string.d.ts.map +1 -0
  88. package/esm/deps/jsr.io/@std/path/1.1.4/_common/normalize_string.js +78 -0
  89. package/esm/deps/jsr.io/@std/path/1.1.4/_common/normalize_string.js.map +1 -0
  90. package/esm/deps/jsr.io/@std/path/1.1.4/_common/relative.d.ts +2 -0
  91. package/esm/deps/jsr.io/@std/path/1.1.4/_common/relative.d.ts.map +1 -0
  92. package/esm/deps/jsr.io/@std/path/1.1.4/_common/relative.js +10 -0
  93. package/esm/deps/jsr.io/@std/path/1.1.4/_common/relative.js.map +1 -0
  94. package/esm/deps/jsr.io/@std/path/1.1.4/_common/strip_trailing_separators.d.ts +2 -0
  95. package/esm/deps/jsr.io/@std/path/1.1.4/_common/strip_trailing_separators.d.ts.map +1 -0
  96. package/esm/deps/jsr.io/@std/path/1.1.4/_common/strip_trailing_separators.js +20 -0
  97. package/esm/deps/jsr.io/@std/path/1.1.4/_common/strip_trailing_separators.js.map +1 -0
  98. package/esm/deps/jsr.io/@std/path/1.1.4/_common/to_file_url.d.ts +2 -0
  99. package/esm/deps/jsr.io/@std/path/1.1.4/_common/to_file_url.d.ts.map +1 -0
  100. package/esm/deps/jsr.io/@std/path/1.1.4/_common/to_file_url.js +16 -0
  101. package/esm/deps/jsr.io/@std/path/1.1.4/_common/to_file_url.js.map +1 -0
  102. package/esm/deps/jsr.io/@std/path/1.1.4/basename.d.ts +27 -0
  103. package/esm/deps/jsr.io/@std/path/1.1.4/basename.d.ts.map +1 -0
  104. package/esm/deps/jsr.io/@std/path/1.1.4/basename.js +36 -0
  105. package/esm/deps/jsr.io/@std/path/1.1.4/basename.js.map +1 -0
  106. package/esm/deps/jsr.io/@std/path/1.1.4/common.d.ts +28 -0
  107. package/esm/deps/jsr.io/@std/path/1.1.4/common.d.ts.map +1 -0
  108. package/esm/deps/jsr.io/@std/path/1.1.4/common.js +34 -0
  109. package/esm/deps/jsr.io/@std/path/1.1.4/common.js.map +1 -0
  110. package/esm/deps/jsr.io/@std/path/1.1.4/constants.d.ts +15 -0
  111. package/esm/deps/jsr.io/@std/path/1.1.4/constants.d.ts.map +1 -0
  112. package/esm/deps/jsr.io/@std/path/1.1.4/constants.js +18 -0
  113. package/esm/deps/jsr.io/@std/path/1.1.4/constants.js.map +1 -0
  114. package/esm/deps/jsr.io/@std/path/1.1.4/dirname.d.ts +22 -0
  115. package/esm/deps/jsr.io/@std/path/1.1.4/dirname.d.ts.map +1 -0
  116. package/esm/deps/jsr.io/@std/path/1.1.4/dirname.js +29 -0
  117. package/esm/deps/jsr.io/@std/path/1.1.4/dirname.js.map +1 -0
  118. package/esm/deps/jsr.io/@std/path/1.1.4/extname.d.ts +22 -0
  119. package/esm/deps/jsr.io/@std/path/1.1.4/extname.d.ts.map +1 -0
  120. package/esm/deps/jsr.io/@std/path/1.1.4/extname.js +29 -0
  121. package/esm/deps/jsr.io/@std/path/1.1.4/extname.js.map +1 -0
  122. package/esm/deps/jsr.io/@std/path/1.1.4/format.d.ts +22 -0
  123. package/esm/deps/jsr.io/@std/path/1.1.4/format.d.ts.map +1 -0
  124. package/esm/deps/jsr.io/@std/path/1.1.4/format.js +28 -0
  125. package/esm/deps/jsr.io/@std/path/1.1.4/format.js.map +1 -0
  126. package/esm/deps/jsr.io/@std/path/1.1.4/from_file_url.d.ts +22 -0
  127. package/esm/deps/jsr.io/@std/path/1.1.4/from_file_url.d.ts.map +1 -0
  128. package/esm/deps/jsr.io/@std/path/1.1.4/from_file_url.js +29 -0
  129. package/esm/deps/jsr.io/@std/path/1.1.4/from_file_url.js.map +1 -0
  130. package/esm/deps/jsr.io/@std/path/1.1.4/glob_to_regexp.d.ts +77 -0
  131. package/esm/deps/jsr.io/@std/path/1.1.4/glob_to_regexp.d.ts.map +1 -0
  132. package/esm/deps/jsr.io/@std/path/1.1.4/glob_to_regexp.js +84 -0
  133. package/esm/deps/jsr.io/@std/path/1.1.4/glob_to_regexp.js.map +1 -0
  134. package/esm/deps/jsr.io/@std/path/1.1.4/is_absolute.d.ts +22 -0
  135. package/esm/deps/jsr.io/@std/path/1.1.4/is_absolute.d.ts.map +1 -0
  136. package/esm/deps/jsr.io/@std/path/1.1.4/is_absolute.js +29 -0
  137. package/esm/deps/jsr.io/@std/path/1.1.4/is_absolute.js.map +1 -0
  138. package/esm/deps/jsr.io/@std/path/1.1.4/is_glob.d.ts +17 -0
  139. package/esm/deps/jsr.io/@std/path/1.1.4/is_glob.d.ts.map +1 -0
  140. package/esm/deps/jsr.io/@std/path/1.1.4/is_glob.js +43 -0
  141. package/esm/deps/jsr.io/@std/path/1.1.4/is_glob.js.map +1 -0
  142. package/esm/deps/jsr.io/@std/path/1.1.4/join.d.ts +23 -0
  143. package/esm/deps/jsr.io/@std/path/1.1.4/join.d.ts.map +1 -0
  144. package/esm/deps/jsr.io/@std/path/1.1.4/join.js +30 -0
  145. package/esm/deps/jsr.io/@std/path/1.1.4/join.js.map +1 -0
  146. package/esm/deps/jsr.io/@std/path/1.1.4/join_globs.d.ts +28 -0
  147. package/esm/deps/jsr.io/@std/path/1.1.4/join_globs.d.ts.map +1 -0
  148. package/esm/deps/jsr.io/@std/path/1.1.4/join_globs.js +35 -0
  149. package/esm/deps/jsr.io/@std/path/1.1.4/join_globs.js.map +1 -0
  150. package/esm/deps/jsr.io/@std/path/1.1.4/mod.d.ts +213 -0
  151. package/esm/deps/jsr.io/@std/path/1.1.4/mod.d.ts.map +1 -0
  152. package/esm/deps/jsr.io/@std/path/1.1.4/mod.js +217 -0
  153. package/esm/deps/jsr.io/@std/path/1.1.4/mod.js.map +1 -0
  154. package/esm/deps/jsr.io/@std/path/1.1.4/normalize.d.ts +26 -0
  155. package/esm/deps/jsr.io/@std/path/1.1.4/normalize.d.ts.map +1 -0
  156. package/esm/deps/jsr.io/@std/path/1.1.4/normalize.js +33 -0
  157. package/esm/deps/jsr.io/@std/path/1.1.4/normalize.js.map +1 -0
  158. package/esm/deps/jsr.io/@std/path/1.1.4/normalize_glob.d.ts +29 -0
  159. package/esm/deps/jsr.io/@std/path/1.1.4/normalize_glob.d.ts.map +1 -0
  160. package/esm/deps/jsr.io/@std/path/1.1.4/normalize_glob.js +36 -0
  161. package/esm/deps/jsr.io/@std/path/1.1.4/normalize_glob.js.map +1 -0
  162. package/esm/deps/jsr.io/@std/path/1.1.4/parse.d.ts +35 -0
  163. package/esm/deps/jsr.io/@std/path/1.1.4/parse.d.ts.map +1 -0
  164. package/esm/deps/jsr.io/@std/path/1.1.4/parse.js +40 -0
  165. package/esm/deps/jsr.io/@std/path/1.1.4/parse.js.map +1 -0
  166. package/esm/deps/jsr.io/@std/path/1.1.4/posix/_util.d.ts +2 -0
  167. package/esm/deps/jsr.io/@std/path/1.1.4/posix/_util.d.ts.map +1 -0
  168. package/esm/deps/jsr.io/@std/path/1.1.4/posix/_util.js +9 -0
  169. package/esm/deps/jsr.io/@std/path/1.1.4/posix/_util.js.map +1 -0
  170. package/esm/deps/jsr.io/@std/path/1.1.4/posix/basename.d.ts +39 -0
  171. package/esm/deps/jsr.io/@std/path/1.1.4/posix/basename.d.ts.map +1 -0
  172. package/esm/deps/jsr.io/@std/path/1.1.4/posix/basename.js +53 -0
  173. package/esm/deps/jsr.io/@std/path/1.1.4/posix/basename.js.map +1 -0
  174. package/esm/deps/jsr.io/@std/path/1.1.4/posix/constants.d.ts +13 -0
  175. package/esm/deps/jsr.io/@std/path/1.1.4/posix/constants.d.ts.map +1 -0
  176. package/esm/deps/jsr.io/@std/path/1.1.4/posix/constants.js +15 -0
  177. package/esm/deps/jsr.io/@std/path/1.1.4/posix/constants.js.map +1 -0
  178. package/esm/deps/jsr.io/@std/path/1.1.4/posix/dirname.d.ts +30 -0
  179. package/esm/deps/jsr.io/@std/path/1.1.4/posix/dirname.d.ts.map +1 -0
  180. package/esm/deps/jsr.io/@std/path/1.1.4/posix/dirname.js +65 -0
  181. package/esm/deps/jsr.io/@std/path/1.1.4/posix/dirname.js.map +1 -0
  182. package/esm/deps/jsr.io/@std/path/1.1.4/posix/extname.d.ts +37 -0
  183. package/esm/deps/jsr.io/@std/path/1.1.4/posix/extname.d.ts.map +1 -0
  184. package/esm/deps/jsr.io/@std/path/1.1.4/posix/extname.js +94 -0
  185. package/esm/deps/jsr.io/@std/path/1.1.4/posix/extname.js.map +1 -0
  186. package/esm/deps/jsr.io/@std/path/1.1.4/posix/format.d.ts +24 -0
  187. package/esm/deps/jsr.io/@std/path/1.1.4/posix/format.d.ts.map +1 -0
  188. package/esm/deps/jsr.io/@std/path/1.1.4/posix/format.js +29 -0
  189. package/esm/deps/jsr.io/@std/path/1.1.4/posix/format.js.map +1 -0
  190. package/esm/deps/jsr.io/@std/path/1.1.4/posix/from_file_url.d.ts +16 -0
  191. package/esm/deps/jsr.io/@std/path/1.1.4/posix/from_file_url.d.ts.map +1 -0
  192. package/esm/deps/jsr.io/@std/path/1.1.4/posix/from_file_url.js +22 -0
  193. package/esm/deps/jsr.io/@std/path/1.1.4/posix/from_file_url.js.map +1 -0
  194. package/esm/deps/jsr.io/@std/path/1.1.4/posix/glob_to_regexp.d.ts +72 -0
  195. package/esm/deps/jsr.io/@std/path/1.1.4/posix/glob_to_regexp.d.ts.map +1 -0
  196. package/esm/deps/jsr.io/@std/path/1.1.4/posix/glob_to_regexp.js +83 -0
  197. package/esm/deps/jsr.io/@std/path/1.1.4/posix/glob_to_regexp.js.map +1 -0
  198. package/esm/deps/jsr.io/@std/path/1.1.4/posix/is_absolute.d.ts +17 -0
  199. package/esm/deps/jsr.io/@std/path/1.1.4/posix/is_absolute.d.ts.map +1 -0
  200. package/esm/deps/jsr.io/@std/path/1.1.4/posix/is_absolute.js +24 -0
  201. package/esm/deps/jsr.io/@std/path/1.1.4/posix/is_absolute.js.map +1 -0
  202. package/esm/deps/jsr.io/@std/path/1.1.4/posix/join.d.ts +31 -0
  203. package/esm/deps/jsr.io/@std/path/1.1.4/posix/join.d.ts.map +1 -0
  204. package/esm/deps/jsr.io/@std/path/1.1.4/posix/join.js +46 -0
  205. package/esm/deps/jsr.io/@std/path/1.1.4/posix/join.js.map +1 -0
  206. package/esm/deps/jsr.io/@std/path/1.1.4/posix/join_globs.d.ts +20 -0
  207. package/esm/deps/jsr.io/@std/path/1.1.4/posix/join_globs.d.ts.map +1 -0
  208. package/esm/deps/jsr.io/@std/path/1.1.4/posix/join_globs.js +41 -0
  209. package/esm/deps/jsr.io/@std/path/1.1.4/posix/join_globs.js.map +1 -0
  210. package/esm/deps/jsr.io/@std/path/1.1.4/posix/normalize.d.ts +37 -0
  211. package/esm/deps/jsr.io/@std/path/1.1.4/posix/normalize.d.ts.map +1 -0
  212. package/esm/deps/jsr.io/@std/path/1.1.4/posix/normalize.js +59 -0
  213. package/esm/deps/jsr.io/@std/path/1.1.4/posix/normalize.js.map +1 -0
  214. package/esm/deps/jsr.io/@std/path/1.1.4/posix/normalize_glob.d.ts +20 -0
  215. package/esm/deps/jsr.io/@std/path/1.1.4/posix/normalize_glob.d.ts.map +1 -0
  216. package/esm/deps/jsr.io/@std/path/1.1.4/posix/normalize_glob.js +33 -0
  217. package/esm/deps/jsr.io/@std/path/1.1.4/posix/normalize_glob.js.map +1 -0
  218. package/esm/deps/jsr.io/@std/path/1.1.4/posix/parse.d.ts +25 -0
  219. package/esm/deps/jsr.io/@std/path/1.1.4/posix/parse.d.ts.map +1 -0
  220. package/esm/deps/jsr.io/@std/path/1.1.4/posix/parse.js +116 -0
  221. package/esm/deps/jsr.io/@std/path/1.1.4/posix/parse.js.map +1 -0
  222. package/esm/deps/jsr.io/@std/path/1.1.4/posix/relative.d.ts +20 -0
  223. package/esm/deps/jsr.io/@std/path/1.1.4/posix/relative.d.ts.map +1 -0
  224. package/esm/deps/jsr.io/@std/path/1.1.4/posix/relative.js +107 -0
  225. package/esm/deps/jsr.io/@std/path/1.1.4/posix/relative.js.map +1 -0
  226. package/esm/deps/jsr.io/@std/path/1.1.4/posix/resolve.d.ts +17 -0
  227. package/esm/deps/jsr.io/@std/path/1.1.4/posix/resolve.d.ts.map +1 -0
  228. package/esm/deps/jsr.io/@std/path/1.1.4/posix/resolve.js +60 -0
  229. package/esm/deps/jsr.io/@std/path/1.1.4/posix/resolve.js.map +1 -0
  230. package/esm/deps/jsr.io/@std/path/1.1.4/posix/to_file_url.d.ts +17 -0
  231. package/esm/deps/jsr.io/@std/path/1.1.4/posix/to_file_url.d.ts.map +1 -0
  232. package/esm/deps/jsr.io/@std/path/1.1.4/posix/to_file_url.js +28 -0
  233. package/esm/deps/jsr.io/@std/path/1.1.4/posix/to_file_url.js.map +1 -0
  234. package/esm/deps/jsr.io/@std/path/1.1.4/posix/to_namespaced_path.d.ts +16 -0
  235. package/esm/deps/jsr.io/@std/path/1.1.4/posix/to_namespaced_path.d.ts.map +1 -0
  236. package/esm/deps/jsr.io/@std/path/1.1.4/posix/to_namespaced_path.js +21 -0
  237. package/esm/deps/jsr.io/@std/path/1.1.4/posix/to_namespaced_path.js.map +1 -0
  238. package/esm/deps/jsr.io/@std/path/1.1.4/relative.d.ts +24 -0
  239. package/esm/deps/jsr.io/@std/path/1.1.4/relative.d.ts.map +1 -0
  240. package/esm/deps/jsr.io/@std/path/1.1.4/relative.js +31 -0
  241. package/esm/deps/jsr.io/@std/path/1.1.4/relative.js.map +1 -0
  242. package/esm/deps/jsr.io/@std/path/1.1.4/resolve.d.ts +22 -0
  243. package/esm/deps/jsr.io/@std/path/1.1.4/resolve.d.ts.map +1 -0
  244. package/esm/deps/jsr.io/@std/path/1.1.4/resolve.js +31 -0
  245. package/esm/deps/jsr.io/@std/path/1.1.4/resolve.js.map +1 -0
  246. package/esm/deps/jsr.io/@std/path/1.1.4/to_file_url.d.ts +22 -0
  247. package/esm/deps/jsr.io/@std/path/1.1.4/to_file_url.d.ts.map +1 -0
  248. package/esm/deps/jsr.io/@std/path/1.1.4/to_file_url.js +29 -0
  249. package/esm/deps/jsr.io/@std/path/1.1.4/to_file_url.js.map +1 -0
  250. package/esm/deps/jsr.io/@std/path/1.1.4/to_namespaced_path.d.ts +21 -0
  251. package/esm/deps/jsr.io/@std/path/1.1.4/to_namespaced_path.d.ts.map +1 -0
  252. package/esm/deps/jsr.io/@std/path/1.1.4/to_namespaced_path.js +30 -0
  253. package/esm/deps/jsr.io/@std/path/1.1.4/to_namespaced_path.js.map +1 -0
  254. package/esm/deps/jsr.io/@std/path/1.1.4/types.d.ts +38 -0
  255. package/esm/deps/jsr.io/@std/path/1.1.4/types.d.ts.map +1 -0
  256. package/esm/deps/jsr.io/@std/path/1.1.4/types.js +4 -0
  257. package/esm/deps/jsr.io/@std/path/1.1.4/types.js.map +1 -0
  258. package/esm/deps/jsr.io/@std/path/1.1.4/windows/_util.d.ts +4 -0
  259. package/esm/deps/jsr.io/@std/path/1.1.4/windows/_util.d.ts.map +1 -0
  260. package/esm/deps/jsr.io/@std/path/1.1.4/windows/_util.js +16 -0
  261. package/esm/deps/jsr.io/@std/path/1.1.4/windows/_util.js.map +1 -0
  262. package/esm/deps/jsr.io/@std/path/1.1.4/windows/basename.d.ts +22 -0
  263. package/esm/deps/jsr.io/@std/path/1.1.4/windows/basename.d.ts.map +1 -0
  264. package/esm/deps/jsr.io/@std/path/1.1.4/windows/basename.js +48 -0
  265. package/esm/deps/jsr.io/@std/path/1.1.4/windows/basename.js.map +1 -0
  266. package/esm/deps/jsr.io/@std/path/1.1.4/windows/constants.d.ts +13 -0
  267. package/esm/deps/jsr.io/@std/path/1.1.4/windows/constants.d.ts.map +1 -0
  268. package/esm/deps/jsr.io/@std/path/1.1.4/windows/constants.js +15 -0
  269. package/esm/deps/jsr.io/@std/path/1.1.4/windows/constants.js.map +1 -0
  270. package/esm/deps/jsr.io/@std/path/1.1.4/windows/dirname.d.ts +17 -0
  271. package/esm/deps/jsr.io/@std/path/1.1.4/windows/dirname.d.ts.map +1 -0
  272. package/esm/deps/jsr.io/@std/path/1.1.4/windows/dirname.js +114 -0
  273. package/esm/deps/jsr.io/@std/path/1.1.4/windows/dirname.js.map +1 -0
  274. package/esm/deps/jsr.io/@std/path/1.1.4/windows/extname.d.ts +17 -0
  275. package/esm/deps/jsr.io/@std/path/1.1.4/windows/extname.d.ts.map +1 -0
  276. package/esm/deps/jsr.io/@std/path/1.1.4/windows/extname.js +83 -0
  277. package/esm/deps/jsr.io/@std/path/1.1.4/windows/extname.js.map +1 -0
  278. package/esm/deps/jsr.io/@std/path/1.1.4/windows/format.d.ts +24 -0
  279. package/esm/deps/jsr.io/@std/path/1.1.4/windows/format.d.ts.map +1 -0
  280. package/esm/deps/jsr.io/@std/path/1.1.4/windows/format.js +29 -0
  281. package/esm/deps/jsr.io/@std/path/1.1.4/windows/format.js.map +1 -0
  282. package/esm/deps/jsr.io/@std/path/1.1.4/windows/from_file_url.d.ts +18 -0
  283. package/esm/deps/jsr.io/@std/path/1.1.4/windows/from_file_url.d.ts.map +1 -0
  284. package/esm/deps/jsr.io/@std/path/1.1.4/windows/from_file_url.js +31 -0
  285. package/esm/deps/jsr.io/@std/path/1.1.4/windows/from_file_url.js.map +1 -0
  286. package/esm/deps/jsr.io/@std/path/1.1.4/windows/glob_to_regexp.d.ts +71 -0
  287. package/esm/deps/jsr.io/@std/path/1.1.4/windows/glob_to_regexp.d.ts.map +1 -0
  288. package/esm/deps/jsr.io/@std/path/1.1.4/windows/glob_to_regexp.js +83 -0
  289. package/esm/deps/jsr.io/@std/path/1.1.4/windows/glob_to_regexp.js.map +1 -0
  290. package/esm/deps/jsr.io/@std/path/1.1.4/windows/is_absolute.d.ts +17 -0
  291. package/esm/deps/jsr.io/@std/path/1.1.4/windows/is_absolute.d.ts.map +1 -0
  292. package/esm/deps/jsr.io/@std/path/1.1.4/windows/is_absolute.js +39 -0
  293. package/esm/deps/jsr.io/@std/path/1.1.4/windows/is_absolute.js.map +1 -0
  294. package/esm/deps/jsr.io/@std/path/1.1.4/windows/join.d.ts +18 -0
  295. package/esm/deps/jsr.io/@std/path/1.1.4/windows/join.d.ts.map +1 -0
  296. package/esm/deps/jsr.io/@std/path/1.1.4/windows/join.js +78 -0
  297. package/esm/deps/jsr.io/@std/path/1.1.4/windows/join.js.map +1 -0
  298. package/esm/deps/jsr.io/@std/path/1.1.4/windows/join_globs.d.ts +21 -0
  299. package/esm/deps/jsr.io/@std/path/1.1.4/windows/join_globs.d.ts.map +1 -0
  300. package/esm/deps/jsr.io/@std/path/1.1.4/windows/join_globs.js +42 -0
  301. package/esm/deps/jsr.io/@std/path/1.1.4/windows/join_globs.js.map +1 -0
  302. package/esm/deps/jsr.io/@std/path/1.1.4/windows/normalize.d.ts +19 -0
  303. package/esm/deps/jsr.io/@std/path/1.1.4/windows/normalize.d.ts.map +1 -0
  304. package/esm/deps/jsr.io/@std/path/1.1.4/windows/normalize.js +136 -0
  305. package/esm/deps/jsr.io/@std/path/1.1.4/windows/normalize.js.map +1 -0
  306. package/esm/deps/jsr.io/@std/path/1.1.4/windows/normalize_glob.d.ts +20 -0
  307. package/esm/deps/jsr.io/@std/path/1.1.4/windows/normalize_glob.d.ts.map +1 -0
  308. package/esm/deps/jsr.io/@std/path/1.1.4/windows/normalize_glob.js +33 -0
  309. package/esm/deps/jsr.io/@std/path/1.1.4/windows/normalize_glob.js.map +1 -0
  310. package/esm/deps/jsr.io/@std/path/1.1.4/windows/parse.d.ts +25 -0
  311. package/esm/deps/jsr.io/@std/path/1.1.4/windows/parse.d.ts.map +1 -0
  312. package/esm/deps/jsr.io/@std/path/1.1.4/windows/parse.js +177 -0
  313. package/esm/deps/jsr.io/@std/path/1.1.4/windows/parse.js.map +1 -0
  314. package/esm/deps/jsr.io/@std/path/1.1.4/windows/relative.d.ts +23 -0
  315. package/esm/deps/jsr.io/@std/path/1.1.4/windows/relative.d.ts.map +1 -0
  316. package/esm/deps/jsr.io/@std/path/1.1.4/windows/relative.js +132 -0
  317. package/esm/deps/jsr.io/@std/path/1.1.4/windows/relative.js.map +1 -0
  318. package/esm/deps/jsr.io/@std/path/1.1.4/windows/resolve.d.ts +17 -0
  319. package/esm/deps/jsr.io/@std/path/1.1.4/windows/resolve.d.ts.map +1 -0
  320. package/esm/deps/jsr.io/@std/path/1.1.4/windows/resolve.js +155 -0
  321. package/esm/deps/jsr.io/@std/path/1.1.4/windows/resolve.js.map +1 -0
  322. package/esm/deps/jsr.io/@std/path/1.1.4/windows/to_file_url.d.ts +17 -0
  323. package/esm/deps/jsr.io/@std/path/1.1.4/windows/to_file_url.d.ts.map +1 -0
  324. package/esm/deps/jsr.io/@std/path/1.1.4/windows/to_file_url.js +35 -0
  325. package/esm/deps/jsr.io/@std/path/1.1.4/windows/to_file_url.js.map +1 -0
  326. package/esm/deps/jsr.io/@std/path/1.1.4/windows/to_namespaced_path.d.ts +17 -0
  327. package/esm/deps/jsr.io/@std/path/1.1.4/windows/to_namespaced_path.d.ts.map +1 -0
  328. package/esm/deps/jsr.io/@std/path/1.1.4/windows/to_namespaced_path.js +50 -0
  329. package/esm/deps/jsr.io/@std/path/1.1.4/windows/to_namespaced_path.js.map +1 -0
  330. package/esm/main.d.ts +3 -0
  331. package/esm/main.d.ts.map +1 -0
  332. package/esm/main.js +35 -0
  333. package/esm/main.js.map +1 -0
  334. package/esm/mod.d.ts +3 -0
  335. package/esm/mod.d.ts.map +1 -0
  336. package/esm/mod.js +3 -0
  337. package/esm/mod.js.map +1 -0
  338. package/esm/package.json +3 -0
  339. package/esm/staticalize.d.ts +11 -0
  340. package/esm/staticalize.d.ts.map +1 -0
  341. package/esm/staticalize.js +144 -0
  342. package/esm/staticalize.js.map +1 -0
  343. package/esm/task-buffer.d.ts +6 -0
  344. package/esm/task-buffer.d.ts.map +1 -0
  345. package/esm/task-buffer.js +59 -0
  346. package/esm/task-buffer.js.map +1 -0
  347. package/package.json +41 -0
  348. package/src/_dnt.polyfills.ts +283 -0
  349. package/src/_dnt.shims.ts +64 -0
  350. package/src/config.ts +28 -0
  351. package/src/deno.js +42 -0
  352. package/src/deps/jsr.io/@libs/xml/6.0.8/_types.ts +46 -0
  353. package/src/deps/jsr.io/@libs/xml/6.0.8/parse.ts +443 -0
  354. package/src/deps/jsr.io/@libs/xml/6.0.8/stringify.ts +308 -0
  355. package/src/deps/jsr.io/@libs/xml/6.0.8/wasm_xml_parser/wasm_xml_parser.js +2 -0
  356. package/src/deps/jsr.io/@std/fs/1.0.22/_get_file_info_type.ts +25 -0
  357. package/src/deps/jsr.io/@std/fs/1.0.22/ensure_dir.ts +110 -0
  358. package/src/deps/jsr.io/@std/internal/1.0.12/_os.ts +15 -0
  359. package/src/deps/jsr.io/@std/internal/1.0.12/os.ts +7 -0
  360. package/src/deps/jsr.io/@std/path/1.1.4/_common/assert_path.ts +10 -0
  361. package/src/deps/jsr.io/@std/path/1.1.4/_common/basename.ts +53 -0
  362. package/src/deps/jsr.io/@std/path/1.1.4/_common/common.ts +26 -0
  363. package/src/deps/jsr.io/@std/path/1.1.4/_common/constants.ts +49 -0
  364. package/src/deps/jsr.io/@std/path/1.1.4/_common/dirname.ts +9 -0
  365. package/src/deps/jsr.io/@std/path/1.1.4/_common/format.ts +25 -0
  366. package/src/deps/jsr.io/@std/path/1.1.4/_common/from_file_url.ts +12 -0
  367. package/src/deps/jsr.io/@std/path/1.1.4/_common/glob_to_reg_exp.ts +295 -0
  368. package/src/deps/jsr.io/@std/path/1.1.4/_common/normalize.ts +9 -0
  369. package/src/deps/jsr.io/@std/path/1.1.4/_common/normalize_string.ts +74 -0
  370. package/src/deps/jsr.io/@std/path/1.1.4/_common/relative.ts +10 -0
  371. package/src/deps/jsr.io/@std/path/1.1.4/_common/strip_trailing_separators.ts +25 -0
  372. package/src/deps/jsr.io/@std/path/1.1.4/_common/to_file_url.ts +17 -0
  373. package/src/deps/jsr.io/@std/path/1.1.4/basename.ts +37 -0
  374. package/src/deps/jsr.io/@std/path/1.1.4/common.ts +35 -0
  375. package/src/deps/jsr.io/@std/path/1.1.4/constants.ts +18 -0
  376. package/src/deps/jsr.io/@std/path/1.1.4/dirname.ts +30 -0
  377. package/src/deps/jsr.io/@std/path/1.1.4/extname.ts +29 -0
  378. package/src/deps/jsr.io/@std/path/1.1.4/format.ts +30 -0
  379. package/src/deps/jsr.io/@std/path/1.1.4/from_file_url.ts +30 -0
  380. package/src/deps/jsr.io/@std/path/1.1.4/glob_to_regexp.ts +94 -0
  381. package/src/deps/jsr.io/@std/path/1.1.4/is_absolute.ts +30 -0
  382. package/src/deps/jsr.io/@std/path/1.1.4/is_glob.ts +49 -0
  383. package/src/deps/jsr.io/@std/path/1.1.4/join.ts +31 -0
  384. package/src/deps/jsr.io/@std/path/1.1.4/join_globs.ts +42 -0
  385. package/src/deps/jsr.io/@std/path/1.1.4/mod.ts +217 -0
  386. package/src/deps/jsr.io/@std/path/1.1.4/normalize.ts +33 -0
  387. package/src/deps/jsr.io/@std/path/1.1.4/normalize_glob.ts +45 -0
  388. package/src/deps/jsr.io/@std/path/1.1.4/parse.ts +44 -0
  389. package/src/deps/jsr.io/@std/path/1.1.4/posix/_util.ts +10 -0
  390. package/src/deps/jsr.io/@std/path/1.1.4/posix/basename.ts +62 -0
  391. package/src/deps/jsr.io/@std/path/1.1.4/posix/constants.ts +15 -0
  392. package/src/deps/jsr.io/@std/path/1.1.4/posix/dirname.ts +72 -0
  393. package/src/deps/jsr.io/@std/path/1.1.4/posix/extname.ts +96 -0
  394. package/src/deps/jsr.io/@std/path/1.1.4/posix/format.ts +31 -0
  395. package/src/deps/jsr.io/@std/path/1.1.4/posix/from_file_url.ts +25 -0
  396. package/src/deps/jsr.io/@std/path/1.1.4/posix/glob_to_regexp.ts +94 -0
  397. package/src/deps/jsr.io/@std/path/1.1.4/posix/is_absolute.ts +25 -0
  398. package/src/deps/jsr.io/@std/path/1.1.4/posix/join.ts +46 -0
  399. package/src/deps/jsr.io/@std/path/1.1.4/posix/join_globs.ts +45 -0
  400. package/src/deps/jsr.io/@std/path/1.1.4/posix/normalize.ts +63 -0
  401. package/src/deps/jsr.io/@std/path/1.1.4/posix/normalize_glob.ts +43 -0
  402. package/src/deps/jsr.io/@std/path/1.1.4/posix/parse.ts +121 -0
  403. package/src/deps/jsr.io/@std/path/1.1.4/posix/relative.ts +103 -0
  404. package/src/deps/jsr.io/@std/path/1.1.4/posix/resolve.ts +71 -0
  405. package/src/deps/jsr.io/@std/path/1.1.4/posix/to_file_url.ts +32 -0
  406. package/src/deps/jsr.io/@std/path/1.1.4/posix/to_namespaced_path.ts +21 -0
  407. package/src/deps/jsr.io/@std/path/1.1.4/relative.ts +32 -0
  408. package/src/deps/jsr.io/@std/path/1.1.4/resolve.ts +32 -0
  409. package/src/deps/jsr.io/@std/path/1.1.4/to_file_url.ts +30 -0
  410. package/src/deps/jsr.io/@std/path/1.1.4/to_namespaced_path.ts +31 -0
  411. package/src/deps/jsr.io/@std/path/1.1.4/types.ts +40 -0
  412. package/src/deps/jsr.io/@std/path/1.1.4/windows/_util.ts +28 -0
  413. package/src/deps/jsr.io/@std/path/1.1.4/windows/basename.ts +54 -0
  414. package/src/deps/jsr.io/@std/path/1.1.4/windows/constants.ts +15 -0
  415. package/src/deps/jsr.io/@std/path/1.1.4/windows/dirname.ts +118 -0
  416. package/src/deps/jsr.io/@std/path/1.1.4/windows/extname.ts +90 -0
  417. package/src/deps/jsr.io/@std/path/1.1.4/windows/format.ts +31 -0
  418. package/src/deps/jsr.io/@std/path/1.1.4/windows/from_file_url.ts +34 -0
  419. package/src/deps/jsr.io/@std/path/1.1.4/windows/glob_to_regexp.ts +92 -0
  420. package/src/deps/jsr.io/@std/path/1.1.4/windows/is_absolute.ts +40 -0
  421. package/src/deps/jsr.io/@std/path/1.1.4/windows/join.ts +78 -0
  422. package/src/deps/jsr.io/@std/path/1.1.4/windows/join_globs.ts +46 -0
  423. package/src/deps/jsr.io/@std/path/1.1.4/windows/normalize.ts +136 -0
  424. package/src/deps/jsr.io/@std/path/1.1.4/windows/normalize_glob.ts +43 -0
  425. package/src/deps/jsr.io/@std/path/1.1.4/windows/parse.ts +184 -0
  426. package/src/deps/jsr.io/@std/path/1.1.4/windows/relative.ts +128 -0
  427. package/src/deps/jsr.io/@std/path/1.1.4/windows/resolve.ts +178 -0
  428. package/src/deps/jsr.io/@std/path/1.1.4/windows/to_file_url.ts +38 -0
  429. package/src/deps/jsr.io/@std/path/1.1.4/windows/to_namespaced_path.ts +60 -0
  430. package/src/main.ts +37 -0
  431. package/src/mod.ts +2 -0
  432. package/src/staticalize.ts +216 -0
  433. package/src/task-buffer.ts +87 -0
package/src/deno.js ADDED
@@ -0,0 +1,42 @@
1
+ export default {
2
+ "name": "@frontside/staticalize",
3
+ "version": "0.2.2",
4
+ "exports": {
5
+ ".": "./mod.ts",
6
+ "./cli": "./main.ts"
7
+ },
8
+ "license": "MIT",
9
+ "tasks": {
10
+ "dev": "deno run --watch main.ts",
11
+ "compile": "deno compile --allow-read --allow-write --allow-env --allow-sys --allow-run --allow-net -o staticalize main.ts",
12
+ "build:npm": "deno run -A tasks/build-npm.ts",
13
+ "build:jsr": "deno run -A tasks/build-jsr.ts"
14
+ },
15
+ "imports": {
16
+ "@std/assert": "jsr:@std/assert@1",
17
+ "@std/cli": "jsr:@std/cli@1",
18
+ "@std/testing": "jsr:@std/testing@^1.0.0",
19
+ "@std/fs": "jsr:@std/fs@1",
20
+ "@std/path": "jsr:@std/path@1",
21
+ "@libs/xml": "jsr:@libs/xml@^6.0.0",
22
+ "effection": "npm:effection@4.0.0-beta.2",
23
+ "hast-util-from-html": "npm:hast-util-from-html@^2.0.3",
24
+ "hast-util-select": "npm:hast-util-select@^6.0.4",
25
+ "hast-util-to-html": "npm:hast-util-to-html@^9.0.5",
26
+ "zod": "npm:zod@^4.1.11",
27
+ "zod-opts": "npm:zod-opts@0.1.8",
28
+ "configliere": "npm:configliere@^0.2.2",
29
+ "dnt": "jsr:@deno/dnt@0.42.3"
30
+ },
31
+ "lint": {
32
+ "rules": {
33
+ "exclude": ["prefer-const", "require-yield"]
34
+ }
35
+ },
36
+ "publish": {
37
+ "include": ["mod.ts", "staticalize.ts", "task-buffer.ts", "config.ts", "main.ts", "README.md", "deno.json"]
38
+ },
39
+ "fmt": {
40
+ "exclude": ["dist", "build"]
41
+ }
42
+ };
@@ -0,0 +1,46 @@
1
+ /** Nullable type. */
2
+ export type Nullable<T> = T | null
3
+
4
+ /** XML text node. */
5
+ export type xml_text = {
6
+ /** Parent node. */
7
+ readonly ["~parent"]: xml_node
8
+ /** Tag name (`~text` for text nodes, `~cdata` for CDATA nodes and `~comment` for comment nodes). */
9
+ readonly ["~name"]: string
10
+ /** Text content. */
11
+ ["#text"]: string
12
+ }
13
+
14
+ /** XML node. */
15
+ export type xml_node = {
16
+ /** Tag name (`~xml` for XML prolog, other nodes will be given their respective tag name). */
17
+ readonly ["~name"]: string
18
+ /** Child nodes. */
19
+ readonly ["~children"]: Array<xml_node | xml_text>
20
+ /** Comments. */
21
+ readonly ["#comments"]?: Array<string>
22
+ /** Text content. */
23
+ readonly ["#text"]: string
24
+ // Signature
25
+ [key: string]: unknown
26
+ }
27
+
28
+ /** XML document. */
29
+ export type xml_document = xml_node & {
30
+ /** XML version. */
31
+ ["@version"]?: `1.${number}`
32
+ /** XML character encoding. */
33
+ ["@encoding"]?: string
34
+ /** XML standalone. */
35
+ ["@standalone"]?: "yes" | "no"
36
+ /** XML doctype. */
37
+ ["#doctype"]?: xml_node
38
+ /** XML instructions. */
39
+ ["#instructions"]?: { [key: string]: xml_node | Array<xml_node> }
40
+ }
41
+
42
+ /** Synchronous reader. */
43
+ export type ReaderSync = { readSync(buffer: Uint8Array): Nullable<number> }
44
+
45
+ /** A laxer type for what can be stringified. We won’t ever create this, but we’ll accept it. */
46
+ export type stringifyable = Partial<Omit<xml_document, "@version" | "@standalone"> & { "@version": string; "@standalone": string }>
@@ -0,0 +1,443 @@
1
+ /**
2
+ * Parse a XML string into an object.
3
+ * @module
4
+ */
5
+
6
+ // Imports
7
+ import { initSync, JsReader, source, Token, tokenize } from "./wasm_xml_parser/wasm_xml_parser.js"
8
+ import type { Nullable, ReaderSync, xml_document, xml_node, xml_text } from "./_types.js"
9
+ export type { Nullable, ReaderSync, xml_document, xml_node, xml_text }
10
+ initSync(source())
11
+
12
+ /** XML parser options. */
13
+ export type options = {
14
+ /** Remove elements from result. */
15
+ clean?: {
16
+ /** Remove attributes from result. */
17
+ attributes?: boolean
18
+ /** Remove comments from result. */
19
+ comments?: boolean
20
+ /** Remove XML doctype from result. */
21
+ doctype?: boolean
22
+ /** Remove XML processing instructions from result. */
23
+ instructions?: boolean
24
+ }
25
+ /** Flatten result depending on node content. */
26
+ flatten?: {
27
+ /** If node only contains attributes values (i.e. with key starting with `@`), it'll be flattened as a regular object without `@` prefixes. */
28
+ attributes?: boolean
29
+ /** If node only contains a `#text` value, it'll be flattened as a string (defaults to `true`). */
30
+ text?: boolean
31
+ /** If node does not contains any attribute or text, it'll be flattened to `null` (defaults to `true`). */
32
+ empty?: boolean
33
+ }
34
+ /** Revive result. */
35
+ revive?: {
36
+ /**
37
+ * Trim texts (this is applied before other revivals, defaults to `true`).
38
+ * It honors `xml:space="preserve"` attribute.
39
+ */
40
+ trim?: boolean
41
+ /**
42
+ * Revive XML entities (defaults to `true`).
43
+ * Automatically unescape XML entities and replace common entities with their respective characters.
44
+ */
45
+ entities?: boolean
46
+ /** Revive booleans (matching `/^(?:[Tt]rue|[Ff]alse)$/`).*/
47
+ booleans?: boolean
48
+ /**
49
+ * Revive finite numbers.
50
+ * Note that the version of the XML prolog is always treated as a string to avoid breaking documents.
51
+ */
52
+ numbers?: boolean
53
+ /**
54
+ * Custom reviver (this is applied after other revivals).
55
+ * When it is applied on an attribute, `key` and `value` will be given.
56
+ * When it is applied on a node, both `key` and `value` will be `null`.
57
+ * Return `undefined` to delete either the attribute or the tag.
58
+ */
59
+ custom?: (args: { name: string; key: Nullable<string>; value: Nullable<string>; node: Readonly<xml_node> }) => unknown
60
+ }
61
+ /**
62
+ * Parsing mode.
63
+ * Using `html` is more permissive and will not throw on some invalid XML syntax.
64
+ * Mainly unquoted attributes will be supported and not properly closed tags will be accepted.
65
+ */
66
+ mode?: "xml" | "html"
67
+ }
68
+
69
+ /**
70
+ * Parse a XML string into an object.
71
+ *
72
+ * Output (cleaning, flattening, reviving, etc.) can be customized using the {@link options} parameter.
73
+ *
74
+ * Unless flattened, output nodes will contain the following non-enumerable properties (which mean they're not "visible" when iterating over, but are still explicitely accessible):
75
+ * - General properties
76
+ * - `readonly ["~name"]: string`: tag name
77
+ * - `readonly ["~parent"]: xml_node|null`: parent node
78
+ * - `["#text"]?: string`: text content
79
+ * - Node properties
80
+ * - `readonly ["~children"]: Array<xml_node|xml_text>`: node children
81
+ * - `readonly ["#comments"]?: Array<string>`: node comments
82
+ * - `readonly ["#text"]?: string`: concatenated children text content, this property becomes enumerable if at least one non-empty text node is present
83
+ * - XML document properties
84
+ * - `["#doctype"]?: xml_node`: XML doctype
85
+ * - `["#instructions"]?: { [key:string]: xml_node| Array<xml_node> }`: XML processing instructions
86
+ *
87
+ * Attributes are prefixed with an arobase (`@`).
88
+ *
89
+ * You can also pass an object that implement {@link ReaderSync} instead of a string.
90
+ *
91
+ * ```ts
92
+ * import { parse } from "./parse.ts"
93
+ *
94
+ * console.log(parse(
95
+ * `
96
+ * <root>
97
+ * <!-- This is a comment -->
98
+ * <text>hello</text>
99
+ * <array>world</array>
100
+ * <array>monde</array>
101
+ * <array>世界</array>
102
+ * <array>🌏</array>
103
+ * <number>42</number>
104
+ * <boolean>true</boolean>
105
+ * <complex attribute="value">content</complex>
106
+ * </root>
107
+ * `))
108
+ * ```
109
+ *
110
+ * ```ts
111
+ * import { parse } from "./parse.ts"
112
+ * import { fromFileUrl } from "@std/path"
113
+ *
114
+ * using file = await Deno.open(fromFileUrl(import.meta.resolve("./bench/assets/small.xml")))
115
+ * console.log(parse(file))
116
+ * ```
117
+ */
118
+ export function parse(content: string | ReaderSync, options?: options): xml_document {
119
+ const xml = xml_node("~xml") as xml_document
120
+ const stack = [xml] as Array<xml_node>
121
+ const tokens = [] as Array<[number, string, string?]>
122
+ const states = [] as Array<[number, number]>
123
+ const flags = { root: false }
124
+ try {
125
+ const reader = new JsReader(new TextEncoder().encode(content as string), typeof content === "object" ? content : undefined)
126
+ tokenize(reader, tokens, states, options?.mode === "html")
127
+ } catch (error) {
128
+ if (states.at(-1)?.[0] === Token.StateParseAttribute) {
129
+ tokens.push([Token.Error, `Failed to parse attribute around position ${states.at(-1)![1]}`])
130
+ }
131
+ if (!states.length) {
132
+ throw new EvalError(`WASM XML parser crashed: ${error}`)
133
+ }
134
+ }
135
+ const errors = tokens.find(([token]) => token === Token.Error)
136
+ if (errors) {
137
+ throw new SyntaxError(`Malformed XML document: ${errors[1]}`)
138
+ }
139
+ options ??= {}
140
+ options.revive ??= {}
141
+ options.revive.trim ??= true
142
+ options.revive.entities ??= true
143
+ options.flatten ??= {}
144
+ options.flatten.text ??= true
145
+ options.flatten.empty ??= true
146
+ for (const [token, name, value = name] of tokens) {
147
+ switch (token) {
148
+ // XML declaration
149
+ case Token.XMLDeclaration: {
150
+ // https://www.w3.org/TR/REC-xml/#NT-VersionNum
151
+ const version = value.match(/version=(["'])(?<version>1\.\d+)(\1)/)?.groups?.version
152
+ if (version) {
153
+ xml["@version"] = version as typeof xml["@version"]
154
+ }
155
+ // https://www.w3.org/TR/REC-xml/#NT-EncodingDecl
156
+ const encoding = value.match(/encoding=(["'])(?<encoding>[A-Za-z][-\w.]*)(\1)/)?.groups?.encoding
157
+ if (encoding) {
158
+ xml["@encoding"] = encoding as typeof xml["@encoding"]
159
+ }
160
+ // https://www.w3.org/TR/REC-xml/#NT-SDDecl
161
+ const standalone = value.match(/standalone=(["'])(?<standalone>yes|no)(\1)/)?.groups?.standalone
162
+ if (standalone) {
163
+ xml["@standalone"] = standalone as typeof xml["@standalone"]
164
+ }
165
+ break
166
+ }
167
+ // XML Doctype definition
168
+ case Token.XMLDoctype: {
169
+ xml["#doctype"] = Object.assign(xml_node("~doctype", { parent: xml }), xml_doctype(value))
170
+ break
171
+ }
172
+ // XML processing instruction
173
+ case Token.XMLInstruction: {
174
+ const [name, ...raw] = value.split(" ")
175
+ const instruction = Object.assign(xml_node(name, { parent: xml }), xml_attributes(raw.join(" ")))
176
+ xml["#instructions"] ??= {}
177
+ switch (true) {
178
+ case Array.isArray(xml["#instructions"][name]):
179
+ ;(xml["#instructions"][name] as Array<xml_node>).push(instruction)
180
+ break
181
+ case name in xml["#instructions"]:
182
+ xml["#instructions"][name] = [xml["#instructions"][name] as xml_node, instruction]
183
+ break
184
+ default:
185
+ xml["#instructions"][name] = instruction
186
+ }
187
+ break
188
+ }
189
+ // XML tag opened
190
+ case Token.TagOpen: {
191
+ if (stack.length === 1) {
192
+ if (flags.root) {
193
+ throw new SyntaxError("Multiple root node detected")
194
+ }
195
+ flags.root = true
196
+ }
197
+ const parent = stack.at(-1)!
198
+ const node = xml_node(name, { parent })
199
+ switch (true) {
200
+ case Array.isArray(parent[node["~name"]]):
201
+ ;(parent[node["~name"]] as Array<xml_node>).push(node)
202
+ break
203
+ case node["~name"] in parent:
204
+ parent[node["~name"]] = [parent[node["~name"]], node]
205
+ break
206
+ default:
207
+ parent[node["~name"]] = node
208
+ }
209
+ stack.push(node)
210
+ break
211
+ }
212
+ // XML tag closed
213
+ case Token.TagClose: {
214
+ stack.pop()
215
+ break
216
+ }
217
+ // XML attribute
218
+ case Token.TagAttribute: {
219
+ stack.at(-1)![`@${name}`] = value
220
+ break
221
+ }
222
+ // Text
223
+ case Token.Text: {
224
+ xml_text(value, { type: "~text", parent: stack.at(-1)! })
225
+ break
226
+ }
227
+ // CDATA
228
+ case Token.CData: {
229
+ xml_text(value, { type: "~cdata", parent: stack.at(-1)! })
230
+ break
231
+ }
232
+ // Comment
233
+ case Token.Comment: {
234
+ xml_text(value, { type: "~comment", parent: stack.at(-1)! })
235
+ break
236
+ }
237
+ }
238
+ }
239
+ if (!Object.keys(xml).length) {
240
+ throw new SyntaxError("Malformed XML document: empty document or no root node detected")
241
+ }
242
+ return postprocess(xml, options) as xml_document
243
+ }
244
+
245
+ /** Parse xml attributes. */
246
+ function xml_attributes(raw: string) {
247
+ const attributes = {} as Record<PropertyKey, string>
248
+ for (const [_, name, __, value] of raw.matchAll(/(?<name>[A-Za-z_][-\w.:]*)=(["'])(?<value>(?:(?!\2).)*)(\2)/g)) {
249
+ attributes[`@${name}`] = value
250
+ }
251
+ return attributes
252
+ }
253
+
254
+ /** Parse xml doctype. */
255
+ function xml_doctype(raw: string) {
256
+ const node = {} as xml_node
257
+ const { attributes: _attributes, elements: _elements = "" } = raw.match(/^(?<attributes>[^\[]*)(?:\[(?<elements>[\s\S]*)\])?/)?.groups!
258
+ // Parse attributes
259
+ raw = raw.replace(`[${_elements}]`, "")
260
+ for (const [match, __, name] of _attributes.matchAll(/(["'])(?<name>(?:(?!\1).)*)(\1)/g)) {
261
+ node[`@${name}`] = ""
262
+ raw = raw.replace(match, "")
263
+ }
264
+ raw.split(/\s+/).filter(Boolean).forEach((name) => node[`@${name}`] = "")
265
+ // Parse elements
266
+ for (const [_, name, value] of _elements.matchAll(/<!ELEMENT\s+(?<name>\w+)\s+\((?<value>[^\)]+)\)/g)) {
267
+ node[name] = value
268
+ }
269
+ return node
270
+ }
271
+
272
+ /** Create a new text node. */
273
+ function xml_text(value: string, { type = "~text" as "~text" | "~cdata" | "~comment", parent = null as Nullable<xml_node> } = {}): xml_text {
274
+ const text = Object.defineProperties({}, {
275
+ ["~parent"]: { enumerable: false, writable: false, value: parent },
276
+ ["~name"]: { enumerable: false, writable: false, value: type },
277
+ }) as xml_text
278
+ text["#text"] = value
279
+ if (parent) {
280
+ parent["~children"].push(text)
281
+ }
282
+ return text
283
+ }
284
+
285
+ /** Create a new node. */
286
+ function xml_node(name: string, { parent = null as Nullable<xml_node> } = {}): xml_node {
287
+ const node = Object.defineProperties({}, {
288
+ ["~parent"]: { enumerable: false, writable: false, value: parent },
289
+ ["~name"]: { enumerable: false, writable: false, value: name },
290
+ ["~children"]: { enumerable: false, writable: true, value: [] },
291
+ ["#text"]: {
292
+ enumerable: false,
293
+ configurable: true,
294
+ get(this: xml_node) {
295
+ const children = this["~children"].filter((node) => node["~name"] !== "~comment")
296
+ // If xml:space is not set to "preserve", concatenate text nodes and trim them while removing empty ones
297
+ if (this["@xml:space"] !== "preserve") {
298
+ return children.map((child) => child["#text"]).filter(Boolean).join(" ")
299
+ }
300
+ // If xml:space is set to "preserve", concatenate text nodes without trimming them
301
+ // In case of mixed content, add a space between mixed nodes if needed
302
+ let text = ""
303
+ for (let i = 0; i < children.length; i++) {
304
+ const spaced = i && (+children[i - 1]["~name"].startsWith("~") ^ +children[i]["~name"].startsWith("~")) && (!children[i - 1]["#text"].endsWith(" ")) && (!children[i]["#text"].startsWith(" "))
305
+ text += `${spaced ? " " : ""}${children[i]["#text"]}`
306
+ }
307
+ return text
308
+ },
309
+ },
310
+ ["#comments"]: {
311
+ enumerable: false,
312
+ configurable: true,
313
+ get(this: xml_node) {
314
+ return this["~children"].filter((node) => node["~name"] === "~comment").map((node) => node["#text"]!)
315
+ },
316
+ },
317
+ }) as xml_node
318
+ if (parent) {
319
+ parent["~children"].push(node)
320
+ }
321
+ return node
322
+ }
323
+
324
+ /** Post-process xml node. */
325
+ function postprocess(node: xml_node, options: options) {
326
+ // Clean XML document if required
327
+ if (node["~name"] === "~xml") {
328
+ if (options?.clean?.doctype) {
329
+ delete node["#doctype"]
330
+ }
331
+ if (options?.clean?.instructions) {
332
+ ;(node as Record<PropertyKey, unknown>)["~children"] = node["~children"].filter((child) => !(child["~name"] in ((node as xml_document)["#instructions"] ?? {})))
333
+ delete node["#instructions"]
334
+ }
335
+ }
336
+ // Clean node and enable enumerable properties if required
337
+ if (node["~children"]) {
338
+ if (options?.clean?.comments) {
339
+ ;(node as Record<PropertyKey, unknown>)["~children"] = node["~children"].filter((child) => child["~name"] !== "~comment")
340
+ }
341
+ if (options?.revive?.trim) {
342
+ node["~children"].forEach((child) => /^~(?:text|cdata|comment)$/.test(child["~name"]) ? (child as Record<PropertyKey, unknown>)["#text"] = revive(child, "#text", { revive: { trim: node["@xml:space"] !== "preserve" } }) : null)
343
+ }
344
+ if (node["~children"].some((child) => (/^~(?:text|cdata)$/.test(child["~name"])) && (child["#text"].trim().length + (node["@xml:space"] === "preserve" ? 1 : 0) * child["#text"].length))) {
345
+ Object.defineProperty(node, "#text", { enumerable: true, configurable: true })
346
+ }
347
+ if (node["~children"].some((child) => child["~name"] === "~comment")) {
348
+ Object.defineProperty(node, "#comments", { enumerable: true, configurable: true })
349
+ }
350
+ }
351
+ // Process child nodes
352
+ for (const [key, value] of Object.entries(node)) {
353
+ // Skip comments
354
+ if (key === "#comments") {
355
+ continue
356
+ }
357
+ // Clean attributes if required
358
+ if ((options?.clean?.attributes) && (key.startsWith("@"))) {
359
+ delete node[key]
360
+ continue
361
+ }
362
+ // Revive attribute value if required
363
+ if (key.startsWith("@")) {
364
+ node[key] = revive(node, key, options)
365
+ if (node[key] === undefined) {
366
+ delete node[key]
367
+ }
368
+ continue
369
+ }
370
+ // Handle other nodes
371
+ if (Array.isArray(value)) {
372
+ node[key] = Object.defineProperties(value.map((child) => postprocess(child, options)), {
373
+ ["~parent"]: { enumerable: false, writable: false, value: node },
374
+ ["~name"]: { enumerable: false, writable: false, value: key },
375
+ })
376
+ } else if ((typeof value === "object") && value) {
377
+ node[key] = postprocess(value as xml_node, options)
378
+ }
379
+ if (node[key] === undefined) {
380
+ delete node[key]
381
+ }
382
+ }
383
+ // Revive text if required
384
+ const keys = Object.keys(node)
385
+ if (keys.includes("#text")) {
386
+ const _options = { ...options, revive: { ...options?.revive, trim: (options?.revive?.trim) && (node["@xml:space"] !== "preserve") } }
387
+ Object.defineProperty(node, "#text", { enumerable: true, configurable: true, value: revive(node, "#text", _options) })
388
+ }
389
+ // Custom revival if required
390
+ if (options?.revive?.custom) {
391
+ if (options.revive.custom({ name: node["~name"], key: null, value: null, node: node as xml_node }) === undefined) {
392
+ return undefined
393
+ }
394
+ }
395
+ // Flatten object if required
396
+ if ((options?.flatten?.text) && (keys.length === 1) && (keys.includes("#text"))) {
397
+ return node["#text"]
398
+ }
399
+ if ((options?.flatten?.attributes) && (keys.length) && (keys.every((key) => key.startsWith("@")))) {
400
+ for (const key of keys) {
401
+ node[key.slice(1)] = node[key]
402
+ delete node[key]
403
+ }
404
+ return node
405
+ }
406
+ if (!keys.length) {
407
+ return (options?.flatten?.empty) ? null : (options?.flatten?.text) ? "" : Object.defineProperty(node, "#text", { enumerable: true, configurable: true, value: "" })
408
+ }
409
+ return node
410
+ }
411
+
412
+ /** Entities */
413
+ const entities = {
414
+ "&lt;": "<",
415
+ "&gt;": ">",
416
+ "&apos;": "'",
417
+ "&quot;": '"',
418
+ "&amp;": "&", //Keep last
419
+ } as const
420
+
421
+ /** Revive value. */
422
+ function revive(node: xml_node | xml_text, key: string, options: options) {
423
+ let value = (node as xml_node)[key] as string
424
+ if (options?.revive?.trim) {
425
+ value = value.trim()
426
+ }
427
+ if (options?.revive?.entities) {
428
+ value = value.replaceAll(/&#(?<hex>x?)(?<code>[A-Fa-f\d]+);/g, (_, hex, code) => String.fromCharCode(Number.parseInt(code, hex ? 16 : 10)))
429
+ for (const [entity, character] of Object.entries(entities)) {
430
+ value = value.replaceAll(entity, character)
431
+ }
432
+ }
433
+ if ((options?.revive?.numbers) && (value.length) && (Number.isFinite(Number(value))) && (!((node["~name"] === "~xml") && (key === "@version")))) {
434
+ value = Number(value) as unknown as string
435
+ }
436
+ if ((options?.revive?.booleans) && (/^(?:[Tt]rue|[Ff]alse)$/.test(value))) {
437
+ value = /^[Tt]rue$/.test(value) as unknown as string
438
+ }
439
+ if (options?.revive?.custom) {
440
+ return options.revive.custom({ name: node["~name"], key, value, node: node as xml_node })
441
+ }
442
+ return value
443
+ }