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

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 +7 -0
  2. package/README.zh-CN.md +7 -0
  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-Baw8Q2RL.js} +1 -1
  44. package/dist/web/assets/{arc-CYGT9huc.js → arc-BvZHXzPr.js} +1 -1
  45. package/dist/web/assets/{architecture-WOLXFQ4H-DCsF3gVg.js → architecture-WOLXFQ4H-DrQ2OxuY.js} +1 -1
  46. package/dist/web/assets/{architectureDiagram-ZHVYKT53-Cn6kovuz.js → architectureDiagram-ZHVYKT53-D96hX75H.js} +1 -1
  47. package/dist/web/assets/{blockDiagram-RJAE7QA3-CNk2zXm9.js → blockDiagram-RJAE7QA3-Csce-aWb.js} +1 -1
  48. package/dist/web/assets/{c4Diagram-XDPPPE54-CTuI_1XJ.js → c4Diagram-XDPPPE54-Dfu8ZQ6Y.js} +1 -1
  49. package/dist/web/assets/channel-DQhtAfM4.js +1 -0
  50. package/dist/web/assets/{chunk-2E7WHVMD-TrYs0qV3.js → chunk-2E7WHVMD-Vb63e-lu.js} +1 -1
  51. package/dist/web/assets/{chunk-4EMNKR2T-QL4-PZ4r.js → chunk-4EMNKR2T-DrY1P7q3.js} +1 -1
  52. package/dist/web/assets/{chunk-55XCU76K-yynn-EEr.js → chunk-55XCU76K-D70bjQ9E.js} +1 -1
  53. package/dist/web/assets/{chunk-7S6XSTFO-dzrEn-_W.js → chunk-7S6XSTFO-CfW90MUC.js} +1 -1
  54. package/dist/web/assets/{chunk-AQDTSKZB-DaNZMEGO.js → chunk-AQDTSKZB-u4KDDGBt.js} +1 -1
  55. package/dist/web/assets/{chunk-DSNLSHJZ-BnMtx8Ho.js → chunk-DSNLSHJZ-Cax3giJD.js} +1 -1
  56. package/dist/web/assets/{chunk-HAGFOTED-fg-JyiA5.js → chunk-HAGFOTED-BG9UMwzK.js} +1 -1
  57. package/dist/web/assets/{chunk-HNE4Q36P-CCsfPbcn.js → chunk-HNE4Q36P-BNxIfOgZ.js} +1 -1
  58. package/dist/web/assets/{chunk-NQOKRVIF-DLlOpcWZ.js → chunk-NQOKRVIF-DJ60e0Al.js} +1 -1
  59. package/dist/web/assets/{chunk-UHW7PFBP-B-sPKpeS.js → chunk-UHW7PFBP-C9gHYcjJ.js} +1 -1
  60. package/dist/web/assets/{chunk-VQ5W62QI-BVqGMzey.js → chunk-VQ5W62QI-TyHPGVfQ.js} +1 -1
  61. package/dist/web/assets/{chunk-WQQL4CDK-DcwJXNuh.js → chunk-WQQL4CDK-DeAauheh.js} +1 -1
  62. package/dist/web/assets/{chunk-XXDRQBXY-DRwLkqyU.js → chunk-XXDRQBXY-V-L20Tbi.js} +1 -1
  63. package/dist/web/assets/{chunk-YZO67HFG-BrrgBnrQ.js → chunk-YZO67HFG-LV5QVBiU.js} +1 -1
  64. package/dist/web/assets/{chunk-ZAUX2LTX-C7qvwkRr.js → chunk-ZAUX2LTX-CBsBBk7L.js} +1 -1
  65. package/dist/web/assets/{chunk-ZCHMQSOR-DdBd3Cvs.js → chunk-ZCHMQSOR-a2_9JHHn.js} +1 -1
  66. package/dist/web/assets/{classDiagram-v2-4MYWR3UA-Dn2RZb3v.js → classDiagram-v2-4MYWR3UA-77eiBCO3.js} +1 -1
  67. package/dist/web/assets/{cose-bilkent-JH36ORCC-BlXvtfgE.js → cose-bilkent-JH36ORCC-DDP73pnY.js} +1 -1
  68. package/dist/web/assets/{cynefin-EF2NZ3EQ-odDgTxc-.js → cynefin-EF2NZ3EQ-onpnpyxc.js} +1 -1
  69. package/dist/web/assets/{cynefinDiagram-WF24UDRP-BySEoCW8.js → cynefinDiagram-WF24UDRP-BmLplbnH.js} +1 -1
  70. package/dist/web/assets/{dagre-NK4GIZVX-ihxmhB4X.js → dagre-NK4GIZVX-BhaMf_Gx.js} +1 -1
  71. package/dist/web/assets/{diagram-CBK3MWTC-Ckr5P3IM.js → diagram-CBK3MWTC-BaalTqFt.js} +1 -1
  72. package/dist/web/assets/{diagram-I5XIIV2D-D5BZIval.js → diagram-I5XIIV2D-4Tdshcyt.js} +1 -1
  73. package/dist/web/assets/{diagram-ODIL2UCW-BC5jjqqY.js → diagram-ODIL2UCW-SlEcZgod.js} +1 -1
  74. package/dist/web/assets/{diagram-PFBEJUXE-D_IdYKqC.js → diagram-PFBEJUXE-CosCAXbh.js} +1 -1
  75. package/dist/web/assets/{diagram-RJA3I4VV-DlPNsPqP.js → diagram-RJA3I4VV-HQElVL4B.js} +1 -1
  76. package/dist/web/assets/{diagram-TYUNFSNR-Ca2ANhGM.js → diagram-TYUNFSNR-BT2WDc21.js} +1 -1
  77. package/dist/web/assets/{dist-BSWkYZRr.js → dist-CrpGQKqw.js} +1 -1
  78. package/dist/web/assets/{ebnfDiagram-V4P3TTPT-BrqvmeiB.js → ebnfDiagram-V4P3TTPT-BhK6AM0_.js} +1 -1
  79. package/dist/web/assets/{elk-QONTBCTQ-BfXeOE2E.js → elk-QONTBCTQ-CS7DfCnD.js} +1 -1
  80. package/dist/web/assets/{erDiagram-KYQIGQAA-CMuYoCVJ.js → erDiagram-KYQIGQAA-DxVnuqFK.js} +1 -1
  81. package/dist/web/assets/{eventmodeling-K75KTNOO-9s4vQqv1.js → eventmodeling-K75KTNOO-oC_YeomD.js} +1 -1
  82. package/dist/web/assets/flowDiagram-IUGLLWBU-Bspg0rQz.js +1 -0
  83. package/dist/web/assets/{ganttDiagram-R7GPNTJY-B-Xmfmm2.js → ganttDiagram-R7GPNTJY-CquUpiE1.js} +1 -1
  84. package/dist/web/assets/{gitGraph-VSP46ZUC-ZSbSQ7jf.js → gitGraph-VSP46ZUC-BTtGQYsh.js} +1 -1
  85. package/dist/web/assets/{gitGraphDiagram-PDYL7XHY-BhxijLaZ.js → gitGraphDiagram-PDYL7XHY-BsokGXYo.js} +1 -1
  86. package/dist/web/assets/index-B8tsymVC.js +147 -0
  87. package/dist/web/assets/{index-mkDvqMQ3.css → index-COSho7m2.css} +1 -1
  88. package/dist/web/assets/{info-OHQRW6UA-CTSCkjt3.js → info-OHQRW6UA-CvGN4gWh.js} +1 -1
  89. package/dist/web/assets/{infoDiagram-MVDRKAX5-D46MTesD.js → infoDiagram-MVDRKAX5-BF9Rp3BT.js} +1 -1
  90. package/dist/web/assets/{ishikawaDiagram-HPEHV2GE-Bafu9NOk.js → ishikawaDiagram-HPEHV2GE-DtD20ngU.js} +1 -1
  91. package/dist/web/assets/{journeyDiagram-BOSHW7O7-CRsIi1Ry.js → journeyDiagram-BOSHW7O7-gB16trHV.js} +1 -1
  92. package/dist/web/assets/{kanban-definition-FNSA4HC5-DjIT_uLs.js → kanban-definition-FNSA4HC5-D0aKOsE2.js} +1 -1
  93. package/dist/web/assets/{line-B5MDdgVs.js → line-BR5dqPmF.js} +1 -1
  94. package/dist/web/assets/{linear-wm7JWxlT.js → linear-OsiQaPpK.js} +1 -1
  95. package/dist/web/assets/{mermaid-parser.core-C7jTW4sZ.js → mermaid-parser.core-MEuwYVot.js} +3 -3
  96. package/dist/web/assets/{mermaid.core-DcWRGjP5.js → mermaid.core-CVKnnz65.js} +4 -4
  97. package/dist/web/assets/{mindmap-definition-6OY57UG3-qY6vV0UI.js → mindmap-definition-6OY57UG3-5aHA-kPJ.js} +1 -1
  98. package/dist/web/assets/{packet-JDAUHWVQ-9B7vLYK0.js → packet-JDAUHWVQ-uj48AF5r.js} +1 -1
  99. package/dist/web/assets/{pegDiagram-ECIUJNBX-B7gLZ_Fs.js → pegDiagram-ECIUJNBX-BkVIHLBX.js} +1 -1
  100. package/dist/web/assets/{pie-XZMESJXO-MfazZSiE.js → pie-XZMESJXO-D3hy3nD7.js} +1 -1
  101. package/dist/web/assets/{pieDiagram-GNMPY74T-1ahagzzC.js → pieDiagram-GNMPY74T-CBAqGMEo.js} +1 -1
  102. package/dist/web/assets/{quadrantDiagram-D57K4MC3-C-GkwjOp.js → quadrantDiagram-D57K4MC3-C35kvNRB.js} +1 -1
  103. package/dist/web/assets/{radar-ABXABTNO-CgutvWTi.js → radar-ABXABTNO-3LWE6J2Y.js} +1 -1
  104. package/dist/web/assets/{railroad-I3PHUGI6-Bl9LJINm.js → railroad-I3PHUGI6-B6Mc9Djl.js} +1 -1
  105. package/dist/web/assets/{railroad-abnf-LNEFI6M7-CGRpAnuU.js → railroad-abnf-LNEFI6M7-DJnbwbpn.js} +1 -1
  106. package/dist/web/assets/{railroad-ebnf-DWYD2UWJ-D6A47xZS.js → railroad-ebnf-DWYD2UWJ-BFXAvY4k.js} +1 -1
  107. package/dist/web/assets/{railroad-peg-JR7BVNR7-DxGphrFO.js → railroad-peg-JR7BVNR7-JYGb2Oq5.js} +1 -1
  108. package/dist/web/assets/{railroadDiagram-Y72NRBL7-D8P17OV4.js → railroadDiagram-Y72NRBL7-uBIggR0w.js} +1 -1
  109. package/dist/web/assets/{requirementDiagram-EQYSW5RA-c93_xAaQ.js → requirementDiagram-EQYSW5RA-CDWglrxJ.js} +1 -1
  110. package/dist/web/assets/{sankeyDiagram-SY24JHO5-FankqwcZ.js → sankeyDiagram-SY24JHO5-BT16hnTl.js} +1 -1
  111. package/dist/web/assets/{sequenceDiagram-BLEHNHQU-CWH5SeL1.js → sequenceDiagram-BLEHNHQU-eFJ27rVk.js} +1 -1
  112. package/dist/web/assets/{src-BXQOmVZv.js → src-BlOCBHYS.js} +1 -1
  113. package/dist/web/assets/{stateDiagram-v2-A6IESKWZ-DLfcw0e7.js → stateDiagram-v2-A6IESKWZ-CK_s-2Qv.js} +1 -1
  114. package/dist/web/assets/{swimlanes-B3ENRKFQ-DZ-yBiap.js → swimlanes-B3ENRKFQ-WLMrk9Lm.js} +1 -1
  115. package/dist/web/assets/swimlanesDiagram-AYQRV4AK-DmjebfnI.js +8 -0
  116. package/dist/web/assets/{timeline-definition-JXYKGLGB-B7XvxDHY.js → timeline-definition-JXYKGLGB-D0-xZS_V.js} +1 -1
  117. package/dist/web/assets/{treeView-D4JQ5SDB-DrB6wXJ0.js → treeView-D4JQ5SDB-TTivyB8T.js} +1 -1
  118. package/dist/web/assets/{treemap-SAJKECNS-BynFjsvx.js → treemap-SAJKECNS-DtU16wOO.js} +1 -1
  119. package/dist/web/assets/{usecaseDiagram-WPOLBNNX-BISzHOHN.js → usecaseDiagram-WPOLBNNX-DLFybW0F.js} +1 -1
  120. package/dist/web/assets/{vennDiagram-Q3Y3IDCW-BZwjTIST.js → vennDiagram-Q3Y3IDCW-DRDuYw70.js} +1 -1
  121. package/dist/web/assets/{wardley-7MLQ67FV-2bM0pMhO.js → wardley-7MLQ67FV-tZ-5qrqv.js} +1 -1
  122. package/dist/web/assets/{wardleyDiagram-IVAIDKWA-CflkU8us.js → wardleyDiagram-IVAIDKWA-wRKeGCMl.js} +1 -1
  123. package/dist/web/assets/{xychartDiagram-4URNHDU4-DRspOlD3.js → xychartDiagram-4URNHDU4-B5-k-DHF.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
+ }