skill-calorie 0.2.2 → 0.2.4
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.
- package/SKILL.md +477 -123
- package/dist/.gen-inputs.json +170 -0
- package/dist/analysis/commands.d.ts +62 -0
- package/dist/analysis/commands.d.ts.map +1 -0
- package/dist/analysis/commands.js +386 -0
- package/dist/analysis/commands.js.map +1 -0
- package/dist/analysis/contraindications.d.ts.map +1 -1
- package/dist/analysis/contraindications.js +16 -12
- package/dist/analysis/contraindications.js.map +1 -1
- package/dist/analysis/cross.d.ts +3 -0
- package/dist/analysis/cross.d.ts.map +1 -1
- package/dist/analysis/cross.js +57 -29
- package/dist/analysis/cross.js.map +1 -1
- package/dist/analysis/dashboard.d.ts.map +1 -1
- package/dist/analysis/dashboard.js +3 -2
- package/dist/analysis/dashboard.js.map +1 -1
- package/dist/analysis/exerciseReview.js +1 -1
- package/dist/analysis/exerciseReview.js.map +1 -1
- package/dist/analysis/healthPlate.d.ts +21 -0
- package/dist/analysis/healthPlate.d.ts.map +1 -0
- package/dist/analysis/healthPlate.js +41 -0
- package/dist/analysis/healthPlate.js.map +1 -0
- package/dist/analysis/historyStore.d.ts +30 -0
- package/dist/analysis/historyStore.d.ts.map +1 -0
- package/dist/analysis/historyStore.js +32 -0
- package/dist/analysis/historyStore.js.map +1 -0
- package/dist/analysis/index.d.ts +23 -0
- package/dist/analysis/index.d.ts.map +1 -0
- package/dist/analysis/index.js +23 -0
- package/dist/analysis/index.js.map +1 -0
- package/dist/analysis/multiTrend.d.ts +67 -0
- package/dist/analysis/multiTrend.d.ts.map +1 -0
- package/dist/analysis/multiTrend.js +106 -0
- package/dist/analysis/multiTrend.js.map +1 -0
- package/dist/analysis/multiTrendPage.d.ts +4 -0
- package/dist/analysis/multiTrendPage.d.ts.map +1 -0
- package/dist/analysis/multiTrendPage.js +502 -0
- package/dist/analysis/multiTrendPage.js.map +1 -0
- package/dist/analysis/reportDoc.d.ts +12 -0
- package/dist/analysis/reportDoc.d.ts.map +1 -0
- package/dist/analysis/reportDoc.js +244 -0
- package/dist/analysis/reportDoc.js.map +1 -0
- package/dist/analysis/reportDocBmi.d.ts +4 -0
- package/dist/analysis/reportDocBmi.d.ts.map +1 -0
- package/dist/analysis/reportDocBmi.js +104 -0
- package/dist/analysis/reportDocBmi.js.map +1 -0
- package/dist/analysis/reportDocParts.d.ts +77 -0
- package/dist/analysis/reportDocParts.d.ts.map +1 -0
- package/dist/analysis/reportDocParts.js +249 -0
- package/dist/analysis/reportDocParts.js.map +1 -0
- package/dist/analysis/reportDocScore.d.ts +8 -0
- package/dist/analysis/reportDocScore.d.ts.map +1 -0
- package/dist/analysis/reportDocScore.js +223 -0
- package/dist/analysis/reportDocScore.js.map +1 -0
- package/dist/analysis/reportDocScoreSeries.d.ts +3 -0
- package/dist/analysis/reportDocScoreSeries.d.ts.map +1 -0
- package/dist/analysis/reportDocScoreSeries.js +27 -0
- package/dist/analysis/reportDocScoreSeries.js.map +1 -0
- package/dist/analysis/reportDocTracked.d.ts +10 -0
- package/dist/analysis/reportDocTracked.d.ts.map +1 -0
- package/dist/analysis/reportDocTracked.js +195 -0
- package/dist/analysis/reportDocTracked.js.map +1 -0
- package/dist/analysis/reportPlate.d.ts +163 -0
- package/dist/analysis/reportPlate.d.ts.map +1 -0
- package/dist/analysis/reportPlate.js +251 -0
- package/dist/analysis/reportPlate.js.map +1 -0
- package/dist/analysis/routes.d.ts +18 -0
- package/dist/analysis/routes.d.ts.map +1 -0
- package/dist/analysis/routes.js +178 -0
- package/dist/analysis/routes.js.map +1 -0
- package/dist/analysis/series.d.ts +31 -6
- package/dist/analysis/series.d.ts.map +1 -1
- package/dist/analysis/series.js +124 -27
- package/dist/analysis/series.js.map +1 -1
- package/dist/analysis/simulate.d.ts.map +1 -1
- package/dist/analysis/simulate.js +17 -6
- package/dist/analysis/simulate.js.map +1 -1
- package/dist/analysis/simulate2.d.ts.map +1 -1
- package/dist/analysis/simulate2.js +43 -11
- package/dist/analysis/simulate2.js.map +1 -1
- package/dist/analysis/trend.d.ts +9 -1
- package/dist/analysis/trend.d.ts.map +1 -1
- package/dist/analysis/trend.js +24 -8
- package/dist/analysis/trend.js.map +1 -1
- package/dist/analysis/utils.d.ts +50 -1
- package/dist/analysis/utils.d.ts.map +1 -1
- package/dist/analysis/utils.js +73 -1
- package/dist/analysis/utils.js.map +1 -1
- package/dist/body/bodyDocs.d.ts +4 -0
- package/dist/body/bodyDocs.d.ts.map +1 -0
- package/dist/body/bodyDocs.js +284 -0
- package/dist/body/bodyDocs.js.map +1 -0
- package/dist/body/bodyPlate.d.ts +145 -0
- package/dist/body/bodyPlate.d.ts.map +1 -0
- package/dist/body/bodyPlate.js +243 -0
- package/dist/body/bodyPlate.js.map +1 -0
- package/dist/body/bodyReadUi.d.ts +47 -0
- package/dist/body/bodyReadUi.d.ts.map +1 -0
- package/dist/body/bodyReadUi.js +164 -0
- package/dist/body/bodyReadUi.js.map +1 -0
- package/dist/body/commands.d.ts +29 -0
- package/dist/body/commands.d.ts.map +1 -0
- package/dist/body/commands.js +18 -0
- package/dist/body/commands.js.map +1 -0
- package/dist/body/compare.d.ts +62 -0
- package/dist/body/compare.d.ts.map +1 -0
- package/dist/body/compare.js +162 -0
- package/dist/body/compare.js.map +1 -0
- package/dist/body/compareCompositionDoc.d.ts +3 -0
- package/dist/body/compareCompositionDoc.d.ts.map +1 -0
- package/dist/body/compareCompositionDoc.js +99 -0
- package/dist/body/compareCompositionDoc.js.map +1 -0
- package/dist/body/compareMeasureDoc.d.ts +3 -0
- package/dist/body/compareMeasureDoc.d.ts.map +1 -0
- package/dist/body/compareMeasureDoc.js +91 -0
- package/dist/body/compareMeasureDoc.js.map +1 -0
- package/dist/body/compareUi.d.ts +12 -0
- package/dist/body/compareUi.d.ts.map +1 -0
- package/dist/body/compareUi.js +27 -0
- package/dist/body/compareUi.js.map +1 -0
- package/dist/body/index.d.ts +21 -0
- package/dist/body/index.d.ts.map +1 -0
- package/dist/body/index.js +22 -0
- package/dist/body/index.js.map +1 -0
- package/dist/body/log.d.ts +29 -0
- package/dist/body/log.d.ts.map +1 -0
- package/dist/body/log.js +196 -0
- package/dist/body/log.js.map +1 -0
- package/dist/body/receipt.d.ts +52 -0
- package/dist/body/receipt.d.ts.map +1 -0
- package/dist/body/receipt.js +248 -0
- package/dist/body/receipt.js.map +1 -0
- package/dist/body/receiptData.d.ts +46 -0
- package/dist/body/receiptData.d.ts.map +1 -0
- package/dist/body/receiptData.js +107 -0
- package/dist/body/receiptData.js.map +1 -0
- package/dist/body/receiptUi.d.ts +9 -0
- package/dist/body/receiptUi.d.ts.map +1 -0
- package/dist/body/receiptUi.js +75 -0
- package/dist/body/receiptUi.js.map +1 -0
- package/dist/body/remove.d.ts +21 -0
- package/dist/body/remove.d.ts.map +1 -0
- package/dist/body/remove.js +78 -0
- package/dist/body/remove.js.map +1 -0
- package/dist/body/routes.d.ts +10 -0
- package/dist/body/routes.d.ts.map +1 -0
- package/dist/body/routes.js +20 -0
- package/dist/body/routes.js.map +1 -0
- package/dist/body/view.d.ts +21 -0
- package/dist/body/view.d.ts.map +1 -0
- package/dist/body/view.js +50 -0
- package/dist/body/view.js.map +1 -0
- package/dist/body/wizard.d.ts +14 -0
- package/dist/body/wizard.d.ts.map +1 -0
- package/dist/body/wizard.js +21 -0
- package/dist/body/wizard.js.map +1 -0
- package/dist/body/wizardDocs.d.ts +4 -0
- package/dist/body/wizardDocs.d.ts.map +1 -0
- package/dist/body/wizardDocs.js +260 -0
- package/dist/body/wizardDocs.js.map +1 -0
- package/dist/body/wizardPlate.d.ts +146 -0
- package/dist/body/wizardPlate.d.ts.map +1 -0
- package/dist/body/wizardPlate.js +260 -0
- package/dist/body/wizardPlate.js.map +1 -0
- package/dist/body/wizardPrompt.d.ts +52 -0
- package/dist/body/wizardPrompt.d.ts.map +1 -0
- package/dist/body/wizardPrompt.js +146 -0
- package/dist/body/wizardPrompt.js.map +1 -0
- package/dist/body/wizardUi.d.ts +11 -0
- package/dist/body/wizardUi.d.ts.map +1 -0
- package/dist/body/wizardUi.js +35 -0
- package/dist/body/wizardUi.js.map +1 -0
- package/dist/cli/cmd_read.d.ts +7 -21
- package/dist/cli/cmd_read.d.ts.map +1 -1
- package/dist/cli/cmd_read.js +45 -1044
- package/dist/cli/cmd_read.js.map +1 -1
- package/dist/cli/delivery.d.ts +34 -0
- package/dist/cli/delivery.d.ts.map +1 -0
- package/dist/cli/delivery.js +223 -0
- package/dist/cli/delivery.js.map +1 -0
- package/dist/cli/keys.d.ts +305 -163
- package/dist/cli/keys.d.ts.map +1 -1
- package/dist/cli/keys.js +101 -74
- package/dist/cli/keys.js.map +1 -1
- package/dist/cli/legacy/index.d.ts +25 -0
- package/dist/cli/legacy/index.d.ts.map +1 -0
- package/dist/cli/legacy/index.js +37 -0
- package/dist/cli/legacy/index.js.map +1 -0
- package/dist/cli/legacy/routes/index.d.ts +8 -0
- package/dist/cli/legacy/routes/index.d.ts.map +1 -0
- package/dist/cli/legacy/routes/index.js +23 -0
- package/dist/cli/legacy/routes/index.js.map +1 -0
- package/dist/cli/legacy/routes/scene-01.d.ts +12 -0
- package/dist/cli/legacy/routes/scene-01.d.ts.map +1 -0
- package/dist/cli/legacy/routes/scene-01.js +2 -0
- package/dist/cli/legacy/routes/scene-01.js.map +1 -0
- package/dist/cli/legacy/routes/scene-02.d.ts +18 -0
- package/dist/cli/legacy/routes/scene-02.d.ts.map +1 -0
- package/dist/cli/legacy/routes/scene-02.js +2 -0
- package/dist/cli/legacy/routes/scene-02.js.map +1 -0
- package/dist/cli/legacy/routes/scene-03.d.ts +13 -0
- package/dist/cli/legacy/routes/scene-03.d.ts.map +1 -0
- package/dist/cli/legacy/routes/scene-03.js +2 -0
- package/dist/cli/legacy/routes/scene-03.js.map +1 -0
- package/dist/cli/legacy/routes/scene-04.d.ts +10 -0
- package/dist/cli/legacy/routes/scene-04.d.ts.map +1 -0
- package/dist/cli/legacy/routes/scene-04.js +2 -0
- package/dist/cli/legacy/routes/scene-04.js.map +1 -0
- package/dist/cli/legacy/routes/scene-05.d.ts +10 -0
- package/dist/cli/legacy/routes/scene-05.d.ts.map +1 -0
- package/dist/cli/legacy/routes/scene-05.js +2 -0
- package/dist/cli/legacy/routes/scene-05.js.map +1 -0
- package/dist/cli/legacy/routes/scene-06.d.ts +10 -0
- package/dist/cli/legacy/routes/scene-06.d.ts.map +1 -0
- package/dist/cli/legacy/routes/scene-06.js +2 -0
- package/dist/cli/legacy/routes/scene-06.js.map +1 -0
- package/dist/cli/legacy/routes/scene-07.d.ts +10 -0
- package/dist/cli/legacy/routes/scene-07.d.ts.map +1 -0
- package/dist/cli/legacy/routes/scene-07.js +2 -0
- package/dist/cli/legacy/routes/scene-07.js.map +1 -0
- package/dist/cli/legacy/routes/scene-08.d.ts +12 -0
- package/dist/cli/legacy/routes/scene-08.d.ts.map +1 -0
- package/dist/cli/legacy/routes/scene-08.js +2 -0
- package/dist/cli/legacy/routes/scene-08.js.map +1 -0
- package/dist/cli/legacy/routes/scene-09.d.ts +12 -0
- package/dist/cli/legacy/routes/scene-09.d.ts.map +1 -0
- package/dist/cli/legacy/routes/scene-09.js +2 -0
- package/dist/cli/legacy/routes/scene-09.js.map +1 -0
- package/dist/cli/legacy/routes/scene-10.d.ts +10 -0
- package/dist/cli/legacy/routes/scene-10.d.ts.map +1 -0
- package/dist/cli/legacy/routes/scene-10.js +2 -0
- package/dist/cli/legacy/routes/scene-10.js.map +1 -0
- package/dist/cli/legacy/scene-01.d.ts +13 -0
- package/dist/cli/legacy/scene-01.d.ts.map +1 -0
- package/dist/cli/legacy/scene-01.js +2 -0
- package/dist/cli/legacy/scene-01.js.map +1 -0
- package/dist/cli/legacy/scene-02.d.ts +12 -0
- package/dist/cli/legacy/scene-02.d.ts.map +1 -0
- package/dist/cli/legacy/scene-02.js +2 -0
- package/dist/cli/legacy/scene-02.js.map +1 -0
- package/dist/cli/legacy/scene-03.d.ts +14 -0
- package/dist/cli/legacy/scene-03.d.ts.map +1 -0
- package/dist/cli/legacy/scene-03.js +2 -0
- package/dist/cli/legacy/scene-03.js.map +1 -0
- package/dist/cli/legacy/scene-04.d.ts +12 -0
- package/dist/cli/legacy/scene-04.d.ts.map +1 -0
- package/dist/cli/legacy/scene-04.js +2 -0
- package/dist/cli/legacy/scene-04.js.map +1 -0
- package/dist/cli/legacy/scene-05.d.ts +14 -0
- package/dist/cli/legacy/scene-05.d.ts.map +1 -0
- package/dist/cli/legacy/scene-05.js +2 -0
- package/dist/cli/legacy/scene-05.js.map +1 -0
- package/dist/cli/legacy/scene-06.d.ts +15 -0
- package/dist/cli/legacy/scene-06.d.ts.map +1 -0
- package/dist/cli/legacy/scene-06.js +2 -0
- package/dist/cli/legacy/scene-06.js.map +1 -0
- package/dist/cli/legacy/scene-07.d.ts +15 -0
- package/dist/cli/legacy/scene-07.d.ts.map +1 -0
- package/dist/cli/legacy/scene-07.js +2 -0
- package/dist/cli/legacy/scene-07.js.map +1 -0
- package/dist/cli/legacy/scene-08.d.ts +13 -0
- package/dist/cli/legacy/scene-08.d.ts.map +1 -0
- package/dist/cli/legacy/scene-08.js +2 -0
- package/dist/cli/legacy/scene-08.js.map +1 -0
- package/dist/cli/legacy/scene-09.d.ts +13 -0
- package/dist/cli/legacy/scene-09.d.ts.map +1 -0
- package/dist/cli/legacy/scene-09.js +2 -0
- package/dist/cli/legacy/scene-09.js.map +1 -0
- package/dist/cli/legacy/scene-10.d.ts +13 -0
- package/dist/cli/legacy/scene-10.d.ts.map +1 -0
- package/dist/cli/legacy/scene-10.js +2 -0
- package/dist/cli/legacy/scene-10.js.map +1 -0
- package/dist/cli/legacy/types.d.ts +16 -0
- package/dist/cli/legacy/types.d.ts.map +1 -0
- package/dist/cli/legacy/types.js +2 -0
- package/dist/cli/legacy/types.js.map +1 -0
- package/dist/cli/readArgs.d.ts +21 -0
- package/dist/cli/readArgs.d.ts.map +1 -0
- package/dist/cli/readArgs.js +72 -0
- package/dist/cli/readArgs.js.map +1 -0
- package/dist/cli/registry.d.ts +12 -0
- package/dist/cli/registry.d.ts.map +1 -0
- package/dist/cli/registry.js +38 -0
- package/dist/cli/registry.js.map +1 -0
- package/dist/cli/write.d.ts +17 -15
- package/dist/cli/write.d.ts.map +1 -1
- package/dist/cli/write.js +38 -902
- package/dist/cli/write.js.map +1 -1
- package/dist/diet/commands.d.ts +37 -0
- package/dist/diet/commands.d.ts.map +1 -0
- package/dist/diet/commands.js +44 -0
- package/dist/diet/commands.js.map +1 -0
- package/dist/diet/dietEngine.d.ts +79 -0
- package/dist/diet/dietEngine.d.ts.map +1 -0
- package/dist/diet/dietEngine.js +171 -0
- package/dist/diet/dietEngine.js.map +1 -0
- package/dist/diet/dietUi.d.ts +9 -0
- package/dist/diet/dietUi.d.ts.map +1 -0
- package/dist/diet/dietUi.js +45 -0
- package/dist/diet/dietUi.js.map +1 -0
- package/dist/diet/edit.d.ts +22 -0
- package/dist/diet/edit.d.ts.map +1 -0
- package/dist/diet/edit.js +96 -0
- package/dist/diet/edit.js.map +1 -0
- package/dist/diet/fieldLabels.d.ts +5 -0
- package/dist/diet/fieldLabels.d.ts.map +1 -0
- package/dist/diet/fieldLabels.js +44 -0
- package/dist/diet/fieldLabels.js.map +1 -0
- package/dist/diet/index.d.ts +26 -0
- package/dist/diet/index.d.ts.map +1 -0
- package/dist/diet/index.js +22 -0
- package/dist/diet/index.js.map +1 -0
- package/dist/diet/library.d.ts +20 -0
- package/dist/diet/library.d.ts.map +1 -0
- package/dist/diet/library.js +52 -0
- package/dist/diet/library.js.map +1 -0
- package/dist/diet/libraryDocs.d.ts +7 -0
- package/dist/diet/libraryDocs.d.ts.map +1 -0
- package/dist/diet/libraryDocs.js +361 -0
- package/dist/diet/libraryDocs.js.map +1 -0
- package/dist/diet/libraryPlate.d.ts +41 -0
- package/dist/diet/libraryPlate.d.ts.map +1 -0
- package/dist/diet/libraryPlate.js +57 -0
- package/dist/diet/libraryPlate.js.map +1 -0
- package/dist/diet/log.d.ts +18 -0
- package/dist/diet/log.d.ts.map +1 -0
- package/dist/diet/log.js +152 -0
- package/dist/diet/log.js.map +1 -0
- package/dist/diet/nutrition.d.ts +37 -0
- package/dist/diet/nutrition.d.ts.map +1 -0
- package/dist/diet/nutrition.js +135 -0
- package/dist/diet/nutrition.js.map +1 -0
- package/dist/diet/nutritionPort.d.ts +129 -0
- package/dist/diet/nutritionPort.d.ts.map +1 -0
- package/dist/diet/nutritionPort.js +246 -0
- package/dist/diet/nutritionPort.js.map +1 -0
- package/dist/diet/nutritionPortDocs.d.ts +106 -0
- package/dist/diet/nutritionPortDocs.d.ts.map +1 -0
- package/dist/diet/nutritionPortDocs.js +651 -0
- package/dist/diet/nutritionPortDocs.js.map +1 -0
- package/dist/diet/precheck.d.ts +7 -0
- package/dist/diet/precheck.d.ts.map +1 -0
- package/dist/diet/precheck.js +194 -0
- package/dist/diet/precheck.js.map +1 -0
- package/dist/diet/precheckLabel.d.ts +4 -0
- package/dist/diet/precheckLabel.d.ts.map +1 -0
- package/dist/diet/precheckLabel.js +191 -0
- package/dist/diet/precheckLabel.js.map +1 -0
- package/dist/diet/precheckParts.d.ts +49 -0
- package/dist/diet/precheckParts.d.ts.map +1 -0
- package/dist/diet/precheckParts.js +69 -0
- package/dist/diet/precheckParts.js.map +1 -0
- package/dist/diet/precheckPort.d.ts +82 -0
- package/dist/diet/precheckPort.d.ts.map +1 -0
- package/dist/diet/precheckPort.js +176 -0
- package/dist/diet/precheckPort.js.map +1 -0
- package/dist/diet/productImport.d.ts +28 -0
- package/dist/diet/productImport.d.ts.map +1 -0
- package/dist/diet/productImport.js +152 -0
- package/dist/diet/productImport.js.map +1 -0
- package/dist/diet/productStore.d.ts +62 -0
- package/dist/diet/productStore.d.ts.map +1 -0
- package/dist/diet/productStore.js +73 -0
- package/dist/diet/productStore.js.map +1 -0
- package/dist/diet/products.d.ts +15 -0
- package/dist/diet/products.d.ts.map +1 -0
- package/dist/diet/products.js +87 -0
- package/dist/diet/products.js.map +1 -0
- package/dist/diet/ranking.d.ts +18 -0
- package/dist/diet/ranking.d.ts.map +1 -0
- package/dist/diet/ranking.js +23 -0
- package/dist/diet/ranking.js.map +1 -0
- package/dist/diet/rankingDocs.d.ts +13 -0
- package/dist/diet/rankingDocs.d.ts.map +1 -0
- package/dist/diet/rankingDocs.js +341 -0
- package/dist/diet/rankingDocs.js.map +1 -0
- package/dist/diet/rankingPlate.d.ts +42 -0
- package/dist/diet/rankingPlate.d.ts.map +1 -0
- package/dist/diet/rankingPlate.js +96 -0
- package/dist/diet/rankingPlate.js.map +1 -0
- package/dist/diet/receipt.d.ts +34 -0
- package/dist/diet/receipt.d.ts.map +1 -0
- package/dist/diet/receipt.js +371 -0
- package/dist/diet/receipt.js.map +1 -0
- package/dist/diet/review.d.ts +36 -0
- package/dist/diet/review.d.ts.map +1 -0
- package/dist/diet/review.js +152 -0
- package/dist/diet/review.js.map +1 -0
- package/dist/diet/reviewDocs.d.ts +72 -0
- package/dist/diet/reviewDocs.d.ts.map +1 -0
- package/dist/diet/reviewDocs.js +312 -0
- package/dist/diet/reviewDocs.js.map +1 -0
- package/dist/diet/routes.d.ts +12 -0
- package/dist/diet/routes.d.ts.map +1 -0
- package/dist/diet/routes.js +108 -0
- package/dist/diet/routes.js.map +1 -0
- package/dist/diet/sourceStatsDocs.d.ts +3 -0
- package/dist/diet/sourceStatsDocs.d.ts.map +1 -0
- package/dist/diet/sourceStatsDocs.js +115 -0
- package/dist/diet/sourceStatsDocs.js.map +1 -0
- package/dist/diet/today.d.ts +14 -0
- package/dist/diet/today.d.ts.map +1 -0
- package/dist/diet/today.js +87 -0
- package/dist/diet/today.js.map +1 -0
- package/dist/diet/todayDocs.d.ts +53 -0
- package/dist/diet/todayDocs.d.ts.map +1 -0
- package/dist/diet/todayDocs.js +238 -0
- package/dist/diet/todayDocs.js.map +1 -0
- package/dist/exercise/cardio.d.ts +11 -0
- package/dist/exercise/cardio.d.ts.map +1 -0
- package/dist/exercise/cardio.js +14 -0
- package/dist/exercise/cardio.js.map +1 -0
- package/dist/exercise/categoryColors.d.ts +23 -0
- package/dist/exercise/categoryColors.d.ts.map +1 -0
- package/dist/exercise/categoryColors.js +28 -0
- package/dist/exercise/categoryColors.js.map +1 -0
- package/dist/exercise/commands.d.ts +20 -0
- package/dist/exercise/commands.d.ts.map +1 -0
- package/dist/exercise/commands.js +22 -0
- package/dist/exercise/commands.js.map +1 -0
- package/dist/exercise/distribution.d.ts +11 -0
- package/dist/exercise/distribution.d.ts.map +1 -0
- package/dist/exercise/distribution.js +14 -0
- package/dist/exercise/distribution.js.map +1 -0
- package/dist/exercise/edit.d.ts +22 -0
- package/dist/exercise/edit.d.ts.map +1 -0
- package/dist/exercise/edit.js +148 -0
- package/dist/exercise/edit.js.map +1 -0
- package/dist/exercise/exerciseStore.d.ts +87 -0
- package/dist/exercise/exerciseStore.d.ts.map +1 -0
- package/dist/exercise/exerciseStore.js +287 -0
- package/dist/exercise/exerciseStore.js.map +1 -0
- package/dist/exercise/fieldLabels.d.ts +5 -0
- package/dist/exercise/fieldLabels.d.ts.map +1 -0
- package/dist/exercise/fieldLabels.js +34 -0
- package/dist/exercise/fieldLabels.js.map +1 -0
- package/dist/exercise/goal.d.ts +16 -0
- package/dist/exercise/goal.d.ts.map +1 -0
- package/dist/exercise/goal.js +46 -0
- package/dist/exercise/goal.js.map +1 -0
- package/dist/exercise/index.d.ts +22 -0
- package/dist/exercise/index.d.ts.map +1 -0
- package/dist/exercise/index.js +22 -0
- package/dist/exercise/index.js.map +1 -0
- package/dist/exercise/log.d.ts +19 -0
- package/dist/exercise/log.d.ts.map +1 -0
- package/dist/exercise/log.js +102 -0
- package/dist/exercise/log.js.map +1 -0
- package/dist/exercise/precheck.d.ts +19 -0
- package/dist/exercise/precheck.d.ts.map +1 -0
- package/dist/exercise/precheck.js +127 -0
- package/dist/exercise/precheck.js.map +1 -0
- package/dist/exercise/recap.d.ts +11 -0
- package/dist/exercise/recap.d.ts.map +1 -0
- package/dist/exercise/recap.js +14 -0
- package/dist/exercise/recap.js.map +1 -0
- package/dist/exercise/receipt.d.ts +43 -0
- package/dist/exercise/receipt.d.ts.map +1 -0
- package/dist/exercise/receipt.js +401 -0
- package/dist/exercise/receipt.js.map +1 -0
- package/dist/exercise/records.d.ts +60 -0
- package/dist/exercise/records.d.ts.map +1 -0
- package/dist/exercise/records.js +317 -0
- package/dist/exercise/records.js.map +1 -0
- package/dist/exercise/routes.d.ts +21 -0
- package/dist/exercise/routes.d.ts.map +1 -0
- package/dist/exercise/routes.js +38 -0
- package/dist/exercise/routes.js.map +1 -0
- package/dist/exercise/sportUi.d.ts +77 -0
- package/dist/exercise/sportUi.d.ts.map +1 -0
- package/dist/exercise/sportUi.js +268 -0
- package/dist/exercise/sportUi.js.map +1 -0
- package/dist/exercise/strength.d.ts +11 -0
- package/dist/exercise/strength.d.ts.map +1 -0
- package/dist/exercise/strength.js +14 -0
- package/dist/exercise/strength.js.map +1 -0
- package/dist/exercise/trend.d.ts +11 -0
- package/dist/exercise/trend.d.ts.map +1 -0
- package/dist/exercise/trend.js +14 -0
- package/dist/exercise/trend.js.map +1 -0
- package/dist/fetch/audit.d.ts +2 -0
- package/dist/fetch/audit.d.ts.map +1 -1
- package/dist/fetch/audit.js +11 -10
- package/dist/fetch/audit.js.map +1 -1
- package/dist/fetch/batch.js +1 -1
- package/dist/fetch/batch.js.map +1 -1
- package/dist/fetch/body.d.ts +104 -1
- package/dist/fetch/body.d.ts.map +1 -1
- package/dist/fetch/body.js +200 -31
- package/dist/fetch/body.js.map +1 -1
- package/dist/fetch/cli.js +11 -5
- package/dist/fetch/cli.js.map +1 -1
- package/dist/fetch/exercise.d.ts.map +1 -1
- package/dist/fetch/exercise.js +7 -3
- package/dist/fetch/exercise.js.map +1 -1
- package/dist/fetch/index.d.ts +5 -7
- package/dist/fetch/index.d.ts.map +1 -1
- package/dist/fetch/index.js +7 -6
- package/dist/fetch/index.js.map +1 -1
- package/dist/fetch/nutritionGoal.d.ts.map +1 -1
- package/dist/fetch/nutritionGoal.js +15 -4
- package/dist/fetch/nutritionGoal.js.map +1 -1
- package/dist/fetch/profile.d.ts +24 -3
- package/dist/fetch/profile.d.ts.map +1 -1
- package/dist/fetch/profile.js +43 -14
- package/dist/fetch/profile.js.map +1 -1
- package/dist/fetch/xunji-catalog.d.ts +5 -0
- package/dist/fetch/xunji-catalog.d.ts.map +1 -1
- package/dist/fetch/xunji-catalog.js +22 -1
- package/dist/fetch/xunji-catalog.js.map +1 -1
- package/dist/goal/commands.d.ts +31 -0
- package/dist/goal/commands.d.ts.map +1 -0
- package/dist/goal/commands.js +20 -0
- package/dist/goal/commands.js.map +1 -0
- package/dist/goal/goalExtraPlate.d.ts +45 -0
- package/dist/goal/goalExtraPlate.d.ts.map +1 -0
- package/dist/goal/goalExtraPlate.js +95 -0
- package/dist/goal/goalExtraPlate.js.map +1 -0
- package/dist/goal/goalHistory.d.ts +24 -0
- package/dist/goal/goalHistory.d.ts.map +1 -0
- package/dist/goal/goalHistory.js +51 -0
- package/dist/goal/goalHistory.js.map +1 -0
- package/dist/goal/goalPlate.d.ts +24 -0
- package/dist/goal/goalPlate.d.ts.map +1 -0
- package/dist/goal/goalPlate.js +34 -0
- package/dist/goal/goalPlate.js.map +1 -0
- package/dist/goal/goalPlates.d.ts +66 -0
- package/dist/goal/goalPlates.d.ts.map +1 -0
- package/dist/goal/goalPlates.js +114 -0
- package/dist/goal/goalPlates.js.map +1 -0
- package/dist/goal/goalRecommendDoc.d.ts +6 -0
- package/dist/goal/goalRecommendDoc.d.ts.map +1 -0
- package/dist/goal/goalRecommendDoc.js +107 -0
- package/dist/goal/goalRecommendDoc.js.map +1 -0
- package/dist/goal/goalStore.d.ts +56 -0
- package/dist/goal/goalStore.d.ts.map +1 -0
- package/dist/goal/goalStore.js +111 -0
- package/dist/goal/goalStore.js.map +1 -0
- package/dist/goal/goalWeightDoc.d.ts +7 -0
- package/dist/goal/goalWeightDoc.d.ts.map +1 -0
- package/dist/goal/goalWeightDoc.js +107 -0
- package/dist/goal/goalWeightDoc.js.map +1 -0
- package/dist/goal/index.d.ts +17 -0
- package/dist/goal/index.d.ts.map +1 -0
- package/dist/goal/index.js +21 -0
- package/dist/goal/index.js.map +1 -0
- package/dist/goal/nutritionGoal.d.ts +115 -0
- package/dist/goal/nutritionGoal.d.ts.map +1 -0
- package/dist/goal/nutritionGoal.js +165 -0
- package/dist/goal/nutritionGoal.js.map +1 -0
- package/dist/goal/precheck.d.ts +14 -0
- package/dist/goal/precheck.d.ts.map +1 -0
- package/dist/goal/precheck.js +213 -0
- package/dist/goal/precheck.js.map +1 -0
- package/dist/goal/read.d.ts +53 -0
- package/dist/goal/read.d.ts.map +1 -0
- package/dist/goal/read.js +154 -0
- package/dist/goal/read.js.map +1 -0
- package/dist/goal/receipt.d.ts +38 -0
- package/dist/goal/receipt.d.ts.map +1 -0
- package/dist/goal/receipt.js +290 -0
- package/dist/goal/receipt.js.map +1 -0
- package/dist/goal/resultDocs.d.ts +23 -0
- package/dist/goal/resultDocs.d.ts.map +1 -0
- package/dist/goal/resultDocs.js +279 -0
- package/dist/goal/resultDocs.js.map +1 -0
- package/dist/goal/routes.d.ts +12 -0
- package/dist/goal/routes.d.ts.map +1 -0
- package/dist/goal/routes.js +29 -0
- package/dist/goal/routes.js.map +1 -0
- package/dist/goal/set.d.ts +97 -0
- package/dist/goal/set.d.ts.map +1 -0
- package/dist/goal/set.js +103 -0
- package/dist/goal/set.js.map +1 -0
- package/dist/goal/write.d.ts +30 -0
- package/dist/goal/write.d.ts.map +1 -0
- package/dist/goal/write.js +102 -0
- package/dist/goal/write.js.map +1 -0
- package/dist/help-missing.json +35 -0
- package/dist/home/commands.d.ts +11 -0
- package/dist/home/commands.d.ts.map +1 -0
- package/dist/home/commands.js +8 -0
- package/dist/home/commands.js.map +1 -0
- package/dist/home/exercise.d.ts +27 -0
- package/dist/home/exercise.d.ts.map +1 -0
- package/dist/home/exercise.js +60 -0
- package/dist/home/exercise.js.map +1 -0
- package/dist/home/goalProgressDocs.d.ts +27 -0
- package/dist/home/goalProgressDocs.d.ts.map +1 -0
- package/dist/home/goalProgressDocs.js +363 -0
- package/dist/home/goalProgressDocs.js.map +1 -0
- package/dist/home/home.d.ts +38 -0
- package/dist/home/home.d.ts.map +1 -0
- package/dist/home/home.js +78 -0
- package/dist/home/home.js.map +1 -0
- package/dist/home/homeDocs.d.ts +8 -0
- package/dist/home/homeDocs.d.ts.map +1 -0
- package/dist/home/homeDocs.js +307 -0
- package/dist/home/homeDocs.js.map +1 -0
- package/dist/home/homeViewParts.d.ts +42 -0
- package/dist/home/homeViewParts.d.ts.map +1 -0
- package/dist/home/homeViewParts.js +316 -0
- package/dist/home/homeViewParts.js.map +1 -0
- package/dist/home/index.d.ts +14 -0
- package/dist/home/index.d.ts.map +1 -0
- package/dist/home/index.js +13 -0
- package/dist/home/index.js.map +1 -0
- package/dist/home/routes.d.ts +10 -0
- package/dist/home/routes.d.ts.map +1 -0
- package/dist/home/routes.js +47 -0
- package/dist/home/routes.js.map +1 -0
- package/dist/home/today.d.ts +50 -0
- package/dist/home/today.d.ts.map +1 -0
- package/dist/home/today.js +255 -0
- package/dist/home/today.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/migrate/migrate.js +1 -1
- package/dist/output.d.ts +31 -16
- package/dist/output.d.ts.map +1 -1
- package/dist/output.js +118 -143
- package/dist/output.js.map +1 -1
- package/dist/photo/commands.d.ts +55 -0
- package/dist/photo/commands.d.ts.map +1 -0
- package/dist/photo/commands.js +25 -0
- package/dist/photo/commands.js.map +1 -0
- package/dist/photo/compare.d.ts +24 -0
- package/dist/photo/compare.d.ts.map +1 -0
- package/dist/photo/compare.js +48 -0
- package/dist/photo/compare.js.map +1 -0
- package/dist/photo/compareDoc.d.ts +5 -0
- package/dist/photo/compareDoc.d.ts.map +1 -0
- package/dist/photo/compareDoc.js +221 -0
- package/dist/photo/compareDoc.js.map +1 -0
- package/dist/photo/dir.d.ts +5 -0
- package/dist/photo/dir.d.ts.map +1 -0
- package/dist/photo/dir.js +22 -0
- package/dist/photo/dir.js.map +1 -0
- package/dist/photo/gallery.d.ts +16 -0
- package/dist/photo/gallery.d.ts.map +1 -0
- package/dist/photo/gallery.js +45 -0
- package/dist/photo/gallery.js.map +1 -0
- package/dist/photo/galleryDoc.d.ts +12 -0
- package/dist/photo/galleryDoc.d.ts.map +1 -0
- package/dist/photo/galleryDoc.js +291 -0
- package/dist/photo/galleryDoc.js.map +1 -0
- package/dist/photo/gif.d.ts +28 -0
- package/dist/photo/gif.d.ts.map +1 -0
- package/dist/photo/gif.js +281 -0
- package/dist/photo/gif.js.map +1 -0
- package/dist/photo/gifDoc.d.ts +52 -0
- package/dist/photo/gifDoc.d.ts.map +1 -0
- package/dist/photo/gifDoc.js +311 -0
- package/dist/photo/gifDoc.js.map +1 -0
- package/dist/photo/help.d.ts +4 -0
- package/dist/photo/help.d.ts.map +1 -0
- package/dist/photo/help.js +87 -0
- package/dist/photo/help.js.map +1 -0
- package/dist/photo/helpCenter.d.ts +137 -0
- package/dist/photo/helpCenter.d.ts.map +1 -0
- package/dist/photo/helpCenter.js +475 -0
- package/dist/photo/helpCenter.js.map +1 -0
- package/dist/photo/helpDoc.d.ts +5 -0
- package/dist/photo/helpDoc.d.ts.map +1 -0
- package/dist/photo/helpDoc.js +205 -0
- package/dist/photo/helpDoc.js.map +1 -0
- package/dist/photo/helpDocContent.d.ts +77 -0
- package/dist/photo/helpDocContent.d.ts.map +1 -0
- package/dist/photo/helpDocContent.js +120 -0
- package/dist/photo/helpDocContent.js.map +1 -0
- package/dist/photo/helpDocCss.d.ts +5 -0
- package/dist/photo/helpDocCss.d.ts.map +1 -0
- package/dist/photo/helpDocCss.js +119 -0
- package/dist/photo/helpDocCss.js.map +1 -0
- package/dist/photo/helpFile.d.ts +26 -0
- package/dist/photo/helpFile.d.ts.map +1 -0
- package/dist/photo/helpFile.js +90 -0
- package/dist/photo/helpFile.js.map +1 -0
- package/dist/photo/helpLookup.d.ts +18 -0
- package/dist/photo/helpLookup.d.ts.map +1 -0
- package/dist/photo/helpLookup.js +58 -0
- package/dist/photo/helpLookup.js.map +1 -0
- package/dist/photo/helpPaths.d.ts +22 -0
- package/dist/photo/helpPaths.d.ts.map +1 -0
- package/dist/photo/helpPaths.js +22 -0
- package/dist/photo/helpPaths.js.map +1 -0
- package/dist/photo/index.d.ts +17 -0
- package/dist/photo/index.d.ts.map +1 -0
- package/dist/photo/index.js +21 -0
- package/dist/photo/index.js.map +1 -0
- package/dist/photo/manage.d.ts +13 -0
- package/dist/photo/manage.d.ts.map +1 -0
- package/dist/photo/manage.js +64 -0
- package/dist/photo/manage.js.map +1 -0
- package/dist/photo/photo.d.ts +118 -0
- package/dist/photo/photo.d.ts.map +1 -0
- package/dist/photo/photo.js +279 -0
- package/dist/photo/photo.js.map +1 -0
- package/dist/photo/photoThumb.d.ts +38 -0
- package/dist/photo/photoThumb.d.ts.map +1 -0
- package/dist/photo/photoThumb.js +83 -0
- package/dist/photo/photoThumb.js.map +1 -0
- package/dist/photo/photoUi.d.ts +39 -0
- package/dist/photo/photoUi.d.ts.map +1 -0
- package/dist/photo/photoUi.js +233 -0
- package/dist/photo/photoUi.js.map +1 -0
- package/dist/photo/photos.d.ts +76 -0
- package/dist/photo/photos.d.ts.map +1 -0
- package/dist/photo/photos.js +193 -0
- package/dist/photo/photos.js.map +1 -0
- package/dist/photo/picker.d.ts +41 -0
- package/dist/photo/picker.d.ts.map +1 -0
- package/dist/photo/picker.js +132 -0
- package/dist/photo/picker.js.map +1 -0
- package/dist/photo/pickerDoc.d.ts +12 -0
- package/dist/photo/pickerDoc.d.ts.map +1 -0
- package/dist/photo/pickerDoc.js +231 -0
- package/dist/photo/pickerDoc.js.map +1 -0
- package/dist/photo/receipt.d.ts +23 -0
- package/dist/photo/receipt.d.ts.map +1 -0
- package/dist/photo/receipt.js +331 -0
- package/dist/photo/receipt.js.map +1 -0
- package/dist/photo/receiptUi.d.ts +42 -0
- package/dist/photo/receiptUi.d.ts.map +1 -0
- package/dist/photo/receiptUi.js +147 -0
- package/dist/photo/receiptUi.js.map +1 -0
- package/dist/photo/routes.d.ts +10 -0
- package/dist/photo/routes.d.ts.map +1 -0
- package/dist/photo/routes.js +29 -0
- package/dist/photo/routes.js.map +1 -0
- package/dist/photo/store.d.ts +10 -0
- package/dist/photo/store.d.ts.map +1 -0
- package/dist/photo/store.js +44 -0
- package/dist/photo/store.js.map +1 -0
- package/dist/photo/viewerDoc.d.ts +5 -0
- package/dist/photo/viewerDoc.d.ts.map +1 -0
- package/dist/photo/viewerDoc.js +255 -0
- package/dist/photo/viewerDoc.js.map +1 -0
- package/dist/photo/wizard.d.ts +15 -0
- package/dist/photo/wizard.d.ts.map +1 -0
- package/dist/photo/wizard.js +25 -0
- package/dist/photo/wizard.js.map +1 -0
- package/dist/photo/wizardUi.d.ts +24 -0
- package/dist/photo/wizardUi.d.ts.map +1 -0
- package/dist/photo/wizardUi.js +101 -0
- package/dist/photo/wizardUi.js.map +1 -0
- package/dist/profile/commands.d.ts +28 -0
- package/dist/profile/commands.d.ts.map +1 -0
- package/dist/profile/commands.js +10 -0
- package/dist/profile/commands.js.map +1 -0
- package/dist/profile/index.d.ts +23 -0
- package/dist/profile/index.d.ts.map +1 -0
- package/dist/profile/index.js +22 -0
- package/dist/profile/index.js.map +1 -0
- package/dist/profile/labels.d.ts +10 -0
- package/dist/profile/labels.d.ts.map +1 -0
- package/dist/profile/labels.js +52 -0
- package/dist/profile/labels.js.map +1 -0
- package/dist/profile/read.d.ts +13 -0
- package/dist/profile/read.d.ts.map +1 -0
- package/dist/profile/read.js +24 -0
- package/dist/profile/read.js.map +1 -0
- package/dist/profile/receipt.d.ts +10 -0
- package/dist/profile/receipt.d.ts.map +1 -0
- package/dist/profile/receipt.js +19 -0
- package/dist/profile/receipt.js.map +1 -0
- package/dist/profile/routes.d.ts +8 -0
- package/dist/profile/routes.d.ts.map +1 -0
- package/dist/profile/routes.js +9 -0
- package/dist/profile/routes.js.map +1 -0
- package/dist/profile/setup.d.ts +67 -0
- package/dist/profile/setup.d.ts.map +1 -0
- package/dist/profile/setup.js +396 -0
- package/dist/profile/setup.js.map +1 -0
- package/dist/profile/update.d.ts +5 -0
- package/dist/profile/update.d.ts.map +1 -0
- package/dist/profile/update.js +85 -0
- package/dist/profile/update.js.map +1 -0
- package/dist/profile/view.d.ts +64 -0
- package/dist/profile/view.d.ts.map +1 -0
- package/dist/profile/view.js +204 -0
- package/dist/profile/view.js.map +1 -0
- package/dist/profile/write.d.ts +16 -0
- package/dist/profile/write.d.ts.map +1 -0
- package/dist/profile/write.js +75 -0
- package/dist/profile/write.js.map +1 -0
- package/dist/render/analysisPlate.d.ts +1 -1
- package/dist/render/analysisPlate.d.ts.map +1 -1
- package/dist/render/analysisPlate.js +1 -1
- package/dist/render/analysisPlate.js.map +1 -1
- package/dist/render/dietDocs.d.ts +19 -19
- package/dist/render/dietDocs.d.ts.map +1 -1
- package/dist/render/dietDocs.js +173 -435
- package/dist/render/dietDocs.js.map +1 -1
- package/dist/render/exercisePort.d.ts +3 -1
- package/dist/render/exercisePort.d.ts.map +1 -1
- package/dist/render/exercisePort.js +4 -3
- package/dist/render/exercisePort.js.map +1 -1
- package/dist/render/goalExtra.d.ts.map +1 -1
- package/dist/render/goalExtra.js +2 -1
- package/dist/render/goalExtra.js.map +1 -1
- package/dist/render/goalPlate.d.ts +2 -2
- package/dist/render/goalPlate.d.ts.map +1 -1
- package/dist/render/goalPlate.js +3 -3
- package/dist/render/goalPlate.js.map +1 -1
- package/dist/render/helpCenter.d.ts.map +1 -1
- package/dist/render/helpCenter.js +4 -2
- package/dist/render/helpCenter.js.map +1 -1
- package/dist/render/helpFile.d.ts +26 -0
- package/dist/render/helpFile.d.ts.map +1 -0
- package/dist/render/helpFile.js +60 -0
- package/dist/render/helpFile.js.map +1 -0
- package/dist/render/helpPaths.d.ts +22 -0
- package/dist/render/helpPaths.d.ts.map +1 -0
- package/dist/render/helpPaths.js +22 -0
- package/dist/render/helpPaths.js.map +1 -0
- package/dist/render/helpShell.d.ts +16 -0
- package/dist/render/helpShell.d.ts.map +1 -0
- package/dist/render/helpShell.js +27 -0
- package/dist/render/helpShell.js.map +1 -0
- package/dist/render/html.d.ts +37 -21
- package/dist/render/html.d.ts.map +1 -1
- package/dist/render/html.js +37 -45
- package/dist/render/html.js.map +1 -1
- package/dist/render/index.d.ts +37 -33
- package/dist/render/index.d.ts.map +1 -1
- package/dist/render/index.js +32 -18
- package/dist/render/index.js.map +1 -1
- package/dist/render/insightPlate.d.ts +17 -0
- package/dist/render/insightPlate.d.ts.map +1 -1
- package/dist/render/insightPlate.js +109 -1
- package/dist/render/insightPlate.js.map +1 -1
- package/dist/render/nutritionPortDocs.d.ts.map +1 -1
- package/dist/render/nutritionPortDocs.js +41 -48
- package/dist/render/nutritionPortDocs.js.map +1 -1
- package/dist/render/pageChromeCss.d.ts +24 -0
- package/dist/render/pageChromeCss.d.ts.map +1 -0
- package/dist/render/pageChromeCss.js +45 -0
- package/dist/render/pageChromeCss.js.map +1 -0
- package/dist/render/planCopyBlock.d.ts +32 -0
- package/dist/render/planCopyBlock.d.ts.map +1 -0
- package/dist/render/planCopyBlock.js +34 -0
- package/dist/render/planCopyBlock.js.map +1 -0
- package/dist/render/planEditor.d.ts +94 -0
- package/dist/render/planEditor.d.ts.map +1 -0
- package/dist/render/planEditor.js +38 -0
- package/dist/render/planEditor.js.map +1 -0
- package/dist/render/planEditorCss.d.ts +13 -0
- package/dist/render/planEditorCss.d.ts.map +1 -0
- package/dist/render/planEditorCss.js +140 -0
- package/dist/render/planEditorCss.js.map +1 -0
- package/dist/render/planEditorDocs.d.ts +7 -0
- package/dist/render/planEditorDocs.d.ts.map +1 -0
- package/dist/render/planEditorDocs.js +56 -0
- package/dist/render/planEditorDocs.js.map +1 -0
- package/dist/render/planEditorPort.d.ts +45 -0
- package/dist/render/planEditorPort.d.ts.map +1 -0
- package/dist/render/planEditorPort.js +217 -0
- package/dist/render/planEditorPort.js.map +1 -0
- package/dist/render/planEditorRuntime.d.ts +15 -0
- package/dist/render/planEditorRuntime.d.ts.map +1 -0
- package/dist/render/planEditorRuntime.js +427 -0
- package/dist/render/planEditorRuntime.js.map +1 -0
- package/dist/render/planPlate.d.ts +84 -4
- package/dist/render/planPlate.d.ts.map +1 -1
- package/dist/render/planPlate.js +155 -7
- package/dist/render/planPlate.js.map +1 -1
- package/dist/render/planWizardCss.d.ts +21 -0
- package/dist/render/planWizardCss.d.ts.map +1 -0
- package/dist/render/planWizardCss.js +121 -0
- package/dist/render/planWizardCss.js.map +1 -0
- package/dist/render/planWizardDocs.d.ts +8 -0
- package/dist/render/planWizardDocs.d.ts.map +1 -0
- package/dist/render/planWizardDocs.js +151 -0
- package/dist/render/planWizardDocs.js.map +1 -0
- package/dist/render/receipt.d.ts +4 -0
- package/dist/render/receipt.d.ts.map +1 -1
- package/dist/render/receipt.js +4 -1
- package/dist/render/receipt.js.map +1 -1
- package/dist/render/reviewDocs.d.ts +3 -0
- package/dist/render/reviewDocs.d.ts.map +1 -0
- package/dist/render/reviewDocs.js +222 -0
- package/dist/render/reviewDocs.js.map +1 -0
- package/dist/render/reviewDocsCss.d.ts +5 -0
- package/dist/render/reviewDocsCss.d.ts.map +1 -0
- package/dist/render/reviewDocsCss.js +128 -0
- package/dist/render/reviewDocsCss.js.map +1 -0
- package/dist/render/sportDocs.d.ts +17 -12
- package/dist/render/sportDocs.d.ts.map +1 -1
- package/dist/render/sportDocs.js +370 -497
- package/dist/render/sportDocs.js.map +1 -1
- package/dist/render/sportPortDocs.d.ts +3 -2
- package/dist/render/sportPortDocs.d.ts.map +1 -1
- package/dist/render/sportPortDocs.js +825 -397
- package/dist/render/sportPortDocs.js.map +1 -1
- package/dist/render/trendDocs.d.ts +16 -6
- package/dist/render/trendDocs.d.ts.map +1 -1
- package/dist/render/trendDocs.js +310 -262
- package/dist/render/trendDocs.js.map +1 -1
- package/dist/render/trendMiscPort.d.ts +9 -24
- package/dist/render/trendMiscPort.d.ts.map +1 -1
- package/dist/render/trendMiscPort.js +7 -30
- package/dist/render/trendMiscPort.js.map +1 -1
- package/dist/render/trendMiscPortDocs.d.ts +1 -2
- package/dist/render/trendMiscPortDocs.d.ts.map +1 -1
- package/dist/render/trendMiscPortDocs.js +303 -133
- package/dist/render/trendMiscPortDocs.js.map +1 -1
- package/dist/render/trendPredictDocs.d.ts +16 -0
- package/dist/render/trendPredictDocs.d.ts.map +1 -0
- package/dist/render/trendPredictDocs.js +1131 -0
- package/dist/render/trendPredictDocs.js.map +1 -0
- package/dist/render/wizardPort.d.ts +9 -62
- package/dist/render/wizardPort.d.ts.map +1 -1
- package/dist/render/wizardPort.js +20 -180
- package/dist/render/wizardPort.js.map +1 -1
- package/dist/render/wizardPortDocs.d.ts +5 -5
- package/dist/render/wizardPortDocs.d.ts.map +1 -1
- package/dist/render/wizardPortDocs.js +282 -234
- package/dist/render/wizardPortDocs.js.map +1 -1
- package/dist/render/workoutMovementTable.d.ts +10 -0
- package/dist/render/workoutMovementTable.d.ts.map +1 -0
- package/dist/render/workoutMovementTable.js +153 -0
- package/dist/render/workoutMovementTable.js.map +1 -0
- package/dist/render/workoutPlanCss.d.ts +15 -0
- package/dist/render/workoutPlanCss.d.ts.map +1 -0
- package/dist/render/workoutPlanCss.js +217 -0
- package/dist/render/workoutPlanCss.js.map +1 -0
- package/dist/render/workoutPlanDocs.d.ts +23 -0
- package/dist/render/workoutPlanDocs.d.ts.map +1 -0
- package/dist/render/workoutPlanDocs.js +244 -0
- package/dist/render/workoutPlanDocs.js.map +1 -0
- package/dist/render/workoutPlanLook.d.ts +16 -0
- package/dist/render/workoutPlanLook.d.ts.map +1 -0
- package/dist/render/workoutPlanLook.js +135 -0
- package/dist/render/workoutPlanLook.js.map +1 -0
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +11 -0
- package/dist/schema.js.map +1 -1
- package/dist/shared/commandSpec.d.ts +73 -0
- package/dist/shared/commandSpec.d.ts.map +1 -0
- package/dist/shared/commandSpec.js +2 -0
- package/dist/shared/commandSpec.js.map +1 -0
- package/dist/shared/conclusionLine.d.ts +3 -0
- package/dist/shared/conclusionLine.d.ts.map +1 -0
- package/dist/shared/conclusionLine.js +21 -0
- package/dist/shared/conclusionLine.js.map +1 -0
- package/dist/shared/contentSuffix.d.ts +17 -0
- package/dist/shared/contentSuffix.d.ts.map +1 -0
- package/dist/shared/contentSuffix.js +125 -0
- package/dist/shared/contentSuffix.js.map +1 -0
- package/dist/shared/copyArea.d.ts +73 -0
- package/dist/shared/copyArea.d.ts.map +1 -0
- package/dist/shared/copyArea.js +144 -0
- package/dist/shared/copyArea.js.map +1 -0
- package/dist/shared/docPage.d.ts +42 -0
- package/dist/shared/docPage.d.ts.map +1 -0
- package/dist/shared/docPage.js +129 -0
- package/dist/shared/docPage.js.map +1 -0
- package/dist/shared/emptyGuide.d.ts +9 -0
- package/dist/shared/emptyGuide.d.ts.map +1 -0
- package/dist/shared/emptyGuide.js +31 -0
- package/dist/shared/emptyGuide.js.map +1 -0
- package/dist/shared/fieldLabel.d.ts +5 -0
- package/dist/shared/fieldLabel.d.ts.map +1 -0
- package/dist/shared/fieldLabel.js +42 -0
- package/dist/shared/fieldLabel.js.map +1 -0
- package/dist/shared/operationHead.d.ts +21 -0
- package/dist/shared/operationHead.d.ts.map +1 -0
- package/dist/shared/operationHead.js +73 -0
- package/dist/shared/operationHead.js.map +1 -0
- package/dist/shared/pageKit.d.ts +25 -0
- package/dist/shared/pageKit.d.ts.map +1 -0
- package/dist/shared/pageKit.js +56 -0
- package/dist/shared/pageKit.js.map +1 -0
- package/dist/shared/params.d.ts +54 -0
- package/dist/shared/params.d.ts.map +1 -0
- package/dist/shared/params.js +176 -0
- package/dist/shared/params.js.map +1 -0
- package/dist/shared/receiptParts.d.ts +9 -0
- package/dist/shared/receiptParts.d.ts.map +1 -0
- package/dist/shared/receiptParts.js +40 -0
- package/dist/shared/receiptParts.js.map +1 -0
- package/dist/shared/sceneEnvelope.d.ts +32 -0
- package/dist/shared/sceneEnvelope.d.ts.map +1 -0
- package/dist/shared/sceneEnvelope.js +12 -0
- package/dist/shared/sceneEnvelope.js.map +1 -0
- package/dist/shared/sourceLine.d.ts +10 -0
- package/dist/shared/sourceLine.d.ts.map +1 -0
- package/dist/shared/sourceLine.js +37 -0
- package/dist/shared/sourceLine.js.map +1 -0
- package/dist/shared/writeParts.d.ts +61 -0
- package/dist/shared/writeParts.d.ts.map +1 -0
- package/dist/shared/writeParts.js +79 -0
- package/dist/shared/writeParts.js.map +1 -0
- package/dist/triggers/help-lookup.d.ts +41 -5
- package/dist/triggers/help-lookup.d.ts.map +1 -1
- package/dist/triggers/help-lookup.js +100 -51
- package/dist/triggers/help-lookup.js.map +1 -1
- package/dist/triggers/index.js +1 -1
- package/dist/triggers/routeSpec.d.ts +66 -0
- package/dist/triggers/routeSpec.d.ts.map +1 -0
- package/dist/triggers/routeSpec.js +21 -0
- package/dist/triggers/routeSpec.js.map +1 -0
- package/dist/triggers/routes.generated.d.ts +17 -0
- package/dist/triggers/routes.generated.d.ts.map +1 -0
- package/dist/triggers/routes.generated.js +519 -0
- package/dist/triggers/routes.generated.js.map +1 -0
- package/dist/triggers/routing.d.ts +17 -38
- package/dist/triggers/routing.d.ts.map +1 -1
- package/dist/triggers/routing.js +13 -527
- package/dist/triggers/routing.js.map +1 -1
- package/dist/triggers/scene-01-home.js +9 -9
- package/dist/triggers/scene-01-home.js.map +1 -1
- package/dist/triggers/scene-02-diet.js +62 -62
- package/dist/triggers/scene-02-diet.js.map +1 -1
- package/dist/triggers/scene-03-weight.js +54 -54
- package/dist/triggers/scene-03-weight.js.map +1 -1
- package/dist/triggers/scene-04-exercise.js +33 -33
- package/dist/triggers/scene-04-exercise.js.map +1 -1
- package/dist/triggers/scene-05-workout.js +32 -32
- package/dist/triggers/scene-05-workout.js.map +1 -1
- package/dist/triggers/scene-06-goal.d.ts +1 -1
- package/dist/triggers/scene-06-goal.d.ts.map +1 -1
- package/dist/triggers/scene-06-goal.js +25 -24
- package/dist/triggers/scene-06-goal.js.map +1 -1
- package/dist/triggers/scene-07-profile.js +4 -4
- package/dist/triggers/scene-07-profile.js.map +1 -1
- package/dist/triggers/scene-08-body.js +10 -10
- package/dist/triggers/scene-08-body.js.map +1 -1
- package/dist/triggers/scene-09-photo.js +10 -10
- package/dist/triggers/scene-09-photo.js.map +1 -1
- package/dist/triggers/scene-10-analysis.js +176 -176
- package/dist/triggers/scene-10-analysis.js.map +1 -1
- package/dist/triggers/wake-assets.d.ts +47 -0
- package/dist/triggers/wake-assets.d.ts.map +1 -0
- package/dist/triggers/wake-assets.js +4725 -0
- package/dist/triggers/wake-assets.js.map +1 -0
- package/dist/weight/commands.d.ts +21 -0
- package/dist/weight/commands.d.ts.map +1 -0
- package/dist/weight/commands.js +18 -0
- package/dist/weight/commands.js.map +1 -0
- package/dist/weight/compare.d.ts +60 -0
- package/dist/weight/compare.d.ts.map +1 -0
- package/dist/weight/compare.js +570 -0
- package/dist/weight/compare.js.map +1 -0
- package/dist/weight/edit.d.ts +13 -0
- package/dist/weight/edit.d.ts.map +1 -0
- package/dist/weight/edit.js +87 -0
- package/dist/weight/edit.js.map +1 -0
- package/dist/weight/fieldLabels.d.ts +5 -0
- package/dist/weight/fieldLabels.d.ts.map +1 -0
- package/dist/weight/fieldLabels.js +23 -0
- package/dist/weight/fieldLabels.js.map +1 -0
- package/dist/weight/figures.d.ts +87 -0
- package/dist/weight/figures.d.ts.map +1 -0
- package/dist/weight/figures.js +219 -0
- package/dist/weight/figures.js.map +1 -0
- package/dist/weight/history.d.ts +85 -0
- package/dist/weight/history.d.ts.map +1 -0
- package/dist/weight/history.js +771 -0
- package/dist/weight/history.js.map +1 -0
- package/dist/weight/index.d.ts +27 -0
- package/dist/weight/index.d.ts.map +1 -0
- package/dist/weight/index.js +23 -0
- package/dist/weight/index.js.map +1 -0
- package/dist/weight/log.d.ts +40 -0
- package/dist/weight/log.d.ts.map +1 -0
- package/dist/weight/log.js +355 -0
- package/dist/weight/log.js.map +1 -0
- package/dist/weight/logReceipt.d.ts +28 -0
- package/dist/weight/logReceipt.d.ts.map +1 -0
- package/dist/weight/logReceipt.js +259 -0
- package/dist/weight/logReceipt.js.map +1 -0
- package/dist/weight/plate.d.ts +77 -0
- package/dist/weight/plate.d.ts.map +1 -0
- package/dist/weight/plate.js +60 -0
- package/dist/weight/plate.js.map +1 -0
- package/dist/weight/plateDocs.d.ts +83 -0
- package/dist/weight/plateDocs.d.ts.map +1 -0
- package/dist/weight/plateDocs.js +179 -0
- package/dist/weight/plateDocs.js.map +1 -0
- package/dist/weight/receipt.d.ts +23 -0
- package/dist/weight/receipt.d.ts.map +1 -0
- package/dist/weight/receipt.js +178 -0
- package/dist/weight/receipt.js.map +1 -0
- package/dist/weight/records.d.ts +109 -0
- package/dist/weight/records.d.ts.map +1 -0
- package/dist/weight/records.js +210 -0
- package/dist/weight/records.js.map +1 -0
- package/dist/weight/review.d.ts +114 -0
- package/dist/weight/review.d.ts.map +1 -0
- package/dist/weight/review.js +651 -0
- package/dist/weight/review.js.map +1 -0
- package/dist/weight/routes.d.ts +7 -0
- package/dist/weight/routes.d.ts.map +1 -0
- package/dist/weight/routes.js +68 -0
- package/dist/weight/routes.js.map +1 -0
- package/dist/weight/volatility.d.ts +78 -0
- package/dist/weight/volatility.d.ts.map +1 -0
- package/dist/weight/volatility.js +203 -0
- package/dist/weight/volatility.js.map +1 -0
- package/dist/weight/volatilityDoc.d.ts +10 -0
- package/dist/weight/volatilityDoc.d.ts.map +1 -0
- package/dist/weight/volatilityDoc.js +395 -0
- package/dist/weight/volatilityDoc.js.map +1 -0
- package/dist/weight/weightCompare.d.ts +70 -0
- package/dist/weight/weightCompare.d.ts.map +1 -0
- package/dist/weight/weightCompare.js +221 -0
- package/dist/weight/weightCompare.js.map +1 -0
- package/dist/weight/weightCompare2.d.ts +66 -0
- package/dist/weight/weightCompare2.d.ts.map +1 -0
- package/dist/weight/weightCompare2.js +218 -0
- package/dist/weight/weightCompare2.js.map +1 -0
- package/dist/weight/weightCompare3.d.ts +18 -0
- package/dist/weight/weightCompare3.d.ts.map +1 -0
- package/dist/weight/weightCompare3.js +222 -0
- package/dist/weight/weightCompare3.js.map +1 -0
- package/dist/weight/weightUi.d.ts +114 -0
- package/dist/weight/weightUi.d.ts.map +1 -0
- package/dist/weight/weightUi.js +256 -0
- package/dist/weight/weightUi.js.map +1 -0
- package/dist/workout/commands.d.ts +29 -0
- package/dist/workout/commands.d.ts.map +1 -0
- package/dist/workout/commands.js +35 -0
- package/dist/workout/commands.js.map +1 -0
- package/dist/workout/contraindication.d.ts +11 -0
- package/dist/workout/contraindication.d.ts.map +1 -0
- package/dist/workout/contraindication.js +11 -0
- package/dist/workout/contraindication.js.map +1 -0
- package/dist/workout/dayPhrase.d.ts +13 -0
- package/dist/workout/dayPhrase.d.ts.map +1 -0
- package/dist/workout/dayPhrase.js +15 -0
- package/dist/workout/dayPhrase.js.map +1 -0
- package/dist/workout/fieldLabels.d.ts +5 -0
- package/dist/workout/fieldLabels.d.ts.map +1 -0
- package/dist/workout/fieldLabels.js +45 -0
- package/dist/workout/fieldLabels.js.map +1 -0
- package/dist/workout/index.d.ts +30 -0
- package/dist/workout/index.d.ts.map +1 -0
- package/dist/workout/index.js +34 -0
- package/dist/workout/index.js.map +1 -0
- package/dist/workout/land.d.ts +45 -0
- package/dist/workout/land.d.ts.map +1 -0
- package/dist/workout/land.js +280 -0
- package/dist/workout/land.js.map +1 -0
- package/dist/workout/landBatch.d.ts +60 -0
- package/dist/workout/landBatch.d.ts.map +1 -0
- package/dist/workout/landBatch.js +225 -0
- package/dist/workout/landBatch.js.map +1 -0
- package/dist/workout/landBatchPages.d.ts +31 -0
- package/dist/workout/landBatchPages.d.ts.map +1 -0
- package/dist/workout/landBatchPages.js +132 -0
- package/dist/workout/landBatchPages.js.map +1 -0
- package/dist/workout/landPages.d.ts +41 -0
- package/dist/workout/landPages.d.ts.map +1 -0
- package/dist/workout/landPages.js +153 -0
- package/dist/workout/landPages.js.map +1 -0
- package/dist/workout/landRunner.d.ts +42 -0
- package/dist/workout/landRunner.d.ts.map +1 -0
- package/dist/workout/landRunner.js +155 -0
- package/dist/workout/landRunner.js.map +1 -0
- package/dist/workout/movementType.d.ts +14 -0
- package/dist/workout/movementType.d.ts.map +1 -0
- package/dist/workout/movementType.js +16 -0
- package/dist/workout/movementType.js.map +1 -0
- package/dist/workout/plan.d.ts +21 -0
- package/dist/workout/plan.d.ts.map +1 -0
- package/dist/workout/plan.js +44 -0
- package/dist/workout/plan.js.map +1 -0
- package/dist/workout/planStore.d.ts +157 -0
- package/dist/workout/planStore.d.ts.map +1 -0
- package/dist/workout/planStore.js +282 -0
- package/dist/workout/planStore.js.map +1 -0
- package/dist/workout/precheckPrompt.d.ts +7 -0
- package/dist/workout/precheckPrompt.d.ts.map +1 -0
- package/dist/workout/precheckPrompt.js +35 -0
- package/dist/workout/precheckPrompt.js.map +1 -0
- package/dist/workout/progress.d.ts +12 -0
- package/dist/workout/progress.d.ts.map +1 -0
- package/dist/workout/progress.js +16 -0
- package/dist/workout/progress.js.map +1 -0
- package/dist/workout/receipt.d.ts +15 -0
- package/dist/workout/receipt.d.ts.map +1 -0
- package/dist/workout/receipt.js +128 -0
- package/dist/workout/receipt.js.map +1 -0
- package/dist/workout/review.d.ts +12 -0
- package/dist/workout/review.d.ts.map +1 -0
- package/dist/workout/review.js +15 -0
- package/dist/workout/review.js.map +1 -0
- package/dist/workout/routes.d.ts +13 -0
- package/dist/workout/routes.d.ts.map +1 -0
- package/dist/workout/routes.js +49 -0
- package/dist/workout/routes.js.map +1 -0
- package/dist/workout/wizard.d.ts +14 -0
- package/dist/workout/wizard.d.ts.map +1 -0
- package/dist/workout/wizard.js +20 -0
- package/dist/workout/wizard.js.map +1 -0
- package/dist/workout/write.d.ts +78 -0
- package/dist/workout/write.d.ts.map +1 -0
- package/dist/workout/write.js +607 -0
- package/dist/workout/write.js.map +1 -0
- package/dist/workout/xunjiBackfill.d.ts +36 -0
- package/dist/workout/xunjiBackfill.d.ts.map +1 -0
- package/dist/workout/xunjiBackfill.js +198 -0
- package/dist/workout/xunjiBackfill.js.map +1 -0
- package/dist/workout/xunjiPush.d.ts +33 -0
- package/dist/workout/xunjiPush.d.ts.map +1 -0
- package/dist/workout/xunjiPush.js +236 -0
- package/dist/workout/xunjiPush.js.map +1 -0
- package/dist/workout/xunjiRunner.d.ts +29 -0
- package/dist/workout/xunjiRunner.d.ts.map +1 -0
- package/dist/workout/xunjiRunner.js +110 -0
- package/dist/workout/xunjiRunner.js.map +1 -0
- package/dist/xunji/backfill.d.ts +63 -0
- package/dist/xunji/backfill.d.ts.map +1 -0
- package/dist/xunji/backfill.js +150 -0
- package/dist/xunji/backfill.js.map +1 -0
- package/dist/xunji/catalog.d.ts +53 -0
- package/dist/xunji/catalog.d.ts.map +1 -0
- package/dist/xunji/catalog.js +126 -0
- package/dist/xunji/catalog.js.map +1 -0
- package/dist/xunji/cli.d.ts +3 -0
- package/dist/xunji/cli.d.ts.map +1 -0
- package/dist/xunji/cli.js +15 -0
- package/dist/xunji/cli.js.map +1 -0
- package/dist/xunji/exitMap.d.ts +37 -0
- package/dist/xunji/exitMap.d.ts.map +1 -0
- package/dist/xunji/exitMap.js +42 -0
- package/dist/xunji/exitMap.js.map +1 -0
- package/dist/xunji/fetch.d.ts +77 -0
- package/dist/xunji/fetch.d.ts.map +1 -0
- package/dist/xunji/fetch.js +160 -0
- package/dist/xunji/fetch.js.map +1 -0
- package/dist/xunji/index.d.ts +21 -0
- package/dist/xunji/index.d.ts.map +1 -0
- package/dist/xunji/index.js +18 -0
- package/dist/xunji/index.js.map +1 -0
- package/dist/xunji/key.d.ts +77 -0
- package/dist/xunji/key.d.ts.map +1 -0
- package/dist/xunji/key.js +160 -0
- package/dist/xunji/key.js.map +1 -0
- package/dist/xunji/overlay-plan.d.ts +79 -0
- package/dist/xunji/overlay-plan.d.ts.map +1 -0
- package/dist/xunji/overlay-plan.js +145 -0
- package/dist/xunji/overlay-plan.js.map +1 -0
- package/dist/xunji/planSource.d.ts +40 -0
- package/dist/xunji/planSource.d.ts.map +1 -0
- package/dist/xunji/planSource.js +78 -0
- package/dist/xunji/planSource.js.map +1 -0
- package/dist/xunji/push.d.ts +55 -0
- package/dist/xunji/push.d.ts.map +1 -0
- package/dist/xunji/push.js +69 -0
- package/dist/xunji/push.js.map +1 -0
- package/dist/xunji/rateLimit.d.ts +44 -0
- package/dist/xunji/rateLimit.d.ts.map +1 -0
- package/dist/xunji/rateLimit.js +99 -0
- package/dist/xunji/rateLimit.js.map +1 -0
- package/dist/xunji/request.d.ts +48 -0
- package/dist/xunji/request.d.ts.map +1 -0
- package/dist/xunji/request.js +60 -0
- package/dist/xunji/request.js.map +1 -0
- package/dist/xunji/retry.d.ts +50 -0
- package/dist/xunji/retry.d.ts.map +1 -0
- package/dist/xunji/retry.js +106 -0
- package/dist/xunji/retry.js.map +1 -0
- package/dist/xunji/rows.d.ts +32 -0
- package/dist/xunji/rows.d.ts.map +1 -0
- package/dist/xunji/rows.js +74 -0
- package/dist/xunji/rows.js.map +1 -0
- package/dist/xunji/run-sync.d.ts +106 -0
- package/dist/xunji/run-sync.d.ts.map +1 -0
- package/dist/xunji/run-sync.js +223 -0
- package/dist/xunji/run-sync.js.map +1 -0
- package/dist/xunji/run.d.ts +56 -0
- package/dist/xunji/run.d.ts.map +1 -0
- package/dist/xunji/run.js +300 -0
- package/dist/xunji/run.js.map +1 -0
- package/dist/xunji/store.d.ts +31 -0
- package/dist/xunji/store.d.ts.map +1 -0
- package/dist/xunji/store.js +60 -0
- package/dist/xunji/store.js.map +1 -0
- package/dist/xunji/subcommands.d.ts +64 -0
- package/dist/xunji/subcommands.d.ts.map +1 -0
- package/dist/xunji/subcommands.js +203 -0
- package/dist/xunji/subcommands.js.map +1 -0
- package/dist/xunji/upsert.d.ts +61 -0
- package/dist/xunji/upsert.d.ts.map +1 -0
- package/dist/xunji/upsert.js +100 -0
- package/dist/xunji/upsert.js.map +1 -0
- package/package.json +7 -3
- 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
- package/templates/help.html +1 -1
- package/workflows/08-/350/272/253/344/275/223/347/273/206/350/212/202.md +60 -0
- package/workflows/09-/350/272/253/346/235/220/347/205/247/347/211/207.md +98 -0
- package/dist/render/profilePlate.d.ts +0 -17
- package/dist/render/profilePlate.d.ts.map +0 -1
- package/dist/render/profilePlate.js +0 -18
- package/dist/render/profilePlate.js.map +0 -1
|
@@ -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
|