@ploaness/cli 1.5.0 → 1.7.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/bin.js +17 -13
- package/dist/bin.js.map +1 -1
- package/dist/browser-servers.d.ts +3 -0
- package/dist/browser-servers.d.ts.map +1 -0
- package/dist/browser-servers.js +66 -0
- package/dist/browser-servers.js.map +1 -0
- package/dist/checks/assets.d.ts.map +1 -1
- package/dist/checks/assets.js +2 -2
- package/dist/checks/assets.js.map +1 -1
- package/dist/checks/blocklist.d.ts.map +1 -1
- package/dist/checks/blocklist.js +2 -6
- package/dist/checks/blocklist.js.map +1 -1
- package/dist/checks/container-run.d.ts.map +1 -1
- package/dist/checks/container-run.js +1 -1
- package/dist/checks/container-run.js.map +1 -1
- package/dist/checks/containers.d.ts.map +1 -1
- package/dist/checks/containers.js +7 -12
- package/dist/checks/containers.js.map +1 -1
- package/dist/checks/conventions.d.ts.map +1 -1
- package/dist/checks/conventions.js +4 -9
- package/dist/checks/conventions.js.map +1 -1
- package/dist/checks/dependencies.d.ts.map +1 -1
- package/dist/checks/dependencies.js +10 -17
- package/dist/checks/dependencies.js.map +1 -1
- package/dist/checks/editorconfig.d.ts.map +1 -1
- package/dist/checks/editorconfig.js +2 -2
- package/dist/checks/editorconfig.js.map +1 -1
- package/dist/checks/environment.d.ts +2 -2
- package/dist/checks/environment.d.ts.map +1 -1
- package/dist/checks/environment.js +1 -4
- package/dist/checks/environment.js.map +1 -1
- package/dist/checks/generated.d.ts.map +1 -1
- package/dist/checks/generated.js +1 -1
- package/dist/checks/generated.js.map +1 -1
- package/dist/checks/history.d.ts.map +1 -1
- package/dist/checks/history.js.map +1 -1
- package/dist/checks/images.d.ts.map +1 -1
- package/dist/checks/images.js +10 -10
- package/dist/checks/images.js.map +1 -1
- package/dist/checks/infra.d.ts.map +1 -1
- package/dist/checks/infra.js +5 -13
- package/dist/checks/infra.js.map +1 -1
- package/dist/checks/install.d.ts +3 -3
- package/dist/checks/install.d.ts.map +1 -1
- package/dist/checks/install.js +3 -3
- package/dist/checks/install.js.map +1 -1
- package/dist/checks/integrity.d.ts.map +1 -1
- package/dist/checks/integrity.js.map +1 -1
- package/dist/checks/oci-images.d.ts +6 -0
- package/dist/checks/oci-images.d.ts.map +1 -0
- package/dist/checks/oci-images.js +63 -0
- package/dist/checks/oci-images.js.map +1 -0
- package/dist/checks/oxlint.d.ts.map +1 -1
- package/dist/checks/oxlint.js +7 -6
- package/dist/checks/oxlint.js.map +1 -1
- package/dist/checks/payload.d.ts.map +1 -1
- package/dist/checks/payload.js +29 -38
- package/dist/checks/payload.js.map +1 -1
- package/dist/checks/preflight.d.ts.map +1 -1
- package/dist/checks/preflight.js.map +1 -1
- package/dist/checks/references.d.ts +2 -2
- package/dist/checks/references.d.ts.map +1 -1
- package/dist/checks/references.js +1 -1
- package/dist/checks/references.js.map +1 -1
- package/dist/checks/sbom.d.ts +5 -0
- package/dist/checks/sbom.d.ts.map +1 -0
- package/dist/checks/sbom.js +12 -0
- package/dist/checks/sbom.js.map +1 -0
- package/dist/checks/shell.d.ts.map +1 -1
- package/dist/checks/shell.js +3 -14
- package/dist/checks/shell.js.map +1 -1
- package/dist/checks/suppressions.d.ts.map +1 -1
- package/dist/checks/suppressions.js.map +1 -1
- package/dist/checks/tailwind.d.ts.map +1 -1
- package/dist/checks/tailwind.js +1 -1
- package/dist/checks/tailwind.js.map +1 -1
- package/dist/checks/tests.d.ts +3 -1
- package/dist/checks/tests.d.ts.map +1 -1
- package/dist/checks/tests.js +30 -17
- package/dist/checks/tests.js.map +1 -1
- package/dist/checks/toolchain.d.ts.map +1 -1
- package/dist/checks/toolchain.js +4 -5
- package/dist/checks/toolchain.js.map +1 -1
- package/dist/checks/tree.d.ts.map +1 -1
- package/dist/checks/tree.js +1 -3
- package/dist/checks/tree.js.map +1 -1
- package/dist/checks/wiring.d.ts.map +1 -1
- package/dist/checks/wiring.js +8 -21
- package/dist/checks/wiring.js.map +1 -1
- package/dist/commands/commit-message.d.ts +1 -1
- package/dist/commands/commit-message.d.ts.map +1 -1
- package/dist/commands/commit-message.js +3 -5
- package/dist/commands/commit-message.js.map +1 -1
- package/dist/commands/format.d.ts.map +1 -1
- package/dist/commands/format.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/commands/sbom.d.ts +4 -0
- package/dist/commands/sbom.d.ts.map +1 -0
- package/dist/commands/sbom.js +13 -0
- package/dist/commands/sbom.js.map +1 -0
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/verify.d.ts +3 -3
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +41 -13
- package/dist/commands/verify.js.map +1 -1
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +3 -8
- package/dist/context.js.map +1 -1
- package/dist/exec.d.ts.map +1 -1
- package/dist/exec.js +1 -3
- package/dist/exec.js.map +1 -1
- package/dist/gates.d.ts +3 -3
- package/dist/gates.d.ts.map +1 -1
- package/dist/gates.js +5 -3
- package/dist/gates.js.map +1 -1
- package/dist/probes/payload-defaults.probe.js +4 -9
- package/dist/probes/payload-defaults.probe.js.map +1 -1
- package/dist/report.d.ts.map +1 -1
- package/dist/report.js +2 -3
- package/dist/report.js.map +1 -1
- package/dist/sbom.d.ts +5 -0
- package/dist/sbom.d.ts.map +1 -0
- package/dist/sbom.js +183 -0
- package/dist/sbom.js.map +1 -0
- package/dist/secret-mirror.d.ts.map +1 -1
- package/dist/secret-mirror.js +1 -1
- package/dist/secret-mirror.js.map +1 -1
- package/dist/source-comments.d.ts.map +1 -1
- package/dist/source-comments.js +4 -13
- package/dist/source-comments.js.map +1 -1
- package/dist/working-tree.d.ts.map +1 -1
- package/dist/working-tree.js.map +1 -1
- package/package.json +14 -13
package/dist/bin.js
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import { parseSbomArguments } from '@ploaness/governance';
|
|
2
3
|
import { commitMessage } from './commands/commit-message.js';
|
|
3
4
|
import { format } from './commands/format.js';
|
|
4
5
|
import { init } from './commands/init.js';
|
|
6
|
+
import { sbom } from './commands/sbom.js';
|
|
5
7
|
import { sync } from './commands/sync.js';
|
|
6
8
|
import { verify, verifyOne } from './commands/verify.js';
|
|
7
9
|
// The `ploaness` command. Argument handling is deliberately small: ploaness offers commands, not
|
|
8
10
|
// options that change what is checked. Two flags exist and neither reaches a rule: --enforce=false
|
|
9
11
|
// changes whether findings are fatal, and --verbose changes what is shown. There is no flag that skips
|
|
10
12
|
// a gate.
|
|
11
|
-
import { createRepository
|
|
13
|
+
import { createRepository, memberAt } from './context.js';
|
|
12
14
|
import { ALL_GATES, gateById } from './gates.js';
|
|
13
15
|
// argv begins with the node binary and the script path; the command follows them.
|
|
14
16
|
const ARGV_COMMAND_OFFSET = 2;
|
|
@@ -20,6 +22,7 @@ const USAGE = `ploaness, the quality harness for Payload CMS projects
|
|
|
20
22
|
ploaness format apply formatting and safe fixes
|
|
21
23
|
ploaness sync materialise the managed files
|
|
22
24
|
ploaness init scaffold the consumer wiring
|
|
25
|
+
ploaness sbom --artifact <file> [--output <dir>] export a release dependency inventory
|
|
23
26
|
ploaness gate <id> [--verbose] run one gate, for debugging
|
|
24
27
|
ploaness gates list the gates in run order
|
|
25
28
|
ploaness commit-message <file|--range R|--all> check one message, a range, or the history
|
|
@@ -55,23 +58,24 @@ const listGates = (rest) => {
|
|
|
55
58
|
// A single gate names no member, so a member-scope gate is asked about the package the engineer is
|
|
56
59
|
// standing in. That is the only reading that stays useful in a workspace and is exactly today's
|
|
57
60
|
// behaviour in a single-package repository, where there is one member and it is the root.
|
|
58
|
-
const runOneGate = async (
|
|
61
|
+
const runOneGate = async (repository, id, isVerbose) => {
|
|
59
62
|
const gate = id === undefined ? undefined : gateById(id);
|
|
60
63
|
if (gate === undefined) {
|
|
61
64
|
console.error(`unknown gate "${id ?? ''}". Run \`ploaness gates\` to list them.`);
|
|
62
65
|
return 1;
|
|
63
66
|
}
|
|
64
|
-
const member = gate.scope === 'repository' ? undefined : memberAt(
|
|
65
|
-
return await verifyOne(
|
|
67
|
+
const member = gate.scope === 'repository' ? undefined : memberAt(repository, process.cwd());
|
|
68
|
+
return await verifyOne(repository, { gate, member }, isVerbose);
|
|
66
69
|
};
|
|
67
70
|
const COMMANDS = {
|
|
68
|
-
verify: async (
|
|
69
|
-
format: (
|
|
70
|
-
sync: (
|
|
71
|
-
init: (
|
|
71
|
+
verify: async (repository, rest) => await verify(repository, rest.includes('--extended')),
|
|
72
|
+
format: (repository) => format(repository),
|
|
73
|
+
sync: (repository) => sync(repository),
|
|
74
|
+
init: (repository) => init(repository),
|
|
75
|
+
sbom,
|
|
72
76
|
gates: (_repository, rest) => listGates(rest),
|
|
73
|
-
gate: async (
|
|
74
|
-
'commit-message': (
|
|
77
|
+
gate: async (repository, rest) => await runOneGate(repository, rest[0], rest.includes(VERBOSE_OPTION)),
|
|
78
|
+
'commit-message': (repository, rest) => commitMessage(repository, rest[0], rest[1]),
|
|
75
79
|
};
|
|
76
80
|
// Each command owns its grammar. A global allowlist rejected the documented `commit-message --all` and
|
|
77
81
|
// `--range` modes while accepting `--extended` on commands that do not use it; checking the whole shape
|
|
@@ -80,8 +84,7 @@ const VERIFY_OPTIONS = new Set(['--extended', '--enforce=false']);
|
|
|
80
84
|
const VERBOSE_OPTION = '--verbose';
|
|
81
85
|
const GATE_OPTIONS = new Set([VERBOSE_OPTION]);
|
|
82
86
|
const RANGE_ARGUMENT_COUNT = 2;
|
|
83
|
-
const hasDistinctMembersOf = (values, allowed) => values.every((value) => allowed.has(value)) &&
|
|
84
|
-
new Set(values).size === values.length;
|
|
87
|
+
const hasDistinctMembersOf = (values, allowed) => values.every((value) => allowed.has(value)) && new Set(values).size === values.length;
|
|
85
88
|
const isCommitMessageArguments = (rest) => {
|
|
86
89
|
const [mode, value] = rest;
|
|
87
90
|
if (mode === '--all') {
|
|
@@ -96,6 +99,7 @@ const acceptsArguments = {
|
|
|
96
99
|
format: (rest) => rest.length === 0,
|
|
97
100
|
sync: (rest) => rest.length === 0,
|
|
98
101
|
init: (rest) => rest.length === 0,
|
|
102
|
+
sbom: (rest) => parseSbomArguments(rest) !== undefined,
|
|
99
103
|
// A scope must name one ploaness knows, so a typo lists nothing rather than silently listing
|
|
100
104
|
// everything - which for a script asking "have I missed a gate" would answer yes when it should not.
|
|
101
105
|
gates: (rest) => rest.every((argument) => argument === IDS_OPTION ||
|
|
@@ -131,7 +135,7 @@ const main = async () => {
|
|
|
131
135
|
return 1;
|
|
132
136
|
}
|
|
133
137
|
const isEnforce = !rest.includes('--enforce=false');
|
|
134
|
-
return await runCommand(
|
|
138
|
+
return await runCommand(createRepository(process.cwd(), isEnforce), rest);
|
|
135
139
|
};
|
|
136
140
|
// A command outside a gate has nothing above it to catch a throw, so an unreadable package.json used to
|
|
137
141
|
// reach the user as a stack trace. The message is the finding; the trace is noise around it.
|
package/dist/bin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AACxD,iGAAiG;AACjG,mGAAmG;AACnG,uGAAuG;AACvG,UAAU;AACV,OAAO,
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AACxD,iGAAiG;AACjG,mGAAmG;AACnG,uGAAuG;AACvG,UAAU;AACV,OAAO,EAAE,gBAAgB,EAAe,QAAQ,EAAmB,MAAM,cAAc,CAAA;AACvF,OAAO,EAAE,SAAS,EAAa,QAAQ,EAAE,MAAM,YAAY,CAAA;AAE3D,kFAAkF;AAClF,MAAM,mBAAmB,GAAW,CAAC,CAAA;AACrC,6EAA6E;AAC7E,MAAM,cAAc,GAAW,EAAE,CAAA;AAEjC,MAAM,KAAK,GAAW;;;;;;;;;;;;gFAY0D,CAAA;AAEhF,MAAM,aAAa,GAAwB,IAAI,GAAG,CAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;AAEpF,MAAM,WAAW,GAAwB,IAAI,GAAG,CAAS,CAAC,YAAY,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAA;AAE9F,6EAA6E;AAC7E,MAAM,iBAAiB,GAAW,EAAE,CAAA;AAEpC,qGAAqG;AACrG,mGAAmG;AACnG,uGAAuG;AACvG,iGAAiG;AACjG,MAAM,YAAY,GAAW,UAAU,CAAA;AACvC,MAAM,UAAU,GAAW,OAAO,CAAA;AAElC,MAAM,SAAS,GAAG,CAAC,IAAuB,EAAU,EAAE;IACpD,MAAM,SAAS,GAAuB,IAAI;SACvC,IAAI,CAAC,CAAC,QAAgB,EAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QACvE,EAAE,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;IAC9B,MAAM,QAAQ,GAAoB,SAAS,CAAC,MAAM,CAChD,CAAC,IAAU,EAAW,EAAE,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,CAC7E,CAAA;IACD,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACvB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAW,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAA;YAC9D,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;QAClH,CAAC;IACH,CAAC;IACD,OAAO,CAAC,CAAA;AACV,CAAC,CAAA;AAED,mGAAmG;AACnG,gGAAgG;AAChG,0FAA0F;AAC1F,MAAM,UAAU,GAAG,KAAK,EAAE,UAAsB,EAAE,EAAsB,EAAE,SAAkB,EAAmB,EAAE;IAC/G,MAAM,IAAI,GAAqB,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IAC1E,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,IAAI,EAAE,yCAAyC,CAAC,CAAA;QACjF,OAAO,CAAC,CAAA;IACV,CAAC;IACD,MAAM,MAAM,GAAuB,IAAI,CAAC,KAAK,KAAK,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;IAChH,OAAO,MAAM,SAAS,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,SAAS,CAAC,CAAA;AACjE,CAAC,CAAA;AAMD,MAAM,QAAQ,GAA4C;IACxD,MAAM,EAAE,KAAK,EAAE,UAAsB,EAAE,IAAuB,EAAmB,EAAE,CACjF,MAAM,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACvD,MAAM,EAAE,CAAC,UAAsB,EAAU,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC;IAC9D,IAAI,EAAE,CAAC,UAAsB,EAAU,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;IAC1D,IAAI,EAAE,CAAC,UAAsB,EAAU,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;IAC1D,IAAI;IACJ,KAAK,EAAE,CAAC,WAAuB,EAAE,IAAuB,EAAU,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC;IACpF,IAAI,EAAE,KAAK,EAAE,UAAsB,EAAE,IAAuB,EAAmB,EAAE,CAC/E,MAAM,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IACtE,gBAAgB,EAAE,CAAC,UAAsB,EAAE,IAAuB,EAAU,EAAE,CAC5E,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;CAC9C,CAAA;AAED,uGAAuG;AACvG,wGAAwG;AACxG,4FAA4F;AAC5F,MAAM,cAAc,GAAwB,IAAI,GAAG,CAAS,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC,CAAA;AAC9F,MAAM,cAAc,GAAW,WAAW,CAAA;AAC1C,MAAM,YAAY,GAAwB,IAAI,GAAG,CAAS,CAAC,cAAc,CAAC,CAAC,CAAA;AAC3E,MAAM,oBAAoB,GAAW,CAAC,CAAA;AAEtC,MAAM,oBAAoB,GAAG,CAAC,MAAyB,EAAE,OAA4B,EAAW,EAAE,CAChG,MAAM,CAAC,KAAK,CAAC,CAAC,KAAa,EAAW,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,GAAG,CAAS,MAAM,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,CAAA;AAEhH,MAAM,wBAAwB,GAAG,CAAC,IAAuB,EAAW,EAAE;IACpE,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,IAAI,CAAA;IAC1B,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,CAAA;IAC1B,CAAC;IACD,OAAO,IAAI,KAAK,SAAS;QACvB,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,oBAAoB,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;QACvF,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;AACtE,CAAC,CAAA;AAED,MAAM,gBAAgB,GAAmE;IACvF,MAAM,EAAE,CAAC,IAAuB,EAAW,EAAE,CAAC,oBAAoB,CAAC,IAAI,EAAE,cAAc,CAAC;IACxF,MAAM,EAAE,CAAC,IAAuB,EAAW,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;IAC/D,IAAI,EAAE,CAAC,IAAuB,EAAW,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;IAC7D,IAAI,EAAE,CAAC,IAAuB,EAAW,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;IAC7D,IAAI,EAAE,CAAC,IAAuB,EAAW,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,SAAS;IAClF,6FAA6F;IAC7F,qGAAqG;IACrG,KAAK,EAAE,CAAC,IAAuB,EAAW,EAAE,CAC1C,IAAI,CAAC,KAAK,CACR,CAAC,QAAgB,EAAW,EAAE,CAC5B,QAAQ,KAAK,UAAU;QACvB,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAC9F;IACH,IAAI,EAAE,CAAC,IAAuB,EAAW,EAAE;QACzC,MAAM,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,IAAI,CAAA;QAC7B,OAAO,EAAE,KAAK,SAAS,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,oBAAoB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;IAC/F,CAAC;IACD,gBAAgB,EAAE,wBAAwB;CAC3C,CAAA;AAED,MAAM,IAAI,GAAG,KAAK,IAAqB,EAAE;IACvC,MAAM,IAAI,GAAsB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAA;IACvE,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;IAC/B,IAAI,OAAO,KAAK,SAAS,IAAI,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QACxD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACnB,OAAO,CAAC,CAAA;IACV,CAAC;IACD,qGAAqG;IACrG,yEAAyE;IACzE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC;QACtC,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,QAAQ,KAAK,EAAE,CAAC,CAAA;QACzD,OAAO,CAAC,CAAA;IACV,CAAC;IACD,MAAM,OAAO,GAAuD,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAC7F,MAAM,UAAU,GAAY,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,CAAA;IACpD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,0BAA0B,OAAO,QAAQ,KAAK,EAAE,CAAC,CAAA;QAC/D,OAAO,CAAC,CAAA;IACV,CAAC;IACD,MAAM,UAAU,GAA8B,QAAQ,CAAC,OAAO,CAAC,CAAA;IAC/D,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,QAAQ,KAAK,EAAE,CAAC,CAAA;QACzD,OAAO,CAAC,CAAA;IACV,CAAC;IACD,MAAM,SAAS,GAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAA;IAC5D,OAAO,MAAM,UAAU,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,CAAA;AAC3E,CAAC,CAAA;AAED,wGAAwG;AACxG,6FAA6F;AAC7F,MAAM,aAAa,GAAG,CAAC,KAAc,EAAU,EAAE;IAC/C,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IACrE,OAAO,CAAC,CAAA;AACV,CAAC,CAAA;AAED,oGAAoG;AACpG,kDAAkD;AAClD,EAAE;AACF,qGAAqG;AACrG,kGAAkG;AAClG,wGAAwG;AACxG,yFAAyF;AACzF,sGAAsG;AACtG,mGAAmG;AACnG,MAAM,YAAY,GAAG,KAAK,IAAqB,EAAE;IAC/C,IAAI,CAAC;QACH,OAAO,MAAM,IAAI,EAAE,CAAA;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,aAAa,CAAC,KAAK,CAAC,CAAA;IAC7B,CAAC;AACH,CAAC,CAAA;AAED,OAAO,CAAC,QAAQ,GAAG,MAAM,YAAY,EAAE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser-servers.d.ts","sourceRoot":"","sources":["../src/browser-servers.ts"],"names":[],"mappings":"AAyEA,gFAAgF;AAChF,eAAO,MAAM,qBAAqB,GAAU,MAAM,SAAS,MAAM,EAAE,KAAG,OAAO,CAAC,SAAS,MAAM,EAAE,CAc9F,CAAA"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { lookup } from 'node:dns/promises';
|
|
2
|
+
import { createConnection } from 'node:net';
|
|
3
|
+
import { browserServerConnectionFailure, browserServerEndpoint, browserServerProblem, combineBrowserServerProbes, } from '@ploaness/governance';
|
|
4
|
+
const PROBE_TIMEOUT_MS = 5000;
|
|
5
|
+
const probeAddress = (endpoint, address, signal) => new Promise((resolve) => {
|
|
6
|
+
const socket = createConnection({
|
|
7
|
+
host: address.address,
|
|
8
|
+
family: address.family,
|
|
9
|
+
port: endpoint.port,
|
|
10
|
+
signal,
|
|
11
|
+
});
|
|
12
|
+
socket.once('connect', () => {
|
|
13
|
+
socket.destroy();
|
|
14
|
+
resolve({ status: 'occupied' });
|
|
15
|
+
});
|
|
16
|
+
socket.once('error', (error) => {
|
|
17
|
+
resolve(browserServerConnectionFailure(error.code, error.message));
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
const probeAddresses = async (endpoint, signal) => {
|
|
21
|
+
const addresses = await lookup(endpoint.host, { all: true });
|
|
22
|
+
signal.throwIfAborted();
|
|
23
|
+
return combineBrowserServerProbes(await Promise.all(addresses.map((address) => probeAddress(endpoint, address, signal))));
|
|
24
|
+
};
|
|
25
|
+
const probeEndpoint = async (endpoint) => {
|
|
26
|
+
const controller = new AbortController();
|
|
27
|
+
const timer = setTimeout(() => {
|
|
28
|
+
controller.abort();
|
|
29
|
+
}, PROBE_TIMEOUT_MS);
|
|
30
|
+
const deadline = new Promise((resolve) => {
|
|
31
|
+
controller.signal.addEventListener('abort', () => {
|
|
32
|
+
resolve({
|
|
33
|
+
status: 'unknown',
|
|
34
|
+
detail: `the port check exceeded ${String(PROBE_TIMEOUT_MS)}ms`,
|
|
35
|
+
});
|
|
36
|
+
}, { once: true });
|
|
37
|
+
});
|
|
38
|
+
try {
|
|
39
|
+
return await Promise.race([probeAddresses(endpoint, controller.signal), deadline]);
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
return { status: 'unknown', detail: error instanceof Error ? error.message : String(error) };
|
|
43
|
+
}
|
|
44
|
+
finally {
|
|
45
|
+
clearTimeout(timer);
|
|
46
|
+
controller.abort();
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
/** Check every declared browser endpoint before starting any browser server. */
|
|
50
|
+
export const browserServerProblems = async (urls) => {
|
|
51
|
+
for (const url of urls) {
|
|
52
|
+
try {
|
|
53
|
+
const endpoint = browserServerEndpoint(url);
|
|
54
|
+
const problem = browserServerProblem(endpoint, await probeEndpoint(endpoint));
|
|
55
|
+
if (problem !== undefined) {
|
|
56
|
+
return [problem];
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
const detail = error instanceof Error ? error.message : String(error);
|
|
61
|
+
return [`cannot check browser server ${url}: ${detail}; correct its configured URL and rerun verification`];
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return [];
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=browser-servers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser-servers.js","sourceRoot":"","sources":["../src/browser-servers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../src/checks/assets.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../src/checks/assets.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,KAAK,OAAO,EAAe,KAAK,UAAU,EAAsC,MAAM,eAAe,CAAA;AAC9G,OAAO,EAAU,KAAK,UAAU,EAAU,MAAM,YAAY,CAAA;AAuF5D,mGAAmG;AACnG,eAAO,MAAM,MAAM,GAAI,YAAY,UAAU,KAAG,UA2B/C,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY,GAAI,SAAS,OAAO,KAAG,WAAW,CAAC,MAAM,CAOjE,CAAA;AAED,2DAA2D;AAC3D,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAA;CAC7D;AAoCD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,eAAe,GAAI,QAAQ,MAAM,EAAE,QAAQ,MAAM,KAAG,OAQhE,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,UAAU,GAAI,YAAY,UAAU,KAAG,SAAS,UAAU,EAetE,CAAA;AAED,kFAAkF;AAClF,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,EAAE,WAAW,MAAM,EAAE,MAAM,MAAM,KAAG,OAQ7E,CAAA"}
|
package/dist/checks/assets.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// The managed-file gate and the `ploaness sync` implementation. Both read the same catalogue, so the
|
|
2
2
|
// gate can never disagree with the command that repairs it.
|
|
3
|
-
import { cpSync, existsSync, mkdirSync, readFileSync, rmSync, statSync, writeFileSync
|
|
3
|
+
import { cpSync, existsSync, mkdirSync, readFileSync, rmSync, statSync, writeFileSync } from 'node:fs';
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import { applyManagedSection, findAssetViolations, hasRuntime, isOxlintConfig, memberAssets, memberKindOf, parseManifest, ROOT_MEMBER_PATH, repositoryAssets, syncAction, } from '@ploaness/governance';
|
|
6
|
-
import { shippedDirectory, workingTreeFiles
|
|
6
|
+
import { shippedDirectory, workingTreeFiles } from '../context.js';
|
|
7
7
|
import { failed, passed } from '../exec.js';
|
|
8
8
|
const assetsRoot = () => shippedDirectory('@ploaness/assets');
|
|
9
9
|
const readManifestText = () => readFileSync(path.join(assetsRoot(), 'manifest.tsv'), 'utf8');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assets.js","sourceRoot":"","sources":["../../src/checks/assets.ts"],"names":[],"mappings":"AAAA,qGAAqG;AACrG,4DAA4D;AAC5D,OAAO,
|
|
1
|
+
{"version":3,"file":"assets.js","sourceRoot":"","sources":["../../src/checks/assets.ts"],"names":[],"mappings":"AAAA,qGAAqG;AACrG,4DAA4D;AAC5D,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACtG,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAIL,mBAAmB,EACnB,mBAAmB,EACnB,UAAU,EACV,cAAc,EAEd,YAAY,EACZ,YAAY,EAEZ,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,GAEX,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAA8C,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAC9G,OAAO,EAAE,MAAM,EAAmB,MAAM,EAAE,MAAM,YAAY,CAAA;AAE5D,MAAM,UAAU,GAAG,GAAW,EAAE,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAA;AAErE,MAAM,gBAAgB,GAAG,GAAW,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAA;AAEpG,MAAM,SAAS,GAAG,GAAmB,EAAE,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC,CAAA;AAEzE,yGAAyG;AACzG,yGAAyG;AACzG,+EAA+E;AAC/E,MAAM,QAAQ,GAAG,CAAC,SAAiB,EAAU,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,GAAG,SAAS,QAAQ,CAAC,CAAA;AAEtG,MAAM,WAAW,GAAG,CAAC,SAAiB,EAAsB,EAAE;IAC5D,MAAM,MAAM,GAAW,QAAQ,CAAC,SAAS,CAAC,CAAA;IAC1C,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AACtE,CAAC,CAAA;AAED,qGAAqG;AACrG,sGAAsG;AACtG,6EAA6E;AAC7E,MAAM,QAAQ,GAAwB,IAAI,GAAG,CAAS,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAA;AAEjF,MAAM,gBAAgB,GAAG,CAAC,MAA+B,EAAqB,EAAE,CAC9E,MAAM;KACH,MAAM,CAAC,CAAC,KAAmB,EAAW,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAChH,GAAG,CAAC,CAAC,KAAmB,EAAU,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,4DAA4D,CAAC,CAAA;AAEpH,MAAM,cAAc,GAAG,CAAC,OAAgB,EAAqB,EAAE,CAC7D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,KAAqB,EAAU,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AAErF,uGAAuG;AACvG,wGAAwG;AACxG,oCAAoC;AACpC,MAAM,MAAM,GAAG,CAAC,MAAc,EAAa,EAAE,CAAC,CAAC;IAC7C,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACxD,SAAS,EAAE,MAAM,CAAC,SAAS;CAC5B,CAAC,CAAA;AAUF,MAAM,OAAO,GAAG,CAAC,UAAsB,EAAE,GAA4B,EAAwB,EAAE;IAC7F,MAAM,MAAM,GAAY,UAAU,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAA;IACtD,MAAM,MAAM,GAA4B,gBAAgB,CAAC,GAAG,CAAC,CAAA;IAC7D,qGAAqG;IACrG,sGAAsG;IACtG,4BAA4B;IAC5B,MAAM,SAAS,GAAwB,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAmB,EAAU,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;IACvG,MAAM,UAAU,GAAG,CAAC,MAAc,EAAa,EAAE;QAC/C,MAAM,UAAU,GAA4B,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;QAC7E,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,KAAK,EAAE,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,GAAG;YAC1E,MAAM,EACJ,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI;gBAC7B,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAmB,EAAW,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACjF,CAAC,CAAC,UAAU;YAChB,SAAS,EAAE,cAAc,CAAC,MAAM,CAAC;SAClC,CAAA;IACH,CAAC,CAAA;IACD,OAAO;QACL;YACE,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,MAAM;YACd,SAAS,EAAE,cAAc,CAAC,UAAU,CAAC;SACtC;QACD,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAc,EAAa,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;KAC7E,CAAA;AACH,CAAC,CAAA;AAED,MAAM,OAAO,GACX,CAAC,IAAY,EAAE,EAAE,CACjB,CAAC,SAAiB,EAAc,EAAE;IAChC,MAAM,MAAM,GAAW,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;IACjD,MAAM,QAAQ,GAAY,UAAU,CAAC,MAAM,CAAC,CAAA;IAC5C,uEAAuE;IACvE,MAAM,MAAM,GAAuB,QAAQ,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACnH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,EAAE,CAAA;AAC1E,CAAC,CAAA;AAEH,mGAAmG;AACnG,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,UAAsB,EAAc,EAAE;IAC3D,MAAM,MAAM,GAAmB,SAAS,EAAE,CAAA;IAC1C,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC,0CAA0C,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAA;IAC5E,CAAC;IACD,MAAM,OAAO,GAAsB,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAClE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,MAAM,CAAC,4CAA4C,EAAE;YAC1D,GAAG,OAAO;YACV,gDAAgD;SACjD,CAAC,CAAA;IACJ,CAAC;IACD,MAAM,KAAK,GAAyB,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;IACtE,MAAM,QAAQ,GAAsB;QAClC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,IAAe,EAAqB,EAAE,CACtD,mBAAmB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CACtE,CAAC,SAAyB,EAAU,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,EAAE,CAC7F,CACF;QACD,GAAG,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC;aACjC,MAAM,CAAC,cAAc,CAAC;aACtB,GAAG,CAAC,CAAC,IAAY,EAAU,EAAE,CAAC,GAAG,IAAI,6CAA6C,CAAC;KACvF,CAAA;IACD,MAAM,OAAO,GAAW,KAAK,CAAC,MAAM,CAAC,CAAC,KAAa,EAAE,IAAe,EAAU,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;IAC/G,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC;QACxB,CAAC,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,yBAAyB,EAAE,QAAQ,CAAC;QACvE,CAAC,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAA;AACtE,CAAC,CAAA;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAgB,EAAuB,EAAE;IACpE,MAAM,KAAK,GAAwB,IAAI,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAA;IACnE,OAAO,IAAI,GAAG,CACZ,SAAS,EAAE;SACR,MAAM,CAAC,MAAM,CAAC,CAAC,KAAmB,EAAW,EAAE,CAAC,KAAK,CAAC,WAAW,KAAK,WAAW,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SAC5G,GAAG,CAAC,CAAC,KAAmB,EAAU,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CACpD,CAAA;AACH,CAAC,CAAA;AAQD,MAAM,aAAa,GAAG,CAAC,SAAiB,EAAE,MAAc,EAAE,MAAc,EAA0B,EAAE;IAClG,MAAM,OAAO,GAAW,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAC9E,MAAM,OAAO,GAAuB,mBAAmB,CAAC,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IACrG,sGAAsG;IACtG,iFAAiF;IACjF,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;IAC/C,CAAC;IACD,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACpD,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;AAC/C,CAAC,CAAA;AAED,mFAAmF;AACnF,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,KAAmB,EAA0B,EAAE;IAC5E,MAAM,MAAM,GAAW,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;IAClD,MAAM,MAAM,GAAkC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAA;IACnF,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QAChD,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;IAChD,CAAC;IACD,MAAM,MAAM,GAAW,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC3C,IAAI,MAAM,KAAK,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7C,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,OAAO,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAClD,CAAC;IACD,OAAO,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;AAC5F,CAAC,CAAA;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAc,EAAE,MAAc,EAAW,EAAE;IACzE,MAAM,IAAI,GAAW,YAAY,CAAC,MAAM,CAAC,CAAA;IACzC,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QAC5D,OAAO,KAAK,CAAA;IACd,CAAC;IACD,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACpD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACtB,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,UAAsB,EAAyB,EAAE;IAC1E,MAAM,KAAK,GAAyB,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE,CAAC,MAAM,CAAC,CAAA;IAC3E,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,IAAe,EAAyB,EAAE;QAC9D,MAAM,KAAK,GAAwB,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAC1D,OAAO,IAAI,CAAC,MAAM;aACf,MAAM,CAAC,CAAC,KAAmB,EAAW,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aAChE,GAAG,CAAC,CAAC,KAAmB,EAA0B,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;aAC/E,MAAM,CAAC,CAAC,MAA8B,EAAwB,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC;aACtF,GAAG,CACF,CAAC,MAAkB,EAAc,EAAE,CAAC,CAAC;YACnC,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE;SACpC,CAAC,CACH,CAAA;IACL,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,kFAAkF;AAClF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAY,EAAE,SAAiB,EAAE,IAAY,EAAW,EAAE;IACtF,MAAM,MAAM,GAAW,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;IACjD,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACvB,OAAO,KAAK,CAAA;IACd,CAAC;IACD,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACpD,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC3B,OAAO,IAAI,CAAA;AACb,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blocklist.d.ts","sourceRoot":"","sources":["../../src/checks/blocklist.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,KAAK,OAAO,EAAoB,MAAM,eAAe,CAAA;AAC9D,OAAO,EAAU,KAAK,UAAU,EAA+B,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"blocklist.d.ts","sourceRoot":"","sources":["../../src/checks/blocklist.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,KAAK,OAAO,EAAoB,MAAM,eAAe,CAAA;AAC9D,OAAO,EAAU,KAAK,UAAU,EAA+B,MAAM,YAAY,CAAA;AAiGjF;;;GAGG;AACH,eAAO,MAAM,SAAS,GAAI,SAAS,OAAO,KAAG,UA4B5C,CAAA"}
|
package/dist/checks/blocklist.js
CHANGED
|
@@ -19,9 +19,7 @@ const judgeReference = (location, reference) => {
|
|
|
19
19
|
return [describeRefusal(refusal, location)];
|
|
20
20
|
}
|
|
21
21
|
return isMutableImageReference(reference)
|
|
22
|
-
? [
|
|
23
|
-
`${location}: ${reference} is not pinned to a tag, so what it pulls can change without the repository changing`,
|
|
24
|
-
]
|
|
22
|
+
? [`${location}: ${reference} is not pinned to a tag, so what it pulls can change without the repository changing`]
|
|
25
23
|
: [];
|
|
26
24
|
};
|
|
27
25
|
const readTracked = (context, file) => readFileSync(path.join(context.root, file), 'utf8');
|
|
@@ -41,9 +39,7 @@ const renderCompose = (directory) => {
|
|
|
41
39
|
const modern = run('docker', ['compose', 'config', '--format', 'json'], {
|
|
42
40
|
cwd: directory,
|
|
43
41
|
});
|
|
44
|
-
return modern.code === 0
|
|
45
|
-
? modern
|
|
46
|
-
: run('docker-compose', ['config', '--format', 'json'], { cwd: directory });
|
|
42
|
+
return modern.code === 0 ? modern : run('docker-compose', ['config', '--format', 'json'], { cwd: directory });
|
|
47
43
|
};
|
|
48
44
|
const judgeComposeProject = (context, project) => {
|
|
49
45
|
const rendered = renderCompose(path.join(context.root, project.directory));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blocklist.js","sourceRoot":"","sources":["../../src/checks/blocklist.ts"],"names":[],"mappings":"AAAA,mGAAmG;AACnG,oFAAoF;AAEpF,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAGL,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,qBAAqB,EAErB,6BAA6B,EAC7B,2BAA2B,EAC3B,yBAAyB,EACzB,uBAAuB,EACvB,0BAA0B,EAE1B,WAAW,EACX,uBAAuB,EACvB,oBAAoB,EACpB,WAAW,GACZ,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAgB,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAC9D,OAAO,EAAE,MAAM,EAAmB,MAAM,EAAkB,GAAG,EAAE,MAAM,YAAY,CAAA;AAEjF,MAAM,kBAAkB,GAAW,6BAA6B,CAAA;AAEhE,wGAAwG;AACxG,oGAAoG;AACpG,MAAM,cAAc,GAAG,CAAC,QAAgB,EAAE,SAAiB,EAAqB,EAAE;IAChF,IAAI,qBAAqB,CAAC,SAAS,CAAC,EAAE,CAAC;QACrC,OAAO;YACL,GAAG,QAAQ,KAAK,SAAS,qFAAqF;SAC/G,CAAA;IACH,CAAC;IACD,MAAM,OAAO,GAAwB,WAAW,CAAC,SAAS,CAAC,CAAA;IAC3D,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAA;IAC7C,CAAC;IACD,OAAO,uBAAuB,CAAC,SAAS,CAAC;QACvC,CAAC,CAAC
|
|
1
|
+
{"version":3,"file":"blocklist.js","sourceRoot":"","sources":["../../src/checks/blocklist.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container-run.d.ts","sourceRoot":"","sources":["../../src/checks/container-run.ts"],"names":[],"mappings":"AAKA,OAAO,
|
|
1
|
+
{"version":3,"file":"container-run.d.ts","sourceRoot":"","sources":["../../src/checks/container-run.ts"],"names":[],"mappings":"AAKA,OAAO,EAA+C,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACtG,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAU,KAAK,UAAU,EAAE,KAAK,SAAS,EAAO,MAAM,YAAY,CAAA;AAEzE,8DAA8D;AAC9D,eAAO,MAAM,eAAe,GAAI,SAAS,aAAa,KAAG,UAAuD,CAAA;AAUhH;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,GAAI,SAAS,OAAO,EAAE,OAAO,MAAM,EAAE,MAAM,MAAM,KAAG,UAAU,GAAG,SAUzF,CAAA;AAMD;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,GACtB,SAAS,OAAO,EAChB,OAAO,MAAM,EACb,MAAM,MAAM,EACZ,QAAQ,SAAS,KAChB,UAAU,GAAG,SAMf,CAAA"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// Shared rather than private to one gate: every containerised analyzer needs both answers, and a second
|
|
4
4
|
// copy of either would be a second opinion about what "docker is unavailable" means. The reasoning each
|
|
5
5
|
// carries is the reason it exists, so it travels with the function rather than staying behind.
|
|
6
|
-
import { classifyContainerExit, classifyImageFailure
|
|
6
|
+
import { classifyContainerExit, classifyImageFailure } from '@ploaness/governance';
|
|
7
7
|
import { failed, run } from '../exec.js';
|
|
8
8
|
/** A docker failure, as the verdict a gate returns for it. */
|
|
9
9
|
export const describeFailure = (failure) => failed(failure.summary, failure.remedies);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container-run.js","sourceRoot":"","sources":["../../src/checks/container-run.ts"],"names":[],"mappings":"AAAA,mGAAmG;AACnG,EAAE;AACF,wGAAwG;AACxG,wGAAwG;AACxG,+FAA+F;AAC/F,OAAO,
|
|
1
|
+
{"version":3,"file":"container-run.js","sourceRoot":"","sources":["../../src/checks/container-run.ts"],"names":[],"mappings":"AAAA,mGAAmG;AACnG,EAAE;AACF,wGAAwG;AACxG,wGAAwG;AACxG,+FAA+F;AAC/F,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAsB,MAAM,sBAAsB,CAAA;AAEtG,OAAO,EAAE,MAAM,EAAmC,GAAG,EAAE,MAAM,YAAY,CAAA;AAEzE,8DAA8D;AAC9D,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAsB,EAAc,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;AAEhH,wGAAwG;AACxG,sGAAsG;AACtG,uGAAuG;AACvG,yGAAyG;AACzG,gFAAgF;AAChF,EAAE;AACF,yGAAyG;AACzG,+BAA+B;AAC/B;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAgB,EAAE,KAAa,EAAE,IAAY,EAA0B,EAAE;IACpG,MAAM,OAAO,GAAc,GAAG,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE;QAC3F,GAAG,EAAE,OAAO,CAAC,IAAI;KAClB,CAAC,CAAA;IACF,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,MAAM,MAAM,GAAc,GAAG,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;IAC/E,MAAM,OAAO,GAA8B,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAC7E,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;AACrE,CAAC,CAAA;AAED,0GAA0G;AAC1G,0GAA0G;AAC1G,wGAAwG;AACxG,mDAAmD;AACnD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,OAAgB,EAChB,KAAa,EACb,IAAY,EACZ,MAAiB,EACO,EAAE;IAC1B,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,MAAM,QAAQ,GAA8B,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAC/E,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA;AAChG,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"containers.d.ts","sourceRoot":"","sources":["../../src/checks/containers.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,KAAK,OAAO,EAAoB,MAAM,eAAe,CAAA;AAC9D,OAAO,
|
|
1
|
+
{"version":3,"file":"containers.d.ts","sourceRoot":"","sources":["../../src/checks/containers.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,KAAK,OAAO,EAAoB,MAAM,eAAe,CAAA;AAC9D,OAAO,EAA+B,KAAK,UAAU,EAA+B,MAAM,YAAY,CAAA;AA+EtG,gFAAgF;AAChF,eAAO,MAAM,OAAO,GAAI,SAAS,OAAO,KAAG,UAiBvC,CAAA;AAwFJ,gEAAgE;AAChE,eAAO,MAAM,UAAU,GAAI,SAAS,OAAO,KAAG,UAkC7C,CAAA;AAED,yCAAyC;AACzC,eAAO,MAAM,OAAO,GAAI,SAAS,OAAO,KAAG,UAoB1C,CAAA"}
|
|
@@ -6,7 +6,7 @@ import { homedir } from 'node:os';
|
|
|
6
6
|
import path from 'node:path';
|
|
7
7
|
import { CONTAINER_IMAGES, classifyContainerExit, composeProjectsIn, dockerfilesIn, renderGitleaksConfig, } from '@ploaness/governance';
|
|
8
8
|
import { workingTreeFiles } from '../context.js';
|
|
9
|
-
import { asFindings, failed, fromRun, passed, run
|
|
9
|
+
import { asFindings, failed, fromRun, passed, run } from '../exec.js';
|
|
10
10
|
import { mirrorSecretCandidates } from '../secret-mirror.js';
|
|
11
11
|
import { withWorkflowMirror } from '../workflow-mirror.js';
|
|
12
12
|
import { acquireImage, describeFailure, dockerFault } from './container-run.js';
|
|
@@ -78,9 +78,7 @@ const validateCompose = (directory) => {
|
|
|
78
78
|
const modern = run('sh', ['-c', 'docker compose config > /dev/null'], {
|
|
79
79
|
cwd: directory,
|
|
80
80
|
});
|
|
81
|
-
return modern.code === 0
|
|
82
|
-
? modern
|
|
83
|
-
: run('sh', ['-c', 'docker-compose config > /dev/null'], { cwd: directory });
|
|
81
|
+
return modern.code === 0 ? modern : run('sh', ['-c', 'docker-compose config > /dev/null'], { cwd: directory });
|
|
84
82
|
};
|
|
85
83
|
const validateComposeProjects = (context, projects) => projects.map((project) => ({
|
|
86
84
|
project,
|
|
@@ -106,10 +104,7 @@ const lintDockerfile = (context, target) => run('docker', ['run', '--rm', '-i',
|
|
|
106
104
|
// and its output quotes the project's own YAML. The Dockerfile half asks the further question, once for
|
|
107
105
|
// the whole run rather than once per file - the answer cannot differ between two files linted seconds
|
|
108
106
|
// apart, and asking per file would re-pull an image on every genuine finding.
|
|
109
|
-
const containerFault = (context, linted, validated) => firstReserved([
|
|
110
|
-
...lintResults(linted),
|
|
111
|
-
...validated.map((entry) => entry.result),
|
|
112
|
-
]) ??
|
|
107
|
+
const containerFault = (context, linted, validated) => firstReserved([...lintResults(linted), ...validated.map((entry) => entry.result)]) ??
|
|
113
108
|
(lintResults(linted).some((result) => result.code !== 0)
|
|
114
109
|
? acquireImage(context, HADOLINT_IMAGE, CONTAINER_GATE)
|
|
115
110
|
: undefined);
|
|
@@ -120,9 +115,7 @@ const describeTargets = (dockerfileCount, composeCount) => {
|
|
|
120
115
|
...(dockerfileCount > 0 ? [`${String(dockerfileCount)} Dockerfile(s)`] : []),
|
|
121
116
|
...(composeCount > 0 ? [`${String(composeCount)} compose project(s)`] : []),
|
|
122
117
|
];
|
|
123
|
-
return parts.length === 0
|
|
124
|
-
? 'the project ships no container definition'
|
|
125
|
-
: `${parts.join(' and ')} are valid`;
|
|
118
|
+
return parts.length === 0 ? 'the project ships no container definition' : `${parts.join(' and ')} are valid`;
|
|
126
119
|
};
|
|
127
120
|
/** Lint every Dockerfile and validate every compose project. */
|
|
128
121
|
export const containers = (context) => {
|
|
@@ -162,7 +155,9 @@ export const actions = (context) => {
|
|
|
162
155
|
if (unavailable !== undefined) {
|
|
163
156
|
return unavailable;
|
|
164
157
|
}
|
|
165
|
-
const result = withWorkflowMirror(context.root, workingTreeFiles(context.root), (mirror) => run('docker', ['run', '--rm', '-v', `${mirror}:/repo:ro`, '--workdir', '/repo', ACTIONLINT_IMAGE], {
|
|
158
|
+
const result = withWorkflowMirror(context.root, workingTreeFiles(context.root), (mirror) => run('docker', ['run', '--rm', '-v', `${mirror}:/repo:ro`, '--workdir', '/repo', ACTIONLINT_IMAGE], {
|
|
159
|
+
cwd: context.root,
|
|
160
|
+
}));
|
|
166
161
|
return (dockerFault(context, ACTIONLINT_IMAGE, 'the workflow gate', result) ??
|
|
167
162
|
fromRun(result, 'workflows pass actionlint', 'a workflow does not pass actionlint'));
|
|
168
163
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"containers.js","sourceRoot":"","sources":["../../src/checks/containers.ts"],"names":[],"mappings":"AAAA,wGAAwG;AACxG,wGAAwG;AACxG,uFAAuF;AAEvF,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACjG,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EACL,gBAAgB,EAEhB,qBAAqB,EACrB,iBAAiB,EAEjB,aAAa,EACb,oBAAoB,GACrB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAgB,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAC9D,OAAO,
|
|
1
|
+
{"version":3,"file":"containers.js","sourceRoot":"","sources":["../../src/checks/containers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conventions.d.ts","sourceRoot":"","sources":["../../src/checks/conventions.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,KAAK,OAAO,EAAoB,MAAM,eAAe,CAAA;AAC9D,OAAO,EAAU,KAAK,UAAU,EAAU,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"conventions.d.ts","sourceRoot":"","sources":["../../src/checks/conventions.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,KAAK,OAAO,EAAoB,MAAM,eAAe,CAAA;AAC9D,OAAO,EAAU,KAAK,UAAU,EAAU,MAAM,YAAY,CAAA;AA6E5D;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAI,SAAS,OAAO,KAAG,UAY9C,CAAA"}
|
|
@@ -7,11 +7,8 @@ import path from 'node:path';
|
|
|
7
7
|
import { DOCUMENTED_EXTENSIONS, findOrphanedDocBlocks, findTypographyViolations, hasExtension, isBinary, matchesRole, } from '@ploaness/governance';
|
|
8
8
|
import { workingTreeFiles } from '../context.js';
|
|
9
9
|
import { failed, passed } from '../exec.js';
|
|
10
|
-
//
|
|
11
|
-
//
|
|
12
|
-
// a shell script, and a Dockerfile all went unscanned, and every new text format arrived unscanned
|
|
13
|
-
// until someone remembered this list. The role predicate is default-safe in the other direction - a
|
|
14
|
-
// binary asset is recognised from its own bytes, and everything else is text that gets scanned.
|
|
10
|
+
// Typography reaches text of every extension, including extensionless scripts and configuration.
|
|
11
|
+
// Binary assets are identified from their complete contents through the shared file-role predicate.
|
|
15
12
|
const JAVASCRIPT_EXTENSIONS = ['.js', '.mjs', '.cjs'];
|
|
16
13
|
// Regions a tool rewrites byte for byte on every run, so a local edit is reverted rather than kept and
|
|
17
14
|
// the ban has nothing to enforce against. `next dev` upserts its agent-rules block into AGENTS.md
|
|
@@ -35,8 +32,7 @@ const typographyFindings = (context, tracked) => tracked
|
|
|
35
32
|
`banned ${violation.label}; use ${violation.replacement}`);
|
|
36
33
|
});
|
|
37
34
|
const javascriptFindings = (context, tracked) => tracked
|
|
38
|
-
.filter((file) => hasExtension(file, JAVASCRIPT_EXTENSIONS) &&
|
|
39
|
-
!matchesRole(file, context.settings.javascriptAllowlist))
|
|
35
|
+
.filter((file) => hasExtension(file, JAVASCRIPT_EXTENSIONS) && !matchesRole(file, context.settings.javascriptAllowlist))
|
|
40
36
|
.map((file) => `${file} hand-written JavaScript is banned; write TypeScript instead`);
|
|
41
37
|
// A documenting comment stranded above another one documents nothing, and the symbol it was written
|
|
42
38
|
// for is left with no doc at all. It is scanned here rather than by the lint pass because
|
|
@@ -47,8 +43,7 @@ const javascriptFindings = (context, tracked) => tracked
|
|
|
47
43
|
// scopes the same question: a generated file carries comments its generator wrote, and a project
|
|
48
44
|
// cannot be asked to repair them.
|
|
49
45
|
const orphanedDocFindings = (context, tracked) => tracked
|
|
50
|
-
.filter((file) => hasExtension(file, DOCUMENTED_EXTENSIONS) &&
|
|
51
|
-
!matchesRole(file, context.settings.typographyExclusions))
|
|
46
|
+
.filter((file) => hasExtension(file, DOCUMENTED_EXTENSIONS) && !matchesRole(file, context.settings.typographyExclusions))
|
|
52
47
|
.flatMap((file) => {
|
|
53
48
|
const content = readFileSync(path.join(context.root, file), 'utf8');
|
|
54
49
|
return findOrphanedDocBlocks(content).map((block) => `${file}:${String(block.line)} the doc block ending on line ${String(block.endLine)} ` +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conventions.js","sourceRoot":"","sources":["../../src/checks/conventions.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,mGAAmG;AACnG,cAAc;AACd,4FAA4F;AAC5F,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAC5D,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EACL,qBAAqB,EAErB,qBAAqB,EACrB,wBAAwB,EACxB,YAAY,EACZ,QAAQ,EACR,WAAW,GAEZ,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAgB,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAC9D,OAAO,EAAE,MAAM,EAAmB,MAAM,EAAE,MAAM,YAAY,CAAA;AAE5D,
|
|
1
|
+
{"version":3,"file":"conventions.js","sourceRoot":"","sources":["../../src/checks/conventions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependencies.d.ts","sourceRoot":"","sources":["../../src/checks/dependencies.ts"],"names":[],"mappings":"AA6CA,OAAO,EAAE,KAAK,OAAO,EAAgD,MAAM,eAAe,CAAA;AAC1F,OAAO,
|
|
1
|
+
{"version":3,"file":"dependencies.d.ts","sourceRoot":"","sources":["../../src/checks/dependencies.ts"],"names":[],"mappings":"AA6CA,OAAO,EAAE,KAAK,OAAO,EAAgD,MAAM,eAAe,CAAA;AAC1F,OAAO,EAAU,KAAK,UAAU,EAA2D,MAAM,YAAY,CAAA;AAiB7G,eAAO,MAAM,QAAQ,GAAI,SAAS,OAAO,KAAG,UA8B3C,CAAA;AAiXD,eAAO,MAAM,mBAAmB,GAAU,SAAS,OAAO,KAAG,OAAO,CAAC,UAAU,CA6C9E,CAAA;AA4CD;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,SAAS,OAAO,KAAG,UA8ClD,CAAA"}
|
|
@@ -6,7 +6,7 @@ import { realpathSync } from 'node:fs';
|
|
|
6
6
|
import path from 'node:path';
|
|
7
7
|
import { asRecord, asText, collectCoordinates, findFreshnessViolations, findLicenseViolations, HARNESS_EXCEPTIONS, HARNESS_PACKAGE, hoursPublished, inheritedManifestPaths, isArray, isHarnessRelease, isHarnessRepository, isHeldByReleaseAge, isRecord, judgeVulnerabilities, mapWithConcurrency, NETWORKED_TOOL_TIMEOUT_MS, REGISTRY_CONCURRENCY, RELEASE_AGE_FLOOR_HOURS, REQUEST_TIMEOUT_MS, scopeFreshness, sectionFreshnessReport, } from '@ploaness/governance';
|
|
8
8
|
import { manifestPathFrom, readJson, workingTreeFiles } from '../context.js';
|
|
9
|
-
import { failed, passed, run, TIMED_OUT_CODE, withOutput
|
|
9
|
+
import { failed, passed, run, TIMED_OUT_CODE, withOutput } from '../exec.js';
|
|
10
10
|
import { imageFreshness } from './images.js';
|
|
11
11
|
import { harnessDecidedVersions } from './wiring.js';
|
|
12
12
|
/** Every dependency license must sit inside the allowlist. */
|
|
@@ -26,9 +26,7 @@ export const licenses = (context) => {
|
|
|
26
26
|
// inventory unparseable and this gate blamed the parse rather than the warning.
|
|
27
27
|
const grouped = parseLicenseInventory(result.stdout);
|
|
28
28
|
if (grouped === undefined) {
|
|
29
|
-
return failed('the license inventory was not valid JSON', [
|
|
30
|
-
result.output.slice(0, MAX_REPORTED_CHARS),
|
|
31
|
-
]);
|
|
29
|
+
return failed('the license inventory was not valid JSON', [result.output.slice(0, MAX_REPORTED_CHARS)]);
|
|
32
30
|
}
|
|
33
31
|
const packages = Object.values(grouped)
|
|
34
32
|
.flat()
|
|
@@ -216,7 +214,7 @@ const HARNESS_RELEASE_NOTE = ' - upgrading it is what moves every version ploane
|
|
|
216
214
|
// ordinary update it would bury the one line saying the harness itself is overdue among a dozen saying
|
|
217
215
|
// a patch release exists. What to DO about either is the heading's job, so neither line repeats it: a
|
|
218
216
|
// note on every inherited row was what a consuming project reported as noise.
|
|
219
|
-
const harnessNote = (finding) => isHarnessRelease(finding) ? HARNESS_RELEASE_NOTE : '';
|
|
217
|
+
const harnessNote = (finding) => (isHarnessRelease(finding) ? HARNESS_RELEASE_NOTE : '');
|
|
220
218
|
const describeReported = (finding) => finding.verdict === 'fail'
|
|
221
219
|
? `stale ${describeFinding(finding)}; past the freshness bound`
|
|
222
220
|
: `update ${describeFinding(finding)}${harnessNote(finding)}`;
|
|
@@ -237,9 +235,7 @@ const describeLine = async (finding, repair, now) => {
|
|
|
237
235
|
return describeReported(finding);
|
|
238
236
|
}
|
|
239
237
|
const age = { publishedAt: await publishedAt(finding.name, finding.latest), now };
|
|
240
|
-
return isHeldByReleaseAge(age)
|
|
241
|
-
? describeHeld(finding, hoursPublished(age))
|
|
242
|
-
: describeReported(finding);
|
|
238
|
+
return isHeldByReleaseAge(age) ? describeHeld(finding, hoursPublished(age)) : describeReported(finding);
|
|
243
239
|
};
|
|
244
240
|
// The images ploaness pins are declared in the harness, so in a consumer they sit with the manifests
|
|
245
241
|
// it inherits; in ploaness's own repository they are its own to change like everything else there.
|
|
@@ -250,15 +246,13 @@ const INDENT = ' ';
|
|
|
250
246
|
const describeSection = async (section, images, now) => {
|
|
251
247
|
const described = await mapWithConcurrency(section.findings, REGISTRY_CONCURRENCY, async (finding) => describeLine(finding, section.repair, now));
|
|
252
248
|
const body = [...described, ...images];
|
|
253
|
-
return body.length === 0
|
|
254
|
-
? []
|
|
255
|
-
: [section.heading, ...body.map((line) => `${INDENT}${line}`)];
|
|
249
|
+
return body.length === 0 ? [] : [section.heading, ...body.map((line) => `${INDENT}${line}`)];
|
|
256
250
|
};
|
|
257
251
|
// A blank line between groups and nothing else, so a two-group report is two paragraphs rather than
|
|
258
252
|
// a heading lost in the middle of a list.
|
|
259
253
|
const separated = (groups) => groups
|
|
260
254
|
.filter((group) => group.length > 0)
|
|
261
|
-
.flatMap((group, index) => index === 0 ? group : ['', ...group]);
|
|
255
|
+
.flatMap((group, index) => (index === 0 ? group : ['', ...group]));
|
|
262
256
|
// The groups are described one after another rather than all at once, so the registry sees one
|
|
263
257
|
// group's lookups at a time; only the project's own group asks it anything.
|
|
264
258
|
const ONE_GROUP_AT_A_TIME = 1;
|
|
@@ -349,14 +343,13 @@ export const dependencyFreshness = async (context) => {
|
|
|
349
343
|
];
|
|
350
344
|
const report = findFreshnessViolations(scope.measurable);
|
|
351
345
|
const updates = await describeUpdates(report.reported, ownershipOf(manifests), images, Date.now());
|
|
352
|
-
|
|
353
|
-
|
|
346
|
+
return report.failures.length > 0
|
|
347
|
+
? failed(`${String(report.failures.length)} dependency/dependencies are two or more majors behind`, separated([
|
|
354
348
|
report.failures.map((finding) => describeFinding(finding)),
|
|
355
349
|
updates,
|
|
356
350
|
notes,
|
|
357
|
-
]))
|
|
358
|
-
|
|
359
|
-
return passed(freshnessSummary(statuses, manifests, report, images), separated([updates, notes]));
|
|
351
|
+
]))
|
|
352
|
+
: passed(freshnessSummary(statuses, manifests, report, images), separated([updates, notes]));
|
|
360
353
|
};
|
|
361
354
|
const asStrings = (raw) => isArray(raw) ? raw.filter((entry) => typeof entry === 'string') : [];
|
|
362
355
|
const textAt = (raw, key, fallback) => {
|