skill-home 0.3.52 → 0.3.53

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (533) hide show
  1. package/dist/cli/cmd_read.d.ts +3 -0
  2. package/dist/cli/cmd_read.d.ts.map +1 -0
  3. package/dist/cli/cmd_read.js +317 -0
  4. package/dist/cli/cmd_read.js.map +1 -0
  5. package/dist/cli/config.d.ts +20 -0
  6. package/dist/cli/config.d.ts.map +1 -0
  7. package/dist/cli/config.js +100 -0
  8. package/dist/cli/config.js.map +1 -0
  9. package/dist/cli/health.d.ts +7 -0
  10. package/dist/cli/health.d.ts.map +1 -0
  11. package/dist/cli/health.js +32 -0
  12. package/dist/cli/health.js.map +1 -0
  13. package/dist/cli/keys.d.ts +4 -0
  14. package/dist/cli/keys.d.ts.map +1 -0
  15. package/dist/cli/keys.js +55 -0
  16. package/dist/cli/keys.js.map +1 -0
  17. package/dist/cli/language.d.ts +4 -0
  18. package/dist/cli/language.d.ts.map +1 -0
  19. package/dist/cli/language.js +19 -0
  20. package/dist/cli/language.js.map +1 -0
  21. package/dist/cli/registry.d.ts +4 -0
  22. package/dist/cli/registry.d.ts.map +1 -0
  23. package/dist/cli/registry.js +32 -0
  24. package/dist/cli/registry.js.map +1 -0
  25. package/dist/config.d.ts +66 -0
  26. package/dist/config.d.ts.map +1 -0
  27. package/dist/config.js +132 -0
  28. package/dist/config.js.map +1 -0
  29. package/dist/data/commands.d.ts +11 -0
  30. package/dist/data/commands.d.ts.map +1 -0
  31. package/dist/data/commands.js +7 -0
  32. package/dist/data/commands.js.map +1 -0
  33. package/dist/data/index.d.ts +3 -0
  34. package/dist/data/index.d.ts.map +1 -0
  35. package/dist/data/index.js +4 -0
  36. package/dist/data/index.js.map +1 -0
  37. package/dist/data/query.d.ts +23 -0
  38. package/dist/data/query.d.ts.map +1 -0
  39. package/dist/data/query.js +19 -0
  40. package/dist/data/query.js.map +1 -0
  41. package/dist/data/routes.d.ts +3 -0
  42. package/dist/data/routes.d.ts.map +1 -0
  43. package/dist/data/routes.js +2 -0
  44. package/dist/data/routes.js.map +1 -0
  45. package/dist/data/schema.d.ts +15 -0
  46. package/dist/data/schema.d.ts.map +1 -0
  47. package/dist/data/schema.js +18 -0
  48. package/dist/data/schema.js.map +1 -0
  49. package/dist/data/tables.d.ts +48 -0
  50. package/dist/data/tables.d.ts.map +1 -0
  51. package/dist/data/tables.js +82 -0
  52. package/dist/data/tables.js.map +1 -0
  53. package/dist/express/commands.d.ts +3 -0
  54. package/dist/express/commands.d.ts.map +1 -0
  55. package/dist/express/commands.js +6 -0
  56. package/dist/express/commands.js.map +1 -0
  57. package/dist/express/index.d.ts +3 -0
  58. package/dist/express/index.d.ts.map +1 -0
  59. package/dist/express/index.js +4 -0
  60. package/dist/express/index.js.map +1 -0
  61. package/dist/express/pages/express.d.ts +24 -0
  62. package/dist/express/pages/express.d.ts.map +1 -0
  63. package/dist/express/pages/express.js +160 -0
  64. package/dist/express/pages/express.js.map +1 -0
  65. package/dist/express/pages/list.d.ts +24 -0
  66. package/dist/express/pages/list.d.ts.map +1 -0
  67. package/dist/express/pages/list.js +167 -0
  68. package/dist/express/pages/list.js.map +1 -0
  69. package/dist/express/pages/missing.d.ts +24 -0
  70. package/dist/express/pages/missing.d.ts.map +1 -0
  71. package/dist/express/pages/missing.js +146 -0
  72. package/dist/express/pages/missing.js.map +1 -0
  73. package/dist/express/pages/stock.d.ts +24 -0
  74. package/dist/express/pages/stock.d.ts.map +1 -0
  75. package/dist/express/pages/stock.js +176 -0
  76. package/dist/express/pages/stock.js.map +1 -0
  77. package/dist/express/routes.d.ts +3 -0
  78. package/dist/express/routes.d.ts.map +1 -0
  79. package/dist/express/routes.js +8 -0
  80. package/dist/express/routes.js.map +1 -0
  81. package/dist/express/shopping.d.ts +4 -0
  82. package/dist/express/shopping.d.ts.map +1 -0
  83. package/dist/express/shopping.js +145 -0
  84. package/dist/express/shopping.js.map +1 -0
  85. package/dist/family/care.d.ts +4 -0
  86. package/dist/family/care.d.ts.map +1 -0
  87. package/dist/family/care.js +103 -0
  88. package/dist/family/care.js.map +1 -0
  89. package/dist/family/commands.d.ts +3 -0
  90. package/dist/family/commands.d.ts.map +1 -0
  91. package/dist/family/commands.js +6 -0
  92. package/dist/family/commands.js.map +1 -0
  93. package/dist/family/index.d.ts +3 -0
  94. package/dist/family/index.d.ts.map +1 -0
  95. package/dist/family/index.js +4 -0
  96. package/dist/family/index.js.map +1 -0
  97. package/dist/family/pages/family_borrow.d.ts +24 -0
  98. package/dist/family/pages/family_borrow.d.ts.map +1 -0
  99. package/dist/family/pages/family_borrow.js +267 -0
  100. package/dist/family/pages/family_borrow.js.map +1 -0
  101. package/dist/family/pages/family_members.d.ts +24 -0
  102. package/dist/family/pages/family_members.d.ts.map +1 -0
  103. package/dist/family/pages/family_members.js +171 -0
  104. package/dist/family/pages/family_members.js.map +1 -0
  105. package/dist/family/routes.d.ts +3 -0
  106. package/dist/family/routes.d.ts.map +1 -0
  107. package/dist/family/routes.js +20 -0
  108. package/dist/family/routes.js.map +1 -0
  109. package/dist/fetch/archive.d.ts +13 -0
  110. package/dist/fetch/archive.d.ts.map +1 -0
  111. package/dist/fetch/archive.js +115 -0
  112. package/dist/fetch/archive.js.map +1 -0
  113. package/dist/fetch/backup.d.ts +75 -0
  114. package/dist/fetch/backup.d.ts.map +1 -0
  115. package/dist/fetch/backup.js +285 -0
  116. package/dist/fetch/backup.js.map +1 -0
  117. package/dist/fetch/db.d.ts +107 -0
  118. package/dist/fetch/db.d.ts.map +1 -0
  119. package/dist/fetch/db.js +443 -0
  120. package/dist/fetch/db.js.map +1 -0
  121. package/dist/fetch/domains.d.ts +151 -0
  122. package/dist/fetch/domains.d.ts.map +1 -0
  123. package/dist/fetch/domains.js +354 -0
  124. package/dist/fetch/domains.js.map +1 -0
  125. package/dist/fetch/errors.d.ts +11 -0
  126. package/dist/fetch/errors.d.ts.map +1 -0
  127. package/dist/fetch/errors.js +18 -0
  128. package/dist/fetch/errors.js.map +1 -0
  129. package/dist/fetch/index.d.ts +11 -0
  130. package/dist/fetch/index.d.ts.map +1 -0
  131. package/dist/fetch/index.js +14 -0
  132. package/dist/fetch/index.js.map +1 -0
  133. package/dist/fetch/masterKey.d.ts +11 -0
  134. package/dist/fetch/masterKey.d.ts.map +1 -0
  135. package/dist/fetch/masterKey.js +46 -0
  136. package/dist/fetch/masterKey.js.map +1 -0
  137. package/dist/fetch/paths.d.ts +55 -0
  138. package/dist/fetch/paths.d.ts.map +1 -0
  139. package/dist/fetch/paths.js +100 -0
  140. package/dist/fetch/paths.js.map +1 -0
  141. package/dist/health.d.ts +50 -0
  142. package/dist/health.d.ts.map +1 -0
  143. package/dist/health.js +524 -0
  144. package/dist/health.js.map +1 -0
  145. package/dist/help/helpAssets.d.ts +52 -0
  146. package/dist/help/helpAssets.d.ts.map +1 -0
  147. package/dist/help/helpAssets.js +2323 -0
  148. package/dist/help/helpAssets.js.map +1 -0
  149. package/dist/help/helpFile.d.ts +62 -0
  150. package/dist/help/helpFile.d.ts.map +1 -0
  151. package/dist/help/helpFile.js +219 -0
  152. package/dist/help/helpFile.js.map +1 -0
  153. package/dist/help/index.d.ts +6 -0
  154. package/dist/help/index.d.ts.map +1 -0
  155. package/dist/help/index.js +8 -0
  156. package/dist/help/index.js.map +1 -0
  157. package/dist/help/lookup.d.ts +11 -0
  158. package/dist/help/lookup.d.ts.map +1 -0
  159. package/dist/help/lookup.js +52 -0
  160. package/dist/help/lookup.js.map +1 -0
  161. package/dist/help/manifest.d.ts +17 -0
  162. package/dist/help/manifest.d.ts.map +1 -0
  163. package/dist/help/manifest.js +44 -0
  164. package/dist/help/manifest.js.map +1 -0
  165. package/dist/help/output.d.ts +12 -0
  166. package/dist/help/output.d.ts.map +1 -0
  167. package/dist/help/output.js +65 -0
  168. package/dist/help/output.js.map +1 -0
  169. package/dist/index.d.ts +5 -0
  170. package/dist/index.d.ts.map +1 -0
  171. package/dist/index.js +6 -0
  172. package/dist/index.js.map +1 -0
  173. package/dist/items/add.d.ts +3 -0
  174. package/dist/items/add.d.ts.map +1 -0
  175. package/dist/items/add.js +34 -0
  176. package/dist/items/add.js.map +1 -0
  177. package/dist/items/commands.d.ts +3 -0
  178. package/dist/items/commands.d.ts.map +1 -0
  179. package/dist/items/commands.js +22 -0
  180. package/dist/items/commands.js.map +1 -0
  181. package/dist/items/detail.d.ts +3 -0
  182. package/dist/items/detail.d.ts.map +1 -0
  183. package/dist/items/detail.js +31 -0
  184. package/dist/items/detail.js.map +1 -0
  185. package/dist/items/index.d.ts +3 -0
  186. package/dist/items/index.d.ts.map +1 -0
  187. package/dist/items/index.js +4 -0
  188. package/dist/items/index.js.map +1 -0
  189. package/dist/items/inventory.d.ts +4 -0
  190. package/dist/items/inventory.d.ts.map +1 -0
  191. package/dist/items/inventory.js +63 -0
  192. package/dist/items/inventory.js.map +1 -0
  193. package/dist/items/pages/add_form.d.ts +24 -0
  194. package/dist/items/pages/add_form.d.ts.map +1 -0
  195. package/dist/items/pages/add_form.js +174 -0
  196. package/dist/items/pages/add_form.js.map +1 -0
  197. package/dist/items/pages/browse.d.ts +24 -0
  198. package/dist/items/pages/browse.d.ts.map +1 -0
  199. package/dist/items/pages/browse.js +143 -0
  200. package/dist/items/pages/browse.js.map +1 -0
  201. package/dist/items/pages/category_manage.d.ts +24 -0
  202. package/dist/items/pages/category_manage.d.ts.map +1 -0
  203. package/dist/items/pages/category_manage.js +153 -0
  204. package/dist/items/pages/category_manage.js.map +1 -0
  205. package/dist/items/pages/confirm.d.ts +24 -0
  206. package/dist/items/pages/confirm.d.ts.map +1 -0
  207. package/dist/items/pages/confirm.js +149 -0
  208. package/dist/items/pages/confirm.js.map +1 -0
  209. package/dist/items/pages/detail.d.ts +24 -0
  210. package/dist/items/pages/detail.d.ts.map +1 -0
  211. package/dist/items/pages/detail.js +160 -0
  212. package/dist/items/pages/detail.js.map +1 -0
  213. package/dist/items/pages/duplicates.d.ts +24 -0
  214. package/dist/items/pages/duplicates.d.ts.map +1 -0
  215. package/dist/items/pages/duplicates.js +138 -0
  216. package/dist/items/pages/duplicates.js.map +1 -0
  217. package/dist/items/pages/history.d.ts +24 -0
  218. package/dist/items/pages/history.d.ts.map +1 -0
  219. package/dist/items/pages/history.js +213 -0
  220. package/dist/items/pages/history.js.map +1 -0
  221. package/dist/items/pages/inventory_diff.d.ts +24 -0
  222. package/dist/items/pages/inventory_diff.d.ts.map +1 -0
  223. package/dist/items/pages/inventory_diff.js +126 -0
  224. package/dist/items/pages/inventory_diff.js.map +1 -0
  225. package/dist/items/pages/inventory_records.d.ts +24 -0
  226. package/dist/items/pages/inventory_records.d.ts.map +1 -0
  227. package/dist/items/pages/inventory_records.js +147 -0
  228. package/dist/items/pages/inventory_records.js.map +1 -0
  229. package/dist/items/pages/inventory_round.d.ts +24 -0
  230. package/dist/items/pages/inventory_round.d.ts.map +1 -0
  231. package/dist/items/pages/inventory_round.js +145 -0
  232. package/dist/items/pages/inventory_round.js.map +1 -0
  233. package/dist/items/pages/locate.d.ts +24 -0
  234. package/dist/items/pages/locate.d.ts.map +1 -0
  235. package/dist/items/pages/locate.js +129 -0
  236. package/dist/items/pages/locate.js.map +1 -0
  237. package/dist/items/pages/move_checklist.d.ts +24 -0
  238. package/dist/items/pages/move_checklist.d.ts.map +1 -0
  239. package/dist/items/pages/move_checklist.js +112 -0
  240. package/dist/items/pages/move_checklist.js.map +1 -0
  241. package/dist/items/pages/photo_wall.d.ts +24 -0
  242. package/dist/items/pages/photo_wall.d.ts.map +1 -0
  243. package/dist/items/pages/photo_wall.js +145 -0
  244. package/dist/items/pages/photo_wall.js.map +1 -0
  245. package/dist/items/pages/photos.d.ts +24 -0
  246. package/dist/items/pages/photos.d.ts.map +1 -0
  247. package/dist/items/pages/photos.js +182 -0
  248. package/dist/items/pages/photos.js.map +1 -0
  249. package/dist/items/pages/receipt.d.ts +24 -0
  250. package/dist/items/pages/receipt.d.ts.map +1 -0
  251. package/dist/items/pages/receipt.js +252 -0
  252. package/dist/items/pages/receipt.js.map +1 -0
  253. package/dist/items/pages/relations.d.ts +24 -0
  254. package/dist/items/pages/relations.d.ts.map +1 -0
  255. package/dist/items/pages/relations.js +144 -0
  256. package/dist/items/pages/relations.js.map +1 -0
  257. package/dist/items/pages/search_list.d.ts +24 -0
  258. package/dist/items/pages/search_list.d.ts.map +1 -0
  259. package/dist/items/pages/search_list.js +133 -0
  260. package/dist/items/pages/search_list.js.map +1 -0
  261. package/dist/items/pages/tag_manage.d.ts +24 -0
  262. package/dist/items/pages/tag_manage.d.ts.map +1 -0
  263. package/dist/items/pages/tag_manage.js +238 -0
  264. package/dist/items/pages/tag_manage.js.map +1 -0
  265. package/dist/items/pages/undo_select.d.ts +24 -0
  266. package/dist/items/pages/undo_select.d.ts.map +1 -0
  267. package/dist/items/pages/undo_select.js +143 -0
  268. package/dist/items/pages/undo_select.js.map +1 -0
  269. package/dist/items/routes.d.ts +3 -0
  270. package/dist/items/routes.d.ts.map +1 -0
  271. package/dist/items/routes.js +62 -0
  272. package/dist/items/routes.js.map +1 -0
  273. package/dist/items/search.d.ts +3 -0
  274. package/dist/items/search.d.ts.map +1 -0
  275. package/dist/items/search.js +47 -0
  276. package/dist/items/search.js.map +1 -0
  277. package/dist/items/tag.d.ts +25 -0
  278. package/dist/items/tag.d.ts.map +1 -0
  279. package/dist/items/tag.js +147 -0
  280. package/dist/items/tag.js.map +1 -0
  281. package/dist/items/update.d.ts +20 -0
  282. package/dist/items/update.d.ts.map +1 -0
  283. package/dist/items/update.js +211 -0
  284. package/dist/items/update.js.map +1 -0
  285. package/dist/outfit/commands.d.ts +3 -0
  286. package/dist/outfit/commands.d.ts.map +1 -0
  287. package/dist/outfit/commands.js +7 -0
  288. package/dist/outfit/commands.js.map +1 -0
  289. package/dist/outfit/index.d.ts +3 -0
  290. package/dist/outfit/index.d.ts.map +1 -0
  291. package/dist/outfit/index.js +4 -0
  292. package/dist/outfit/index.js.map +1 -0
  293. package/dist/outfit/outfit.d.ts +3 -0
  294. package/dist/outfit/outfit.d.ts.map +1 -0
  295. package/dist/outfit/outfit.js +187 -0
  296. package/dist/outfit/outfit.js.map +1 -0
  297. package/dist/outfit/pages/outfit_picker.d.ts +24 -0
  298. package/dist/outfit/pages/outfit_picker.d.ts.map +1 -0
  299. package/dist/outfit/pages/outfit_picker.js +185 -0
  300. package/dist/outfit/pages/outfit_picker.js.map +1 -0
  301. package/dist/outfit/pages/travel_trip.d.ts +24 -0
  302. package/dist/outfit/pages/travel_trip.d.ts.map +1 -0
  303. package/dist/outfit/pages/travel_trip.js +185 -0
  304. package/dist/outfit/pages/travel_trip.js.map +1 -0
  305. package/dist/outfit/pages/trip_outfit_plan.d.ts +24 -0
  306. package/dist/outfit/pages/trip_outfit_plan.d.ts.map +1 -0
  307. package/dist/outfit/pages/trip_outfit_plan.js +173 -0
  308. package/dist/outfit/pages/trip_outfit_plan.js.map +1 -0
  309. package/dist/outfit/pages/wardrobe_analyze.d.ts +24 -0
  310. package/dist/outfit/pages/wardrobe_analyze.d.ts.map +1 -0
  311. package/dist/outfit/pages/wardrobe_analyze.js +171 -0
  312. package/dist/outfit/pages/wardrobe_analyze.js.map +1 -0
  313. package/dist/outfit/pages/wardrobe_season.d.ts +24 -0
  314. package/dist/outfit/pages/wardrobe_season.d.ts.map +1 -0
  315. package/dist/outfit/pages/wardrobe_season.js +167 -0
  316. package/dist/outfit/pages/wardrobe_season.js.map +1 -0
  317. package/dist/outfit/routes.d.ts +3 -0
  318. package/dist/outfit/routes.d.ts.map +1 -0
  319. package/dist/outfit/routes.js +9 -0
  320. package/dist/outfit/routes.js.map +1 -0
  321. package/dist/outfit/trip.d.ts +3 -0
  322. package/dist/outfit/trip.d.ts.map +1 -0
  323. package/dist/outfit/trip.js +59 -0
  324. package/dist/outfit/trip.js.map +1 -0
  325. package/dist/output.d.ts +13 -0
  326. package/dist/output.d.ts.map +1 -0
  327. package/dist/output.js +57 -0
  328. package/dist/output.js.map +1 -0
  329. package/dist/policy/care.d.ts +4 -0
  330. package/dist/policy/care.d.ts.map +1 -0
  331. package/dist/policy/care.js +12 -0
  332. package/dist/policy/care.js.map +1 -0
  333. package/dist/policy/category.d.ts +8 -0
  334. package/dist/policy/category.d.ts.map +1 -0
  335. package/dist/policy/category.js +44 -0
  336. package/dist/policy/category.js.map +1 -0
  337. package/dist/policy/index.d.ts +9 -0
  338. package/dist/policy/index.d.ts.map +1 -0
  339. package/dist/policy/index.js +6 -0
  340. package/dist/policy/index.js.map +1 -0
  341. package/dist/policy/item.d.ts +18 -0
  342. package/dist/policy/item.d.ts.map +1 -0
  343. package/dist/policy/item.js +81 -0
  344. package/dist/policy/item.js.map +1 -0
  345. package/dist/policy/routes.generated.d.ts +3 -0
  346. package/dist/policy/routes.generated.d.ts.map +1 -0
  347. package/dist/policy/routes.generated.js +128 -0
  348. package/dist/policy/routes.generated.js.map +1 -0
  349. package/dist/policy/ticket.d.ts +6 -0
  350. package/dist/policy/ticket.d.ts.map +1 -0
  351. package/dist/policy/ticket.js +25 -0
  352. package/dist/policy/ticket.js.map +1 -0
  353. package/dist/policy/wakewords.d.ts +16 -0
  354. package/dist/policy/wakewords.d.ts.map +1 -0
  355. package/dist/policy/wakewords.js +38 -0
  356. package/dist/policy/wakewords.js.map +1 -0
  357. package/dist/receipt/commands.d.ts +3 -0
  358. package/dist/receipt/commands.d.ts.map +1 -0
  359. package/dist/receipt/commands.js +6 -0
  360. package/dist/receipt/commands.js.map +1 -0
  361. package/dist/receipt/index.d.ts +3 -0
  362. package/dist/receipt/index.d.ts.map +1 -0
  363. package/dist/receipt/index.js +4 -0
  364. package/dist/receipt/index.js.map +1 -0
  365. package/dist/receipt/pages/accounts.d.ts +24 -0
  366. package/dist/receipt/pages/accounts.d.ts.map +1 -0
  367. package/dist/receipt/pages/accounts.js +217 -0
  368. package/dist/receipt/pages/accounts.js.map +1 -0
  369. package/dist/receipt/pages/certificates.d.ts +24 -0
  370. package/dist/receipt/pages/certificates.d.ts.map +1 -0
  371. package/dist/receipt/pages/certificates.js +231 -0
  372. package/dist/receipt/pages/certificates.js.map +1 -0
  373. package/dist/receipt/pages/purchase_records.d.ts +24 -0
  374. package/dist/receipt/pages/purchase_records.d.ts.map +1 -0
  375. package/dist/receipt/pages/purchase_records.js +267 -0
  376. package/dist/receipt/pages/purchase_records.js.map +1 -0
  377. package/dist/receipt/pages/warranty.d.ts +24 -0
  378. package/dist/receipt/pages/warranty.d.ts.map +1 -0
  379. package/dist/receipt/pages/warranty.js +142 -0
  380. package/dist/receipt/pages/warranty.js.map +1 -0
  381. package/dist/receipt/routes.d.ts +3 -0
  382. package/dist/receipt/routes.d.ts.map +1 -0
  383. package/dist/receipt/routes.js +21 -0
  384. package/dist/receipt/routes.js.map +1 -0
  385. package/dist/receipt/ticket.d.ts +4 -0
  386. package/dist/receipt/ticket.d.ts.map +1 -0
  387. package/dist/receipt/ticket.js +282 -0
  388. package/dist/receipt/ticket.js.map +1 -0
  389. package/dist/render/copyArea.d.ts +64 -0
  390. package/dist/render/copyArea.d.ts.map +1 -0
  391. package/dist/render/copyArea.js +196 -0
  392. package/dist/render/copyArea.js.map +1 -0
  393. package/dist/render/envelope.d.ts +6 -0
  394. package/dist/render/envelope.d.ts.map +1 -0
  395. package/dist/render/envelope.js +42 -0
  396. package/dist/render/envelope.js.map +1 -0
  397. package/dist/render/errors.d.ts +5 -0
  398. package/dist/render/errors.d.ts.map +1 -0
  399. package/dist/render/errors.js +10 -0
  400. package/dist/render/errors.js.map +1 -0
  401. package/dist/render/familyPage.d.ts +20 -0
  402. package/dist/render/familyPage.d.ts.map +1 -0
  403. package/dist/render/familyPage.js +106 -0
  404. package/dist/render/familyPage.js.map +1 -0
  405. package/dist/render/html.d.ts +16 -0
  406. package/dist/render/html.d.ts.map +1 -0
  407. package/dist/render/html.js +135 -0
  408. package/dist/render/html.js.map +1 -0
  409. package/dist/render/index.d.ts +14 -0
  410. package/dist/render/index.d.ts.map +1 -0
  411. package/dist/render/index.js +13 -0
  412. package/dist/render/index.js.map +1 -0
  413. package/dist/render/pageFamilies.d.ts +8 -0
  414. package/dist/render/pageFamilies.d.ts.map +1 -0
  415. package/dist/render/pageFamilies.js +169 -0
  416. package/dist/render/pageFamilies.js.map +1 -0
  417. package/dist/render/sceneNaming.d.ts +14 -0
  418. package/dist/render/sceneNaming.d.ts.map +1 -0
  419. package/dist/render/sceneNaming.js +173 -0
  420. package/dist/render/sceneNaming.js.map +1 -0
  421. package/dist/render/templates.d.ts +5 -0
  422. package/dist/render/templates.d.ts.map +1 -0
  423. package/dist/render/templates.js +68 -0
  424. package/dist/render/templates.js.map +1 -0
  425. package/dist/render/views.d.ts +115 -0
  426. package/dist/render/views.d.ts.map +1 -0
  427. package/dist/render/views.js +81 -0
  428. package/dist/render/views.js.map +1 -0
  429. package/dist/setup/commands.d.ts +3 -0
  430. package/dist/setup/commands.d.ts.map +1 -0
  431. package/dist/setup/commands.js +9 -0
  432. package/dist/setup/commands.js.map +1 -0
  433. package/dist/setup/index.d.ts +3 -0
  434. package/dist/setup/index.d.ts.map +1 -0
  435. package/dist/setup/index.js +4 -0
  436. package/dist/setup/index.js.map +1 -0
  437. package/dist/setup/pages/backup_receipt.d.ts +24 -0
  438. package/dist/setup/pages/backup_receipt.d.ts.map +1 -0
  439. package/dist/setup/pages/backup_receipt.js +198 -0
  440. package/dist/setup/pages/backup_receipt.js.map +1 -0
  441. package/dist/setup/pages/first_use_wizard.d.ts +24 -0
  442. package/dist/setup/pages/first_use_wizard.d.ts.map +1 -0
  443. package/dist/setup/pages/first_use_wizard.js +169 -0
  444. package/dist/setup/pages/first_use_wizard.js.map +1 -0
  445. package/dist/setup/pages/health_report.d.ts +24 -0
  446. package/dist/setup/pages/health_report.d.ts.map +1 -0
  447. package/dist/setup/pages/health_report.js +152 -0
  448. package/dist/setup/pages/health_report.js.map +1 -0
  449. package/dist/setup/pages/import_restore.d.ts +24 -0
  450. package/dist/setup/pages/import_restore.d.ts.map +1 -0
  451. package/dist/setup/pages/import_restore.js +179 -0
  452. package/dist/setup/pages/import_restore.js.map +1 -0
  453. package/dist/setup/routes.d.ts +3 -0
  454. package/dist/setup/routes.d.ts.map +1 -0
  455. package/dist/setup/routes.js +2 -0
  456. package/dist/setup/routes.js.map +1 -0
  457. package/dist/shared/commandSpec.d.ts +34 -0
  458. package/dist/shared/commandSpec.d.ts.map +1 -0
  459. package/dist/shared/commandSpec.js +8 -0
  460. package/dist/shared/commandSpec.js.map +1 -0
  461. package/dist/shared/fail.d.ts +4 -0
  462. package/dist/shared/fail.d.ts.map +1 -0
  463. package/dist/shared/fail.js +16 -0
  464. package/dist/shared/fail.js.map +1 -0
  465. package/dist/shared/params.d.ts +4 -0
  466. package/dist/shared/params.d.ts.map +1 -0
  467. package/dist/shared/params.js +31 -0
  468. package/dist/shared/params.js.map +1 -0
  469. package/dist/space/commands.d.ts +3 -0
  470. package/dist/space/commands.d.ts.map +1 -0
  471. package/dist/space/commands.js +6 -0
  472. package/dist/space/commands.js.map +1 -0
  473. package/dist/space/index.d.ts +3 -0
  474. package/dist/space/index.d.ts.map +1 -0
  475. package/dist/space/index.js +4 -0
  476. package/dist/space/index.js.map +1 -0
  477. package/dist/space/location.d.ts +82 -0
  478. package/dist/space/location.d.ts.map +1 -0
  479. package/dist/space/location.js +324 -0
  480. package/dist/space/location.js.map +1 -0
  481. package/dist/space/pages/fixed_spot.d.ts +24 -0
  482. package/dist/space/pages/fixed_spot.d.ts.map +1 -0
  483. package/dist/space/pages/fixed_spot.js +122 -0
  484. package/dist/space/pages/fixed_spot.js.map +1 -0
  485. package/dist/space/pages/location_manage.d.ts +24 -0
  486. package/dist/space/pages/location_manage.d.ts.map +1 -0
  487. package/dist/space/pages/location_manage.js +182 -0
  488. package/dist/space/pages/location_manage.js.map +1 -0
  489. package/dist/space/pages/space_view.d.ts +24 -0
  490. package/dist/space/pages/space_view.d.ts.map +1 -0
  491. package/dist/space/pages/space_view.js +185 -0
  492. package/dist/space/pages/space_view.js.map +1 -0
  493. package/dist/space/pages/suggest_storage.d.ts +24 -0
  494. package/dist/space/pages/suggest_storage.d.ts.map +1 -0
  495. package/dist/space/pages/suggest_storage.js +179 -0
  496. package/dist/space/pages/suggest_storage.js.map +1 -0
  497. package/dist/space/routes.d.ts +3 -0
  498. package/dist/space/routes.d.ts.map +1 -0
  499. package/dist/space/routes.js +24 -0
  500. package/dist/space/routes.js.map +1 -0
  501. package/dist/stats/commands.d.ts +3 -0
  502. package/dist/stats/commands.d.ts.map +1 -0
  503. package/dist/stats/commands.js +6 -0
  504. package/dist/stats/commands.js.map +1 -0
  505. package/dist/stats/index.d.ts +3 -0
  506. package/dist/stats/index.d.ts.map +1 -0
  507. package/dist/stats/index.js +4 -0
  508. package/dist/stats/index.js.map +1 -0
  509. package/dist/stats/pages/expiring.d.ts +24 -0
  510. package/dist/stats/pages/expiring.d.ts.map +1 -0
  511. package/dist/stats/pages/expiring.js +220 -0
  512. package/dist/stats/pages/expiring.js.map +1 -0
  513. package/dist/stats/pages/idle.d.ts +24 -0
  514. package/dist/stats/pages/idle.d.ts.map +1 -0
  515. package/dist/stats/pages/idle.js +181 -0
  516. package/dist/stats/pages/idle.js.map +1 -0
  517. package/dist/stats/pages/inventory_stat.d.ts +24 -0
  518. package/dist/stats/pages/inventory_stat.d.ts.map +1 -0
  519. package/dist/stats/pages/inventory_stat.js +165 -0
  520. package/dist/stats/pages/inventory_stat.js.map +1 -0
  521. package/dist/stats/pages/overview.d.ts +24 -0
  522. package/dist/stats/pages/overview.d.ts.map +1 -0
  523. package/dist/stats/pages/overview.js +238 -0
  524. package/dist/stats/pages/overview.js.map +1 -0
  525. package/dist/stats/routes.d.ts +3 -0
  526. package/dist/stats/routes.d.ts.map +1 -0
  527. package/dist/stats/routes.js +16 -0
  528. package/dist/stats/routes.js.map +1 -0
  529. package/dist/stats/stats.d.ts +4 -0
  530. package/dist/stats/stats.d.ts.map +1 -0
  531. package/dist/stats/stats.js +92 -0
  532. package/dist/stats/stats.js.map +1 -0
  533. package/package.json +3 -3
@@ -0,0 +1,354 @@
1
+ import { HomeFetchError } from './errors.js';
2
+ function q(handle, sql, ...args) {
3
+ try {
4
+ return handle.db.prepare(sql).all(...args);
5
+ }
6
+ catch (e) {
7
+ throw new HomeFetchError('HOME_DB_UNREADABLE', '域表读取失败', { cause: e });
8
+ }
9
+ }
10
+ function run(handle, sql, ...args) {
11
+ try {
12
+ handle.db.prepare(sql).run(...args);
13
+ }
14
+ catch (e) {
15
+ throw new HomeFetchError('HOME_DB_UNREADABLE', '域表写入失败', { cause: e });
16
+ }
17
+ }
18
+ function one(handle, sql, ...args) {
19
+ try {
20
+ return handle.db.prepare(sql).get(...args);
21
+ }
22
+ catch (e) {
23
+ throw new HomeFetchError('HOME_DB_UNREADABLE', '域表读取失败', { cause: e });
24
+ }
25
+ }
26
+ // ---- 盘点(#916 起照老库权威 DDL:scope 存范围名,异/状态/完成率落库) ----
27
+ export function addInventoryRecord(handle, scopeName, opts) {
28
+ const scope = scopeName.trim() === '' ? '全屋' : scopeName;
29
+ const missing = opts?.missingCnt ?? 0;
30
+ const extra = opts?.extraCnt ?? 0;
31
+ const diff = opts?.diffCnt ?? 0;
32
+ const pending = opts?.pendingCnt ?? 0;
33
+ const detail = opts?.detailJson ?? (opts?.total !== undefined ? JSON.stringify({ total: opts.total }) : '[]');
34
+ const status = opts?.status ?? '已完成';
35
+ run(handle, `INSERT INTO inventory_records
36
+ (scope, occurred_at, missing_cnt, extra_cnt, diff_cnt, pending_cnt, detail_json, status, created_at)
37
+ VALUES (?, datetime('now','localtime'), ?, ?, ?, ?, ?, ?, datetime('now','localtime'))`, scope, missing, extra, diff, pending, detail, status);
38
+ const r = one(handle, 'SELECT last_insert_rowid() AS id');
39
+ return r.id;
40
+ }
41
+ export function listInventoryRecords(handle, limit = 20) {
42
+ return q(handle, 'SELECT * FROM inventory_records ORDER BY id DESC LIMIT ?', limit);
43
+ }
44
+ // ---- 位置节点 ----
45
+ export function listLocationNodes(handle) {
46
+ return q(handle, 'SELECT path FROM location_nodes ORDER BY path').map((r) => String(r.path));
47
+ }
48
+ export function ensureLocationNode(handle, path) {
49
+ run(handle, 'INSERT OR IGNORE INTO location_nodes (path) VALUES (?)', path);
50
+ }
51
+ // ---- 购物 ----
52
+ export function listShopping(handle) {
53
+ return q(handle, 'SELECT * FROM shopping_items ORDER BY id');
54
+ }
55
+ export function addShopping(handle, name, quantity, routine) {
56
+ if (!name.trim())
57
+ throw new HomeFetchError('HOME_BAD_QUERY', '购物项须给 name');
58
+ run(handle, 'INSERT INTO shopping_items (name, quantity, routine) VALUES (?,?,?)', name.trim(), quantity, routine);
59
+ return one(handle, 'SELECT last_insert_rowid() AS id').id;
60
+ }
61
+ export function checkShopping(handle, ids) {
62
+ let n = 0;
63
+ for (const id of ids) {
64
+ run(handle, 'UPDATE shopping_items SET checked=1 WHERE id=?', id);
65
+ n++;
66
+ }
67
+ return n;
68
+ }
69
+ export function missingItems(handle) {
70
+ // 缺货:有阈值且总量 < 阈值
71
+ return q(handle, `SELECT i.id, i.name, ifnull(sum(l.quantity),0) AS qty, s.threshold
72
+ FROM items i JOIN stock_thresholds s ON s.item_id=i.id LEFT JOIN item_locations l ON l.item_id=i.id
73
+ GROUP BY i.id HAVING qty < s.threshold`);
74
+ }
75
+ export function stockList(handle) {
76
+ return q(handle, `SELECT i.id, i.name, ifnull(sum(l.quantity),0) AS qty, s.threshold
77
+ FROM items i LEFT JOIN item_locations l ON l.item_id=i.id LEFT JOIN stock_thresholds s ON s.item_id=i.id
78
+ GROUP BY i.id ORDER BY i.name`);
79
+ }
80
+ export function setThreshold(handle, itemId, threshold) {
81
+ if (!Number.isInteger(threshold) || threshold < 0)
82
+ throw new HomeFetchError('HOME_BAD_QUERY', 'threshold 须为非负整数');
83
+ run(handle, 'INSERT INTO stock_thresholds (item_id, threshold) VALUES (?,?) ON CONFLICT(item_id) DO UPDATE SET threshold=excluded.threshold', itemId, threshold);
84
+ }
85
+ // ---- 票据:purchase/warranty/cert/account ----
86
+ /** 购买记录(#890 起带物品名与分类名):页面要按判据那一行「物品名/ID/购买日/价格/渠道/…」逐格填值,
87
+ * `purchase_records` 只挂 `item_id`,名称与分类在 `items` 上,故这里 LEFT JOIN 带出(键名与页面读的
88
+ * `item_name` 对齐);物品被删时 `item_id` 被置空,JOIN 不到即留空,页面照全批口径写「—」。 */
89
+ export function listPurchases(handle, f) {
90
+ // #927:老库 items 表没有 category 列,只有 category_id;分类名一律走 categories 表 JOIN 拿,
91
+ // 不直接读 i.category(新库的 category 文本列只当写时冗余,不当读口径)。
92
+ let sql = 'SELECT p.*, i.name AS item_name, c.name AS item_category FROM purchase_records p LEFT JOIN items i ON i.id = p.item_id LEFT JOIN categories c ON c.id = i.category_id WHERE 1=1';
93
+ const args = [];
94
+ if (f.itemId !== undefined) {
95
+ sql += ' AND p.item_id=?';
96
+ args.push(f.itemId);
97
+ }
98
+ if (f.year !== undefined) {
99
+ sql += ' AND substr(p.date,1,4)=?';
100
+ args.push(f.year);
101
+ }
102
+ if (f.month !== undefined) {
103
+ sql += ' AND substr(p.date,6,2)=?';
104
+ args.push(f.month);
105
+ }
106
+ sql += ' ORDER BY p.date DESC LIMIT 100';
107
+ return q(handle, sql, ...args);
108
+ }
109
+ export function addPurchase(handle, itemId, date, price, channel, scene) {
110
+ run(handle, 'INSERT INTO purchase_records (item_id, date, price, channel, scene) VALUES (?,?,?,?,?)', itemId, date, price, channel, scene);
111
+ return one(handle, 'SELECT last_insert_rowid() AS id').id;
112
+ }
113
+ export function purchaseYearStats(handle, year) {
114
+ const r = one(handle, 'SELECT count(*) AS c, ifnull(sum(price),0) AS t FROM purchase_records WHERE substr(date,1,4)=?', year);
115
+ return { count: r?.c ?? 0, total: r?.t ?? 0 };
116
+ }
117
+ /** 保修/保养(#890 起带物品名与派生值):页面卡体的七个值位读 `item_name`/`kind`/`status`/
118
+ * `expires_at`/`remaining_days`/`repair_count`/`service_events`。前两件在 `warranties` 与 `items`,
119
+ * 后五件都由 `start_date + duration_days` 现算(本条命令本来就在 filter 分支里算 `st`,这里把它
120
+ * 提成返回字段,口径一字不改:`<0` 已过/`≤30` 即将到期/其余在保)。服务事件只算次数并把日期串起来。 */
121
+ export function listWarranties(handle, status) {
122
+ const rows = q(handle, 'SELECT w.*, i.name AS item_name FROM warranties w LEFT JOIN items i ON i.id = w.item_id ORDER BY w.start_date DESC LIMIT 100');
123
+ const now = new Date().toISOString().slice(0, 10);
124
+ const derived = rows.map((r) => {
125
+ const start = String(r.start_date);
126
+ const days = Number(r.duration_days);
127
+ const end = new Date(start);
128
+ end.setDate(end.getDate() + days);
129
+ const endS = end.toISOString().slice(0, 10);
130
+ const remain = (new Date(endS).getTime() - new Date(now).getTime()) / 86400000;
131
+ const st = remain < 0 ? '已过' : remain <= 30 ? '即将到期' : '在保';
132
+ const evs = q(handle, 'SELECT date, cost FROM service_events WHERE warranty_id=? ORDER BY date', Number(r.id));
133
+ const pieces = evs.map((e) => String(e.date) + (e.cost === null || e.cost === undefined ? '' : ' ' + String(e.cost) + ' 元'));
134
+ return {
135
+ ...r, status: st, expires_at: endS, remaining_days: Math.round(remain),
136
+ repair_count: evs.length, service_events: pieces.join(';'),
137
+ };
138
+ });
139
+ if (!status || status === '全部')
140
+ return derived;
141
+ return derived.filter((r) => r.status === status);
142
+ }
143
+ export function addWarranty(handle, itemId, kind, startDate, durationDays, scene) {
144
+ if (!['保修', '保养'].includes(kind))
145
+ throw new HomeFetchError('HOME_BAD_QUERY', 'kind 须 保修/保养');
146
+ if (!Number.isInteger(durationDays) || durationDays <= 0)
147
+ throw new HomeFetchError('HOME_BAD_QUERY', 'duration-days 须为正整数');
148
+ run(handle, 'INSERT INTO warranties (item_id, kind, start_date, duration_days, scene) VALUES (?,?,?,?,?)', itemId, kind, startDate, durationDays, scene);
149
+ return one(handle, 'SELECT last_insert_rowid() AS id').id;
150
+ }
151
+ export function addServiceEvent(handle, warrantyId, date, cost, scene) {
152
+ const hit = one(handle, 'SELECT id FROM warranties WHERE id=?', warrantyId);
153
+ if (!hit)
154
+ throw new HomeFetchError('HOME_BAD_QUERY', '无此保修:' + warrantyId);
155
+ run(handle, 'INSERT INTO service_events (warranty_id, date, cost, scene) VALUES (?,?,?,?)', warrantyId, date, cost, scene);
156
+ return one(handle, 'SELECT last_insert_rowid() AS id').id;
157
+ }
158
+ /** 证件号码脱敏:只出后四位,前面一律 `****`(#890)。**库里的明文号码不许进信封**——页面、复制载荷、
159
+ * 数据原文三处都可能落盘,故脱敏在取数这一层做完,出去的就只有 `number_masked`。
160
+ * 规则与 `receipt/pages/certificates.ts` 原来的 `maskDisplay` 逐字同一条(那处改读本函数,见铁律二)。 */
161
+ export function maskCertNumber(raw) {
162
+ if (typeof raw !== 'string')
163
+ return '未登记';
164
+ const s = raw.trim();
165
+ if (s === '')
166
+ return '未登记';
167
+ if (s.length <= 4)
168
+ return '****';
169
+ return '****' + s.slice(-4);
170
+ }
171
+ /** 证件清单(#890 起带持有人与脱敏号码):页面要按「类型/持有人/ID/到期日/剩余天数/证件状态/脱敏号码/备注」
172
+ * 逐格填值;号码在这一层换成 `number_masked`,明文字段不出本函数。 */
173
+ export function listCerts(handle) {
174
+ return q(handle, 'SELECT id, type, expires_at, holder, number FROM certificates ORDER BY expires_at LIMIT 100')
175
+ .map((r) => ({
176
+ id: r.id, type: r.type, cert_type: r.type, holder: r.holder,
177
+ expires_at: r.expires_at, number_masked: maskCertNumber(r.number),
178
+ }));
179
+ }
180
+ export function addCert(handle, type, expiresAt, holder, number, photo, scene) {
181
+ run(handle, 'INSERT INTO certificates (type, expires_at, holder, number, photo, scene) VALUES (?,?,?,?,?,?)', type, expiresAt, holder, number, photo, scene);
182
+ return one(handle, 'SELECT last_insert_rowid() AS id').id;
183
+ }
184
+ export function listAccounts(handle) {
185
+ return q(handle, 'SELECT platform, username, type FROM accounts ORDER BY platform').map((r) => ({
186
+ platform: String(r.platform), username: String(r.username), type: String(r.type),
187
+ }));
188
+ }
189
+ // ---- 家庭协作 ----
190
+ export function listMembers(handle) {
191
+ return q(handle, 'SELECT * FROM family_members ORDER BY name');
192
+ }
193
+ export function addMember(handle, name, relation) {
194
+ if (!name.trim())
195
+ throw new HomeFetchError('HOME_BAD_QUERY', '家人须给 name');
196
+ run(handle, 'INSERT OR IGNORE INTO family_members (name, relation) VALUES (?,?)', name.trim(), relation);
197
+ const hit = one(handle, 'SELECT id FROM family_members WHERE name=?', name.trim());
198
+ if (!hit)
199
+ throw new HomeFetchError('HOME_DB_UNREADABLE', '家人写入失败');
200
+ return hit.id;
201
+ }
202
+ export function listBorrows(handle) {
203
+ // 带上物品名(#817 收口:借用页要显示「借的什么」,不给就得印占位符)
204
+ // #927:分类名走 categories JOIN(老库无 items.category 列)。
205
+ return q(handle, 'SELECT b.*, i.name AS item_name, c.name AS item_category FROM borrow_records b LEFT JOIN items i ON i.id = b.item_id LEFT JOIN categories c ON c.id = i.category_id ORDER BY b.id DESC LIMIT 50');
206
+ }
207
+ export function addBorrow(handle, itemId, member, action, date) {
208
+ run(handle, 'INSERT INTO borrow_records (item_id, member, action, date) VALUES (?,?,?,?)', itemId, member, action, date);
209
+ return one(handle, 'SELECT last_insert_rowid() AS id').id;
210
+ }
211
+ // ---- 统计 ----
212
+ /** 活跃物品判据(老 `stats/__init__.py` 的 `_active_condition` 口径:至少一个位置的状态不在「已废弃/已用完」)。 */
213
+ const ACTIVE_ITEM = "EXISTS (SELECT 1 FROM item_locations il WHERE il.item_id = i.id AND il.location_status NOT IN ('已废弃','已用完'))";
214
+ /** 顶级分类递归表(子分类物品归并到顶级祖先;老 `top_category_rows` 的 `cat_path` 口径)。 */
215
+ const CAT_PATH = `WITH RECURSIVE cat_path AS (
216
+ SELECT id, parent_id, name, id AS top_id, name AS top_name FROM categories WHERE parent_id IS NULL
217
+ UNION ALL
218
+ SELECT c.id, c.parent_id, c.name, cp.top_id, cp.top_name FROM categories c JOIN cat_path cp ON c.parent_id = cp.id
219
+ )`;
220
+ /** 今天(本地日期,YYYY-MM-DD;与老 `_today()` 的本地时间约定一致)。 */
221
+ export function localToday() {
222
+ const d = new Date();
223
+ return d.getFullYear() + '-' + String(d.getMonth() + 1).padStart(2, '0') + '-' + String(d.getDate()).padStart(2, '0');
224
+ }
225
+ /** 本地日期偏移(负数为过去):`localDayAt(-7)` = 七天前。 */
226
+ function localDayAt(offset) {
227
+ const d = new Date();
228
+ d.setDate(d.getDate() + offset);
229
+ return d.getFullYear() + '-' + String(d.getMonth() + 1).padStart(2, '0') + '-' + String(d.getDate()).padStart(2, '0');
230
+ }
231
+ export function statsOverview(handle) {
232
+ const items = one(handle, 'SELECT count(*) AS c FROM items').c;
233
+ const locs = one(handle, 'SELECT count(*) AS c, ifnull(sum(quantity),0) AS q FROM item_locations');
234
+ const tags = one(handle, 'SELECT count(DISTINCT tag) AS c FROM item_tags').c;
235
+ const cats = one(handle, 'SELECT count(*) AS c FROM categories WHERE is_active=1').c;
236
+ return { items, locations: locs.c, quantity: locs.q, tags, categories: cats };
237
+ }
238
+ export function highFreq(handle, limit = 10) {
239
+ return handle.db.prepare('SELECT id, name, access_count AS count FROM items ORDER BY access_count DESC LIMIT ?').all(limit);
240
+ }
241
+ /** 高频 TOP(活跃物品;#865 补最后访问日与完整名称,值排行同形)。 */
242
+ export function frequentTopItems(handle, limit = 5) {
243
+ const rows = q(handle, `SELECT i.id, i.name, i.access_count AS count, ifnull(i.last_accessed_at,'') AS last_accessed_at
244
+ FROM items i WHERE ${ACTIVE_ITEM} ORDER BY i.access_count DESC, i.id LIMIT ?`, limit);
245
+ return rows.map((r) => ({ id: Number(r.id), name: String(r.name), count: Number(r.count), lastAccessedAt: String(r.last_accessed_at) }));
246
+ }
247
+ /** 价值 TOP(#865):价格 > 0 的活跃物品,单价降序,带分类名(老 `_value_top` 口径)。 */
248
+ export function valueTopItems(handle, limit = 5) {
249
+ const rows = q(handle, `SELECT i.id, i.name, i.purchase_price AS price, ifnull(c.name,'(未分类)') AS category
250
+ FROM items i LEFT JOIN categories c ON c.id = i.category_id
251
+ WHERE i.purchase_price IS NOT NULL AND i.purchase_price > 0 AND ${ACTIVE_ITEM}
252
+ ORDER BY i.purchase_price DESC, i.id LIMIT ?`, limit);
253
+ return rows.map((r) => ({ id: Number(r.id), name: String(r.name), price: Number(r.price), category: String(r.category) }));
254
+ }
255
+ /** 分类分布(#865):顶级分类逐项件数+该类合计价值;无 category_id 归「(未分类)」。 */
256
+ export function categoryDistribution(handle) {
257
+ const rows = q(handle, CAT_PATH + `, item_top AS (
258
+ SELECT i.id AS id, ifnull(cp.top_name,'(未分类)') AS name, ifnull(i.purchase_price,0) AS price
259
+ FROM items i LEFT JOIN cat_path cp ON cp.id = i.category_id
260
+ WHERE ${ACTIVE_ITEM}
261
+ )
262
+ SELECT name, count(*) AS count, round(sum(price),2) AS total_value FROM item_top GROUP BY name ORDER BY count DESC, name`);
263
+ return rows.map((r) => ({ name: String(r.name), count: Number(r.count), totalValue: Number(r.total_value) }));
264
+ }
265
+ /** 位置分布(#865):位置路径第一段归并(老 `_location_distribution` 口径)。 */
266
+ export function locationDistribution(handle) {
267
+ const rows = q(handle, `SELECT CASE WHEN instr(location,'/')>0 THEN substr(location,1,instr(location,'/')-1) ELSE location END AS name,
268
+ count(DISTINCT item_id) AS count FROM item_locations WHERE ifnull(location,'')<>'' GROUP BY name ORDER BY count DESC, name`);
269
+ return rows.map((r) => ({ name: String(r.name), count: Number(r.count) }));
270
+ }
271
+ /** 状态分布(#865):位置状态逐项件数+占比(老 `_status_distribution` 口径)。 */
272
+ export function statusDistribution(handle) {
273
+ const rows = q(handle, `SELECT ifnull(location_status,'(未设置)') AS name, count(DISTINCT item_id) AS count
274
+ FROM item_locations GROUP BY name ORDER BY count DESC, name`);
275
+ const total = rows.reduce((a, r) => a + Number(r.count), 0) || 1;
276
+ return rows.map((r) => ({ name: String(r.name), count: Number(r.count), pct: Math.round((Number(r.count) * 1000) / total) / 10 }));
277
+ }
278
+ /** 归属分布(#865):items.owner 分组(老 `_owner_distribution` 口径)。 */
279
+ export function ownerDistribution(handle) {
280
+ const rows = q(handle, `SELECT owner AS name, count(*) AS count FROM items
281
+ WHERE ifnull(owner,'')<>'' GROUP BY owner ORDER BY count DESC, name`);
282
+ return rows.map((r) => ({ name: String(r.name), count: Number(r.count) }));
283
+ }
284
+ /** 近 N 天变动趋势(#865):四桶(近7天/8-14天/15-21天/22-30天,老 `_trend_buckets` 分档)。 */
285
+ export function recordTrend(handle, days = 30) {
286
+ const spans = [
287
+ ['近7天', -7, 0], ['8-14天', -14, -7], ['15-21天', -21, -14], ['22-' + Math.max(days, 22) + '天', -Math.max(days, 22), -21],
288
+ ];
289
+ const buckets = spans.map(([label, from, to]) => {
290
+ const a = one(handle, 'SELECT count(*) AS c FROM items WHERE date(created_at) BETWEEN ? AND ?', localDayAt(from), localDayAt(to)).c;
291
+ const d = one(handle, `SELECT count(DISTINCT i.id) AS c FROM items i JOIN item_locations il ON il.item_id = i.id
292
+ WHERE il.location_status='已废弃' AND date(il.updated_at) BETWEEN ? AND ?`, localDayAt(from), localDayAt(to)).c;
293
+ return { label, added: a, discarded: d };
294
+ });
295
+ return { days, note: '录入按物品创建时间;废弃按位置状态改为已废弃的时间', buckets };
296
+ }
297
+ /** 闲置物品(#865):逐件闲置天数与来源(访问记录/估算)+位置、件数、状态。
298
+ * 筛选与排序保持搬迁前口径不变(`last_accessed_at` 空或早于阈值;按 `last_accessed_at` 排序)——
299
+ * 衣物域的「久未穿」把「从未使用」也算在内,消费方各自过滤;`days_idle` 按
300
+ * `coalesce(last_accessed_at, created_at)` 算(老 `stats/idle.py` 口径,无使用记录按录入日估算)。 */
301
+ export function idleItems(handle, days) {
302
+ const cutoff = new Date();
303
+ cutoff.setDate(cutoff.getDate() - days);
304
+ const cut = cutoff.toISOString();
305
+ const rows = q(handle, `SELECT i.id, i.name, ifnull(c.name,'') AS category,
306
+ CAST(julianday(date('now','localtime')) - julianday(date(coalesce(i.last_accessed_at, i.created_at))) AS INTEGER) AS days_idle,
307
+ CASE WHEN i.last_accessed_at IS NULL THEN '估算' ELSE '访问记录' END AS source,
308
+ ifnull((SELECT l.location FROM item_locations l WHERE l.item_id=i.id ORDER BY l.id LIMIT 1),'') AS location,
309
+ ifnull((SELECT sum(l.quantity) FROM item_locations l WHERE l.item_id=i.id),0) AS quantity,
310
+ ifnull((SELECT l.location_status FROM item_locations l WHERE l.item_id=i.id ORDER BY l.id LIMIT 1),'在家') AS status
311
+ FROM items i LEFT JOIN categories c ON c.id = i.category_id WHERE (i.last_accessed_at IS NULL OR i.last_accessed_at < ?)
312
+ ORDER BY i.last_accessed_at LIMIT 50`, cut);
313
+ return rows.map((r) => ({
314
+ id: Number(r.id), name: String(r.name), category: String(r.category), days_idle: Number(r.days_idle) || 0,
315
+ source: String(r.source), location: String(r.location), quantity: Number(r.quantity) || 0, status: String(r.status),
316
+ }));
317
+ }
318
+ /** 过期与预告(#865):逐条剩余天数(到期日缺为空)+所在位置与状态。 */
319
+ export function expiringItems(handle, days, expiredOnly) {
320
+ const endS = localDayAt(days);
321
+ try {
322
+ const where = expiredOnly
323
+ ? 'l.expiration_date IS NOT NULL AND l.expiration_date < ?'
324
+ : 'l.expiration_date IS NOT NULL AND l.expiration_date <= ?';
325
+ return q(handle, `SELECT l.item_id, l.location, l.expiration_date, ifnull(i.name,'') AS item_name, ifnull(c.name,'') AS category,
326
+ l.quantity AS quantity, ifnull(l.location_status,'在家') AS location_status,
327
+ CAST(julianday(date(l.expiration_date)) - julianday(date('now','localtime')) AS INTEGER) AS days_left
328
+ FROM item_locations l LEFT JOIN items i ON i.id=l.item_id LEFT JOIN categories c ON c.id = i.category_id
329
+ WHERE ${where} ORDER BY l.expiration_date, l.id LIMIT 50`, expiredOnly ? localToday() : endS);
330
+ }
331
+ catch (e) {
332
+ throw new HomeFetchError('HOME_DB_UNREADABLE', '过期查询失败', { cause: e });
333
+ }
334
+ }
335
+ /** 盘点明细(#865):表形状自适应——新库读 `missing/extra`,老库(权威 DDL)读 `missing_cnt/extra_cnt/diff_cnt` 等。 */
336
+ export function inventoryDetail(handle, limit = 20) {
337
+ const cols = new Set(q(handle, 'PRAGMA table_info(inventory_records)').map((r) => String(r.name)));
338
+ const pick = (...names) => names.find((n) => cols.has(n)) ?? '';
339
+ const sel = (n, alias) => (n ? ', ' + n + ' AS ' + alias : ', null AS ' + alias);
340
+ const rows = q(handle, 'SELECT id' + sel(pick('occurred_at', 'created_at'), 'rec_date')
341
+ + sel(pick('scope'), 'rec_scope') + sel(pick('location'), 'rec_loc')
342
+ + sel(pick('missing', 'missing_cnt'), 'rec_missing') + sel(pick('extra', 'extra_cnt'), 'rec_extra')
343
+ + sel(pick('diff_cnt'), 'rec_diff') + sel(pick('status'), 'rec_status')
344
+ + ' FROM inventory_records ORDER BY id DESC');
345
+ const mapped = rows.map((r) => ({
346
+ id: Number(r.id), date: String(r.rec_date ?? ''), scope: String(r.rec_scope ?? ''), location: String(r.rec_loc ?? ''),
347
+ missing: Number(r.rec_missing ?? 0) || 0, extra: Number(r.rec_extra ?? 0) || 0,
348
+ diff: r.rec_diff === null || r.rec_diff === undefined ? null : Number(r.rec_diff),
349
+ status: r.rec_status === null || r.rec_status === undefined ? null : String(r.rec_status),
350
+ }));
351
+ const diffTotal = mapped.reduce((a, r) => a + r.missing + r.extra + (r.diff ?? 0), 0);
352
+ return { rows: mapped.slice(0, limit), total: mapped.length, diffTotal };
353
+ }
354
+ //# sourceMappingURL=domains.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domains.js","sourceRoot":"","sources":["../../src/fetch/domains.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export declare class HomeFetchError extends Error {
2
+ readonly code: 'HOME_DB_MISSING' | 'HOME_DB_UNREADABLE' | 'HOME_ITEM_NOT_FOUND' | 'HOME_BAD_QUERY' | 'HOME_EMPTY_RANGE' | 'HOME_ACCOUNT_MISSING' | 'HOME_ACCOUNT_BAD_KEY' | 'HOME_MASTER_KEY_MISSING' | 'HOME_MASTER_KEY_UNREADABLE';
3
+ constructor(code: HomeFetchError['code'], message: string, options?: {
4
+ cause?: unknown;
5
+ });
6
+ }
7
+ export declare class HomePolicyError extends Error {
8
+ readonly code: 'POLICY_NO_MATCH' | 'POLICY_MISSING_SLOT' | 'POLICY_BAD_CATEGORY' | 'POLICY_BAD_LOCATION' | 'POLICY_BAD_STATUS' | 'POLICY_BAD_DATE' | 'POLICY_BAD_INPUT';
9
+ constructor(code: HomePolicyError['code'], message: string);
10
+ }
11
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/fetch/errors.ts"],"names":[],"mappings":"AACA,qBAAa,cAAe,SAAQ,KAAK;IACvC,QAAQ,CAAC,IAAI,EACT,iBAAiB,GAAG,oBAAoB,GAAG,qBAAqB,GAAG,gBAAgB,GACnF,kBAAkB,GAAG,sBAAsB,GAAG,sBAAsB,GACpE,yBAAyB,GAAG,4BAA4B,CAAC;gBACjD,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAKzF;AAED,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,IAAI,EACT,iBAAiB,GAAG,qBAAqB,GAAG,qBAAqB,GACjE,qBAAqB,GAAG,mBAAmB,GAAG,iBAAiB,GAAG,kBAAkB,CAAC;gBAC7E,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM;CAK3D"}
@@ -0,0 +1,18 @@
1
+ // 取数/口径错误:坏输入与缺失一律 throw,永不返空数组冒充正常。
2
+ export class HomeFetchError extends Error {
3
+ code;
4
+ constructor(code, message, options) {
5
+ super(message, options);
6
+ this.name = 'HomeFetchError';
7
+ this.code = code;
8
+ }
9
+ }
10
+ export class HomePolicyError extends Error {
11
+ code;
12
+ constructor(code, message) {
13
+ super(message);
14
+ this.name = 'HomePolicyError';
15
+ this.code = code;
16
+ }
17
+ }
18
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/fetch/errors.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,MAAM,OAAO,cAAe,SAAQ,KAAK;IAC9B,IAAI,CAGgD;IAC7D,YAAY,IAA4B,EAAE,OAAe,EAAE,OAA6B;QACtF,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAC/B,IAAI,CAE4E;IACzF,YAAY,IAA6B,EAAE,OAAe;QACxD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF"}
@@ -0,0 +1,11 @@
1
+ export { HomeFetchError, HomePolicyError } from './errors.js';
2
+ export { SCHEMA_VERSION, openHomeDb, closeHomeDb, addItem, getItemById, listLocationsByItem, listTagsByItem, searchItems, updateItem, adjustQuantity, setLocationStatus, moveLocation, setItemTags, listAllTags, mergeTags, listCategories, getCategoryById, encryptPassword, decryptPassword, assertMasterKey, } from './db.js';
3
+ export type { HomeItem, HomeLocation, HomeDb, SearchFilter } from './db.js';
4
+ export { resolveDbDir, resolveDbPath, dbFilename, DEFAULT_DB_FILENAME } from './paths.js';
5
+ export { resolveHtmlDir } from './paths.js';
6
+ export { resolveKeyFile, keyFileOf, resolvedHomePaths } from './paths.js';
7
+ export type { HomeResolvedPaths } from './paths.js';
8
+ export { loadMasterKey, retiredParamMessage, hasParamMasterKey } from './masterKey.js';
9
+ export { resolveBackupDir, createBackup, listBackups, restoreBackup, exportData } from './backup.js';
10
+ export { addInventoryRecord, listInventoryRecords, listLocationNodes, ensureLocationNode, listShopping, addShopping, checkShopping, missingItems, stockList, setThreshold, listPurchases, addPurchase, purchaseYearStats, listWarranties, addWarranty, addServiceEvent, listCerts, addCert, listAccounts, listMembers, addMember, listBorrows, addBorrow, statsOverview, highFreq, idleItems, expiringItems, localToday, frequentTopItems, valueTopItems, categoryDistribution, locationDistribution, statusDistribution, ownerDistribution, recordTrend, inventoryDetail, maskCertNumber, } from './domains.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fetch/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EACL,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAC7D,mBAAmB,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAC5E,iBAAiB,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EACpE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,GACnF,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC1F,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC1E,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEvF,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrG,OAAO,EACL,kBAAkB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,kBAAkB,EAC/E,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAC/E,aAAa,EAAE,WAAW,EAAE,iBAAiB,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,EAC3F,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAChF,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAEjD,UAAU,EAAE,gBAAgB,EAAE,aAAa,EAAE,oBAAoB,EAAE,oBAAoB,EACvF,kBAAkB,EAAE,iBAAiB,EAAE,WAAW,EAAE,eAAe,EAEnE,cAAc,GACf,MAAM,cAAc,CAAC"}
@@ -0,0 +1,14 @@
1
+ export { HomeFetchError, HomePolicyError } from './errors.js';
2
+ export { SCHEMA_VERSION, openHomeDb, closeHomeDb, addItem, getItemById, listLocationsByItem, listTagsByItem, searchItems, updateItem, adjustQuantity, setLocationStatus, moveLocation, setItemTags, listAllTags, mergeTags, listCategories, getCategoryById, encryptPassword, decryptPassword, assertMasterKey, } from './db.js';
3
+ export { resolveDbDir, resolveDbPath, dbFilename, DEFAULT_DB_FILENAME } from './paths.js';
4
+ export { resolveHtmlDir } from './paths.js';
5
+ export { resolveKeyFile, keyFileOf, resolvedHomePaths } from './paths.js';
6
+ export { loadMasterKey, retiredParamMessage, hasParamMasterKey } from './masterKey.js';
7
+ // #707:备份导出/导入恢复(HELP SM8-3/SM8-4)的落点。
8
+ export { resolveBackupDir, createBackup, listBackups, restoreBackup, exportData } from './backup.js';
9
+ export { addInventoryRecord, listInventoryRecords, listLocationNodes, ensureLocationNode, listShopping, addShopping, checkShopping, missingItems, stockList, setThreshold, listPurchases, addPurchase, purchaseYearStats, listWarranties, addWarranty, addServiceEvent, listCerts, addCert, listAccounts, listMembers, addMember, listBorrows, addBorrow, statsOverview, highFreq, idleItems, expiringItems,
10
+ // #865:统计取数补齐(分布明细/价值与高频排行/趋势/盘点明细)。
11
+ localToday, frequentTopItems, valueTopItems, categoryDistribution, locationDistribution, statusDistribution, ownerDistribution, recordTrend, inventoryDetail,
12
+ // #890:证件号码脱敏的唯一一处(命令层据此出 `number_masked`,页面侧旧信封回退也读它)。
13
+ maskCertNumber, } from './domains.js';
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fetch/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EACL,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAC7D,mBAAmB,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAC5E,iBAAiB,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EACpE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,GACnF,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC1F,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE1E,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACvF,uCAAuC;AACvC,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrG,OAAO,EACL,kBAAkB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,kBAAkB,EAC/E,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAC/E,aAAa,EAAE,WAAW,EAAE,iBAAiB,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,EAC3F,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAChF,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa;AACjD,qCAAqC;AACrC,UAAU,EAAE,gBAAgB,EAAE,aAAa,EAAE,oBAAoB,EAAE,oBAAoB,EACvF,kBAAkB,EAAE,iBAAiB,EAAE,WAAW,EAAE,eAAe;AACnE,wDAAwD;AACxD,cAAc,GACf,MAAM,cAAc,CAAC"}
@@ -0,0 +1,11 @@
1
+ /** 读主密钥文件,返回 trim 后的口令(BOM 一并去掉)。
2
+ *
3
+ * 文件不在 ⇒ 响亮失败,报文里给出该文件绝对路径 + 建法指引;
4
+ * 内容过短(<8 位,与 `assertMasterKey` 同门)⇒ 同样响亮失败。 */
5
+ export declare function loadMasterKey(keyFile?: string): string;
6
+ /** 退场报文:调用参数里给了 `master_key`/`masterKey` 时用它响亮失败(exit 2:用法错),
7
+ * 报文直接说"把它写进 <路径>"。口令不许再经调用参数传(会进对话记录与日志)。 */
8
+ export declare function retiredParamMessage(keyFile?: string): string;
9
+ /** 调用参数里有没有已退场的口令键(分派层判用法错用)。 */
10
+ export declare function hasParamMasterKey(params: Record<string, unknown>): boolean;
11
+ //# sourceMappingURL=masterKey.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"masterKey.d.ts","sourceRoot":"","sources":["../../src/fetch/masterKey.ts"],"names":[],"mappings":"AAgBA;;;gDAGgD;AAChD,wBAAgB,aAAa,CAAC,OAAO,SAAmB,GAAG,MAAM,CAkBhE;AAED;+CAC+C;AAC/C,wBAAgB,mBAAmB,CAAC,OAAO,SAAmB,GAAG,MAAM,CAEtE;AAED,iCAAiC;AACjC,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAE1E"}
@@ -0,0 +1,46 @@
1
+ /** 主密钥改从文件读(#793 定稿,#794 落地)。
2
+ *
3
+ * 第一性原理(定稿出处 #793):口令经调用参数传会**进对话记录与日志**(仓内已有"密码脱敏"补丁,
4
+ * 说明这是已知风险);文件是唯一来源,口令只落磁盘一处。故调用参数 `master_key`/`masterKey` 退场,
5
+ * 账号类命令一律读 `key.file` 指的那个文件(内容 trim 后当主密钥)。
6
+ *
7
+ * 同一个口令 ⇒ 同一个 `scryptSync(口令,'home-salt',32)`(`fetch/db.ts` 的 `deriveKey`)⇒
8
+ * 老库那几条 accounts 照样解得开,无迁移。
9
+ *
10
+ * **不自动生成密钥文件**:密钥是人的口令,技能随机生成了用户就不知道,换机即不可恢复 ⇒
11
+ * 文件不在时报错 + 人话指引(与"库不存在自动建"不同:库是数据,密钥是凭据)。
12
+ */
13
+ import { existsSync, readFileSync } from 'node:fs';
14
+ import { HomeFetchError } from './errors.js';
15
+ import { resolveKeyFile } from './paths.js';
16
+ /** 读主密钥文件,返回 trim 后的口令(BOM 一并去掉)。
17
+ *
18
+ * 文件不在 ⇒ 响亮失败,报文里给出该文件绝对路径 + 建法指引;
19
+ * 内容过短(<8 位,与 `assertMasterKey` 同门)⇒ 同样响亮失败。 */
20
+ export function loadMasterKey(keyFile = resolveKeyFile()) {
21
+ if (!existsSync(keyFile)) {
22
+ throw new HomeFetchError('HOME_MASTER_KEY_MISSING', '主密钥文件不在:' + keyFile + '。把口令写进这个文件(纯文本一行即可),再跑这条命令;换机恢复后要用账号密码,把它一起带过去。');
23
+ }
24
+ let text;
25
+ try {
26
+ text = readFileSync(keyFile, 'utf8');
27
+ }
28
+ catch (e) {
29
+ throw new HomeFetchError('HOME_MASTER_KEY_UNREADABLE', '主密钥文件读不出来:' + keyFile + '(' + (e instanceof Error ? e.message : String(e)) + ')', { cause: e });
30
+ }
31
+ const key = (text.charCodeAt(0) === 0xfeff ? text.slice(1) : text).trim();
32
+ if (key.length < 8) {
33
+ throw new HomeFetchError('HOME_ACCOUNT_BAD_KEY', '主密钥文件里的口令须 ≥8 位:' + keyFile + '(缺失阻断,不返空)');
34
+ }
35
+ return key;
36
+ }
37
+ /** 退场报文:调用参数里给了 `master_key`/`masterKey` 时用它响亮失败(exit 2:用法错),
38
+ * 报文直接说"把它写进 <路径>"。口令不许再经调用参数传(会进对话记录与日志)。 */
39
+ export function retiredParamMessage(keyFile = resolveKeyFile()) {
40
+ return '主密钥改从文件读:调用参数不再收口令。把它写进 ' + keyFile + '(纯文本一行即可),再跑这条命令。';
41
+ }
42
+ /** 调用参数里有没有已退场的口令键(分派层判用法错用)。 */
43
+ export function hasParamMasterKey(params) {
44
+ return params['master_key'] !== undefined || params['masterKey'] !== undefined;
45
+ }
46
+ //# sourceMappingURL=masterKey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"masterKey.js","sourceRoot":"","sources":["../../src/fetch/masterKey.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C;;;gDAGgD;AAChD,MAAM,UAAU,aAAa,CAAC,OAAO,GAAG,cAAc,EAAE;IACtD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,cAAc,CAAC,yBAAyB,EAChD,UAAU,GAAG,OAAO,GAAG,iDAAiD,CAAC,CAAC;IAC9E,CAAC;IACD,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,cAAc,CAAC,4BAA4B,EACnD,YAAY,GAAG,OAAO,GAAG,GAAG,GAAG,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACrG,CAAC;IACD,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1E,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,cAAc,CAAC,sBAAsB,EAC7C,kBAAkB,GAAG,OAAO,GAAG,YAAY,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;+CAC+C;AAC/C,MAAM,UAAU,mBAAmB,CAAC,OAAO,GAAG,cAAc,EAAE;IAC5D,OAAO,0BAA0B,GAAG,OAAO,GAAG,mBAAmB,CAAC;AACpE,CAAC;AAED,iCAAiC;AACjC,MAAM,UAAU,iBAAiB,CAAC,MAA+B;IAC/D,OAAO,MAAM,CAAC,YAAY,CAAC,KAAK,SAAS,IAAI,MAAM,CAAC,WAAW,CAAC,KAAK,SAAS,CAAC;AACjF,CAAC"}
@@ -0,0 +1,55 @@
1
+ /** 库文件名的默认值:=改造前的代码常量 `DB_FILENAME`(配置项 `db.name` 空串即用它)。 */
2
+ export declare const DEFAULT_DB_FILENAME = "home.db";
3
+ /** 备份目录名的默认值:=改造前的代码常量 `BACKUP_DIR_NAME`(配置项 `backup.dir` 空串即用它)。 */
4
+ export declare const DEFAULT_BACKUP_DIR_NAME = "backups";
5
+ /** 主密钥文件名的默认值:新键 `key.file` 空串即用它(#793 定稿)。 */
6
+ export declare const DEFAULT_MASTER_KEY_FILENAME = ".master.key";
7
+ /** 库文件名:配置 `db.name`,空串=默认(`home.db`)。 */
8
+ export declare function dbFilename(): string;
9
+ /** 库目录算式:`db.dir` 非空即用它,空串=默认数据目录(默认 `~/.ilife/data/`)。
10
+ * 这是「面板上唯一可改的落点」,写盘时那一格写成算出来的绝对路径(见 `src/config.ts`)。 */
11
+ export declare function dbDirOf(dataDir: string, configured: string): string;
12
+ /** 库目录:配置 `db.dir` 的解析结果。 */
13
+ export declare function resolveDbDir(): string;
14
+ /** 库文件算式(目录 + 文件名)。 */
15
+ export declare function dbFileOf(dbDir: string, name: string): string;
16
+ /** 库文件完整路径(目录不存在即建,`mkdir -p` 语义)。 */
17
+ export declare function resolveDbPath(filename?: string, dir?: string): string;
18
+ /** 产物目录算式:`<库目录>/<html.dir 值>`(空串=默认子目录名)——设置页那一行与体检都调它。 */
19
+ export declare function htmlDirOf(dbDir: string, configured: string): string;
20
+ /** 产物目录:配置 `html.dir` 的解析结果(算式见 `htmlDirOf`)。只算路径,落盘归交付那条链。 */
21
+ export declare function resolveHtmlDir(dbDir?: string): string;
22
+ /** 主密钥文件算式:值绝对 ⇒ 用它;相对 ⇒ `<数据目录>/<值>`;空串 ⇒ `<数据目录>/.master.key`
23
+ * (#793 定稿:与 `backup.dir` 同一条「绝对优先」规则)。文件名与绝对路径两种取值都要能解。 */
24
+ export declare function keyFileOf(dataDir: string, configured: string): string;
25
+ /** 主密钥文件:配置 `key.file` 的解析结果(算式见 `keyFileOf`)。只算路径,不建文件、
26
+ * 不生成口令——密钥是人的口令,文件不在时报错+人话指引(见 `src/fetch/masterKey.ts`)。 */
27
+ export declare function resolveKeyFile(dataDir?: string): string;
28
+ /** 备份目录算式:值绝对 ⇒ 用它;相对 ⇒ `<库目录>/<值>`;空串 ⇒ `<库目录>/backups`
29
+ * (#793 定稿口径,与记账同名键统一——相对值不再按当刻工作目录解:技能是被宿主 spawn 的,
30
+ * 宿主不传 `cwd`,相对值于是跟着「宿主从哪儿启动」变)。
31
+ *
32
+ * 为什么相对值不再按**当刻工作目录**解:同一个相对值换个启动位置就是另一个目录,
33
+ * 而面板只读显示的是技能回执算出来的绝对路径,两边会走散。 */
34
+ export declare function backupDirOf(dbDir: string, configured: string): string;
35
+ /** 备份目录:配置 `backup.dir` 的解析结果(算式见 `backupDirOf`)。
36
+ * 「不自动建」是体检那条判据的口径——本函数只算路径,建目录归调用方。 */
37
+ export declare function resolveBackupDir(dbDir?: string): string;
38
+ /** 一组**解析后的绝对路径**(#794,照记账 #749 样板):设置页的只读行显示的就是这一组,
39
+ * 面板不自己拼路径(#677 冻结的边界)。六家的 `*.config.read` 回执都扩这样一组,
40
+ * 每家的格子按自家落点项来;居家这一组=面板那 4 行只读 + 生效数据目录。 */
41
+ export interface HomeResolvedPaths {
42
+ /** 生效数据目录(`db.dir` 非空用它,空=默认落点)——面板上唯一可改的那一项的生效值。 */
43
+ readonly dbDir: string;
44
+ /** 库文件绝对路径。 */
45
+ readonly dbFile: string;
46
+ /** HTML 产物目录绝对路径。 */
47
+ readonly htmlDir: string;
48
+ /** 备份目录绝对路径。 */
49
+ readonly backupDir: string;
50
+ /** 主密钥文件绝对路径。 */
51
+ readonly keyFile: string;
52
+ }
53
+ /** 算那一组解析后的绝对路径。**只算路径、不建目录、不写盘**(设置页与体检都能随时调)。 */
54
+ export declare function resolvedHomePaths(): HomeResolvedPaths;
55
+ //# sourceMappingURL=paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/fetch/paths.ts"],"names":[],"mappings":"AAeA,6DAA6D;AAC7D,eAAO,MAAM,mBAAmB,YAAY,CAAC;AAE7C,qEAAqE;AACrE,eAAO,MAAM,uBAAuB,YAAY,CAAC;AAEjD,+CAA+C;AAC/C,eAAO,MAAM,2BAA2B,gBAAgB,CAAC;AAEzD,0CAA0C;AAC1C,wBAAgB,UAAU,IAAI,MAAM,CAGnC;AAED;0DAC0D;AAC1D,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,6BAA6B;AAC7B,wBAAgB,YAAY,IAAI,MAAM,CAGrC;AAED,uBAAuB;AACvB,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,sCAAsC;AACtC,wBAAgB,aAAa,CAAC,QAAQ,SAAe,EAAE,GAAG,SAAiB,GAAG,MAAM,CAGnF;AAQD,4DAA4D;AAC5D,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAGnE;AAED,+DAA+D;AAC/D,wBAAgB,cAAc,CAAC,KAAK,SAAiB,GAAG,MAAM,CAE7D;AAED;6DAC6D;AAC7D,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAGrE;AAED;+DAC+D;AAC/D,wBAAgB,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAGvD;AAED;;;;;kCAKkC;AAClC,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAGrE;AAED;yCACyC;AACzC,wBAAgB,gBAAgB,CAAC,KAAK,SAAiB,GAAG,MAAM,CAE/D;AAED;;6CAE6C;AAC7C,MAAM,WAAW,iBAAiB;IAChC,qDAAqD;IACrD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,eAAe;IACf,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,qBAAqB;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,gBAAgB;IAChB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,iBAAiB;IACjB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,mDAAmD;AACnD,wBAAgB,iBAAiB,IAAI,iBAAiB,CAUrD"}