@deskwork/core 0.10.1 → 0.11.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 (73) hide show
  1. package/dist/calendar/parse.d.ts +24 -0
  2. package/dist/calendar/parse.d.ts.map +1 -0
  3. package/dist/calendar/parse.js +64 -0
  4. package/dist/calendar/parse.js.map +1 -0
  5. package/dist/calendar/render.d.ts +3 -0
  6. package/dist/calendar/render.d.ts.map +1 -0
  7. package/dist/calendar/render.js +46 -0
  8. package/dist/calendar/render.js.map +1 -0
  9. package/dist/doctor/migrate.d.ts +11 -0
  10. package/dist/doctor/migrate.d.ts.map +1 -0
  11. package/dist/doctor/migrate.js +101 -0
  12. package/dist/doctor/migrate.js.map +1 -0
  13. package/dist/doctor/repair.d.ts +9 -0
  14. package/dist/doctor/repair.d.ts.map +1 -0
  15. package/dist/doctor/repair.js +35 -0
  16. package/dist/doctor/repair.js.map +1 -0
  17. package/dist/doctor/validate.d.ts +11 -0
  18. package/dist/doctor/validate.d.ts.map +1 -0
  19. package/dist/doctor/validate.js +405 -0
  20. package/dist/doctor/validate.js.map +1 -0
  21. package/dist/iterate/iterate.d.ts +13 -0
  22. package/dist/iterate/iterate.d.ts.map +1 -0
  23. package/dist/iterate/iterate.js +69 -0
  24. package/dist/iterate/iterate.js.map +1 -0
  25. package/dist/journal/append.d.ts +3 -0
  26. package/dist/journal/append.d.ts.map +1 -0
  27. package/dist/journal/append.js +18 -0
  28. package/dist/journal/append.js.map +1 -0
  29. package/dist/journal/index.d.ts +3 -0
  30. package/dist/journal/index.d.ts.map +1 -0
  31. package/dist/journal/index.js +3 -0
  32. package/dist/journal/index.js.map +1 -0
  33. package/dist/journal/read.d.ts +9 -0
  34. package/dist/journal/read.d.ts.map +1 -0
  35. package/dist/journal/read.js +41 -0
  36. package/dist/journal/read.js.map +1 -0
  37. package/dist/schema/annotation.d.ts +49 -0
  38. package/dist/schema/annotation.d.ts.map +1 -0
  39. package/dist/schema/annotation.js +13 -0
  40. package/dist/schema/annotation.js.map +1 -0
  41. package/dist/schema/entry.d.ts +57 -0
  42. package/dist/schema/entry.d.ts.map +1 -0
  43. package/dist/schema/entry.js +47 -0
  44. package/dist/schema/entry.js.map +1 -0
  45. package/dist/schema/journal-events.d.ts +275 -0
  46. package/dist/schema/journal-events.d.ts.map +1 -0
  47. package/dist/schema/journal-events.js +60 -0
  48. package/dist/schema/journal-events.js.map +1 -0
  49. package/dist/sidecar/index.d.ts +6 -0
  50. package/dist/sidecar/index.d.ts.map +1 -0
  51. package/dist/sidecar/index.js +6 -0
  52. package/dist/sidecar/index.js.map +1 -0
  53. package/dist/sidecar/lookup.d.ts +2 -0
  54. package/dist/sidecar/lookup.d.ts.map +1 -0
  55. package/dist/sidecar/lookup.js +30 -0
  56. package/dist/sidecar/lookup.js.map +1 -0
  57. package/dist/sidecar/paths.d.ts +3 -0
  58. package/dist/sidecar/paths.d.ts.map +1 -0
  59. package/dist/sidecar/paths.js +8 -0
  60. package/dist/sidecar/paths.js.map +1 -0
  61. package/dist/sidecar/read-all.d.ts +14 -0
  62. package/dist/sidecar/read-all.d.ts.map +1 -0
  63. package/dist/sidecar/read-all.js +49 -0
  64. package/dist/sidecar/read-all.js.map +1 -0
  65. package/dist/sidecar/read.d.ts +3 -0
  66. package/dist/sidecar/read.d.ts.map +1 -0
  67. package/dist/sidecar/read.js +30 -0
  68. package/dist/sidecar/read.js.map +1 -0
  69. package/dist/sidecar/write.d.ts +3 -0
  70. package/dist/sidecar/write.d.ts.map +1 -0
  71. package/dist/sidecar/write.js +16 -0
  72. package/dist/sidecar/write.js.map +1 -0
  73. package/package.json +25 -1
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Read every sidecar under `<projectRoot>/.deskwork/entries/*.json`.
3
+ *
4
+ * Used by surfaces that need to enumerate all entries (the studio
5
+ * dashboard, doctor cross-entry checks, doctor calendar regeneration).
6
+ * Malformed JSON or schema-invalid sidecars throw — silently skipping
7
+ * would mask the very corruption doctor is meant to catch.
8
+ *
9
+ * Returns entries in undefined order. Callers that care about ordering
10
+ * (the dashboard groups by stage and sorts by slug) sort downstream.
11
+ */
12
+ import { readdir, readFile } from 'node:fs/promises';
13
+ import { join } from 'node:path';
14
+ import { EntrySchema } from "../schema/entry.js";
15
+ import { sidecarsDir } from "./paths.js";
16
+ export async function readAllSidecars(projectRoot) {
17
+ const dir = sidecarsDir(projectRoot);
18
+ let names;
19
+ try {
20
+ names = await readdir(dir);
21
+ }
22
+ catch (err) {
23
+ const error = err;
24
+ if (error.code === 'ENOENT')
25
+ return [];
26
+ throw err;
27
+ }
28
+ const out = [];
29
+ for (const name of names) {
30
+ if (!name.endsWith('.json'))
31
+ continue;
32
+ const path = join(dir, name);
33
+ const raw = await readFile(path, 'utf8');
34
+ let json;
35
+ try {
36
+ json = JSON.parse(raw);
37
+ }
38
+ catch {
39
+ throw new Error(`sidecar JSON invalid at ${path}`);
40
+ }
41
+ const result = EntrySchema.safeParse(json);
42
+ if (!result.success) {
43
+ throw new Error(`sidecar schema invalid at ${path}: ${result.error.message}`);
44
+ }
45
+ out.push(result.data);
46
+ }
47
+ return out;
48
+ }
49
+ //# sourceMappingURL=read-all.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-all.js","sourceRoot":"","sources":["../../src/sidecar/read-all.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAc,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,WAAmB;IACvD,MAAM,GAAG,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;IACrC,IAAI,KAAe,CAAC;IACpB,IAAI,CAAC;QACH,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,KAAK,GAAG,GAA4B,CAAC;QAC3C,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,EAAE,CAAC;QACvC,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,MAAM,GAAG,GAAY,EAAE,CAAC;IACxB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,SAAS;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC7B,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACzC,IAAI,IAAa,CAAC;QAClB,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,2BAA2B,IAAI,EAAE,CAAC,CAAC;QACrD,CAAC;QACD,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,6BAA6B,IAAI,KAAK,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAChF,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type Entry } from '../schema/entry.ts';
2
+ export declare function readSidecar(projectRoot: string, uuid: string): Promise<Entry>;
3
+ //# sourceMappingURL=read.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/sidecar/read.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAG7D,wBAAsB,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAuBnF"}
@@ -0,0 +1,30 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import { EntrySchema } from "../schema/entry.js";
3
+ import { sidecarPath } from "./paths.js";
4
+ export async function readSidecar(projectRoot, uuid) {
5
+ const path = sidecarPath(projectRoot, uuid);
6
+ let raw;
7
+ try {
8
+ raw = await readFile(path, 'utf8');
9
+ }
10
+ catch (err) {
11
+ const error = err;
12
+ if (error.code === 'ENOENT') {
13
+ throw new Error(`sidecar not found: ${path}`);
14
+ }
15
+ throw err;
16
+ }
17
+ let json;
18
+ try {
19
+ json = JSON.parse(raw);
20
+ }
21
+ catch {
22
+ throw new Error(`sidecar JSON invalid at ${path}`);
23
+ }
24
+ const result = EntrySchema.safeParse(json);
25
+ if (!result.success) {
26
+ throw new Error(`sidecar schema invalid at ${path}: ${result.error.message}`);
27
+ }
28
+ return result.data;
29
+ }
30
+ //# sourceMappingURL=read.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read.js","sourceRoot":"","sources":["../../src/sidecar/read.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAc,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,WAAmB,EAAE,IAAY;IACjE,MAAM,IAAI,GAAG,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAC5C,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,KAAK,GAAG,GAA4B,CAAC;QAC3C,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;QAChD,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;IACD,IAAI,IAAa,CAAC;IAClB,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,2BAA2B,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,6BAA6B,IAAI,KAAK,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAChF,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type Entry } from '../schema/entry.ts';
2
+ export declare function writeSidecar(projectRoot: string, entry: Entry): Promise<void>;
3
+ //# sourceMappingURL=write.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../src/sidecar/write.ts"],"names":[],"mappings":"AAEA,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAG7D,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAUnF"}
@@ -0,0 +1,16 @@
1
+ import { mkdir, rename, writeFile } from 'node:fs/promises';
2
+ import { dirname } from 'node:path';
3
+ import { EntrySchema } from "../schema/entry.js";
4
+ import { sidecarPath } from "./paths.js";
5
+ export async function writeSidecar(projectRoot, entry) {
6
+ const result = EntrySchema.safeParse(entry);
7
+ if (!result.success) {
8
+ throw new Error(`writeSidecar refused: schema invalid: ${result.error.message}`);
9
+ }
10
+ const path = sidecarPath(projectRoot, entry.uuid);
11
+ await mkdir(dirname(path), { recursive: true });
12
+ const tmpPath = `${path}.${process.pid}.tmp`;
13
+ await writeFile(tmpPath, JSON.stringify(entry, null, 2));
14
+ await rename(tmpPath, path);
15
+ }
16
+ //# sourceMappingURL=write.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write.js","sourceRoot":"","sources":["../../src/sidecar/write.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAc,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,WAAmB,EAAE,KAAY;IAClE,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,yCAAyC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACnF,CAAC;IACD,MAAM,IAAI,GAAG,WAAW,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAClD,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,MAAM,CAAC;IAC7C,MAAM,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACzD,MAAM,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC9B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deskwork/core",
3
- "version": "0.10.1",
3
+ "version": "0.11.0",
4
4
  "type": "module",
5
5
  "description": "Editorial calendar + review pipeline library — shared by @deskwork/cli and @deskwork/studio",
6
6
  "homepage": "https://github.com/audiocontrol-org/deskwork#readme",
@@ -60,6 +60,18 @@
60
60
  "types": "./dist/doctor/index.d.ts",
61
61
  "default": "./dist/doctor/index.js"
62
62
  },
63
+ "./doctor/migrate": {
64
+ "types": "./dist/doctor/migrate.d.ts",
65
+ "default": "./dist/doctor/migrate.js"
66
+ },
67
+ "./doctor/validate": {
68
+ "types": "./dist/doctor/validate.d.ts",
69
+ "default": "./dist/doctor/validate.js"
70
+ },
71
+ "./doctor/repair": {
72
+ "types": "./dist/doctor/repair.d.ts",
73
+ "default": "./dist/doctor/repair.js"
74
+ },
63
75
  "./frontmatter": {
64
76
  "types": "./dist/frontmatter.d.ts",
65
77
  "default": "./dist/frontmatter.js"
@@ -76,6 +88,10 @@
76
88
  "types": "./dist/ingest-paths.d.ts",
77
89
  "default": "./dist/ingest-paths.js"
78
90
  },
91
+ "./iterate": {
92
+ "types": "./dist/iterate/iterate.d.ts",
93
+ "default": "./dist/iterate/iterate.js"
94
+ },
79
95
  "./journal": {
80
96
  "types": "./dist/journal.d.ts",
81
97
  "default": "./dist/journal.js"
@@ -128,10 +144,18 @@
128
144
  "types": "./dist/scaffold.d.ts",
129
145
  "default": "./dist/scaffold.js"
130
146
  },
147
+ "./schema/entry": {
148
+ "types": "./dist/schema/entry.d.ts",
149
+ "default": "./dist/schema/entry.js"
150
+ },
131
151
  "./scrapbook": {
132
152
  "types": "./dist/scrapbook.d.ts",
133
153
  "default": "./dist/scrapbook.js"
134
154
  },
155
+ "./sidecar": {
156
+ "types": "./dist/sidecar/index.d.ts",
157
+ "default": "./dist/sidecar/index.js"
158
+ },
135
159
  "./types": {
136
160
  "types": "./dist/types.d.ts",
137
161
  "default": "./dist/types.js"