@rockhall/electron-offline-content 0.4.0

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 (196) hide show
  1. package/CHANGELOG.md +384 -0
  2. package/LICENSE +21 -0
  3. package/README.md +794 -0
  4. package/dist/internal/asset-file-name.cjs +13 -0
  5. package/dist/internal/asset-file-name.cjs.map +1 -0
  6. package/dist/internal/asset-file-name.d.cts +6 -0
  7. package/dist/internal/asset-file-name.d.cts.map +1 -0
  8. package/dist/internal/asset-file-name.d.ts +6 -0
  9. package/dist/internal/asset-file-name.d.ts.map +1 -0
  10. package/dist/internal/asset-file-name.js +12 -0
  11. package/dist/internal/asset-file-name.js.map +1 -0
  12. package/dist/internal/asset-key.cjs +30 -0
  13. package/dist/internal/asset-key.cjs.map +1 -0
  14. package/dist/internal/asset-key.d.cts +19 -0
  15. package/dist/internal/asset-key.d.cts.map +1 -0
  16. package/dist/internal/asset-key.d.ts +19 -0
  17. package/dist/internal/asset-key.d.ts.map +1 -0
  18. package/dist/internal/asset-key.js +27 -0
  19. package/dist/internal/asset-key.js.map +1 -0
  20. package/dist/internal/log-format.cjs +98 -0
  21. package/dist/internal/log-format.cjs.map +1 -0
  22. package/dist/internal/log-format.d.cts +10 -0
  23. package/dist/internal/log-format.d.cts.map +1 -0
  24. package/dist/internal/log-format.d.ts +10 -0
  25. package/dist/internal/log-format.d.ts.map +1 -0
  26. package/dist/internal/log-format.js +97 -0
  27. package/dist/internal/log-format.js.map +1 -0
  28. package/dist/internal/media-kind.cjs +46 -0
  29. package/dist/internal/media-kind.cjs.map +1 -0
  30. package/dist/internal/media-kind.d.cts +20 -0
  31. package/dist/internal/media-kind.d.cts.map +1 -0
  32. package/dist/internal/media-kind.d.ts +20 -0
  33. package/dist/internal/media-kind.d.ts.map +1 -0
  34. package/dist/internal/media-kind.js +45 -0
  35. package/dist/internal/media-kind.js.map +1 -0
  36. package/dist/internal/url-warn.cjs +14 -0
  37. package/dist/internal/url-warn.cjs.map +1 -0
  38. package/dist/internal/url-warn.d.cts +10 -0
  39. package/dist/internal/url-warn.d.cts.map +1 -0
  40. package/dist/internal/url-warn.d.ts +10 -0
  41. package/dist/internal/url-warn.d.ts.map +1 -0
  42. package/dist/internal/url-warn.js +13 -0
  43. package/dist/internal/url-warn.js.map +1 -0
  44. package/dist/internal/validation.cjs +222 -0
  45. package/dist/internal/validation.cjs.map +1 -0
  46. package/dist/internal/validation.d.cts +78 -0
  47. package/dist/internal/validation.d.cts.map +1 -0
  48. package/dist/internal/validation.d.ts +78 -0
  49. package/dist/internal/validation.d.ts.map +1 -0
  50. package/dist/internal/validation.js +196 -0
  51. package/dist/internal/validation.js.map +1 -0
  52. package/dist/main/asset-download.cjs +265 -0
  53. package/dist/main/asset-download.cjs.map +1 -0
  54. package/dist/main/asset-download.d.cts +12 -0
  55. package/dist/main/asset-download.d.cts.map +1 -0
  56. package/dist/main/asset-download.d.ts +12 -0
  57. package/dist/main/asset-download.d.ts.map +1 -0
  58. package/dist/main/asset-download.js +263 -0
  59. package/dist/main/asset-download.js.map +1 -0
  60. package/dist/main/database.cjs +473 -0
  61. package/dist/main/database.cjs.map +1 -0
  62. package/dist/main/database.d.cts +81 -0
  63. package/dist/main/database.d.cts.map +1 -0
  64. package/dist/main/database.d.ts +81 -0
  65. package/dist/main/database.d.ts.map +1 -0
  66. package/dist/main/database.js +472 -0
  67. package/dist/main/database.js.map +1 -0
  68. package/dist/main/index.cjs +22 -0
  69. package/dist/main/index.d.cts +7 -0
  70. package/dist/main/index.d.ts +7 -0
  71. package/dist/main/index.js +7 -0
  72. package/dist/main/media-cache.cjs +862 -0
  73. package/dist/main/media-cache.cjs.map +1 -0
  74. package/dist/main/media-cache.d.cts +134 -0
  75. package/dist/main/media-cache.d.cts.map +1 -0
  76. package/dist/main/media-cache.d.ts +134 -0
  77. package/dist/main/media-cache.d.ts.map +1 -0
  78. package/dist/main/media-cache.js +854 -0
  79. package/dist/main/media-cache.js.map +1 -0
  80. package/dist/main/storage-root-lock.cjs +124 -0
  81. package/dist/main/storage-root-lock.cjs.map +1 -0
  82. package/dist/main/storage-root-lock.d.cts +11 -0
  83. package/dist/main/storage-root-lock.d.cts.map +1 -0
  84. package/dist/main/storage-root-lock.d.ts +11 -0
  85. package/dist/main/storage-root-lock.d.ts.map +1 -0
  86. package/dist/main/storage-root-lock.js +120 -0
  87. package/dist/main/storage-root-lock.js.map +1 -0
  88. package/dist/main/store.cjs +197 -0
  89. package/dist/main/store.cjs.map +1 -0
  90. package/dist/main/store.d.cts +83 -0
  91. package/dist/main/store.d.cts.map +1 -0
  92. package/dist/main/store.d.ts +83 -0
  93. package/dist/main/store.d.ts.map +1 -0
  94. package/dist/main/store.js +195 -0
  95. package/dist/main/store.js.map +1 -0
  96. package/dist/preload/index.cjs +36 -0
  97. package/dist/preload/index.cjs.map +1 -0
  98. package/dist/preload/index.d.cts +14 -0
  99. package/dist/preload/index.d.cts.map +1 -0
  100. package/dist/preload/index.d.ts +14 -0
  101. package/dist/preload/index.d.ts.map +1 -0
  102. package/dist/preload/index.js +34 -0
  103. package/dist/preload/index.js.map +1 -0
  104. package/dist/react/index.cjs +199 -0
  105. package/dist/react/index.cjs.map +1 -0
  106. package/dist/react/index.d.cts +50 -0
  107. package/dist/react/index.d.cts.map +1 -0
  108. package/dist/react/index.d.ts +50 -0
  109. package/dist/react/index.d.ts.map +1 -0
  110. package/dist/react/index.js +191 -0
  111. package/dist/react/index.js.map +1 -0
  112. package/dist/renderer/helpers.cjs +36 -0
  113. package/dist/renderer/helpers.cjs.map +1 -0
  114. package/dist/renderer/helpers.d.cts +11 -0
  115. package/dist/renderer/helpers.d.cts.map +1 -0
  116. package/dist/renderer/helpers.d.ts +11 -0
  117. package/dist/renderer/helpers.d.ts.map +1 -0
  118. package/dist/renderer/helpers.js +35 -0
  119. package/dist/renderer/helpers.js.map +1 -0
  120. package/dist/renderer/index.cjs +20 -0
  121. package/dist/renderer/index.cjs.map +1 -0
  122. package/dist/renderer/index.d.cts +14 -0
  123. package/dist/renderer/index.d.cts.map +1 -0
  124. package/dist/renderer/index.d.ts +14 -0
  125. package/dist/renderer/index.d.ts.map +1 -0
  126. package/dist/renderer/index.js +14 -0
  127. package/dist/renderer/index.js.map +1 -0
  128. package/dist/renderer/runtime.cjs +278 -0
  129. package/dist/renderer/runtime.cjs.map +1 -0
  130. package/dist/renderer/runtime.d.cts +35 -0
  131. package/dist/renderer/runtime.d.cts.map +1 -0
  132. package/dist/renderer/runtime.d.ts +35 -0
  133. package/dist/renderer/runtime.d.ts.map +1 -0
  134. package/dist/renderer/runtime.js +273 -0
  135. package/dist/renderer/runtime.js.map +1 -0
  136. package/dist/renderer/window-globals.d.cts +9 -0
  137. package/dist/renderer/window-globals.d.cts.map +1 -0
  138. package/dist/renderer/window-globals.d.ts +9 -0
  139. package/dist/renderer/window-globals.d.ts.map +1 -0
  140. package/dist/shared/errors.cjs +102 -0
  141. package/dist/shared/errors.cjs.map +1 -0
  142. package/dist/shared/errors.d.cts +45 -0
  143. package/dist/shared/errors.d.cts.map +1 -0
  144. package/dist/shared/errors.d.ts +45 -0
  145. package/dist/shared/errors.d.ts.map +1 -0
  146. package/dist/shared/errors.js +93 -0
  147. package/dist/shared/errors.js.map +1 -0
  148. package/dist/shared/ipc.cjs +14 -0
  149. package/dist/shared/ipc.cjs.map +1 -0
  150. package/dist/shared/ipc.d.cts +12 -0
  151. package/dist/shared/ipc.d.cts.map +1 -0
  152. package/dist/shared/ipc.d.ts +12 -0
  153. package/dist/shared/ipc.d.ts.map +1 -0
  154. package/dist/shared/ipc.js +13 -0
  155. package/dist/shared/ipc.js.map +1 -0
  156. package/dist/shared/normalize.cjs +19 -0
  157. package/dist/shared/normalize.cjs.map +1 -0
  158. package/dist/shared/normalize.d.cts +11 -0
  159. package/dist/shared/normalize.d.cts.map +1 -0
  160. package/dist/shared/normalize.d.ts +11 -0
  161. package/dist/shared/normalize.d.ts.map +1 -0
  162. package/dist/shared/normalize.js +18 -0
  163. package/dist/shared/normalize.js.map +1 -0
  164. package/dist/shared/pagination.cjs +32 -0
  165. package/dist/shared/pagination.cjs.map +1 -0
  166. package/dist/shared/pagination.d.cts +14 -0
  167. package/dist/shared/pagination.d.cts.map +1 -0
  168. package/dist/shared/pagination.d.ts +14 -0
  169. package/dist/shared/pagination.d.ts.map +1 -0
  170. package/dist/shared/pagination.js +28 -0
  171. package/dist/shared/pagination.js.map +1 -0
  172. package/dist/shared/stem.cjs +16 -0
  173. package/dist/shared/stem.cjs.map +1 -0
  174. package/dist/shared/stem.d.cts +6 -0
  175. package/dist/shared/stem.d.cts.map +1 -0
  176. package/dist/shared/stem.d.ts +6 -0
  177. package/dist/shared/stem.d.ts.map +1 -0
  178. package/dist/shared/stem.js +14 -0
  179. package/dist/shared/stem.js.map +1 -0
  180. package/dist/shared/types.cjs +15 -0
  181. package/dist/shared/types.cjs.map +1 -0
  182. package/dist/shared/types.d.cts +234 -0
  183. package/dist/shared/types.d.cts.map +1 -0
  184. package/dist/shared/types.d.ts +234 -0
  185. package/dist/shared/types.d.ts.map +1 -0
  186. package/dist/shared/types.js +14 -0
  187. package/dist/shared/types.js.map +1 -0
  188. package/package.json +120 -0
  189. package/skills/authenticated-downloads/SKILL.md +203 -0
  190. package/skills/cache-configuration/SKILL.md +357 -0
  191. package/skills/cache-configuration/references/options.md +356 -0
  192. package/skills/getting-started/SKILL.md +407 -0
  193. package/skills/production-checklist/SKILL.md +397 -0
  194. package/skills/react-rendering/SKILL.md +424 -0
  195. package/skills/react-rendering/references/hooks.md +443 -0
  196. package/skills/store-authoring/SKILL.md +369 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media-kind.js","names":[],"sources":["../../src/internal/media-kind.ts"],"sourcesContent":["import type { MediaKind } from \"../shared/types.js\";\n\nconst documentMimeTypes = new Set([\n \"application/pdf\",\n \"application/msword\",\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n \"application/vnd.ms-excel\",\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n \"application/vnd.ms-powerpoint\",\n \"application/vnd.openxmlformats-officedocument.presentationml.presentation\",\n \"application/rtf\",\n \"application/epub+zip\",\n]);\n\n/**\n * Derives a coarse {@link MediaKind} from a MIME type string.\n *\n * Mapping rules (first match wins):\n * - `video/*` → `\"video\"`\n * - `image/*` → `\"image\"`\n * - `audio/*` → `\"audio\"`\n * - `text/html` → `\"html\"`\n * - `text/*` → `\"text\"`\n * - Known document MIME types (PDF, Office, EPUB) → `\"document\"`\n * - `application/json` → `\"text\"`\n * - Everything else → `\"binary\"`\n */\nexport function mediaKindFromMime(mime: string): MediaKind {\n const normalized = mime.trim().toLowerCase().split(\";\")[0]!.trim();\n const slash = normalized.indexOf(\"/\");\n if (slash === -1) {\n return \"binary\";\n }\n\n const type = normalized.slice(0, slash);\n\n switch (type) {\n case \"video\":\n return \"video\";\n case \"image\":\n return \"image\";\n case \"audio\":\n return \"audio\";\n case \"text\":\n return normalized === \"text/html\" ? \"html\" : \"text\";\n case \"application\":\n if (documentMimeTypes.has(normalized)) {\n return \"document\";\n }\n if (normalized === \"application/json\") {\n return \"text\";\n }\n return \"binary\";\n default:\n return \"binary\";\n }\n}\n"],"mappings":";AAEA,MAAM,oBAAoB,IAAI,IAAI;CAChC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD,CAAC;;;;;;;;;;;;;;AAeF,SAAgB,kBAAkB,MAAyB;CACzD,MAAM,aAAa,KAAK,MAAM,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,GAAI,MAAM;CAClE,MAAM,QAAQ,WAAW,QAAQ,IAAI;CACrC,IAAI,UAAU,IACZ,OAAO;CAKT,QAFa,WAAW,MAAM,GAAG,MAErB,EAAZ;EACE,KAAK,SACH,OAAO;EACT,KAAK,SACH,OAAO;EACT,KAAK,SACH,OAAO;EACT,KAAK,QACH,OAAO,eAAe,cAAc,SAAS;EAC/C,KAAK;GACH,IAAI,kBAAkB,IAAI,WAAW,EACnC,OAAO;GAET,IAAI,eAAe,oBACjB,OAAO;GAET,OAAO;EACT,SACE,OAAO"}
@@ -0,0 +1,14 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ //#region src/internal/url-warn.ts
3
+ /**
4
+ * Emergency fallback when no structured warning sink is available — writes to console.warn.
5
+ * Only used when MediaCacheDatabase is constructed without onWarn, or MediaCache
6
+ * has neither `logging.onLog` nor the built-in development console sink.
7
+ */
8
+ function consoleWarnResolveAssetBaseUrlFallback(contextLabel, err) {
9
+ console.warn(`[media-cache] resolveAssetBaseUrl: could not apply origin override for ${contextLabel}:`, err);
10
+ }
11
+ //#endregion
12
+ exports.consoleWarnResolveAssetBaseUrlFallback = consoleWarnResolveAssetBaseUrlFallback;
13
+
14
+ //# sourceMappingURL=url-warn.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url-warn.cjs","names":[],"sources":["../../src/internal/url-warn.ts"],"sourcesContent":["/**\n * Emergency fallback when no structured warning sink is available — writes to console.warn.\n * Only used when MediaCacheDatabase is constructed without onWarn, or MediaCache\n * has neither `logging.onLog` nor the built-in development console sink.\n */\nexport function consoleWarnResolveAssetBaseUrlFallback(contextLabel: string, err: unknown): void {\n console.warn(\n `[media-cache] resolveAssetBaseUrl: could not apply origin override for ${contextLabel}:`,\n err,\n );\n}\n"],"mappings":";;;;;;;AAKA,SAAgB,uCAAuC,cAAsB,KAAoB;CAC/F,QAAQ,KACN,0EAA0E,aAAa,IACvF,IACD"}
@@ -0,0 +1,10 @@
1
+ //#region src/internal/url-warn.d.ts
2
+ /**
3
+ * Emergency fallback when no structured warning sink is available — writes to console.warn.
4
+ * Only used when MediaCacheDatabase is constructed without onWarn, or MediaCache
5
+ * has neither `logging.onLog` nor the built-in development console sink.
6
+ */
7
+ declare function consoleWarnResolveAssetBaseUrlFallback(contextLabel: string, err: unknown): void;
8
+ //#endregion
9
+ export { consoleWarnResolveAssetBaseUrlFallback };
10
+ //# sourceMappingURL=url-warn.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url-warn.d.cts","names":[],"sources":["../../src/internal/url-warn.ts"],"mappings":";;AAKA;;;;iBAAgB,sCAAA,CAAuC,YAAA,UAAsB,GAAA"}
@@ -0,0 +1,10 @@
1
+ //#region src/internal/url-warn.d.ts
2
+ /**
3
+ * Emergency fallback when no structured warning sink is available — writes to console.warn.
4
+ * Only used when MediaCacheDatabase is constructed without onWarn, or MediaCache
5
+ * has neither `logging.onLog` nor the built-in development console sink.
6
+ */
7
+ declare function consoleWarnResolveAssetBaseUrlFallback(contextLabel: string, err: unknown): void;
8
+ //#endregion
9
+ export { consoleWarnResolveAssetBaseUrlFallback };
10
+ //# sourceMappingURL=url-warn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url-warn.d.ts","names":[],"sources":["../../src/internal/url-warn.ts"],"mappings":";;AAKA;;;;iBAAgB,sCAAA,CAAuC,YAAA,UAAsB,GAAA"}
@@ -0,0 +1,13 @@
1
+ //#region src/internal/url-warn.ts
2
+ /**
3
+ * Emergency fallback when no structured warning sink is available — writes to console.warn.
4
+ * Only used when MediaCacheDatabase is constructed without onWarn, or MediaCache
5
+ * has neither `logging.onLog` nor the built-in development console sink.
6
+ */
7
+ function consoleWarnResolveAssetBaseUrlFallback(contextLabel, err) {
8
+ console.warn(`[media-cache] resolveAssetBaseUrl: could not apply origin override for ${contextLabel}:`, err);
9
+ }
10
+ //#endregion
11
+ export { consoleWarnResolveAssetBaseUrlFallback };
12
+
13
+ //# sourceMappingURL=url-warn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url-warn.js","names":[],"sources":["../../src/internal/url-warn.ts"],"sourcesContent":["/**\n * Emergency fallback when no structured warning sink is available — writes to console.warn.\n * Only used when MediaCacheDatabase is constructed without onWarn, or MediaCache\n * has neither `logging.onLog` nor the built-in development console sink.\n */\nexport function consoleWarnResolveAssetBaseUrlFallback(contextLabel: string, err: unknown): void {\n console.warn(\n `[media-cache] resolveAssetBaseUrl: could not apply origin override for ${contextLabel}:`,\n err,\n );\n}\n"],"mappings":";;;;;;AAKA,SAAgB,uCAAuC,cAAsB,KAAoB;CAC/F,QAAQ,KACN,0EAA0E,aAAa,IACvF,IACD"}
@@ -0,0 +1,222 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_shared_errors = require("../shared/errors.cjs");
3
+ let zod = require("zod");
4
+ //#region src/internal/validation.ts
5
+ const nonNegativeIntegerSchema = zod.z.number().int().nonnegative();
6
+ const nonNegativeNumberSchema = zod.z.number().nonnegative();
7
+ /**
8
+ * Schema for IPC/API string identifiers: asset key, index name, index value, file stem.
9
+ * Enforces min 1 and max 2000 characters.
10
+ */
11
+ const stringInputSchema = zod.z.string().min(1).max(2e3);
12
+ const jsonValueSchema = zod.z.lazy(() => zod.z.union([
13
+ zod.z.string(),
14
+ zod.z.number(),
15
+ zod.z.boolean(),
16
+ zod.z.null(),
17
+ zod.z.array(jsonValueSchema),
18
+ zod.z.record(zod.z.string(), jsonValueSchema)
19
+ ]));
20
+ const jsonObjectSchema = zod.z.record(zod.z.string(), jsonValueSchema);
21
+ const stringRecordSchema = zod.z.record(zod.z.string(), zod.z.string());
22
+ const serializedMediaCacheErrorSchema = zod.z.object({
23
+ name: zod.z.string(),
24
+ code: zod.z.string(),
25
+ message: zod.z.string()
26
+ });
27
+ const syncRunStatsSchema = zod.z.object({
28
+ totalAssets: nonNegativeIntegerSchema,
29
+ downloadedAssets: nonNegativeIntegerSchema,
30
+ skippedAssets: nonNegativeIntegerSchema,
31
+ bytesDownloaded: nonNegativeNumberSchema
32
+ });
33
+ const syncProgressSchema = zod.z.object({
34
+ runId: nonNegativeIntegerSchema,
35
+ phase: zod.z.enum([
36
+ "resolving-store",
37
+ "staging-generation",
38
+ "diffing",
39
+ "downloading",
40
+ "committing",
41
+ "pruning"
42
+ ]),
43
+ totalAssets: nonNegativeIntegerSchema,
44
+ completedAssets: nonNegativeIntegerSchema,
45
+ downloadedAssets: nonNegativeIntegerSchema,
46
+ skippedAssets: nonNegativeIntegerSchema,
47
+ bytesDownloaded: nonNegativeNumberSchema
48
+ });
49
+ const syncRunSummarySchema = zod.z.object({
50
+ id: nonNegativeIntegerSchema,
51
+ status: zod.z.enum([
52
+ "running",
53
+ "success",
54
+ "error"
55
+ ]),
56
+ startedAt: nonNegativeIntegerSchema,
57
+ finishedAt: nonNegativeIntegerSchema.nullable(),
58
+ errorCode: zod.z.string().nullable(),
59
+ errorMessage: zod.z.string().nullable(),
60
+ stats: syncRunStatsSchema
61
+ });
62
+ const mediaCacheStatusSchema = zod.z.object({
63
+ phase: zod.z.enum([
64
+ "idle",
65
+ "syncing",
66
+ "ready",
67
+ "error"
68
+ ]),
69
+ storageRoot: zod.z.string().nullable().default(null),
70
+ activeGenerationId: nonNegativeIntegerSchema.nullable(),
71
+ progress: syncProgressSchema.nullable(),
72
+ lastRun: syncRunSummarySchema.nullable(),
73
+ error: serializedMediaCacheErrorSchema.nullable(),
74
+ updatedAt: nonNegativeIntegerSchema
75
+ });
76
+ const mediaKindSchema = zod.z.enum([
77
+ "video",
78
+ "image",
79
+ "audio",
80
+ "document",
81
+ "html",
82
+ "text",
83
+ "binary"
84
+ ]);
85
+ const mediaCacheAppPathSchema = zod.z.enum([
86
+ "home",
87
+ "appData",
88
+ "userData",
89
+ "sessionData",
90
+ "temp",
91
+ "exe",
92
+ "module",
93
+ "desktop",
94
+ "documents",
95
+ "downloads",
96
+ "music",
97
+ "pictures",
98
+ "videos",
99
+ "recent",
100
+ "logs",
101
+ "crashDumps"
102
+ ]);
103
+ const storagePathSegmentSchema = zod.z.string().min(1).refine((segment) => !/[/\\]/.test(segment), { message: "Storage path segments must not contain path separators" }).refine((segment) => segment !== "." && segment !== "..", { message: "Storage path segments must not be \".\" or \"..\"" });
104
+ const mediaCacheStoragePathSchema = zod.z.object({
105
+ appPath: mediaCacheAppPathSchema,
106
+ segments: zod.z.array(storagePathSegmentSchema).optional()
107
+ });
108
+ const statusSnapshotRowSchema = zod.z.object({ status_json: zod.z.string() });
109
+ const syncRunRowSchema = zod.z.object({
110
+ id: nonNegativeIntegerSchema,
111
+ started_at_ms: nonNegativeIntegerSchema,
112
+ finished_at_ms: nonNegativeIntegerSchema.nullable(),
113
+ status: zod.z.enum([
114
+ "running",
115
+ "success",
116
+ "error"
117
+ ]),
118
+ error_code: zod.z.string().nullable(),
119
+ error_message: zod.z.string().nullable(),
120
+ stats_json: zod.z.string()
121
+ });
122
+ const syncRunIdRowSchema = zod.z.object({ id: nonNegativeIntegerSchema });
123
+ const generationIdRowSchema = zod.z.object({ id: nonNegativeIntegerSchema });
124
+ const activeGenerationRowSchema = zod.z.object({ generation_id: nonNegativeIntegerSchema });
125
+ /** Row shape from getGenerationAssets used during sync diffing. */
126
+ const generationAssetRowSchema = zod.z.object({
127
+ assetKey: zod.z.string(),
128
+ version: zod.z.string(),
129
+ relativePath: zod.z.string().nullable(),
130
+ mimeType: zod.z.string(),
131
+ url: zod.z.string()
132
+ });
133
+ /** Row shape for a fully joined active asset used for queries. */
134
+ const activeAssetRowSchema = zod.z.object({
135
+ generationId: nonNegativeIntegerSchema,
136
+ assetKey: zod.z.string(),
137
+ displayKey: zod.z.string(),
138
+ version: zod.z.string(),
139
+ mimeType: zod.z.string(),
140
+ mediaKind: mediaKindSchema,
141
+ byteLength: nonNegativeNumberSchema.nullable(),
142
+ metadata: zod.z.string(),
143
+ indexesJson: zod.z.string(),
144
+ relativePath: zod.z.string().nullable(),
145
+ url: zod.z.string(),
146
+ fileStem: zod.z.string(),
147
+ orderIndex: nonNegativeIntegerSchema
148
+ });
149
+ const pendingDeletionSchema = zod.z.object({
150
+ deletionKey: zod.z.string(),
151
+ logicalKey: zod.z.string(),
152
+ relativePath: zod.z.string()
153
+ });
154
+ const protocolAssetTargetRowSchema = zod.z.object({ relative_path: zod.z.string().nullable() });
155
+ const fileStemRowSchema = zod.z.object({ assetKey: zod.z.string() });
156
+ const optionalNonNegativeIntegerSchema = zod.z.number().int().nonnegative().nullish().transform((value) => value ?? void 0);
157
+ const optionalStringSchema = zod.z.string().nullish().transform((value) => value ?? void 0);
158
+ const paginationInputSchema = zod.z.object({
159
+ limit: optionalNonNegativeIntegerSchema,
160
+ cursor: optionalStringSchema
161
+ });
162
+ const optionalPaginationInputSchema = paginationInputSchema.nullish().transform((value) => value ?? void 0);
163
+ const cursorPayloadSchema = zod.z.object({ index: zod.z.number().int().nonnegative() });
164
+ function parseWithSchema(schema, value, context) {
165
+ const result = schema.safeParse(value);
166
+ if (result.success) return result.data;
167
+ throw new require_shared_errors.DataValidationError(`Invalid ${context}: ${formatZodIssues(result.error)}`, { cause: result.error });
168
+ }
169
+ function parseJsonWithSchema(rawJson, schema, context) {
170
+ let parsed;
171
+ try {
172
+ parsed = JSON.parse(rawJson);
173
+ } catch (error) {
174
+ throw new require_shared_errors.DataValidationError(`Invalid ${context}: failed to parse JSON.`, { cause: error });
175
+ }
176
+ return parseWithSchema(schema, parsed, context);
177
+ }
178
+ function stringifyWithSchema(value, schema, context) {
179
+ let rawJson;
180
+ try {
181
+ rawJson = JSON.stringify(value);
182
+ } catch (error) {
183
+ throw new require_shared_errors.DataValidationError(`Invalid ${context}: value is not JSON serializable.`, { cause: error });
184
+ }
185
+ if (rawJson === void 0) throw new require_shared_errors.DataValidationError(`Invalid ${context}: value is not JSON serializable.`);
186
+ parseJsonWithSchema(rawJson, schema, context);
187
+ return rawJson;
188
+ }
189
+ function formatZodIssues(error) {
190
+ return error.issues.map((issue) => {
191
+ return `${issue.path.length > 0 ? issue.path.join(".") : "(root)"}: ${issue.message}`;
192
+ }).join("; ");
193
+ }
194
+ //#endregion
195
+ exports.activeAssetRowSchema = activeAssetRowSchema;
196
+ exports.activeGenerationRowSchema = activeGenerationRowSchema;
197
+ exports.cursorPayloadSchema = cursorPayloadSchema;
198
+ exports.fileStemRowSchema = fileStemRowSchema;
199
+ exports.generationAssetRowSchema = generationAssetRowSchema;
200
+ exports.generationIdRowSchema = generationIdRowSchema;
201
+ exports.jsonObjectSchema = jsonObjectSchema;
202
+ exports.jsonValueSchema = jsonValueSchema;
203
+ exports.mediaCacheStatusSchema = mediaCacheStatusSchema;
204
+ exports.mediaCacheStoragePathSchema = mediaCacheStoragePathSchema;
205
+ exports.optionalPaginationInputSchema = optionalPaginationInputSchema;
206
+ exports.paginationInputSchema = paginationInputSchema;
207
+ exports.parseJsonWithSchema = parseJsonWithSchema;
208
+ exports.parseWithSchema = parseWithSchema;
209
+ exports.pendingDeletionSchema = pendingDeletionSchema;
210
+ exports.protocolAssetTargetRowSchema = protocolAssetTargetRowSchema;
211
+ exports.serializedMediaCacheErrorSchema = serializedMediaCacheErrorSchema;
212
+ exports.statusSnapshotRowSchema = statusSnapshotRowSchema;
213
+ exports.stringInputSchema = stringInputSchema;
214
+ exports.stringRecordSchema = stringRecordSchema;
215
+ exports.stringifyWithSchema = stringifyWithSchema;
216
+ exports.syncProgressSchema = syncProgressSchema;
217
+ exports.syncRunIdRowSchema = syncRunIdRowSchema;
218
+ exports.syncRunRowSchema = syncRunRowSchema;
219
+ exports.syncRunStatsSchema = syncRunStatsSchema;
220
+ exports.syncRunSummarySchema = syncRunSummarySchema;
221
+
222
+ //# sourceMappingURL=validation.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.cjs","names":["z","DataValidationError"],"sources":["../../src/internal/validation.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { DataValidationError } from \"../shared/errors.js\";\nimport type { ActiveAssetRow, GenerationAssetRow, PendingDeletion } from \"../main/database.js\";\nimport type {\n JsonValue,\n MediaCacheAppPath,\n MediaCacheStatus,\n MediaCacheStoragePath,\n MediaKind,\n SerializedMediaCacheError,\n SyncProgress,\n SyncRunStats,\n SyncRunSummary,\n} from \"../shared/types.js\";\n\nconst nonNegativeIntegerSchema = z.number().int().nonnegative();\nconst nonNegativeNumberSchema = z.number().nonnegative();\n\n/**\n * Schema for IPC/API string identifiers: asset key, index name, index value, file stem.\n * Enforces min 1 and max 2000 characters.\n */\nexport const stringInputSchema = z.string().min(1).max(2000);\n\nexport const jsonValueSchema: z.ZodType<JsonValue> = z.lazy(() =>\n z.union([\n z.string(),\n z.number(),\n z.boolean(),\n z.null(),\n z.array(jsonValueSchema),\n z.record(z.string(), jsonValueSchema),\n ]),\n);\n\nexport const jsonObjectSchema: z.ZodType<Record<string, JsonValue>> = z.record(\n z.string(),\n jsonValueSchema,\n);\n\nexport const stringRecordSchema = z.record(z.string(), z.string());\n\nexport const serializedMediaCacheErrorSchema: z.ZodType<SerializedMediaCacheError> = z.object({\n name: z.string(),\n code: z.string(),\n message: z.string(),\n});\n\nexport const syncRunStatsSchema: z.ZodType<SyncRunStats> = z.object({\n totalAssets: nonNegativeIntegerSchema,\n downloadedAssets: nonNegativeIntegerSchema,\n skippedAssets: nonNegativeIntegerSchema,\n bytesDownloaded: nonNegativeNumberSchema,\n});\n\nexport const syncProgressSchema: z.ZodType<SyncProgress> = z.object({\n runId: nonNegativeIntegerSchema,\n phase: z.enum([\n \"resolving-store\",\n \"staging-generation\",\n \"diffing\",\n \"downloading\",\n \"committing\",\n \"pruning\",\n ]),\n totalAssets: nonNegativeIntegerSchema,\n completedAssets: nonNegativeIntegerSchema,\n downloadedAssets: nonNegativeIntegerSchema,\n skippedAssets: nonNegativeIntegerSchema,\n bytesDownloaded: nonNegativeNumberSchema,\n});\n\nexport const syncRunSummarySchema: z.ZodType<SyncRunSummary> = z.object({\n id: nonNegativeIntegerSchema,\n status: z.enum([\"running\", \"success\", \"error\"]),\n startedAt: nonNegativeIntegerSchema,\n finishedAt: nonNegativeIntegerSchema.nullable(),\n errorCode: z.string().nullable(),\n errorMessage: z.string().nullable(),\n stats: syncRunStatsSchema,\n});\n\nexport const mediaCacheStatusSchema: z.ZodType<MediaCacheStatus> = z.object({\n phase: z.enum([\"idle\", \"syncing\", \"ready\", \"error\"]),\n storageRoot: z.string().nullable().default(null),\n activeGenerationId: nonNegativeIntegerSchema.nullable(),\n progress: syncProgressSchema.nullable(),\n lastRun: syncRunSummarySchema.nullable(),\n error: serializedMediaCacheErrorSchema.nullable(),\n updatedAt: nonNegativeIntegerSchema,\n});\n\nconst mediaKindSchema: z.ZodType<MediaKind> = z.enum([\n \"video\",\n \"image\",\n \"audio\",\n \"document\",\n \"html\",\n \"text\",\n \"binary\",\n]);\n\nconst mediaCacheAppPathSchema: z.ZodType<MediaCacheAppPath> = z.enum([\n \"home\",\n \"appData\",\n \"userData\",\n \"sessionData\",\n \"temp\",\n \"exe\",\n \"module\",\n \"desktop\",\n \"documents\",\n \"downloads\",\n \"music\",\n \"pictures\",\n \"videos\",\n \"recent\",\n \"logs\",\n \"crashDumps\",\n]);\n\nconst storagePathSegmentSchema = z\n .string()\n .min(1)\n .refine((segment) => !/[/\\\\]/.test(segment), {\n message: \"Storage path segments must not contain path separators\",\n })\n .refine((segment) => segment !== \".\" && segment !== \"..\", {\n message: 'Storage path segments must not be \".\" or \"..\"',\n });\n\nexport const mediaCacheStoragePathSchema: z.ZodType<MediaCacheStoragePath> = z.object({\n appPath: mediaCacheAppPathSchema,\n segments: z.array(storagePathSegmentSchema).optional(),\n});\n\nexport const statusSnapshotRowSchema = z.object({\n status_json: z.string(),\n});\n\nexport const syncRunRowSchema = z.object({\n id: nonNegativeIntegerSchema,\n started_at_ms: nonNegativeIntegerSchema,\n finished_at_ms: nonNegativeIntegerSchema.nullable(),\n status: z.enum([\"running\", \"success\", \"error\"]),\n error_code: z.string().nullable(),\n error_message: z.string().nullable(),\n stats_json: z.string(),\n});\n\nexport const syncRunIdRowSchema = z.object({\n id: nonNegativeIntegerSchema,\n});\n\nexport const generationIdRowSchema = z.object({\n id: nonNegativeIntegerSchema,\n});\n\nexport const activeGenerationRowSchema = z.object({\n generation_id: nonNegativeIntegerSchema,\n});\n\n/** Row shape from getGenerationAssets used during sync diffing. */\nexport const generationAssetRowSchema: z.ZodType<GenerationAssetRow> = z.object({\n assetKey: z.string(),\n version: z.string(),\n relativePath: z.string().nullable(),\n mimeType: z.string(),\n url: z.string(),\n});\n\n/** Row shape for a fully joined active asset used for queries. */\nexport const activeAssetRowSchema: z.ZodType<ActiveAssetRow> = z.object({\n generationId: nonNegativeIntegerSchema,\n assetKey: z.string(),\n displayKey: z.string(),\n version: z.string(),\n mimeType: z.string(),\n mediaKind: mediaKindSchema,\n byteLength: nonNegativeNumberSchema.nullable(),\n metadata: z.string(),\n indexesJson: z.string(),\n relativePath: z.string().nullable(),\n url: z.string(),\n fileStem: z.string(),\n orderIndex: nonNegativeIntegerSchema,\n});\n\nexport const pendingDeletionSchema: z.ZodType<PendingDeletion> = z.object({\n deletionKey: z.string(),\n logicalKey: z.string(),\n relativePath: z.string(),\n});\n\nexport const protocolAssetTargetRowSchema = z.object({\n relative_path: z.string().nullable(),\n});\n\nexport const fileStemRowSchema = z.object({\n assetKey: z.string(),\n});\n\nconst optionalNonNegativeIntegerSchema = z\n .number()\n .int()\n .nonnegative()\n .nullish()\n .transform((value) => value ?? undefined);\n\nconst optionalStringSchema = z\n .string()\n .nullish()\n .transform((value) => value ?? undefined);\n\nexport const paginationInputSchema = z.object({\n limit: optionalNonNegativeIntegerSchema,\n cursor: optionalStringSchema,\n});\n\nexport const optionalPaginationInputSchema = paginationInputSchema\n .nullish()\n .transform((value) => value ?? undefined);\n\nexport const cursorPayloadSchema = z.object({\n index: z.number().int().nonnegative(),\n});\n\nexport function parseWithSchema<T>(schema: z.ZodType<T>, value: unknown, context: string): T {\n const result = schema.safeParse(value);\n if (result.success) {\n return result.data;\n }\n\n throw new DataValidationError(`Invalid ${context}: ${formatZodIssues(result.error)}`, {\n cause: result.error,\n });\n}\n\nexport function parseJsonWithSchema<T>(rawJson: string, schema: z.ZodType<T>, context: string): T {\n let parsed: unknown;\n try {\n parsed = JSON.parse(rawJson);\n } catch (error) {\n throw new DataValidationError(`Invalid ${context}: failed to parse JSON.`, {\n cause: error,\n });\n }\n\n return parseWithSchema(schema, parsed, context);\n}\n\nexport function stringifyWithSchema<T>(\n value: unknown,\n schema: z.ZodType<T>,\n context: string,\n): string {\n let rawJson: string | undefined;\n try {\n rawJson = JSON.stringify(value);\n } catch (error) {\n throw new DataValidationError(`Invalid ${context}: value is not JSON serializable.`, {\n cause: error,\n });\n }\n if (rawJson === undefined) {\n throw new DataValidationError(`Invalid ${context}: value is not JSON serializable.`);\n }\n\n parseJsonWithSchema(rawJson, schema, context);\n return rawJson;\n}\n\nfunction formatZodIssues(error: z.ZodError): string {\n return error.issues\n .map((issue) => {\n const path = issue.path.length > 0 ? issue.path.join(\".\") : \"(root)\";\n return `${path}: ${issue.message}`;\n })\n .join(\"; \");\n}\n"],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ import { JsonValue, MediaCacheStatus, MediaCacheStoragePath, SerializedMediaCacheError, SyncProgress, SyncRunStats, SyncRunSummary } from "../shared/types.cjs";
2
+ import { ActiveAssetRow, GenerationAssetRow, PendingDeletion } from "../main/database.cjs";
3
+ import { z } from "zod";
4
+
5
+ //#region src/internal/validation.d.ts
6
+ /**
7
+ * Schema for IPC/API string identifiers: asset key, index name, index value, file stem.
8
+ * Enforces min 1 and max 2000 characters.
9
+ */
10
+ declare const stringInputSchema: z.ZodString;
11
+ declare const jsonValueSchema: z.ZodType<JsonValue>;
12
+ declare const jsonObjectSchema: z.ZodType<Record<string, JsonValue>>;
13
+ declare const stringRecordSchema: z.ZodRecord<z.ZodString, z.ZodString>;
14
+ declare const serializedMediaCacheErrorSchema: z.ZodType<SerializedMediaCacheError>;
15
+ declare const syncRunStatsSchema: z.ZodType<SyncRunStats>;
16
+ declare const syncProgressSchema: z.ZodType<SyncProgress>;
17
+ declare const syncRunSummarySchema: z.ZodType<SyncRunSummary>;
18
+ declare const mediaCacheStatusSchema: z.ZodType<MediaCacheStatus>;
19
+ declare const mediaCacheStoragePathSchema: z.ZodType<MediaCacheStoragePath>;
20
+ declare const statusSnapshotRowSchema: z.ZodObject<{
21
+ status_json: z.ZodString;
22
+ }, z.core.$strip>;
23
+ declare const syncRunRowSchema: z.ZodObject<{
24
+ id: z.ZodNumber;
25
+ started_at_ms: z.ZodNumber;
26
+ finished_at_ms: z.ZodNullable<z.ZodNumber>;
27
+ status: z.ZodEnum<{
28
+ error: "error";
29
+ success: "success";
30
+ running: "running";
31
+ }>;
32
+ error_code: z.ZodNullable<z.ZodString>;
33
+ error_message: z.ZodNullable<z.ZodString>;
34
+ stats_json: z.ZodString;
35
+ }, z.core.$strip>;
36
+ declare const syncRunIdRowSchema: z.ZodObject<{
37
+ id: z.ZodNumber;
38
+ }, z.core.$strip>;
39
+ declare const generationIdRowSchema: z.ZodObject<{
40
+ id: z.ZodNumber;
41
+ }, z.core.$strip>;
42
+ declare const activeGenerationRowSchema: z.ZodObject<{
43
+ generation_id: z.ZodNumber;
44
+ }, z.core.$strip>;
45
+ /** Row shape from getGenerationAssets used during sync diffing. */
46
+ declare const generationAssetRowSchema: z.ZodType<GenerationAssetRow>;
47
+ /** Row shape for a fully joined active asset used for queries. */
48
+ declare const activeAssetRowSchema: z.ZodType<ActiveAssetRow>;
49
+ declare const pendingDeletionSchema: z.ZodType<PendingDeletion>;
50
+ declare const protocolAssetTargetRowSchema: z.ZodObject<{
51
+ relative_path: z.ZodNullable<z.ZodString>;
52
+ }, z.core.$strip>;
53
+ declare const fileStemRowSchema: z.ZodObject<{
54
+ assetKey: z.ZodString;
55
+ }, z.core.$strip>;
56
+ declare const paginationInputSchema: z.ZodObject<{
57
+ limit: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodNumber>>, z.ZodTransform<number | undefined, number | null | undefined>>;
58
+ cursor: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string | undefined, string | null | undefined>>;
59
+ }, z.core.$strip>;
60
+ declare const optionalPaginationInputSchema: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodObject<{
61
+ limit: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodNumber>>, z.ZodTransform<number | undefined, number | null | undefined>>;
62
+ cursor: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string | undefined, string | null | undefined>>;
63
+ }, z.core.$strip>>>, z.ZodTransform<{
64
+ limit: number | undefined;
65
+ cursor: string | undefined;
66
+ } | undefined, {
67
+ limit: number | undefined;
68
+ cursor: string | undefined;
69
+ } | null | undefined>>;
70
+ declare const cursorPayloadSchema: z.ZodObject<{
71
+ index: z.ZodNumber;
72
+ }, z.core.$strip>;
73
+ declare function parseWithSchema<T>(schema: z.ZodType<T>, value: unknown, context: string): T;
74
+ declare function parseJsonWithSchema<T>(rawJson: string, schema: z.ZodType<T>, context: string): T;
75
+ declare function stringifyWithSchema<T>(value: unknown, schema: z.ZodType<T>, context: string): string;
76
+ //#endregion
77
+ export { activeAssetRowSchema, activeGenerationRowSchema, cursorPayloadSchema, fileStemRowSchema, generationAssetRowSchema, generationIdRowSchema, jsonObjectSchema, jsonValueSchema, mediaCacheStatusSchema, mediaCacheStoragePathSchema, optionalPaginationInputSchema, paginationInputSchema, parseJsonWithSchema, parseWithSchema, pendingDeletionSchema, protocolAssetTargetRowSchema, serializedMediaCacheErrorSchema, statusSnapshotRowSchema, stringInputSchema, stringRecordSchema, stringifyWithSchema, syncProgressSchema, syncRunIdRowSchema, syncRunRowSchema, syncRunStatsSchema, syncRunSummarySchema };
78
+ //# sourceMappingURL=validation.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.cts","names":[],"sources":["../../src/internal/validation.ts"],"mappings":";;;;;;;AAsBA;;cAAa,iBAAA,EAAiB,CAAA,CAAA,SAAA;AAAA,cAEjB,eAAA,EAAiB,CAAA,CAAE,OAAA,CAAQ,SAAA;AAAA,cAW3B,gBAAA,EAAkB,CAAA,CAAE,OAAA,CAAQ,MAAA,SAAe,SAAA;AAAA,cAK3C,kBAAA,EAAkB,CAAA,CAAA,SAAA,CAAA,CAAA,CAAA,SAAA,EAAA,CAAA,CAAA,SAAA;AAAA,cAElB,+BAAA,EAAiC,CAAA,CAAE,OAAA,CAAQ,yBAAA;AAAA,cAM3C,kBAAA,EAAoB,CAAA,CAAE,OAAA,CAAQ,YAAA;AAAA,cAO9B,kBAAA,EAAoB,CAAA,CAAE,OAAA,CAAQ,YAAA;AAAA,cAiB9B,oBAAA,EAAsB,CAAA,CAAE,OAAA,CAAQ,cAAA;AAAA,cAUhC,sBAAA,EAAwB,CAAA,CAAE,OAAA,CAAQ,gBAAA;AAAA,cAiDlC,2BAAA,EAA6B,CAAA,CAAE,OAAA,CAAQ,qBAAA;AAAA,cAKvC,uBAAA,EAAuB,CAAA,CAAA,SAAA;;;cAIvB,gBAAA,EAAgB,CAAA,CAAA,SAAA;;;;;;;;;;;;;cAUhB,kBAAA,EAAkB,CAAA,CAAA,SAAA;;;cAIlB,qBAAA,EAAqB,CAAA,CAAA,SAAA;;;cAIrB,yBAAA,EAAyB,CAAA,CAAA,SAAA;;;;cAKzB,wBAAA,EAA0B,CAAA,CAAE,OAAA,CAAQ,kBAAA;;cASpC,oBAAA,EAAsB,CAAA,CAAE,OAAA,CAAQ,cAAA;AAAA,cAgBhC,qBAAA,EAAuB,CAAA,CAAE,OAAA,CAAQ,eAAA;AAAA,cAMjC,4BAAA,EAA4B,CAAA,CAAA,SAAA;;;cAI5B,iBAAA,EAAiB,CAAA,CAAA,SAAA;;;cAgBjB,qBAAA,EAAqB,CAAA,CAAA,SAAA;;;;cAKrB,6BAAA,EAA6B,CAAA,CAAA,OAAA,CAAA,CAAA,CAAA,WAAA,CAAA,CAAA,CAAA,WAAA,CAAA,CAAA,CAAA,SAAA;;;;;;;;;;cAI7B,mBAAA,EAAmB,CAAA,CAAA,SAAA;;;iBAIhB,eAAA,GAAA,CAAmB,MAAA,EAAQ,CAAA,CAAE,OAAA,CAAQ,CAAA,GAAI,KAAA,WAAgB,OAAA,WAAkB,CAAA;AAAA,iBAW3E,mBAAA,GAAA,CAAuB,OAAA,UAAiB,MAAA,EAAQ,CAAA,CAAE,OAAA,CAAQ,CAAA,GAAI,OAAA,WAAkB,CAAA;AAAA,iBAahF,mBAAA,GAAA,CACd,KAAA,WACA,MAAA,EAAQ,CAAA,CAAE,OAAA,CAAQ,CAAA,GAClB,OAAA"}
@@ -0,0 +1,78 @@
1
+ import { JsonValue, MediaCacheStatus, MediaCacheStoragePath, SerializedMediaCacheError, SyncProgress, SyncRunStats, SyncRunSummary } from "../shared/types.js";
2
+ import { ActiveAssetRow, GenerationAssetRow, PendingDeletion } from "../main/database.js";
3
+ import { z } from "zod";
4
+
5
+ //#region src/internal/validation.d.ts
6
+ /**
7
+ * Schema for IPC/API string identifiers: asset key, index name, index value, file stem.
8
+ * Enforces min 1 and max 2000 characters.
9
+ */
10
+ declare const stringInputSchema: z.ZodString;
11
+ declare const jsonValueSchema: z.ZodType<JsonValue>;
12
+ declare const jsonObjectSchema: z.ZodType<Record<string, JsonValue>>;
13
+ declare const stringRecordSchema: z.ZodRecord<z.ZodString, z.ZodString>;
14
+ declare const serializedMediaCacheErrorSchema: z.ZodType<SerializedMediaCacheError>;
15
+ declare const syncRunStatsSchema: z.ZodType<SyncRunStats>;
16
+ declare const syncProgressSchema: z.ZodType<SyncProgress>;
17
+ declare const syncRunSummarySchema: z.ZodType<SyncRunSummary>;
18
+ declare const mediaCacheStatusSchema: z.ZodType<MediaCacheStatus>;
19
+ declare const mediaCacheStoragePathSchema: z.ZodType<MediaCacheStoragePath>;
20
+ declare const statusSnapshotRowSchema: z.ZodObject<{
21
+ status_json: z.ZodString;
22
+ }, z.core.$strip>;
23
+ declare const syncRunRowSchema: z.ZodObject<{
24
+ id: z.ZodNumber;
25
+ started_at_ms: z.ZodNumber;
26
+ finished_at_ms: z.ZodNullable<z.ZodNumber>;
27
+ status: z.ZodEnum<{
28
+ error: "error";
29
+ success: "success";
30
+ running: "running";
31
+ }>;
32
+ error_code: z.ZodNullable<z.ZodString>;
33
+ error_message: z.ZodNullable<z.ZodString>;
34
+ stats_json: z.ZodString;
35
+ }, z.core.$strip>;
36
+ declare const syncRunIdRowSchema: z.ZodObject<{
37
+ id: z.ZodNumber;
38
+ }, z.core.$strip>;
39
+ declare const generationIdRowSchema: z.ZodObject<{
40
+ id: z.ZodNumber;
41
+ }, z.core.$strip>;
42
+ declare const activeGenerationRowSchema: z.ZodObject<{
43
+ generation_id: z.ZodNumber;
44
+ }, z.core.$strip>;
45
+ /** Row shape from getGenerationAssets used during sync diffing. */
46
+ declare const generationAssetRowSchema: z.ZodType<GenerationAssetRow>;
47
+ /** Row shape for a fully joined active asset used for queries. */
48
+ declare const activeAssetRowSchema: z.ZodType<ActiveAssetRow>;
49
+ declare const pendingDeletionSchema: z.ZodType<PendingDeletion>;
50
+ declare const protocolAssetTargetRowSchema: z.ZodObject<{
51
+ relative_path: z.ZodNullable<z.ZodString>;
52
+ }, z.core.$strip>;
53
+ declare const fileStemRowSchema: z.ZodObject<{
54
+ assetKey: z.ZodString;
55
+ }, z.core.$strip>;
56
+ declare const paginationInputSchema: z.ZodObject<{
57
+ limit: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodNumber>>, z.ZodTransform<number | undefined, number | null | undefined>>;
58
+ cursor: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string | undefined, string | null | undefined>>;
59
+ }, z.core.$strip>;
60
+ declare const optionalPaginationInputSchema: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodObject<{
61
+ limit: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodNumber>>, z.ZodTransform<number | undefined, number | null | undefined>>;
62
+ cursor: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string | undefined, string | null | undefined>>;
63
+ }, z.core.$strip>>>, z.ZodTransform<{
64
+ limit: number | undefined;
65
+ cursor: string | undefined;
66
+ } | undefined, {
67
+ limit: number | undefined;
68
+ cursor: string | undefined;
69
+ } | null | undefined>>;
70
+ declare const cursorPayloadSchema: z.ZodObject<{
71
+ index: z.ZodNumber;
72
+ }, z.core.$strip>;
73
+ declare function parseWithSchema<T>(schema: z.ZodType<T>, value: unknown, context: string): T;
74
+ declare function parseJsonWithSchema<T>(rawJson: string, schema: z.ZodType<T>, context: string): T;
75
+ declare function stringifyWithSchema<T>(value: unknown, schema: z.ZodType<T>, context: string): string;
76
+ //#endregion
77
+ export { activeAssetRowSchema, activeGenerationRowSchema, cursorPayloadSchema, fileStemRowSchema, generationAssetRowSchema, generationIdRowSchema, jsonObjectSchema, jsonValueSchema, mediaCacheStatusSchema, mediaCacheStoragePathSchema, optionalPaginationInputSchema, paginationInputSchema, parseJsonWithSchema, parseWithSchema, pendingDeletionSchema, protocolAssetTargetRowSchema, serializedMediaCacheErrorSchema, statusSnapshotRowSchema, stringInputSchema, stringRecordSchema, stringifyWithSchema, syncProgressSchema, syncRunIdRowSchema, syncRunRowSchema, syncRunStatsSchema, syncRunSummarySchema };
78
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","names":[],"sources":["../../src/internal/validation.ts"],"mappings":";;;;;;;AAsBA;;cAAa,iBAAA,EAAiB,CAAA,CAAA,SAAA;AAAA,cAEjB,eAAA,EAAiB,CAAA,CAAE,OAAA,CAAQ,SAAA;AAAA,cAW3B,gBAAA,EAAkB,CAAA,CAAE,OAAA,CAAQ,MAAA,SAAe,SAAA;AAAA,cAK3C,kBAAA,EAAkB,CAAA,CAAA,SAAA,CAAA,CAAA,CAAA,SAAA,EAAA,CAAA,CAAA,SAAA;AAAA,cAElB,+BAAA,EAAiC,CAAA,CAAE,OAAA,CAAQ,yBAAA;AAAA,cAM3C,kBAAA,EAAoB,CAAA,CAAE,OAAA,CAAQ,YAAA;AAAA,cAO9B,kBAAA,EAAoB,CAAA,CAAE,OAAA,CAAQ,YAAA;AAAA,cAiB9B,oBAAA,EAAsB,CAAA,CAAE,OAAA,CAAQ,cAAA;AAAA,cAUhC,sBAAA,EAAwB,CAAA,CAAE,OAAA,CAAQ,gBAAA;AAAA,cAiDlC,2BAAA,EAA6B,CAAA,CAAE,OAAA,CAAQ,qBAAA;AAAA,cAKvC,uBAAA,EAAuB,CAAA,CAAA,SAAA;;;cAIvB,gBAAA,EAAgB,CAAA,CAAA,SAAA;;;;;;;;;;;;;cAUhB,kBAAA,EAAkB,CAAA,CAAA,SAAA;;;cAIlB,qBAAA,EAAqB,CAAA,CAAA,SAAA;;;cAIrB,yBAAA,EAAyB,CAAA,CAAA,SAAA;;;;cAKzB,wBAAA,EAA0B,CAAA,CAAE,OAAA,CAAQ,kBAAA;;cASpC,oBAAA,EAAsB,CAAA,CAAE,OAAA,CAAQ,cAAA;AAAA,cAgBhC,qBAAA,EAAuB,CAAA,CAAE,OAAA,CAAQ,eAAA;AAAA,cAMjC,4BAAA,EAA4B,CAAA,CAAA,SAAA;;;cAI5B,iBAAA,EAAiB,CAAA,CAAA,SAAA;;;cAgBjB,qBAAA,EAAqB,CAAA,CAAA,SAAA;;;;cAKrB,6BAAA,EAA6B,CAAA,CAAA,OAAA,CAAA,CAAA,CAAA,WAAA,CAAA,CAAA,CAAA,WAAA,CAAA,CAAA,CAAA,SAAA;;;;;;;;;;cAI7B,mBAAA,EAAmB,CAAA,CAAA,SAAA;;;iBAIhB,eAAA,GAAA,CAAmB,MAAA,EAAQ,CAAA,CAAE,OAAA,CAAQ,CAAA,GAAI,KAAA,WAAgB,OAAA,WAAkB,CAAA;AAAA,iBAW3E,mBAAA,GAAA,CAAuB,OAAA,UAAiB,MAAA,EAAQ,CAAA,CAAE,OAAA,CAAQ,CAAA,GAAI,OAAA,WAAkB,CAAA;AAAA,iBAahF,mBAAA,GAAA,CACd,KAAA,WACA,MAAA,EAAQ,CAAA,CAAE,OAAA,CAAQ,CAAA,GAClB,OAAA"}