skill-bill 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SKILL.md +3 -2
- package/dist/.gen-inputs.json +21 -5
- package/dist/account/accounts.d.ts +98 -0
- package/dist/account/accounts.d.ts.map +1 -0
- package/dist/account/accounts.js +184 -0
- package/dist/account/accounts.js.map +1 -0
- package/dist/account/commands.d.ts +18 -0
- package/dist/account/commands.d.ts.map +1 -0
- package/dist/account/commands.js +21 -0
- package/dist/account/commands.js.map +1 -0
- package/dist/account/declaration.d.ts +9 -0
- package/dist/account/declaration.d.ts.map +1 -0
- package/dist/account/declaration.js +70 -0
- package/dist/account/declaration.js.map +1 -0
- package/dist/account/index.d.ts +15 -0
- package/dist/account/index.d.ts.map +1 -0
- package/dist/account/index.js +15 -0
- package/dist/account/index.js.map +1 -0
- package/dist/account/pageParts.d.ts +127 -0
- package/dist/account/pageParts.d.ts.map +1 -0
- package/dist/account/pageParts.js +222 -0
- package/dist/account/pageParts.js.map +1 -0
- package/dist/account/params.d.ts +52 -0
- package/dist/account/params.d.ts.map +1 -0
- package/dist/account/params.js +153 -0
- package/dist/account/params.js.map +1 -0
- package/dist/account/query.d.ts +11 -0
- package/dist/account/query.d.ts.map +1 -0
- package/dist/account/query.js +10 -0
- package/dist/account/query.js.map +1 -0
- package/dist/account/read.d.ts +8 -0
- package/dist/account/read.d.ts.map +1 -0
- package/dist/account/read.js +56 -0
- package/dist/account/read.js.map +1 -0
- package/dist/account/scene-add.d.ts +3 -0
- package/dist/account/scene-add.d.ts.map +1 -0
- package/dist/account/scene-add.js +54 -0
- package/dist/account/scene-add.js.map +1 -0
- package/dist/account/scene-transfer.d.ts +3 -0
- package/dist/account/scene-transfer.d.ts.map +1 -0
- package/dist/account/scene-transfer.js +73 -0
- package/dist/account/scene-transfer.js.map +1 -0
- package/dist/account/scene-update.d.ts +3 -0
- package/dist/account/scene-update.d.ts.map +1 -0
- package/dist/account/scene-update.js +56 -0
- package/dist/account/scene-update.js.map +1 -0
- package/dist/account/scene.d.ts +73 -0
- package/dist/account/scene.d.ts.map +1 -0
- package/dist/account/scene.js +34 -0
- package/dist/account/scene.js.map +1 -0
- package/dist/account/template-form.d.ts +52 -0
- package/dist/account/template-form.d.ts.map +1 -0
- package/dist/account/template-form.js +125 -0
- package/dist/account/template-form.js.map +1 -0
- package/dist/account/template-summary.d.ts +38 -0
- package/dist/account/template-summary.d.ts.map +1 -0
- package/dist/account/template-summary.js +179 -0
- package/dist/account/template-summary.js.map +1 -0
- package/dist/account/template-update.d.ts +35 -0
- package/dist/account/template-update.d.ts.map +1 -0
- package/dist/account/template-update.js +193 -0
- package/dist/account/template-update.js.map +1 -0
- package/dist/account/write.d.ts +14 -0
- package/dist/account/write.d.ts.map +1 -0
- package/dist/account/write.js +166 -0
- package/dist/account/write.js.map +1 -0
- package/dist/analysis/agg.d.ts +135 -0
- package/dist/analysis/agg.d.ts.map +1 -0
- package/dist/analysis/agg.js +196 -0
- package/dist/analysis/agg.js.map +1 -0
- package/dist/analysis/cards.d.ts +40 -0
- package/dist/analysis/cards.d.ts.map +1 -0
- package/dist/analysis/cards.js +97 -0
- package/dist/analysis/cards.js.map +1 -0
- package/dist/analysis/commands.d.ts +17 -0
- package/dist/analysis/commands.d.ts.map +1 -0
- package/dist/analysis/commands.js +28 -0
- package/dist/analysis/commands.js.map +1 -0
- package/dist/analysis/declaration.d.ts +9 -0
- package/dist/analysis/declaration.d.ts.map +1 -0
- package/dist/analysis/declaration.js +368 -0
- package/dist/analysis/declaration.js.map +1 -0
- package/dist/analysis/index.d.ts +14 -0
- package/dist/analysis/index.d.ts.map +1 -0
- package/dist/analysis/index.js +14 -0
- package/dist/analysis/index.js.map +1 -0
- package/dist/analysis/pageParts.d.ts +103 -0
- package/dist/analysis/pageParts.d.ts.map +1 -0
- package/dist/analysis/pageParts.js +158 -0
- package/dist/analysis/pageParts.js.map +1 -0
- package/dist/{policy/analysis.d.ts → analysis/params.d.ts} +1 -1
- package/dist/analysis/params.d.ts.map +1 -0
- package/dist/{policy/analysis.js → analysis/params.js} +10 -4
- package/dist/analysis/params.js.map +1 -0
- package/dist/analysis/read.d.ts +26 -0
- package/dist/analysis/read.d.ts.map +1 -0
- package/dist/analysis/read.js +84 -0
- package/dist/analysis/read.js.map +1 -0
- package/dist/analysis/scene-account.d.ts +3 -0
- package/dist/analysis/scene-account.d.ts.map +1 -0
- package/dist/analysis/scene-account.js +88 -0
- package/dist/analysis/scene-account.js.map +1 -0
- package/dist/analysis/scene-activity.d.ts +3 -0
- package/dist/analysis/scene-activity.d.ts.map +1 -0
- package/dist/analysis/scene-activity.js +108 -0
- package/dist/analysis/scene-activity.js.map +1 -0
- package/dist/analysis/scene-anomaly.d.ts +3 -0
- package/dist/analysis/scene-anomaly.d.ts.map +1 -0
- package/dist/analysis/scene-anomaly.js +173 -0
- package/dist/analysis/scene-anomaly.js.map +1 -0
- package/dist/analysis/scene-cat-compare.d.ts +3 -0
- package/dist/analysis/scene-cat-compare.d.ts.map +1 -0
- package/dist/analysis/scene-cat-compare.js +128 -0
- package/dist/analysis/scene-cat-compare.js.map +1 -0
- package/dist/analysis/scene-cat-trend.d.ts +3 -0
- package/dist/analysis/scene-cat-trend.d.ts.map +1 -0
- package/dist/analysis/scene-cat-trend.js +121 -0
- package/dist/analysis/scene-cat-trend.js.map +1 -0
- package/dist/analysis/scene-category.d.ts +3 -0
- package/dist/analysis/scene-category.d.ts.map +1 -0
- package/dist/analysis/scene-category.js +104 -0
- package/dist/analysis/scene-category.js.map +1 -0
- package/dist/analysis/scene-debt.d.ts +3 -0
- package/dist/analysis/scene-debt.d.ts.map +1 -0
- package/dist/analysis/scene-debt.js +111 -0
- package/dist/analysis/scene-debt.js.map +1 -0
- package/dist/analysis/scene-distribution.d.ts +3 -0
- package/dist/analysis/scene-distribution.d.ts.map +1 -0
- package/dist/analysis/scene-distribution.js +144 -0
- package/dist/analysis/scene-distribution.js.map +1 -0
- package/dist/analysis/scene-insight.d.ts +3 -0
- package/dist/analysis/scene-insight.d.ts.map +1 -0
- package/dist/analysis/scene-insight.js +151 -0
- package/dist/analysis/scene-insight.js.map +1 -0
- package/dist/analysis/scene-installment.d.ts +3 -0
- package/dist/analysis/scene-installment.d.ts.map +1 -0
- package/dist/analysis/scene-installment.js +168 -0
- package/dist/analysis/scene-installment.js.map +1 -0
- package/dist/analysis/scene-ledger.d.ts +3 -0
- package/dist/analysis/scene-ledger.d.ts.map +1 -0
- package/dist/analysis/scene-ledger.js +80 -0
- package/dist/analysis/scene-ledger.js.map +1 -0
- package/dist/analysis/scene-monthly.d.ts +3 -0
- package/dist/analysis/scene-monthly.d.ts.map +1 -0
- package/dist/analysis/scene-monthly.js +79 -0
- package/dist/analysis/scene-monthly.js.map +1 -0
- package/dist/analysis/scene-overview.d.ts +3 -0
- package/dist/analysis/scene-overview.d.ts.map +1 -0
- package/dist/analysis/scene-overview.js +82 -0
- package/dist/analysis/scene-overview.js.map +1 -0
- package/dist/analysis/scene-period-compare.d.ts +3 -0
- package/dist/analysis/scene-period-compare.d.ts.map +1 -0
- package/dist/analysis/scene-period-compare.js +127 -0
- package/dist/analysis/scene-period-compare.js.map +1 -0
- package/dist/analysis/scene-range-compare.d.ts +3 -0
- package/dist/analysis/scene-range-compare.d.ts.map +1 -0
- package/dist/analysis/scene-range-compare.js +144 -0
- package/dist/analysis/scene-range-compare.js.map +1 -0
- package/dist/analysis/scene-refund.d.ts +3 -0
- package/dist/analysis/scene-refund.d.ts.map +1 -0
- package/dist/analysis/scene-refund.js +78 -0
- package/dist/analysis/scene-refund.js.map +1 -0
- package/dist/analysis/scene-reimburse.d.ts +3 -0
- package/dist/analysis/scene-reimburse.d.ts.map +1 -0
- package/dist/analysis/scene-reimburse.js +88 -0
- package/dist/analysis/scene-reimburse.js.map +1 -0
- package/dist/analysis/scene-stats.d.ts +3 -0
- package/dist/analysis/scene-stats.d.ts.map +1 -0
- package/dist/analysis/scene-stats.js +80 -0
- package/dist/analysis/scene-stats.js.map +1 -0
- package/dist/analysis/scene-structure.d.ts +3 -0
- package/dist/analysis/scene-structure.d.ts.map +1 -0
- package/dist/analysis/scene-structure.js +93 -0
- package/dist/analysis/scene-structure.js.map +1 -0
- package/dist/analysis/scene-top-freq.d.ts +3 -0
- package/dist/analysis/scene-top-freq.d.ts.map +1 -0
- package/dist/analysis/scene-top-freq.js +91 -0
- package/dist/analysis/scene-top-freq.js.map +1 -0
- package/dist/analysis/scene-top.d.ts +3 -0
- package/dist/analysis/scene-top.d.ts.map +1 -0
- package/dist/analysis/scene-top.js +69 -0
- package/dist/analysis/scene-top.js.map +1 -0
- package/dist/analysis/scene-trend.d.ts +3 -0
- package/dist/analysis/scene-trend.d.ts.map +1 -0
- package/dist/analysis/scene-trend.js +131 -0
- package/dist/analysis/scene-trend.js.map +1 -0
- package/dist/analysis/scene-week.d.ts +3 -0
- package/dist/analysis/scene-week.d.ts.map +1 -0
- package/dist/analysis/scene-week.js +128 -0
- package/dist/analysis/scene-week.js.map +1 -0
- package/dist/analysis/scene-yearly.d.ts +3 -0
- package/dist/analysis/scene-yearly.d.ts.map +1 -0
- package/dist/analysis/scene-yearly.js +103 -0
- package/dist/analysis/scene-yearly.js.map +1 -0
- package/dist/analysis/scene-yoy.d.ts +3 -0
- package/dist/analysis/scene-yoy.d.ts.map +1 -0
- package/dist/analysis/scene-yoy.js +95 -0
- package/dist/analysis/scene-yoy.js.map +1 -0
- package/dist/analysis/scene.d.ts +240 -0
- package/dist/analysis/scene.d.ts.map +1 -0
- package/dist/analysis/scene.js +47 -0
- package/dist/analysis/scene.js.map +1 -0
- package/dist/analysis/template-bars.d.ts +3 -0
- package/dist/analysis/template-bars.d.ts.map +1 -0
- package/dist/analysis/template-bars.js +64 -0
- package/dist/analysis/template-bars.js.map +1 -0
- package/dist/analysis/template-charts.d.ts +3 -0
- package/dist/analysis/template-charts.d.ts.map +1 -0
- package/dist/analysis/template-charts.js +55 -0
- package/dist/analysis/template-charts.js.map +1 -0
- package/dist/analysis/template-compare.d.ts +3 -0
- package/dist/analysis/template-compare.d.ts.map +1 -0
- package/dist/analysis/template-compare.js +54 -0
- package/dist/analysis/template-compare.js.map +1 -0
- package/dist/analysis/template-insight.d.ts +3 -0
- package/dist/analysis/template-insight.d.ts.map +1 -0
- package/dist/analysis/template-insight.js +56 -0
- package/dist/analysis/template-insight.js.map +1 -0
- package/dist/analysis/template-tables.d.ts +3 -0
- package/dist/analysis/template-tables.d.ts.map +1 -0
- package/dist/analysis/template-tables.js +49 -0
- package/dist/analysis/template-tables.js.map +1 -0
- package/dist/analysis/views.d.ts +35 -0
- package/dist/analysis/views.d.ts.map +1 -0
- package/dist/{render → analysis}/views.js +2 -40
- package/dist/analysis/views.js.map +1 -0
- package/dist/cli/cmd_read.js +54 -302
- package/dist/cli/cmd_read.js.map +1 -1
- package/dist/cli/config.d.ts +16 -0
- package/dist/cli/config.d.ts.map +1 -0
- package/dist/cli/config.js +81 -0
- package/dist/cli/config.js.map +1 -0
- package/dist/cli/health.d.ts +7 -0
- package/dist/cli/health.d.ts.map +1 -0
- package/dist/cli/health.js +32 -0
- package/dist/cli/health.js.map +1 -0
- package/dist/cli/registry.d.ts +1 -1
- package/dist/cli/registry.d.ts.map +1 -1
- package/dist/cli/registry.js +9 -1
- package/dist/cli/registry.js.map +1 -1
- package/dist/config.d.ts +41 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +64 -0
- package/dist/config.js.map +1 -0
- package/dist/fetch/db.d.ts +6 -1
- package/dist/fetch/db.d.ts.map +1 -1
- package/dist/fetch/db.js +8 -3
- package/dist/fetch/db.js.map +1 -1
- package/dist/fetch/index.d.ts +1 -1
- package/dist/fetch/index.d.ts.map +1 -1
- package/dist/fetch/index.js +1 -1
- package/dist/fetch/index.js.map +1 -1
- package/dist/fetch/paths.d.ts +16 -4
- package/dist/fetch/paths.d.ts.map +1 -1
- package/dist/fetch/paths.js +54 -24
- package/dist/fetch/paths.js.map +1 -1
- package/dist/goal/commands.d.ts +18 -0
- package/dist/goal/commands.d.ts.map +1 -0
- package/dist/goal/commands.js +21 -0
- package/dist/goal/commands.js.map +1 -0
- package/dist/goal/declaration.d.ts +9 -0
- package/dist/goal/declaration.d.ts.map +1 -0
- package/dist/goal/declaration.js +71 -0
- package/dist/goal/declaration.js.map +1 -0
- package/dist/goal/goalData.d.ts +126 -0
- package/dist/goal/goalData.d.ts.map +1 -0
- package/dist/goal/goalData.js +228 -0
- package/dist/goal/goalData.js.map +1 -0
- package/dist/goal/index.d.ts +19 -0
- package/dist/goal/index.d.ts.map +1 -0
- package/dist/goal/index.js +19 -0
- package/dist/goal/index.js.map +1 -0
- package/dist/goal/pageParts.d.ts +140 -0
- package/dist/goal/pageParts.d.ts.map +1 -0
- package/dist/goal/pageParts.js +233 -0
- package/dist/goal/pageParts.js.map +1 -0
- package/dist/goal/params.d.ts +63 -0
- package/dist/goal/params.d.ts.map +1 -0
- package/dist/goal/params.js +164 -0
- package/dist/goal/params.js.map +1 -0
- package/dist/goal/query.d.ts +12 -0
- package/dist/goal/query.d.ts.map +1 -0
- package/dist/goal/query.js +10 -0
- package/dist/goal/query.js.map +1 -0
- package/dist/goal/read.d.ts +5 -0
- package/dist/goal/read.d.ts.map +1 -0
- package/dist/goal/read.js +79 -0
- package/dist/goal/read.js.map +1 -0
- package/dist/goal/scene-budget.d.ts +3 -0
- package/dist/goal/scene-budget.d.ts.map +1 -0
- package/dist/goal/scene-budget.js +125 -0
- package/dist/goal/scene-budget.js.map +1 -0
- package/dist/goal/scene-saving.d.ts +3 -0
- package/dist/goal/scene-saving.d.ts.map +1 -0
- package/dist/goal/scene-saving.js +116 -0
- package/dist/goal/scene-saving.js.map +1 -0
- package/dist/goal/scene-set-budget.d.ts +3 -0
- package/dist/goal/scene-set-budget.d.ts.map +1 -0
- package/dist/goal/scene-set-budget.js +94 -0
- package/dist/goal/scene-set-budget.js.map +1 -0
- package/dist/goal/scene-set-saving.d.ts +3 -0
- package/dist/goal/scene-set-saving.d.ts.map +1 -0
- package/dist/goal/scene-set-saving.js +66 -0
- package/dist/goal/scene-set-saving.js.map +1 -0
- package/dist/goal/scene.d.ts +142 -0
- package/dist/goal/scene.d.ts.map +1 -0
- package/dist/goal/scene.js +51 -0
- package/dist/goal/scene.js.map +1 -0
- package/dist/goal/template-form.d.ts +32 -0
- package/dist/goal/template-form.d.ts.map +1 -0
- package/dist/goal/template-form.js +124 -0
- package/dist/goal/template-form.js.map +1 -0
- package/dist/goal/template-progress.d.ts +47 -0
- package/dist/goal/template-progress.d.ts.map +1 -0
- package/dist/goal/template-progress.js +79 -0
- package/dist/goal/template-progress.js.map +1 -0
- package/dist/goal/write.d.ts +6 -0
- package/dist/goal/write.d.ts.map +1 -0
- package/dist/goal/write.js +131 -0
- package/dist/goal/write.js.map +1 -0
- package/dist/health.d.ts +41 -0
- package/dist/health.d.ts.map +1 -0
- package/dist/health.js +456 -0
- package/dist/health.js.map +1 -0
- package/dist/help/declaration.d.ts +9 -0
- package/dist/help/declaration.d.ts.map +1 -0
- package/dist/help/declaration.js +28 -0
- package/dist/help/declaration.js.map +1 -0
- package/dist/{render → help}/helpFile.d.ts +5 -2
- package/dist/help/helpFile.d.ts.map +1 -0
- package/dist/{render → help}/helpFile.js +13 -4
- package/dist/help/helpFile.js.map +1 -0
- package/dist/help/helpPaths.d.ts +11 -0
- package/dist/help/helpPaths.d.ts.map +1 -0
- package/dist/help/helpPaths.js +36 -0
- package/dist/help/helpPaths.js.map +1 -0
- package/dist/help/index.d.ts +2 -1
- package/dist/help/index.d.ts.map +1 -1
- package/dist/help/index.js +2 -1
- package/dist/help/index.js.map +1 -1
- package/dist/help/items.d.ts +17 -0
- package/dist/help/items.d.ts.map +1 -0
- package/dist/help/items.js +5 -0
- package/dist/help/items.js.map +1 -0
- package/dist/help/lookup.d.ts +1 -1
- package/dist/help/lookup.d.ts.map +1 -1
- package/dist/help/lookup.js +2 -2
- package/dist/help/lookup.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/link/declaration.d.ts +9 -0
- package/dist/link/declaration.d.ts.map +1 -0
- package/dist/link/declaration.js +40 -0
- package/dist/link/declaration.js.map +1 -0
- package/dist/query/commands.d.ts +0 -2
- package/dist/query/commands.d.ts.map +1 -1
- package/dist/query/commands.js +0 -4
- package/dist/query/commands.js.map +1 -1
- package/dist/query/declaration.d.ts +9 -0
- package/dist/query/declaration.d.ts.map +1 -0
- package/dist/query/declaration.js +251 -0
- package/dist/query/declaration.js.map +1 -0
- package/dist/query/detail.d.ts +4 -2
- package/dist/query/detail.d.ts.map +1 -1
- package/dist/query/detail.js +60 -32
- package/dist/query/detail.js.map +1 -1
- package/dist/query/index.d.ts +8 -2
- package/dist/query/index.d.ts.map +1 -1
- package/dist/query/index.js.map +1 -1
- package/dist/query/items.d.ts +22 -0
- package/dist/query/items.d.ts.map +1 -0
- package/dist/query/items.js +7 -0
- package/dist/query/items.js.map +1 -0
- package/dist/query/list.d.ts +31 -9
- package/dist/query/list.d.ts.map +1 -1
- package/dist/query/list.js +192 -55
- package/dist/query/list.js.map +1 -1
- package/dist/query/pageParts.d.ts +6 -0
- package/dist/query/pageParts.d.ts.map +1 -0
- package/dist/query/pageParts.js +18 -0
- package/dist/query/pageParts.js.map +1 -0
- package/dist/query/read.d.ts +8 -12
- package/dist/query/read.d.ts.map +1 -1
- package/dist/query/read.js +86 -63
- package/dist/query/read.js.map +1 -1
- package/dist/render/envelope.d.ts.map +1 -1
- package/dist/render/envelope.js +3 -11
- package/dist/render/envelope.js.map +1 -1
- package/dist/render/html.d.ts +0 -1
- package/dist/render/html.d.ts.map +1 -1
- package/dist/render/html.js +1 -3
- package/dist/render/html.js.map +1 -1
- package/dist/render/index.d.ts +5 -6
- package/dist/render/index.d.ts.map +1 -1
- package/dist/render/index.js +8 -4
- package/dist/render/index.js.map +1 -1
- package/dist/setup/backups.d.ts +52 -0
- package/dist/setup/backups.d.ts.map +1 -0
- package/dist/setup/backups.js +172 -0
- package/dist/setup/backups.js.map +1 -0
- package/dist/setup/blocked.d.ts +12 -0
- package/dist/setup/blocked.d.ts.map +1 -0
- package/dist/setup/blocked.js +65 -0
- package/dist/setup/blocked.js.map +1 -0
- package/dist/setup/commands.d.ts +10 -0
- package/dist/setup/commands.d.ts.map +1 -0
- package/dist/setup/commands.js +12 -0
- package/dist/setup/commands.js.map +1 -0
- package/dist/setup/declaration.d.ts +9 -0
- package/dist/setup/declaration.d.ts.map +1 -0
- package/dist/setup/declaration.js +92 -0
- package/dist/setup/declaration.js.map +1 -0
- package/dist/setup/import.d.ts +8 -0
- package/dist/setup/import.d.ts.map +1 -0
- package/dist/setup/import.js +111 -0
- package/dist/setup/import.js.map +1 -0
- package/dist/setup/importer.d.ts +79 -0
- package/dist/setup/importer.d.ts.map +1 -0
- package/dist/setup/importer.js +231 -0
- package/dist/setup/importer.js.map +1 -0
- package/dist/setup/index.d.ts +8 -0
- package/dist/setup/index.d.ts.map +1 -0
- package/dist/setup/index.js +8 -0
- package/dist/setup/index.js.map +1 -0
- package/dist/setup/pageParts.d.ts +93 -0
- package/dist/setup/pageParts.d.ts.map +1 -0
- package/dist/setup/pageParts.js +197 -0
- package/dist/setup/pageParts.js.map +1 -0
- package/dist/setup/params.d.ts +43 -0
- package/dist/setup/params.d.ts.map +1 -0
- package/dist/setup/params.js +94 -0
- package/dist/setup/params.js.map +1 -0
- package/dist/setup/restore.d.ts +5 -0
- package/dist/setup/restore.d.ts.map +1 -0
- package/dist/setup/restore.js +129 -0
- package/dist/setup/restore.js.map +1 -0
- package/dist/setup/run.d.ts +5 -0
- package/dist/setup/run.d.ts.map +1 -0
- package/dist/setup/run.js +188 -0
- package/dist/setup/run.js.map +1 -0
- package/dist/setup/scene-backup-create.d.ts +3 -0
- package/dist/setup/scene-backup-create.d.ts.map +1 -0
- package/dist/setup/scene-backup-create.js +26 -0
- package/dist/setup/scene-backup-create.js.map +1 -0
- package/dist/setup/scene-backup-list.d.ts +3 -0
- package/dist/setup/scene-backup-list.d.ts.map +1 -0
- package/dist/setup/scene-backup-list.js +24 -0
- package/dist/setup/scene-backup-list.js.map +1 -0
- package/dist/setup/scene-import.d.ts +3 -0
- package/dist/setup/scene-import.d.ts.map +1 -0
- package/dist/setup/scene-import.js +36 -0
- package/dist/setup/scene-import.js.map +1 -0
- package/dist/setup/scene-init-status.d.ts +14 -0
- package/dist/setup/scene-init-status.d.ts.map +1 -0
- package/dist/setup/scene-init-status.js +16 -0
- package/dist/setup/scene-init-status.js.map +1 -0
- package/dist/setup/scene-init.d.ts +3 -0
- package/dist/setup/scene-init.d.ts.map +1 -0
- package/dist/setup/scene-init.js +25 -0
- package/dist/setup/scene-init.js.map +1 -0
- package/dist/setup/scene-restore.d.ts +3 -0
- package/dist/setup/scene-restore.d.ts.map +1 -0
- package/dist/setup/scene-restore.js +33 -0
- package/dist/setup/scene-restore.js.map +1 -0
- package/dist/setup/scene.d.ts +26 -0
- package/dist/setup/scene.d.ts.map +1 -0
- package/dist/setup/scene.js +42 -0
- package/dist/setup/scene.js.map +1 -0
- package/dist/setup/status.d.ts +47 -0
- package/dist/setup/status.d.ts.map +1 -0
- package/dist/setup/status.js +68 -0
- package/dist/setup/status.js.map +1 -0
- package/dist/setup/steps.d.ts +66 -0
- package/dist/setup/steps.d.ts.map +1 -0
- package/dist/setup/steps.js +123 -0
- package/dist/setup/steps.js.map +1 -0
- package/dist/setup/template-list.d.ts +29 -0
- package/dist/setup/template-list.d.ts.map +1 -0
- package/dist/setup/template-list.js +187 -0
- package/dist/setup/template-list.js.map +1 -0
- package/dist/setup/template-receipt.d.ts +18 -0
- package/dist/setup/template-receipt.d.ts.map +1 -0
- package/dist/setup/template-receipt.js +93 -0
- package/dist/setup/template-receipt.js.map +1 -0
- package/dist/setup/template-wizard.d.ts +64 -0
- package/dist/setup/template-wizard.d.ts.map +1 -0
- package/dist/setup/template-wizard.js +233 -0
- package/dist/setup/template-wizard.js.map +1 -0
- package/dist/{policy → shared}/category.d.ts +0 -11
- package/dist/shared/category.d.ts.map +1 -0
- package/dist/{policy → shared}/category.js +15 -60
- package/dist/shared/category.js.map +1 -0
- package/dist/shared/commandSpec.d.ts +13 -10
- package/dist/shared/commandSpec.d.ts.map +1 -1
- package/dist/shared/copyArea.d.ts +15 -6
- package/dist/shared/copyArea.d.ts.map +1 -1
- package/dist/shared/copyArea.js +33 -14
- package/dist/shared/copyArea.js.map +1 -1
- package/dist/shared/dateRange.d.ts +31 -0
- package/dist/shared/dateRange.d.ts.map +1 -0
- package/dist/shared/dateRange.js +121 -0
- package/dist/shared/dateRange.js.map +1 -0
- package/dist/shared/docPage.d.ts +13 -1
- package/dist/shared/docPage.d.ts.map +1 -1
- package/dist/shared/docPage.js +65 -53
- package/dist/shared/docPage.js.map +1 -1
- package/dist/shared/kpi.d.ts +21 -0
- package/dist/shared/kpi.d.ts.map +1 -0
- package/dist/shared/kpi.js +20 -0
- package/dist/shared/kpi.js.map +1 -0
- package/dist/shared/pageIdentity.d.ts +11 -2
- package/dist/shared/pageIdentity.d.ts.map +1 -1
- package/dist/shared/pageIdentity.js +14 -2
- package/dist/shared/pageIdentity.js.map +1 -1
- package/dist/shared/pageSections.d.ts +23 -0
- package/dist/shared/pageSections.d.ts.map +1 -0
- package/dist/shared/pageSections.js +52 -0
- package/dist/shared/pageSections.js.map +1 -0
- package/dist/shared/pageShell.d.ts +2 -2
- package/dist/shared/pageShell.d.ts.map +1 -1
- package/dist/shared/pageShell.js +5 -10
- package/dist/shared/pageShell.js.map +1 -1
- package/dist/shared/params.d.ts +11 -0
- package/dist/shared/params.d.ts.map +1 -0
- package/dist/shared/params.js +60 -0
- package/dist/shared/params.js.map +1 -0
- package/dist/shared/sourceLine.d.ts +19 -0
- package/dist/shared/sourceLine.d.ts.map +1 -0
- package/dist/shared/sourceLine.js +52 -0
- package/dist/shared/sourceLine.js.map +1 -0
- package/dist/shared/writeParts.d.ts +5 -3
- package/dist/shared/writeParts.d.ts.map +1 -1
- package/dist/shared/writeParts.js.map +1 -1
- package/dist/triggers/routeSpec.d.ts +109 -0
- package/dist/triggers/routeSpec.d.ts.map +1 -0
- package/dist/triggers/routeSpec.js +19 -0
- package/dist/triggers/routeSpec.js.map +1 -0
- package/dist/triggers/wake-assets.d.ts +4 -26
- package/dist/triggers/wake-assets.d.ts.map +1 -1
- package/dist/triggers/wake-assets.js +52 -936
- package/dist/triggers/wake-assets.js.map +1 -1
- package/dist/triggers/wakeTable.d.ts +18 -0
- package/dist/triggers/wakeTable.d.ts.map +1 -0
- package/dist/triggers/wakeTable.js +135 -0
- package/dist/triggers/wakeTable.js.map +1 -0
- package/dist/write/blockedFold.d.ts +10 -0
- package/dist/write/blockedFold.d.ts.map +1 -0
- package/dist/write/blockedFold.js +31 -0
- package/dist/write/blockedFold.js.map +1 -0
- package/dist/{shared → write}/blockedSlots.d.ts +5 -2
- package/dist/write/blockedSlots.d.ts.map +1 -0
- package/dist/{shared → write}/blockedSlots.js +23 -17
- package/dist/write/blockedSlots.js.map +1 -0
- package/dist/write/candidatePick.d.ts.map +1 -0
- package/dist/{shared → write}/candidatePick.js +5 -4
- package/dist/write/candidatePick.js.map +1 -0
- package/dist/{record → write}/collect.d.ts +6 -4
- package/dist/write/collect.d.ts.map +1 -0
- package/dist/write/collect.js.map +1 -0
- package/dist/{record → write}/collectBody.d.ts +3 -3
- package/dist/write/collectBody.d.ts.map +1 -0
- package/dist/{record → write}/collectBody.js +13 -13
- package/dist/write/collectBody.js.map +1 -0
- package/dist/{shared → write}/collectFrame.d.ts +3 -1
- package/dist/{shared → write}/collectFrame.d.ts.map +1 -1
- package/dist/write/collectFrame.js +36 -0
- package/dist/write/collectFrame.js.map +1 -0
- package/dist/{record → write}/commands.d.ts +0 -1
- package/dist/write/commands.d.ts.map +1 -0
- package/dist/{record → write}/commands.js +0 -2
- package/dist/write/commands.js.map +1 -0
- package/dist/write/declaration.d.ts +9 -0
- package/dist/write/declaration.d.ts.map +1 -0
- package/dist/write/declaration.js +239 -0
- package/dist/write/declaration.js.map +1 -0
- package/dist/write/diffTable.d.ts.map +1 -0
- package/dist/{shared → write}/diffTable.js +2 -2
- package/dist/write/diffTable.js.map +1 -0
- package/dist/write/duplicateNote.d.ts.map +1 -0
- package/dist/{shared → write}/duplicateNote.js +14 -7
- package/dist/write/duplicateNote.js.map +1 -0
- package/dist/write/emptyNote.d.ts.map +1 -0
- package/dist/{shared → write}/emptyNote.js +2 -2
- package/dist/write/emptyNote.js.map +1 -0
- package/dist/{shared → write}/errorReceipt.d.ts +1 -1
- package/dist/write/errorReceipt.d.ts.map +1 -0
- package/dist/{shared → write}/errorReceipt.js +2 -2
- package/dist/write/errorReceipt.js.map +1 -0
- package/dist/write/flowSteps.d.ts.map +1 -0
- package/dist/{shared → write}/flowSteps.js +1 -1
- package/dist/write/flowSteps.js.map +1 -0
- package/dist/{record → write}/index.d.ts +7 -3
- package/dist/write/index.d.ts.map +1 -0
- package/dist/{record → write}/index.js +1 -0
- package/dist/write/index.js.map +1 -0
- package/dist/write/installmentPreview.d.ts.map +1 -0
- package/dist/{shared → write}/installmentPreview.js +3 -3
- package/dist/write/installmentPreview.js.map +1 -0
- package/dist/write/outsideScan.d.ts.map +1 -0
- package/dist/{shared → write}/outsideScan.js +7 -7
- package/dist/write/outsideScan.js.map +1 -0
- package/dist/write/pageParts.d.ts +69 -0
- package/dist/write/pageParts.d.ts.map +1 -0
- package/dist/write/pageParts.js +80 -0
- package/dist/write/pageParts.js.map +1 -0
- package/dist/write/photoEscape.d.ts.map +1 -0
- package/dist/{shared → write}/photoEscape.js +18 -16
- package/dist/write/photoEscape.js.map +1 -0
- package/dist/write/prefillNote.d.ts.map +1 -0
- package/dist/{shared → write}/prefillNote.js +8 -7
- package/dist/write/prefillNote.js.map +1 -0
- package/dist/{record → write}/receipt.d.ts +5 -3
- package/dist/write/receipt.d.ts.map +1 -0
- package/dist/write/receipt.js.map +1 -0
- package/dist/write/receiptBody.d.ts +10 -0
- package/dist/write/receiptBody.d.ts.map +1 -0
- package/dist/{record → write}/receiptBody.js +24 -25
- package/dist/write/receiptBody.js.map +1 -0
- package/dist/write/receiptOut.d.ts +14 -0
- package/dist/write/receiptOut.d.ts.map +1 -0
- package/dist/write/receiptOut.js +13 -0
- package/dist/write/receiptOut.js.map +1 -0
- package/dist/{shared → write}/receiptParts.d.ts +1 -1
- package/dist/write/receiptParts.d.ts.map +1 -0
- package/dist/{shared → write}/receiptParts.js +4 -4
- package/dist/write/receiptParts.js.map +1 -0
- package/dist/{shared → write}/recentPicks.d.ts +14 -6
- package/dist/write/recentPicks.d.ts.map +1 -0
- package/dist/write/recentPicks.js +65 -0
- package/dist/write/recentPicks.js.map +1 -0
- package/dist/write/record.d.ts +13 -0
- package/dist/write/record.d.ts.map +1 -0
- package/dist/write/record.js +46 -0
- package/dist/write/record.js.map +1 -0
- package/dist/write/recordPicker.d.ts.map +1 -0
- package/dist/{shared → write}/recordPicker.js +4 -4
- package/dist/write/recordPicker.js.map +1 -0
- package/dist/write/rowEditorTable.d.ts.map +1 -0
- package/dist/{shared → write}/rowEditorTable.js +1 -1
- package/dist/write/rowEditorTable.js.map +1 -0
- package/dist/write/scene-batch.d.ts.map +1 -0
- package/dist/write/scene-batch.js +37 -0
- package/dist/write/scene-batch.js.map +1 -0
- package/dist/write/scene-borrow.d.ts.map +1 -0
- package/dist/write/scene-borrow.js +166 -0
- package/dist/write/scene-borrow.js.map +1 -0
- package/dist/write/scene-collect.d.ts.map +1 -0
- package/dist/write/scene-collect.js +155 -0
- package/dist/write/scene-collect.js.map +1 -0
- package/dist/write/scene-expense.d.ts.map +1 -0
- package/dist/write/scene-expense.js +50 -0
- package/dist/write/scene-expense.js.map +1 -0
- package/dist/write/scene-income.d.ts.map +1 -0
- package/dist/write/scene-income.js +51 -0
- package/dist/write/scene-income.js.map +1 -0
- package/dist/write/scene-installment.d.ts.map +1 -0
- package/dist/write/scene-installment.js +52 -0
- package/dist/write/scene-installment.js.map +1 -0
- package/dist/write/scene-lend.d.ts.map +1 -0
- package/dist/write/scene-lend.js +165 -0
- package/dist/write/scene-lend.js.map +1 -0
- package/dist/write/scene-photo.d.ts.map +1 -0
- package/dist/write/scene-photo.js +108 -0
- package/dist/write/scene-photo.js.map +1 -0
- package/dist/write/scene-plain.d.ts.map +1 -0
- package/dist/write/scene-plain.js +52 -0
- package/dist/write/scene-plain.js.map +1 -0
- package/dist/write/scene-refund.d.ts.map +1 -0
- package/dist/write/scene-refund.js +139 -0
- package/dist/write/scene-refund.js.map +1 -0
- package/dist/write/scene-reimburse-done.d.ts.map +1 -0
- package/dist/write/scene-reimburse-done.js +151 -0
- package/dist/write/scene-reimburse-done.js.map +1 -0
- package/dist/write/scene-reimburse.d.ts.map +1 -0
- package/dist/write/scene-reimburse.js +65 -0
- package/dist/write/scene-reimburse.js.map +1 -0
- package/dist/write/scene-repay.d.ts.map +1 -0
- package/dist/write/scene-repay.js +155 -0
- package/dist/write/scene-repay.js.map +1 -0
- package/dist/write/scene-restore.d.ts.map +1 -0
- package/dist/write/scene-restore.js +59 -0
- package/dist/write/scene-restore.js.map +1 -0
- package/dist/write/scene-undo.d.ts.map +1 -0
- package/dist/write/scene-undo.js +57 -0
- package/dist/write/scene-undo.js.map +1 -0
- package/dist/write/scene-update.d.ts.map +1 -0
- package/dist/write/scene-update.js +57 -0
- package/dist/write/scene-update.js.map +1 -0
- package/dist/{record → write}/scene.d.ts +16 -9
- package/dist/write/scene.d.ts.map +1 -0
- package/dist/{record → write}/scene.js +6 -1
- package/dist/write/scene.js.map +1 -0
- package/dist/write/slots.d.ts.map +1 -0
- package/dist/{record → write}/slots.js +9 -8
- package/dist/{record → write}/slots.js.map +1 -1
- package/dist/write/sourceNote.d.ts +5 -0
- package/dist/write/sourceNote.d.ts.map +1 -0
- package/dist/write/sourceNote.js +37 -0
- package/dist/write/sourceNote.js.map +1 -0
- package/dist/write/summaryRow.d.ts.map +1 -0
- package/dist/{shared → write}/summaryRow.js +11 -7
- package/dist/write/summaryRow.js.map +1 -0
- package/dist/write/template-batch.d.ts +37 -0
- package/dist/write/template-batch.d.ts.map +1 -0
- package/dist/write/template-batch.js +212 -0
- package/dist/write/template-batch.js.map +1 -0
- package/dist/write/template-expense.d.ts +96 -0
- package/dist/write/template-expense.d.ts.map +1 -0
- package/dist/write/template-expense.js +220 -0
- package/dist/write/template-expense.js.map +1 -0
- package/dist/write/template-flow.d.ts +130 -0
- package/dist/write/template-flow.d.ts.map +1 -0
- package/dist/write/template-flow.js +225 -0
- package/dist/write/template-flow.js.map +1 -0
- package/dist/write/template-installment.d.ts +69 -0
- package/dist/write/template-installment.d.ts.map +1 -0
- package/dist/write/template-installment.js +240 -0
- package/dist/write/template-installment.js.map +1 -0
- package/dist/write/template-update.d.ts +83 -0
- package/dist/write/template-update.d.ts.map +1 -0
- package/dist/write/template-update.js +268 -0
- package/dist/write/template-update.js.map +1 -0
- package/dist/{shared → write}/typeBadge.d.ts +9 -2
- package/dist/write/typeBadge.d.ts.map +1 -0
- package/dist/{shared → write}/typeBadge.js +16 -8
- package/dist/write/typeBadge.js.map +1 -0
- package/dist/{shared → write}/userWording.d.ts +2 -24
- package/dist/write/userWording.d.ts.map +1 -0
- package/dist/{shared → write}/userWording.js +12 -22
- package/dist/write/userWording.js.map +1 -0
- package/dist/write/write.d.ts.map +1 -0
- package/dist/{record → write}/write.js +7 -7
- package/dist/write/write.js.map +1 -0
- package/dist/{help → write}/writeWire.d.ts +1 -1
- package/dist/{help → write}/writeWire.d.ts.map +1 -1
- package/dist/{help → write}/writeWire.js +3 -3
- package/dist/write/writeWire.js.map +1 -0
- package/package.json +3 -3
- package/dist/help/writeWire.js.map +0 -1
- package/dist/policy/accounts.d.ts +0 -13
- package/dist/policy/accounts.d.ts.map +0 -1
- package/dist/policy/accounts.js +0 -31
- package/dist/policy/accounts.js.map +0 -1
- package/dist/policy/analysis.d.ts.map +0 -1
- package/dist/policy/analysis.js.map +0 -1
- package/dist/policy/category.d.ts.map +0 -1
- package/dist/policy/category.js.map +0 -1
- package/dist/policy/goals.d.ts +0 -15
- package/dist/policy/goals.d.ts.map +0 -1
- package/dist/policy/goals.js +0 -33
- package/dist/policy/goals.js.map +0 -1
- package/dist/policy/index.d.ts +0 -13
- package/dist/policy/index.d.ts.map +0 -1
- package/dist/policy/index.js +0 -7
- package/dist/policy/index.js.map +0 -1
- package/dist/policy/record.d.ts +0 -27
- package/dist/policy/record.d.ts.map +0 -1
- package/dist/policy/record.js +0 -89
- package/dist/policy/record.js.map +0 -1
- package/dist/policy/wakewords.d.ts +0 -18
- package/dist/policy/wakewords.d.ts.map +0 -1
- package/dist/policy/wakewords.js +0 -126
- package/dist/policy/wakewords.js.map +0 -1
- package/dist/record/collect.d.ts.map +0 -1
- package/dist/record/collect.js.map +0 -1
- package/dist/record/collectBody.d.ts.map +0 -1
- package/dist/record/collectBody.js.map +0 -1
- package/dist/record/commands.d.ts.map +0 -1
- package/dist/record/commands.js.map +0 -1
- package/dist/record/index.d.ts.map +0 -1
- package/dist/record/index.js.map +0 -1
- package/dist/record/receipt.d.ts.map +0 -1
- package/dist/record/receipt.js.map +0 -1
- package/dist/record/receiptBody.d.ts +0 -5
- package/dist/record/receiptBody.d.ts.map +0 -1
- package/dist/record/receiptBody.js.map +0 -1
- package/dist/record/scene-batch.d.ts.map +0 -1
- package/dist/record/scene-batch.js +0 -211
- package/dist/record/scene-batch.js.map +0 -1
- package/dist/record/scene-borrow.d.ts.map +0 -1
- package/dist/record/scene-borrow.js +0 -285
- package/dist/record/scene-borrow.js.map +0 -1
- package/dist/record/scene-collect.d.ts.map +0 -1
- package/dist/record/scene-collect.js +0 -294
- package/dist/record/scene-collect.js.map +0 -1
- package/dist/record/scene-expense.d.ts.map +0 -1
- package/dist/record/scene-expense.js +0 -21
- package/dist/record/scene-expense.js.map +0 -1
- package/dist/record/scene-income.d.ts.map +0 -1
- package/dist/record/scene-income.js +0 -219
- package/dist/record/scene-income.js.map +0 -1
- package/dist/record/scene-installment.d.ts.map +0 -1
- package/dist/record/scene-installment.js +0 -248
- package/dist/record/scene-installment.js.map +0 -1
- package/dist/record/scene-lend.d.ts.map +0 -1
- package/dist/record/scene-lend.js +0 -273
- package/dist/record/scene-lend.js.map +0 -1
- package/dist/record/scene-photo.d.ts.map +0 -1
- package/dist/record/scene-photo.js +0 -262
- package/dist/record/scene-photo.js.map +0 -1
- package/dist/record/scene-plain.d.ts.map +0 -1
- package/dist/record/scene-plain.js +0 -221
- package/dist/record/scene-plain.js.map +0 -1
- package/dist/record/scene-refund.d.ts.map +0 -1
- package/dist/record/scene-refund.js +0 -281
- package/dist/record/scene-refund.js.map +0 -1
- package/dist/record/scene-reimburse-done.d.ts.map +0 -1
- package/dist/record/scene-reimburse-done.js +0 -288
- package/dist/record/scene-reimburse-done.js.map +0 -1
- package/dist/record/scene-reimburse.d.ts.map +0 -1
- package/dist/record/scene-reimburse.js +0 -224
- package/dist/record/scene-reimburse.js.map +0 -1
- package/dist/record/scene-repay.d.ts.map +0 -1
- package/dist/record/scene-repay.js +0 -294
- package/dist/record/scene-repay.js.map +0 -1
- package/dist/record/scene-restore.d.ts.map +0 -1
- package/dist/record/scene-restore.js +0 -250
- package/dist/record/scene-restore.js.map +0 -1
- package/dist/record/scene-undo.d.ts.map +0 -1
- package/dist/record/scene-undo.js +0 -262
- package/dist/record/scene-undo.js.map +0 -1
- package/dist/record/scene-update.d.ts.map +0 -1
- package/dist/record/scene-update.js +0 -249
- package/dist/record/scene-update.js.map +0 -1
- package/dist/record/scene.d.ts.map +0 -1
- package/dist/record/scene.js.map +0 -1
- package/dist/record/slots.d.ts.map +0 -1
- package/dist/record/write.d.ts.map +0 -1
- package/dist/record/write.js.map +0 -1
- package/dist/render/helpFile.d.ts.map +0 -1
- package/dist/render/helpFile.js.map +0 -1
- package/dist/render/helpPaths.d.ts +0 -19
- package/dist/render/helpPaths.d.ts.map +0 -1
- package/dist/render/helpPaths.js +0 -19
- package/dist/render/helpPaths.js.map +0 -1
- package/dist/render/views.d.ts +0 -64
- package/dist/render/views.d.ts.map +0 -1
- package/dist/render/views.js.map +0 -1
- package/dist/shared/blockedSlots.d.ts.map +0 -1
- package/dist/shared/blockedSlots.js.map +0 -1
- package/dist/shared/candidatePick.d.ts.map +0 -1
- package/dist/shared/candidatePick.js.map +0 -1
- package/dist/shared/collectFrame.js +0 -34
- package/dist/shared/collectFrame.js.map +0 -1
- package/dist/shared/diffTable.d.ts.map +0 -1
- package/dist/shared/diffTable.js.map +0 -1
- package/dist/shared/duplicateNote.d.ts.map +0 -1
- package/dist/shared/duplicateNote.js.map +0 -1
- package/dist/shared/emptyNote.d.ts.map +0 -1
- package/dist/shared/emptyNote.js.map +0 -1
- package/dist/shared/errorReceipt.d.ts.map +0 -1
- package/dist/shared/errorReceipt.js.map +0 -1
- package/dist/shared/flowSteps.d.ts.map +0 -1
- package/dist/shared/flowSteps.js.map +0 -1
- package/dist/shared/installmentPreview.d.ts.map +0 -1
- package/dist/shared/installmentPreview.js.map +0 -1
- package/dist/shared/outsideScan.d.ts.map +0 -1
- package/dist/shared/outsideScan.js.map +0 -1
- package/dist/shared/photoEscape.d.ts.map +0 -1
- package/dist/shared/photoEscape.js.map +0 -1
- package/dist/shared/prefillNote.d.ts.map +0 -1
- package/dist/shared/prefillNote.js.map +0 -1
- package/dist/shared/receiptParts.d.ts.map +0 -1
- package/dist/shared/receiptParts.js.map +0 -1
- package/dist/shared/recentPicks.d.ts.map +0 -1
- package/dist/shared/recentPicks.js +0 -41
- package/dist/shared/recentPicks.js.map +0 -1
- package/dist/shared/recordPicker.d.ts.map +0 -1
- package/dist/shared/recordPicker.js.map +0 -1
- package/dist/shared/rowEditorTable.d.ts.map +0 -1
- package/dist/shared/rowEditorTable.js.map +0 -1
- package/dist/shared/summaryRow.d.ts.map +0 -1
- package/dist/shared/summaryRow.js.map +0 -1
- package/dist/shared/typeBadge.d.ts.map +0 -1
- package/dist/shared/typeBadge.js.map +0 -1
- package/dist/shared/userWording.d.ts.map +0 -1
- package/dist/shared/userWording.js.map +0 -1
- /package/dist/{shared → write}/candidatePick.d.ts +0 -0
- /package/dist/{record → write}/collect.js +0 -0
- /package/dist/{shared → write}/diffTable.d.ts +0 -0
- /package/dist/{shared → write}/duplicateNote.d.ts +0 -0
- /package/dist/{shared → write}/emptyNote.d.ts +0 -0
- /package/dist/{shared → write}/flowSteps.d.ts +0 -0
- /package/dist/{shared → write}/installmentPreview.d.ts +0 -0
- /package/dist/{shared → write}/outsideScan.d.ts +0 -0
- /package/dist/{shared → write}/photoEscape.d.ts +0 -0
- /package/dist/{shared → write}/prefillNote.d.ts +0 -0
- /package/dist/{record → write}/receipt.js +0 -0
- /package/dist/{shared → write}/recordPicker.d.ts +0 -0
- /package/dist/{shared → write}/rowEditorTable.d.ts +0 -0
- /package/dist/{record → write}/scene-batch.d.ts +0 -0
- /package/dist/{record → write}/scene-borrow.d.ts +0 -0
- /package/dist/{record → write}/scene-collect.d.ts +0 -0
- /package/dist/{record → write}/scene-expense.d.ts +0 -0
- /package/dist/{record → write}/scene-income.d.ts +0 -0
- /package/dist/{record → write}/scene-installment.d.ts +0 -0
- /package/dist/{record → write}/scene-lend.d.ts +0 -0
- /package/dist/{record → write}/scene-photo.d.ts +0 -0
- /package/dist/{record → write}/scene-plain.d.ts +0 -0
- /package/dist/{record → write}/scene-refund.d.ts +0 -0
- /package/dist/{record → write}/scene-reimburse-done.d.ts +0 -0
- /package/dist/{record → write}/scene-reimburse.d.ts +0 -0
- /package/dist/{record → write}/scene-repay.d.ts +0 -0
- /package/dist/{record → write}/scene-restore.d.ts +0 -0
- /package/dist/{record → write}/scene-undo.d.ts +0 -0
- /package/dist/{record → write}/scene-update.d.ts +0 -0
- /package/dist/{record → write}/slots.d.ts +0 -0
- /package/dist/{shared → write}/summaryRow.d.ts +0 -0
- /package/dist/{record → write}/write.d.ts +0 -0
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import type { SerializableEnvelope, StatusKind } from 'base-paint';
|
|
2
|
+
import type { KpiCardInput, ParamFieldInput } from 'base-paint/blocks';
|
|
3
|
+
import type { PageShellInput } from '../shared/pageShell.js';
|
|
4
|
+
/** 账户域各页的眉标:**只在本域写一次**(共用位不持「域名→取值」表)。 */
|
|
5
|
+
export declare const EYEBROW = "\u8BB0\u8D26\uFF5C\u8D26\u6237\u57DF";
|
|
6
|
+
/** 本域各页统一走它:补上眉标再转共用位的 `pageShell`;调用点写法 `pageShell({…})` 不变。 */
|
|
7
|
+
export declare function accountPageShell(input: Omit<PageShellInput, 'eyebrow'>): string;
|
|
8
|
+
/** 写命令两页的页面内置 envelope(采集页 `ok:false`、回执页 `ok:true`;两页同一形状 `receipt`)。 */
|
|
9
|
+
export declare function envelopeOf(key: string, ok: boolean, message: string): SerializableEnvelope;
|
|
10
|
+
/** 读命令那一页的 envelope(形状 `list`:`items` 是账户卡,与搬迁前同一形状、只加不改)。
|
|
11
|
+
* 形状那一格按 `base-link-core` 的 `list` 形收窄(`items` 必有、`total` 可选)——
|
|
12
|
+
* 判据不许宽过公共层,故不写 `Record<string, unknown>`。 */
|
|
13
|
+
export declare function listEnvelopeOf(key: string, data: {
|
|
14
|
+
readonly items: unknown[];
|
|
15
|
+
readonly total?: number;
|
|
16
|
+
}): SerializableEnvelope;
|
|
17
|
+
/** 缺值占位(裁定 4)。 */
|
|
18
|
+
export declare const MISSING = "\u2014";
|
|
19
|
+
/** 金额文本:两位小数。数字照实写(含 0);不是有限数就写缺值占位。 */
|
|
20
|
+
export declare function money(n: number | null | undefined): string;
|
|
21
|
+
/** 带方向的金额文本(流水那一列):正数带 `+`、负数带 `-`,零不带符号。 */
|
|
22
|
+
export declare function signedMoney(n: number | null | undefined): string;
|
|
23
|
+
/** 一个值写成上屏文本:空白串与缺值一律 `—`(不写 `undefined`、不留空)。 */
|
|
24
|
+
export declare function textOrDash(v: unknown): string;
|
|
25
|
+
/** 类型徽章那一串(唤醒词 + 口径 + 状态徽章 + 下一步动作):四枚形状各自独立,不拼分隔符串。
|
|
26
|
+
* 形状照写入域 `../write/typeBadge.js` 的同一套(那里是五个域的页面先例),本件只喂账户自己的取值。 */
|
|
27
|
+
export declare function badgeOf(input: {
|
|
28
|
+
readonly word: string;
|
|
29
|
+
/** 第二枚胶囊那句话(账户域的页面口径;空串=只出唤醒词那一枚)。 */
|
|
30
|
+
readonly caliber: string;
|
|
31
|
+
readonly status: StatusKind;
|
|
32
|
+
readonly statusText: string;
|
|
33
|
+
/** 下一步动作(整句;空串=不出)。按句号分行,一句一行口径。 */
|
|
34
|
+
readonly next: string;
|
|
35
|
+
}): string;
|
|
36
|
+
/** 字段卡的一格(普通数据:参数名/中文名/怎么给/是否必需/候选)。 */
|
|
37
|
+
export interface AccountField {
|
|
38
|
+
readonly name: string;
|
|
39
|
+
readonly label: string;
|
|
40
|
+
readonly hint: string;
|
|
41
|
+
readonly required: boolean;
|
|
42
|
+
/** 选中即填的候选项(给了即渲染下拉)。 */
|
|
43
|
+
readonly options?: readonly string[];
|
|
44
|
+
}
|
|
45
|
+
/** 字段卡的格子:一律由 `renderParamForm` 出(标签与控件配对、每格带 `name`)。
|
|
46
|
+
* 值一律取本次参数——这一页不做「从历史顶值」那套(账户域没有可顶的历史:账户名与类型都是用户当下说的)。 */
|
|
47
|
+
export declare function slotFieldsOf(params: Record<string, unknown>, fields: readonly AccountField[]): ParamFieldInput[];
|
|
48
|
+
/** 缺项阻断条:**收进折叠区**(点开才看得见),里面是「还缺什么」表 + 只读的口令原文 + 一句口径。
|
|
49
|
+
* 铁口径(照 #688 裁定 9):缺项时**不出**可复制的写库指令——页面上那条口令只给看不给复制。 */
|
|
50
|
+
export declare function blockedFoldOf(input: {
|
|
51
|
+
readonly blocked: readonly {
|
|
52
|
+
readonly name: string;
|
|
53
|
+
readonly label: string;
|
|
54
|
+
readonly why: string;
|
|
55
|
+
}[];
|
|
56
|
+
/** 补齐后照抄的那条命令原文(缺的值留成尖括号占位符)。 */
|
|
57
|
+
readonly command: string;
|
|
58
|
+
}): string;
|
|
59
|
+
/** 复制指令块(过程型页的「照这句跟助手说一遍」):走公共层 `renderPreBlock` 的自带复制按钮。
|
|
60
|
+
* 查询域那种结果型页不出这一块——查询不写库,没有要交回助手的一句。 */
|
|
61
|
+
export declare function promptBlockOf(prompt: string, label?: string): string;
|
|
62
|
+
/** 复制区(数据位 + 日志位;三格式与双按钮由共用件给)。
|
|
63
|
+
* 复制文本那一行的抬头由调用方给的 `title` 决定(`copyArea` 的 `title` 位)——**不往 envelope 里塞标题**:
|
|
64
|
+
* envelope 是机器契约(形状与载荷一对一),往里加一个只为上屏用的字段就把它撑成两种用法。 */
|
|
65
|
+
export declare function copyZoneOf(input: {
|
|
66
|
+
readonly envelope: SerializableEnvelope;
|
|
67
|
+
readonly title: string;
|
|
68
|
+
readonly key: string;
|
|
69
|
+
readonly params: Record<string, unknown>;
|
|
70
|
+
readonly source: string;
|
|
71
|
+
readonly detail: string;
|
|
72
|
+
readonly actionAt: string;
|
|
73
|
+
}): string;
|
|
74
|
+
/** 空态(含「接下来怎么办」那一句):账户表为空、流水为空两处共用。 */
|
|
75
|
+
export declare function emptyOf(input: {
|
|
76
|
+
readonly title?: string;
|
|
77
|
+
readonly text: string;
|
|
78
|
+
readonly next: string;
|
|
79
|
+
}): string;
|
|
80
|
+
/** 来源脚注(结果型与过程型每张页恒出,照 #688 §五 5.2 第 26 行):三样值由调用方给。 */
|
|
81
|
+
export declare function sourceNoteOf(input: {
|
|
82
|
+
readonly sourceText: string;
|
|
83
|
+
readonly start: string;
|
|
84
|
+
readonly end: string;
|
|
85
|
+
readonly count: number;
|
|
86
|
+
}): string;
|
|
87
|
+
/** 缺项时那条口令原文:缺的值留成尖括号占位符,**只给看不给复制**(复制按钮由 `blockedFoldOf` 拿掉)。
|
|
88
|
+
* 「改成什么」那一格不是一个参数名(它对应 `new-name`/`disable`/`enable` 三个口子),故单给一条映射。 */
|
|
89
|
+
export declare function blockedCommandOf(key: string, params: Record<string, unknown>, blocked: readonly {
|
|
90
|
+
readonly name: string;
|
|
91
|
+
readonly label: string;
|
|
92
|
+
}[]): string;
|
|
93
|
+
/** 回执页的状态卡:无改动/已改动 + 一句写入去向的说明(形状照写入域同件,措辞由调用方给)。 */
|
|
94
|
+
export declare function receiptStatusCard(noChange: boolean, sameText: string, writtenText: string): KpiCardInput;
|
|
95
|
+
/** 一格的状态值:值 + 一句说明。 */
|
|
96
|
+
export declare function statusCard(value: string, detail: string): KpiCardInput;
|
|
97
|
+
/** 页尾「对账信息」折叠区:本次写入的**可核对信息**(改了几处/什么时候写的/怎么核对)。
|
|
98
|
+
* 这次记了几笔与写进去的项已在上方卡片与明细表上,这里不重写。 */
|
|
99
|
+
export declare function reconcileOf(input: {
|
|
100
|
+
readonly actionAt: string;
|
|
101
|
+
readonly changed: number;
|
|
102
|
+
readonly note: string;
|
|
103
|
+
}): string;
|
|
104
|
+
/** 复制日志第 3 段的两句来源:给机器看的那句可带载体名,上屏(来源脚注)的那句只写人话
|
|
105
|
+
* (照 #688 裁定 1:库文件名、命令名与脚本路径一律不上屏)。 */
|
|
106
|
+
export declare const SOURCE_COLLECT = "\u8D26\u6237\u8868\u4E0E\u8D26\u672C\uFF08\u53EA\u8BFB\uFF1A\u8FD9\u4E00\u9875\u5148\u4E0D\u5199\u5E93\uFF0C\u53EA\u91C7\u96C6\uFF09";
|
|
107
|
+
export declare const SOURCE_WRITE = "\u8D26\u6237\u8868\u4E0E\u8D26\u672C\uFF08\u5199\u5E93\u56DE\u6267\uFF09";
|
|
108
|
+
export declare const SOURCE_READ = "\u8D26\u6237\u8868\u4E0E\u8D26\u672C\uFF08\u53EA\u8BFB\uFF1A\u7B97\u4F59\u989D\u4E0E\u6D41\u6C34\uFF09";
|
|
109
|
+
export declare const SOURCE_COLLECT_TEXT = "\u8D26\u6237\u8868\u4E0E\u8D26\u672C\uFF08\u53EA\u8BFB\uFF09";
|
|
110
|
+
export declare const SOURCE_WRITE_TEXT = "\u8D26\u6237\u8868\u4E0E\u8D26\u672C\uFF08\u5199\u5165\uFF09";
|
|
111
|
+
export declare const SOURCE_READ_TEXT = "\u8D26\u6237\u8868\u4E0E\u8D26\u672C\uFF08\u53EA\u8BFB\uFF09";
|
|
112
|
+
/** 这一笔的时间(来源脚注的窗口起止都读它;参数没给就退回这一页的执行时刻)。 */
|
|
113
|
+
export declare function timeOf(params: Record<string, unknown>, fallback: string): string;
|
|
114
|
+
/** 采集页/确认页复制口令那一段(「照这句跟助手说一遍」):说清是哪条词、每一格填什么。
|
|
115
|
+
* 空着的格写 `____`(必填)或 `____(选填)`,与老侧复制文本的占位写法同义(老侧写 `____`)。 */
|
|
116
|
+
export declare function promptOf(word: string, slots: readonly {
|
|
117
|
+
readonly name: string;
|
|
118
|
+
readonly label: string;
|
|
119
|
+
readonly required: boolean;
|
|
120
|
+
}[], params: Record<string, unknown>): string;
|
|
121
|
+
/** 已有账户表(采集页与汇总页共用的一张只读表):账户/类型/状态。 */
|
|
122
|
+
export declare function accountsTableOf(rows: readonly {
|
|
123
|
+
readonly name: string;
|
|
124
|
+
readonly type: string;
|
|
125
|
+
readonly disabled: boolean;
|
|
126
|
+
}[], caption: string): string;
|
|
127
|
+
//# sourceMappingURL=pageParts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pageParts.d.ts","sourceRoot":"","sources":["../../src/account/pageParts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
/** 账户域页内共件:**本域眉标**、**两张页型共用的页框**、**几处取值口径**(金额文本、状态说法、
|
|
2
|
+
* 字段卡的格子、缺项折叠区、复制区与来源脚注)。
|
|
3
|
+
*
|
|
4
|
+
* 谁在用(三个调用点,指名):
|
|
5
|
+
* ① `src/account/template-form.ts`——账户表单页型(采集页 + 回执页)四个调用点;
|
|
6
|
+
* ② `src/account/template-update.ts`——改账户页型(采集页 + 回执页)两个调用点;
|
|
7
|
+
* ③ `src/account/template-summary.ts`——账户汇总页型(结果型 ⑥)。
|
|
8
|
+
*
|
|
9
|
+
* 本件**不含块位序列**(那是三份模板件的活),也不碰库与文件:只把普通数据加工成普通数据/
|
|
10
|
+
* 把公共层区块接成一串。分家理由与写入域同:块序的变化频率与取值口径不同,抄三份就会改一处漏两处。
|
|
11
|
+
*
|
|
12
|
+
* 口径(一处定义,别处不许再写第二份):
|
|
13
|
+
* - **眉标**=`记账 · 账户域`(`shared/pageShell.ts` 不持「域名 → 取值」表,照 #688 §二 A1「域自报眉标」);
|
|
14
|
+
* - **缺值一律 `—`**(#688 裁定 4;数字 0 是真实读数,照实写 0);
|
|
15
|
+
* - **金额两位小数**(`toFixed(2)`,与查询域列表页同一口径;老侧的千分位分隔符不照抄——
|
|
16
|
+
* 本仓的数值格式统一由公共层读数卡与表格承载,页面本地不另造一套格式化);
|
|
17
|
+
* - **内部标识不上屏**(#688 裁定 1):页面上不出现 `bill.`、库文件名、脚本路径、参数名。
|
|
18
|
+
*/
|
|
19
|
+
import { renderStatusBadge } from 'base-paint';
|
|
20
|
+
import { renderCaliberLine, renderChips, renderDataTable, renderDisclosure, renderEmptyBlock, renderPreBlock } from 'base-paint/blocks';
|
|
21
|
+
import { copyArea, copyLog } from '../shared/copyArea.js';
|
|
22
|
+
import { DOC_SKILL, DOC_VERSION, sceneKeyOf } from '../shared/pageIdentity.js';
|
|
23
|
+
import { pageShell } from '../shared/pageShell.js';
|
|
24
|
+
import { sourceLine } from '../shared/sourceLine.js';
|
|
25
|
+
import { commandLine } from '../shared/writeParts.js';
|
|
26
|
+
/** 账户域各页的眉标:**只在本域写一次**(共用位不持「域名→取值」表)。 */
|
|
27
|
+
export const EYEBROW = '记账|账户域';
|
|
28
|
+
/** 本域各页统一走它:补上眉标再转共用位的 `pageShell`;调用点写法 `pageShell({…})` 不变。 */
|
|
29
|
+
export function accountPageShell(input) {
|
|
30
|
+
return pageShell({ ...input, eyebrow: EYEBROW });
|
|
31
|
+
}
|
|
32
|
+
/** 写命令两页的页面内置 envelope(采集页 `ok:false`、回执页 `ok:true`;两页同一形状 `receipt`)。 */
|
|
33
|
+
export function envelopeOf(key, ok, message) {
|
|
34
|
+
return { version: DOC_VERSION, skill: DOC_SKILL, shape: 'receipt', key: sceneKeyOf(key), data: { ok, message } };
|
|
35
|
+
}
|
|
36
|
+
/** 读命令那一页的 envelope(形状 `list`:`items` 是账户卡,与搬迁前同一形状、只加不改)。
|
|
37
|
+
* 形状那一格按 `base-link-core` 的 `list` 形收窄(`items` 必有、`total` 可选)——
|
|
38
|
+
* 判据不许宽过公共层,故不写 `Record<string, unknown>`。 */
|
|
39
|
+
export function listEnvelopeOf(key, data) {
|
|
40
|
+
return { version: DOC_VERSION, skill: DOC_SKILL, shape: 'list', key: sceneKeyOf(key), data };
|
|
41
|
+
}
|
|
42
|
+
/** 缺值占位(裁定 4)。 */
|
|
43
|
+
export const MISSING = '—';
|
|
44
|
+
/** 金额文本:两位小数。数字照实写(含 0);不是有限数就写缺值占位。 */
|
|
45
|
+
export function money(n) {
|
|
46
|
+
if (n === null || n === undefined || !Number.isFinite(n))
|
|
47
|
+
return MISSING;
|
|
48
|
+
return n.toFixed(2);
|
|
49
|
+
}
|
|
50
|
+
/** 带方向的金额文本(流水那一列):正数带 `+`、负数带 `-`,零不带符号。 */
|
|
51
|
+
export function signedMoney(n) {
|
|
52
|
+
if (n === null || n === undefined || !Number.isFinite(n))
|
|
53
|
+
return MISSING;
|
|
54
|
+
if (n > 0)
|
|
55
|
+
return '+' + n.toFixed(2);
|
|
56
|
+
return n.toFixed(2);
|
|
57
|
+
}
|
|
58
|
+
/** 一个值写成上屏文本:空白串与缺值一律 `—`(不写 `undefined`、不留空)。 */
|
|
59
|
+
export function textOrDash(v) {
|
|
60
|
+
const s = typeof v === 'string' ? v.trim() : v === null || v === undefined ? '' : String(v);
|
|
61
|
+
return s === '' ? MISSING : s;
|
|
62
|
+
}
|
|
63
|
+
/** 类型徽章那一串(唤醒词 + 口径 + 状态徽章 + 下一步动作):四枚形状各自独立,不拼分隔符串。
|
|
64
|
+
* 形状照写入域 `../write/typeBadge.js` 的同一套(那里是五个域的页面先例),本件只喂账户自己的取值。 */
|
|
65
|
+
export function badgeOf(input) {
|
|
66
|
+
const items = input.caliber === '' ? [{ text: input.word }] : [{ text: input.word }, { text: input.caliber }];
|
|
67
|
+
const parts = [renderChips({ items }), renderStatusBadge({ status: input.status, text: input.statusText })];
|
|
68
|
+
const next = input.next.trim();
|
|
69
|
+
if (next !== '') {
|
|
70
|
+
for (const line of next.split('。').map((s) => s.trim()).filter((s) => s !== '')) {
|
|
71
|
+
parts.push(renderCaliberLine(line + '。'));
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return parts.join('');
|
|
75
|
+
}
|
|
76
|
+
/** 字段卡的格子:一律由 `renderParamForm` 出(标签与控件配对、每格带 `name`)。
|
|
77
|
+
* 值一律取本次参数——这一页不做「从历史顶值」那套(账户域没有可顶的历史:账户名与类型都是用户当下说的)。 */
|
|
78
|
+
export function slotFieldsOf(params, fields) {
|
|
79
|
+
return fields.map((f) => {
|
|
80
|
+
const raw = params[f.name];
|
|
81
|
+
const value = raw === true ? '是' : raw === false || raw === undefined || raw === null ? '' : String(raw).trim();
|
|
82
|
+
return {
|
|
83
|
+
name: f.name,
|
|
84
|
+
label: f.label,
|
|
85
|
+
hint: f.hint,
|
|
86
|
+
...(f.options === undefined || f.options.length === 0 ? {} : { options: f.options }),
|
|
87
|
+
...(f.required ? { required: true } : {}),
|
|
88
|
+
...(value === '' ? {} : { value }),
|
|
89
|
+
};
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
/** 缺项阻断条:**收进折叠区**(点开才看得见),里面是「还缺什么」表 + 只读的口令原文 + 一句口径。
|
|
93
|
+
* 铁口径(照 #688 裁定 9):缺项时**不出**可复制的写库指令——页面上那条口令只给看不给复制。 */
|
|
94
|
+
export function blockedFoldOf(input) {
|
|
95
|
+
if (input.blocked.length === 0)
|
|
96
|
+
return '';
|
|
97
|
+
const items = input.blocked.map((b) => ({ text: b.label }));
|
|
98
|
+
return renderChips({ items })
|
|
99
|
+
+ renderDisclosure({
|
|
100
|
+
title: '还缺什么(点开看补齐后照抄的那条)',
|
|
101
|
+
contentHtml: renderDataTable({
|
|
102
|
+
columns: [
|
|
103
|
+
{ key: 'label', label: '缺失字段' },
|
|
104
|
+
{ key: 'why', label: '为什么进不去' },
|
|
105
|
+
],
|
|
106
|
+
rows: input.blocked.map((b) => ({ label: b.label, why: b.why === '没给' ? '未提供' : b.why })),
|
|
107
|
+
caption: '缺一项就先不写进去',
|
|
108
|
+
}) + renderPreBlock({ command: input.command, label: '口令原文(只给看不给复制)' })
|
|
109
|
+
+ renderCaliberLine('这一页先不写库;补齐之后照上面那句跟助手说一遍才会写。'),
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
/** 复制指令块(过程型页的「照这句跟助手说一遍」):走公共层 `renderPreBlock` 的自带复制按钮。
|
|
113
|
+
* 查询域那种结果型页不出这一块——查询不写库,没有要交回助手的一句。 */
|
|
114
|
+
export function promptBlockOf(prompt, label = '复制给助手:这一句可以直接复制') {
|
|
115
|
+
return renderPreBlock({
|
|
116
|
+
label,
|
|
117
|
+
command: prompt,
|
|
118
|
+
actionId: 'ilife-account-prompt',
|
|
119
|
+
copyText: prompt,
|
|
120
|
+
copyLabel: label,
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
/** 复制区(数据位 + 日志位;三格式与双按钮由共用件给)。
|
|
124
|
+
* 复制文本那一行的抬头由调用方给的 `title` 决定(`copyArea` 的 `title` 位)——**不往 envelope 里塞标题**:
|
|
125
|
+
* envelope 是机器契约(形状与载荷一对一),往里加一个只为上屏用的字段就把它撑成两种用法。 */
|
|
126
|
+
export function copyZoneOf(input) {
|
|
127
|
+
return copyArea({
|
|
128
|
+
data: { envelope: input.envelope, title: input.title },
|
|
129
|
+
log: {
|
|
130
|
+
envelope: input.envelope,
|
|
131
|
+
copyLog: copyLog({
|
|
132
|
+
command: commandLine(input.key, input.params),
|
|
133
|
+
source: input.source,
|
|
134
|
+
detail: input.detail,
|
|
135
|
+
actionAt: input.actionAt,
|
|
136
|
+
version: DOC_VERSION,
|
|
137
|
+
}),
|
|
138
|
+
},
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
/** 空态(含「接下来怎么办」那一句):账户表为空、流水为空两处共用。 */
|
|
142
|
+
export function emptyOf(input) {
|
|
143
|
+
return renderEmptyBlock({ ...(input.title === undefined ? {} : { title: input.title }), text: input.text, hint: input.next });
|
|
144
|
+
}
|
|
145
|
+
/** 来源脚注(结果型与过程型每张页恒出,照 #688 §五 5.2 第 26 行):三样值由调用方给。 */
|
|
146
|
+
export function sourceNoteOf(input) {
|
|
147
|
+
return sourceLine({ source: input.sourceText, start: input.start, end: input.end, count: input.count });
|
|
148
|
+
}
|
|
149
|
+
/** 缺项时那条口令原文:缺的值留成尖括号占位符,**只给看不给复制**(复制按钮由 `blockedFoldOf` 拿掉)。
|
|
150
|
+
* 「改成什么」那一格不是一个参数名(它对应 `new-name`/`disable`/`enable` 三个口子),故单给一条映射。 */
|
|
151
|
+
export function blockedCommandOf(key, params, blocked) {
|
|
152
|
+
const filled = { ...params };
|
|
153
|
+
for (const b of blocked) {
|
|
154
|
+
if (b.name === 'change')
|
|
155
|
+
filled['new-name'] = '<' + b.label + '>';
|
|
156
|
+
else
|
|
157
|
+
filled[b.name] = '<' + b.label + '>';
|
|
158
|
+
}
|
|
159
|
+
return commandLine(key, filled);
|
|
160
|
+
}
|
|
161
|
+
/** 回执页的状态卡:无改动/已改动 + 一句写入去向的说明(形状照写入域同件,措辞由调用方给)。 */
|
|
162
|
+
export function receiptStatusCard(noChange, sameText, writtenText) {
|
|
163
|
+
return statusCard(noChange ? '无改动' : '已改动', noChange ? sameText : writtenText);
|
|
164
|
+
}
|
|
165
|
+
/** 一格的状态值:值 + 一句说明。 */
|
|
166
|
+
export function statusCard(value, detail) {
|
|
167
|
+
return { label: '状态', value, detail };
|
|
168
|
+
}
|
|
169
|
+
/** 页尾「对账信息」折叠区:本次写入的**可核对信息**(改了几处/什么时候写的/怎么核对)。
|
|
170
|
+
* 这次记了几笔与写进去的项已在上方卡片与明细表上,这里不重写。 */
|
|
171
|
+
export function reconcileOf(input) {
|
|
172
|
+
return renderDisclosure({
|
|
173
|
+
title: '对账信息',
|
|
174
|
+
contentHtml: renderDataTable({
|
|
175
|
+
columns: [{ key: 'k', label: '字段' }, { key: 'v', label: '值' }],
|
|
176
|
+
rows: [
|
|
177
|
+
{ k: '改了账本里几处', v: String(input.changed) + ' 处' },
|
|
178
|
+
{ k: '写入时间', v: input.actionAt },
|
|
179
|
+
{ k: '怎么核对', v: input.note },
|
|
180
|
+
],
|
|
181
|
+
}),
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
/** 复制日志第 3 段的两句来源:给机器看的那句可带载体名,上屏(来源脚注)的那句只写人话
|
|
185
|
+
* (照 #688 裁定 1:库文件名、命令名与脚本路径一律不上屏)。 */
|
|
186
|
+
export const SOURCE_COLLECT = '账户表与账本(只读:这一页先不写库,只采集)';
|
|
187
|
+
export const SOURCE_WRITE = '账户表与账本(写库回执)';
|
|
188
|
+
export const SOURCE_READ = '账户表与账本(只读:算余额与流水)';
|
|
189
|
+
export const SOURCE_COLLECT_TEXT = '账户表与账本(只读)';
|
|
190
|
+
export const SOURCE_WRITE_TEXT = '账户表与账本(写入)';
|
|
191
|
+
export const SOURCE_READ_TEXT = '账户表与账本(只读)';
|
|
192
|
+
/** 这一笔的时间(来源脚注的窗口起止都读它;参数没给就退回这一页的执行时刻)。 */
|
|
193
|
+
export function timeOf(params, fallback) {
|
|
194
|
+
const t = params['time'];
|
|
195
|
+
return typeof t === 'string' && t.trim() !== '' ? t.trim() : fallback;
|
|
196
|
+
}
|
|
197
|
+
/** 采集页/确认页复制口令那一段(「照这句跟助手说一遍」):说清是哪条词、每一格填什么。
|
|
198
|
+
* 空着的格写 `____`(必填)或 `____(选填)`,与老侧复制文本的占位写法同义(老侧写 `____`)。 */
|
|
199
|
+
export function promptOf(word, slots, params) {
|
|
200
|
+
const lines = slots.map((s) => {
|
|
201
|
+
const raw = params[s.name];
|
|
202
|
+
const v = raw === true ? '是' : raw === false || raw === undefined || raw === null ? '' : String(raw).trim();
|
|
203
|
+
const blank = s.required ? '____' : '____(选填)';
|
|
204
|
+
return ' ' + s.label + ': ' + (v === '' ? blank : v);
|
|
205
|
+
});
|
|
206
|
+
return '请加载「饼干记账」技能,帮我' + word + ':\n\n' + lines.join('\n');
|
|
207
|
+
}
|
|
208
|
+
/** 已有账户表(采集页与汇总页共用的一张只读表):账户/类型/状态。 */
|
|
209
|
+
export function accountsTableOf(rows, caption) {
|
|
210
|
+
const columns = [
|
|
211
|
+
{ key: 'name', label: '账户' },
|
|
212
|
+
{ key: 'type', label: '类型' },
|
|
213
|
+
{ key: 'state', label: '状态' },
|
|
214
|
+
];
|
|
215
|
+
const body = rows.map((a) => ({
|
|
216
|
+
name: a.name,
|
|
217
|
+
type: textOrDash(a.type),
|
|
218
|
+
state: a.disabled ? '已停用' : '使用中',
|
|
219
|
+
}));
|
|
220
|
+
return renderDataTable({ columns, rows: body, caption, emptyText: '账户表里还没有账户' });
|
|
221
|
+
}
|
|
222
|
+
//# sourceMappingURL=pageParts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pageParts.js","sourceRoot":"","sources":["../../src/account/pageParts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExI,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,2CAA2C;AAC3C,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAEhC,iEAAiE;AACjE,MAAM,UAAU,gBAAgB,CAAC,KAAsC;IACrE,OAAO,SAAS,CAAC,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,UAAU,CAAC,GAAW,EAAE,EAAW,EAAE,OAAe;IAClE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC;AACnH,CAAC;AAED;;+CAE+C;AAC/C,MAAM,UAAU,cAAc,CAAC,GAAW,EAAE,IAA4D;IACtG,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC;AAC/F,CAAC;AAED,kBAAkB;AAClB,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAC;AAE3B,wCAAwC;AACxC,MAAM,UAAU,KAAK,CAAC,CAA4B;IAChD,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,OAAO,CAAC;IACzE,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACtB,CAAC;AAED,6CAA6C;AAC7C,MAAM,UAAU,WAAW,CAAC,CAA4B;IACtD,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,OAAO,CAAC;IACzE,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACrC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACtB,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,UAAU,CAAC,CAAU;IACnC,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC5F,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,CAAC;AAED;oEACoE;AACpE,MAAM,UAAU,OAAO,CAAC,KAQvB;IACC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9G,MAAM,KAAK,GAAG,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,iBAAiB,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAC5G,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC/B,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;QAChB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;YAChF,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACxB,CAAC;AAYD;2DAC2D;AAC3D,MAAM,UAAU,YAAY,CAAC,MAA+B,EAAE,MAA+B;IAC3F,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACtB,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3B,MAAM,KAAK,GAAG,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAChH,OAAO;YACL,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,GAAG,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;YACpF,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;SACnC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;0DAC0D;AAC1D,MAAM,UAAU,aAAa,CAAC,KAI7B;IACC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAC1C,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC5D,OAAO,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC;UACzB,gBAAgB,CAAC;YACjB,KAAK,EAAE,mBAAmB;YAC1B,WAAW,EAAE,eAAe,CAAC;gBAC3B,OAAO,EAAE;oBACP,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE;oBAC/B,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE;iBAChC;gBACD,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;gBACzF,OAAO,EAAE,WAAW;aACrB,CAAC,GAAG,cAAc,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;kBACnE,iBAAiB,CAAC,6BAA6B,CAAC;SACrD,CAAC,CAAC;AACP,CAAC;AAED;wCACwC;AACxC,MAAM,UAAU,aAAa,CAAC,MAAc,EAAE,KAAK,GAAG,iBAAiB;IACrE,OAAO,cAAc,CAAC;QACpB,KAAK;QACL,OAAO,EAAE,MAAM;QACf,QAAQ,EAAE,sBAAsB;QAChC,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,KAAK;KACjB,CAAC,CAAC;AACL,CAAC;AAED;;uDAEuD;AACvD,MAAM,UAAU,UAAU,CAAC,KAQ1B;IACC,OAAO,QAAQ,CAAC;QACd,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE;QACtD,GAAG,EAAE;YACH,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,OAAO,EAAE,OAAO,CAAC;gBACf,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC;gBAC7C,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,OAAO,EAAE,WAAW;aACrB,CAAC;SACH;KACF,CAAC,CAAC;AACL,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU,OAAO,CAAC,KAAgF;IACtG,OAAO,gBAAgB,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AAChI,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,YAAY,CAAC,KAK5B;IACC,OAAO,UAAU,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1G,CAAC;AAED;wEACwE;AACxE,MAAM,UAAU,gBAAgB,CAC9B,GAAW,EACX,MAA+B,EAC/B,OAAqE;IAErE,MAAM,MAAM,GAA4B,EAAE,GAAG,MAAM,EAAE,CAAC;IACtD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,CAAC,UAAU,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC;;YAC7D,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC;IAC5C,CAAC;IACD,OAAO,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AAClC,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,iBAAiB,CAAC,QAAiB,EAAE,QAAgB,EAAE,WAAmB;IACxF,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;AACjF,CAAC;AAED,uBAAuB;AACvB,MAAM,UAAU,UAAU,CAAC,KAAa,EAAE,MAAc;IACtD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AACxC,CAAC;AAED;qCACqC;AACrC,MAAM,UAAU,WAAW,CAAC,KAAqF;IAC/G,OAAO,gBAAgB,CAAC;QACtB,KAAK,EAAE,MAAM;QACb,WAAW,EAAE,eAAe,CAAC;YAC3B,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;YAC9D,IAAI,EAAE;gBACJ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,EAAE;gBACjD,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,QAAQ,EAAE;gBAChC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE;aAC7B;SACF,CAAC;KACH,CAAC,CAAC;AACL,CAAC;AAED;wCACwC;AACxC,MAAM,CAAC,MAAM,cAAc,GAAG,wBAAwB,CAAC;AACvD,MAAM,CAAC,MAAM,YAAY,GAAG,cAAc,CAAC;AAC3C,MAAM,CAAC,MAAM,WAAW,GAAG,mBAAmB,CAAC;AAC/C,MAAM,CAAC,MAAM,mBAAmB,GAAG,YAAY,CAAC;AAChD,MAAM,CAAC,MAAM,iBAAiB,GAAG,YAAY,CAAC;AAC9C,MAAM,CAAC,MAAM,gBAAgB,GAAG,YAAY,CAAC;AAE7C,4CAA4C;AAC5C,MAAM,UAAU,MAAM,CAAC,MAA+B,EAAE,QAAgB;IACtE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IACzB,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;AACxE,CAAC;AAED;+DAC+D;AAC/D,MAAM,UAAU,QAAQ,CACtB,IAAY,EACZ,KAA+F,EAC/F,MAA+B;IAE/B,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC5B,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3B,MAAM,CAAC,GAAG,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5G,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;QAC/C,OAAO,IAAI,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IACH,OAAO,gBAAgB,GAAG,IAAI,GAAG,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9D,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU,eAAe,CAAC,IAA6F,EAAE,OAAe;IAC5I,MAAM,OAAO,GAA+B;QAC1C,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE;QAC5B,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE;QAC5B,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE;KAC9B,CAAC;IACF,MAAM,IAAI,GAA4B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACrD,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;QACxB,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK;KAClC,CAAC,CAAC,CAAC;IACJ,OAAO,eAAe,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC;AACnF,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { isGiven, numberOf, textOf } from '../shared/params.js';
|
|
2
|
+
/** 一道写命令的三支操作(老侧 `account/cli.py` 的 add/update/transfer 三个子命令)。
|
|
3
|
+
* `summary` 不在这里:它是 `bill.account.query`(读命令),不在写命令的判别式里。 */
|
|
4
|
+
export type AccountOp = 'add' | 'update' | 'transfer';
|
|
5
|
+
/** 转账两笔的分类与账本(跨技能契约,冻结不动):转出支出 + 转入收入,账本=转账。 */
|
|
6
|
+
export declare const TRANSFER_OUT_CATEGORY = "\u8F6C\u8D26/\u8F6C\u51FA";
|
|
7
|
+
export declare const TRANSFER_IN_CATEGORY = "\u8F6C\u8D26/\u8F6C\u5165";
|
|
8
|
+
export declare const TRANSFER_LEDGER = "\u8F6C\u8D26";
|
|
9
|
+
/** 账户名的长度上限(老侧 `cli.py:95-96`/`:157-158` 同数)。 */
|
|
10
|
+
export declare const ACCOUNT_NAME_MAX = 30;
|
|
11
|
+
/** 一个时间串过不过(真实日期校验:月份 13、2 月 30 这类都要挡住)。 */
|
|
12
|
+
export declare function isFullTime(s: string): boolean;
|
|
13
|
+
/** `params.op` 归一。缺省/非法一律抛:op 是这一条命令自己的判别式,不猜(老侧缺省落到 `summary`
|
|
14
|
+
* 再被拒——同一条命令两种产物,`summary` 已随 #691 搬去 `bill.account.query`)。 */
|
|
15
|
+
export declare function parseAccountOp(params: Record<string, unknown>): AccountOp;
|
|
16
|
+
/** 一个槽位:参数名/中文名/怎么给/是否必需。 */
|
|
17
|
+
export interface AccountSlot {
|
|
18
|
+
readonly name: string;
|
|
19
|
+
readonly label: string;
|
|
20
|
+
readonly hint: string;
|
|
21
|
+
readonly required: boolean;
|
|
22
|
+
}
|
|
23
|
+
/** 一处阻断:哪一格/中文名/为什么进不去(`没给` 与值不对共用一张表)。 */
|
|
24
|
+
export interface AccountBlocked {
|
|
25
|
+
readonly name: string;
|
|
26
|
+
readonly label: string;
|
|
27
|
+
readonly why: string;
|
|
28
|
+
}
|
|
29
|
+
/** 「改成什么」那一格:老侧改账户要求 `--new-name`/`--disable`/`--enable` 至少给一个
|
|
30
|
+
* (`cli.py:186-187` 的「没有可执行的变更」)。它不是一个参数名,故单立一格。 */
|
|
31
|
+
export declare const CHANGE_SLOT: AccountSlot;
|
|
32
|
+
/** 三支操作的槽位表(**唯一定义地**):字段卡照它出,缺项探针照它算。 */
|
|
33
|
+
export declare const ACCOUNT_SLOTS: Readonly<Record<AccountOp, readonly AccountSlot[]>>;
|
|
34
|
+
/** 三件值读法**改从共用位转出**(#731):账户域是第一处用法、开始使用域是第二处,
|
|
35
|
+
* 按「共用件是从第二个用法里长出来的」上浮到 `../shared/params.js`;本域调用点写法一字不改。 */
|
|
36
|
+
export { isGiven, numberOf, textOf };
|
|
37
|
+
/** 改账户那一支「改成什么」给了没有(三个口子任给其一即算给了)。 */
|
|
38
|
+
export declare function hasChange(params: Record<string, unknown>): boolean;
|
|
39
|
+
/** 本支操作当下缺什么、哪一格的值进不去(**空数组=可以往下走写库那一步**)。
|
|
40
|
+
* 账户表那一层的冲突(重名/找不到账户)住 `./write.js` 的 `tableBlockedOf`——本件只吃参数,不碰库与文件。 */
|
|
41
|
+
export declare function accountBlocked(op: AccountOp, params: Record<string, unknown>): readonly AccountBlocked[];
|
|
42
|
+
/** 账户名:必需槽位,空白即抛(阻断闸门放行之后才会走到这里)。 */
|
|
43
|
+
export declare function needAccountName(params: Record<string, unknown>, field?: string): string;
|
|
44
|
+
/** 转账的真值校验(阻断闸门放行之后才会走到这里):金额为正数、两个账户都给且不同、时间形态可认。
|
|
45
|
+
* 时间不给=取当下(缺省由 `./write.js` 给)。 */
|
|
46
|
+
export declare function validateTransfer(params: Record<string, unknown>): {
|
|
47
|
+
amount: number;
|
|
48
|
+
from: string;
|
|
49
|
+
to: string;
|
|
50
|
+
time: string | null;
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=params.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"params.d.ts","sourceRoot":"","sources":["../../src/account/params.ts"],"names":[],"mappings":"AA4BA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAEhE;8DAC8D;AAC9D,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEtD,gDAAgD;AAChD,eAAO,MAAM,qBAAqB,8BAAU,CAAC;AAC7C,eAAO,MAAM,oBAAoB,8BAAU,CAAC;AAC5C,eAAO,MAAM,eAAe,iBAAO,CAAC;AAEpC,iDAAiD;AACjD,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAKnC,4CAA4C;AAC5C,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAM7C;AAED;iEACiE;AACjE,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAIzE;AAED,6BAA6B;AAC7B,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED,2CAA2C;AAC3C,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAMD;qDACqD;AACrD,eAAO,MAAM,WAAW,EAAE,WAA+D,CAAC;AAE1F,0CAA0C;AAC1C,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,WAAW,EAAE,CAAC,CAiB7E,CAAC;AAEF;+DAC+D;AAC/D,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAErC,sCAAsC;AACtC,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAElE;AAED;2EAC2E;AAC3E,wBAAgB,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,cAAc,EAAE,CAmCxG;AAED,qCAAqC;AACrC,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,SAAS,GAAG,MAAM,CAMvF;AAED;oCACoC;AACpC,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAanI"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/** 账户域·命令参数与槽位表(**唯一定义地**):`bill.account.write` 的三支操作、每支要哪些槽位、
|
|
2
|
+
* 缺项与「值不对」怎么报。
|
|
3
|
+
*
|
|
4
|
+
* 谁在用(三个调用点,指名):
|
|
5
|
+
* ① `src/account/write.ts`——写命令处理体:拿 `accountBlocked` 当闸门(非空即出采集页、不写库),
|
|
6
|
+
* 闸门放行之后才调 `validateTransfer` 做真值校验;
|
|
7
|
+
* ② `src/account/scene-{add,update,transfer}.ts`——场景件按 `ACCOUNT_SLOTS[op]` 出字段卡、
|
|
8
|
+
* 按 `accountBlocked` 出缺项标签;
|
|
9
|
+
* ③ `src/account/template-form.ts`——采集页的缺项标签与口令原文读同一份阻断表。
|
|
10
|
+
*
|
|
11
|
+
* 老侧对应件:`scripts/account/cli.py`(add/update/transfer 三支的真值校验)与
|
|
12
|
+
* `scripts/account/render.py`(三张页的字段与文案)。三处口径按本文重摆:
|
|
13
|
+
* - **缺失与「值不对」分开**:老侧两种情况都是 `raise ValueError` 一句话(`cli.py:94-99`/`:205-212`),
|
|
14
|
+
* 页上看不出缺哪一格;新侧按 #688 裁定 9 出**缺项阻断条**,逐项点名(`why` 说清为什么进不去)。
|
|
15
|
+
* - **转账金额要正数、两个账户要不同、时间要写全**:老侧这三条只在 CLI 报错
|
|
16
|
+
* (`账户/transfer_confirm.html` 一点校验都没有,空值/同账户/负数都能复制出去);新侧提到页上,
|
|
17
|
+
* 与「缺项」走同一条阻断路径。时间那条照老 `validators.py:validate_time` 的严格形态
|
|
18
|
+
* (`YYYY-MM-DD HH:MM:SS`,含真实日期校验),不悄悄收下日期串再当 0 点。「昨天」这类相对说法
|
|
19
|
+
* 老侧渲染页的 placeholder 里写过、CLI 却拒收——**不照抄这个自相矛盾**,页上写的就是能过的形态。
|
|
20
|
+
* - **账户名的长度与重名**:老侧 `cli.py:95-96` 长度 ≤30、重名拒绝(文案写「重复新增需用户确认」,
|
|
21
|
+
* 但并没有那条确认路径);新侧长度上限照旧进阻断表、重名也进阻断表(页上直接告诉用户「要改它就说改账户」)。
|
|
22
|
+
*
|
|
23
|
+
* 中文名的落点:本表自己写(账户域的参数名 `name`/`new-name`/`disable`/`from`/`to` **不是库列名**,
|
|
24
|
+
* 与写入域 `../write/userWording.js` 那张「库列名 → 中文列名」的对照表不是同一件事,故不跨域引它的件;
|
|
25
|
+
* 域与域之间只经对方的 `index.ts` 门)。
|
|
26
|
+
*/
|
|
27
|
+
import { BillPolicyError } from '../fetch/errors.js';
|
|
28
|
+
// #731:三件值读法住共用位,本件既转出(对外面不变)又本地用(域内四处校验)。
|
|
29
|
+
import { isGiven, numberOf, textOf } from '../shared/params.js';
|
|
30
|
+
/** 转账两笔的分类与账本(跨技能契约,冻结不动):转出支出 + 转入收入,账本=转账。 */
|
|
31
|
+
export const TRANSFER_OUT_CATEGORY = '转账/转出';
|
|
32
|
+
export const TRANSFER_IN_CATEGORY = '转账/转入';
|
|
33
|
+
export const TRANSFER_LEDGER = '转账';
|
|
34
|
+
/** 账户名的长度上限(老侧 `cli.py:95-96`/`:157-158` 同数)。 */
|
|
35
|
+
export const ACCOUNT_NAME_MAX = 30;
|
|
36
|
+
/** 时间那一格的形态(照老 `validators.py:validate_time`:`YYYY-MM-DD HH:MM:SS` 且是真实日期)。 */
|
|
37
|
+
const FULL_TIME = /^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})$/;
|
|
38
|
+
/** 一个时间串过不过(真实日期校验:月份 13、2 月 30 这类都要挡住)。 */
|
|
39
|
+
export function isFullTime(s) {
|
|
40
|
+
const m = FULL_TIME.exec(s);
|
|
41
|
+
if (m === null)
|
|
42
|
+
return false;
|
|
43
|
+
const [, y, mo, d, h, mi, sec] = m;
|
|
44
|
+
const t = Date.parse(y + '-' + mo + '-' + d + 'T' + h + ':' + mi + ':' + sec + 'Z');
|
|
45
|
+
return Number.isFinite(t) && new Date(t).toISOString().slice(0, 19).replace('T', ' ') === s;
|
|
46
|
+
}
|
|
47
|
+
/** `params.op` 归一。缺省/非法一律抛:op 是这一条命令自己的判别式,不猜(老侧缺省落到 `summary`
|
|
48
|
+
* 再被拒——同一条命令两种产物,`summary` 已随 #691 搬去 `bill.account.query`)。 */
|
|
49
|
+
export function parseAccountOp(params) {
|
|
50
|
+
const op = params['op'];
|
|
51
|
+
if (op === 'add' || op === 'update' || op === 'transfer')
|
|
52
|
+
return op;
|
|
53
|
+
throw new BillPolicyError('POLICY_BAD_INPUT', 'op 非法(只认 add/update/transfer):' + JSON.stringify(op));
|
|
54
|
+
}
|
|
55
|
+
function slot(name, label, hint, required) {
|
|
56
|
+
return { name, label, hint, required };
|
|
57
|
+
}
|
|
58
|
+
/** 「改成什么」那一格:老侧改账户要求 `--new-name`/`--disable`/`--enable` 至少给一个
|
|
59
|
+
* (`cli.py:186-187` 的「没有可执行的变更」)。它不是一个参数名,故单立一格。 */
|
|
60
|
+
export const CHANGE_SLOT = slot('change', '改成什么', '如 改名「招行工资卡」/停用/启用', true);
|
|
61
|
+
/** 三支操作的槽位表(**唯一定义地**):字段卡照它出,缺项探针照它算。 */
|
|
62
|
+
export const ACCOUNT_SLOTS = {
|
|
63
|
+
add: [
|
|
64
|
+
slot('name', '账户名', '如 招行卡 / 花呗', true),
|
|
65
|
+
slot('type', '类型', '选填,如 银行卡 / 支付 / 信用', false),
|
|
66
|
+
],
|
|
67
|
+
update: [
|
|
68
|
+
slot('name', '账户', '要改的那个账户,如 招行卡', true),
|
|
69
|
+
slot('new-name', '改成什么名字', '改名后的新账户名,如 招行工资卡', false),
|
|
70
|
+
slot('disable', '停用', '停用后不再算进总余额,历史记录保留', false),
|
|
71
|
+
slot('enable', '启用', '把停用的账户恢复使用', false),
|
|
72
|
+
],
|
|
73
|
+
transfer: [
|
|
74
|
+
slot('amount', '金额', '转多少,写正数,如 500', true),
|
|
75
|
+
slot('from', '从账户', '钱从哪个账户转出,如 支付宝', true),
|
|
76
|
+
slot('to', '到账户', '钱转到哪个账户,如 招行卡', true),
|
|
77
|
+
slot('time', '时间', '选填,不填就是现在;要写就写 2026-09-14 12:00:00 这样', false),
|
|
78
|
+
],
|
|
79
|
+
};
|
|
80
|
+
/** 三件值读法**改从共用位转出**(#731):账户域是第一处用法、开始使用域是第二处,
|
|
81
|
+
* 按「共用件是从第二个用法里长出来的」上浮到 `../shared/params.js`;本域调用点写法一字不改。 */
|
|
82
|
+
export { isGiven, numberOf, textOf };
|
|
83
|
+
/** 改账户那一支「改成什么」给了没有(三个口子任给其一即算给了)。 */
|
|
84
|
+
export function hasChange(params) {
|
|
85
|
+
return isGiven(params['new-name']) || params['disable'] === true || params['enable'] === true;
|
|
86
|
+
}
|
|
87
|
+
/** 本支操作当下缺什么、哪一格的值进不去(**空数组=可以往下走写库那一步**)。
|
|
88
|
+
* 账户表那一层的冲突(重名/找不到账户)住 `./write.js` 的 `tableBlockedOf`——本件只吃参数,不碰库与文件。 */
|
|
89
|
+
export function accountBlocked(op, params) {
|
|
90
|
+
const out = [];
|
|
91
|
+
for (const s of ACCOUNT_SLOTS[op]) {
|
|
92
|
+
if (s.required && !isGiven(params[s.name]))
|
|
93
|
+
out.push({ name: s.name, label: s.label, why: '没给' });
|
|
94
|
+
}
|
|
95
|
+
if (op === 'update' && !hasChange(params))
|
|
96
|
+
out.push({ name: CHANGE_SLOT.name, label: CHANGE_SLOT.label, why: '没给' });
|
|
97
|
+
if (op === 'add' || op === 'update') {
|
|
98
|
+
const name = textOf(params['name']);
|
|
99
|
+
if (name.length > ACCOUNT_NAME_MAX) {
|
|
100
|
+
out.push({ name: 'name', label: '账户名', why: '太长(最多 ' + String(ACCOUNT_NAME_MAX) + ' 个字)' });
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
if (op === 'update' && isGiven(params['new-name'])) {
|
|
104
|
+
const next = textOf(params['new-name']);
|
|
105
|
+
if (next === textOf(params['name']))
|
|
106
|
+
out.push({ name: 'new-name', label: '改成什么名字', why: '和现在的名字一样' });
|
|
107
|
+
if (next.length > ACCOUNT_NAME_MAX) {
|
|
108
|
+
out.push({ name: 'new-name', label: '改成什么名字', why: '太长(最多 ' + String(ACCOUNT_NAME_MAX) + ' 个字)' });
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
if (op === 'transfer') {
|
|
112
|
+
const amount = numberOf(params['amount']);
|
|
113
|
+
if (isGiven(params['amount']) && amount !== null && amount <= 0) {
|
|
114
|
+
out.push({ name: 'amount', label: '金额', why: '要写正数(账户之间移动,不分收支方向)' });
|
|
115
|
+
}
|
|
116
|
+
const from = textOf(params['from']);
|
|
117
|
+
const to = textOf(params['to']);
|
|
118
|
+
if (from !== '' && to !== '' && from === to) {
|
|
119
|
+
out.push({ name: 'to', label: '到账户', why: '要和转出账户不同(自己转给自己不算一笔)' });
|
|
120
|
+
}
|
|
121
|
+
const time = textOf(params['time']);
|
|
122
|
+
if (time !== '' && !isFullTime(time)) {
|
|
123
|
+
out.push({ name: 'time', label: '时间', why: '要写成 2026-09-14 12:00:00 这样(含年月日与时分秒)' });
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return out;
|
|
127
|
+
}
|
|
128
|
+
/** 账户名:必需槽位,空白即抛(阻断闸门放行之后才会走到这里)。 */
|
|
129
|
+
export function needAccountName(params, field = 'name') {
|
|
130
|
+
const v = params[field];
|
|
131
|
+
if (typeof v !== 'string' || !v.trim()) {
|
|
132
|
+
throw new BillPolicyError('POLICY_MISSING_SLOT', '缺槽位 ' + field);
|
|
133
|
+
}
|
|
134
|
+
return v.trim();
|
|
135
|
+
}
|
|
136
|
+
/** 转账的真值校验(阻断闸门放行之后才会走到这里):金额为正数、两个账户都给且不同、时间形态可认。
|
|
137
|
+
* 时间不给=取当下(缺省由 `./write.js` 给)。 */
|
|
138
|
+
export function validateTransfer(params) {
|
|
139
|
+
const n = numberOf(params['amount']);
|
|
140
|
+
if (n === null || n <= 0) {
|
|
141
|
+
throw new BillPolicyError('POLICY_BAD_INPUT', '转账金额须为正数:' + JSON.stringify(params['amount']));
|
|
142
|
+
}
|
|
143
|
+
const from = needAccountName(params, 'from');
|
|
144
|
+
const to = needAccountName(params, 'to');
|
|
145
|
+
if (from === to)
|
|
146
|
+
throw new BillPolicyError('POLICY_BAD_INPUT', '转出与转入账户不得相同');
|
|
147
|
+
const time = textOf(params['time']);
|
|
148
|
+
if (time !== '' && !isFullTime(time)) {
|
|
149
|
+
throw new BillPolicyError('POLICY_BAD_INPUT', '转账时间的形态不认(要用 YYYY-MM-DD HH:MM:SS):' + time);
|
|
150
|
+
}
|
|
151
|
+
return { amount: Math.round(n * 100) / 100, from, to, time: time === '' ? null : time };
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=params.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"params.js","sourceRoot":"","sources":["../../src/account/params.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** 账户域·查询载荷装配件(#689 结构搬迁第三批:从 `src/render/views.ts` 的 `buildAccountQuery` 来)。
|
|
2
|
+
* 一件事实:`bill.account.query` 的 list 载荷 `{ items, total }`——余额实算与最近三笔由调用方装配,
|
|
3
|
+
* 本件只管载荷形状与条数。
|
|
4
|
+
*
|
|
5
|
+
* 谁在用(指名):`src/cli/cmd_read.ts` 的 account.query 分支(未迁移命令的分派,经 `./index.js` 门取)——
|
|
6
|
+
* 命令搬进本域后由本域处理体消费。 */
|
|
7
|
+
export declare function buildAccountQuery(items: Record<string, unknown>[]): {
|
|
8
|
+
items: Record<string, unknown>[];
|
|
9
|
+
total: number;
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/account/query.ts"],"names":[],"mappings":"AAAA;;;;;yBAKyB;AACzB,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAEvH"}
|