skill-calorie 0.2.3 → 0.2.5

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 (1302) hide show
  1. package/SKILL.md +474 -122
  2. package/dist/.gen-inputs.json +86 -0
  3. package/dist/analysis/anomaly/common.d.ts +11 -1
  4. package/dist/analysis/anomaly/common.d.ts.map +1 -1
  5. package/dist/analysis/anomaly/common.js +11 -12
  6. package/dist/analysis/anomaly/common.js.map +1 -1
  7. package/dist/analysis/anomaly/diet.d.ts.map +1 -1
  8. package/dist/analysis/anomaly/diet.js +11 -3
  9. package/dist/analysis/anomaly/diet.js.map +1 -1
  10. package/dist/analysis/commands.d.ts +62 -0
  11. package/dist/analysis/commands.d.ts.map +1 -0
  12. package/dist/analysis/commands.js +386 -0
  13. package/dist/analysis/commands.js.map +1 -0
  14. package/dist/analysis/contraindications.d.ts.map +1 -1
  15. package/dist/analysis/contraindications.js +16 -12
  16. package/dist/analysis/contraindications.js.map +1 -1
  17. package/dist/analysis/cross.d.ts +3 -0
  18. package/dist/analysis/cross.d.ts.map +1 -1
  19. package/dist/analysis/cross.js +54 -26
  20. package/dist/analysis/cross.js.map +1 -1
  21. package/dist/analysis/dashboard.d.ts.map +1 -1
  22. package/dist/analysis/dashboard.js +3 -2
  23. package/dist/analysis/dashboard.js.map +1 -1
  24. package/dist/analysis/deficit.d.ts +4 -2
  25. package/dist/analysis/deficit.d.ts.map +1 -1
  26. package/dist/analysis/deficit.js +2 -1
  27. package/dist/analysis/deficit.js.map +1 -1
  28. package/dist/analysis/exerciseReview.js +1 -1
  29. package/dist/analysis/exerciseReview.js.map +1 -1
  30. package/dist/analysis/healthPlate.d.ts +21 -0
  31. package/dist/analysis/healthPlate.d.ts.map +1 -0
  32. package/dist/analysis/healthPlate.js +41 -0
  33. package/dist/analysis/healthPlate.js.map +1 -0
  34. package/dist/analysis/historyStore.d.ts +30 -0
  35. package/dist/analysis/historyStore.d.ts.map +1 -0
  36. package/dist/analysis/historyStore.js +32 -0
  37. package/dist/analysis/historyStore.js.map +1 -0
  38. package/dist/analysis/index.d.ts +17 -0
  39. package/dist/analysis/index.d.ts.map +1 -0
  40. package/dist/analysis/index.js +17 -0
  41. package/dist/analysis/index.js.map +1 -0
  42. package/dist/analysis/multiTrend.d.ts +67 -0
  43. package/dist/analysis/multiTrend.d.ts.map +1 -0
  44. package/dist/analysis/multiTrend.js +106 -0
  45. package/dist/analysis/multiTrend.js.map +1 -0
  46. package/dist/analysis/multiTrendPage.d.ts +4 -0
  47. package/dist/analysis/multiTrendPage.d.ts.map +1 -0
  48. package/dist/analysis/multiTrendPage.js +502 -0
  49. package/dist/analysis/multiTrendPage.js.map +1 -0
  50. package/dist/analysis/reportDoc.d.ts +12 -0
  51. package/dist/analysis/reportDoc.d.ts.map +1 -0
  52. package/dist/analysis/reportDoc.js +244 -0
  53. package/dist/analysis/reportDoc.js.map +1 -0
  54. package/dist/analysis/reportDocBmi.d.ts +4 -0
  55. package/dist/analysis/reportDocBmi.d.ts.map +1 -0
  56. package/dist/analysis/reportDocBmi.js +104 -0
  57. package/dist/analysis/reportDocBmi.js.map +1 -0
  58. package/dist/analysis/reportDocParts.d.ts +77 -0
  59. package/dist/analysis/reportDocParts.d.ts.map +1 -0
  60. package/dist/analysis/reportDocParts.js +249 -0
  61. package/dist/analysis/reportDocParts.js.map +1 -0
  62. package/dist/analysis/reportDocScore.d.ts +8 -0
  63. package/dist/analysis/reportDocScore.d.ts.map +1 -0
  64. package/dist/analysis/reportDocScore.js +223 -0
  65. package/dist/analysis/reportDocScore.js.map +1 -0
  66. package/dist/analysis/reportDocScoreSeries.d.ts +3 -0
  67. package/dist/analysis/reportDocScoreSeries.d.ts.map +1 -0
  68. package/dist/analysis/reportDocScoreSeries.js +27 -0
  69. package/dist/analysis/reportDocScoreSeries.js.map +1 -0
  70. package/dist/analysis/reportDocTracked.d.ts +10 -0
  71. package/dist/analysis/reportDocTracked.d.ts.map +1 -0
  72. package/dist/analysis/reportDocTracked.js +196 -0
  73. package/dist/analysis/reportDocTracked.js.map +1 -0
  74. package/dist/analysis/reportPlate.d.ts +163 -0
  75. package/dist/analysis/reportPlate.d.ts.map +1 -0
  76. package/dist/analysis/reportPlate.js +251 -0
  77. package/dist/analysis/reportPlate.js.map +1 -0
  78. package/dist/analysis/review.d.ts.map +1 -1
  79. package/dist/analysis/review.js +5 -3
  80. package/dist/analysis/review.js.map +1 -1
  81. package/dist/analysis/routes.d.ts +18 -0
  82. package/dist/analysis/routes.d.ts.map +1 -0
  83. package/dist/analysis/routes.js +178 -0
  84. package/dist/analysis/routes.js.map +1 -0
  85. package/dist/analysis/series.d.ts +31 -6
  86. package/dist/analysis/series.d.ts.map +1 -1
  87. package/dist/analysis/series.js +121 -24
  88. package/dist/analysis/series.js.map +1 -1
  89. package/dist/analysis/simulate.d.ts +4 -2
  90. package/dist/analysis/simulate.d.ts.map +1 -1
  91. package/dist/analysis/simulate.js +22 -8
  92. package/dist/analysis/simulate.js.map +1 -1
  93. package/dist/analysis/simulate2.d.ts.map +1 -1
  94. package/dist/analysis/simulate2.js +47 -12
  95. package/dist/analysis/simulate2.js.map +1 -1
  96. package/dist/analysis/trend.d.ts +9 -1
  97. package/dist/analysis/trend.d.ts.map +1 -1
  98. package/dist/analysis/trend.js +24 -8
  99. package/dist/analysis/trend.js.map +1 -1
  100. package/dist/analysis/utils.d.ts +55 -21
  101. package/dist/analysis/utils.d.ts.map +1 -1
  102. package/dist/analysis/utils.js +85 -28
  103. package/dist/analysis/utils.js.map +1 -1
  104. package/dist/body/bodyDocs.d.ts +4 -0
  105. package/dist/body/bodyDocs.d.ts.map +1 -0
  106. package/dist/body/bodyDocs.js +284 -0
  107. package/dist/body/bodyDocs.js.map +1 -0
  108. package/dist/body/bodyPlate.d.ts +145 -0
  109. package/dist/body/bodyPlate.d.ts.map +1 -0
  110. package/dist/body/bodyPlate.js +243 -0
  111. package/dist/body/bodyPlate.js.map +1 -0
  112. package/dist/body/bodyReadUi.d.ts +47 -0
  113. package/dist/body/bodyReadUi.d.ts.map +1 -0
  114. package/dist/body/bodyReadUi.js +164 -0
  115. package/dist/body/bodyReadUi.js.map +1 -0
  116. package/dist/body/commands.d.ts +33 -0
  117. package/dist/body/commands.d.ts.map +1 -0
  118. package/dist/body/commands.js +19 -0
  119. package/dist/body/commands.js.map +1 -0
  120. package/dist/body/compare.d.ts +62 -0
  121. package/dist/body/compare.d.ts.map +1 -0
  122. package/dist/body/compare.js +162 -0
  123. package/dist/body/compare.js.map +1 -0
  124. package/dist/body/compareCompositionDoc.d.ts +3 -0
  125. package/dist/body/compareCompositionDoc.d.ts.map +1 -0
  126. package/dist/body/compareCompositionDoc.js +99 -0
  127. package/dist/body/compareCompositionDoc.js.map +1 -0
  128. package/dist/body/compareMeasureDoc.d.ts +3 -0
  129. package/dist/body/compareMeasureDoc.d.ts.map +1 -0
  130. package/dist/body/compareMeasureDoc.js +91 -0
  131. package/dist/body/compareMeasureDoc.js.map +1 -0
  132. package/dist/body/compareUi.d.ts +12 -0
  133. package/dist/body/compareUi.d.ts.map +1 -0
  134. package/dist/body/compareUi.js +27 -0
  135. package/dist/body/compareUi.js.map +1 -0
  136. package/dist/body/index.d.ts +17 -0
  137. package/dist/body/index.d.ts.map +1 -0
  138. package/dist/body/index.js +17 -0
  139. package/dist/body/index.js.map +1 -0
  140. package/dist/body/log.d.ts +29 -0
  141. package/dist/body/log.d.ts.map +1 -0
  142. package/dist/body/log.js +196 -0
  143. package/dist/body/log.js.map +1 -0
  144. package/dist/body/receipt.d.ts +52 -0
  145. package/dist/body/receipt.d.ts.map +1 -0
  146. package/dist/body/receipt.js +248 -0
  147. package/dist/body/receipt.js.map +1 -0
  148. package/dist/body/receiptData.d.ts +46 -0
  149. package/dist/body/receiptData.d.ts.map +1 -0
  150. package/dist/body/receiptData.js +107 -0
  151. package/dist/body/receiptData.js.map +1 -0
  152. package/dist/body/receiptUi.d.ts +9 -0
  153. package/dist/body/receiptUi.d.ts.map +1 -0
  154. package/dist/body/receiptUi.js +75 -0
  155. package/dist/body/receiptUi.js.map +1 -0
  156. package/dist/body/remove.d.ts +21 -0
  157. package/dist/body/remove.d.ts.map +1 -0
  158. package/dist/body/remove.js +78 -0
  159. package/dist/body/remove.js.map +1 -0
  160. package/dist/body/routes.d.ts +10 -0
  161. package/dist/body/routes.d.ts.map +1 -0
  162. package/dist/body/routes.js +20 -0
  163. package/dist/body/routes.js.map +1 -0
  164. package/dist/body/view.d.ts +21 -0
  165. package/dist/body/view.d.ts.map +1 -0
  166. package/dist/body/view.js +50 -0
  167. package/dist/body/view.js.map +1 -0
  168. package/dist/body/wizard.d.ts +14 -0
  169. package/dist/body/wizard.d.ts.map +1 -0
  170. package/dist/body/wizard.js +21 -0
  171. package/dist/body/wizard.js.map +1 -0
  172. package/dist/body/wizardDocs.d.ts +4 -0
  173. package/dist/body/wizardDocs.d.ts.map +1 -0
  174. package/dist/body/wizardDocs.js +260 -0
  175. package/dist/body/wizardDocs.js.map +1 -0
  176. package/dist/body/wizardPlate.d.ts +146 -0
  177. package/dist/body/wizardPlate.d.ts.map +1 -0
  178. package/dist/body/wizardPlate.js +260 -0
  179. package/dist/body/wizardPlate.js.map +1 -0
  180. package/dist/body/wizardPrompt.d.ts +52 -0
  181. package/dist/body/wizardPrompt.d.ts.map +1 -0
  182. package/dist/body/wizardPrompt.js +146 -0
  183. package/dist/body/wizardPrompt.js.map +1 -0
  184. package/dist/body/wizardUi.d.ts +11 -0
  185. package/dist/body/wizardUi.d.ts.map +1 -0
  186. package/dist/body/wizardUi.js +35 -0
  187. package/dist/body/wizardUi.js.map +1 -0
  188. package/dist/cli/cmd_read.d.ts +7 -26
  189. package/dist/cli/cmd_read.d.ts.map +1 -1
  190. package/dist/cli/cmd_read.js +68 -1084
  191. package/dist/cli/cmd_read.js.map +1 -1
  192. package/dist/cli/config.d.ts +16 -0
  193. package/dist/cli/config.d.ts.map +1 -0
  194. package/dist/cli/config.js +68 -0
  195. package/dist/cli/config.js.map +1 -0
  196. package/dist/cli/delivery.d.ts +35 -0
  197. package/dist/cli/delivery.d.ts.map +1 -0
  198. package/dist/cli/delivery.js +224 -0
  199. package/dist/cli/delivery.js.map +1 -0
  200. package/dist/cli/health.d.ts +7 -0
  201. package/dist/cli/health.d.ts.map +1 -0
  202. package/dist/cli/health.js +21 -0
  203. package/dist/cli/health.js.map +1 -0
  204. package/dist/cli/keys.d.ts +302 -165
  205. package/dist/cli/keys.d.ts.map +1 -1
  206. package/dist/cli/keys.js +101 -77
  207. package/dist/cli/keys.js.map +1 -1
  208. package/dist/cli/readArgs.d.ts +21 -0
  209. package/dist/cli/readArgs.d.ts.map +1 -0
  210. package/dist/cli/readArgs.js +73 -0
  211. package/dist/cli/readArgs.js.map +1 -0
  212. package/dist/cli/registry.d.ts +12 -0
  213. package/dist/cli/registry.d.ts.map +1 -0
  214. package/dist/cli/registry.js +38 -0
  215. package/dist/cli/registry.js.map +1 -0
  216. package/dist/cli/write.d.ts +14 -17
  217. package/dist/cli/write.d.ts.map +1 -1
  218. package/dist/cli/write.js +18 -946
  219. package/dist/cli/write.js.map +1 -1
  220. package/dist/config.d.ts +55 -0
  221. package/dist/config.d.ts.map +1 -0
  222. package/dist/config.js +64 -0
  223. package/dist/config.js.map +1 -0
  224. package/dist/diet/commands.d.ts +42 -0
  225. package/dist/diet/commands.d.ts.map +1 -0
  226. package/dist/diet/commands.js +45 -0
  227. package/dist/diet/commands.js.map +1 -0
  228. package/dist/diet/dietEngine.d.ts +79 -0
  229. package/dist/diet/dietEngine.d.ts.map +1 -0
  230. package/dist/diet/dietEngine.js +173 -0
  231. package/dist/diet/dietEngine.js.map +1 -0
  232. package/dist/diet/dietUi.d.ts +14 -0
  233. package/dist/diet/dietUi.d.ts.map +1 -0
  234. package/dist/diet/dietUi.js +38 -0
  235. package/dist/diet/dietUi.js.map +1 -0
  236. package/dist/diet/edit.d.ts +22 -0
  237. package/dist/diet/edit.d.ts.map +1 -0
  238. package/dist/diet/edit.js +96 -0
  239. package/dist/diet/edit.js.map +1 -0
  240. package/dist/diet/fieldLabels.d.ts +5 -0
  241. package/dist/diet/fieldLabels.d.ts.map +1 -0
  242. package/dist/diet/fieldLabels.js +44 -0
  243. package/dist/diet/fieldLabels.js.map +1 -0
  244. package/dist/diet/index.d.ts +22 -0
  245. package/dist/diet/index.d.ts.map +1 -0
  246. package/dist/diet/index.js +21 -0
  247. package/dist/diet/index.js.map +1 -0
  248. package/dist/diet/library.d.ts +20 -0
  249. package/dist/diet/library.d.ts.map +1 -0
  250. package/dist/diet/library.js +52 -0
  251. package/dist/diet/library.js.map +1 -0
  252. package/dist/diet/libraryDocs.d.ts +7 -0
  253. package/dist/diet/libraryDocs.d.ts.map +1 -0
  254. package/dist/diet/libraryDocs.js +361 -0
  255. package/dist/diet/libraryDocs.js.map +1 -0
  256. package/dist/diet/libraryPlate.d.ts +41 -0
  257. package/dist/diet/libraryPlate.d.ts.map +1 -0
  258. package/dist/diet/libraryPlate.js +57 -0
  259. package/dist/diet/libraryPlate.js.map +1 -0
  260. package/dist/diet/log.d.ts +18 -0
  261. package/dist/diet/log.d.ts.map +1 -0
  262. package/dist/diet/log.js +152 -0
  263. package/dist/diet/log.js.map +1 -0
  264. package/dist/diet/nutrition.d.ts +37 -0
  265. package/dist/diet/nutrition.d.ts.map +1 -0
  266. package/dist/diet/nutrition.js +135 -0
  267. package/dist/diet/nutrition.js.map +1 -0
  268. package/dist/diet/nutritionPort.d.ts +126 -0
  269. package/dist/diet/nutritionPort.d.ts.map +1 -0
  270. package/dist/diet/nutritionPort.js +248 -0
  271. package/dist/diet/nutritionPort.js.map +1 -0
  272. package/dist/diet/nutritionPortDocs.d.ts +106 -0
  273. package/dist/diet/nutritionPortDocs.d.ts.map +1 -0
  274. package/dist/diet/nutritionPortDocs.js +651 -0
  275. package/dist/diet/nutritionPortDocs.js.map +1 -0
  276. package/dist/diet/precheck.d.ts +7 -0
  277. package/dist/diet/precheck.d.ts.map +1 -0
  278. package/dist/diet/precheck.js +194 -0
  279. package/dist/diet/precheck.js.map +1 -0
  280. package/dist/diet/precheckLabel.d.ts +4 -0
  281. package/dist/diet/precheckLabel.d.ts.map +1 -0
  282. package/dist/diet/precheckLabel.js +191 -0
  283. package/dist/diet/precheckLabel.js.map +1 -0
  284. package/dist/diet/precheckParts.d.ts +49 -0
  285. package/dist/diet/precheckParts.d.ts.map +1 -0
  286. package/dist/diet/precheckParts.js +69 -0
  287. package/dist/diet/precheckParts.js.map +1 -0
  288. package/dist/diet/precheckPort.d.ts +82 -0
  289. package/dist/diet/precheckPort.d.ts.map +1 -0
  290. package/dist/diet/precheckPort.js +178 -0
  291. package/dist/diet/precheckPort.js.map +1 -0
  292. package/dist/diet/productImport.d.ts +28 -0
  293. package/dist/diet/productImport.d.ts.map +1 -0
  294. package/dist/diet/productImport.js +152 -0
  295. package/dist/diet/productImport.js.map +1 -0
  296. package/dist/diet/productStore.d.ts +62 -0
  297. package/dist/diet/productStore.d.ts.map +1 -0
  298. package/dist/diet/productStore.js +73 -0
  299. package/dist/diet/productStore.js.map +1 -0
  300. package/dist/diet/products.d.ts +15 -0
  301. package/dist/diet/products.d.ts.map +1 -0
  302. package/dist/diet/products.js +87 -0
  303. package/dist/diet/products.js.map +1 -0
  304. package/dist/diet/ranking.d.ts +18 -0
  305. package/dist/diet/ranking.d.ts.map +1 -0
  306. package/dist/diet/ranking.js +23 -0
  307. package/dist/diet/ranking.js.map +1 -0
  308. package/dist/diet/rankingDocs.d.ts +13 -0
  309. package/dist/diet/rankingDocs.d.ts.map +1 -0
  310. package/dist/diet/rankingDocs.js +341 -0
  311. package/dist/diet/rankingDocs.js.map +1 -0
  312. package/dist/diet/rankingPlate.d.ts +42 -0
  313. package/dist/diet/rankingPlate.d.ts.map +1 -0
  314. package/dist/diet/rankingPlate.js +96 -0
  315. package/dist/diet/rankingPlate.js.map +1 -0
  316. package/dist/diet/receipt.d.ts +34 -0
  317. package/dist/diet/receipt.d.ts.map +1 -0
  318. package/dist/diet/receipt.js +371 -0
  319. package/dist/diet/receipt.js.map +1 -0
  320. package/dist/diet/review.d.ts +36 -0
  321. package/dist/diet/review.d.ts.map +1 -0
  322. package/dist/diet/review.js +137 -0
  323. package/dist/diet/review.js.map +1 -0
  324. package/dist/diet/reviewDocs.d.ts +72 -0
  325. package/dist/diet/reviewDocs.d.ts.map +1 -0
  326. package/dist/diet/reviewDocs.js +312 -0
  327. package/dist/diet/reviewDocs.js.map +1 -0
  328. package/dist/diet/routes.d.ts +12 -0
  329. package/dist/diet/routes.d.ts.map +1 -0
  330. package/dist/diet/routes.js +108 -0
  331. package/dist/diet/routes.js.map +1 -0
  332. package/dist/diet/sourceStatsDocs.d.ts +3 -0
  333. package/dist/diet/sourceStatsDocs.d.ts.map +1 -0
  334. package/dist/diet/sourceStatsDocs.js +115 -0
  335. package/dist/diet/sourceStatsDocs.js.map +1 -0
  336. package/dist/diet/today.d.ts +14 -0
  337. package/dist/diet/today.d.ts.map +1 -0
  338. package/dist/diet/today.js +87 -0
  339. package/dist/diet/today.js.map +1 -0
  340. package/dist/diet/todayDocs.d.ts +53 -0
  341. package/dist/diet/todayDocs.d.ts.map +1 -0
  342. package/dist/diet/todayDocs.js +238 -0
  343. package/dist/diet/todayDocs.js.map +1 -0
  344. package/dist/exercise/cardio.d.ts +11 -0
  345. package/dist/exercise/cardio.d.ts.map +1 -0
  346. package/dist/exercise/cardio.js +14 -0
  347. package/dist/exercise/cardio.js.map +1 -0
  348. package/dist/exercise/categoryColors.d.ts +23 -0
  349. package/dist/exercise/categoryColors.d.ts.map +1 -0
  350. package/dist/exercise/categoryColors.js +28 -0
  351. package/dist/exercise/categoryColors.js.map +1 -0
  352. package/dist/exercise/commands.d.ts +20 -0
  353. package/dist/exercise/commands.d.ts.map +1 -0
  354. package/dist/exercise/commands.js +22 -0
  355. package/dist/exercise/commands.js.map +1 -0
  356. package/dist/exercise/distribution.d.ts +11 -0
  357. package/dist/exercise/distribution.d.ts.map +1 -0
  358. package/dist/exercise/distribution.js +14 -0
  359. package/dist/exercise/distribution.js.map +1 -0
  360. package/dist/exercise/edit.d.ts +22 -0
  361. package/dist/exercise/edit.d.ts.map +1 -0
  362. package/dist/exercise/edit.js +150 -0
  363. package/dist/exercise/edit.js.map +1 -0
  364. package/dist/exercise/exerciseStore.d.ts +87 -0
  365. package/dist/exercise/exerciseStore.d.ts.map +1 -0
  366. package/dist/exercise/exerciseStore.js +293 -0
  367. package/dist/exercise/exerciseStore.js.map +1 -0
  368. package/dist/exercise/fieldLabels.d.ts +5 -0
  369. package/dist/exercise/fieldLabels.d.ts.map +1 -0
  370. package/dist/exercise/fieldLabels.js +34 -0
  371. package/dist/exercise/fieldLabels.js.map +1 -0
  372. package/dist/exercise/goal.d.ts +16 -0
  373. package/dist/exercise/goal.d.ts.map +1 -0
  374. package/dist/exercise/goal.js +46 -0
  375. package/dist/exercise/goal.js.map +1 -0
  376. package/dist/exercise/index.d.ts +17 -0
  377. package/dist/exercise/index.d.ts.map +1 -0
  378. package/dist/exercise/index.js +17 -0
  379. package/dist/exercise/index.js.map +1 -0
  380. package/dist/exercise/log.d.ts +19 -0
  381. package/dist/exercise/log.d.ts.map +1 -0
  382. package/dist/exercise/log.js +102 -0
  383. package/dist/exercise/log.js.map +1 -0
  384. package/dist/exercise/precheck.d.ts +19 -0
  385. package/dist/exercise/precheck.d.ts.map +1 -0
  386. package/dist/exercise/precheck.js +127 -0
  387. package/dist/exercise/precheck.js.map +1 -0
  388. package/dist/exercise/recap.d.ts +11 -0
  389. package/dist/exercise/recap.d.ts.map +1 -0
  390. package/dist/exercise/recap.js +14 -0
  391. package/dist/exercise/recap.js.map +1 -0
  392. package/dist/exercise/receipt.d.ts +43 -0
  393. package/dist/exercise/receipt.d.ts.map +1 -0
  394. package/dist/exercise/receipt.js +401 -0
  395. package/dist/exercise/receipt.js.map +1 -0
  396. package/dist/exercise/records.d.ts +60 -0
  397. package/dist/exercise/records.d.ts.map +1 -0
  398. package/dist/exercise/records.js +317 -0
  399. package/dist/exercise/records.js.map +1 -0
  400. package/dist/exercise/routes.d.ts +21 -0
  401. package/dist/exercise/routes.d.ts.map +1 -0
  402. package/dist/exercise/routes.js +38 -0
  403. package/dist/exercise/routes.js.map +1 -0
  404. package/dist/exercise/sportPortDocs.d.ts +9 -0
  405. package/dist/exercise/sportPortDocs.d.ts.map +1 -0
  406. package/dist/exercise/sportPortDocs.js +896 -0
  407. package/dist/exercise/sportPortDocs.js.map +1 -0
  408. package/dist/exercise/sportUi.d.ts +79 -0
  409. package/dist/exercise/sportUi.d.ts.map +1 -0
  410. package/dist/exercise/sportUi.js +237 -0
  411. package/dist/exercise/sportUi.js.map +1 -0
  412. package/dist/exercise/strength.d.ts +11 -0
  413. package/dist/exercise/strength.d.ts.map +1 -0
  414. package/dist/exercise/strength.js +14 -0
  415. package/dist/exercise/strength.js.map +1 -0
  416. package/dist/exercise/trend.d.ts +11 -0
  417. package/dist/exercise/trend.d.ts.map +1 -0
  418. package/dist/exercise/trend.js +14 -0
  419. package/dist/exercise/trend.js.map +1 -0
  420. package/dist/fetch/audit.d.ts +2 -0
  421. package/dist/fetch/audit.d.ts.map +1 -1
  422. package/dist/fetch/audit.js +11 -10
  423. package/dist/fetch/audit.js.map +1 -1
  424. package/dist/fetch/batch.js +1 -1
  425. package/dist/fetch/batch.js.map +1 -1
  426. package/dist/fetch/body.d.ts +104 -1
  427. package/dist/fetch/body.d.ts.map +1 -1
  428. package/dist/fetch/body.js +203 -31
  429. package/dist/fetch/body.js.map +1 -1
  430. package/dist/fetch/cli.js +11 -5
  431. package/dist/fetch/cli.js.map +1 -1
  432. package/dist/fetch/diet.d.ts +6 -5
  433. package/dist/fetch/diet.d.ts.map +1 -1
  434. package/dist/fetch/diet.js +19 -25
  435. package/dist/fetch/diet.js.map +1 -1
  436. package/dist/fetch/index.d.ts +5 -7
  437. package/dist/fetch/index.d.ts.map +1 -1
  438. package/dist/fetch/index.js +7 -6
  439. package/dist/fetch/index.js.map +1 -1
  440. package/dist/fetch/profile.d.ts +24 -3
  441. package/dist/fetch/profile.d.ts.map +1 -1
  442. package/dist/fetch/profile.js +43 -14
  443. package/dist/fetch/profile.js.map +1 -1
  444. package/dist/fetch/xunji-catalog.d.ts +5 -0
  445. package/dist/fetch/xunji-catalog.d.ts.map +1 -1
  446. package/dist/fetch/xunji-catalog.js +22 -1
  447. package/dist/fetch/xunji-catalog.js.map +1 -1
  448. package/dist/goal/commands.d.ts +35 -0
  449. package/dist/goal/commands.d.ts.map +1 -0
  450. package/dist/goal/commands.js +21 -0
  451. package/dist/goal/commands.js.map +1 -0
  452. package/dist/goal/goalExtraPlate.d.ts +45 -0
  453. package/dist/goal/goalExtraPlate.d.ts.map +1 -0
  454. package/dist/goal/goalExtraPlate.js +97 -0
  455. package/dist/goal/goalExtraPlate.js.map +1 -0
  456. package/dist/goal/goalHistory.d.ts +24 -0
  457. package/dist/goal/goalHistory.d.ts.map +1 -0
  458. package/dist/goal/goalHistory.js +46 -0
  459. package/dist/goal/goalHistory.js.map +1 -0
  460. package/dist/goal/goalPlate.d.ts +24 -0
  461. package/dist/goal/goalPlate.d.ts.map +1 -0
  462. package/dist/goal/goalPlate.js +34 -0
  463. package/dist/goal/goalPlate.js.map +1 -0
  464. package/dist/goal/goalPlates.d.ts +66 -0
  465. package/dist/goal/goalPlates.d.ts.map +1 -0
  466. package/dist/goal/goalPlates.js +114 -0
  467. package/dist/goal/goalPlates.js.map +1 -0
  468. package/dist/goal/goalRecommendDoc.d.ts +6 -0
  469. package/dist/goal/goalRecommendDoc.d.ts.map +1 -0
  470. package/dist/goal/goalRecommendDoc.js +107 -0
  471. package/dist/goal/goalRecommendDoc.js.map +1 -0
  472. package/dist/goal/goalStore.d.ts +56 -0
  473. package/dist/goal/goalStore.d.ts.map +1 -0
  474. package/dist/goal/goalStore.js +111 -0
  475. package/dist/goal/goalStore.js.map +1 -0
  476. package/dist/goal/goalWeightDoc.d.ts +7 -0
  477. package/dist/goal/goalWeightDoc.d.ts.map +1 -0
  478. package/dist/goal/goalWeightDoc.js +107 -0
  479. package/dist/goal/goalWeightDoc.js.map +1 -0
  480. package/dist/goal/index.d.ts +13 -0
  481. package/dist/goal/index.d.ts.map +1 -0
  482. package/dist/goal/index.js +13 -0
  483. package/dist/goal/index.js.map +1 -0
  484. package/dist/goal/nutritionGoal.d.ts +115 -0
  485. package/dist/goal/nutritionGoal.d.ts.map +1 -0
  486. package/dist/goal/nutritionGoal.js +168 -0
  487. package/dist/goal/nutritionGoal.js.map +1 -0
  488. package/dist/goal/precheck.d.ts +14 -0
  489. package/dist/goal/precheck.d.ts.map +1 -0
  490. package/dist/goal/precheck.js +213 -0
  491. package/dist/goal/precheck.js.map +1 -0
  492. package/dist/goal/read.d.ts +53 -0
  493. package/dist/goal/read.d.ts.map +1 -0
  494. package/dist/goal/read.js +154 -0
  495. package/dist/goal/read.js.map +1 -0
  496. package/dist/goal/receipt.d.ts +38 -0
  497. package/dist/goal/receipt.d.ts.map +1 -0
  498. package/dist/goal/receipt.js +290 -0
  499. package/dist/goal/receipt.js.map +1 -0
  500. package/dist/goal/resultDocs.d.ts +23 -0
  501. package/dist/goal/resultDocs.d.ts.map +1 -0
  502. package/dist/goal/resultDocs.js +279 -0
  503. package/dist/goal/resultDocs.js.map +1 -0
  504. package/dist/goal/routes.d.ts +12 -0
  505. package/dist/goal/routes.d.ts.map +1 -0
  506. package/dist/goal/routes.js +29 -0
  507. package/dist/goal/routes.js.map +1 -0
  508. package/dist/goal/set.d.ts +97 -0
  509. package/dist/goal/set.d.ts.map +1 -0
  510. package/dist/goal/set.js +103 -0
  511. package/dist/goal/set.js.map +1 -0
  512. package/dist/goal/write.d.ts +30 -0
  513. package/dist/goal/write.d.ts.map +1 -0
  514. package/dist/goal/write.js +102 -0
  515. package/dist/goal/write.js.map +1 -0
  516. package/dist/health.d.ts +41 -0
  517. package/dist/health.d.ts.map +1 -0
  518. package/dist/health.js +501 -0
  519. package/dist/health.js.map +1 -0
  520. package/dist/help-missing.json +35 -0
  521. package/dist/home/commands.d.ts +11 -0
  522. package/dist/home/commands.d.ts.map +1 -0
  523. package/dist/home/commands.js +8 -0
  524. package/dist/home/commands.js.map +1 -0
  525. package/dist/home/exercise.d.ts +27 -0
  526. package/dist/home/exercise.d.ts.map +1 -0
  527. package/dist/home/exercise.js +60 -0
  528. package/dist/home/exercise.js.map +1 -0
  529. package/dist/home/goalProgressDocs.d.ts +27 -0
  530. package/dist/home/goalProgressDocs.d.ts.map +1 -0
  531. package/dist/home/goalProgressDocs.js +363 -0
  532. package/dist/home/goalProgressDocs.js.map +1 -0
  533. package/dist/home/home.d.ts +38 -0
  534. package/dist/home/home.d.ts.map +1 -0
  535. package/dist/home/home.js +78 -0
  536. package/dist/home/home.js.map +1 -0
  537. package/dist/home/homeDocs.d.ts +8 -0
  538. package/dist/home/homeDocs.d.ts.map +1 -0
  539. package/dist/home/homeDocs.js +307 -0
  540. package/dist/home/homeDocs.js.map +1 -0
  541. package/dist/home/homeViewParts.d.ts +42 -0
  542. package/dist/home/homeViewParts.d.ts.map +1 -0
  543. package/dist/home/homeViewParts.js +316 -0
  544. package/dist/home/homeViewParts.js.map +1 -0
  545. package/dist/home/index.d.ts +13 -0
  546. package/dist/home/index.d.ts.map +1 -0
  547. package/dist/home/index.js +13 -0
  548. package/dist/home/index.js.map +1 -0
  549. package/dist/home/routes.d.ts +10 -0
  550. package/dist/home/routes.d.ts.map +1 -0
  551. package/dist/home/routes.js +47 -0
  552. package/dist/home/routes.js.map +1 -0
  553. package/dist/home/today.d.ts +50 -0
  554. package/dist/home/today.d.ts.map +1 -0
  555. package/dist/home/today.js +255 -0
  556. package/dist/home/today.js.map +1 -0
  557. package/dist/index.d.ts +24 -14
  558. package/dist/index.d.ts.map +1 -1
  559. package/dist/index.js +24 -9
  560. package/dist/index.js.map +1 -1
  561. package/dist/migrate/migrate.js +3 -3
  562. package/dist/migrate/migrate.js.map +1 -1
  563. package/dist/output.d.ts +22 -11
  564. package/dist/output.d.ts.map +1 -1
  565. package/dist/output.js +68 -128
  566. package/dist/output.js.map +1 -1
  567. package/dist/paths.d.ts +6 -2
  568. package/dist/paths.d.ts.map +1 -1
  569. package/dist/paths.js +28 -17
  570. package/dist/paths.js.map +1 -1
  571. package/dist/photo/commands.d.ts +55 -0
  572. package/dist/photo/commands.d.ts.map +1 -0
  573. package/dist/photo/commands.js +25 -0
  574. package/dist/photo/commands.js.map +1 -0
  575. package/dist/photo/compare.d.ts +24 -0
  576. package/dist/photo/compare.d.ts.map +1 -0
  577. package/dist/photo/compare.js +48 -0
  578. package/dist/photo/compare.js.map +1 -0
  579. package/dist/photo/compareDoc.d.ts +5 -0
  580. package/dist/photo/compareDoc.d.ts.map +1 -0
  581. package/dist/photo/compareDoc.js +221 -0
  582. package/dist/photo/compareDoc.js.map +1 -0
  583. package/dist/photo/dir.d.ts +5 -0
  584. package/dist/photo/dir.d.ts.map +1 -0
  585. package/dist/photo/dir.js +23 -0
  586. package/dist/photo/dir.js.map +1 -0
  587. package/dist/photo/gallery.d.ts +16 -0
  588. package/dist/photo/gallery.d.ts.map +1 -0
  589. package/dist/photo/gallery.js +45 -0
  590. package/dist/photo/gallery.js.map +1 -0
  591. package/dist/photo/galleryDoc.d.ts +12 -0
  592. package/dist/photo/galleryDoc.d.ts.map +1 -0
  593. package/dist/photo/galleryDoc.js +291 -0
  594. package/dist/photo/galleryDoc.js.map +1 -0
  595. package/dist/photo/gif.d.ts +28 -0
  596. package/dist/photo/gif.d.ts.map +1 -0
  597. package/dist/photo/gif.js +281 -0
  598. package/dist/photo/gif.js.map +1 -0
  599. package/dist/photo/gifDoc.d.ts +52 -0
  600. package/dist/photo/gifDoc.d.ts.map +1 -0
  601. package/dist/photo/gifDoc.js +317 -0
  602. package/dist/photo/gifDoc.js.map +1 -0
  603. package/dist/photo/help.d.ts +4 -0
  604. package/dist/photo/help.d.ts.map +1 -0
  605. package/dist/photo/help.js +87 -0
  606. package/dist/photo/help.js.map +1 -0
  607. package/dist/photo/helpCenter.d.ts +137 -0
  608. package/dist/photo/helpCenter.d.ts.map +1 -0
  609. package/dist/photo/helpCenter.js +475 -0
  610. package/dist/photo/helpCenter.js.map +1 -0
  611. package/dist/photo/helpDoc.d.ts +5 -0
  612. package/dist/photo/helpDoc.d.ts.map +1 -0
  613. package/dist/photo/helpDoc.js +205 -0
  614. package/dist/photo/helpDoc.js.map +1 -0
  615. package/dist/photo/helpDocContent.d.ts +77 -0
  616. package/dist/photo/helpDocContent.d.ts.map +1 -0
  617. package/dist/photo/helpDocContent.js +120 -0
  618. package/dist/photo/helpDocContent.js.map +1 -0
  619. package/dist/photo/helpDocCss.d.ts +5 -0
  620. package/dist/photo/helpDocCss.d.ts.map +1 -0
  621. package/dist/photo/helpDocCss.js +119 -0
  622. package/dist/photo/helpDocCss.js.map +1 -0
  623. package/dist/photo/helpFile.d.ts +26 -0
  624. package/dist/photo/helpFile.d.ts.map +1 -0
  625. package/dist/photo/helpFile.js +90 -0
  626. package/dist/photo/helpFile.js.map +1 -0
  627. package/dist/photo/helpLookup.d.ts +18 -0
  628. package/dist/photo/helpLookup.d.ts.map +1 -0
  629. package/dist/photo/helpLookup.js +58 -0
  630. package/dist/photo/helpLookup.js.map +1 -0
  631. package/dist/photo/helpPaths.d.ts +22 -0
  632. package/dist/photo/helpPaths.d.ts.map +1 -0
  633. package/dist/photo/helpPaths.js +22 -0
  634. package/dist/photo/helpPaths.js.map +1 -0
  635. package/dist/photo/helpShell.d.ts +16 -0
  636. package/dist/photo/helpShell.d.ts.map +1 -0
  637. package/dist/photo/helpShell.js +27 -0
  638. package/dist/photo/helpShell.js.map +1 -0
  639. package/dist/photo/index.d.ts +13 -0
  640. package/dist/photo/index.d.ts.map +1 -0
  641. package/dist/photo/index.js +13 -0
  642. package/dist/photo/index.js.map +1 -0
  643. package/dist/photo/manage.d.ts +13 -0
  644. package/dist/photo/manage.d.ts.map +1 -0
  645. package/dist/photo/manage.js +64 -0
  646. package/dist/photo/manage.js.map +1 -0
  647. package/dist/photo/photo.d.ts +118 -0
  648. package/dist/photo/photo.d.ts.map +1 -0
  649. package/dist/photo/photo.js +279 -0
  650. package/dist/photo/photo.js.map +1 -0
  651. package/dist/photo/photoThumb.d.ts +38 -0
  652. package/dist/photo/photoThumb.d.ts.map +1 -0
  653. package/dist/photo/photoThumb.js +83 -0
  654. package/dist/photo/photoThumb.js.map +1 -0
  655. package/dist/photo/photoUi.d.ts +39 -0
  656. package/dist/photo/photoUi.d.ts.map +1 -0
  657. package/dist/photo/photoUi.js +233 -0
  658. package/dist/photo/photoUi.js.map +1 -0
  659. package/dist/photo/photos.d.ts +78 -0
  660. package/dist/photo/photos.d.ts.map +1 -0
  661. package/dist/photo/photos.js +194 -0
  662. package/dist/photo/photos.js.map +1 -0
  663. package/dist/photo/picker.d.ts +41 -0
  664. package/dist/photo/picker.d.ts.map +1 -0
  665. package/dist/photo/picker.js +132 -0
  666. package/dist/photo/picker.js.map +1 -0
  667. package/dist/photo/pickerDoc.d.ts +12 -0
  668. package/dist/photo/pickerDoc.d.ts.map +1 -0
  669. package/dist/photo/pickerDoc.js +231 -0
  670. package/dist/photo/pickerDoc.js.map +1 -0
  671. package/dist/photo/receipt.d.ts +23 -0
  672. package/dist/photo/receipt.d.ts.map +1 -0
  673. package/dist/photo/receipt.js +331 -0
  674. package/dist/photo/receipt.js.map +1 -0
  675. package/dist/photo/receiptUi.d.ts +42 -0
  676. package/dist/photo/receiptUi.d.ts.map +1 -0
  677. package/dist/photo/receiptUi.js +147 -0
  678. package/dist/photo/receiptUi.js.map +1 -0
  679. package/dist/photo/routes.d.ts +10 -0
  680. package/dist/photo/routes.d.ts.map +1 -0
  681. package/dist/photo/routes.js +29 -0
  682. package/dist/photo/routes.js.map +1 -0
  683. package/dist/photo/store.d.ts +10 -0
  684. package/dist/photo/store.d.ts.map +1 -0
  685. package/dist/photo/store.js +44 -0
  686. package/dist/photo/store.js.map +1 -0
  687. package/dist/photo/templates.d.ts +4 -0
  688. package/dist/photo/templates.d.ts.map +1 -0
  689. package/dist/photo/templates.js +29 -0
  690. package/dist/photo/templates.js.map +1 -0
  691. package/dist/photo/viewerDoc.d.ts +5 -0
  692. package/dist/photo/viewerDoc.d.ts.map +1 -0
  693. package/dist/photo/viewerDoc.js +255 -0
  694. package/dist/photo/viewerDoc.js.map +1 -0
  695. package/dist/photo/wizard.d.ts +15 -0
  696. package/dist/photo/wizard.d.ts.map +1 -0
  697. package/dist/photo/wizard.js +25 -0
  698. package/dist/photo/wizard.js.map +1 -0
  699. package/dist/photo/wizardPort.d.ts +70 -0
  700. package/dist/photo/wizardPort.d.ts.map +1 -0
  701. package/dist/photo/wizardPort.js +232 -0
  702. package/dist/photo/wizardPort.js.map +1 -0
  703. package/dist/photo/wizardPortDocs.d.ts +6 -0
  704. package/dist/photo/wizardPortDocs.d.ts.map +1 -0
  705. package/dist/photo/wizardPortDocs.js +322 -0
  706. package/dist/photo/wizardPortDocs.js.map +1 -0
  707. package/dist/photo/wizardUi.d.ts +24 -0
  708. package/dist/photo/wizardUi.d.ts.map +1 -0
  709. package/dist/photo/wizardUi.js +101 -0
  710. package/dist/photo/wizardUi.js.map +1 -0
  711. package/dist/profile/commands.d.ts +32 -0
  712. package/dist/profile/commands.d.ts.map +1 -0
  713. package/dist/profile/commands.js +11 -0
  714. package/dist/profile/commands.js.map +1 -0
  715. package/dist/profile/index.d.ts +17 -0
  716. package/dist/profile/index.d.ts.map +1 -0
  717. package/dist/profile/index.js +17 -0
  718. package/dist/profile/index.js.map +1 -0
  719. package/dist/profile/labels.d.ts +10 -0
  720. package/dist/profile/labels.d.ts.map +1 -0
  721. package/dist/profile/labels.js +52 -0
  722. package/dist/profile/labels.js.map +1 -0
  723. package/dist/profile/read.d.ts +13 -0
  724. package/dist/profile/read.d.ts.map +1 -0
  725. package/dist/profile/read.js +24 -0
  726. package/dist/profile/read.js.map +1 -0
  727. package/dist/profile/receipt.d.ts +10 -0
  728. package/dist/profile/receipt.d.ts.map +1 -0
  729. package/dist/profile/receipt.js +19 -0
  730. package/dist/profile/receipt.js.map +1 -0
  731. package/dist/profile/routes.d.ts +8 -0
  732. package/dist/profile/routes.d.ts.map +1 -0
  733. package/dist/profile/routes.js +9 -0
  734. package/dist/profile/routes.js.map +1 -0
  735. package/dist/profile/setup.d.ts +26 -7
  736. package/dist/profile/setup.d.ts.map +1 -1
  737. package/dist/profile/setup.js +184 -78
  738. package/dist/profile/setup.js.map +1 -1
  739. package/dist/profile/update.d.ts +1 -1
  740. package/dist/profile/update.d.ts.map +1 -1
  741. package/dist/profile/update.js +33 -13
  742. package/dist/profile/update.js.map +1 -1
  743. package/dist/profile/view.d.ts +35 -4
  744. package/dist/profile/view.d.ts.map +1 -1
  745. package/dist/profile/view.js +132 -22
  746. package/dist/profile/view.js.map +1 -1
  747. package/dist/profile/write.d.ts +16 -0
  748. package/dist/profile/write.d.ts.map +1 -0
  749. package/dist/profile/write.js +75 -0
  750. package/dist/profile/write.js.map +1 -0
  751. package/dist/render/analysisPlate.d.ts +4 -4
  752. package/dist/render/analysisPlate.d.ts.map +1 -1
  753. package/dist/render/analysisPlate.js +5 -22
  754. package/dist/render/analysisPlate.js.map +1 -1
  755. package/dist/render/diet.d.ts +10 -6
  756. package/dist/render/diet.d.ts.map +1 -1
  757. package/dist/render/diet.js +8 -23
  758. package/dist/render/diet.js.map +1 -1
  759. package/dist/render/dietDocs.d.ts +19 -19
  760. package/dist/render/dietDocs.d.ts.map +1 -1
  761. package/dist/render/dietDocs.js +158 -457
  762. package/dist/render/dietDocs.js.map +1 -1
  763. package/dist/render/exercisePort.d.ts +4 -2
  764. package/dist/render/exercisePort.d.ts.map +1 -1
  765. package/dist/render/exercisePort.js +4 -3
  766. package/dist/render/exercisePort.js.map +1 -1
  767. package/dist/render/goalExtra.d.ts.map +1 -1
  768. package/dist/render/goalExtra.js +2 -1
  769. package/dist/render/goalExtra.js.map +1 -1
  770. package/dist/render/goalPlate.d.ts +2 -2
  771. package/dist/render/goalPlate.d.ts.map +1 -1
  772. package/dist/render/goalPlate.js +3 -3
  773. package/dist/render/goalPlate.js.map +1 -1
  774. package/dist/render/helpShell.d.ts +1 -1
  775. package/dist/render/helpShell.d.ts.map +1 -1
  776. package/dist/render/html.d.ts +34 -24
  777. package/dist/render/html.d.ts.map +1 -1
  778. package/dist/render/html.js +38 -88
  779. package/dist/render/html.js.map +1 -1
  780. package/dist/render/index.d.ts +34 -33
  781. package/dist/render/index.d.ts.map +1 -1
  782. package/dist/render/index.js +30 -18
  783. package/dist/render/index.js.map +1 -1
  784. package/dist/render/insightPlate.d.ts +17 -0
  785. package/dist/render/insightPlate.d.ts.map +1 -1
  786. package/dist/render/insightPlate.js +109 -1
  787. package/dist/render/insightPlate.js.map +1 -1
  788. package/dist/render/pageChromeCss.d.ts +24 -0
  789. package/dist/render/pageChromeCss.d.ts.map +1 -0
  790. package/dist/render/pageChromeCss.js +45 -0
  791. package/dist/render/pageChromeCss.js.map +1 -0
  792. package/dist/render/planCopyBlock.d.ts +32 -0
  793. package/dist/render/planCopyBlock.d.ts.map +1 -0
  794. package/dist/render/planCopyBlock.js +34 -0
  795. package/dist/render/planCopyBlock.js.map +1 -0
  796. package/dist/render/planEditor.d.ts +94 -0
  797. package/dist/render/planEditor.d.ts.map +1 -0
  798. package/dist/render/planEditor.js +38 -0
  799. package/dist/render/planEditor.js.map +1 -0
  800. package/dist/render/planEditorCss.d.ts +13 -0
  801. package/dist/render/planEditorCss.d.ts.map +1 -0
  802. package/dist/render/planEditorCss.js +140 -0
  803. package/dist/render/planEditorCss.js.map +1 -0
  804. package/dist/render/planEditorDocs.d.ts +7 -0
  805. package/dist/render/planEditorDocs.d.ts.map +1 -0
  806. package/dist/render/planEditorDocs.js +56 -0
  807. package/dist/render/planEditorDocs.js.map +1 -0
  808. package/dist/render/planEditorPort.d.ts +45 -0
  809. package/dist/render/planEditorPort.d.ts.map +1 -0
  810. package/dist/render/planEditorPort.js +217 -0
  811. package/dist/render/planEditorPort.js.map +1 -0
  812. package/dist/render/planEditorRuntime.d.ts +15 -0
  813. package/dist/render/planEditorRuntime.d.ts.map +1 -0
  814. package/dist/render/planEditorRuntime.js +427 -0
  815. package/dist/render/planEditorRuntime.js.map +1 -0
  816. package/dist/render/planPlate.d.ts +84 -4
  817. package/dist/render/planPlate.d.ts.map +1 -1
  818. package/dist/render/planPlate.js +155 -7
  819. package/dist/render/planPlate.js.map +1 -1
  820. package/dist/render/planWizardCss.d.ts +21 -0
  821. package/dist/render/planWizardCss.d.ts.map +1 -0
  822. package/dist/render/planWizardCss.js +121 -0
  823. package/dist/render/planWizardCss.js.map +1 -0
  824. package/dist/render/planWizardDocs.d.ts +8 -0
  825. package/dist/render/planWizardDocs.d.ts.map +1 -0
  826. package/dist/render/planWizardDocs.js +151 -0
  827. package/dist/render/planWizardDocs.js.map +1 -0
  828. package/dist/render/receipt.d.ts +1 -1
  829. package/dist/render/receipt.d.ts.map +1 -1
  830. package/dist/render/receipt.js +1 -1
  831. package/dist/render/receipt.js.map +1 -1
  832. package/dist/render/sportDocs.d.ts +17 -12
  833. package/dist/render/sportDocs.d.ts.map +1 -1
  834. package/dist/render/sportDocs.js +370 -525
  835. package/dist/render/sportDocs.js.map +1 -1
  836. package/dist/render/sportPortDocs.d.ts +3 -2
  837. package/dist/render/sportPortDocs.d.ts.map +1 -1
  838. package/dist/render/sportPortDocs.js +810 -389
  839. package/dist/render/sportPortDocs.js.map +1 -1
  840. package/dist/render/trendDocs.d.ts +16 -6
  841. package/dist/render/trendDocs.d.ts.map +1 -1
  842. package/dist/render/trendDocs.js +293 -252
  843. package/dist/render/trendDocs.js.map +1 -1
  844. package/dist/render/trendMiscPort.d.ts +9 -24
  845. package/dist/render/trendMiscPort.d.ts.map +1 -1
  846. package/dist/render/trendMiscPort.js +13 -34
  847. package/dist/render/trendMiscPort.js.map +1 -1
  848. package/dist/render/trendMiscPortDocs.d.ts +1 -2
  849. package/dist/render/trendMiscPortDocs.d.ts.map +1 -1
  850. package/dist/render/trendMiscPortDocs.js +256 -107
  851. package/dist/render/trendMiscPortDocs.js.map +1 -1
  852. package/dist/render/trendPredictDocs.d.ts +16 -0
  853. package/dist/render/trendPredictDocs.d.ts.map +1 -0
  854. package/dist/render/trendPredictDocs.js +1131 -0
  855. package/dist/render/trendPredictDocs.js.map +1 -0
  856. package/dist/render/wizardPort.d.ts +9 -62
  857. package/dist/render/wizardPort.d.ts.map +1 -1
  858. package/dist/render/wizardPort.js +20 -180
  859. package/dist/render/wizardPort.js.map +1 -1
  860. package/dist/render/wizardPortDocs.d.ts +5 -5
  861. package/dist/render/wizardPortDocs.d.ts.map +1 -1
  862. package/dist/render/wizardPortDocs.js +273 -215
  863. package/dist/render/wizardPortDocs.js.map +1 -1
  864. package/dist/render/workoutMovementTable.d.ts +10 -0
  865. package/dist/render/workoutMovementTable.d.ts.map +1 -0
  866. package/dist/render/workoutMovementTable.js +153 -0
  867. package/dist/render/workoutMovementTable.js.map +1 -0
  868. package/dist/render/workoutPlanCss.d.ts +15 -0
  869. package/dist/render/workoutPlanCss.d.ts.map +1 -0
  870. package/dist/render/workoutPlanCss.js +217 -0
  871. package/dist/render/workoutPlanCss.js.map +1 -0
  872. package/dist/render/workoutPlanDocs.d.ts +23 -0
  873. package/dist/render/workoutPlanDocs.d.ts.map +1 -0
  874. package/dist/render/workoutPlanDocs.js +244 -0
  875. package/dist/render/workoutPlanDocs.js.map +1 -0
  876. package/dist/render/workoutPlanLook.d.ts +16 -0
  877. package/dist/render/workoutPlanLook.d.ts.map +1 -0
  878. package/dist/render/workoutPlanLook.js +135 -0
  879. package/dist/render/workoutPlanLook.js.map +1 -0
  880. package/dist/shared/alive.d.ts +22 -0
  881. package/dist/shared/alive.d.ts.map +1 -0
  882. package/dist/shared/alive.js +22 -0
  883. package/dist/shared/alive.js.map +1 -0
  884. package/dist/shared/commandSpec.d.ts +83 -0
  885. package/dist/shared/commandSpec.d.ts.map +1 -0
  886. package/dist/shared/commandSpec.js +2 -0
  887. package/dist/shared/commandSpec.js.map +1 -0
  888. package/dist/shared/conclusionLine.d.ts +3 -0
  889. package/dist/shared/conclusionLine.d.ts.map +1 -0
  890. package/dist/shared/conclusionLine.js +21 -0
  891. package/dist/shared/conclusionLine.js.map +1 -0
  892. package/dist/shared/contentSuffix.d.ts +17 -0
  893. package/dist/shared/contentSuffix.d.ts.map +1 -0
  894. package/dist/shared/contentSuffix.js +125 -0
  895. package/dist/shared/contentSuffix.js.map +1 -0
  896. package/dist/shared/copyArea.d.ts +30 -11
  897. package/dist/shared/copyArea.d.ts.map +1 -1
  898. package/dist/shared/copyArea.js +68 -13
  899. package/dist/shared/copyArea.js.map +1 -1
  900. package/dist/shared/copyBlock.d.ts +4 -0
  901. package/dist/shared/copyBlock.d.ts.map +1 -0
  902. package/dist/shared/copyBlock.js +26 -0
  903. package/dist/shared/copyBlock.js.map +1 -0
  904. package/dist/shared/docPage.d.ts +26 -4
  905. package/dist/shared/docPage.d.ts.map +1 -1
  906. package/dist/shared/docPage.js +84 -10
  907. package/dist/shared/docPage.js.map +1 -1
  908. package/dist/shared/emptyGuide.d.ts +9 -0
  909. package/dist/shared/emptyGuide.d.ts.map +1 -0
  910. package/dist/shared/emptyGuide.js +31 -0
  911. package/dist/shared/emptyGuide.js.map +1 -0
  912. package/dist/shared/fieldLabel.d.ts +5 -0
  913. package/dist/shared/fieldLabel.d.ts.map +1 -0
  914. package/dist/shared/fieldLabel.js +42 -0
  915. package/dist/shared/fieldLabel.js.map +1 -0
  916. package/dist/shared/healthRate.d.ts +21 -0
  917. package/dist/shared/healthRate.d.ts.map +1 -0
  918. package/dist/shared/healthRate.js +21 -0
  919. package/dist/shared/healthRate.js.map +1 -0
  920. package/dist/shared/kcalPerKg.d.ts +16 -0
  921. package/dist/shared/kcalPerKg.d.ts.map +1 -0
  922. package/dist/shared/kcalPerKg.js +16 -0
  923. package/dist/shared/kcalPerKg.js.map +1 -0
  924. package/dist/shared/meal.d.ts +46 -0
  925. package/dist/shared/meal.d.ts.map +1 -0
  926. package/dist/shared/meal.js +75 -0
  927. package/dist/shared/meal.js.map +1 -0
  928. package/dist/shared/nutritionRange.d.ts +28 -0
  929. package/dist/shared/nutritionRange.d.ts.map +1 -0
  930. package/dist/shared/nutritionRange.js +28 -0
  931. package/dist/shared/nutritionRange.js.map +1 -0
  932. package/dist/shared/operationHead.d.ts +21 -0
  933. package/dist/shared/operationHead.d.ts.map +1 -0
  934. package/dist/shared/operationHead.js +73 -0
  935. package/dist/shared/operationHead.js.map +1 -0
  936. package/dist/shared/pageKit.d.ts +25 -0
  937. package/dist/shared/pageKit.d.ts.map +1 -0
  938. package/dist/shared/pageKit.js +56 -0
  939. package/dist/shared/pageKit.js.map +1 -0
  940. package/dist/shared/pageStrips.d.ts +81 -0
  941. package/dist/shared/pageStrips.d.ts.map +1 -0
  942. package/dist/shared/pageStrips.js +166 -0
  943. package/dist/shared/pageStrips.js.map +1 -0
  944. package/dist/shared/params.d.ts +54 -0
  945. package/dist/shared/params.d.ts.map +1 -0
  946. package/dist/shared/params.js +176 -0
  947. package/dist/shared/params.js.map +1 -0
  948. package/dist/shared/planCopyBlock.d.ts +32 -0
  949. package/dist/shared/planCopyBlock.d.ts.map +1 -0
  950. package/dist/shared/planCopyBlock.js +34 -0
  951. package/dist/shared/planCopyBlock.js.map +1 -0
  952. package/dist/shared/receiptParts.d.ts +9 -0
  953. package/dist/shared/receiptParts.d.ts.map +1 -0
  954. package/dist/shared/receiptParts.js +40 -0
  955. package/dist/shared/receiptParts.js.map +1 -0
  956. package/dist/shared/sceneEnvelope.d.ts +32 -0
  957. package/dist/shared/sceneEnvelope.d.ts.map +1 -0
  958. package/dist/shared/sceneEnvelope.js +12 -0
  959. package/dist/shared/sceneEnvelope.js.map +1 -0
  960. package/dist/shared/sourceLine.d.ts +10 -0
  961. package/dist/shared/sourceLine.d.ts.map +1 -0
  962. package/dist/shared/sourceLine.js +39 -0
  963. package/dist/shared/sourceLine.js.map +1 -0
  964. package/dist/shared/time.d.ts +28 -0
  965. package/dist/shared/time.d.ts.map +1 -0
  966. package/dist/shared/time.js +37 -0
  967. package/dist/shared/time.js.map +1 -0
  968. package/dist/shared/writeParts.d.ts +61 -0
  969. package/dist/shared/writeParts.d.ts.map +1 -0
  970. package/dist/shared/writeParts.js +79 -0
  971. package/dist/shared/writeParts.js.map +1 -0
  972. package/dist/triggers/help-lookup.d.ts +41 -5
  973. package/dist/triggers/help-lookup.d.ts.map +1 -1
  974. package/dist/triggers/help-lookup.js +100 -51
  975. package/dist/triggers/help-lookup.js.map +1 -1
  976. package/dist/triggers/index.js +1 -1
  977. package/dist/triggers/routeSpec.d.ts +66 -0
  978. package/dist/triggers/routeSpec.d.ts.map +1 -0
  979. package/dist/triggers/routeSpec.js +21 -0
  980. package/dist/triggers/routeSpec.js.map +1 -0
  981. package/dist/triggers/routes.generated.d.ts +17 -0
  982. package/dist/triggers/routes.generated.d.ts.map +1 -0
  983. package/dist/triggers/routes.generated.js +519 -0
  984. package/dist/triggers/routes.generated.js.map +1 -0
  985. package/dist/triggers/routing.d.ts +11 -34
  986. package/dist/triggers/routing.d.ts.map +1 -1
  987. package/dist/triggers/routing.js +12 -528
  988. package/dist/triggers/routing.js.map +1 -1
  989. package/dist/triggers/scene-01-home.js +9 -9
  990. package/dist/triggers/scene-01-home.js.map +1 -1
  991. package/dist/triggers/scene-02-diet.js +62 -62
  992. package/dist/triggers/scene-02-diet.js.map +1 -1
  993. package/dist/triggers/scene-03-weight.js +54 -54
  994. package/dist/triggers/scene-03-weight.js.map +1 -1
  995. package/dist/triggers/scene-04-exercise.js +33 -33
  996. package/dist/triggers/scene-04-exercise.js.map +1 -1
  997. package/dist/triggers/scene-05-workout.js +32 -32
  998. package/dist/triggers/scene-05-workout.js.map +1 -1
  999. package/dist/triggers/scene-06-goal.d.ts +1 -1
  1000. package/dist/triggers/scene-06-goal.d.ts.map +1 -1
  1001. package/dist/triggers/scene-06-goal.js +25 -24
  1002. package/dist/triggers/scene-06-goal.js.map +1 -1
  1003. package/dist/triggers/scene-07-profile.js +1 -1
  1004. package/dist/triggers/scene-07-profile.js.map +1 -1
  1005. package/dist/triggers/scene-08-body.js +10 -10
  1006. package/dist/triggers/scene-08-body.js.map +1 -1
  1007. package/dist/triggers/scene-09-photo.js +10 -10
  1008. package/dist/triggers/scene-09-photo.js.map +1 -1
  1009. package/dist/triggers/scene-10-analysis.js +176 -176
  1010. package/dist/triggers/scene-10-analysis.js.map +1 -1
  1011. package/dist/triggers/wake-assets.d.ts.map +1 -1
  1012. package/dist/triggers/wake-assets.js +21 -11
  1013. package/dist/triggers/wake-assets.js.map +1 -1
  1014. package/dist/weight/commands.d.ts +24 -0
  1015. package/dist/weight/commands.d.ts.map +1 -0
  1016. package/dist/weight/commands.js +19 -0
  1017. package/dist/weight/commands.js.map +1 -0
  1018. package/dist/weight/compare.d.ts +60 -0
  1019. package/dist/weight/compare.d.ts.map +1 -0
  1020. package/dist/weight/compare.js +570 -0
  1021. package/dist/weight/compare.js.map +1 -0
  1022. package/dist/weight/edit.d.ts +13 -0
  1023. package/dist/weight/edit.d.ts.map +1 -0
  1024. package/dist/weight/edit.js +87 -0
  1025. package/dist/weight/edit.js.map +1 -0
  1026. package/dist/weight/fieldLabels.d.ts +5 -0
  1027. package/dist/weight/fieldLabels.d.ts.map +1 -0
  1028. package/dist/weight/fieldLabels.js +23 -0
  1029. package/dist/weight/fieldLabels.js.map +1 -0
  1030. package/dist/weight/figures.d.ts +87 -0
  1031. package/dist/weight/figures.d.ts.map +1 -0
  1032. package/dist/weight/figures.js +221 -0
  1033. package/dist/weight/figures.js.map +1 -0
  1034. package/dist/weight/history.d.ts +85 -0
  1035. package/dist/weight/history.d.ts.map +1 -0
  1036. package/dist/weight/history.js +771 -0
  1037. package/dist/weight/history.js.map +1 -0
  1038. package/dist/weight/index.d.ts +21 -0
  1039. package/dist/weight/index.d.ts.map +1 -0
  1040. package/dist/weight/index.js +20 -0
  1041. package/dist/weight/index.js.map +1 -0
  1042. package/dist/weight/log.d.ts +40 -0
  1043. package/dist/weight/log.d.ts.map +1 -0
  1044. package/dist/weight/log.js +355 -0
  1045. package/dist/weight/log.js.map +1 -0
  1046. package/dist/weight/logReceipt.d.ts +28 -0
  1047. package/dist/weight/logReceipt.d.ts.map +1 -0
  1048. package/dist/weight/logReceipt.js +259 -0
  1049. package/dist/weight/logReceipt.js.map +1 -0
  1050. package/dist/weight/plate.d.ts +77 -0
  1051. package/dist/weight/plate.d.ts.map +1 -0
  1052. package/dist/weight/plate.js +60 -0
  1053. package/dist/weight/plate.js.map +1 -0
  1054. package/dist/weight/plateDocs.d.ts +83 -0
  1055. package/dist/weight/plateDocs.d.ts.map +1 -0
  1056. package/dist/weight/plateDocs.js +179 -0
  1057. package/dist/weight/plateDocs.js.map +1 -0
  1058. package/dist/weight/receipt.d.ts +23 -0
  1059. package/dist/weight/receipt.d.ts.map +1 -0
  1060. package/dist/weight/receipt.js +178 -0
  1061. package/dist/weight/receipt.js.map +1 -0
  1062. package/dist/weight/records.d.ts +109 -0
  1063. package/dist/weight/records.d.ts.map +1 -0
  1064. package/dist/weight/records.js +212 -0
  1065. package/dist/weight/records.js.map +1 -0
  1066. package/dist/weight/review.d.ts +114 -0
  1067. package/dist/weight/review.d.ts.map +1 -0
  1068. package/dist/weight/review.js +651 -0
  1069. package/dist/weight/review.js.map +1 -0
  1070. package/dist/weight/routes.d.ts +7 -0
  1071. package/dist/weight/routes.d.ts.map +1 -0
  1072. package/dist/weight/routes.js +68 -0
  1073. package/dist/weight/routes.js.map +1 -0
  1074. package/dist/weight/volatility.d.ts +78 -0
  1075. package/dist/weight/volatility.d.ts.map +1 -0
  1076. package/dist/weight/volatility.js +203 -0
  1077. package/dist/weight/volatility.js.map +1 -0
  1078. package/dist/weight/volatilityDoc.d.ts +10 -0
  1079. package/dist/weight/volatilityDoc.d.ts.map +1 -0
  1080. package/dist/weight/volatilityDoc.js +395 -0
  1081. package/dist/weight/volatilityDoc.js.map +1 -0
  1082. package/dist/weight/weightCompare.d.ts +70 -0
  1083. package/dist/weight/weightCompare.d.ts.map +1 -0
  1084. package/dist/weight/weightCompare.js +221 -0
  1085. package/dist/weight/weightCompare.js.map +1 -0
  1086. package/dist/weight/weightCompare2.d.ts +66 -0
  1087. package/dist/weight/weightCompare2.d.ts.map +1 -0
  1088. package/dist/weight/weightCompare2.js +218 -0
  1089. package/dist/weight/weightCompare2.js.map +1 -0
  1090. package/dist/weight/weightCompare3.d.ts +18 -0
  1091. package/dist/weight/weightCompare3.d.ts.map +1 -0
  1092. package/dist/weight/weightCompare3.js +222 -0
  1093. package/dist/weight/weightCompare3.js.map +1 -0
  1094. package/dist/weight/weightUi.d.ts +126 -0
  1095. package/dist/weight/weightUi.d.ts.map +1 -0
  1096. package/dist/weight/weightUi.js +226 -0
  1097. package/dist/weight/weightUi.js.map +1 -0
  1098. package/dist/workout/commands.d.ts +43 -0
  1099. package/dist/workout/commands.d.ts.map +1 -0
  1100. package/dist/workout/commands.js +36 -0
  1101. package/dist/workout/commands.js.map +1 -0
  1102. package/dist/workout/contraindication.d.ts +11 -0
  1103. package/dist/workout/contraindication.d.ts.map +1 -0
  1104. package/dist/workout/contraindication.js +11 -0
  1105. package/dist/workout/contraindication.js.map +1 -0
  1106. package/dist/workout/dayPhrase.d.ts +13 -0
  1107. package/dist/workout/dayPhrase.d.ts.map +1 -0
  1108. package/dist/workout/dayPhrase.js +15 -0
  1109. package/dist/workout/dayPhrase.js.map +1 -0
  1110. package/dist/workout/fieldLabels.d.ts +5 -0
  1111. package/dist/workout/fieldLabels.d.ts.map +1 -0
  1112. package/dist/workout/fieldLabels.js +45 -0
  1113. package/dist/workout/fieldLabels.js.map +1 -0
  1114. package/dist/workout/index.d.ts +21 -0
  1115. package/dist/workout/index.d.ts.map +1 -0
  1116. package/dist/workout/index.js +20 -0
  1117. package/dist/workout/index.js.map +1 -0
  1118. package/dist/workout/land.d.ts +45 -0
  1119. package/dist/workout/land.d.ts.map +1 -0
  1120. package/dist/workout/land.js +280 -0
  1121. package/dist/workout/land.js.map +1 -0
  1122. package/dist/workout/landBatch.d.ts +62 -0
  1123. package/dist/workout/landBatch.d.ts.map +1 -0
  1124. package/dist/workout/landBatch.js +227 -0
  1125. package/dist/workout/landBatch.js.map +1 -0
  1126. package/dist/workout/landBatchPages.d.ts +31 -0
  1127. package/dist/workout/landBatchPages.d.ts.map +1 -0
  1128. package/dist/workout/landBatchPages.js +111 -0
  1129. package/dist/workout/landBatchPages.js.map +1 -0
  1130. package/dist/workout/landPages.d.ts +41 -0
  1131. package/dist/workout/landPages.d.ts.map +1 -0
  1132. package/dist/workout/landPages.js +132 -0
  1133. package/dist/workout/landPages.js.map +1 -0
  1134. package/dist/workout/landRunner.d.ts +40 -0
  1135. package/dist/workout/landRunner.d.ts.map +1 -0
  1136. package/dist/workout/landRunner.js +134 -0
  1137. package/dist/workout/landRunner.js.map +1 -0
  1138. package/dist/workout/movementType.d.ts +14 -0
  1139. package/dist/workout/movementType.d.ts.map +1 -0
  1140. package/dist/workout/movementType.js +16 -0
  1141. package/dist/workout/movementType.js.map +1 -0
  1142. package/dist/workout/plan.d.ts +21 -0
  1143. package/dist/workout/plan.d.ts.map +1 -0
  1144. package/dist/workout/plan.js +44 -0
  1145. package/dist/workout/plan.js.map +1 -0
  1146. package/dist/workout/planCopyBlock.d.ts +9 -0
  1147. package/dist/workout/planCopyBlock.d.ts.map +1 -0
  1148. package/dist/workout/planCopyBlock.js +9 -0
  1149. package/dist/workout/planCopyBlock.js.map +1 -0
  1150. package/dist/workout/planEditor.d.ts +94 -0
  1151. package/dist/workout/planEditor.d.ts.map +1 -0
  1152. package/dist/workout/planEditor.js +38 -0
  1153. package/dist/workout/planEditor.js.map +1 -0
  1154. package/dist/workout/planEditorCss.d.ts +13 -0
  1155. package/dist/workout/planEditorCss.d.ts.map +1 -0
  1156. package/dist/workout/planEditorCss.js +140 -0
  1157. package/dist/workout/planEditorCss.js.map +1 -0
  1158. package/dist/workout/planEditorDocs.d.ts +7 -0
  1159. package/dist/workout/planEditorDocs.d.ts.map +1 -0
  1160. package/dist/workout/planEditorDocs.js +56 -0
  1161. package/dist/workout/planEditorDocs.js.map +1 -0
  1162. package/dist/workout/planEditorPort.d.ts +45 -0
  1163. package/dist/workout/planEditorPort.d.ts.map +1 -0
  1164. package/dist/workout/planEditorPort.js +217 -0
  1165. package/dist/workout/planEditorPort.js.map +1 -0
  1166. package/dist/workout/planEditorRuntime.d.ts +15 -0
  1167. package/dist/workout/planEditorRuntime.d.ts.map +1 -0
  1168. package/dist/workout/planEditorRuntime.js +427 -0
  1169. package/dist/workout/planEditorRuntime.js.map +1 -0
  1170. package/dist/workout/planStore.d.ts +157 -0
  1171. package/dist/workout/planStore.d.ts.map +1 -0
  1172. package/dist/workout/planStore.js +280 -0
  1173. package/dist/workout/planStore.js.map +1 -0
  1174. package/dist/workout/precheckPrompt.d.ts +7 -0
  1175. package/dist/workout/precheckPrompt.d.ts.map +1 -0
  1176. package/dist/workout/precheckPrompt.js +35 -0
  1177. package/dist/workout/precheckPrompt.js.map +1 -0
  1178. package/dist/workout/progress.d.ts +12 -0
  1179. package/dist/workout/progress.d.ts.map +1 -0
  1180. package/dist/workout/progress.js +16 -0
  1181. package/dist/workout/progress.js.map +1 -0
  1182. package/dist/workout/receipt.d.ts +15 -0
  1183. package/dist/workout/receipt.d.ts.map +1 -0
  1184. package/dist/workout/receipt.js +128 -0
  1185. package/dist/workout/receipt.js.map +1 -0
  1186. package/dist/workout/review.d.ts +12 -0
  1187. package/dist/workout/review.d.ts.map +1 -0
  1188. package/dist/workout/review.js +15 -0
  1189. package/dist/workout/review.js.map +1 -0
  1190. package/dist/workout/reviewDocs.d.ts +3 -0
  1191. package/dist/workout/reviewDocs.d.ts.map +1 -0
  1192. package/dist/workout/reviewDocs.js +222 -0
  1193. package/dist/workout/reviewDocs.js.map +1 -0
  1194. package/dist/workout/reviewDocsCss.d.ts +5 -0
  1195. package/dist/workout/reviewDocsCss.d.ts.map +1 -0
  1196. package/dist/workout/reviewDocsCss.js +128 -0
  1197. package/dist/workout/reviewDocsCss.js.map +1 -0
  1198. package/dist/workout/routes.d.ts +13 -0
  1199. package/dist/workout/routes.d.ts.map +1 -0
  1200. package/dist/workout/routes.js +49 -0
  1201. package/dist/workout/routes.js.map +1 -0
  1202. package/dist/workout/wizard.d.ts +14 -0
  1203. package/dist/workout/wizard.d.ts.map +1 -0
  1204. package/dist/workout/wizard.js +20 -0
  1205. package/dist/workout/wizard.js.map +1 -0
  1206. package/dist/workout/write.d.ts +78 -0
  1207. package/dist/workout/write.d.ts.map +1 -0
  1208. package/dist/workout/write.js +607 -0
  1209. package/dist/workout/write.js.map +1 -0
  1210. package/dist/workout/xunjiBackfill.d.ts +36 -0
  1211. package/dist/workout/xunjiBackfill.d.ts.map +1 -0
  1212. package/dist/workout/xunjiBackfill.js +177 -0
  1213. package/dist/workout/xunjiBackfill.js.map +1 -0
  1214. package/dist/workout/xunjiPush.d.ts +33 -0
  1215. package/dist/workout/xunjiPush.d.ts.map +1 -0
  1216. package/dist/workout/xunjiPush.js +215 -0
  1217. package/dist/workout/xunjiPush.js.map +1 -0
  1218. package/dist/workout/xunjiRunner.d.ts +35 -0
  1219. package/dist/workout/xunjiRunner.d.ts.map +1 -0
  1220. package/dist/workout/xunjiRunner.js +110 -0
  1221. package/dist/workout/xunjiRunner.js.map +1 -0
  1222. package/dist/xunji/backfill.d.ts +65 -0
  1223. package/dist/xunji/backfill.d.ts.map +1 -0
  1224. package/dist/xunji/backfill.js +156 -0
  1225. package/dist/xunji/backfill.js.map +1 -0
  1226. package/dist/xunji/catalog.d.ts +55 -0
  1227. package/dist/xunji/catalog.d.ts.map +1 -0
  1228. package/dist/xunji/catalog.js +132 -0
  1229. package/dist/xunji/catalog.js.map +1 -0
  1230. package/dist/xunji/cli.d.ts +3 -0
  1231. package/dist/xunji/cli.d.ts.map +1 -0
  1232. package/dist/xunji/cli.js +15 -0
  1233. package/dist/xunji/cli.js.map +1 -0
  1234. package/dist/xunji/exitMap.d.ts +37 -0
  1235. package/dist/xunji/exitMap.d.ts.map +1 -0
  1236. package/dist/xunji/exitMap.js +42 -0
  1237. package/dist/xunji/exitMap.js.map +1 -0
  1238. package/dist/xunji/fetch.d.ts +76 -0
  1239. package/dist/xunji/fetch.d.ts.map +1 -0
  1240. package/dist/xunji/fetch.js +159 -0
  1241. package/dist/xunji/fetch.js.map +1 -0
  1242. package/dist/xunji/index.d.ts +21 -0
  1243. package/dist/xunji/index.d.ts.map +1 -0
  1244. package/dist/xunji/index.js +18 -0
  1245. package/dist/xunji/index.js.map +1 -0
  1246. package/dist/xunji/key.d.ts +37 -0
  1247. package/dist/xunji/key.d.ts.map +1 -0
  1248. package/dist/xunji/key.js +100 -0
  1249. package/dist/xunji/key.js.map +1 -0
  1250. package/dist/xunji/overlay-plan.d.ts +79 -0
  1251. package/dist/xunji/overlay-plan.d.ts.map +1 -0
  1252. package/dist/xunji/overlay-plan.js +145 -0
  1253. package/dist/xunji/overlay-plan.js.map +1 -0
  1254. package/dist/xunji/planSource.d.ts +40 -0
  1255. package/dist/xunji/planSource.d.ts.map +1 -0
  1256. package/dist/xunji/planSource.js +78 -0
  1257. package/dist/xunji/planSource.js.map +1 -0
  1258. package/dist/xunji/push.d.ts +55 -0
  1259. package/dist/xunji/push.d.ts.map +1 -0
  1260. package/dist/xunji/push.js +69 -0
  1261. package/dist/xunji/push.js.map +1 -0
  1262. package/dist/xunji/rateLimit.d.ts +49 -0
  1263. package/dist/xunji/rateLimit.d.ts.map +1 -0
  1264. package/dist/xunji/rateLimit.js +108 -0
  1265. package/dist/xunji/rateLimit.js.map +1 -0
  1266. package/dist/xunji/request.d.ts +48 -0
  1267. package/dist/xunji/request.d.ts.map +1 -0
  1268. package/dist/xunji/request.js +60 -0
  1269. package/dist/xunji/request.js.map +1 -0
  1270. package/dist/xunji/retry.d.ts +50 -0
  1271. package/dist/xunji/retry.d.ts.map +1 -0
  1272. package/dist/xunji/retry.js +106 -0
  1273. package/dist/xunji/retry.js.map +1 -0
  1274. package/dist/xunji/rows.d.ts +32 -0
  1275. package/dist/xunji/rows.d.ts.map +1 -0
  1276. package/dist/xunji/rows.js +74 -0
  1277. package/dist/xunji/rows.js.map +1 -0
  1278. package/dist/xunji/run-sync.d.ts +106 -0
  1279. package/dist/xunji/run-sync.d.ts.map +1 -0
  1280. package/dist/xunji/run-sync.js +223 -0
  1281. package/dist/xunji/run-sync.js.map +1 -0
  1282. package/dist/xunji/run.d.ts +54 -0
  1283. package/dist/xunji/run.d.ts.map +1 -0
  1284. package/dist/xunji/run.js +300 -0
  1285. package/dist/xunji/run.js.map +1 -0
  1286. package/dist/xunji/store.d.ts +31 -0
  1287. package/dist/xunji/store.d.ts.map +1 -0
  1288. package/dist/xunji/store.js +60 -0
  1289. package/dist/xunji/store.js.map +1 -0
  1290. package/dist/xunji/subcommands.d.ts +64 -0
  1291. package/dist/xunji/subcommands.d.ts.map +1 -0
  1292. package/dist/xunji/subcommands.js +202 -0
  1293. package/dist/xunji/subcommands.js.map +1 -0
  1294. package/dist/xunji/upsert.d.ts +61 -0
  1295. package/dist/xunji/upsert.d.ts.map +1 -0
  1296. package/dist/xunji/upsert.js +100 -0
  1297. package/dist/xunji/upsert.js.map +1 -0
  1298. package/package.json +6 -9
  1299. package/src/xunji/data//350/256/255/350/256/260/345/256/230/346/226/271/345/212/250/344/275/234.json +1099 -0
  1300. package/templates/help.html +1 -1
  1301. package/workflows/08-/350/272/253/344/275/223/347/273/206/350/212/202.md +60 -0
  1302. package/workflows/09-/350/272/253/346/235/220/347/205/247/347/211/207.md +98 -0
@@ -0,0 +1,291 @@
1
+ /** #341 · 看身材照整页文档(完整文档+内嵌照片+复制区)。
2
+ *
3
+ * `gallery.ts` 的调用处(票面“gallery 调用处”即本件):取数仍是 `photo.ts` 的
4
+ * `buildGalleryData`,本件只做呈现组装——身份徽章+读数卡+照片网格+明细表+复制区,
5
+ * 经共用件 `assembleDocPage` 包成 `<!doctype html>` 起的完整文档。
6
+ * 体重参考切片:`src/weight/plateDocs.ts`(KPI+表+`dataCopyArea`+`assembleDocPage`)。
7
+ *
8
+ * #438 · 体积退让:渲染期按 `PHOTO_LIST_PAGE_MAX_BYTES` 逐张试嵌(口径与取值均沿用
9
+ * t400 裁定 3,见 t438 文档)。横幅的**触发与 M 只按预算跳过计数**(文件缺失不进横幅,
10
+ * 见 t438 §一 整改),**复制数据仍是全量行**(只截断内嵌,不截断数据)。
11
+ *
12
+ * #472(读侧 A 组)· 文本与展示:眉标去掉内部命令名与「域」;三种态用同一套人话词汇;
13
+ * 相对天数在**装配层**按 `todayISO()` 现算;文件名收成可复制小字块;明细表只标异常。
14
+ * 取值口径(预算/缺失/未校验三态归属)与复制数据一字未改。
15
+ *
16
+ * **#526(读侧族重排 · 本票)**——四条改动,取值口径与体积退让行为一行未改:
17
+ * ① **形状化**:原来靠 `·`/`;` 串起来的四处全落成形状(节点级命中 34 → 0)——
18
+ * 页头身份行改 `chipRow()` 徽章列(筛选/窗口)、图注三件事改徽章列、缺失清单的
19
+ * `编号 · 文件名 · 徽标` 三串一改由**网格里那张自己的占位**承担(同一事实一页一处)、
20
+ * KPI 明细 `8 张找不到文件 · 10 张太大未显示` 拆成两张卡各说一件事;
21
+ * ② **文案去冗余**:`内嵌 N/M 张` 这类内部叫法出页面(改「本页显示 N 张/共找到 M 张」);
22
+ * 同一事实(本窗张数)原本在页头、KPI、表注各说一遍 ⇒ 只留 KPI 与表注两处**各说各的**
23
+ * (KPI 说「共找到」,表注说「按时间倒序」);缺失清单整块删(网格占位已逐张点名);
24
+ * ③ **网格化**:照片改等高卡片网格(`aspect-ratio:4/5` + `object-fit:cover`),
25
+ * 没显示的那张在自己的格位上写明**哪一份文件**与**为什么**(退让不许静默,#438 口径);
26
+ * ④ **手机端**:本族页内样式住 `photoUi.ts`(断点 820/640,触摸区 ≥44px),
27
+ * 明细表窄屏给「可以左右滑」这一行提示。
28
+ * ⑤ **收口(本席位)**:逐张的复制按钮撤掉(一页 44 颗药丸按钮压过图注,其中 22 颗是公共层自动补的
29
+ * 禁用「复制日志」);表的 `caption` 槽在公共层窄屏行卡化里被挤成 32px 竖排(`dom.mjs` 实测),
30
+ * 改成「照片清单」小节标题 + 表下「按时间倒序」口径行。取值口径与体积退让一行未改。
31
+ *
32
+ * **#654(读页复制日志 · 本席位)**:底部 ghost 行补回**真**「复制日志」——本页以前只有
33
+ * `dataCopyArea`(只出数据那颗),日志那颗靠公共层 #336 的兜底补,那颗是点不动的禁用占位
34
+ * (#654 已撤掉那条兜底路径,见 `base-render/src/controls.ts` 的 `renderActionBar`)。
35
+ * 现在本页**自己给**:`copyArea({ data, log })` 双位齐全,日志第 4 段=本次命令原文(`commandLine()`
36
+ * 由命令层 `gallery.ts` 传入),第 3/5 段=来源与渲染时刻。可见面一字未改(日志只住复制载荷)。
37
+ */
38
+ import { renderCaliberLine, renderDataTable, renderKpiGrid } from 'base-paint/blocks';
39
+ import { renderMediaPlaceholder } from 'base-paint';
40
+ import { escapeHtml } from 'base-paint';
41
+ import { assembleDocPage } from '../shared/docPage.js';
42
+ import { copyArea, copyLog, notice } from '../shared/copyArea.js';
43
+ import { nowStamp } from '../render/receipt.js';
44
+ import { todayISO } from '../analysis/utils.js';
45
+ import { embedPhotos, embedPhotosWithinBudget } from './photoThumb.js';
46
+ import { chipRow, photoUiCss } from './photoUi.js';
47
+ /** envelope 头(值冻结对齐 cli/keys.ts ENVELOPE_VERSION/CALORIE_SKILL;测试钉死一致)。 */
48
+ const DOC_VERSION = '0.1.0';
49
+ const DOC_SKILL = 'calorie';
50
+ /** 本页 head 标题(整页模板住 `src/shared/docPage.ts`,标题走参数)。
51
+ * #526:`卡路里·身材照片` 里的 `·` 是符号顶替版面(题名不是并列语义),改空格。 */
52
+ const DOC_TITLE = '卡路里 身材照片';
53
+ /** 本页小节标题的类名(#467 先例:KPI 区那把尺,同 `viewerDoc`/`compareDoc`,不新造样式)。 */
54
+ const H2_CLASS = 'ilife-block-kpi-card-title';
55
+ /** 复制日志第 3 段后半的数据来源(前半=库文件名,由 `shared/copyArea.ts` 的 `copyLog` 拼)。
56
+ * 同族先例:`weight/review.ts` 的 `weight_log(体重复盘)`、`diet/libraryDocs.ts` 的 `食品库(在架食品)`。 */
57
+ const LOG_SOURCE = 'body_photos(本窗照片记录)';
58
+ /** 单页体积上限(字节):本票首定,供 281/282/352 复用(见 t341 文档)。
59
+ * 实测 2 张小图约 60KB(含 ~60KB 文档壳);1 MiB 直嵌仅容 3~4 张 200KB 实拍。
60
+ * #438 起本值**真的被渲染路径引用**:`buildPhotoListDoc` 逐张试嵌,超限即退让
61
+ * (横幅明示+占位态),不再无声全量内嵌(改值须同步四处引用件与 t341 体积节)。 */
62
+ export const PHOTO_LIST_PAGE_MAX_BYTES = 1024 * 1024;
63
+ /** 文件名键:库内 `photoPath` 可能与内嵌件取的名字不同(补全路径口径),两处都试。 */
64
+ function fileNameOf(photoPath) {
65
+ return photoPath.split('/').pop()?.split('\\').pop() ?? photoPath;
66
+ }
67
+ /** 未内嵌的归属:文件缺失/读取失败/文件过大(内嵌件判的),与体积预算(本件判的)。 */
68
+ function isNonBudgetSkip(e) {
69
+ return e === undefined || e.dataUri === null;
70
+ }
71
+ /** 没显示的那张:**一句话说为什么** + 一句读者能做的下一步(原来这两句串在一行里)。
72
+ * #526 收口第二轮(对抗审查必改 ①):**同一事实一页一处**。上一版这一格写的
73
+ * 「超过一页能装的量,没进这一页」与页顶那条提示块的「还有 M 张原图太大,没进这一页」
74
+ * 是同一件事说两遍(实测 10 次+缺失 8 次,H3 逐处 −2);现在**分工**:
75
+ * · 页顶提示块说**这一窗为什么只显示这些**(整批的规模 + 可选的替代操作);
76
+ * · 这一格说**哪一份文件 + 它为什么没显示 + 这一张该怎么办**(单张的原因与下一步)。
77
+ * 两句都还在,只是不再互为复读。 */
78
+ function missReason(e, skipReason) {
79
+ if (skipReason !== undefined) {
80
+ return { badge: '原图太大', why: '这张太大,一页装不下', what: '想看这一张:自己打开这份文件' };
81
+ }
82
+ const raw = e?.missing ?? '';
83
+ if (raw === '')
84
+ return { badge: '没显示', why: '这一张没能放上页面', what: '下面留着它的文件名' };
85
+ if (raw.includes('过大'))
86
+ return { badge: '原图太大', why: '这张太大,一页装不下', what: '想看这一张:自己打开这份文件' };
87
+ if (raw.includes('未配照片目录'))
88
+ return { badge: '读不到', why: '还没有设照片目录,读不到文件', what: '设好照片目录再跑一次' };
89
+ if (raw.includes('文件缺失'))
90
+ return { badge: '找不到文件', why: '照片记录还在,文件不在照片目录里', what: '把文件放回照片目录就会有图' };
91
+ return { badge: '读不出', why: '这一张读不出来', what: '下面留着它的文件名' };
92
+ }
93
+ /** 相对天数(#472 图注第三段):**装配层**按当刻「今天」现算;未到/算不出即不出这一段。 */
94
+ function relativeDays(date, today) {
95
+ const days = Math.round((Date.parse(today + 'T12:00:00Z') - Date.parse(date + 'T12:00:00Z')) / 86400000);
96
+ if (!Number.isFinite(days) || days < 0)
97
+ return '';
98
+ return days === 0 ? '今天' : days + ' 天前';
99
+ }
100
+ /** 窗口天数(页头身份行那一枚徽章):取头尾真实区间,不拿 `days` 参数冒充。 */
101
+ function windowDaysOf(g) {
102
+ const from = Date.parse(g.filters.dateFrom + 'T12:00:00Z');
103
+ const to = Date.parse(g.filters.dateTo + 'T12:00:00Z');
104
+ if (!Number.isFinite(from) || !Number.isFinite(to))
105
+ return 0;
106
+ return Math.round((to - from) / 86400000) + 1;
107
+ }
108
+ /** 一张照片的格位(#526):能看的走 `aspect-ratio` 图片框,没显示的走**同规格媒体占位件**。
109
+ * 图注=时刻(一行粗体)+ 徽章列(编号/标签/相对时间)+ 文件名小字块,三件事各有各的形状。
110
+ * 占位框里两句人话:主句「哪一份文件 + 为什么没显示」(`reason`),次句「这一张该怎么办」(`next`)。
111
+ *
112
+ * #526 收口:**逐张的复制按钮撤掉**。原来每张卡调 `copyActionHtml()`,一页 22 张就是 44 颗药丸按钮
113
+ * (其中 22 颗是公共层 `renderActionBar` 自动补的**禁用「复制日志」**,见 `controls.ts:1367` 的 #336 兜底),
114
+ * 按钮比图注还抢眼,而「复制日志」在单张卡里没有所指。文件名仍是可选中的小字块(同 #472 的「小字块」本意),
115
+ * 机器面由页尾的「复制数据」承担(envelope 逐张带 `photoPath`)。公共层的兜底按钮不在本票写集,故从**调用面**收。 */
116
+ function figureHtml(p, e, skipReason, today) {
117
+ const fileName = e?.fileName ?? fileNameOf(p.photoPath);
118
+ const shown = e?.dataUri != null;
119
+ // #526 收口第二轮:占位格改用公共层**同规格媒体占位件**(`renderMediaPlaceholder`,#525b 交付)。
120
+ // 它走与真图同一个容器装配件——同宽高比档(`4-5`,与真图格的 `aspect-ratio:4/5` 同数)、同圆角、
121
+ // 同图注槽,所以「占位卡与真图卡规格不一致」(版面档复评 ① 82/② 78 的扣分项)由代码保证不再发生。
122
+ // 格位仍由 `.phu-shot` 定(网格里等高),框体在它里面铺满(见 `photoUiCss()` 的收敛规则)。
123
+ const stage = shown
124
+ ? '<div class="phu-shot"><img src="' + e.dataUri
125
+ + '" alt="身材照 ' + p.id + '" style="max-width:100%;width:100%;height:100%;object-fit:cover" /></div>'
126
+ : (() => {
127
+ const m = missReason(e, skipReason);
128
+ return '<div class="phu-shot">' + renderMediaPlaceholder({
129
+ alt: '身材照 ' + p.id, ratio: '4-5',
130
+ reason: m.badge + ':' + fileName, next: m.why + '。' + m.what,
131
+ }) + '</div>';
132
+ })();
133
+ const rel = relativeDays(p.date, today);
134
+ const when = p.date + (p.time === null ? '' : ' ' + p.time.slice(0, 5));
135
+ const tags = p.tagList.length > 0 ? [...p.tagList] : ['无标签'];
136
+ return '<figure class="phu-card" data-id="' + p.id + '">' + stage
137
+ + '<figcaption class="phu-cap"><div class="phu-when">' + escapeHtml(when) + '</div>'
138
+ + chipRow(['编号 ' + p.id, ...tags, rel])
139
+ + '<div class="phu-file"><code>' + escapeHtml(fileName) + '</code></div>'
140
+ + '</figcaption></figure>';
141
+ }
142
+ /** 「这一窗为什么只显示这些」那一块(#472 改公共层静态提示块;#526 拆成两句、去掉分号;
143
+ * **收口再并一格**):原来「找不到文件 N 张」自占一张读数卡,加上预算提示块,首屏是「三张卡+一块」,
144
+ * 读者一眼看不出先看什么。收口把两件事并成**一块**放在页头(徽章列之后、读数卡之前)——
145
+ * 阅读顺序变成「这一页是什么(标题+徽章)→ 缺什么/怎么办(本块)→ 有多少(读数卡)→ 图」。
146
+ *
147
+ * **本块只说整批**(2026-09-15 收口第二轮,对抗审查必改 ①):每张的「为什么没显示」由它自己的
148
+ * 占位格说(`missReason`,逐张带文件名),本块说**这一窗的规模**与**可选的替代操作**。
149
+ * 这样一条事实全页只有一处,读者也不用在十几张占位卡里读十几遍同一句话。 */
150
+ function missNoticeHtml(budgetSkippedCount, missingCount) {
151
+ if (budgetSkippedCount <= 0 && missingCount <= 0)
152
+ return '';
153
+ if (budgetSkippedCount <= 0) {
154
+ return notice({ msg: missingCount + ' 张照片的文件不在照片目录里,图放不出来', detail: '把文件放回照片目录就会有图' });
155
+ }
156
+ if (missingCount <= 0) {
157
+ return notice({ msg: '还有 ' + budgetSkippedCount + ' 张原图太大,没进这一页', detail: '想全看:按标签挑,或者按日期挑一段时间' });
158
+ }
159
+ return notice({
160
+ msg: '还有 ' + budgetSkippedCount + ' 张原图太大,没进这一页',
161
+ detail: '另有 ' + missingCount + ' 张文件不在照片目录里。想全看:按标签挑,或者按日期挑一段时间',
162
+ });
163
+ }
164
+ /** 没显示的张数(同一把尺:`skipReason` 活表里的不算——那部分由提示块说)。 */
165
+ function missingOf(g, embeds, skipReason) {
166
+ return g.photos.filter((p) => {
167
+ const key = fileNameOf(p.photoPath);
168
+ return skipReason.get(key) === undefined && isNonBudgetSkip(embeds.find((x) => x.fileName === key));
169
+ });
170
+ }
171
+ /** 本窗最近一张的日期(读数卡用;行序按日期倒序,仍取最大值,不依赖行序)。 */
172
+ function latestDateOf(g) {
173
+ return g.photos.reduce((acc, p) => (p.date > acc ? p.date : acc), g.photos[0]?.date ?? '');
174
+ }
175
+ /** 读数卡(#526 重排;收口再收一格):本页显示/最近一张——一格一件事,明细位不串第二件事。
176
+ * 「找不到文件 N 张」那一格**并入页头的「缺什么」块**(`missNoticeHtml`):首屏少一张卡,
177
+ * 缺什么集中在一条里说,读数卡只留「这一页有多少、最近一张是哪天」。 */
178
+ function kpiCards(g, embeddedCount, daysSince) {
179
+ return [
180
+ { label: '本页显示', value: embeddedCount + ' 张', detail: '共找到 ' + g.totalCount + ' 张' },
181
+ {
182
+ label: '最近一张', value: latestDateOf(g),
183
+ detail: daysSince === null ? '日期算不出来' : (daysSince === 0 ? '就是今天拍的' : daysSince + ' 天前拍的'),
184
+ },
185
+ ];
186
+ }
187
+ /** 明细表:只标异常(正常行留空——「存在」是零信息值)。#526 收成四列(文件名列下屏:
188
+ * 网格里每张照片下面就是文件名),窄屏另给一行「可以左右滑」的提示。
189
+ *
190
+ * #526 收口:**表题行换成「小节标题 + 表下的口径行」**。`renderDataTable` 的 `caption` 槽在公共层
191
+ * 窄屏行卡化(`blocks.ts:1691` 那段 `@media (max-width:640px)`,t154-r3 在途)里实测被挤成
192
+ * **32×106 px 的竖排**(`dom.mjs` 读数:`caption.box.w=32`,6 行),一句话读不了;改成小节标题
193
+ * 「照片清单」+表下一行口径「按时间倒序」,两处都走公共层既有的文字形状,不写死字号内距。 */
194
+ function detailTable(g, skipReason) {
195
+ const rows = g.photos.map((p) => {
196
+ const key = fileNameOf(p.photoPath);
197
+ const status = p.fileExists === false ? '缺文件'
198
+ : (skipReason.get(key) !== undefined ? '太大没显示' : (p.fileExists === null ? '没核对' : ''));
199
+ return { id: p.id, date: p.date, tags: p.tagList.join(' '), status };
200
+ });
201
+ return '<section><h2 class="' + H2_CLASS + '">照片清单</h2>'
202
+ + renderDataTable({
203
+ columns: [
204
+ { key: 'id', label: '编号', align: 'right' },
205
+ { key: 'date', label: '日期' },
206
+ { key: 'tags', label: '标签' },
207
+ { key: 'status', label: '状态' },
208
+ ],
209
+ rows,
210
+ emptyText: '本窗无身材照',
211
+ })
212
+ + renderCaliberLine('按时间倒序') + '</section>';
213
+ }
214
+ /** 复制区(#654):**双位齐全**——数据那颗走三格式菜单(`buildDataText` 三份),日志那颗走
215
+ * `buildLogText` 六段。两段一起由 `shared/copyArea.ts` 的 `copyArea` 收口,本件只给载荷:
216
+ * · 数据位:本窗逐张(`photoPath` 照旧全量,不随体积退让截断——t438 口径);
217
+ * · 日志位:第 3 段=`calorie_data.db | 来源`,第 4 段=**本次命令原文**(`commandLine()` 由命令层给,
218
+ * 照抄可重跑),第 5 段=渲染时刻(`nowStamp()`,只读页没有「写库时刻」可用)。
219
+ * **形状别写错**:`log` 位收 `LogTextInput`=`{ envelope, copyLog }`,不是整段文本、也不是 `copyLog()`
220
+ * 的返回值——给错形状日志文本接不上,那颗按钮就落成点不动的死按钮(本仓不留死按钮)。 */
221
+ function copyAreaOf(g, command) {
222
+ const envelope = {
223
+ version: DOC_VERSION, skill: DOC_SKILL, shape: 'list', key: 'calorie.photo.list',
224
+ data: {
225
+ items: g.photos.map((p) => ({
226
+ id: p.id, date: p.date, photoPath: p.photoPath, tagList: [...p.tagList], fileExists: p.fileExists,
227
+ })),
228
+ total: g.totalCount,
229
+ },
230
+ };
231
+ return copyArea({
232
+ data: { envelope },
233
+ log: {
234
+ envelope,
235
+ copyLog: copyLog({ command, source: LOG_SOURCE, actionAt: nowStamp(), version: DOC_VERSION }),
236
+ },
237
+ });
238
+ }
239
+ function contentOf(g, embeds, skipReason, today, command) {
240
+ const byName = new Map(embeds.map((e) => [e.fileName, e]));
241
+ const embeddedCount = embeds.filter((e) => e.dataUri !== null).length;
242
+ const missingCount = missingOf(g, embeds, skipReason).length;
243
+ const win = windowDaysOf(g);
244
+ const parts = [photoUiCss()];
245
+ parts.push(chipRow([g.filters.tag ? '标签 ' + g.filters.tag : '全部标签', win > 0 ? '近 ' + win + ' 天' : '']));
246
+ // 阅读顺序(收口定):① 这一页是什么=标题+徽章列;② 缺什么/怎么办=这一块;③ 有多少=读数卡;④ 图。
247
+ parts.push(missNoticeHtml(skipReason.size, missingCount));
248
+ parts.push(renderKpiGrid(kpiCards(g, embeddedCount, g.daysSinceLast)));
249
+ parts.push('<div class="phu-grid">' + g.photos.map((p) => {
250
+ const key = fileNameOf(p.photoPath);
251
+ return figureHtml(p, byName.get(key), skipReason.get(key), today);
252
+ }).join('') + '</div>');
253
+ parts.push(detailTable(g, skipReason));
254
+ parts.push('<div class="phu-scroll-hint">表格宽,手机上按住左右滑可以看全</div>');
255
+ parts.push(copyAreaOf(g, command));
256
+ return parts.join('');
257
+ }
258
+ /** 看身材照整页:完整文档(doctype 起、charset、版面、复制区)+按预算内嵌+缺失明示。
259
+ * #472:眉标(内部命令名+内部词「域」)整行去掉;相对天数按当刻「今天」现算(`todayISO()`)。
260
+ * #526:标题去掉 `·`(张数改由身份徽章之外的读数卡说),副标题并入身份徽章行。
261
+ * #654:`command`=本次命令原文(命令层 `gallery.ts` 的 `commandLine()` 派生),进复制日志第 4 段。 */
262
+ export function buildPhotoListDoc(g, photosDir, command) {
263
+ const today = todayISO();
264
+ const shell = (content) => assembleDocPage({
265
+ docTitle: DOC_TITLE,
266
+ title: '看身材照',
267
+ eyebrow: '',
268
+ subtitle: null,
269
+ content,
270
+ charts: false,
271
+ // #526 收口:接上 #525 的页面级移动端配方(`viewport-fit=cover`/安全区/44px 触摸区/
272
+ // 窄屏字号下限与表格卡片化/页内定位)。不传即老路,本票传真——用户第 2 条要的就是它。
273
+ pageUi: true,
274
+ });
275
+ // 两步:先算**不含任何内嵌字节**的页面底子,再把剩下的预算按顺序分给逐张照片。
276
+ const baseBytes = Buffer.byteLength(shell(contentOf(g, embedPhotos(null, g.photos), new Map(), today, command)), 'utf8');
277
+ const picks = embedPhotosWithinBudget(photosDir ?? null, g.photos, baseBytes, PHOTO_LIST_PAGE_MAX_BYTES);
278
+ let html = shell(contentOf(g, picks.embeds, picks.skipReason, today, command));
279
+ // 兜底:底子或版面开销估偏时,逐张收回最大的内嵌(最多 3 轮)直到回到上限内。
280
+ for (let round = 0; round < 3 && Buffer.byteLength(html, 'utf8') > PHOTO_LIST_PAGE_MAX_BYTES; round += 1) {
281
+ const rest = picks.embeds.filter((e) => e.dataUri !== null && !picks.skipReason.has(e.fileName))
282
+ .sort((a, b) => (b.bytes ?? 0) - (a.bytes ?? 0));
283
+ if (rest.length === 0)
284
+ break;
285
+ const victim = rest[0];
286
+ picks.skipReason.set(victim.fileName, '体积预算未内嵌');
287
+ html = shell(contentOf(g, picks.embeds, picks.skipReason, today, command));
288
+ }
289
+ return html;
290
+ }
291
+ //# sourceMappingURL=galleryDoc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"galleryDoc.js","sourceRoot":"","sources":["../../src/photo/galleryDoc.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /** 写死上限:帧数下限 2/体积上限 512000B/画布边上限 64px/默认 32px/帧延时 50cs。 */
2
+ export declare const GIF_LIMITS: {
3
+ readonly minFrames: 2;
4
+ readonly maxBytes: 512000;
5
+ readonly maxEdge: 64;
6
+ readonly defaultEdge: 32;
7
+ readonly delayCs: 50;
8
+ };
9
+ export interface GifSynthOptions {
10
+ width?: number;
11
+ height?: number;
12
+ delayCs?: number;
13
+ }
14
+ export interface GifSynthResult {
15
+ outPath: string;
16
+ bytes: number;
17
+ width: number;
18
+ height: number;
19
+ frames: number;
20
+ }
21
+ /**
22
+ * 2 张以上输入 → 可播放 GIF(帧数=输入数,≥2)。
23
+ * 输入缺失/空文件即抛;输出目录自动建;超体积上限即抛。
24
+ */
25
+ export declare function synthesizeGifFromPhotos(inputPaths: string[], outPath: string, opts?: GifSynthOptions): GifSynthResult;
26
+ /** 按 GIF 块结构计帧数:逐块跳过扩展/图像数据子块,只数 0x2C 图像描述符。 */
27
+ export declare function countGifFrames(data: Uint8Array): number;
28
+ //# sourceMappingURL=gif.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gif.d.ts","sourceRoot":"","sources":["../../src/photo/gif.ts"],"names":[],"mappings":"AAaA,4DAA4D;AAC5D,eAAO,MAAM,UAAU;;;;;;CAMb,CAAC;AAEX,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAqHD;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,EAAE,EACpB,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,eAAoB,GACzB,cAAc,CAoEhB;AAED,gDAAgD;AAChD,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CA0CvD"}
@@ -0,0 +1,281 @@
1
+ /** 身材照片 GIF 合成件(HELP 一级分组「身材照片」下一级「生成GIF」· #284 能力证真)。
2
+ *
3
+ * 零图像依赖的纯 JS 实现:只用 `node:fs`/`node:path` 读输入、拼 GIF89a 容器,
4
+ * 不引任何图像库(sharp/jimp/canvas 一律不碰),照抄即跑、原生坏可移植。
5
+ * 本票只证容器合成能力:输入 2 张真照片 → 输出可播放的多帧 GIF(实心帧,
6
+ * 每帧颜色由对应输入字节哈希派生,故不同照片产出不同字节)。
7
+ *
8
+ * 上限(见 t284 文档):实心占位帧,非像素级转码;真 JPEG→GIF 光栅转码需
9
+ * JPEG 解码器,不在本票射程。 canvas 边按输入嗅探尺寸收敛(上限 64px)。
10
+ */
11
+ import { mkdirSync, readFileSync, writeFileSync } from 'node:fs';
12
+ import { dirname } from 'node:path';
13
+ /** 写死上限:帧数下限 2/体积上限 512000B/画布边上限 64px/默认 32px/帧延时 50cs。 */
14
+ export const GIF_LIMITS = {
15
+ minFrames: 2,
16
+ maxBytes: 512000,
17
+ maxEdge: 64,
18
+ defaultEdge: 32,
19
+ delayCs: 50,
20
+ };
21
+ function hashToRgb(data, seed) {
22
+ let h = (2166136261 ^ seed) >>> 0;
23
+ const n = Math.min(data.length, 4096);
24
+ for (let i = 0; i < n; i += 1) {
25
+ h ^= data[i];
26
+ h = Math.imul(h, 16777619);
27
+ }
28
+ const r = (h >>> 16) & 0xff;
29
+ const g = (h >>> 8) & 0xff;
30
+ const b = h & 0xff;
31
+ if (r === 0 && g === 0 && b === 0)
32
+ return [200, 30, 30];
33
+ if (r === 255 && g === 255 && b === 255)
34
+ return [30, 90, 200];
35
+ return [r, g, b];
36
+ }
37
+ /** 嗅探输入尺寸:PNG 读 IHDR/JPEG 扫 SOF0–SOF3;失败回 null(调用方落默认)。 */
38
+ function sniffDimensions(data) {
39
+ if (data.length >= 24 && data[0] === 0x89 && data[1] === 0x50 && data[2] === 0x4e && data[3] === 0x47) {
40
+ const w = (data[16] << 24) | (data[17] << 16) | (data[18] << 8) | data[19];
41
+ const h = (data[20] << 24) | (data[21] << 16) | (data[22] << 8) | data[23];
42
+ if (Number.isInteger(w) && Number.isInteger(h) && w > 0 && h > 0)
43
+ return { w, h };
44
+ return null;
45
+ }
46
+ if (data.length >= 4 && data[0] === 0xff && data[1] === 0xd8) {
47
+ let i = 2;
48
+ while (i + 8 < data.length) {
49
+ if (data[i] !== 0xff) {
50
+ i += 1;
51
+ continue;
52
+ }
53
+ const marker = data[i + 1];
54
+ if (marker === 0xd8 || marker === 0xd9 || (marker >= 0xd0 && marker <= 0xd7) || marker === 0x01) {
55
+ i += 2;
56
+ continue;
57
+ }
58
+ const len = (data[i + 2] << 8) | data[i + 3];
59
+ if (len < 2 || i + 1 + len >= data.length)
60
+ break;
61
+ if ((marker >= 0xc0 && marker <= 0xc3) || (marker >= 0xc5 && marker <= 0xc7) || (marker >= 0xc9 && marker <= 0xcb) || (marker >= 0xcd && marker <= 0xcf)) {
62
+ const h = (data[i + 5] << 8) | data[i + 6];
63
+ const w = (data[i + 7] << 8) | data[i + 8];
64
+ if (w > 0 && h > 0)
65
+ return { w, h };
66
+ return null;
67
+ }
68
+ i += 2 + len;
69
+ }
70
+ return null;
71
+ }
72
+ return null;
73
+ }
74
+ function clampEdge(v) {
75
+ if (!Number.isInteger(v) || v < 1)
76
+ return GIF_LIMITS.defaultEdge;
77
+ return Math.min(Math.max(v, 2), GIF_LIMITS.maxEdge);
78
+ }
79
+ /** GIF LZW 压缩(minCodeSize=2,4 色):CLEAR 开头、EOI 结尾,LSB 先行打包。 */
80
+ function lzwCompress(indices, minCodeSize) {
81
+ if (indices.length === 0)
82
+ throw new Error('LZW 输入为空');
83
+ const clear = 1 << minCodeSize;
84
+ const eoi = clear + 1;
85
+ let codeSize = minCodeSize + 1;
86
+ let nextCode = eoi + 1;
87
+ let dict = new Map();
88
+ const out = [];
89
+ let acc = 0;
90
+ let bits = 0;
91
+ const emit = (code) => {
92
+ acc |= code << bits;
93
+ bits += codeSize;
94
+ while (bits >= 8) {
95
+ out.push(acc & 0xff);
96
+ acc >>= 8;
97
+ bits -= 8;
98
+ }
99
+ };
100
+ const keyOf = (seq) => seq.join(',');
101
+ emit(clear);
102
+ let w = [indices[0]];
103
+ for (let i = 1; i < indices.length; i += 1) {
104
+ const k = indices[i];
105
+ const wk = [...w, k];
106
+ const wkKey = keyOf(wk);
107
+ if (dict.has(wkKey)) {
108
+ w = wk;
109
+ continue;
110
+ }
111
+ const wKey = keyOf(w);
112
+ emit(w.length === 1 ? w[0] : dict.get(wKey));
113
+ dict.set(wkKey, nextCode);
114
+ nextCode += 1;
115
+ if (nextCode === (1 << codeSize) && codeSize < 12)
116
+ codeSize += 1;
117
+ if (nextCode > 4095) {
118
+ emit(clear);
119
+ dict = new Map();
120
+ codeSize = minCodeSize + 1;
121
+ nextCode = eoi + 1;
122
+ }
123
+ w = [k];
124
+ }
125
+ const wKey = keyOf(w);
126
+ emit(w.length === 1 ? w[0] : dict.get(wKey));
127
+ emit(eoi);
128
+ if (bits > 0)
129
+ out.push(acc & 0xff);
130
+ return Uint8Array.from(out);
131
+ }
132
+ function pushU16LE(out, v) {
133
+ out.push(v & 0xff, (v >> 8) & 0xff);
134
+ }
135
+ function pushSubBlocks(out, data) {
136
+ let i = 0;
137
+ while (i < data.length) {
138
+ const n = Math.min(255, data.length - i);
139
+ out.push(n);
140
+ for (let j = 0; j < n; j += 1)
141
+ out.push(data[i + j]);
142
+ i += n;
143
+ }
144
+ out.push(0);
145
+ }
146
+ /**
147
+ * 2 张以上输入 → 可播放 GIF(帧数=输入数,≥2)。
148
+ * 输入缺失/空文件即抛;输出目录自动建;超体积上限即抛。
149
+ */
150
+ export function synthesizeGifFromPhotos(inputPaths, outPath, opts = {}) {
151
+ if (inputPaths.length < GIF_LIMITS.minFrames) {
152
+ throw new Error('至少需要 ' + GIF_LIMITS.minFrames + ' 张照片,收到 ' + inputPaths.length + ' 张');
153
+ }
154
+ const datas = inputPaths.map((p) => {
155
+ let buf;
156
+ try {
157
+ buf = new Uint8Array(readFileSync(p));
158
+ }
159
+ catch {
160
+ throw new Error('读不到输入照片:' + p);
161
+ }
162
+ if (buf.length === 0)
163
+ throw new Error('输入照片为空文件:' + p);
164
+ return buf;
165
+ });
166
+ let width = opts.width;
167
+ let height = opts.height;
168
+ if (width === undefined || height === undefined) {
169
+ const sniffed = datas.map(sniffDimensions).filter((d) => d !== null);
170
+ if (sniffed.length > 0) {
171
+ const ws = sniffed.map((d) => d.w).sort((a, b) => a - b);
172
+ const hs = sniffed.map((d) => d.h).sort((a, b) => a - b);
173
+ width ??= ws[0];
174
+ height ??= hs[0];
175
+ }
176
+ width ??= GIF_LIMITS.defaultEdge;
177
+ height ??= GIF_LIMITS.defaultEdge;
178
+ }
179
+ const W = clampEdge(width);
180
+ const H = clampEdge(height);
181
+ const delay = Number.isInteger(opts.delayCs) && opts.delayCs >= 0 ? opts.delayCs : GIF_LIMITS.delayCs;
182
+ const rgb1 = hashToRgb(datas[0], 1);
183
+ let rgb2 = hashToRgb(datas[1], 2);
184
+ if (rgb1[0] === rgb2[0] && rgb1[1] === rgb2[1] && rgb1[2] === rgb2[2])
185
+ rgb2 = [(rgb2[0] + 70) % 256, rgb2[1], (rgb2[2] + 130) % 256];
186
+ const out = [];
187
+ for (const c of [0x47, 0x49, 0x46, 0x38, 0x39, 0x61])
188
+ out.push(c);
189
+ pushU16LE(out, W);
190
+ pushU16LE(out, H);
191
+ out.push(0xf1, 0x00, 0x00);
192
+ out.push(0, 0, 0, rgb1[0], rgb1[1], rgb1[2], rgb2[0], rgb2[1], rgb2[2], 255, 255, 255);
193
+ for (const c of [0x21, 0xff, 0x0b])
194
+ out.push(c);
195
+ for (const c of 'NETSCAPE2.0')
196
+ out.push(c.charCodeAt(0));
197
+ out.push(0x03, 0x01, 0x00, 0x00, 0x00);
198
+ const frames = datas.length;
199
+ for (let f = 0; f < frames; f += 1) {
200
+ const idx = (f % 2) + 1;
201
+ out.push(0x21, 0xf9, 0x04, 0x08);
202
+ pushU16LE(out, delay);
203
+ out.push(idx, 0x00);
204
+ out.push(0x2c);
205
+ pushU16LE(out, 0);
206
+ pushU16LE(out, 0);
207
+ pushU16LE(out, W);
208
+ pushU16LE(out, H);
209
+ out.push(0x00);
210
+ const pixels = new Uint8Array(W * H).fill(idx);
211
+ const minCode = 2;
212
+ const comp = lzwCompress(pixels, minCode);
213
+ out.push(minCode);
214
+ pushSubBlocks(out, comp);
215
+ }
216
+ out.push(0x3b);
217
+ const bytes = Uint8Array.from(out);
218
+ if (bytes.length > GIF_LIMITS.maxBytes) {
219
+ throw new Error('合成 GIF 超体积上限:' + bytes.length + ' > ' + GIF_LIMITS.maxBytes);
220
+ }
221
+ mkdirSync(dirname(outPath), { recursive: true });
222
+ writeFileSync(outPath, bytes);
223
+ return { outPath, bytes: bytes.length, width: W, height: H, frames };
224
+ }
225
+ /** 按 GIF 块结构计帧数:逐块跳过扩展/图像数据子块,只数 0x2C 图像描述符。 */
226
+ export function countGifFrames(data) {
227
+ if (data.length < 13)
228
+ throw new Error('非 GIF:过短');
229
+ const head = String.fromCharCode(data[0], data[1], data[2], data[3], data[4], data[5]);
230
+ if (head !== 'GIF87a' && head !== 'GIF89a')
231
+ throw new Error('非 GIF 魔数:' + head);
232
+ const packed = data[10];
233
+ let pos = 6 + 7;
234
+ if ((packed & 0x80) !== 0) {
235
+ const gct = 2 << (packed & 0x07);
236
+ pos += gct * 3;
237
+ }
238
+ const skipSubs = () => {
239
+ while (true) {
240
+ if (pos >= data.length)
241
+ throw new Error('GIF 截断(子块)');
242
+ const n = data[pos];
243
+ pos += 1;
244
+ if (n === 0)
245
+ return;
246
+ pos += n;
247
+ }
248
+ };
249
+ let frames = 0;
250
+ while (true) {
251
+ if (pos >= data.length)
252
+ throw new Error('GIF 截断(缺 trailer)');
253
+ const b = data[pos];
254
+ pos += 1;
255
+ if (b === 0x3b)
256
+ return frames;
257
+ if (b === 0x21) {
258
+ if (pos >= data.length)
259
+ throw new Error('GIF 截断(扩展)');
260
+ pos += 1; // 只跳标号;块大小+数据由 skipSubs 按子块结构跳(含应用扩展 11 字节标识)
261
+ skipSubs();
262
+ }
263
+ else if (b === 0x2c) {
264
+ frames += 1;
265
+ if (pos + 9 > data.length)
266
+ throw new Error('GIF 截断(图像描述符)');
267
+ const lpacked = data[pos + 8];
268
+ pos += 9;
269
+ if ((lpacked & 0x80) !== 0)
270
+ pos += (2 << (lpacked & 0x07)) * 3;
271
+ if (pos >= data.length)
272
+ throw new Error('GIF 截断(LZW 最小码)');
273
+ pos += 1;
274
+ skipSubs();
275
+ }
276
+ else {
277
+ throw new Error('GIF 未知块:0x' + b.toString(16));
278
+ }
279
+ }
280
+ }
281
+ //# sourceMappingURL=gif.js.map