@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.
Files changed (63) hide show
  1. package/dist/checks/assets.d.ts +12 -0
  2. package/dist/checks/assets.d.ts.map +1 -1
  3. package/dist/checks/assets.js +27 -4
  4. package/dist/checks/assets.js.map +1 -1
  5. package/dist/checks/blocklist.d.ts +8 -0
  6. package/dist/checks/blocklist.d.ts.map +1 -0
  7. package/dist/checks/blocklist.js +106 -0
  8. package/dist/checks/blocklist.js.map +1 -0
  9. package/dist/checks/dependencies.d.ts.map +1 -1
  10. package/dist/checks/dependencies.js +75 -52
  11. package/dist/checks/dependencies.js.map +1 -1
  12. package/dist/checks/editorconfig.js +6 -5
  13. package/dist/checks/editorconfig.js.map +1 -1
  14. package/dist/checks/environment.d.ts.map +1 -1
  15. package/dist/checks/environment.js +4 -10
  16. package/dist/checks/environment.js.map +1 -1
  17. package/dist/checks/install.d.ts +2 -0
  18. package/dist/checks/install.d.ts.map +1 -1
  19. package/dist/checks/install.js +10 -1
  20. package/dist/checks/install.js.map +1 -1
  21. package/dist/checks/oxlint.d.ts +5 -0
  22. package/dist/checks/oxlint.d.ts.map +1 -0
  23. package/dist/checks/oxlint.js +85 -0
  24. package/dist/checks/oxlint.js.map +1 -0
  25. package/dist/checks/payload.d.ts +11 -0
  26. package/dist/checks/payload.d.ts.map +1 -1
  27. package/dist/checks/payload.js +104 -7
  28. package/dist/checks/payload.js.map +1 -1
  29. package/dist/checks/suppressions.d.ts +2 -2
  30. package/dist/checks/suppressions.d.ts.map +1 -1
  31. package/dist/checks/suppressions.js +31 -11
  32. package/dist/checks/suppressions.js.map +1 -1
  33. package/dist/checks/tree.d.ts +1 -1
  34. package/dist/checks/tree.d.ts.map +1 -1
  35. package/dist/checks/tree.js +6 -26
  36. package/dist/checks/tree.js.map +1 -1
  37. package/dist/checks/wiring.d.ts +10 -0
  38. package/dist/checks/wiring.d.ts.map +1 -1
  39. package/dist/checks/wiring.js +16 -4
  40. package/dist/checks/wiring.js.map +1 -1
  41. package/dist/commands/init.d.ts.map +1 -1
  42. package/dist/commands/init.js +1 -3
  43. package/dist/commands/init.js.map +1 -1
  44. package/dist/context.d.ts +1 -23
  45. package/dist/context.d.ts.map +1 -1
  46. package/dist/context.js +9 -34
  47. package/dist/context.js.map +1 -1
  48. package/dist/gates.d.ts.map +1 -1
  49. package/dist/gates.js +37 -12
  50. package/dist/gates.js.map +1 -1
  51. package/dist/probes/payload-defaults.probe.d.ts +2 -0
  52. package/dist/probes/payload-defaults.probe.d.ts.map +1 -0
  53. package/dist/probes/payload-defaults.probe.js +116 -0
  54. package/dist/probes/payload-defaults.probe.js.map +1 -0
  55. package/dist/source-comments.d.ts +9 -0
  56. package/dist/source-comments.d.ts.map +1 -0
  57. package/dist/source-comments.js +54 -0
  58. package/dist/source-comments.js.map +1 -0
  59. package/dist/working-tree.d.ts +5 -0
  60. package/dist/working-tree.d.ts.map +1 -0
  61. package/dist/working-tree.js +36 -0
  62. package/dist/working-tree.js.map +1 -0
  63. 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.1.0",
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.1.0",
36
- "@ploaness/config": "1.1.0",
37
- "@ploaness/governance": "1.1.0",
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.0"
56
+ "@types/node": "26.4.1"
56
57
  },
57
58
  "scripts": {
58
59
  "build": "tsc --build"