@covro/covro 0.2.1-dev.5 → 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.
- package/README.md +12 -4
- package/README.zh-CN.md +9 -1
- package/dist/backups/factory.js +22 -0
- package/dist/backups/factory.js.map +7 -0
- package/dist/backups/lock.js +22 -0
- package/dist/backups/lock.js.map +7 -0
- package/dist/backups/manager.js +170 -0
- package/dist/backups/manager.js.map +7 -0
- package/dist/backups/restore.js +188 -0
- package/dist/backups/restore.js.map +7 -0
- package/dist/backups/store.js +274 -0
- package/dist/backups/store.js.map +7 -0
- package/dist/cli/backup.js +84 -0
- package/dist/cli/backup.js.map +7 -0
- package/dist/cli/daemon.js +7 -0
- package/dist/cli/daemon.js.map +2 -2
- package/dist/cli/main.js +35 -5
- package/dist/cli/main.js.map +2 -2
- package/dist/cli/paths.js.map +2 -2
- package/dist/codex/auto-review.js +55 -0
- package/dist/codex/auto-review.js.map +2 -2
- package/dist/server/db/history.js +60 -0
- package/dist/server/db/history.js.map +7 -0
- package/dist/server/db/index.js +11 -1
- package/dist/server/db/index.js.map +2 -2
- package/dist/server/db/migrate.js +8 -18
- package/dist/server/db/migrate.js.map +2 -2
- package/dist/server/http.js +21 -3
- package/dist/server/http.js.map +2 -2
- package/dist/server/main.js +14 -3
- package/dist/server/main.js.map +2 -2
- package/dist/server/project-clones.js +53 -17
- package/dist/server/project-clones.js.map +2 -2
- package/dist/server/service.js +9 -5
- package/dist/server/service.js.map +2 -2
- package/dist/shared/backups.js +55 -0
- package/dist/shared/backups.js.map +7 -0
- package/dist/shared/database.js +15 -0
- package/dist/shared/database.js.map +7 -0
- package/dist/update-worker.cjs +934 -388
- package/dist/updates/files.js +2 -1
- package/dist/updates/files.js.map +2 -2
- package/dist/updates/transaction.js +3 -24
- package/dist/updates/transaction.js.map +2 -2
- package/dist/updates/worker.js +69 -19
- package/dist/updates/worker.js.map +2 -2
- package/dist/web/assets/{abnfDiagram-WEYOIA3C-CwLX554E.js → abnfDiagram-WEYOIA3C-Baw8Q2RL.js} +1 -1
- package/dist/web/assets/{arc-DAaDyyqc.js → arc-BvZHXzPr.js} +1 -1
- package/dist/web/assets/{architecture-WOLXFQ4H-y6MnEqN0.js → architecture-WOLXFQ4H-DrQ2OxuY.js} +1 -1
- package/dist/web/assets/{architectureDiagram-ZHVYKT53-_B_4k-Pp.js → architectureDiagram-ZHVYKT53-D96hX75H.js} +1 -1
- package/dist/web/assets/{blockDiagram-RJAE7QA3-C9jZ7FHy.js → blockDiagram-RJAE7QA3-Csce-aWb.js} +1 -1
- package/dist/web/assets/{c4Diagram-XDPPPE54-DQAtMvqN.js → c4Diagram-XDPPPE54-Dfu8ZQ6Y.js} +1 -1
- package/dist/web/assets/channel-DQhtAfM4.js +1 -0
- package/dist/web/assets/{chunk-2E7WHVMD-Bu427yab.js → chunk-2E7WHVMD-Vb63e-lu.js} +1 -1
- package/dist/web/assets/{chunk-4EMNKR2T-BrGrBG7B.js → chunk-4EMNKR2T-DrY1P7q3.js} +1 -1
- package/dist/web/assets/{chunk-55XCU76K-l4f0OZWA.js → chunk-55XCU76K-D70bjQ9E.js} +1 -1
- package/dist/web/assets/{chunk-7S6XSTFO-D7ixF313.js → chunk-7S6XSTFO-CfW90MUC.js} +1 -1
- package/dist/web/assets/{chunk-AQDTSKZB-Cesd-BF2.js → chunk-AQDTSKZB-u4KDDGBt.js} +1 -1
- package/dist/web/assets/{chunk-DSNLSHJZ-B7dim5uT.js → chunk-DSNLSHJZ-Cax3giJD.js} +1 -1
- package/dist/web/assets/{chunk-HAGFOTED-B-f2I7TA.js → chunk-HAGFOTED-BG9UMwzK.js} +1 -1
- package/dist/web/assets/{chunk-HNE4Q36P-CoIvaeX6.js → chunk-HNE4Q36P-BNxIfOgZ.js} +1 -1
- package/dist/web/assets/{chunk-NQOKRVIF-BybRxR7n.js → chunk-NQOKRVIF-DJ60e0Al.js} +1 -1
- package/dist/web/assets/{chunk-UHW7PFBP-CV5WG4tq.js → chunk-UHW7PFBP-C9gHYcjJ.js} +1 -1
- package/dist/web/assets/{chunk-VQ5W62QI-BO4AjXi1.js → chunk-VQ5W62QI-TyHPGVfQ.js} +1 -1
- package/dist/web/assets/{chunk-WQQL4CDK-CADNDGXO.js → chunk-WQQL4CDK-DeAauheh.js} +1 -1
- package/dist/web/assets/{chunk-XXDRQBXY-C6QZT7KW.js → chunk-XXDRQBXY-V-L20Tbi.js} +1 -1
- package/dist/web/assets/{chunk-YZO67HFG-Cm6eGReX.js → chunk-YZO67HFG-LV5QVBiU.js} +1 -1
- package/dist/web/assets/{chunk-ZAUX2LTX-CUBoGbKg.js → chunk-ZAUX2LTX-CBsBBk7L.js} +1 -1
- package/dist/web/assets/{chunk-ZCHMQSOR-B0ImOOtq.js → chunk-ZCHMQSOR-a2_9JHHn.js} +1 -1
- package/dist/web/assets/{classDiagram-v2-4MYWR3UA-D5NWZ9vm.js → classDiagram-v2-4MYWR3UA-77eiBCO3.js} +1 -1
- package/dist/web/assets/{cose-bilkent-JH36ORCC-BzckEyjA.js → cose-bilkent-JH36ORCC-DDP73pnY.js} +1 -1
- package/dist/web/assets/{cynefin-EF2NZ3EQ-Da_J6-Jb.js → cynefin-EF2NZ3EQ-onpnpyxc.js} +1 -1
- package/dist/web/assets/{cynefinDiagram-WF24UDRP-b4g_B1A-.js → cynefinDiagram-WF24UDRP-BmLplbnH.js} +1 -1
- package/dist/web/assets/{dagre-NK4GIZVX-89H2mfs9.js → dagre-NK4GIZVX-BhaMf_Gx.js} +1 -1
- package/dist/web/assets/{diagram-CBK3MWTC-CW4f_P0l.js → diagram-CBK3MWTC-BaalTqFt.js} +1 -1
- package/dist/web/assets/{diagram-I5XIIV2D-Cv5Qndgc.js → diagram-I5XIIV2D-4Tdshcyt.js} +1 -1
- package/dist/web/assets/{diagram-ODIL2UCW-LrXxeoCt.js → diagram-ODIL2UCW-SlEcZgod.js} +1 -1
- package/dist/web/assets/{diagram-PFBEJUXE-uJV2PooB.js → diagram-PFBEJUXE-CosCAXbh.js} +1 -1
- package/dist/web/assets/{diagram-RJA3I4VV-DlY0PGRs.js → diagram-RJA3I4VV-HQElVL4B.js} +1 -1
- package/dist/web/assets/{diagram-TYUNFSNR-B1KoXBEE.js → diagram-TYUNFSNR-BT2WDc21.js} +1 -1
- package/dist/web/assets/{dist-B4eX4BCP.js → dist-CrpGQKqw.js} +1 -1
- package/dist/web/assets/{ebnfDiagram-V4P3TTPT-xCvQVbdj.js → ebnfDiagram-V4P3TTPT-BhK6AM0_.js} +1 -1
- package/dist/web/assets/{elk-QONTBCTQ-Cl8Hu-Uy.js → elk-QONTBCTQ-CS7DfCnD.js} +1 -1
- package/dist/web/assets/{erDiagram-KYQIGQAA-Xp-AvSwE.js → erDiagram-KYQIGQAA-DxVnuqFK.js} +1 -1
- package/dist/web/assets/{eventmodeling-K75KTNOO-C0truZGU.js → eventmodeling-K75KTNOO-oC_YeomD.js} +1 -1
- package/dist/web/assets/flowDiagram-IUGLLWBU-Bspg0rQz.js +1 -0
- package/dist/web/assets/{ganttDiagram-R7GPNTJY-rPaYp-D7.js → ganttDiagram-R7GPNTJY-CquUpiE1.js} +1 -1
- package/dist/web/assets/{gitGraph-VSP46ZUC-Bgfpho41.js → gitGraph-VSP46ZUC-BTtGQYsh.js} +1 -1
- package/dist/web/assets/{gitGraphDiagram-PDYL7XHY-kDcmuv6k.js → gitGraphDiagram-PDYL7XHY-BsokGXYo.js} +1 -1
- package/dist/web/assets/index-B8tsymVC.js +147 -0
- package/dist/web/assets/{index-B7tnf28H.css → index-COSho7m2.css} +1 -1
- package/dist/web/assets/{info-OHQRW6UA-CAWg5k9R.js → info-OHQRW6UA-CvGN4gWh.js} +1 -1
- package/dist/web/assets/{infoDiagram-MVDRKAX5-Cd08ebhn.js → infoDiagram-MVDRKAX5-BF9Rp3BT.js} +1 -1
- package/dist/web/assets/{ishikawaDiagram-HPEHV2GE-tAXBLt9k.js → ishikawaDiagram-HPEHV2GE-DtD20ngU.js} +1 -1
- package/dist/web/assets/{journeyDiagram-BOSHW7O7-ZgnWqXkg.js → journeyDiagram-BOSHW7O7-gB16trHV.js} +1 -1
- package/dist/web/assets/{kanban-definition-FNSA4HC5-BUjtjd-h.js → kanban-definition-FNSA4HC5-D0aKOsE2.js} +1 -1
- package/dist/web/assets/{line-DG48HRVK.js → line-BR5dqPmF.js} +1 -1
- package/dist/web/assets/{linear-CqnXVCVw.js → linear-OsiQaPpK.js} +1 -1
- package/dist/web/assets/{mermaid-parser.core-gIvgB9WK.js → mermaid-parser.core-MEuwYVot.js} +3 -3
- package/dist/web/assets/{mermaid.core-C_R7Y1XB.js → mermaid.core-CVKnnz65.js} +4 -4
- package/dist/web/assets/{mindmap-definition-6OY57UG3-CwUEEl_y.js → mindmap-definition-6OY57UG3-5aHA-kPJ.js} +1 -1
- package/dist/web/assets/{packet-JDAUHWVQ-BrXmpRQ3.js → packet-JDAUHWVQ-uj48AF5r.js} +1 -1
- package/dist/web/assets/{pegDiagram-ECIUJNBX-lLApO85Q.js → pegDiagram-ECIUJNBX-BkVIHLBX.js} +1 -1
- package/dist/web/assets/{pie-XZMESJXO-C_8kR5WX.js → pie-XZMESJXO-D3hy3nD7.js} +1 -1
- package/dist/web/assets/{pieDiagram-GNMPY74T-CawGmJZn.js → pieDiagram-GNMPY74T-CBAqGMEo.js} +1 -1
- package/dist/web/assets/{quadrantDiagram-D57K4MC3-Dg6Yq3s_.js → quadrantDiagram-D57K4MC3-C35kvNRB.js} +1 -1
- package/dist/web/assets/{radar-ABXABTNO-Bs1xY09D.js → radar-ABXABTNO-3LWE6J2Y.js} +1 -1
- package/dist/web/assets/{railroad-I3PHUGI6-Bw_qS6e3.js → railroad-I3PHUGI6-B6Mc9Djl.js} +1 -1
- package/dist/web/assets/{railroad-abnf-LNEFI6M7-CQr33CuI.js → railroad-abnf-LNEFI6M7-DJnbwbpn.js} +1 -1
- package/dist/web/assets/{railroad-ebnf-DWYD2UWJ-BY9nk5pg.js → railroad-ebnf-DWYD2UWJ-BFXAvY4k.js} +1 -1
- package/dist/web/assets/{railroad-peg-JR7BVNR7-CcFsAEI4.js → railroad-peg-JR7BVNR7-JYGb2Oq5.js} +1 -1
- package/dist/web/assets/{railroadDiagram-Y72NRBL7-rkZbchmc.js → railroadDiagram-Y72NRBL7-uBIggR0w.js} +1 -1
- package/dist/web/assets/{requirementDiagram-EQYSW5RA-CSOcijj5.js → requirementDiagram-EQYSW5RA-CDWglrxJ.js} +1 -1
- package/dist/web/assets/{sankeyDiagram-SY24JHO5-E0uo0rRp.js → sankeyDiagram-SY24JHO5-BT16hnTl.js} +1 -1
- package/dist/web/assets/{sequenceDiagram-BLEHNHQU-BKWAAcRu.js → sequenceDiagram-BLEHNHQU-eFJ27rVk.js} +1 -1
- package/dist/web/assets/{src-F6L8HcEC.js → src-BlOCBHYS.js} +1 -1
- package/dist/web/assets/{stateDiagram-v2-A6IESKWZ-BBk2tpPh.js → stateDiagram-v2-A6IESKWZ-CK_s-2Qv.js} +1 -1
- package/dist/web/assets/{swimlanes-B3ENRKFQ-CAUrhGwF.js → swimlanes-B3ENRKFQ-WLMrk9Lm.js} +1 -1
- package/dist/web/assets/swimlanesDiagram-AYQRV4AK-DmjebfnI.js +8 -0
- package/dist/web/assets/{timeline-definition-JXYKGLGB-D0FWj9fa.js → timeline-definition-JXYKGLGB-D0-xZS_V.js} +1 -1
- package/dist/web/assets/{treeView-D4JQ5SDB-CkJOmf93.js → treeView-D4JQ5SDB-TTivyB8T.js} +1 -1
- package/dist/web/assets/{treemap-SAJKECNS-BSFsardB.js → treemap-SAJKECNS-DtU16wOO.js} +1 -1
- package/dist/web/assets/{usecaseDiagram-WPOLBNNX-B2U-2o4g.js → usecaseDiagram-WPOLBNNX-DLFybW0F.js} +1 -1
- package/dist/web/assets/{vennDiagram-Q3Y3IDCW-BijTH0fT.js → vennDiagram-Q3Y3IDCW-DRDuYw70.js} +1 -1
- package/dist/web/assets/{wardley-7MLQ67FV-DDOa5RzL.js → wardley-7MLQ67FV-tZ-5qrqv.js} +1 -1
- package/dist/web/assets/{wardleyDiagram-IVAIDKWA-mbb5GvW5.js → wardleyDiagram-IVAIDKWA-wRKeGCMl.js} +1 -1
- package/dist/web/assets/{xychartDiagram-4URNHDU4-DHd60D_Y.js → xychartDiagram-4URNHDU4-B5-k-DHF.js} +1 -1
- package/dist/web/index.html +4 -4
- package/package.json +10 -3
- package/dist/web/assets/channel-ByzMCsOB.js +0 -1
- package/dist/web/assets/flowDiagram-IUGLLWBU-T67jQ-T_.js +0 -1
- package/dist/web/assets/index-3DUP8YCe.js +0 -142
- package/dist/web/assets/swimlanesDiagram-AYQRV4AK-BCnJymLL.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
|
+
}
|