@ploaness/cli 1.1.0 → 1.2.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/checks/assets.d.ts +12 -0
- package/dist/checks/assets.d.ts.map +1 -1
- package/dist/checks/assets.js +27 -4
- package/dist/checks/assets.js.map +1 -1
- package/dist/checks/blocklist.d.ts +8 -0
- package/dist/checks/blocklist.d.ts.map +1 -0
- package/dist/checks/blocklist.js +106 -0
- package/dist/checks/blocklist.js.map +1 -0
- package/dist/checks/dependencies.d.ts.map +1 -1
- package/dist/checks/dependencies.js +75 -52
- package/dist/checks/dependencies.js.map +1 -1
- package/dist/checks/editorconfig.js +6 -5
- package/dist/checks/editorconfig.js.map +1 -1
- package/dist/checks/environment.d.ts.map +1 -1
- package/dist/checks/environment.js +4 -10
- package/dist/checks/environment.js.map +1 -1
- package/dist/checks/install.d.ts +2 -0
- package/dist/checks/install.d.ts.map +1 -1
- package/dist/checks/install.js +10 -1
- package/dist/checks/install.js.map +1 -1
- package/dist/checks/oxlint.d.ts +5 -0
- package/dist/checks/oxlint.d.ts.map +1 -0
- package/dist/checks/oxlint.js +85 -0
- package/dist/checks/oxlint.js.map +1 -0
- package/dist/checks/payload.d.ts +11 -0
- package/dist/checks/payload.d.ts.map +1 -1
- package/dist/checks/payload.js +104 -7
- package/dist/checks/payload.js.map +1 -1
- package/dist/checks/suppressions.d.ts +2 -2
- package/dist/checks/suppressions.d.ts.map +1 -1
- package/dist/checks/suppressions.js +31 -11
- package/dist/checks/suppressions.js.map +1 -1
- package/dist/checks/tree.d.ts +1 -1
- package/dist/checks/tree.d.ts.map +1 -1
- package/dist/checks/tree.js +6 -26
- package/dist/checks/tree.js.map +1 -1
- package/dist/checks/wiring.d.ts +10 -0
- package/dist/checks/wiring.d.ts.map +1 -1
- package/dist/checks/wiring.js +16 -4
- package/dist/checks/wiring.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +1 -3
- package/dist/commands/init.js.map +1 -1
- package/dist/context.d.ts +1 -23
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +9 -34
- package/dist/context.js.map +1 -1
- package/dist/gates.d.ts.map +1 -1
- package/dist/gates.js +37 -12
- package/dist/gates.js.map +1 -1
- package/dist/probes/payload-defaults.probe.d.ts +2 -0
- package/dist/probes/payload-defaults.probe.d.ts.map +1 -0
- package/dist/probes/payload-defaults.probe.js +116 -0
- package/dist/probes/payload-defaults.probe.js.map +1 -0
- package/dist/source-comments.d.ts +9 -0
- package/dist/source-comments.d.ts.map +1 -0
- package/dist/source-comments.js +54 -0
- package/dist/source-comments.js.map +1 -0
- package/dist/working-tree.d.ts +5 -0
- package/dist/working-tree.d.ts.map +1 -0
- package/dist/working-tree.js +36 -0
- package/dist/working-tree.js.map +1 -0
- package/package.json +6 -5
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { execFileSync } from 'node:child_process';
|
|
2
|
+
import { createHash } from 'node:crypto';
|
|
3
|
+
import { lstatSync, readFileSync, readlinkSync } from 'node:fs';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
const BYTES_PER_KIB = 1024;
|
|
6
|
+
const KIB_PER_MIB = 1024;
|
|
7
|
+
const MAX_OUTPUT_MIB = 64;
|
|
8
|
+
/** Enumerate tracked and non-ignored untracked paths on each call, including indexed deletions. */
|
|
9
|
+
export const workingTreeFiles = (root) => [
|
|
10
|
+
...new Set(execFileSync('git', ['ls-files', '-z', '--cached', '--others', '--exclude-standard'], {
|
|
11
|
+
cwd: root,
|
|
12
|
+
encoding: 'utf8',
|
|
13
|
+
maxBuffer: MAX_OUTPUT_MIB * KIB_PER_MIB * BYTES_PER_KIB,
|
|
14
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
15
|
+
})
|
|
16
|
+
.split('\0')
|
|
17
|
+
.filter((file) => file !== '')),
|
|
18
|
+
].toSorted((left, right) => left.localeCompare(right, 'en'));
|
|
19
|
+
const fileState = (root, file) => {
|
|
20
|
+
const full = path.join(root, file);
|
|
21
|
+
const stat = lstatSync(full, { throwIfNoEntry: false });
|
|
22
|
+
if (stat === undefined) {
|
|
23
|
+
return [file, 'absent'];
|
|
24
|
+
}
|
|
25
|
+
if (stat.isSymbolicLink()) {
|
|
26
|
+
return [file, 'symlink', readlinkSync(full)];
|
|
27
|
+
}
|
|
28
|
+
return stat.isFile()
|
|
29
|
+
? [file, 'file', stat.mode, createHash('sha256').update(readFileSync(full)).digest('hex')]
|
|
30
|
+
: [file, 'directory'];
|
|
31
|
+
};
|
|
32
|
+
/** Fingerprint paths, file kinds, modes, and bytes without following symbolic links. */
|
|
33
|
+
export const workingTreeFingerprint = (root) => createHash('sha256')
|
|
34
|
+
.update(JSON.stringify(workingTreeFiles(root).map((file) => fileState(root, file))))
|
|
35
|
+
.digest('hex');
|
|
36
|
+
//# sourceMappingURL=working-tree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"working-tree.js","sourceRoot":"","sources":["../src/working-tree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAC/D,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,MAAM,aAAa,GAAW,IAAI,CAAA;AAClC,MAAM,WAAW,GAAW,IAAI,CAAA;AAChC,MAAM,cAAc,GAAW,EAAE,CAAA;AAEjC,mGAAmG;AACnG,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAqB,EAAE,CAClE;IACE,GAAG,IAAI,GAAG,CACR,YAAY,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,oBAAoB,CAAC,EAAE;QACpF,GAAG,EAAE,IAAI;QACT,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,cAAc,GAAG,WAAW,GAAG,aAAa;QACvD,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;KAClC,CAAC;SACC,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,CAAC,IAAY,EAAW,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,CAClD;CACF,CAAC,QAAQ,CAAC,CAAC,IAAY,EAAE,KAAa,EAAU,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;AAEtF,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,IAAY,EAAgC,EAAE;IAC7E,MAAM,IAAI,GAAW,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAC1C,MAAM,IAAI,GAA6C,SAAS,CAAC,IAAI,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAA;IACjG,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IACzB,CAAC;IACD,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;QAC1B,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAA;IAC9C,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,EAAE;QAClB,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1F,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;AACzB,CAAC,CAAA;AAED,wFAAwF;AACxF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,IAAY,EAAU,EAAE,CAC7D,UAAU,CAAC,QAAQ,CAAC;KACjB,MAAM,CACL,IAAI,CAAC,SAAS,CACZ,gBAAgB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAY,EAAgC,EAAE,CACxE,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CACtB,CACF,CACF;KACA,MAAM,CAAC,KAAK,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ploaness/cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "The executable half of ploaness: the verification gates and the commands that run them.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Herman Ciechanowiec <herman@ciechanowiec.eu>",
|
|
@@ -32,13 +32,14 @@
|
|
|
32
32
|
],
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"@biomejs/biome": "2.5.11",
|
|
35
|
-
"@ploaness/assets": "1.
|
|
36
|
-
"@ploaness/config": "1.
|
|
37
|
-
"@ploaness/governance": "1.
|
|
35
|
+
"@ploaness/assets": "1.2.0",
|
|
36
|
+
"@ploaness/config": "1.2.0",
|
|
37
|
+
"@ploaness/governance": "1.2.0",
|
|
38
38
|
"@vitest/coverage-v8": "4.1.11",
|
|
39
39
|
"dependency-cruiser": "18.2.0",
|
|
40
40
|
"eslint": "10.9.1",
|
|
41
41
|
"knip": "6.34.0",
|
|
42
|
+
"oxlint": "1.81.0",
|
|
42
43
|
"stylelint": "17.14.1",
|
|
43
44
|
"tsx": "4.23.13",
|
|
44
45
|
"type-coverage": "2.30.1",
|
|
@@ -52,7 +53,7 @@
|
|
|
52
53
|
"access": "public"
|
|
53
54
|
},
|
|
54
55
|
"devDependencies": {
|
|
55
|
-
"@types/node": "26.4.
|
|
56
|
+
"@types/node": "26.4.1"
|
|
56
57
|
},
|
|
57
58
|
"scripts": {
|
|
58
59
|
"build": "tsc --build"
|