react-cheminfo 0.64.1 → 0.65.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (604) hide show
  1. package/README.md +282 -0
  2. package/lib/card/core/cardAddress.d.ts +70 -0
  3. package/lib/card/core/cardAddress.d.ts.map +1 -0
  4. package/lib/card/core/cardAddress.js +59 -0
  5. package/lib/card/core/cardAddress.js.map +1 -0
  6. package/lib/card/core/cardPageUrl.d.ts +49 -0
  7. package/lib/card/core/cardPageUrl.d.ts.map +1 -0
  8. package/lib/card/core/cardPageUrl.js +59 -0
  9. package/lib/card/core/cardPageUrl.js.map +1 -0
  10. package/lib/card/core/index.d.ts +7 -0
  11. package/lib/card/core/index.d.ts.map +1 -0
  12. package/lib/card/core/index.js +4 -0
  13. package/lib/card/core/index.js.map +1 -0
  14. package/lib/card/core/panelRoom.d.ts +40 -0
  15. package/lib/card/core/panelRoom.d.ts.map +1 -0
  16. package/lib/card/core/panelRoom.js +40 -0
  17. package/lib/card/core/panelRoom.js.map +1 -0
  18. package/lib/card/ui/CardDetailsButton.d.ts +38 -0
  19. package/lib/card/ui/CardDetailsButton.d.ts.map +1 -0
  20. package/lib/card/ui/CardDetailsButton.js +50 -0
  21. package/lib/card/ui/CardDetailsButton.js.map +1 -0
  22. package/lib/card/ui/CardFigure.d.ts +51 -0
  23. package/lib/card/ui/CardFigure.d.ts.map +1 -0
  24. package/lib/card/ui/CardFigure.js +27 -0
  25. package/lib/card/ui/CardFigure.js.map +1 -0
  26. package/lib/card/ui/CardFrame.d.ts +30 -0
  27. package/lib/card/ui/CardFrame.d.ts.map +1 -0
  28. package/lib/card/ui/CardFrame.js +20 -0
  29. package/lib/card/ui/CardFrame.js.map +1 -0
  30. package/lib/card/ui/CopyTableButton.d.ts +37 -0
  31. package/lib/card/ui/CopyTableButton.d.ts.map +1 -0
  32. package/lib/card/ui/CopyTableButton.js +19 -0
  33. package/lib/card/ui/CopyTableButton.js.map +1 -0
  34. package/lib/card/ui/cardTooltip.d.ts +14 -0
  35. package/lib/card/ui/cardTooltip.d.ts.map +1 -0
  36. package/lib/card/ui/cardTooltip.js +15 -0
  37. package/lib/card/ui/cardTooltip.js.map +1 -0
  38. package/lib/card/ui/embed.d.ts +15 -0
  39. package/lib/card/ui/embed.d.ts.map +1 -0
  40. package/lib/card/ui/embed.js +24 -0
  41. package/lib/card/ui/embed.js.map +1 -0
  42. package/lib/card/ui/fitCardToFrame.d.ts +31 -0
  43. package/lib/card/ui/fitCardToFrame.d.ts.map +1 -0
  44. package/lib/card/ui/fitCardToFrame.js +66 -0
  45. package/lib/card/ui/fitCardToFrame.js.map +1 -0
  46. package/lib/card/ui/holdRoomForPanels.d.ts +16 -0
  47. package/lib/card/ui/holdRoomForPanels.d.ts.map +1 -0
  48. package/lib/card/ui/holdRoomForPanels.js +76 -0
  49. package/lib/card/ui/holdRoomForPanels.js.map +1 -0
  50. package/lib/card/ui/index.d.ts +11 -0
  51. package/lib/card/ui/index.d.ts.map +1 -0
  52. package/lib/card/ui/index.js +7 -0
  53. package/lib/card/ui/index.js.map +1 -0
  54. package/lib/card/ui/openPanels.d.ts +25 -0
  55. package/lib/card/ui/openPanels.d.ts.map +1 -0
  56. package/lib/card/ui/openPanels.js +85 -0
  57. package/lib/card/ui/openPanels.js.map +1 -0
  58. package/lib/card.d.ts +13 -0
  59. package/lib/card.d.ts.map +1 -0
  60. package/lib/card.js +13 -0
  61. package/lib/card.js.map +1 -0
  62. package/lib/conformers.d.ts +1 -0
  63. package/lib/conformers.d.ts.map +1 -1
  64. package/lib/conformers.js +1 -0
  65. package/lib/conformers.js.map +1 -1
  66. package/lib/core.d.ts +4 -0
  67. package/lib/core.d.ts.map +1 -1
  68. package/lib/core.js +5 -0
  69. package/lib/core.js.map +1 -1
  70. package/lib/fetch/core/apiError.d.ts +56 -0
  71. package/lib/fetch/core/apiError.d.ts.map +1 -0
  72. package/lib/fetch/core/apiError.js +43 -0
  73. package/lib/fetch/core/apiError.js.map +1 -0
  74. package/lib/fetch/core/fetchJson.d.ts +47 -0
  75. package/lib/fetch/core/fetchJson.d.ts.map +1 -0
  76. package/lib/fetch/core/fetchJson.js +109 -0
  77. package/lib/fetch/core/fetchJson.js.map +1 -0
  78. package/lib/fetch/core/index.d.ts +5 -0
  79. package/lib/fetch/core/index.d.ts.map +1 -0
  80. package/lib/fetch/core/index.js +3 -0
  81. package/lib/fetch/core/index.js.map +1 -0
  82. package/lib/formula/core/formulaText.d.ts +46 -0
  83. package/lib/formula/core/formulaText.d.ts.map +1 -0
  84. package/lib/formula/core/formulaText.js +74 -0
  85. package/lib/formula/core/formulaText.js.map +1 -0
  86. package/lib/formula/core/index.d.ts +6 -0
  87. package/lib/formula/core/index.d.ts.map +1 -0
  88. package/lib/formula/core/index.js +4 -0
  89. package/lib/formula/core/index.js.map +1 -0
  90. package/lib/formula/core/normalizeFormula.d.ts +22 -0
  91. package/lib/formula/core/normalizeFormula.d.ts.map +1 -0
  92. package/lib/formula/core/normalizeFormula.js +46 -0
  93. package/lib/formula/core/normalizeFormula.js.map +1 -0
  94. package/lib/formula/core/readFormula.d.ts +73 -0
  95. package/lib/formula/core/readFormula.d.ts.map +1 -0
  96. package/lib/formula/core/readFormula.js +132 -0
  97. package/lib/formula/core/readFormula.js.map +1 -0
  98. package/lib/formula/ui/CopyableFormula.d.ts +31 -0
  99. package/lib/formula/ui/CopyableFormula.d.ts.map +1 -0
  100. package/lib/formula/ui/CopyableFormula.js +19 -0
  101. package/lib/formula/ui/CopyableFormula.js.map +1 -0
  102. package/lib/formula/ui/FormulaInput.d.ts +29 -0
  103. package/lib/formula/ui/FormulaInput.d.ts.map +1 -0
  104. package/lib/formula/ui/FormulaInput.js +16 -0
  105. package/lib/formula/ui/FormulaInput.js.map +1 -0
  106. package/lib/formula/ui/QuestionFormula.d.ts +14 -0
  107. package/lib/formula/ui/QuestionFormula.d.ts.map +1 -0
  108. package/lib/formula/ui/QuestionFormula.js +13 -0
  109. package/lib/formula/ui/QuestionFormula.js.map +1 -0
  110. package/lib/formula/ui/index.d.ts +7 -0
  111. package/lib/formula/ui/index.d.ts.map +1 -0
  112. package/lib/formula/ui/index.js +4 -0
  113. package/lib/formula/ui/index.js.map +1 -0
  114. package/lib/formula.d.ts +11 -0
  115. package/lib/formula.d.ts.map +1 -0
  116. package/lib/formula.js +11 -0
  117. package/lib/formula.js.map +1 -0
  118. package/lib/hooks/ui/index.d.ts +1 -0
  119. package/lib/hooks/ui/index.d.ts.map +1 -1
  120. package/lib/hooks/ui/index.js.map +1 -1
  121. package/lib/hooks/ui/keyTargets.d.ts +4 -2
  122. package/lib/hooks/ui/keyTargets.d.ts.map +1 -1
  123. package/lib/hooks/ui/keyTargets.js +5 -3
  124. package/lib/hooks/ui/keyTargets.js.map +1 -1
  125. package/lib/hooks/ui/useAsync.d.ts +20 -5
  126. package/lib/hooks/ui/useAsync.d.ts.map +1 -1
  127. package/lib/hooks/ui/useAsync.js +29 -14
  128. package/lib/hooks/ui/useAsync.js.map +1 -1
  129. package/lib/i18n/core/chromeCatalog.d.ts +1 -1
  130. package/lib/i18n/core/chromeCatalog.d.ts.map +1 -1
  131. package/lib/locales/de.json +37 -0
  132. package/lib/locales/en.json +37 -0
  133. package/lib/locales/es.json +37 -0
  134. package/lib/locales/fr.json +37 -0
  135. package/lib/locales/it.json +37 -0
  136. package/lib/moleculesClient/core/index.d.ts +5 -0
  137. package/lib/moleculesClient/core/index.d.ts.map +1 -0
  138. package/lib/moleculesClient/core/index.js +3 -0
  139. package/lib/moleculesClient/core/index.js.map +1 -0
  140. package/lib/moleculesClient/core/moleculesClient.d.ts +12 -0
  141. package/lib/moleculesClient/core/moleculesClient.d.ts.map +1 -0
  142. package/lib/moleculesClient/core/moleculesClient.js +105 -0
  143. package/lib/moleculesClient/core/moleculesClient.js.map +1 -0
  144. package/lib/moleculesClient/core/moleculesClientApi.d.ts +100 -0
  145. package/lib/moleculesClient/core/moleculesClientApi.d.ts.map +1 -0
  146. package/lib/moleculesClient/core/moleculesClientApi.js +20 -0
  147. package/lib/moleculesClient/core/moleculesClientApi.js.map +1 -0
  148. package/lib/moleculesClient/core/moleculesTypes.d.ts +154 -0
  149. package/lib/moleculesClient/core/moleculesTypes.d.ts.map +1 -0
  150. package/lib/moleculesClient/core/moleculesTypes.js +2 -0
  151. package/lib/moleculesClient/core/moleculesTypes.js.map +1 -0
  152. package/lib/moleculesClient/core/requestRetry.d.ts +50 -0
  153. package/lib/moleculesClient/core/requestRetry.d.ts.map +1 -0
  154. package/lib/moleculesClient/core/requestRetry.js +108 -0
  155. package/lib/moleculesClient/core/requestRetry.js.map +1 -0
  156. package/lib/molstar/core/camera.d.ts +2 -1
  157. package/lib/molstar/core/camera.d.ts.map +1 -1
  158. package/lib/molstar/core/camera.js +3 -2
  159. package/lib/molstar/core/camera.js.map +1 -1
  160. package/lib/molstar/core/framing.d.ts +102 -0
  161. package/lib/molstar/core/framing.d.ts.map +1 -0
  162. package/lib/molstar/core/framing.js +120 -0
  163. package/lib/molstar/core/framing.js.map +1 -0
  164. package/lib/molstar/core/hover.d.ts +16 -0
  165. package/lib/molstar/core/hover.d.ts.map +1 -1
  166. package/lib/molstar/core/hover.js +14 -0
  167. package/lib/molstar/core/hover.js.map +1 -1
  168. package/lib/molstar/core/index.d.ts +4 -1
  169. package/lib/molstar/core/index.d.ts.map +1 -1
  170. package/lib/molstar/core/index.js +2 -1
  171. package/lib/molstar/core/index.js.map +1 -1
  172. package/lib/pedagogy/core/answers.d.ts +46 -0
  173. package/lib/pedagogy/core/answers.d.ts.map +1 -0
  174. package/lib/pedagogy/core/answers.js +77 -0
  175. package/lib/pedagogy/core/answers.js.map +1 -0
  176. package/lib/pedagogy/core/attempts.d.ts +86 -0
  177. package/lib/pedagogy/core/attempts.d.ts.map +1 -0
  178. package/lib/pedagogy/core/attempts.js +117 -0
  179. package/lib/pedagogy/core/attempts.js.map +1 -0
  180. package/lib/pedagogy/core/index.d.ts +8 -0
  181. package/lib/pedagogy/core/index.d.ts.map +1 -1
  182. package/lib/pedagogy/core/index.js +4 -0
  183. package/lib/pedagogy/core/index.js.map +1 -1
  184. package/lib/pedagogy/core/progressController.d.ts +64 -0
  185. package/lib/pedagogy/core/progressController.d.ts.map +1 -0
  186. package/lib/pedagogy/core/progressController.js +56 -0
  187. package/lib/pedagogy/core/progressController.js.map +1 -0
  188. package/lib/pedagogy/core/seed.d.ts +96 -0
  189. package/lib/pedagogy/core/seed.d.ts.map +1 -0
  190. package/lib/pedagogy/core/seed.js +128 -0
  191. package/lib/pedagogy/core/seed.js.map +1 -0
  192. package/lib/pedagogy/core/series.d.ts +77 -0
  193. package/lib/pedagogy/core/series.d.ts.map +1 -0
  194. package/lib/pedagogy/core/series.js +10 -0
  195. package/lib/pedagogy/core/series.js.map +1 -0
  196. package/lib/pedagogy/ui/AnswerFields.d.ts +21 -0
  197. package/lib/pedagogy/ui/AnswerFields.d.ts.map +1 -0
  198. package/lib/pedagogy/ui/AnswerFields.js +24 -0
  199. package/lib/pedagogy/ui/AnswerFields.js.map +1 -0
  200. package/lib/pedagogy/ui/ExerciseList.d.ts +82 -0
  201. package/lib/pedagogy/ui/ExerciseList.d.ts.map +1 -0
  202. package/lib/pedagogy/ui/ExerciseList.js +53 -0
  203. package/lib/pedagogy/ui/ExerciseList.js.map +1 -0
  204. package/lib/pedagogy/ui/ExerciseSeries.d.ts +95 -0
  205. package/lib/pedagogy/ui/ExerciseSeries.d.ts.map +1 -0
  206. package/lib/pedagogy/ui/ExerciseSeries.js +74 -0
  207. package/lib/pedagogy/ui/ExerciseSeries.js.map +1 -0
  208. package/lib/pedagogy/ui/QuestionCard.d.ts +64 -0
  209. package/lib/pedagogy/ui/QuestionCard.d.ts.map +1 -0
  210. package/lib/pedagogy/ui/QuestionCard.js +73 -0
  211. package/lib/pedagogy/ui/QuestionCard.js.map +1 -0
  212. package/lib/pedagogy/ui/index.d.ts +10 -0
  213. package/lib/pedagogy/ui/index.d.ts.map +1 -1
  214. package/lib/pedagogy/ui/index.js +6 -0
  215. package/lib/pedagogy/ui/index.js.map +1 -1
  216. package/lib/pedagogy/ui/seriesCounts.d.ts +17 -0
  217. package/lib/pedagogy/ui/seriesCounts.d.ts.map +1 -0
  218. package/lib/pedagogy/ui/seriesCounts.js +27 -0
  219. package/lib/pedagogy/ui/seriesCounts.js.map +1 -0
  220. package/lib/pedagogy/ui/seriesParts.d.ts +55 -0
  221. package/lib/pedagogy/ui/seriesParts.d.ts.map +1 -0
  222. package/lib/pedagogy/ui/seriesParts.js +38 -0
  223. package/lib/pedagogy/ui/seriesParts.js.map +1 -0
  224. package/lib/pedagogy/ui/useAttemptRecords.d.ts +10 -0
  225. package/lib/pedagogy/ui/useAttemptRecords.d.ts.map +1 -0
  226. package/lib/pedagogy/ui/useAttemptRecords.js +11 -0
  227. package/lib/pedagogy/ui/useAttemptRecords.js.map +1 -0
  228. package/lib/periodic/ui/PeriodicTable.d.ts.map +1 -1
  229. package/lib/periodic/ui/PeriodicTable.js +6 -3
  230. package/lib/periodic/ui/PeriodicTable.js.map +1 -1
  231. package/lib/property/core/copyableText.d.ts +14 -0
  232. package/lib/property/core/copyableText.d.ts.map +1 -0
  233. package/lib/property/core/copyableText.js +21 -0
  234. package/lib/property/core/copyableText.js.map +1 -0
  235. package/lib/property/core/index.d.ts +2 -0
  236. package/lib/property/core/index.d.ts.map +1 -0
  237. package/lib/property/core/index.js +2 -0
  238. package/lib/property/core/index.js.map +1 -0
  239. package/lib/property/ui/PropertyTable.d.ts +43 -0
  240. package/lib/property/ui/PropertyTable.d.ts.map +1 -0
  241. package/lib/property/ui/PropertyTable.js +19 -0
  242. package/lib/property/ui/PropertyTable.js.map +1 -0
  243. package/lib/property/ui/index.d.ts +3 -0
  244. package/lib/property/ui/index.d.ts.map +1 -0
  245. package/lib/property/ui/index.js +2 -0
  246. package/lib/property/ui/index.js.map +1 -0
  247. package/lib/router/core/history.d.ts +24 -3
  248. package/lib/router/core/history.d.ts.map +1 -1
  249. package/lib/router/core/history.js +55 -7
  250. package/lib/router/core/history.js.map +1 -1
  251. package/lib/router/core/index.d.ts +3 -3
  252. package/lib/router/core/index.d.ts.map +1 -1
  253. package/lib/router/core/index.js +2 -2
  254. package/lib/router/core/index.js.map +1 -1
  255. package/lib/router/core/languageRoute.d.ts +61 -0
  256. package/lib/router/core/languageRoute.d.ts.map +1 -0
  257. package/lib/router/core/languageRoute.js +96 -0
  258. package/lib/router/core/languageRoute.js.map +1 -0
  259. package/lib/router/core/siteAddresses.d.ts +23 -0
  260. package/lib/router/core/siteAddresses.d.ts.map +1 -1
  261. package/lib/router/core/siteAddresses.js +26 -0
  262. package/lib/router/core/siteAddresses.js.map +1 -1
  263. package/lib/router/core/tabRouter.d.ts +2 -108
  264. package/lib/router/core/tabRouter.d.ts.map +1 -1
  265. package/lib/router/core/tabRouter.js +38 -5
  266. package/lib/router/core/tabRouter.js.map +1 -1
  267. package/lib/router/core/tabRouterTypes.d.ts +154 -0
  268. package/lib/router/core/tabRouterTypes.d.ts.map +1 -0
  269. package/lib/router/core/tabRouterTypes.js +2 -0
  270. package/lib/router/core/tabRouterTypes.js.map +1 -0
  271. package/lib/seo/core/fitDescription.d.ts +40 -0
  272. package/lib/seo/core/fitDescription.d.ts.map +1 -0
  273. package/lib/seo/core/fitDescription.js +45 -0
  274. package/lib/seo/core/fitDescription.js.map +1 -0
  275. package/lib/seo/core/index.d.ts +7 -0
  276. package/lib/seo/core/index.d.ts.map +1 -1
  277. package/lib/seo/core/index.js +4 -0
  278. package/lib/seo/core/index.js.map +1 -1
  279. package/lib/seo/core/limits.d.ts +24 -0
  280. package/lib/seo/core/limits.d.ts.map +1 -0
  281. package/lib/seo/core/limits.js +24 -0
  282. package/lib/seo/core/limits.js.map +1 -0
  283. package/lib/seo/core/pageContent.d.ts +25 -0
  284. package/lib/seo/core/pageContent.d.ts.map +1 -0
  285. package/lib/seo/core/pageContent.js +25 -0
  286. package/lib/seo/core/pageContent.js.map +1 -0
  287. package/lib/seo/core/plainDescription.d.ts.map +1 -1
  288. package/lib/seo/core/plainDescription.js +3 -2
  289. package/lib/seo/core/plainDescription.js.map +1 -1
  290. package/lib/seo/core/routeProblems.d.ts.map +1 -1
  291. package/lib/seo/core/routeProblems.js +1 -6
  292. package/lib/seo/core/routeProblems.js.map +1 -1
  293. package/lib/seo/core/routeTable.d.ts +31 -0
  294. package/lib/seo/core/routeTable.d.ts.map +1 -0
  295. package/lib/seo/core/routeTable.js +96 -0
  296. package/lib/seo/core/routeTable.js.map +1 -0
  297. package/lib/seo/vite/index.d.ts +2 -0
  298. package/lib/seo/vite/index.d.ts.map +1 -1
  299. package/lib/seo/vite/index.js +1 -0
  300. package/lib/seo/vite/index.js.map +1 -1
  301. package/lib/seo/vite/prerender.d.ts +10 -0
  302. package/lib/seo/vite/prerender.d.ts.map +1 -1
  303. package/lib/seo/vite/prerender.js +12 -1
  304. package/lib/seo/vite/prerender.js.map +1 -1
  305. package/lib/seo/vite/routeTable.d.ts +40 -0
  306. package/lib/seo/vite/routeTable.d.ts.map +1 -0
  307. package/lib/seo/vite/routeTable.js +44 -0
  308. package/lib/seo/vite/routeTable.js.map +1 -0
  309. package/lib/server/answerAddresses.d.ts +51 -0
  310. package/lib/server/answerAddresses.d.ts.map +1 -0
  311. package/lib/server/answerAddresses.js +72 -0
  312. package/lib/server/answerAddresses.js.map +1 -0
  313. package/lib/server/cardMeta.d.ts +57 -0
  314. package/lib/server/cardMeta.d.ts.map +1 -0
  315. package/lib/server/cardMeta.js +52 -0
  316. package/lib/server/cardMeta.js.map +1 -0
  317. package/lib/server/config.d.ts +72 -0
  318. package/lib/server/config.d.ts.map +1 -0
  319. package/lib/server/config.js +67 -0
  320. package/lib/server/config.js.map +1 -0
  321. package/lib/server/envNumber.d.ts +35 -0
  322. package/lib/server/envNumber.d.ts.map +1 -0
  323. package/lib/server/envNumber.js +42 -0
  324. package/lib/server/envNumber.js.map +1 -0
  325. package/lib/server/healthRoute.d.ts +26 -0
  326. package/lib/server/healthRoute.d.ts.map +1 -0
  327. package/lib/server/healthRoute.js +22 -0
  328. package/lib/server/healthRoute.js.map +1 -0
  329. package/lib/server/listenSite.d.ts +38 -0
  330. package/lib/server/listenSite.d.ts.map +1 -0
  331. package/lib/server/listenSite.js +60 -0
  332. package/lib/server/listenSite.js.map +1 -0
  333. package/lib/server/mcpServer.d.ts +8 -0
  334. package/lib/server/mcpServer.d.ts.map +1 -0
  335. package/lib/server/mcpServer.js +11 -0
  336. package/lib/server/mcpServer.js.map +1 -0
  337. package/lib/server/repositoryVersion.d.ts +16 -0
  338. package/lib/server/repositoryVersion.d.ts.map +1 -0
  339. package/lib/server/repositoryVersion.js +33 -0
  340. package/lib/server/repositoryVersion.js.map +1 -0
  341. package/lib/server/routeOptions.d.ts +23 -0
  342. package/lib/server/routeOptions.d.ts.map +1 -0
  343. package/lib/server/routeOptions.js +20 -0
  344. package/lib/server/routeOptions.js.map +1 -0
  345. package/lib/server/routeTable.d.ts +14 -0
  346. package/lib/server/routeTable.d.ts.map +1 -0
  347. package/lib/server/routeTable.js +32 -0
  348. package/lib/server/routeTable.js.map +1 -0
  349. package/lib/server/siteView.d.ts +29 -0
  350. package/lib/server/siteView.d.ts.map +1 -0
  351. package/lib/server/siteView.js +21 -0
  352. package/lib/server/siteView.js.map +1 -0
  353. package/lib/server/spaPages.d.ts +32 -0
  354. package/lib/server/spaPages.d.ts.map +1 -0
  355. package/lib/server/spaPages.js +126 -0
  356. package/lib/server/spaPages.js.map +1 -0
  357. package/lib/server/spaSite.d.ts +30 -0
  358. package/lib/server/spaSite.d.ts.map +1 -0
  359. package/lib/server/spaSite.js +170 -0
  360. package/lib/server/spaSite.js.map +1 -0
  361. package/lib/server/spaSiteOptions.d.ts +126 -0
  362. package/lib/server/spaSiteOptions.d.ts.map +1 -0
  363. package/lib/server/spaSiteOptions.js +2 -0
  364. package/lib/server/spaSiteOptions.js.map +1 -0
  365. package/lib/server/staticSite.d.ts +9 -0
  366. package/lib/server/staticSite.d.ts.map +1 -1
  367. package/lib/server/staticSite.js +41 -19
  368. package/lib/server/staticSite.js.map +1 -1
  369. package/lib/server/toolSiteServer.d.ts +77 -0
  370. package/lib/server/toolSiteServer.d.ts.map +1 -0
  371. package/lib/server/toolSiteServer.js +58 -0
  372. package/lib/server/toolSiteServer.js.map +1 -0
  373. package/lib/server/trustProxy.d.ts +20 -0
  374. package/lib/server/trustProxy.d.ts.map +1 -0
  375. package/lib/server/trustProxy.js +32 -0
  376. package/lib/server/trustProxy.js.map +1 -0
  377. package/lib/server/types.d.ts +13 -0
  378. package/lib/server/types.d.ts.map +1 -0
  379. package/lib/server/types.js +2 -0
  380. package/lib/server/types.js.map +1 -0
  381. package/lib/server.d.ts +22 -0
  382. package/lib/server.d.ts.map +1 -1
  383. package/lib/server.js +12 -0
  384. package/lib/server.js.map +1 -1
  385. package/lib/share/core/config.d.ts +18 -0
  386. package/lib/share/core/config.d.ts.map +1 -1
  387. package/lib/share/core/config.js +33 -2
  388. package/lib/share/core/config.js.map +1 -1
  389. package/lib/share/core/index.d.ts +3 -1
  390. package/lib/share/core/index.d.ts.map +1 -1
  391. package/lib/share/core/index.js +2 -1
  392. package/lib/share/core/index.js.map +1 -1
  393. package/lib/share/core/keySetParam.d.ts +40 -0
  394. package/lib/share/core/keySetParam.d.ts.map +1 -0
  395. package/lib/share/core/keySetParam.js +60 -0
  396. package/lib/share/core/keySetParam.js.map +1 -0
  397. package/lib/share/core/vocabulary.d.ts +8 -0
  398. package/lib/share/core/vocabulary.d.ts.map +1 -1
  399. package/lib/shell/ui/ShareControl.d.ts +75 -0
  400. package/lib/shell/ui/ShareControl.d.ts.map +1 -0
  401. package/lib/shell/ui/ShareControl.js +40 -0
  402. package/lib/shell/ui/ShareControl.js.map +1 -0
  403. package/lib/shell/ui/ShellFrame.d.ts +14 -0
  404. package/lib/shell/ui/ShellFrame.d.ts.map +1 -0
  405. package/lib/shell/ui/ShellFrame.js +45 -0
  406. package/lib/shell/ui/ShellFrame.js.map +1 -0
  407. package/lib/shell/ui/SiteShell.d.ts +251 -0
  408. package/lib/shell/ui/SiteShell.d.ts.map +1 -0
  409. package/lib/shell/ui/SiteShell.js +39 -0
  410. package/lib/shell/ui/SiteShell.js.map +1 -0
  411. package/lib/shell/ui/index.d.ts +5 -0
  412. package/lib/shell/ui/index.d.ts.map +1 -0
  413. package/lib/shell/ui/index.js +3 -0
  414. package/lib/shell/ui/index.js.map +1 -0
  415. package/lib/state/core/index.d.ts +1 -0
  416. package/lib/state/core/index.d.ts.map +1 -1
  417. package/lib/state/core/index.js.map +1 -1
  418. package/lib/state/core/legacyEntries.d.ts +30 -0
  419. package/lib/state/core/legacyEntries.d.ts.map +1 -0
  420. package/lib/state/core/legacyEntries.js +51 -0
  421. package/lib/state/core/legacyEntries.js.map +1 -0
  422. package/lib/state/core/persistBucket.d.ts +26 -2
  423. package/lib/state/core/persistBucket.d.ts.map +1 -1
  424. package/lib/state/core/persistBucket.js +26 -9
  425. package/lib/state/core/persistBucket.js.map +1 -1
  426. package/lib/state/core/persistSignalBucket.d.ts +26 -0
  427. package/lib/state/core/persistSignalBucket.d.ts.map +1 -1
  428. package/lib/state/core/persistSignalBucket.js +31 -0
  429. package/lib/state/core/persistSignalBucket.js.map +1 -1
  430. package/lib/state/core/storageEntry.d.ts +15 -0
  431. package/lib/state/core/storageEntry.d.ts.map +1 -1
  432. package/lib/state/core/storageEntry.js +33 -0
  433. package/lib/state/core/storageEntry.js.map +1 -1
  434. package/lib/structure/ui/StructureExportButton.d.ts +27 -0
  435. package/lib/structure/ui/StructureExportButton.d.ts.map +1 -0
  436. package/lib/structure/ui/StructureExportButton.js +21 -0
  437. package/lib/structure/ui/StructureExportButton.js.map +1 -0
  438. package/lib/structure/ui/index.d.ts +4 -0
  439. package/lib/structure/ui/index.d.ts.map +1 -1
  440. package/lib/structure/ui/index.js +2 -0
  441. package/lib/structure/ui/index.js.map +1 -1
  442. package/lib/structure/ui/useStructureDraft.d.ts +32 -0
  443. package/lib/structure/ui/useStructureDraft.d.ts.map +1 -0
  444. package/lib/structure/ui/useStructureDraft.js +20 -0
  445. package/lib/structure/ui/useStructureDraft.js.map +1 -0
  446. package/lib/ui.d.ts +2 -0
  447. package/lib/ui.d.ts.map +1 -1
  448. package/lib/ui.js +2 -0
  449. package/lib/ui.js.map +1 -1
  450. package/lib/worker/core/index.d.ts +1 -1
  451. package/lib/worker/core/index.d.ts.map +1 -1
  452. package/lib/worker/core/messages.d.ts +4 -2
  453. package/lib/worker/core/messages.d.ts.map +1 -1
  454. package/lib/worker/core/messages.js.map +1 -1
  455. package/lib/worker/core/oclResourcesUrl.d.ts +16 -0
  456. package/lib/worker/core/oclResourcesUrl.d.ts.map +1 -0
  457. package/lib/worker/core/oclResourcesUrl.js +19 -0
  458. package/lib/worker/core/oclResourcesUrl.js.map +1 -0
  459. package/lib/worker/core/serveWorkerRequests.d.ts +8 -0
  460. package/lib/worker/core/serveWorkerRequests.d.ts.map +1 -1
  461. package/lib/worker/core/serveWorkerRequests.js +15 -2
  462. package/lib/worker/core/serveWorkerRequests.js.map +1 -1
  463. package/lib/worker/core/workerChannel.d.ts +3 -4
  464. package/lib/worker/core/workerChannel.d.ts.map +1 -1
  465. package/lib/worker/core/workerChannel.js +72 -67
  466. package/lib/worker/core/workerChannel.js.map +1 -1
  467. package/lib/worker/core/workerChannelParts.d.ts +17 -6
  468. package/lib/worker/core/workerChannelParts.d.ts.map +1 -1
  469. package/lib/worker/core/workerChannelParts.js +20 -4
  470. package/lib/worker/core/workerChannelParts.js.map +1 -1
  471. package/lib/worker/core/workerChannelTypes.d.ts +46 -2
  472. package/lib/worker/core/workerChannelTypes.d.ts.map +1 -1
  473. package/lib/worker/core/workerSlot.d.ts +66 -0
  474. package/lib/worker/core/workerSlot.d.ts.map +1 -0
  475. package/lib/worker/core/workerSlot.js +107 -0
  476. package/lib/worker/core/workerSlot.js.map +1 -0
  477. package/package.json +16 -1
  478. package/src/card/core/cardAddress.ts +100 -0
  479. package/src/card/core/cardPageUrl.ts +97 -0
  480. package/src/card/core/index.ts +6 -0
  481. package/src/card/core/panelRoom.ts +66 -0
  482. package/src/card/ui/CardDetailsButton.tsx +104 -0
  483. package/src/card/ui/CardFigure.tsx +86 -0
  484. package/src/card/ui/CardFrame.tsx +46 -0
  485. package/src/card/ui/CopyTableButton.tsx +81 -0
  486. package/src/card/ui/cardTooltip.ts +18 -0
  487. package/src/card/ui/embed.ts +27 -0
  488. package/src/card/ui/fitCardToFrame.ts +76 -0
  489. package/src/card/ui/holdRoomForPanels.ts +83 -0
  490. package/src/card/ui/index.ts +14 -0
  491. package/src/card/ui/openPanels.ts +106 -0
  492. package/src/card.ts +13 -0
  493. package/src/conformers.ts +4 -0
  494. package/src/core.ts +5 -0
  495. package/src/fetch/core/apiError.ts +65 -0
  496. package/src/fetch/core/fetchJson.ts +129 -0
  497. package/src/fetch/core/index.ts +4 -0
  498. package/src/formula/core/formulaText.ts +96 -0
  499. package/src/formula/core/index.ts +20 -0
  500. package/src/formula/core/normalizeFormula.ts +50 -0
  501. package/src/formula/core/readFormula.ts +211 -0
  502. package/src/formula/ui/CopyableFormula.tsx +51 -0
  503. package/src/formula/ui/FormulaInput.tsx +50 -0
  504. package/src/formula/ui/QuestionFormula.tsx +20 -0
  505. package/src/formula/ui/index.ts +6 -0
  506. package/src/formula.ts +11 -0
  507. package/src/hooks/ui/index.ts +1 -0
  508. package/src/hooks/ui/keyTargets.ts +5 -3
  509. package/src/hooks/ui/useAsync.ts +50 -14
  510. package/src/locales/de.json +37 -0
  511. package/src/locales/en.json +37 -0
  512. package/src/locales/es.json +37 -0
  513. package/src/locales/fr.json +37 -0
  514. package/src/locales/it.json +37 -0
  515. package/src/moleculesClient/core/index.ts +19 -0
  516. package/src/moleculesClient/core/moleculesClient.ts +175 -0
  517. package/src/moleculesClient/core/moleculesClientApi.ts +120 -0
  518. package/src/moleculesClient/core/moleculesTypes.ts +163 -0
  519. package/src/moleculesClient/core/requestRetry.ts +118 -0
  520. package/src/molstar/core/camera.ts +3 -2
  521. package/src/molstar/core/framing.ts +200 -0
  522. package/src/molstar/core/hover.ts +26 -0
  523. package/src/molstar/core/index.ts +21 -1
  524. package/src/pedagogy/core/answers.ts +94 -0
  525. package/src/pedagogy/core/attempts.ts +205 -0
  526. package/src/pedagogy/core/index.ts +36 -0
  527. package/src/pedagogy/core/progressController.ts +116 -0
  528. package/src/pedagogy/core/seed.ts +177 -0
  529. package/src/pedagogy/core/series.ts +82 -0
  530. package/src/pedagogy/ui/AnswerFields.tsx +63 -0
  531. package/src/pedagogy/ui/ExerciseList.tsx +202 -0
  532. package/src/pedagogy/ui/ExerciseSeries.tsx +250 -0
  533. package/src/pedagogy/ui/QuestionCard.tsx +231 -0
  534. package/src/pedagogy/ui/index.ts +18 -0
  535. package/src/pedagogy/ui/seriesCounts.ts +34 -0
  536. package/src/pedagogy/ui/seriesParts.tsx +127 -0
  537. package/src/pedagogy/ui/useAttemptRecords.ts +16 -0
  538. package/src/periodic/ui/PeriodicTable.tsx +6 -3
  539. package/src/property/core/copyableText.ts +20 -0
  540. package/src/property/core/index.ts +1 -0
  541. package/src/property/ui/PropertyTable.tsx +83 -0
  542. package/src/property/ui/index.ts +2 -0
  543. package/src/router/core/history.ts +61 -7
  544. package/src/router/core/index.ts +3 -2
  545. package/src/router/core/languageRoute.ts +136 -0
  546. package/src/router/core/siteAddresses.ts +38 -0
  547. package/src/router/core/tabRouter.ts +59 -117
  548. package/src/router/core/tabRouterTypes.ts +158 -0
  549. package/src/seo/core/fitDescription.ts +74 -0
  550. package/src/seo/core/index.ts +17 -0
  551. package/src/seo/core/limits.ts +27 -0
  552. package/src/seo/core/pageContent.ts +42 -0
  553. package/src/seo/core/plainDescription.ts +4 -2
  554. package/src/seo/core/routeProblems.ts +1 -7
  555. package/src/seo/core/routeTable.ts +103 -0
  556. package/src/seo/vite/index.ts +2 -0
  557. package/src/seo/vite/prerender.ts +26 -1
  558. package/src/seo/vite/routeTable.ts +79 -0
  559. package/src/server/answerAddresses.ts +92 -0
  560. package/src/server/cardMeta.ts +88 -0
  561. package/src/server/config.ts +125 -0
  562. package/src/server/envNumber.ts +65 -0
  563. package/src/server/healthRoute.ts +42 -0
  564. package/src/server/listenSite.ts +90 -0
  565. package/src/server/mcpServer.ts +14 -0
  566. package/src/server/repositoryVersion.ts +33 -0
  567. package/src/server/routeOptions.ts +26 -0
  568. package/src/server/routeTable.ts +35 -0
  569. package/src/server/siteView.ts +42 -0
  570. package/src/server/spaPages.ts +179 -0
  571. package/src/server/spaSite.ts +216 -0
  572. package/src/server/spaSiteOptions.ts +133 -0
  573. package/src/server/staticSite.ts +65 -35
  574. package/src/server/toolSiteServer.ts +127 -0
  575. package/src/server/trustProxy.ts +32 -0
  576. package/src/server/types.ts +25 -0
  577. package/src/server.ts +40 -0
  578. package/src/share/core/config.ts +45 -2
  579. package/src/share/core/index.ts +4 -0
  580. package/src/share/core/keySetParam.ts +92 -0
  581. package/src/share/core/vocabulary.ts +8 -0
  582. package/src/shell/ui/ShareControl.tsx +150 -0
  583. package/src/shell/ui/ShellFrame.tsx +180 -0
  584. package/src/shell/ui/SiteShell.tsx +297 -0
  585. package/src/shell/ui/index.ts +9 -0
  586. package/src/state/core/index.ts +1 -0
  587. package/src/state/core/legacyEntries.ts +76 -0
  588. package/src/state/core/persistBucket.ts +50 -10
  589. package/src/state/core/persistSignalBucket.ts +52 -0
  590. package/src/state/core/storageEntry.ts +32 -0
  591. package/src/structure/ui/StructureExportButton.tsx +57 -0
  592. package/src/structure/ui/index.ts +4 -0
  593. package/src/structure/ui/useStructureDraft.ts +47 -0
  594. package/src/ui.ts +2 -0
  595. package/src/worker/core/index.ts +1 -0
  596. package/src/worker/core/messages.ts +4 -3
  597. package/src/worker/core/oclResourcesUrl.ts +21 -0
  598. package/src/worker/core/serveWorkerRequests.ts +30 -2
  599. package/src/worker/core/workerChannel.ts +74 -74
  600. package/src/worker/core/workerChannelParts.ts +33 -13
  601. package/src/worker/core/workerChannelTypes.ts +47 -2
  602. package/src/worker/core/workerSlot.ts +181 -0
  603. package/styles/card.css +145 -0
  604. package/styles/chrome.css +248 -0
@@ -53,6 +53,7 @@
53
53
  "share.button": "Compartir",
54
54
  "share.buttonTitle": "Compartir un enlace a esta página, o incrustarla en su propio sitio",
55
55
  "share.dialogTitleFor": "Compartir o incrustar — {title}",
56
+ "share.frameTitle": "{site} — {title}",
56
57
  "share.layout": "Disposición",
57
58
  "share.embed": "Incrustar en otra página",
58
59
  "share.embedHint": "Quita la cabecera del sitio y su navegación, para que la página quede dentro de una página suya.",
@@ -104,6 +105,12 @@
104
105
  "clipboard.copyThe": "Copiar {what}",
105
106
  "clipboard.copyValue": "Copiar {value}",
106
107
  "clipboard.copyToClipboard": "Copiar al portapapeles",
108
+ "card.details": "Detalles",
109
+ "card.detailsTitle": "Abrir en una pestaña nueva",
110
+ "card.detailsLabel": "Detalles: abrir en una pestaña nueva",
111
+ "card.copyTable": "Copiar como tabla",
112
+ "card.copyTableTitle": "Copiar la tabla, para pegarla en una hoja de cálculo",
113
+ "card.copyPicture": "Copiar o guardar la imagen",
107
114
  "about.providedBy": "Ofrecido por",
108
115
  "about.whatYouCanDo": "Lo que puede hacer aquí",
109
116
  "about.builtOn": "Construido sobre",
@@ -245,6 +252,35 @@
245
252
  "pedagogy.previous": "Anterior",
246
253
  "pedagogy.next": "Siguiente",
247
254
  "pedagogy.stepOf": "Paso {step} de {total}",
255
+ "pedagogy.answerEmpty": "Escriba {what}.",
256
+ "pedagogy.answerUnreadable": "«{typed}» no es {what}.",
257
+ "pedagogy.questions": "Preguntas",
258
+ "pedagogy.questionsInSeries": "Preguntas por serie",
259
+ "pedagogy.questionCount": "{count} preguntas",
260
+ "pedagogy.allQuestions": "Las {count} preguntas",
261
+ "pedagogy.newSeries": "Nueva serie",
262
+ "pedagogy.newSeriesTitle": "Sacar otra serie; el enlace en pantalla cambia con ella",
263
+ "pedagogy.seriesQuestions": "Preguntas de la serie",
264
+ "pedagogy.questionNumber": "Pregunta {number}",
265
+ "pedagogy.questionOf": "Pregunta {number} de {total}",
266
+ "pedagogy.solved": "Resuelta",
267
+ "pedagogy.solvedWithHintsOf": "Pistas abiertas: {revealed} de {total}.",
268
+ "pedagogy.solvedWithoutHint": "Sin pistas.",
269
+ "pedagogy.nextQuestion": "Pregunta siguiente",
270
+ "pedagogy.solution": "Solución",
271
+ "pedagogy.exercises": "Ejercicios",
272
+ "pedagogy.statusIdle": "sin empezar",
273
+ "pedagogy.statusAttempted": "entregada, aún no correcta",
274
+ "pedagogy.statusSolved": "correcta",
275
+ "pedagogy.solvedWithOneHint": "Resuelta con 1 pista",
276
+ "pedagogy.solvedWithHints": "Resuelta con {count} pistas",
277
+ "formula.copyLabel": "fórmula",
278
+ "formula.typeFirst": "Escriba primero una fórmula.",
279
+ "formula.notElement": "«{symbol}» no es el símbolo de un elemento.",
280
+ "formula.noAtom": "«{formula}» no contiene ningún átomo.",
281
+ "formula.wholeCounts": "«{formula}» da a un átomo la cantidad {count}; las cantidades son números enteros.",
282
+ "formula.unknownNotation": "«{formula}» usa una notación que esta herramienta no cuenta.",
283
+ "formula.unreadable": "«{formula}» no es una fórmula que esta herramienta sepa leer ({reason}).",
248
284
  "slides.exit": "Salir",
249
285
  "slides.previousSlide": "Diapositiva anterior",
250
286
  "slides.nextSlide": "Diapositiva siguiente",
@@ -458,6 +494,7 @@
458
494
  "structure.tool.unavailable": "No disponible en este editor.",
459
495
  "structure.loadingEditor": "Cargando el editor…",
460
496
  "structure.export.open": "Exportar la estructura",
497
+ "structure.export.glyph": "Copiar o guardar la estructura: SMILES, molfile",
461
498
  "structure.export.title": "Exportar la estructura",
462
499
  "structure.export.loading": "Leyendo la estructura…",
463
500
  "structure.export.nothing": "Todavía no hay nada dibujado.",
@@ -53,6 +53,7 @@
53
53
  "share.button": "Partager",
54
54
  "share.buttonTitle": "Partager un lien vers cette page, ou l'intégrer à votre propre site",
55
55
  "share.dialogTitleFor": "Partager ou intégrer — {title}",
56
+ "share.frameTitle": "{site} — {title}",
56
57
  "share.layout": "Disposition",
57
58
  "share.embed": "Intégrer dans une autre page",
58
59
  "share.embedHint": "Retire l'en-tête du site et sa navigation, pour que la page prenne place dans une page à vous.",
@@ -104,6 +105,12 @@
104
105
  "clipboard.copyThe": "Copier {what}",
105
106
  "clipboard.copyValue": "Copier {value}",
106
107
  "clipboard.copyToClipboard": "Copier dans le presse-papiers",
108
+ "card.details": "Détails",
109
+ "card.detailsTitle": "Ouvrir dans un nouvel onglet",
110
+ "card.detailsLabel": "Détails : ouvrir dans un nouvel onglet",
111
+ "card.copyTable": "Copier en tableau",
112
+ "card.copyTableTitle": "Copier le tableau, à coller dans un tableur",
113
+ "card.copyPicture": "Copier ou enregistrer l’image",
107
114
  "about.providedBy": "Proposé par",
108
115
  "about.whatYouCanDo": "Ce que vous pouvez faire ici",
109
116
  "about.builtOn": "Construit sur",
@@ -245,6 +252,35 @@
245
252
  "pedagogy.previous": "Précédent",
246
253
  "pedagogy.next": "Suivant",
247
254
  "pedagogy.stepOf": "Étape {step} sur {total}",
255
+ "pedagogy.answerEmpty": "Tapez {what}.",
256
+ "pedagogy.answerUnreadable": "« {typed} » n’est pas {what}.",
257
+ "pedagogy.questions": "Questions",
258
+ "pedagogy.questionsInSeries": "Questions dans une série",
259
+ "pedagogy.questionCount": "{count} questions",
260
+ "pedagogy.allQuestions": "Les {count} questions",
261
+ "pedagogy.newSeries": "Nouvelle série",
262
+ "pedagogy.newSeriesTitle": "Tirer une autre série ; le lien affiché change avec elle",
263
+ "pedagogy.seriesQuestions": "Questions de la série",
264
+ "pedagogy.questionNumber": "Question {number}",
265
+ "pedagogy.questionOf": "Question {number} sur {total}",
266
+ "pedagogy.solved": "Résolu",
267
+ "pedagogy.solvedWithHintsOf": "Indices ouverts : {revealed} sur {total}.",
268
+ "pedagogy.solvedWithoutHint": "Sans indice.",
269
+ "pedagogy.nextQuestion": "Question suivante",
270
+ "pedagogy.solution": "Solution",
271
+ "pedagogy.exercises": "Exercices",
272
+ "pedagogy.statusIdle": "pas commencé",
273
+ "pedagogy.statusAttempted": "rendu, pas encore juste",
274
+ "pedagogy.statusSolved": "juste",
275
+ "pedagogy.solvedWithOneHint": "Résolu avec 1 indice",
276
+ "pedagogy.solvedWithHints": "Résolu avec {count} indices",
277
+ "formula.copyLabel": "formule",
278
+ "formula.typeFirst": "Tapez d’abord une formule.",
279
+ "formula.notElement": "« {symbol} » n’est pas un symbole d’élément.",
280
+ "formula.noAtom": "« {formula} » ne contient aucun atome.",
281
+ "formula.wholeCounts": "« {formula} » compte {count} pour un atome ; un nombre d’atomes est entier.",
282
+ "formula.unknownNotation": "« {formula} » utilise une notation que cet outil ne compte pas.",
283
+ "formula.unreadable": "« {formula} » n’est pas une formule que cet outil sait lire ({reason}).",
248
284
  "slides.exit": "Quitter",
249
285
  "slides.previousSlide": "Diapositive précédente",
250
286
  "slides.nextSlide": "Diapositive suivante",
@@ -458,6 +494,7 @@
458
494
  "structure.tool.unavailable": "Indisponible dans cet éditeur.",
459
495
  "structure.loadingEditor": "Chargement de l'éditeur…",
460
496
  "structure.export.open": "Exporter la structure",
497
+ "structure.export.glyph": "Copier ou enregistrer la structure : SMILES, molfile",
461
498
  "structure.export.title": "Exporter la structure",
462
499
  "structure.export.loading": "Lecture de la structure…",
463
500
  "structure.export.nothing": "Rien n'est encore dessiné.",
@@ -53,6 +53,7 @@
53
53
  "share.button": "Condividi",
54
54
  "share.buttonTitle": "Condividere un link a questa pagina, o incorporarla nel proprio sito",
55
55
  "share.dialogTitleFor": "Condividere o incorporare — {title}",
56
+ "share.frameTitle": "{site} — {title}",
56
57
  "share.layout": "Disposizione",
57
58
  "share.embed": "Incorporare in un'altra pagina",
58
59
  "share.embedHint": "Toglie l'intestazione del sito e la sua navigazione, così la pagina sta dentro una pagina propria.",
@@ -104,6 +105,12 @@
104
105
  "clipboard.copyThe": "Copia {what}",
105
106
  "clipboard.copyValue": "Copia {value}",
106
107
  "clipboard.copyToClipboard": "Copia negli appunti",
108
+ "card.details": "Dettagli",
109
+ "card.detailsTitle": "Apri in una nuova scheda",
110
+ "card.detailsLabel": "Dettagli: apri in una nuova scheda",
111
+ "card.copyTable": "Copia come tabella",
112
+ "card.copyTableTitle": "Copia la tabella, da incollare in un foglio di calcolo",
113
+ "card.copyPicture": "Copia o salva l’immagine",
107
114
  "about.providedBy": "Offerto da",
108
115
  "about.whatYouCanDo": "Cosa si può fare qui",
109
116
  "about.builtOn": "Costruito su",
@@ -245,6 +252,35 @@
245
252
  "pedagogy.previous": "Precedente",
246
253
  "pedagogy.next": "Successivo",
247
254
  "pedagogy.stepOf": "Passo {step} di {total}",
255
+ "pedagogy.answerEmpty": "Scrivi {what}.",
256
+ "pedagogy.answerUnreadable": "«{typed}» non è {what}.",
257
+ "pedagogy.questions": "Domande",
258
+ "pedagogy.questionsInSeries": "Domande per serie",
259
+ "pedagogy.questionCount": "{count} domande",
260
+ "pedagogy.allQuestions": "Tutte le {count} domande",
261
+ "pedagogy.newSeries": "Nuova serie",
262
+ "pedagogy.newSeriesTitle": "Estrai un’altra serie; il link sullo schermo cambia con essa",
263
+ "pedagogy.seriesQuestions": "Domande della serie",
264
+ "pedagogy.questionNumber": "Domanda {number}",
265
+ "pedagogy.questionOf": "Domanda {number} di {total}",
266
+ "pedagogy.solved": "Risolta",
267
+ "pedagogy.solvedWithHintsOf": "Suggerimenti aperti: {revealed} su {total}.",
268
+ "pedagogy.solvedWithoutHint": "Senza suggerimenti.",
269
+ "pedagogy.nextQuestion": "Domanda successiva",
270
+ "pedagogy.solution": "Soluzione",
271
+ "pedagogy.exercises": "Esercizi",
272
+ "pedagogy.statusIdle": "non iniziata",
273
+ "pedagogy.statusAttempted": "consegnata, non ancora giusta",
274
+ "pedagogy.statusSolved": "giusta",
275
+ "pedagogy.solvedWithOneHint": "Risolta con 1 suggerimento",
276
+ "pedagogy.solvedWithHints": "Risolta con {count} suggerimenti",
277
+ "formula.copyLabel": "formula",
278
+ "formula.typeFirst": "Scrivi prima una formula.",
279
+ "formula.notElement": "«{symbol}» non è il simbolo di un elemento.",
280
+ "formula.noAtom": "«{formula}» non contiene alcun atomo.",
281
+ "formula.wholeCounts": "«{formula}» dà a un atomo il numero {count}; i numeri di atomi sono interi.",
282
+ "formula.unknownNotation": "«{formula}» usa una notazione che questo strumento non conta.",
283
+ "formula.unreadable": "«{formula}» non è una formula che questo strumento sa leggere ({reason}).",
248
284
  "slides.exit": "Esci",
249
285
  "slides.previousSlide": "Diapositiva precedente",
250
286
  "slides.nextSlide": "Diapositiva successiva",
@@ -402,6 +438,7 @@
402
438
  "structure.tool.unavailable": "Non disponibile in questo editor.",
403
439
  "structure.loadingEditor": "Caricamento dell'editor…",
404
440
  "structure.export.open": "Esporta la struttura",
441
+ "structure.export.glyph": "Copia o salva la struttura: SMILES, molfile",
405
442
  "structure.export.title": "Esporta la struttura",
406
443
  "structure.export.loading": "Lettura della struttura…",
407
444
  "structure.export.nothing": "Non c'è ancora nulla di disegnato.",
@@ -0,0 +1,5 @@
1
+ export { createMoleculesClient } from './moleculesClient.ts';
2
+ export type { MoleculesClient, MoleculesClientOptions, } from './moleculesClientApi.ts';
3
+ export { MoleculesError } from './moleculesClientApi.ts';
4
+ export type { ImportStarted, ImportState, LookupResponse, LookupResult, MoleculeInfo, MoleculeInput, PurgeResponse, RetryDetails, SubmitResponse, SubmitResult, SubmitSummary, } from './moleculesTypes.ts';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/moleculesClient/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,YAAY,EACV,eAAe,EACf,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,YAAY,EACV,aAAa,EACb,WAAW,EACX,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,aAAa,EACb,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,aAAa,GACd,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { createMoleculesClient } from "./moleculesClient.js";
2
+ export { MoleculesError } from "./moleculesClientApi.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/moleculesClient/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAK7D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { MoleculesClient, MoleculesClientOptions } from './moleculesClientApi.ts';
2
+ /**
3
+ * A client of the routes a source writes through on molecules.cheminfo.org,
4
+ * retrying while the server is busy (503), throttling (429), being restarted
5
+ * (502, 504) or out of reach. Each attempt has its own deadline, the pauses
6
+ * double with a spread and honour `Retry-After`, and bodies travel gzipped.
7
+ * Browser-safe: it reads no Node module.
8
+ * @param options - Where it answers, the token, and how hard to insist.
9
+ * @returns The client.
10
+ */
11
+ export declare function createMoleculesClient(options: MoleculesClientOptions): MoleculesClient;
12
+ //# sourceMappingURL=moleculesClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"moleculesClient.d.ts","sourceRoot":"","sources":["../../../src/moleculesClient/core/moleculesClient.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,eAAe,EACf,sBAAsB,EACvB,MAAM,yBAAyB,CAAC;AA0CjC;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,sBAAsB,GAC9B,eAAe,CAkHjB"}
@@ -0,0 +1,105 @@
1
+ import { XSadd } from 'ml-xsadd';
2
+ import { trimTrailingSlash } from "../../router/core/address.js";
3
+ import { MoleculesError } from "./moleculesClientApi.js";
4
+ import { causeOf, gzipBody, messageOf, pause, requestSignal, retryAfter, } from "./requestRetry.js";
5
+ /** Statuses a request is tried again on: the server is busy or in between. */
6
+ const RETRIED_STATUSES = new Set([429, 502, 503, 504]);
7
+ /** The doublings of the pause, after which it stays where it is. */
8
+ const MAX_DOUBLINGS = 20;
9
+ /**
10
+ * A client of the routes a source writes through on molecules.cheminfo.org,
11
+ * retrying while the server is busy (503), throttling (429), being restarted
12
+ * (502, 504) or out of reach. Each attempt has its own deadline, the pauses
13
+ * double with a spread and honour `Retry-After`, and bodies travel gzipped.
14
+ * Browser-safe: it reads no Node module.
15
+ * @param options - Where it answers, the token, and how hard to insist.
16
+ * @returns The client.
17
+ */
18
+ export function createMoleculesClient(options) {
19
+ const { token, maxRetryMs = 1_800_000, initialDelayMs = 1000, maxDelayMs = 60_000, requestTimeoutMs = 600_000, signal, onRetry, fetch: fetchImplementation = globalThis.fetch, random = new XSadd().random, } = options;
20
+ const baseUrl = trimTrailingSlash(options.baseUrl);
21
+ async function attemptOnce(call) {
22
+ let response;
23
+ try {
24
+ response = await fetchImplementation(`${baseUrl}${call.path}`, {
25
+ method: call.method,
26
+ headers: {
27
+ authorization: `Bearer ${token}`,
28
+ ...(call.payload === undefined
29
+ ? {}
30
+ : {
31
+ 'content-type': 'application/json',
32
+ 'content-encoding': 'gzip',
33
+ }),
34
+ },
35
+ body: call.payload,
36
+ signal: requestSignal(signal, requestTimeoutMs),
37
+ });
38
+ if (response.ok) {
39
+ return { answered: true, value: (await response.json()) };
40
+ }
41
+ }
42
+ catch (error) {
43
+ if (signal?.aborted)
44
+ throw signal.reason;
45
+ return {
46
+ answered: false,
47
+ status: undefined,
48
+ reason: causeOf(error),
49
+ retryAfterMs: undefined,
50
+ };
51
+ }
52
+ const text = await response.text();
53
+ const reason = messageOf(text) ?? response.statusText;
54
+ if (!RETRIED_STATUSES.has(response.status)) {
55
+ throw new MoleculesError(`${call.method} ${call.path} answered ${response.status}: ${reason}`, response.status, text);
56
+ }
57
+ const asked = retryAfter(response.headers.get('retry-after'), Date.now());
58
+ return {
59
+ answered: false,
60
+ status: response.status,
61
+ reason,
62
+ retryAfterMs: asked,
63
+ };
64
+ }
65
+ async function attempt(call, number) {
66
+ signal?.throwIfAborted();
67
+ const outcome = await attemptOnce(call);
68
+ if (outcome.answered)
69
+ return outcome.value;
70
+ const backoff = initialDelayMs *
71
+ 2 ** Math.min(number - 1, MAX_DOUBLINGS) *
72
+ (0.5 + random() * 0.5);
73
+ const delayMs = Math.min(maxDelayMs, outcome.retryAfterMs ?? backoff);
74
+ const elapsed = Date.now() - call.started;
75
+ if (elapsed + delayMs > maxRetryMs) {
76
+ throw new MoleculesError(`${call.method} ${call.path} kept failing for ${Math.round(elapsed / 1000)} s: ${outcome.reason}`, outcome.status ?? 0, outcome.reason);
77
+ }
78
+ onRetry?.({
79
+ method: call.method,
80
+ path: call.path,
81
+ attempt: number,
82
+ status: outcome.status,
83
+ reason: outcome.reason,
84
+ delayMs,
85
+ });
86
+ await pause(delayMs, signal);
87
+ return attempt(call, number + 1);
88
+ }
89
+ async function request(method, path, body) {
90
+ const started = Date.now();
91
+ const payload = body === undefined ? undefined : await gzipBody(JSON.stringify(body));
92
+ return attempt({ method, path, payload, started }, 1);
93
+ }
94
+ return {
95
+ startImport: () => request('POST', '/v1/imports'),
96
+ importState: () => request('GET', '/v1/imports'),
97
+ submit: (molecules, { returnInfo = false } = {}) => request('POST', '/v1/submit', { molecules, returnInfo }),
98
+ lookup: (queries, kind) => request('POST', '/v1/batch', { queries, kind }),
99
+ purge: (importKey, { dryRun = false, force = false } = {}) => request('POST', `/v1/imports/${importKey}/purge`, {
100
+ dryRun,
101
+ force,
102
+ }),
103
+ };
104
+ }
105
+ //# sourceMappingURL=moleculesClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"moleculesClient.js","sourceRoot":"","sources":["../../../src/moleculesClient/core/moleculesClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,100 @@
1
+ import type { ImportStarted, ImportState, LookupResponse, MoleculeInput, PurgeResponse, RetryDetails, SubmitResponse } from './moleculesTypes.ts';
2
+ /** How a client reaches molecules.cheminfo.org, and how hard it insists. */
3
+ export interface MoleculesClientOptions {
4
+ /** Where molecules.cheminfo.org answers, e.g. `https://molecules.cheminfo.org`. */
5
+ baseUrl: string;
6
+ /** The token issued for the source the client writes for. */
7
+ token: string;
8
+ /**
9
+ * How long one request may keep being retried while the server is busy or
10
+ * unreachable, in milliseconds.
11
+ * @default 1_800_000 - half an hour
12
+ */
13
+ maxRetryMs?: number;
14
+ /**
15
+ * The first pause before a retry; each next one doubles, up to `maxDelayMs`.
16
+ * @default 1000
17
+ */
18
+ initialDelayMs?: number;
19
+ /**
20
+ * The longest pause between two attempts, a `Retry-After` included.
21
+ * @default 60_000
22
+ */
23
+ maxDelayMs?: number;
24
+ /**
25
+ * How long one attempt may take before it is given up and retried.
26
+ * @default 600_000
27
+ */
28
+ requestTimeoutMs?: number;
29
+ /**
30
+ * Stops every request, and every pause between two attempts.
31
+ * @default undefined - nothing stops them
32
+ */
33
+ signal?: AbortSignal;
34
+ /**
35
+ * Told about every retry, e.g. to log it.
36
+ * @default undefined - retries are silent
37
+ */
38
+ onRetry?: (details: RetryDetails) => void;
39
+ /**
40
+ * The fetch to use, for tests.
41
+ * @default globalThis.fetch
42
+ */
43
+ fetch?: typeof fetch;
44
+ /**
45
+ * A number from 0 to 1 that spreads the pauses, so clients that failed
46
+ * together do not all come back at the same instant.
47
+ * @default an unseeded `XSadd`
48
+ */
49
+ random?: () => number;
50
+ }
51
+ /** The routes a source writes through on molecules.cheminfo.org. */
52
+ export interface MoleculesClient {
53
+ /** Take the source's next import key: the start of a full import. */
54
+ startImport: () => Promise<ImportStarted>;
55
+ /** Where the source's import stands. */
56
+ importState: () => Promise<ImportState>;
57
+ /**
58
+ * Send up to 1000 molecules for the source, under its current import key.
59
+ * @param molecules - Each with its identifier and exactly one notation.
60
+ * @param options - Whether every answer carries the molecule's properties.
61
+ * @param options.returnInfo - Ask for them; `false` by default.
62
+ */
63
+ submit: (molecules: MoleculeInput[], options?: {
64
+ returnInfo?: boolean;
65
+ }) => Promise<SubmitResponse>;
66
+ /**
67
+ * Compute up to 1000 molecules without storing anything, for a source
68
+ * molecules.cheminfo.org imports itself.
69
+ * @param queries - The structures, all in one notation.
70
+ * @param kind - The notation.
71
+ */
72
+ lookup: (queries: string[], kind: 'smiles' | 'molfile' | 'idCode') => Promise<LookupResponse>;
73
+ /**
74
+ * Remove the entries an import did not send again.
75
+ * @param importKey - The key the import took.
76
+ * @param options - Only count, or remove even more than half.
77
+ * @param options.dryRun - Only count; `false` by default.
78
+ * @param options.force - Remove even when that is more than half; `false` by
79
+ * default.
80
+ */
81
+ purge: (importKey: number, options?: {
82
+ dryRun?: boolean;
83
+ force?: boolean;
84
+ }) => Promise<PurgeResponse>;
85
+ }
86
+ /** A request molecules.cheminfo.org refused, or that kept failing. */
87
+ export declare class MoleculesError extends Error {
88
+ /** The status answered, or 0 when nothing was. */
89
+ readonly status: number;
90
+ /** What the server said, as text. */
91
+ readonly body: string;
92
+ /**
93
+ * A failed request, with what the server answered.
94
+ * @param message - What failed, and why.
95
+ * @param status - The status answered, or 0 when nothing was.
96
+ * @param body - What the server said.
97
+ */
98
+ constructor(message: string, status: number, body: string);
99
+ }
100
+ //# sourceMappingURL=moleculesClientApi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"moleculesClientApi.d.ts","sourceRoot":"","sources":["../../../src/moleculesClient/core/moleculesClientApi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,WAAW,EACX,cAAc,EACd,aAAa,EACb,aAAa,EACb,YAAY,EACZ,cAAc,EACf,MAAM,qBAAqB,CAAC;AAE7B,4EAA4E;AAC5E,MAAM,WAAW,sBAAsB;IACrC,mFAAmF;IACnF,OAAO,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;IAC1C;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC;CACvB;AAED,oEAAoE;AACpE,MAAM,WAAW,eAAe;IAC9B,qEAAqE;IACrE,WAAW,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC;IAC1C,wCAAwC;IACxC,WAAW,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;IACxC;;;;;OAKG;IACH,MAAM,EAAE,CACN,SAAS,EAAE,aAAa,EAAE,EAC1B,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,KAC/B,OAAO,CAAC,cAAc,CAAC,CAAC;IAC7B;;;;;OAKG;IACH,MAAM,EAAE,CACN,OAAO,EAAE,MAAM,EAAE,EACjB,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,KAClC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC7B;;;;;;;OAOG;IACH,KAAK,EAAE,CACL,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,KAC5C,OAAO,CAAC,aAAa,CAAC,CAAC;CAC7B;AAED,sEAAsE;AACtE,qBAAa,cAAe,SAAQ,KAAK;IACvC,kDAAkD;IAClD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,qCAAqC;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;;;;OAKG;gBACS,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CAM1D"}
@@ -0,0 +1,20 @@
1
+ /** A request molecules.cheminfo.org refused, or that kept failing. */
2
+ export class MoleculesError extends Error {
3
+ /** The status answered, or 0 when nothing was. */
4
+ status;
5
+ /** What the server said, as text. */
6
+ body;
7
+ /**
8
+ * A failed request, with what the server answered.
9
+ * @param message - What failed, and why.
10
+ * @param status - The status answered, or 0 when nothing was.
11
+ * @param body - What the server said.
12
+ */
13
+ constructor(message, status, body) {
14
+ super(message);
15
+ this.name = 'MoleculesError';
16
+ this.status = status;
17
+ this.body = body;
18
+ }
19
+ }
20
+ //# sourceMappingURL=moleculesClientApi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"moleculesClientApi.js","sourceRoot":"","sources":["../../../src/moleculesClient/core/moleculesClientApi.ts"],"names":[],"mappings":"AAoGA,sEAAsE;AACtE,MAAM,OAAO,cAAe,SAAQ,KAAK;IACvC,kDAAkD;IACzC,MAAM,CAAS;IACxB,qCAAqC;IAC5B,IAAI,CAAS;IAEtB;;;;;OAKG;IACH,YAAY,OAAe,EAAE,MAAc,EAAE,IAAY;QACvD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF"}
@@ -0,0 +1,154 @@
1
+ /** One molecule a source sends: its identifier, and exactly one notation. */
2
+ export interface MoleculeInput {
3
+ /** The source's identifier for it, which its address is written with. */
4
+ id: string;
5
+ /**
6
+ * The structure as SMILES.
7
+ * @default undefined - another notation is given
8
+ */
9
+ smiles?: string;
10
+ /**
11
+ * The structure as a molfile.
12
+ * @default undefined - another notation is given
13
+ */
14
+ molfile?: string;
15
+ /**
16
+ * The structure as an OpenChemLib idCode.
17
+ * @default undefined - another notation is given
18
+ */
19
+ idCode?: string;
20
+ }
21
+ /** What molecules.cheminfo.org computed for a structure. */
22
+ export interface MoleculeInfo {
23
+ mf: string;
24
+ mw: number;
25
+ em: number;
26
+ charge: number;
27
+ idCode: string;
28
+ noStereoID: string;
29
+ noStereoTautomerID: string;
30
+ failedTautomerID: number;
31
+ /** The 512-bit FragFp, sixteen signed 32-bit words. */
32
+ ssIndex: number[];
33
+ logS: number;
34
+ logP: number;
35
+ acceptorCount: number;
36
+ donorCount: number;
37
+ stereoCenterCount: number;
38
+ rotatableBondCount: number;
39
+ polarSurfaceArea: number;
40
+ nbFragments: number;
41
+ /**
42
+ * The degree of unsaturation, when the formula has one.
43
+ * @default undefined
44
+ */
45
+ unsaturation?: number;
46
+ atoms: Record<string, number>;
47
+ /** The hashes, as 16 hex digits: never JSON numbers, which would round them. */
48
+ idCodeHash: string;
49
+ noStereoHash: string;
50
+ noStereoTautomerHash: string;
51
+ createdAt: number | null;
52
+ }
53
+ /** What became of one molecule a source sent. */
54
+ export interface SubmitResult {
55
+ id: string | null;
56
+ /**
57
+ * The structure it was read as.
58
+ * @default undefined - it could not be read
59
+ */
60
+ idCode?: string;
61
+ /**
62
+ * Whether molecules.cheminfo.org held the structure already.
63
+ * @default undefined - it could not be read
64
+ */
65
+ molecule?: 'created' | 'existing';
66
+ /**
67
+ * What became of the source's entry.
68
+ * @default undefined - it could not be read
69
+ */
70
+ link?: 'added' | 'unchanged' | 'moved';
71
+ /**
72
+ * The computed properties, when they were asked for.
73
+ * @default undefined
74
+ */
75
+ info?: MoleculeInfo;
76
+ /**
77
+ * Why the molecule was refused.
78
+ * @default undefined - it was taken
79
+ */
80
+ error?: string;
81
+ }
82
+ /** How a batch was taken. */
83
+ export interface SubmitSummary {
84
+ total: number;
85
+ /** Molecules new to molecules.cheminfo.org. */
86
+ created: number;
87
+ /** Entries new to the source. */
88
+ added: number;
89
+ /** Identifiers moved to another structure. */
90
+ moved: number;
91
+ unchanged: number;
92
+ failed: number;
93
+ }
94
+ /** What `POST /v1/submit` answers: one result per molecule, in their order. */
95
+ export interface SubmitResponse {
96
+ source: string;
97
+ results: SubmitResult[];
98
+ summary: SubmitSummary;
99
+ }
100
+ /** What `POST /v1/imports` answers: the start of a full import. */
101
+ export interface ImportStarted {
102
+ source: string;
103
+ importKey: number;
104
+ importStartedAt: number;
105
+ }
106
+ /** What `GET /v1/imports` answers: where the source's import stands. */
107
+ export interface ImportState {
108
+ source: string;
109
+ importKey: number;
110
+ importStartedAt: number | null;
111
+ updatedAt: number | null;
112
+ entries: number;
113
+ stale: number;
114
+ }
115
+ /** What a purge answers. */
116
+ export interface PurgeResponse {
117
+ source: string;
118
+ importKey: number;
119
+ dryRun: boolean;
120
+ /** The entries the import did not send again, removed or to be removed. */
121
+ removed: number;
122
+ /** The entries the source holds after. */
123
+ remaining: number;
124
+ }
125
+ /** One answer of `POST /v1/batch`: the molecule a query reads as, or why not. */
126
+ export interface LookupResult {
127
+ query: string;
128
+ result: MoleculeInfo | null;
129
+ /** Whether molecules.cheminfo.org lists it, rather than computing it now. */
130
+ cached: boolean;
131
+ /**
132
+ * Why the query could not be read.
133
+ * @default undefined - it was read
134
+ */
135
+ error?: string;
136
+ }
137
+ /** What `POST /v1/batch` answers: one result per query, in their order. */
138
+ export interface LookupResponse {
139
+ results: LookupResult[];
140
+ }
141
+ /** Why a request is tried again, and when. */
142
+ export interface RetryDetails {
143
+ method: string;
144
+ path: string;
145
+ attempt: number;
146
+ /**
147
+ * The status that was answered.
148
+ * @default undefined - nothing was answered
149
+ */
150
+ status?: number;
151
+ reason: string;
152
+ delayMs: number;
153
+ }
154
+ //# sourceMappingURL=moleculesTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"moleculesTypes.d.ts","sourceRoot":"","sources":["../../../src/moleculesClient/core/moleculesTypes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=moleculesTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"moleculesTypes.js","sourceRoot":"","sources":["../../../src/moleculesClient/core/moleculesTypes.ts"],"names":[],"mappings":""}