@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.
- package/dist/calendar/parse.d.ts +24 -0
- package/dist/calendar/parse.d.ts.map +1 -0
- package/dist/calendar/parse.js +64 -0
- package/dist/calendar/parse.js.map +1 -0
- package/dist/calendar/render.d.ts +3 -0
- package/dist/calendar/render.d.ts.map +1 -0
- package/dist/calendar/render.js +46 -0
- package/dist/calendar/render.js.map +1 -0
- package/dist/doctor/migrate.d.ts +11 -0
- package/dist/doctor/migrate.d.ts.map +1 -0
- package/dist/doctor/migrate.js +101 -0
- package/dist/doctor/migrate.js.map +1 -0
- package/dist/doctor/repair.d.ts +9 -0
- package/dist/doctor/repair.d.ts.map +1 -0
- package/dist/doctor/repair.js +35 -0
- package/dist/doctor/repair.js.map +1 -0
- package/dist/doctor/validate.d.ts +11 -0
- package/dist/doctor/validate.d.ts.map +1 -0
- package/dist/doctor/validate.js +405 -0
- package/dist/doctor/validate.js.map +1 -0
- package/dist/iterate/iterate.d.ts +13 -0
- package/dist/iterate/iterate.d.ts.map +1 -0
- package/dist/iterate/iterate.js +69 -0
- package/dist/iterate/iterate.js.map +1 -0
- package/dist/journal/append.d.ts +3 -0
- package/dist/journal/append.d.ts.map +1 -0
- package/dist/journal/append.js +18 -0
- package/dist/journal/append.js.map +1 -0
- package/dist/journal/index.d.ts +3 -0
- package/dist/journal/index.d.ts.map +1 -0
- package/dist/journal/index.js +3 -0
- package/dist/journal/index.js.map +1 -0
- package/dist/journal/read.d.ts +9 -0
- package/dist/journal/read.d.ts.map +1 -0
- package/dist/journal/read.js +41 -0
- package/dist/journal/read.js.map +1 -0
- package/dist/schema/annotation.d.ts +49 -0
- package/dist/schema/annotation.d.ts.map +1 -0
- package/dist/schema/annotation.js +13 -0
- package/dist/schema/annotation.js.map +1 -0
- package/dist/schema/entry.d.ts +57 -0
- package/dist/schema/entry.d.ts.map +1 -0
- package/dist/schema/entry.js +47 -0
- package/dist/schema/entry.js.map +1 -0
- package/dist/schema/journal-events.d.ts +275 -0
- package/dist/schema/journal-events.d.ts.map +1 -0
- package/dist/schema/journal-events.js +60 -0
- package/dist/schema/journal-events.js.map +1 -0
- package/dist/sidecar/index.d.ts +6 -0
- package/dist/sidecar/index.d.ts.map +1 -0
- package/dist/sidecar/index.js +6 -0
- package/dist/sidecar/index.js.map +1 -0
- package/dist/sidecar/lookup.d.ts +2 -0
- package/dist/sidecar/lookup.d.ts.map +1 -0
- package/dist/sidecar/lookup.js +30 -0
- package/dist/sidecar/lookup.js.map +1 -0
- package/dist/sidecar/paths.d.ts +3 -0
- package/dist/sidecar/paths.d.ts.map +1 -0
- package/dist/sidecar/paths.js +8 -0
- package/dist/sidecar/paths.js.map +1 -0
- package/dist/sidecar/read-all.d.ts +14 -0
- package/dist/sidecar/read-all.d.ts.map +1 -0
- package/dist/sidecar/read-all.js +49 -0
- package/dist/sidecar/read-all.js.map +1 -0
- package/dist/sidecar/read.d.ts +3 -0
- package/dist/sidecar/read.d.ts.map +1 -0
- package/dist/sidecar/read.js +30 -0
- package/dist/sidecar/read.js.map +1 -0
- package/dist/sidecar/write.d.ts +3 -0
- package/dist/sidecar/write.d.ts.map +1 -0
- package/dist/sidecar/write.js +16 -0
- package/dist/sidecar/write.js.map +1 -0
- 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 @@
|
|
|
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 @@
|
|
|
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.
|
|
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"
|