ts-reviewer 2.0.0 → 2.0.1
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/cli.js +1 -4
- package/dist/cli.js.map +1 -1
- package/dist/index.js +12 -42
- package/dist/index.js.map +1 -1
- package/dist/io.js +0 -10
- package/dist/io.js.map +1 -1
- package/package.json +2 -1
- package/dist/hash.js +0 -5
- package/dist/hash.js.map +0 -1
- package/dist/incoming.js +0 -28
- package/dist/incoming.js.map +0 -1
- package/dist/meta.js +0 -20
- package/dist/meta.js.map +0 -1
- package/dist/updatePolicy.js +0 -15
- package/dist/updatePolicy.js.map +0 -1
package/dist/cli.js
CHANGED
|
@@ -40,11 +40,8 @@ async function main() {
|
|
|
40
40
|
process.stdout.write(`\n[${providerLabel}]\n`);
|
|
41
41
|
const result = await scaffoldTsReviewerSkill({ cwd, skillName, targetDir });
|
|
42
42
|
for (const e of result.entries) {
|
|
43
|
-
|
|
44
|
-
process.stdout.write(`${e.action}\t${e.relativePath}${suffix}\n`);
|
|
43
|
+
process.stdout.write(`${e.action}\t${e.relativePath}\n`);
|
|
45
44
|
}
|
|
46
|
-
if (result.hadConflicts)
|
|
47
|
-
process.exitCode = 2;
|
|
48
45
|
}
|
|
49
46
|
}
|
|
50
47
|
main().catch((err) => {
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,cAAc,EAAmB,MAAM,YAAY,CAAC;AAE3E,MAAM,UAAU,GAAG,aAAa,CAAC;AACjC,MAAM,YAAY,GAAG,mCAAmC,CAAC;AAEzD,SAAS,SAAS;IAChB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB;QACE,gDAAgD;QAChD,IAAI;QACJ,UAAU;QACV,qBAAqB;QACrB,IAAI;QACJ,YAAY;QACZ,+BAA+B;KAChC,CAAC,IAAI,CAAC,EAAE,CAAC,CACX,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnD,SAAS,EAAE,CAAC;QACZ,OAAO;IACT,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,SAAS,GAAG,UAAU,CAAC;IAE7B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB;QACE,4BAA4B;QAC5B,iJAAiJ;QACjJ,iBAAiB,YAAY,IAAI;QACjC,IAAI;KACL,CAAC,IAAI,CAAC,EAAE,CAAC,CACX,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,WAAW,CAChC,gEAAgE,EAChE,YAAY,CACb,CAAC;IAEF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACvD,OAAO;IACT,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,QAAwB,EAAE,CAAC;QAChD,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC3D,MAAM,aAAa,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAE,CAAC,KAAK,CAAC;QAE5E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,aAAa,KAAK,CAAC,CAAC;QAE/C,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;QAE5E,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YAC/B,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,cAAc,EAAmB,MAAM,YAAY,CAAC;AAE3E,MAAM,UAAU,GAAG,aAAa,CAAC;AACjC,MAAM,YAAY,GAAG,mCAAmC,CAAC;AAEzD,SAAS,SAAS;IAChB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB;QACE,gDAAgD;QAChD,IAAI;QACJ,UAAU;QACV,qBAAqB;QACrB,IAAI;QACJ,YAAY;QACZ,+BAA+B;KAChC,CAAC,IAAI,CAAC,EAAE,CAAC,CACX,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnD,SAAS,EAAE,CAAC;QACZ,OAAO;IACT,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,SAAS,GAAG,UAAU,CAAC;IAE7B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB;QACE,4BAA4B;QAC5B,iJAAiJ;QACjJ,iBAAiB,YAAY,IAAI;QACjC,IAAI;KACL,CAAC,IAAI,CAAC,EAAE,CAAC,CACX,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,WAAW,CAChC,gEAAgE,EAChE,YAAY,CACb,CAAC;IAEF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACvD,OAAO;IACT,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,QAAwB,EAAE,CAAC;QAChD,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC3D,MAAM,aAAa,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAE,CAAC,KAAK,CAAC;QAE5E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,aAAa,KAAK,CAAC,CAAC;QAE/C,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;QAE5E,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAE,GAAa,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAE,GAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACzF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,54 +1,24 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import { existsSync } from "node:fs";
|
|
1
3
|
import path from "node:path";
|
|
2
4
|
import { listSkillAssetTemplates } from "./paths.js";
|
|
3
|
-
import {
|
|
4
|
-
import { sha256Hex } from "./hash.js";
|
|
5
|
-
import { ensureDir, readFileIfExists, atomicWriteFile } from "./io.js";
|
|
6
|
-
import { decideUpdate } from "./updatePolicy.js";
|
|
7
|
-
import { findAvailableIncomingPath } from "./incoming.js";
|
|
5
|
+
import { ensureDir, atomicWriteFile } from "./io.js";
|
|
8
6
|
export async function scaffoldTsReviewerSkill(opts) {
|
|
9
|
-
const skillName = opts
|
|
10
|
-
const targetDir = opts.targetDir;
|
|
7
|
+
const { cwd, skillName, targetDir } = opts;
|
|
11
8
|
await ensureDir(targetDir);
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
// Provenance file written by <=2.0.0, when the installer tracked hashes to avoid
|
|
10
|
+
// overwriting local edits. Skill files are generated, so they are always replaced now.
|
|
11
|
+
await fs.rm(path.join(targetDir, ".scaffold-meta.json"), { force: true });
|
|
14
12
|
const entries = [];
|
|
15
|
-
let hadConflicts = false;
|
|
16
13
|
for (const t of listSkillAssetTemplates(skillName)) {
|
|
17
|
-
const relativePath = path.relative(opts.cwd, path.join(targetDir, t.fileName)).replace(/\\/g, "/");
|
|
18
14
|
const dstPath = path.join(targetDir, t.fileName);
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
const existing = await readFileIfExists(dstPath);
|
|
22
|
-
const existingHash = existing === null ? null : sha256Hex(existing);
|
|
23
|
-
const lastWrittenHash = meta.files[t.fileName]?.lastWrittenHash ?? null;
|
|
24
|
-
const decision = decideUpdate({ existingHash, lastWrittenHash });
|
|
25
|
-
if (decision.kind === "write") {
|
|
26
|
-
await atomicWriteFile(dstPath, desired);
|
|
27
|
-
meta.files[t.fileName] = { lastWrittenHash: desiredHash };
|
|
28
|
-
entries.push({ action: "WROTE", relativePath });
|
|
29
|
-
continue;
|
|
30
|
-
}
|
|
31
|
-
if (decision.kind === "overwrite") {
|
|
32
|
-
await atomicWriteFile(dstPath, desired);
|
|
33
|
-
meta.files[t.fileName] = { lastWrittenHash: desiredHash };
|
|
34
|
-
entries.push({ action: "UPDATED", relativePath });
|
|
35
|
-
continue;
|
|
36
|
-
}
|
|
37
|
-
if (decision.kind === "skip") {
|
|
38
|
-
entries.push({ action: "SKIPPED", relativePath });
|
|
39
|
-
continue;
|
|
40
|
-
}
|
|
41
|
-
// conflict
|
|
42
|
-
hadConflicts = true;
|
|
43
|
-
const incomingPath = await findAvailableIncomingPath(dstPath);
|
|
44
|
-
await atomicWriteFile(incomingPath, desired);
|
|
15
|
+
const action = existsSync(dstPath) ? "UPDATED" : "WROTE";
|
|
16
|
+
await atomicWriteFile(dstPath, t.content);
|
|
45
17
|
entries.push({
|
|
46
|
-
action
|
|
47
|
-
relativePath,
|
|
48
|
-
detail: path.basename(incomingPath),
|
|
18
|
+
action,
|
|
19
|
+
relativePath: path.relative(cwd, dstPath).replace(/\\/g, "/"),
|
|
49
20
|
});
|
|
50
21
|
}
|
|
51
|
-
|
|
52
|
-
return { entries, hadConflicts };
|
|
22
|
+
return { entries };
|
|
53
23
|
}
|
|
54
24
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAarD,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,IAA2D;IACvG,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IAC3C,MAAM,SAAS,CAAC,SAAS,CAAC,CAAC;IAE3B,iFAAiF;IACjF,uFAAuF;IACvF,MAAM,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAE1E,MAAM,OAAO,GAAoB,EAAE,CAAC;IAEpC,KAAK,MAAM,CAAC,IAAI,uBAAuB,CAAC,SAAS,CAAC,EAAE,CAAC;QACnD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,MAAM,GAAmB,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;QAEzE,MAAM,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QAE1C,OAAO,CAAC,IAAI,CAAC;YACX,MAAM;YACN,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SAC9D,CAAC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,CAAC;AACrB,CAAC"}
|
package/dist/io.js
CHANGED
|
@@ -3,16 +3,6 @@ import path from "node:path";
|
|
|
3
3
|
export async function ensureDir(dirPath) {
|
|
4
4
|
await fs.mkdir(dirPath, { recursive: true });
|
|
5
5
|
}
|
|
6
|
-
export async function readFileIfExists(filePath) {
|
|
7
|
-
try {
|
|
8
|
-
return await fs.readFile(filePath, "utf8");
|
|
9
|
-
}
|
|
10
|
-
catch (e) {
|
|
11
|
-
if (e && (e.code === "ENOENT" || e.code === "ENOTDIR"))
|
|
12
|
-
return null;
|
|
13
|
-
throw e;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
6
|
export async function atomicWriteFile(filePath, content) {
|
|
17
7
|
const dir = path.dirname(filePath);
|
|
18
8
|
await ensureDir(dir);
|
package/dist/io.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"io.js","sourceRoot":"","sources":["../src/io.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAe;IAC7C,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,
|
|
1
|
+
{"version":3,"file":"io.js","sourceRoot":"","sources":["../src/io.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAe;IAC7C,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAAgB,EAAE,OAAe;IACrE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnC,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC;IAErB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC3F,MAAM,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAEzC,IAAI,CAAC;QACH,4DAA4D;QAC5D,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;YAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AACjC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ts-reviewer",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.1",
|
|
4
4
|
"description": "Install the TypeScript Code Reviewer skill for Claude Code, Codex, or Antigravity",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
},
|
|
21
21
|
"scripts": {
|
|
22
22
|
"build": "tsc -p tsconfig.json",
|
|
23
|
+
"prepublishOnly": "npm run build && npm test",
|
|
23
24
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
24
25
|
"test": "npm run typecheck && node --test cnlp/skill-format.test.js",
|
|
25
26
|
"dev": "npm run build && node --enable-source-maps dist/cli.js"
|
package/dist/hash.js
DELETED
package/dist/hash.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hash.js","sourceRoot":"","sources":["../src/hash.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzE,CAAC"}
|
package/dist/incoming.js
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import fs from "node:fs/promises";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
async function exists(p) {
|
|
4
|
-
try {
|
|
5
|
-
await fs.stat(p);
|
|
6
|
-
return true;
|
|
7
|
-
}
|
|
8
|
-
catch (e) {
|
|
9
|
-
if (e && e.code === "ENOENT")
|
|
10
|
-
return false;
|
|
11
|
-
throw e;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
export async function findAvailableIncomingPath(dstPath) {
|
|
15
|
-
const dir = path.dirname(dstPath);
|
|
16
|
-
const base = path.basename(dstPath);
|
|
17
|
-
const first = path.join(dir, `${base}.incoming`);
|
|
18
|
-
if (!(await exists(first)))
|
|
19
|
-
return first;
|
|
20
|
-
for (let i = 2; i < 1000; i++) {
|
|
21
|
-
const p = path.join(dir, `${base}.incoming${i}`);
|
|
22
|
-
if (!(await exists(p)))
|
|
23
|
-
return p;
|
|
24
|
-
}
|
|
25
|
-
// should never happen
|
|
26
|
-
return path.join(dir, `${base}.incoming-${Date.now()}`);
|
|
27
|
-
}
|
|
28
|
-
//# sourceMappingURL=incoming.js.map
|
package/dist/incoming.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"incoming.js","sourceRoot":"","sources":["../src/incoming.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,KAAK,UAAU,MAAM,CAAC,CAAS;IAC7B,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC3C,MAAM,CAAC,CAAC;IACV,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,OAAe;IAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAEpC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,WAAW,CAAC,CAAC;IACjD,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAEzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;IACnC,CAAC;IAED,sBAAsB;IACtB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,aAAa,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAC1D,CAAC"}
|
package/dist/meta.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import fs from "node:fs/promises";
|
|
2
|
-
export async function readMeta(metaPath) {
|
|
3
|
-
try {
|
|
4
|
-
const raw = await fs.readFile(metaPath, "utf8");
|
|
5
|
-
const parsed = JSON.parse(raw);
|
|
6
|
-
if (!parsed || parsed.version !== 1 || typeof parsed.files !== "object")
|
|
7
|
-
return null;
|
|
8
|
-
return parsed;
|
|
9
|
-
}
|
|
10
|
-
catch (e) {
|
|
11
|
-
if (e && e.code === "ENOENT")
|
|
12
|
-
return null;
|
|
13
|
-
throw e;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
export async function writeMeta(metaPath, meta) {
|
|
17
|
-
const body = JSON.stringify(meta, null, 2) + "\n";
|
|
18
|
-
await fs.writeFile(metaPath, body, "utf8");
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=meta.js.map
|
package/dist/meta.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"meta.js","sourceRoot":"","sources":["../src/meta.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAOlC,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,QAAgB;IAC7C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QACrF,OAAO,MAAsB,CAAC;IAChC,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC1C,MAAM,CAAC,CAAC;IACV,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,QAAgB,EAAE,IAAkB;IAClE,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;IAClD,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAC7C,CAAC"}
|
package/dist/updatePolicy.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
// Inputs are hashes (sha256 hex) or null if missing.
|
|
2
|
-
export function decideUpdate(opts) {
|
|
3
|
-
const { existingHash, lastWrittenHash } = opts;
|
|
4
|
-
// missing file
|
|
5
|
-
if (existingHash === null)
|
|
6
|
-
return { kind: "write" };
|
|
7
|
-
// file exists but we don't know provenance => never overwrite
|
|
8
|
-
if (lastWrittenHash === null)
|
|
9
|
-
return { kind: "conflict" };
|
|
10
|
-
// safe overwrite only if user hasn't modified since last scaffold
|
|
11
|
-
if (existingHash === lastWrittenHash)
|
|
12
|
-
return { kind: "overwrite" };
|
|
13
|
-
return { kind: "conflict" };
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=updatePolicy.js.map
|
package/dist/updatePolicy.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"updatePolicy.js","sourceRoot":"","sources":["../src/updatePolicy.ts"],"names":[],"mappings":"AAMA,qDAAqD;AACrD,MAAM,UAAU,YAAY,CAAC,IAG5B;IACC,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;IAE/C,eAAe;IACf,IAAI,YAAY,KAAK,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAEpD,8DAA8D;IAC9D,IAAI,eAAe,KAAK,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAE1D,kEAAkE;IAClE,IAAI,YAAY,KAAK,eAAe;QAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IAEnE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AAC9B,CAAC"}
|