@iconify/tools 4.2.0 → 5.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (530) hide show
  1. package/lib/colors/attribs.d.ts +2 -4
  2. package/lib/colors/attribs.js +33 -0
  3. package/lib/colors/detect.d.ts +2 -10
  4. package/lib/colors/detect.js +36 -0
  5. package/lib/colors/parse.d.ts +12 -19
  6. package/lib/colors/parse.js +241 -0
  7. package/lib/colors/validate.d.ts +3 -13
  8. package/lib/colors/validate.js +31 -0
  9. package/lib/css/parse.d.ts +1 -2
  10. package/lib/css/parse.js +18 -0
  11. package/lib/css/parser/error.d.ts +6 -7
  12. package/lib/css/parser/error.js +24 -0
  13. package/lib/css/parser/export.d.ts +2 -4
  14. package/lib/css/parser/export.js +34 -0
  15. package/lib/css/parser/strings.d.ts +2 -4
  16. package/lib/css/parser/strings.js +66 -0
  17. package/lib/css/parser/text.d.ts +2 -4
  18. package/lib/css/parser/text.js +103 -0
  19. package/lib/css/parser/tokens.d.ts +3 -5
  20. package/lib/css/parser/tokens.js +169 -0
  21. package/lib/css/parser/tree.d.ts +2 -4
  22. package/lib/css/parser/tree.js +35 -0
  23. package/lib/css/parser/types.d.ts +21 -22
  24. package/lib/css/parser/types.js +1 -0
  25. package/lib/download/api/cache.d.ts +2 -4
  26. package/lib/download/api/cache.js +84 -0
  27. package/lib/download/api/config.d.ts +6 -8
  28. package/lib/download/api/config.js +10 -0
  29. package/lib/download/api/download.d.ts +2 -4
  30. package/lib/download/api/download.js +26 -0
  31. package/lib/download/api/fetch.d.ts +1 -2
  32. package/lib/download/api/fetch.js +15 -0
  33. package/lib/download/api/index.d.ts +2 -4
  34. package/lib/download/api/index.js +50 -0
  35. package/lib/download/api/queue.d.ts +9 -10
  36. package/lib/download/api/queue.js +94 -0
  37. package/lib/download/api/types.d.ts +6 -7
  38. package/lib/download/api/types.js +1 -0
  39. package/lib/download/git/branch.d.ts +2 -4
  40. package/lib/download/git/branch.js +15 -0
  41. package/lib/download/git/hash.d.ts +2 -4
  42. package/lib/download/git/hash.js +10 -0
  43. package/lib/download/git/index.d.ts +10 -12
  44. package/lib/download/git/index.js +39 -0
  45. package/lib/download/git/reset.d.ts +1 -2
  46. package/lib/download/git/reset.js +12 -0
  47. package/lib/download/github/hash.d.ts +2 -4
  48. package/lib/download/github/hash.js +20 -0
  49. package/lib/download/github/index.d.ts +12 -14
  50. package/lib/download/github/index.js +66 -0
  51. package/lib/download/github/types.d.ts +5 -6
  52. package/lib/download/github/types.js +1 -0
  53. package/lib/download/gitlab/hash.d.ts +2 -4
  54. package/lib/download/gitlab/hash.js +19 -0
  55. package/lib/download/gitlab/index.d.ts +12 -14
  56. package/lib/download/gitlab/index.js +64 -0
  57. package/lib/download/gitlab/types.d.ts +5 -6
  58. package/lib/download/gitlab/types.js +6 -0
  59. package/lib/download/helpers/untar.d.ts +1 -2
  60. package/lib/download/helpers/untar.js +13 -0
  61. package/lib/download/helpers/unzip.d.ts +1 -2
  62. package/lib/download/helpers/unzip.js +39 -0
  63. package/lib/download/index.d.ts +15 -20
  64. package/lib/download/index.js +19 -0
  65. package/lib/download/npm/index.d.ts +11 -13
  66. package/lib/download/npm/index.js +51 -0
  67. package/lib/download/npm/types.d.ts +3 -4
  68. package/lib/download/npm/types.js +1 -0
  69. package/lib/download/npm/version.d.ts +4 -6
  70. package/lib/download/npm/version.js +23 -0
  71. package/lib/download/types/modified.d.ts +1 -2
  72. package/lib/download/types/modified.js +1 -0
  73. package/lib/download/types/sources.d.ts +2 -3
  74. package/lib/download/types/sources.js +1 -0
  75. package/lib/export/directory.d.ts +7 -15
  76. package/lib/export/directory.js +37 -0
  77. package/lib/export/helpers/custom-files.d.ts +2 -3
  78. package/lib/export/helpers/custom-files.js +23 -0
  79. package/lib/export/helpers/prepare.d.ts +3 -4
  80. package/lib/export/helpers/prepare.js +31 -0
  81. package/lib/export/helpers/types-version.d.ts +1 -2
  82. package/lib/export/helpers/types-version.js +19 -0
  83. package/lib/export/icon-package.d.ts +8 -15
  84. package/lib/export/icon-package.js +55 -0
  85. package/lib/export/json-package.d.ts +7 -14
  86. package/lib/export/json-package.js +129 -0
  87. package/lib/icon-set/index.d.ts +144 -147
  88. package/lib/icon-set/index.js +595 -0
  89. package/lib/icon-set/match.d.ts +3 -11
  90. package/lib/icon-set/match.js +45 -0
  91. package/lib/icon-set/merge.d.ts +2 -10
  92. package/lib/icon-set/merge.js +68 -0
  93. package/lib/icon-set/modified.d.ts +2 -10
  94. package/lib/icon-set/modified.js +20 -0
  95. package/lib/icon-set/props.d.ts +2 -5
  96. package/lib/icon-set/props.js +19 -0
  97. package/lib/icon-set/tags.d.ts +7 -15
  98. package/lib/icon-set/tags.js +53 -0
  99. package/lib/icon-set/types.d.ts +16 -21
  100. package/lib/icon-set/types.js +1 -0
  101. package/lib/import/directory.d.ts +11 -20
  102. package/lib/import/directory.js +101 -0
  103. package/lib/import/figma/index.d.ts +4 -15
  104. package/lib/import/figma/index.js +61 -0
  105. package/lib/import/figma/nodes.d.ts +4 -14
  106. package/lib/import/figma/nodes.js +80 -0
  107. package/lib/import/figma/query.d.ts +9 -19
  108. package/lib/import/figma/query.js +183 -0
  109. package/lib/import/figma/types/api.d.ts +23 -35
  110. package/lib/import/figma/types/nodes.d.ts +12 -21
  111. package/lib/import/figma/types/options.d.ts +23 -32
  112. package/lib/import/figma/types/result.d.ts +16 -24
  113. package/lib/index.d.ts +55 -80
  114. package/lib/index.js +56 -0
  115. package/lib/misc/bump-version.d.ts +1 -2
  116. package/lib/misc/bump-version.js +13 -0
  117. package/lib/misc/compare-dirs.d.ts +4 -5
  118. package/lib/misc/compare-dirs.js +65 -0
  119. package/lib/misc/exec.d.ts +4 -6
  120. package/lib/misc/exec.js +23 -0
  121. package/lib/misc/keyword.d.ts +1 -2
  122. package/lib/misc/keyword.js +12 -0
  123. package/lib/misc/scan.d.ts +2 -4
  124. package/lib/misc/scan.js +87 -0
  125. package/lib/misc/write-json.d.ts +1 -2
  126. package/lib/misc/write-json.js +10 -0
  127. package/lib/optimise/figma.d.ts +2 -7
  128. package/lib/optimise/figma.js +189 -0
  129. package/lib/optimise/flags.d.ts +2 -7
  130. package/lib/optimise/flags.js +231 -0
  131. package/lib/optimise/global-style.d.ts +2 -7
  132. package/lib/optimise/global-style.js +114 -0
  133. package/lib/optimise/mask.d.ts +9 -14
  134. package/lib/optimise/mask.js +83 -0
  135. package/lib/optimise/origin.d.ts +2 -7
  136. package/lib/optimise/origin.js +22 -0
  137. package/lib/optimise/scale.d.ts +2 -7
  138. package/lib/optimise/scale.js +24 -0
  139. package/lib/optimise/svgo.d.ts +10 -15
  140. package/lib/optimise/svgo.js +90 -0
  141. package/lib/optimise/unwrap.d.ts +2 -7
  142. package/lib/optimise/unwrap.js +25 -0
  143. package/lib/svg/analyse/error.d.ts +2 -7
  144. package/lib/svg/analyse/error.js +12 -0
  145. package/lib/svg/analyse/types.d.ts +31 -35
  146. package/lib/svg/analyse/types.js +1 -0
  147. package/lib/svg/analyse.d.ts +3 -10
  148. package/lib/svg/analyse.js +256 -0
  149. package/lib/svg/cleanup/attribs.d.ts +2 -7
  150. package/lib/svg/cleanup/attribs.js +37 -0
  151. package/lib/svg/cleanup/bad-tags.d.ts +3 -8
  152. package/lib/svg/cleanup/bad-tags.js +57 -0
  153. package/lib/svg/cleanup/inline-style.d.ts +2 -7
  154. package/lib/svg/cleanup/inline-style.js +80 -0
  155. package/lib/svg/cleanup/root-style.d.ts +4 -9
  156. package/lib/svg/cleanup/root-style.js +27 -0
  157. package/lib/svg/cleanup/root-svg.d.ts +2 -7
  158. package/lib/svg/cleanup/root-svg.js +73 -0
  159. package/lib/svg/cleanup/svgo-style.d.ts +2 -7
  160. package/lib/svg/cleanup/svgo-style.js +24 -0
  161. package/lib/svg/cleanup.d.ts +3 -8
  162. package/lib/svg/cleanup.js +20 -0
  163. package/lib/svg/data/attributes.d.ts +1 -2
  164. package/lib/svg/data/attributes.js +451 -0
  165. package/lib/svg/data/tags.d.ts +1 -2
  166. package/lib/svg/data/tags.js +182 -0
  167. package/lib/svg/index.d.ts +38 -47
  168. package/lib/svg/index.js +117 -0
  169. package/lib/svg/parse-style.d.ts +21 -28
  170. package/lib/svg/parse-style.js +199 -0
  171. package/lib/svg/parse.d.ts +8 -16
  172. package/lib/svg/parse.js +32 -0
  173. package/package.json +116 -222
  174. package/lib/colors/attribs.cjs +0 -33
  175. package/lib/colors/attribs.d.cts +0 -27
  176. package/lib/colors/attribs.d.mts +0 -27
  177. package/lib/colors/attribs.mjs +0 -26
  178. package/lib/colors/detect.cjs +0 -66
  179. package/lib/colors/detect.d.cts +0 -16
  180. package/lib/colors/detect.d.mts +0 -16
  181. package/lib/colors/detect.mjs +0 -64
  182. package/lib/colors/parse.cjs +0 -300
  183. package/lib/colors/parse.d.cts +0 -61
  184. package/lib/colors/parse.d.mts +0 -61
  185. package/lib/colors/parse.mjs +0 -297
  186. package/lib/colors/validate.cjs +0 -56
  187. package/lib/colors/validate.d.cts +0 -21
  188. package/lib/colors/validate.d.mts +0 -21
  189. package/lib/colors/validate.mjs +0 -54
  190. package/lib/css/parse.cjs +0 -24
  191. package/lib/css/parse.d.cts +0 -6
  192. package/lib/css/parse.d.mts +0 -6
  193. package/lib/css/parse.mjs +0 -22
  194. package/lib/css/parser/error.cjs +0 -23
  195. package/lib/css/parser/error.d.cts +0 -13
  196. package/lib/css/parser/error.d.mts +0 -13
  197. package/lib/css/parser/error.mjs +0 -21
  198. package/lib/css/parser/export.cjs +0 -37
  199. package/lib/css/parser/export.d.cts +0 -8
  200. package/lib/css/parser/export.d.mts +0 -8
  201. package/lib/css/parser/export.mjs +0 -35
  202. package/lib/css/parser/strings.cjs +0 -83
  203. package/lib/css/parser/strings.d.cts +0 -16
  204. package/lib/css/parser/strings.d.mts +0 -16
  205. package/lib/css/parser/strings.mjs +0 -80
  206. package/lib/css/parser/text.cjs +0 -114
  207. package/lib/css/parser/text.d.cts +0 -20
  208. package/lib/css/parser/text.d.mts +0 -20
  209. package/lib/css/parser/text.mjs +0 -109
  210. package/lib/css/parser/tokens.cjs +0 -206
  211. package/lib/css/parser/tokens.d.cts +0 -9
  212. package/lib/css/parser/tokens.d.mts +0 -9
  213. package/lib/css/parser/tokens.mjs +0 -204
  214. package/lib/css/parser/tree.cjs +0 -40
  215. package/lib/css/parser/tree.d.cts +0 -8
  216. package/lib/css/parser/tree.d.mts +0 -8
  217. package/lib/css/parser/tree.mjs +0 -38
  218. package/lib/css/parser/types.cjs +0 -2
  219. package/lib/css/parser/types.d.cts +0 -52
  220. package/lib/css/parser/types.d.mts +0 -52
  221. package/lib/css/parser/types.mjs +0 -1
  222. package/lib/download/api/cache.cjs +0 -91
  223. package/lib/download/api/cache.d.cts +0 -20
  224. package/lib/download/api/cache.d.mts +0 -20
  225. package/lib/download/api/cache.mjs +0 -86
  226. package/lib/download/api/config.cjs +0 -11
  227. package/lib/download/api/config.d.cts +0 -18
  228. package/lib/download/api/config.d.mts +0 -18
  229. package/lib/download/api/config.mjs +0 -8
  230. package/lib/download/api/download.cjs +0 -26
  231. package/lib/download/api/download.d.cts +0 -8
  232. package/lib/download/api/download.d.mts +0 -8
  233. package/lib/download/api/download.mjs +0 -24
  234. package/lib/download/api/fetch.cjs +0 -12
  235. package/lib/download/api/fetch.d.cts +0 -10
  236. package/lib/download/api/fetch.d.mts +0 -10
  237. package/lib/download/api/fetch.mjs +0 -9
  238. package/lib/download/api/index.cjs +0 -57
  239. package/lib/download/api/index.d.cts +0 -8
  240. package/lib/download/api/index.d.mts +0 -8
  241. package/lib/download/api/index.mjs +0 -55
  242. package/lib/download/api/queue.cjs +0 -104
  243. package/lib/download/api/queue.d.cts +0 -32
  244. package/lib/download/api/queue.d.mts +0 -32
  245. package/lib/download/api/queue.mjs +0 -101
  246. package/lib/download/api/types.cjs +0 -2
  247. package/lib/download/api/types.d.cts +0 -17
  248. package/lib/download/api/types.d.mts +0 -17
  249. package/lib/download/api/types.mjs +0 -1
  250. package/lib/download/git/branch.cjs +0 -19
  251. package/lib/download/git/branch.d.cts +0 -8
  252. package/lib/download/git/branch.d.mts +0 -8
  253. package/lib/download/git/branch.mjs +0 -17
  254. package/lib/download/git/hash.cjs +0 -14
  255. package/lib/download/git/hash.d.cts +0 -8
  256. package/lib/download/git/hash.d.mts +0 -8
  257. package/lib/download/git/hash.mjs +0 -12
  258. package/lib/download/git/index.cjs +0 -76
  259. package/lib/download/git/index.d.cts +0 -29
  260. package/lib/download/git/index.d.mts +0 -29
  261. package/lib/download/git/index.mjs +0 -74
  262. package/lib/download/git/reset.cjs +0 -36
  263. package/lib/download/git/reset.d.cts +0 -6
  264. package/lib/download/git/reset.d.mts +0 -6
  265. package/lib/download/git/reset.mjs +0 -34
  266. package/lib/download/github/hash.cjs +0 -31
  267. package/lib/download/github/hash.d.cts +0 -8
  268. package/lib/download/github/hash.d.mts +0 -8
  269. package/lib/download/github/hash.mjs +0 -29
  270. package/lib/download/github/index.cjs +0 -105
  271. package/lib/download/github/index.d.cts +0 -31
  272. package/lib/download/github/index.d.mts +0 -31
  273. package/lib/download/github/index.mjs +0 -103
  274. package/lib/download/github/types.cjs +0 -2
  275. package/lib/download/github/types.d.cts +0 -11
  276. package/lib/download/github/types.d.mts +0 -11
  277. package/lib/download/github/types.mjs +0 -1
  278. package/lib/download/gitlab/hash.cjs +0 -33
  279. package/lib/download/gitlab/hash.d.cts +0 -8
  280. package/lib/download/gitlab/hash.d.mts +0 -8
  281. package/lib/download/gitlab/hash.mjs +0 -31
  282. package/lib/download/gitlab/index.cjs +0 -105
  283. package/lib/download/gitlab/index.d.cts +0 -31
  284. package/lib/download/gitlab/index.d.mts +0 -31
  285. package/lib/download/gitlab/index.mjs +0 -103
  286. package/lib/download/gitlab/types.cjs +0 -5
  287. package/lib/download/gitlab/types.d.cts +0 -15
  288. package/lib/download/gitlab/types.d.mts +0 -15
  289. package/lib/download/gitlab/types.mjs +0 -3
  290. package/lib/download/helpers/untar.cjs +0 -12
  291. package/lib/download/helpers/untar.d.cts +0 -6
  292. package/lib/download/helpers/untar.d.mts +0 -6
  293. package/lib/download/helpers/untar.mjs +0 -10
  294. package/lib/download/helpers/unzip.cjs +0 -17
  295. package/lib/download/helpers/unzip.d.cts +0 -6
  296. package/lib/download/helpers/unzip.d.mts +0 -6
  297. package/lib/download/helpers/unzip.mjs +0 -11
  298. package/lib/download/index.cjs +0 -64
  299. package/lib/download/index.d.cts +0 -48
  300. package/lib/download/index.d.mts +0 -48
  301. package/lib/download/index.mjs +0 -62
  302. package/lib/download/npm/index.cjs +0 -85
  303. package/lib/download/npm/index.d.cts +0 -30
  304. package/lib/download/npm/index.d.mts +0 -30
  305. package/lib/download/npm/index.mjs +0 -83
  306. package/lib/download/npm/types.cjs +0 -2
  307. package/lib/download/npm/types.d.cts +0 -9
  308. package/lib/download/npm/types.d.mts +0 -9
  309. package/lib/download/npm/types.mjs +0 -1
  310. package/lib/download/npm/version.cjs +0 -29
  311. package/lib/download/npm/version.d.cts +0 -16
  312. package/lib/download/npm/version.d.mts +0 -16
  313. package/lib/download/npm/version.mjs +0 -26
  314. package/lib/download/types/modified.cjs +0 -2
  315. package/lib/download/types/modified.d.cts +0 -6
  316. package/lib/download/types/modified.d.mts +0 -6
  317. package/lib/download/types/modified.mjs +0 -1
  318. package/lib/download/types/sources.cjs +0 -2
  319. package/lib/download/types/sources.d.cts +0 -12
  320. package/lib/download/types/sources.d.mts +0 -12
  321. package/lib/download/types/sources.mjs +0 -1
  322. package/lib/export/directory.cjs +0 -43
  323. package/lib/export/directory.d.cts +0 -26
  324. package/lib/export/directory.d.mts +0 -26
  325. package/lib/export/directory.mjs +0 -41
  326. package/lib/export/helpers/custom-files.cjs +0 -26
  327. package/lib/export/helpers/custom-files.d.cts +0 -12
  328. package/lib/export/helpers/custom-files.d.mts +0 -12
  329. package/lib/export/helpers/custom-files.mjs +0 -24
  330. package/lib/export/helpers/prepare.cjs +0 -34
  331. package/lib/export/helpers/prepare.d.cts +0 -19
  332. package/lib/export/helpers/prepare.d.mts +0 -19
  333. package/lib/export/helpers/prepare.mjs +0 -31
  334. package/lib/export/helpers/types-version.cjs +0 -12
  335. package/lib/export/helpers/types-version.d.cts +0 -6
  336. package/lib/export/helpers/types-version.d.mts +0 -6
  337. package/lib/export/helpers/types-version.mjs +0 -10
  338. package/lib/export/icon-package.cjs +0 -56
  339. package/lib/export/icon-package.d.cts +0 -26
  340. package/lib/export/icon-package.d.mts +0 -26
  341. package/lib/export/icon-package.mjs +0 -54
  342. package/lib/export/json-package.cjs +0 -144
  343. package/lib/export/json-package.d.cts +0 -25
  344. package/lib/export/json-package.d.mts +0 -25
  345. package/lib/export/json-package.mjs +0 -142
  346. package/lib/icon-set/index.cjs +0 -720
  347. package/lib/icon-set/index.d.cts +0 -162
  348. package/lib/icon-set/index.d.mts +0 -162
  349. package/lib/icon-set/index.mjs +0 -716
  350. package/lib/icon-set/match.cjs +0 -56
  351. package/lib/icon-set/match.d.cts +0 -15
  352. package/lib/icon-set/match.d.mts +0 -15
  353. package/lib/icon-set/match.mjs +0 -54
  354. package/lib/icon-set/merge.cjs +0 -87
  355. package/lib/icon-set/merge.d.cts +0 -14
  356. package/lib/icon-set/merge.d.mts +0 -14
  357. package/lib/icon-set/merge.mjs +0 -85
  358. package/lib/icon-set/modified.cjs +0 -25
  359. package/lib/icon-set/modified.d.cts +0 -16
  360. package/lib/icon-set/modified.d.mts +0 -16
  361. package/lib/icon-set/modified.mjs +0 -23
  362. package/lib/icon-set/props.cjs +0 -16
  363. package/lib/icon-set/props.d.cts +0 -13
  364. package/lib/icon-set/props.d.mts +0 -13
  365. package/lib/icon-set/props.mjs +0 -13
  366. package/lib/icon-set/tags.cjs +0 -95
  367. package/lib/icon-set/tags.d.cts +0 -25
  368. package/lib/icon-set/tags.d.mts +0 -25
  369. package/lib/icon-set/tags.mjs +0 -91
  370. package/lib/icon-set/types.cjs +0 -2
  371. package/lib/icon-set/types.d.cts +0 -75
  372. package/lib/icon-set/types.d.mts +0 -75
  373. package/lib/icon-set/types.mjs +0 -1
  374. package/lib/import/directory.cjs +0 -169
  375. package/lib/import/directory.d.cts +0 -52
  376. package/lib/import/directory.d.mts +0 -52
  377. package/lib/import/directory.mjs +0 -166
  378. package/lib/import/figma/index.cjs +0 -115
  379. package/lib/import/figma/index.d.cts +0 -20
  380. package/lib/import/figma/index.d.mts +0 -20
  381. package/lib/import/figma/index.mjs +0 -113
  382. package/lib/import/figma/nodes.cjs +0 -90
  383. package/lib/import/figma/nodes.d.cts +0 -18
  384. package/lib/import/figma/nodes.d.mts +0 -18
  385. package/lib/import/figma/nodes.mjs +0 -88
  386. package/lib/import/figma/query.cjs +0 -260
  387. package/lib/import/figma/query.d.cts +0 -42
  388. package/lib/import/figma/query.d.mts +0 -42
  389. package/lib/import/figma/query.mjs +0 -256
  390. package/lib/import/figma/types/api.cjs +0 -2
  391. package/lib/import/figma/types/api.d.cts +0 -53
  392. package/lib/import/figma/types/api.d.mts +0 -53
  393. package/lib/import/figma/types/api.mjs +0 -1
  394. package/lib/import/figma/types/nodes.cjs +0 -2
  395. package/lib/import/figma/types/nodes.d.cts +0 -44
  396. package/lib/import/figma/types/nodes.d.mts +0 -44
  397. package/lib/import/figma/types/nodes.mjs +0 -1
  398. package/lib/import/figma/types/options.cjs +0 -2
  399. package/lib/import/figma/types/options.d.cts +0 -59
  400. package/lib/import/figma/types/options.d.mts +0 -59
  401. package/lib/import/figma/types/options.mjs +0 -1
  402. package/lib/import/figma/types/result.cjs +0 -2
  403. package/lib/import/figma/types/result.d.cts +0 -44
  404. package/lib/import/figma/types/result.d.mts +0 -44
  405. package/lib/import/figma/types/result.mjs +0 -1
  406. package/lib/index.cjs +0 -157
  407. package/lib/index.d.cts +0 -80
  408. package/lib/index.d.mts +0 -80
  409. package/lib/index.mjs +0 -91
  410. package/lib/misc/bump-version.cjs +0 -15
  411. package/lib/misc/bump-version.d.cts +0 -6
  412. package/lib/misc/bump-version.d.mts +0 -6
  413. package/lib/misc/bump-version.mjs +0 -13
  414. package/lib/misc/cheerio.cjs +0 -2
  415. package/lib/misc/cheerio.d.cts +0 -10
  416. package/lib/misc/cheerio.d.mts +0 -10
  417. package/lib/misc/cheerio.d.ts +0 -10
  418. package/lib/misc/cheerio.mjs +0 -1
  419. package/lib/misc/compare-dirs.cjs +0 -75
  420. package/lib/misc/compare-dirs.d.cts +0 -11
  421. package/lib/misc/compare-dirs.d.mts +0 -11
  422. package/lib/misc/compare-dirs.mjs +0 -73
  423. package/lib/misc/exec.cjs +0 -27
  424. package/lib/misc/exec.d.cts +0 -12
  425. package/lib/misc/exec.d.mts +0 -12
  426. package/lib/misc/exec.mjs +0 -25
  427. package/lib/misc/keyword.cjs +0 -20
  428. package/lib/misc/keyword.d.cts +0 -6
  429. package/lib/misc/keyword.d.mts +0 -6
  430. package/lib/misc/keyword.mjs +0 -18
  431. package/lib/misc/scan.cjs +0 -114
  432. package/lib/misc/scan.d.cts +0 -33
  433. package/lib/misc/scan.d.mts +0 -33
  434. package/lib/misc/scan.mjs +0 -111
  435. package/lib/misc/write-json.cjs +0 -9
  436. package/lib/misc/write-json.d.cts +0 -6
  437. package/lib/misc/write-json.d.mts +0 -6
  438. package/lib/misc/write-json.mjs +0 -7
  439. package/lib/optimise/figma.cjs +0 -232
  440. package/lib/optimise/figma.d.cts +0 -14
  441. package/lib/optimise/figma.d.mts +0 -14
  442. package/lib/optimise/figma.mjs +0 -230
  443. package/lib/optimise/flags.cjs +0 -256
  444. package/lib/optimise/flags.d.cts +0 -11
  445. package/lib/optimise/flags.d.mts +0 -11
  446. package/lib/optimise/flags.mjs +0 -254
  447. package/lib/optimise/global-style.cjs +0 -158
  448. package/lib/optimise/global-style.d.cts +0 -11
  449. package/lib/optimise/global-style.d.mts +0 -11
  450. package/lib/optimise/global-style.mjs +0 -156
  451. package/lib/optimise/mask.cjs +0 -110
  452. package/lib/optimise/mask.d.cts +0 -24
  453. package/lib/optimise/mask.d.mts +0 -24
  454. package/lib/optimise/mask.mjs +0 -108
  455. package/lib/optimise/origin.cjs +0 -23
  456. package/lib/optimise/origin.d.cts +0 -11
  457. package/lib/optimise/origin.d.mts +0 -11
  458. package/lib/optimise/origin.mjs +0 -21
  459. package/lib/optimise/scale.cjs +0 -27
  460. package/lib/optimise/scale.d.cts +0 -11
  461. package/lib/optimise/scale.d.mts +0 -11
  462. package/lib/optimise/scale.mjs +0 -25
  463. package/lib/optimise/svgo.cjs +0 -107
  464. package/lib/optimise/svgo.d.cts +0 -37
  465. package/lib/optimise/svgo.d.mts +0 -37
  466. package/lib/optimise/svgo.mjs +0 -104
  467. package/lib/optimise/unwrap.cjs +0 -31
  468. package/lib/optimise/unwrap.d.cts +0 -11
  469. package/lib/optimise/unwrap.d.mts +0 -11
  470. package/lib/optimise/unwrap.mjs +0 -29
  471. package/lib/svg/analyse/error.cjs +0 -16
  472. package/lib/svg/analyse/error.d.cts +0 -11
  473. package/lib/svg/analyse/error.d.mts +0 -11
  474. package/lib/svg/analyse/error.mjs +0 -14
  475. package/lib/svg/analyse/types.cjs +0 -2
  476. package/lib/svg/analyse/types.d.cts +0 -93
  477. package/lib/svg/analyse/types.d.mts +0 -93
  478. package/lib/svg/analyse/types.mjs +0 -1
  479. package/lib/svg/analyse.cjs +0 -303
  480. package/lib/svg/analyse.d.cts +0 -16
  481. package/lib/svg/analyse.d.mts +0 -16
  482. package/lib/svg/analyse.mjs +0 -301
  483. package/lib/svg/cleanup/attribs.cjs +0 -39
  484. package/lib/svg/cleanup/attribs.d.cts +0 -11
  485. package/lib/svg/cleanup/attribs.d.mts +0 -11
  486. package/lib/svg/cleanup/attribs.mjs +0 -37
  487. package/lib/svg/cleanup/bad-tags.cjs +0 -69
  488. package/lib/svg/cleanup/bad-tags.d.cts +0 -17
  489. package/lib/svg/cleanup/bad-tags.d.mts +0 -17
  490. package/lib/svg/cleanup/bad-tags.mjs +0 -67
  491. package/lib/svg/cleanup/inline-style.cjs +0 -97
  492. package/lib/svg/cleanup/inline-style.d.cts +0 -11
  493. package/lib/svg/cleanup/inline-style.d.mts +0 -11
  494. package/lib/svg/cleanup/inline-style.mjs +0 -95
  495. package/lib/svg/cleanup/root-style.cjs +0 -34
  496. package/lib/svg/cleanup/root-style.d.cts +0 -17
  497. package/lib/svg/cleanup/root-style.d.mts +0 -17
  498. package/lib/svg/cleanup/root-style.mjs +0 -32
  499. package/lib/svg/cleanup/root-svg.cjs +0 -84
  500. package/lib/svg/cleanup/root-svg.d.cts +0 -11
  501. package/lib/svg/cleanup/root-svg.d.mts +0 -11
  502. package/lib/svg/cleanup/root-svg.mjs +0 -82
  503. package/lib/svg/cleanup/svgo-style.cjs +0 -43
  504. package/lib/svg/cleanup/svgo-style.d.cts +0 -11
  505. package/lib/svg/cleanup/svgo-style.d.mts +0 -11
  506. package/lib/svg/cleanup/svgo-style.mjs +0 -41
  507. package/lib/svg/cleanup.cjs +0 -33
  508. package/lib/svg/cleanup.d.cts +0 -16
  509. package/lib/svg/cleanup.d.mts +0 -16
  510. package/lib/svg/cleanup.mjs +0 -31
  511. package/lib/svg/data/attributes.cjs +0 -373
  512. package/lib/svg/data/attributes.d.cts +0 -77
  513. package/lib/svg/data/attributes.d.mts +0 -77
  514. package/lib/svg/data/attributes.mjs +0 -346
  515. package/lib/svg/data/tags.cjs +0 -141
  516. package/lib/svg/data/tags.d.cts +0 -95
  517. package/lib/svg/data/tags.d.mts +0 -95
  518. package/lib/svg/data/tags.mjs +0 -117
  519. package/lib/svg/index.cjs +0 -178
  520. package/lib/svg/index.d.cts +0 -52
  521. package/lib/svg/index.d.mts +0 -52
  522. package/lib/svg/index.mjs +0 -162
  523. package/lib/svg/parse-style.cjs +0 -243
  524. package/lib/svg/parse-style.d.cts +0 -59
  525. package/lib/svg/parse-style.d.mts +0 -59
  526. package/lib/svg/parse-style.mjs +0 -241
  527. package/lib/svg/parse.cjs +0 -46
  528. package/lib/svg/parse.d.cts +0 -31
  529. package/lib/svg/parse.d.mts +0 -31
  530. package/lib/svg/parse.mjs +0 -44
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Merge text tokens to string
3
+ */
4
+ function mergeTextTokens(tokens) {
5
+ return tokens.map((token) => token.text).join("").trim();
6
+ }
7
+ /**
8
+ * Get list of selectors from list of words
9
+ */
10
+ function getSelectors(tokens) {
11
+ const selectors = [];
12
+ let selector = "";
13
+ tokens.forEach((token) => {
14
+ if (token.type !== "chunk") {
15
+ selector += token.text;
16
+ return;
17
+ }
18
+ const list = token.text.split(",");
19
+ selector += list.shift();
20
+ while (list.length > 0) {
21
+ selectors.push(selector.trim());
22
+ selector = list.shift();
23
+ }
24
+ });
25
+ selectors.push(selector.trim());
26
+ return selectors.filter((item) => item.length > 0);
27
+ }
28
+ /**
29
+ * Convert text token to rule
30
+ */
31
+ function textTokensToRule(tokens) {
32
+ let prop = "";
33
+ let value = "";
34
+ let isProp = true;
35
+ let error = false;
36
+ tokens.forEach((token) => {
37
+ if (error) return;
38
+ if (token.type !== "chunk") {
39
+ if (isProp) error = true;
40
+ else value += token.text;
41
+ return;
42
+ }
43
+ const pairs = token.text.split(":");
44
+ if (pairs.length > 2) {
45
+ error = true;
46
+ return;
47
+ }
48
+ if (pairs.length === 2) {
49
+ if (!isProp) {
50
+ error = true;
51
+ return;
52
+ }
53
+ prop += pairs[0];
54
+ value = pairs[1];
55
+ isProp = false;
56
+ return;
57
+ }
58
+ if (isProp) prop += token.text;
59
+ else value += token.text;
60
+ });
61
+ if (error || isProp) return null;
62
+ prop = prop.trim();
63
+ value = value.trim();
64
+ if (!prop.length || !value.length) return null;
65
+ const result = {
66
+ type: "rule",
67
+ prop: prop.toLowerCase(),
68
+ value,
69
+ index: tokens[0].index
70
+ };
71
+ ["important"].forEach((word) => {
72
+ if (result.value.slice(-1 - word.length).toLowerCase() === "!" + word) {
73
+ result[word] = true;
74
+ result.value = result.value.slice(0, -1 - word.length).trim();
75
+ }
76
+ });
77
+ return result.value.length ? result : null;
78
+ }
79
+ /**
80
+ * Create at-rule or selector token from text tokens
81
+ */
82
+ function textTokensToSelector(tokens) {
83
+ const selectors = getSelectors(tokens);
84
+ const code = mergeTextTokens(tokens);
85
+ const index = tokens[0].index;
86
+ if (!selectors.length) return null;
87
+ if (code.charAt(0) === "@") {
88
+ const parts = code.split(/\s+/);
89
+ return {
90
+ type: "at-rule",
91
+ index,
92
+ rule: parts.shift().slice(1),
93
+ value: parts.join(" ").trim()
94
+ };
95
+ } else return {
96
+ type: "selector",
97
+ code,
98
+ index,
99
+ selectors
100
+ };
101
+ }
102
+
103
+ export { getSelectors, mergeTextTokens, textTokensToRule, textTokensToSelector };
@@ -1,9 +1,7 @@
1
- import { StyleParseError } from './error.js';
2
- import { CSSToken } from './types.js';
3
-
1
+ import { StyleParseError } from "./error.js";
2
+ import { CSSToken } from "./types.js";
4
3
  /**
5
4
  * Get tokens
6
5
  */
7
6
  declare function getTokens(css: string): CSSToken[] | StyleParseError;
8
-
9
- export { getTokens };
7
+ export { getTokens };
@@ -0,0 +1,169 @@
1
+ import { styleParseError } from "./error.js";
2
+ import { findEndOfQuotedString, findEndOfURL } from "./strings.js";
3
+ import { mergeTextTokens, textTokensToRule, textTokensToSelector } from "./text.js";
4
+
5
+ /**
6
+ * Find all tokens in css, sort by index
7
+ */
8
+ function findTokens(code, tokens) {
9
+ const list = [];
10
+ const lc = code.toLowerCase();
11
+ tokens.forEach((token) => {
12
+ let index = 0;
13
+ while (true) {
14
+ index = lc.indexOf(token, index);
15
+ if (index === -1) return;
16
+ list.push({
17
+ token,
18
+ index
19
+ });
20
+ index++;
21
+ }
22
+ });
23
+ list.sort((a, b) => a.index - b.index);
24
+ return list;
25
+ }
26
+ /**
27
+ * Get tokens
28
+ */
29
+ function getTokens(css) {
30
+ const items = [];
31
+ let textQueue = [];
32
+ let start = 0;
33
+ let depth = 0;
34
+ try {
35
+ const checkRule = (text) => {
36
+ if (!textQueue.length) return;
37
+ const item = textTokensToRule(textQueue);
38
+ if (item) {
39
+ items.push(item);
40
+ return;
41
+ }
42
+ if (!(mergeTextTokens(textQueue) + text).length) return;
43
+ throw styleParseError("Invalid css rule", css, textQueue[0]?.index);
44
+ };
45
+ findTokens(css, [
46
+ "\"",
47
+ "'",
48
+ "/*",
49
+ "{",
50
+ "}",
51
+ ";",
52
+ "url(",
53
+ "\\"
54
+ ]).forEach((token) => {
55
+ if (token.index < start) return;
56
+ switch (token.token) {
57
+ case "/*": {
58
+ textQueue.push({
59
+ type: "chunk",
60
+ text: css.slice(start, token.index),
61
+ index: start
62
+ });
63
+ start = token.index;
64
+ const end = css.indexOf("*/", start + 2);
65
+ if (end === -1) throw styleParseError("Missing comment closing statement", css, start);
66
+ start = end + 2;
67
+ break;
68
+ }
69
+ case "\\":
70
+ textQueue.push({
71
+ type: "chunk",
72
+ text: css.slice(start, token.index + 2),
73
+ index: start
74
+ });
75
+ start = token.index + 2;
76
+ break;
77
+ case "url(": {
78
+ textQueue.push({
79
+ type: "chunk",
80
+ text: css.slice(start, token.index),
81
+ index: start
82
+ });
83
+ start = token.index;
84
+ const end = findEndOfURL(css, start);
85
+ if (typeof end !== "number") throw end;
86
+ textQueue.push({
87
+ type: "url",
88
+ text: css.slice(start, end),
89
+ index: start
90
+ });
91
+ start = end;
92
+ break;
93
+ }
94
+ case "\"":
95
+ case "'": {
96
+ textQueue.push({
97
+ type: "chunk",
98
+ text: css.slice(start, token.index),
99
+ index: start
100
+ });
101
+ start = token.index;
102
+ const end = findEndOfQuotedString(css, token.token, start);
103
+ if (end === null) throw styleParseError("Missing closing " + token.token, css, start);
104
+ textQueue.push({
105
+ type: "quoted-string",
106
+ text: css.slice(start, end),
107
+ index: start
108
+ });
109
+ start = end;
110
+ break;
111
+ }
112
+ case ";":
113
+ textQueue.push({
114
+ type: "chunk",
115
+ text: css.slice(start, token.index),
116
+ index: start
117
+ });
118
+ checkRule(token.token);
119
+ start = token.index + 1;
120
+ textQueue = [];
121
+ break;
122
+ case "{": {
123
+ textQueue.push({
124
+ type: "chunk",
125
+ text: css.slice(start, token.index),
126
+ index: start
127
+ });
128
+ const item = textTokensToSelector(textQueue);
129
+ if (!item) throw styleParseError("Invalid css rule", css, start);
130
+ items.push(item);
131
+ start = token.index + 1;
132
+ textQueue = [];
133
+ depth++;
134
+ break;
135
+ }
136
+ case "}":
137
+ textQueue.push({
138
+ type: "chunk",
139
+ text: css.slice(start, token.index),
140
+ index: start
141
+ });
142
+ checkRule("");
143
+ items.push({
144
+ type: "close",
145
+ index: token.index
146
+ });
147
+ if (!depth) throw styleParseError("Unexpected }", css, token.index);
148
+ depth--;
149
+ start = token.index + 1;
150
+ textQueue = [];
151
+ break;
152
+ default: throw new Error(`Forgot to parse token: ${token.token}`);
153
+ }
154
+ });
155
+ if (depth) return styleParseError("Missing }", css);
156
+ textQueue.push({
157
+ type: "chunk",
158
+ text: css.slice(start),
159
+ index: start
160
+ });
161
+ checkRule("");
162
+ } catch (err) {
163
+ if (typeof err === "object" && err.type === "style-parse-error") return err;
164
+ throw err;
165
+ }
166
+ return items;
167
+ }
168
+
169
+ export { getTokens };
@@ -1,8 +1,6 @@
1
- import { CSSToken, CSSTreeToken } from './types.js';
2
-
1
+ import { CSSToken, CSSTreeToken } from "./types.js";
3
2
  /**
4
3
  * Convert tokens list to tree
5
4
  */
6
5
  declare function tokensTree(tokens: CSSToken[]): CSSTreeToken[];
7
-
8
- export { tokensTree };
6
+ export { tokensTree };
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Convert tokens list to tree
3
+ */
4
+ function tokensTree(tokens) {
5
+ const result = [];
6
+ let index = 0;
7
+ function parse(target) {
8
+ while (index < tokens.length) {
9
+ const token = tokens[index];
10
+ index++;
11
+ switch (token.type) {
12
+ case "close": return;
13
+ case "selector":
14
+ case "at-rule": {
15
+ const newItem = {
16
+ ...token,
17
+ children: []
18
+ };
19
+ target.push(newItem);
20
+ parse(newItem.children);
21
+ if (!newItem.children.length) {
22
+ const index$1 = target.indexOf(newItem);
23
+ if (index$1 !== -1) target.splice(index$1, 1);
24
+ }
25
+ break;
26
+ }
27
+ default: target.push(token);
28
+ }
29
+ }
30
+ }
31
+ while (index < tokens.length) parse(result);
32
+ return result;
33
+ }
34
+
35
+ export { tokensTree };
@@ -2,9 +2,9 @@
2
2
  * Text tokens, to be split combined into correct tokens later
3
3
  */
4
4
  interface TextToken {
5
- type: 'chunk' | 'url' | 'quoted-string';
6
- index: number;
7
- text: string;
5
+ type: 'chunk' | 'url' | 'quoted-string';
6
+ index: number;
7
+ text: string;
8
8
  }
9
9
  /**
10
10
  * Values
@@ -14,27 +14,27 @@ type CSSATValue = string | string[];
14
14
  * Tokens
15
15
  */
16
16
  interface CSSRuleToken {
17
- type: 'rule';
18
- index: number;
19
- prop: string;
20
- value: string;
21
- important?: boolean;
17
+ type: 'rule';
18
+ index: number;
19
+ prop: string;
20
+ value: string;
21
+ important?: boolean;
22
22
  }
23
23
  interface CSSSelectorToken {
24
- type: 'selector';
25
- index: number;
26
- code: string;
27
- selectors: string[];
24
+ type: 'selector';
25
+ index: number;
26
+ code: string;
27
+ selectors: string[];
28
28
  }
29
29
  interface CSSAtRuleToken {
30
- type: 'at-rule';
31
- index: number;
32
- rule: string;
33
- value: string;
30
+ type: 'at-rule';
31
+ index: number;
32
+ rule: string;
33
+ value: string;
34
34
  }
35
35
  interface CSSCloseToken {
36
- type: 'close';
37
- index: number;
36
+ type: 'close';
37
+ index: number;
38
38
  }
39
39
  type CSSTokenWithSelector = CSSSelectorToken | CSSAtRuleToken;
40
40
  type CSSToken = CSSRuleToken | CSSSelectorToken | CSSAtRuleToken | CSSCloseToken;
@@ -42,11 +42,10 @@ type CSSToken = CSSRuleToken | CSSSelectorToken | CSSAtRuleToken | CSSCloseToken
42
42
  * Tree tokens
43
43
  */
44
44
  interface CSSSelectorTreeToken extends CSSSelectorToken {
45
- children: CSSTreeToken[];
45
+ children: CSSTreeToken[];
46
46
  }
47
47
  interface CSSAtRuleTreeToken extends CSSAtRuleToken {
48
- children: CSSTreeToken[];
48
+ children: CSSTreeToken[];
49
49
  }
50
50
  type CSSTreeToken = CSSRuleToken | CSSSelectorTreeToken | CSSAtRuleTreeToken;
51
-
52
- export type { CSSATValue, CSSAtRuleToken, CSSAtRuleTreeToken, CSSCloseToken, CSSRuleToken, CSSSelectorToken, CSSSelectorTreeToken, CSSToken, CSSTokenWithSelector, CSSTreeToken, TextToken };
51
+ export { CSSATValue, CSSAtRuleToken, CSSAtRuleTreeToken, CSSCloseToken, CSSRuleToken, CSSSelectorToken, CSSSelectorTreeToken, CSSToken, CSSTokenWithSelector, CSSTreeToken, TextToken };
@@ -0,0 +1 @@
1
+ export { };
@@ -1,5 +1,4 @@
1
- import { APIQueryParams, APICacheOptions } from './types.js';
2
-
1
+ import { APICacheOptions, APIQueryParams } from "./types.js";
3
2
  /**
4
3
  * Unique key
5
4
  */
@@ -16,5 +15,4 @@ declare function getAPICache(dir: string, key: string): Promise<string | null>;
16
15
  * Clear cache
17
16
  */
18
17
  declare function clearAPICache(dir: string): Promise<void>;
19
-
20
- export { apiCacheKey, clearAPICache, getAPICache, storeAPICache };
18
+ export { apiCacheKey, clearAPICache, getAPICache, storeAPICache };
@@ -0,0 +1,84 @@
1
+ import { scanDirectory } from "../../misc/scan.js";
2
+ import { promises } from "fs";
3
+ import { createHash } from "crypto";
4
+
5
+ const cacheVersion = 1;
6
+ const storedFiles = Object.create(null);
7
+ /**
8
+ * Unique key
9
+ */
10
+ function apiCacheKey(query) {
11
+ const item = JSON.stringify({
12
+ uri: query.uri,
13
+ params: query.params?.toString(),
14
+ headers: query.headers
15
+ });
16
+ return createHash("md5").update(item).digest("hex");
17
+ }
18
+ /**
19
+ * Store cache
20
+ */
21
+ async function storeAPICache(options, key, data) {
22
+ const expires = Date.now() + options.ttl * 1e3;
23
+ const filename = options.dir + "/" + key + "." + expires.toString() + ".json";
24
+ if (!storedFiles[options.dir]) await getStoredFiles(options.dir);
25
+ const content = {
26
+ version: cacheVersion,
27
+ expires,
28
+ data
29
+ };
30
+ await promises.writeFile(filename, JSON.stringify(content, null, 4), "utf8");
31
+ storedFiles[options.dir][key] = {
32
+ filename,
33
+ expires
34
+ };
35
+ }
36
+ /**
37
+ * Get item from cache
38
+ */
39
+ async function getAPICache(dir, key) {
40
+ if (!storedFiles[dir]) await getStoredFiles(dir);
41
+ const item = storedFiles[dir][key];
42
+ if (!item) return null;
43
+ const time = Date.now();
44
+ try {
45
+ const content = JSON.parse(await promises.readFile(item.filename, "utf8"));
46
+ return content.version === cacheVersion && content.expires > time ? content.data : null;
47
+ } catch (err) {
48
+ return null;
49
+ }
50
+ }
51
+ /**
52
+ * Clear cache
53
+ */
54
+ function clearAPICache(dir) {
55
+ return getStoredFiles(dir, true);
56
+ }
57
+ /**
58
+ * Find all stored files
59
+ */
60
+ async function getStoredFiles(dir, clear = false) {
61
+ const storage = !clear && storedFiles[dir] || Object.create(null);
62
+ const time = Date.now();
63
+ storedFiles[dir] = storage;
64
+ try {
65
+ await promises.mkdir(dir, { recursive: true });
66
+ } catch (err) {}
67
+ await scanDirectory(dir, async (ext, file, subdir, path) => {
68
+ if (ext !== ".json") return false;
69
+ const filename = path + subdir + file + ext;
70
+ const parts = file.split(".");
71
+ const expires = parseInt(parts.pop());
72
+ if (clear || expires < time || parts.length !== 1) {
73
+ await promises.unlink(filename);
74
+ return false;
75
+ }
76
+ const cacheKey = parts[0];
77
+ storage[cacheKey] = {
78
+ filename,
79
+ expires
80
+ };
81
+ }, false);
82
+ }
83
+
84
+ export { apiCacheKey, clearAPICache, getAPICache, storeAPICache };
@@ -1,18 +1,16 @@
1
- import { RequestOptions } from 'node:http';
2
- import { APIQueryParams } from './types.js';
3
-
1
+ import { APIQueryParams } from "./types.js";
2
+ import { RequestOptions } from "node:http";
4
3
  /**
5
4
  * Axios config, customisable
6
5
  */
7
6
  declare const axiosConfig: Omit<RequestOptions, 'headers' | 'responseType' | 'url' | 'method' | 'data'>;
8
7
  interface AxiosCallbacks {
9
- onStart?: (url: string, params: APIQueryParams) => void;
10
- onSuccess?: (url: string, params: APIQueryParams) => void;
11
- onError?: (url: string, params: APIQueryParams, errorCode?: number) => void;
8
+ onStart?: (url: string, params: APIQueryParams) => void;
9
+ onSuccess?: (url: string, params: APIQueryParams) => void;
10
+ onError?: (url: string, params: APIQueryParams, errorCode?: number) => void;
12
11
  }
13
12
  /**
14
13
  * Customisable callbacks, used for logging
15
14
  */
16
15
  declare const fetchCallbacks: AxiosCallbacks;
17
-
18
- export { axiosConfig, fetchCallbacks };
16
+ export { axiosConfig, fetchCallbacks };
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Axios config, customisable
3
+ */
4
+ const axiosConfig = {};
5
+ /**
6
+ * Customisable callbacks, used for logging
7
+ */
8
+ const fetchCallbacks = { onStart: (url) => console.log("Fetching:", url) };
9
+
10
+ export { axiosConfig, fetchCallbacks };
@@ -1,8 +1,6 @@
1
- import { APIQueryParams } from './types.js';
2
-
1
+ import { APIQueryParams } from "./types.js";
3
2
  /**
4
3
  * Download file
5
4
  */
6
5
  declare function downloadFile(query: APIQueryParams, target: string): Promise<void>;
7
-
8
- export { downloadFile };
6
+ export { downloadFile };
@@ -0,0 +1,26 @@
1
+ import { axiosConfig, fetchCallbacks } from "./config.js";
2
+ import { getFetch } from "./fetch.js";
3
+ import { writeFile } from "fs/promises";
4
+
5
+ /**
6
+ * Download file
7
+ */
8
+ async function downloadFile(query, target) {
9
+ const params = query.params ? query.params.toString() : "";
10
+ const url = query.uri + (params ? "?" + params : "");
11
+ const headers = query.headers;
12
+ fetchCallbacks.onStart?.(url, query);
13
+ const response = await getFetch()(url, {
14
+ ...axiosConfig,
15
+ headers
16
+ });
17
+ if (response.status !== 200) {
18
+ fetchCallbacks.onError?.(url, query, response.status);
19
+ throw new Error(`Error downloading ${url}: ${response.status}`);
20
+ }
21
+ const data = await response.arrayBuffer();
22
+ fetchCallbacks.onSuccess?.(url, query);
23
+ await writeFile(target, Buffer.from(data));
24
+ }
25
+
26
+ export { downloadFile };
@@ -6,5 +6,4 @@ declare function setFetch(fetchFunction: typeof fetch): void;
6
6
  * Get fetch function
7
7
  */
8
8
  declare function getFetch(): typeof fetch;
9
-
10
- export { getFetch, setFetch };
9
+ export { getFetch, setFetch };
@@ -0,0 +1,15 @@
1
+ let customFetch = fetch;
2
+ /**
3
+ * Set custom fetch function
4
+ */
5
+ function setFetch(fetchFunction) {
6
+ customFetch = fetchFunction;
7
+ }
8
+ /**
9
+ * Get fetch function
10
+ */
11
+ function getFetch() {
12
+ return customFetch;
13
+ }
14
+
15
+ export { getFetch, setFetch };
@@ -1,8 +1,6 @@
1
- import { APIQueryParams, APICacheOptions } from './types.js';
2
-
1
+ import { APICacheOptions, APIQueryParams } from "./types.js";
3
2
  /**
4
3
  * Send API query
5
4
  */
6
5
  declare function sendAPIQuery(query: APIQueryParams, cache?: APICacheOptions): Promise<number | string>;
7
-
8
- export { sendAPIQuery };
6
+ export { sendAPIQuery };
@@ -0,0 +1,50 @@
1
+ import { apiCacheKey, getAPICache, storeAPICache } from "./cache.js";
2
+ import { axiosConfig, fetchCallbacks } from "./config.js";
3
+ import { getFetch } from "./fetch.js";
4
+
5
+ /**
6
+ * Send API query
7
+ */
8
+ async function sendAPIQuery(query, cache) {
9
+ const cacheKey = cache ? apiCacheKey(query) : "";
10
+ if (cache) {
11
+ const cached = await getAPICache(cache.dir, cacheKey);
12
+ if (cached) return cached;
13
+ }
14
+ const result = await sendQuery(query);
15
+ if (cache && typeof result !== "number") try {
16
+ await storeAPICache(cache, cacheKey, result);
17
+ } catch (err) {
18
+ console.error("Error writing API cache");
19
+ }
20
+ return result;
21
+ }
22
+ /**
23
+ * Send query
24
+ */
25
+ async function sendQuery(query) {
26
+ const params = query.params ? query.params.toString() : "";
27
+ const url = query.uri + (params ? "?" + params : "");
28
+ const headers = query.headers;
29
+ fetchCallbacks.onStart?.(url, query);
30
+ function fail(value) {
31
+ fetchCallbacks.onError?.(url, query, value);
32
+ return value ?? 404;
33
+ }
34
+ const fetch = getFetch();
35
+ try {
36
+ const response = await fetch(url, {
37
+ ...axiosConfig,
38
+ headers
39
+ });
40
+ if (response.status !== 200) return fail(response.status);
41
+ const data = await response.text();
42
+ if (typeof data !== "string") return fail();
43
+ fetchCallbacks.onSuccess?.(url, query);
44
+ return data;
45
+ } catch (err) {
46
+ return fail();
47
+ }
48
+ }
49
+
50
+ export { sendAPIQuery };