@covro/covro 0.2.1-dev.6 → 0.2.1-dev.8

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 (129) hide show
  1. package/README.md +8 -1
  2. package/README.zh-CN.md +8 -1
  3. package/dist/backups/factory.js +22 -0
  4. package/dist/backups/factory.js.map +7 -0
  5. package/dist/backups/lock.js +22 -0
  6. package/dist/backups/lock.js.map +7 -0
  7. package/dist/backups/manager.js +170 -0
  8. package/dist/backups/manager.js.map +7 -0
  9. package/dist/backups/restore.js +188 -0
  10. package/dist/backups/restore.js.map +7 -0
  11. package/dist/backups/store.js +274 -0
  12. package/dist/backups/store.js.map +7 -0
  13. package/dist/cli/backup.js +84 -0
  14. package/dist/cli/backup.js.map +7 -0
  15. package/dist/cli/daemon.js +7 -0
  16. package/dist/cli/daemon.js.map +2 -2
  17. package/dist/cli/main.js +35 -5
  18. package/dist/cli/main.js.map +2 -2
  19. package/dist/cli/paths.js.map +2 -2
  20. package/dist/server/db/history.js +60 -0
  21. package/dist/server/db/history.js.map +7 -0
  22. package/dist/server/db/index.js +11 -1
  23. package/dist/server/db/index.js.map +2 -2
  24. package/dist/server/db/migrate.js +8 -18
  25. package/dist/server/db/migrate.js.map +2 -2
  26. package/dist/server/http.js +21 -3
  27. package/dist/server/http.js.map +2 -2
  28. package/dist/server/main.js +14 -3
  29. package/dist/server/main.js.map +2 -2
  30. package/dist/server/service.js +9 -5
  31. package/dist/server/service.js.map +2 -2
  32. package/dist/shared/backups.js +55 -0
  33. package/dist/shared/backups.js.map +7 -0
  34. package/dist/shared/database.js +15 -0
  35. package/dist/shared/database.js.map +7 -0
  36. package/dist/update-worker.cjs +934 -388
  37. package/dist/updates/files.js +2 -1
  38. package/dist/updates/files.js.map +2 -2
  39. package/dist/updates/transaction.js +3 -24
  40. package/dist/updates/transaction.js.map +2 -2
  41. package/dist/updates/worker.js +69 -19
  42. package/dist/updates/worker.js.map +2 -2
  43. package/dist/web/assets/{abnfDiagram-WEYOIA3C-BkC1EVBk.js → abnfDiagram-WEYOIA3C-B8zG_C_F.js} +1 -1
  44. package/dist/web/assets/{arc-CYGT9huc.js → arc-BXL9OpmU.js} +1 -1
  45. package/dist/web/assets/{architecture-WOLXFQ4H-DCsF3gVg.js → architecture-WOLXFQ4H-BTKK_aYo.js} +1 -1
  46. package/dist/web/assets/{architectureDiagram-ZHVYKT53-Cn6kovuz.js → architectureDiagram-ZHVYKT53-DBCaGxvE.js} +1 -1
  47. package/dist/web/assets/{blockDiagram-RJAE7QA3-CNk2zXm9.js → blockDiagram-RJAE7QA3-5nSpgG2R.js} +1 -1
  48. package/dist/web/assets/{c4Diagram-XDPPPE54-CTuI_1XJ.js → c4Diagram-XDPPPE54-ZFSa_lAc.js} +1 -1
  49. package/dist/web/assets/channel-C_xSZVUz.js +1 -0
  50. package/dist/web/assets/{chunk-2E7WHVMD-TrYs0qV3.js → chunk-2E7WHVMD-m7Z4-p6b.js} +1 -1
  51. package/dist/web/assets/{chunk-4EMNKR2T-QL4-PZ4r.js → chunk-4EMNKR2T-Dd3Du5Wp.js} +1 -1
  52. package/dist/web/assets/{chunk-55XCU76K-yynn-EEr.js → chunk-55XCU76K-B4Cym3GJ.js} +1 -1
  53. package/dist/web/assets/{chunk-7S6XSTFO-dzrEn-_W.js → chunk-7S6XSTFO-CDr8VPut.js} +1 -1
  54. package/dist/web/assets/{chunk-AQDTSKZB-DaNZMEGO.js → chunk-AQDTSKZB-DN_lahgB.js} +1 -1
  55. package/dist/web/assets/{chunk-DSNLSHJZ-BnMtx8Ho.js → chunk-DSNLSHJZ-DtN5l5Ar.js} +1 -1
  56. package/dist/web/assets/{chunk-HAGFOTED-fg-JyiA5.js → chunk-HAGFOTED-aPHy1aHo.js} +1 -1
  57. package/dist/web/assets/{chunk-HNE4Q36P-CCsfPbcn.js → chunk-HNE4Q36P-LHoOBckL.js} +1 -1
  58. package/dist/web/assets/{chunk-NQOKRVIF-DLlOpcWZ.js → chunk-NQOKRVIF-CgVqPObB.js} +1 -1
  59. package/dist/web/assets/{chunk-UHW7PFBP-B-sPKpeS.js → chunk-UHW7PFBP-D7IOS7fZ.js} +1 -1
  60. package/dist/web/assets/{chunk-VQ5W62QI-BVqGMzey.js → chunk-VQ5W62QI-L-rpgVHW.js} +1 -1
  61. package/dist/web/assets/{chunk-WQQL4CDK-DcwJXNuh.js → chunk-WQQL4CDK-BwxlS7IY.js} +1 -1
  62. package/dist/web/assets/{chunk-XXDRQBXY-DRwLkqyU.js → chunk-XXDRQBXY-DeafdT4i.js} +1 -1
  63. package/dist/web/assets/{chunk-YZO67HFG-BrrgBnrQ.js → chunk-YZO67HFG-DXfUlNkI.js} +1 -1
  64. package/dist/web/assets/{chunk-ZAUX2LTX-C7qvwkRr.js → chunk-ZAUX2LTX-Do69fykC.js} +1 -1
  65. package/dist/web/assets/{chunk-ZCHMQSOR-DdBd3Cvs.js → chunk-ZCHMQSOR-CjoJalzt.js} +1 -1
  66. package/dist/web/assets/{classDiagram-v2-4MYWR3UA-Dn2RZb3v.js → classDiagram-v2-4MYWR3UA-CigIdZ7U.js} +1 -1
  67. package/dist/web/assets/{cose-bilkent-JH36ORCC-BlXvtfgE.js → cose-bilkent-JH36ORCC-CS7jqO5R.js} +1 -1
  68. package/dist/web/assets/{cynefin-EF2NZ3EQ-odDgTxc-.js → cynefin-EF2NZ3EQ-DclsepTa.js} +1 -1
  69. package/dist/web/assets/{cynefinDiagram-WF24UDRP-BySEoCW8.js → cynefinDiagram-WF24UDRP-BwggxvVt.js} +1 -1
  70. package/dist/web/assets/{dagre-NK4GIZVX-ihxmhB4X.js → dagre-NK4GIZVX-CDegqij1.js} +1 -1
  71. package/dist/web/assets/{diagram-CBK3MWTC-Ckr5P3IM.js → diagram-CBK3MWTC-CtYiu41o.js} +1 -1
  72. package/dist/web/assets/{diagram-I5XIIV2D-D5BZIval.js → diagram-I5XIIV2D-B_EdvEQ0.js} +1 -1
  73. package/dist/web/assets/{diagram-ODIL2UCW-BC5jjqqY.js → diagram-ODIL2UCW-DIAhaYWV.js} +1 -1
  74. package/dist/web/assets/{diagram-PFBEJUXE-D_IdYKqC.js → diagram-PFBEJUXE-h-2MVJLS.js} +1 -1
  75. package/dist/web/assets/{diagram-RJA3I4VV-DlPNsPqP.js → diagram-RJA3I4VV-L6CtV-wX.js} +1 -1
  76. package/dist/web/assets/{diagram-TYUNFSNR-Ca2ANhGM.js → diagram-TYUNFSNR-CRK7uDlw.js} +1 -1
  77. package/dist/web/assets/{dist-BSWkYZRr.js → dist-BJ7e_WRa.js} +1 -1
  78. package/dist/web/assets/{ebnfDiagram-V4P3TTPT-BrqvmeiB.js → ebnfDiagram-V4P3TTPT-DiMUSVcw.js} +1 -1
  79. package/dist/web/assets/{elk-QONTBCTQ-BfXeOE2E.js → elk-QONTBCTQ-zMe0e0lf.js} +1 -1
  80. package/dist/web/assets/{erDiagram-KYQIGQAA-CMuYoCVJ.js → erDiagram-KYQIGQAA-BurDHKVW.js} +1 -1
  81. package/dist/web/assets/{eventmodeling-K75KTNOO-9s4vQqv1.js → eventmodeling-K75KTNOO-CCdDU1Vn.js} +1 -1
  82. package/dist/web/assets/flowDiagram-IUGLLWBU-kvOthkRX.js +1 -0
  83. package/dist/web/assets/{ganttDiagram-R7GPNTJY-B-Xmfmm2.js → ganttDiagram-R7GPNTJY-B3p12HzE.js} +1 -1
  84. package/dist/web/assets/{gitGraph-VSP46ZUC-ZSbSQ7jf.js → gitGraph-VSP46ZUC-DwfEEe29.js} +1 -1
  85. package/dist/web/assets/{gitGraphDiagram-PDYL7XHY-BhxijLaZ.js → gitGraphDiagram-PDYL7XHY-C-4TICdU.js} +1 -1
  86. package/dist/web/assets/{index-mkDvqMQ3.css → index-COSho7m2.css} +1 -1
  87. package/dist/web/assets/index-_PgEAg27.js +147 -0
  88. package/dist/web/assets/{info-OHQRW6UA-CTSCkjt3.js → info-OHQRW6UA-9VU-Tuww.js} +1 -1
  89. package/dist/web/assets/{infoDiagram-MVDRKAX5-D46MTesD.js → infoDiagram-MVDRKAX5-Dl9CbN5F.js} +1 -1
  90. package/dist/web/assets/{ishikawaDiagram-HPEHV2GE-Bafu9NOk.js → ishikawaDiagram-HPEHV2GE-SDN10Ajd.js} +1 -1
  91. package/dist/web/assets/{journeyDiagram-BOSHW7O7-CRsIi1Ry.js → journeyDiagram-BOSHW7O7-BLB0N0xW.js} +1 -1
  92. package/dist/web/assets/{kanban-definition-FNSA4HC5-DjIT_uLs.js → kanban-definition-FNSA4HC5-DXwfxq7I.js} +1 -1
  93. package/dist/web/assets/{line-B5MDdgVs.js → line-46gZz5LW.js} +1 -1
  94. package/dist/web/assets/{linear-wm7JWxlT.js → linear-BAxP-UN2.js} +1 -1
  95. package/dist/web/assets/{mermaid-parser.core-C7jTW4sZ.js → mermaid-parser.core-do5rGU42.js} +3 -3
  96. package/dist/web/assets/{mermaid.core-DcWRGjP5.js → mermaid.core-DH3b37vl.js} +4 -4
  97. package/dist/web/assets/{mindmap-definition-6OY57UG3-qY6vV0UI.js → mindmap-definition-6OY57UG3-DMxeUKAv.js} +1 -1
  98. package/dist/web/assets/{packet-JDAUHWVQ-9B7vLYK0.js → packet-JDAUHWVQ-D3a0MMF_.js} +1 -1
  99. package/dist/web/assets/{pegDiagram-ECIUJNBX-B7gLZ_Fs.js → pegDiagram-ECIUJNBX-DTwfTBgO.js} +1 -1
  100. package/dist/web/assets/{pie-XZMESJXO-MfazZSiE.js → pie-XZMESJXO-e46xxIb_.js} +1 -1
  101. package/dist/web/assets/{pieDiagram-GNMPY74T-1ahagzzC.js → pieDiagram-GNMPY74T-PVAAsxhT.js} +1 -1
  102. package/dist/web/assets/{quadrantDiagram-D57K4MC3-C-GkwjOp.js → quadrantDiagram-D57K4MC3-B9amPs7h.js} +1 -1
  103. package/dist/web/assets/{radar-ABXABTNO-CgutvWTi.js → radar-ABXABTNO-D6ZOHa6D.js} +1 -1
  104. package/dist/web/assets/{railroad-I3PHUGI6-Bl9LJINm.js → railroad-I3PHUGI6-BKBsMC0B.js} +1 -1
  105. package/dist/web/assets/{railroad-abnf-LNEFI6M7-CGRpAnuU.js → railroad-abnf-LNEFI6M7-BxJ-MDoO.js} +1 -1
  106. package/dist/web/assets/{railroad-ebnf-DWYD2UWJ-D6A47xZS.js → railroad-ebnf-DWYD2UWJ-aG0mC8vs.js} +1 -1
  107. package/dist/web/assets/{railroad-peg-JR7BVNR7-DxGphrFO.js → railroad-peg-JR7BVNR7-DGhAES9a.js} +1 -1
  108. package/dist/web/assets/{railroadDiagram-Y72NRBL7-D8P17OV4.js → railroadDiagram-Y72NRBL7-8Bj0VxcB.js} +1 -1
  109. package/dist/web/assets/{requirementDiagram-EQYSW5RA-c93_xAaQ.js → requirementDiagram-EQYSW5RA-CiTdnYqt.js} +1 -1
  110. package/dist/web/assets/{sankeyDiagram-SY24JHO5-FankqwcZ.js → sankeyDiagram-SY24JHO5-JOgC0a7X.js} +1 -1
  111. package/dist/web/assets/{sequenceDiagram-BLEHNHQU-CWH5SeL1.js → sequenceDiagram-BLEHNHQU-BH4lajeV.js} +1 -1
  112. package/dist/web/assets/{src-BXQOmVZv.js → src-BWVVEoim.js} +1 -1
  113. package/dist/web/assets/{stateDiagram-v2-A6IESKWZ-DLfcw0e7.js → stateDiagram-v2-A6IESKWZ-BbiuK5Zz.js} +1 -1
  114. package/dist/web/assets/{swimlanes-B3ENRKFQ-DZ-yBiap.js → swimlanes-B3ENRKFQ-Dscu-_Yz.js} +1 -1
  115. package/dist/web/assets/swimlanesDiagram-AYQRV4AK-DSGMlqJQ.js +8 -0
  116. package/dist/web/assets/{timeline-definition-JXYKGLGB-B7XvxDHY.js → timeline-definition-JXYKGLGB-Br42w2T8.js} +1 -1
  117. package/dist/web/assets/{treeView-D4JQ5SDB-DrB6wXJ0.js → treeView-D4JQ5SDB-DSb5v9pO.js} +1 -1
  118. package/dist/web/assets/{treemap-SAJKECNS-BynFjsvx.js → treemap-SAJKECNS-C7iN5GFB.js} +1 -1
  119. package/dist/web/assets/{usecaseDiagram-WPOLBNNX-BISzHOHN.js → usecaseDiagram-WPOLBNNX-CTSO8vjh.js} +1 -1
  120. package/dist/web/assets/{vennDiagram-Q3Y3IDCW-BZwjTIST.js → vennDiagram-Q3Y3IDCW-BMAynpAa.js} +1 -1
  121. package/dist/web/assets/{wardley-7MLQ67FV-2bM0pMhO.js → wardley-7MLQ67FV-C0mrVGIB.js} +1 -1
  122. package/dist/web/assets/{wardleyDiagram-IVAIDKWA-CflkU8us.js → wardleyDiagram-IVAIDKWA-Cn5Ctwjf.js} +1 -1
  123. package/dist/web/assets/{xychartDiagram-4URNHDU4-DRspOlD3.js → xychartDiagram-4URNHDU4-7HTAaZFv.js} +1 -1
  124. package/dist/web/index.html +2 -2
  125. package/package.json +8 -3
  126. package/dist/web/assets/channel-BDxsxdm-.js +0 -1
  127. package/dist/web/assets/flowDiagram-IUGLLWBU-BHwP7Ha7.js +0 -1
  128. package/dist/web/assets/index-BrvtlTwN.js +0 -147
  129. package/dist/web/assets/swimlanesDiagram-AYQRV4AK-BlmdUBbW.js +0 -8
@@ -0,0 +1,55 @@
1
+ import { z } from "zod";
2
+ const backupIdSchema = z.string().regex(/^[a-zA-Z0-9][a-zA-Z0-9_-]{0,100}$/);
3
+ const backupTriggers = ["manual", "preUpgrade", "preRestore"];
4
+ const backupPhases = [
5
+ "waiting",
6
+ "copying",
7
+ "verifying",
8
+ "succeeded",
9
+ "failed",
10
+ "cancelled",
11
+ "interrupted",
12
+ "corrupt"
13
+ ];
14
+ const backupManifestSchema = z.object({
15
+ formatVersion: z.literal(1),
16
+ complete: z.literal(true),
17
+ id: backupIdSchema,
18
+ createdAt: z.number().int().positive(),
19
+ appVersion: z.string().min(1),
20
+ commit: z.string().optional(),
21
+ trigger: z.enum(backupTriggers),
22
+ configPath: z.string(),
23
+ dataDir: z.string(),
24
+ schemaVersion: z.number().int().positive(),
25
+ migrationHashes: z.array(z.string().regex(/^[a-f0-9]{64}$/)).min(1),
26
+ files: z.array(
27
+ z.object({
28
+ name: z.enum(["app.sqlite", "config.json"]),
29
+ size: z.number().int().nonnegative(),
30
+ sha256: z.string().regex(/^[a-f0-9]{64}$/)
31
+ }).strict()
32
+ ).length(2),
33
+ protectedBy: z.string().optional()
34
+ }).strict().refine(
35
+ (value) => new Set(value.files.map((file) => file.name)).size === 2 && value.migrationHashes.length === value.schemaVersion
36
+ );
37
+ const backupRecordSchema = z.object({
38
+ id: backupIdSchema,
39
+ phase: z.enum(backupPhases),
40
+ trigger: z.enum(backupTriggers),
41
+ createdAt: z.number().int().nonnegative().max(864e13),
42
+ updatedAt: z.number().int().nonnegative(),
43
+ path: z.string(),
44
+ message: z.string(),
45
+ progress: z.number().min(0).max(100).optional(),
46
+ manifest: backupManifestSchema.optional()
47
+ }).strict();
48
+ export {
49
+ backupIdSchema,
50
+ backupManifestSchema,
51
+ backupPhases,
52
+ backupRecordSchema,
53
+ backupTriggers
54
+ };
55
+ //# sourceMappingURL=backups.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/shared/backups.ts"],
4
+ "sourcesContent": ["import { z } from 'zod';\n\nexport const backupIdSchema = z.string().regex(/^[a-zA-Z0-9][a-zA-Z0-9_-]{0,100}$/);\nexport const backupTriggers = ['manual', 'preUpgrade', 'preRestore'] as const;\nexport const backupPhases = [\n 'waiting',\n 'copying',\n 'verifying',\n 'succeeded',\n 'failed',\n 'cancelled',\n 'interrupted',\n 'corrupt',\n] as const;\nexport const backupManifestSchema = z\n .object({\n formatVersion: z.literal(1),\n complete: z.literal(true),\n id: backupIdSchema,\n createdAt: z.number().int().positive(),\n appVersion: z.string().min(1),\n commit: z.string().optional(),\n trigger: z.enum(backupTriggers),\n configPath: z.string(),\n dataDir: z.string(),\n schemaVersion: z.number().int().positive(),\n migrationHashes: z.array(z.string().regex(/^[a-f0-9]{64}$/)).min(1),\n files: z\n .array(\n z\n .object({\n name: z.enum(['app.sqlite', 'config.json']),\n size: z.number().int().nonnegative(),\n sha256: z.string().regex(/^[a-f0-9]{64}$/),\n })\n .strict(),\n )\n .length(2),\n protectedBy: z.string().optional(),\n })\n .strict()\n .refine(\n (value) =>\n new Set(value.files.map((file) => file.name)).size === 2 &&\n value.migrationHashes.length === value.schemaVersion,\n );\nexport type BackupManifest = z.infer<typeof backupManifestSchema>;\nexport const backupRecordSchema = z\n .object({\n id: backupIdSchema,\n phase: z.enum(backupPhases),\n trigger: z.enum(backupTriggers),\n createdAt: z.number().int().nonnegative().max(8_640_000_000_000_000),\n updatedAt: z.number().int().nonnegative(),\n path: z.string(),\n message: z.string(),\n progress: z.number().min(0).max(100).optional(),\n manifest: backupManifestSchema.optional(),\n })\n .strict();\nexport type BackupRecord = z.infer<typeof backupRecordSchema>;\nexport interface BackupStatus {\n directory: string;\n schemaVersion: number;\n records: BackupRecord[];\n active?: BackupRecord;\n supported: boolean;\n unsupportedReason?: string;\n}\nexport interface BackupController {\n status(): Promise<BackupStatus>;\n start(input: { clientOperationId: string }): Promise<BackupStatus>;\n cancel(id: string): Promise<BackupStatus>;\n verify(id: string): Promise<BackupStatus>;\n close(): Promise<void>;\n}\n"],
5
+ "mappings": "AAAA,SAAS,SAAS;AAEX,MAAM,iBAAiB,EAAE,OAAO,EAAE,MAAM,mCAAmC;AAC3E,MAAM,iBAAiB,CAAC,UAAU,cAAc,YAAY;AAC5D,MAAM,eAAe;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AACO,MAAM,uBAAuB,EACjC,OAAO;AAAA,EACN,eAAe,EAAE,QAAQ,CAAC;AAAA,EAC1B,UAAU,EAAE,QAAQ,IAAI;AAAA,EACxB,IAAI;AAAA,EACJ,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EACrC,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EAC5B,QAAQ,EAAE,OAAO,EAAE,SAAS;AAAA,EAC5B,SAAS,EAAE,KAAK,cAAc;AAAA,EAC9B,YAAY,EAAE,OAAO;AAAA,EACrB,SAAS,EAAE,OAAO;AAAA,EAClB,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EACzC,iBAAiB,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC,EAAE,IAAI,CAAC;AAAA,EAClE,OAAO,EACJ;AAAA,IACC,EACG,OAAO;AAAA,MACN,MAAM,EAAE,KAAK,CAAC,cAAc,aAAa,CAAC;AAAA,MAC1C,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY;AAAA,MACnC,QAAQ,EAAE,OAAO,EAAE,MAAM,gBAAgB;AAAA,IAC3C,CAAC,EACA,OAAO;AAAA,EACZ,EACC,OAAO,CAAC;AAAA,EACX,aAAa,EAAE,OAAO,EAAE,SAAS;AACnC,CAAC,EACA,OAAO,EACP;AAAA,EACC,CAAC,UACC,IAAI,IAAI,MAAM,MAAM,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,EAAE,SAAS,KACvD,MAAM,gBAAgB,WAAW,MAAM;AAC3C;AAEK,MAAM,qBAAqB,EAC/B,OAAO;AAAA,EACN,IAAI;AAAA,EACJ,OAAO,EAAE,KAAK,YAAY;AAAA,EAC1B,SAAS,EAAE,KAAK,cAAc;AAAA,EAC9B,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,MAAqB;AAAA,EACnE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY;AAAA,EACxC,MAAM,EAAE,OAAO;AAAA,EACf,SAAS,EAAE,OAAO;AAAA,EAClB,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EAC9C,UAAU,qBAAqB,SAAS;AAC1C,CAAC,EACA,OAAO;",
6
+ "names": []
7
+ }
@@ -0,0 +1,15 @@
1
+ import { z } from "zod";
2
+ const databaseCompatibilitySchema = z.object({
3
+ schemaVersion: z.number().int().positive(),
4
+ minRestorableSchemaVersion: z.number().int().positive(),
5
+ backupFormatVersion: z.literal(1)
6
+ }).strict().refine((value) => value.minRestorableSchemaVersion <= value.schemaVersion);
7
+ function databaseCompatibilityMarkdown(metadata) {
8
+ const value = databaseCompatibilitySchema.parse(metadata);
9
+ return `DB Schema: **${value.schemaVersion}**. Restorable schemas: **${value.minRestorableSchemaVersion}\u2013${value.schemaVersion}**, subject to matching migration history. Backup format: **${value.backupFormatVersion}**. Older backups are migrated forward; newer schemas cannot be opened by this release. Downgrading the application does not downgrade its database; restore a compatible backup to roll back data.`;
10
+ }
11
+ export {
12
+ databaseCompatibilityMarkdown,
13
+ databaseCompatibilitySchema
14
+ };
15
+ //# sourceMappingURL=database.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/shared/database.ts"],
4
+ "sourcesContent": ["import { z } from 'zod';\n\nexport const databaseCompatibilitySchema = z\n .object({\n schemaVersion: z.number().int().positive(),\n minRestorableSchemaVersion: z.number().int().positive(),\n backupFormatVersion: z.literal(1),\n })\n .strict()\n .refine((value) => value.minRestorableSchemaVersion <= value.schemaVersion);\nexport type DatabaseCompatibility = z.infer<typeof databaseCompatibilitySchema>;\n\nexport function databaseCompatibilityMarkdown(metadata: unknown) {\n const value = databaseCompatibilitySchema.parse(metadata);\n return `DB Schema: **${value.schemaVersion}**. Restorable schemas: **${value.minRestorableSchemaVersion}\u2013${value.schemaVersion}**, subject to matching migration history. Backup format: **${value.backupFormatVersion}**. Older backups are migrated forward; newer schemas cannot be opened by this release. Downgrading the application does not downgrade its database; restore a compatible backup to roll back data.`;\n}\n"],
5
+ "mappings": "AAAA,SAAS,SAAS;AAEX,MAAM,8BAA8B,EACxC,OAAO;AAAA,EACN,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EACzC,4BAA4B,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EACtD,qBAAqB,EAAE,QAAQ,CAAC;AAClC,CAAC,EACA,OAAO,EACP,OAAO,CAAC,UAAU,MAAM,8BAA8B,MAAM,aAAa;AAGrE,SAAS,8BAA8B,UAAmB;AAC/D,QAAM,QAAQ,4BAA4B,MAAM,QAAQ;AACxD,SAAO,gBAAgB,MAAM,aAAa,6BAA6B,MAAM,0BAA0B,SAAI,MAAM,aAAa,+DAA+D,MAAM,mBAAmB;AACxN;",
6
+ "names": []
7
+ }