@socketsecurity/cli 1.1.171 → 1.1.173
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/CHANGELOG.md +13 -0
- package/README.md +5 -5
- package/dist/cli.js +71 -26
- package/dist/cli.js.map +1 -1
- package/dist/constants.js +4 -4
- package/dist/constants.js.map +1 -1
- package/dist/manifest-scripts/maven-extension/coana-maven-extension.jar +0 -0
- package/dist/tsconfig.dts.tsbuildinfo +1 -1
- package/dist/types/commands/ci/handle-ci.d.mts.map +1 -1
- package/dist/types/commands/scan/cmd-scan-create.d.mts.map +1 -1
- package/dist/types/commands/scan/cmd-scan-reach.d.mts.map +1 -1
- package/dist/types/commands/scan/handle-create-new-scan.d.mts +1 -0
- package/dist/types/commands/scan/handle-create-new-scan.d.mts.map +1 -1
- package/dist/types/commands/scan/output-create-new-scan.d.mts +7 -0
- package/dist/types/commands/scan/output-create-new-scan.d.mts.map +1 -1
- package/dist/types/commands/scan/reachability-flags.d.mts.map +1 -1
- package/dist/types/utils/coana.d.mts +11 -0
- package/dist/types/utils/coana.d.mts.map +1 -1
- package/dist/utils.js +60 -1
- package/dist/utils.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handle-ci.d.mts","sourceRoot":"","sources":["../../../../src/commands/ci/handle-ci.mts"],"names":[],"mappings":"AAcA;;;;;GAKG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,CAKlD;AAED,wBAAsB,QAAQ,CAAC,YAAY,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"handle-ci.d.mts","sourceRoot":"","sources":["../../../../src/commands/ci/handle-ci.mts"],"names":[],"mappings":"AAcA;;;;;GAKG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,CAKlD;AAED,wBAAsB,QAAQ,CAAC,YAAY,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAuEnE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmd-scan-create.d.mts","sourceRoot":"","sources":["../../../../src/commands/scan/cmd-scan-create.mts"],"names":[],"mappings":"AA4CA,OAAO,KAAK,EAEV,iBAAiB,EAClB,MAAM,uCAAuC,CAAA;AAE9C,eAAO,MAAM,QAAQ,WAAW,CAAA;AA+HhC,eAAO,MAAM,aAAa;;;;CAIzB,CAAA;AAED,iBAAe,GAAG,CAChB,IAAI,EAAE,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE,EAClC,UAAU,EAAE,UAAU,EACtB,EAAE,UAAU,EAAE,EAAE,iBAAiB,GAChC,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"cmd-scan-create.d.mts","sourceRoot":"","sources":["../../../../src/commands/scan/cmd-scan-create.mts"],"names":[],"mappings":"AA4CA,OAAO,KAAK,EAEV,iBAAiB,EAClB,MAAM,uCAAuC,CAAA;AAE9C,eAAO,MAAM,QAAQ,WAAW,CAAA;AA+HhC,eAAO,MAAM,aAAa;;;;CAIzB,CAAA;AAED,iBAAe,GAAG,CAChB,IAAI,EAAE,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE,EAClC,UAAU,EAAE,UAAU,EACtB,EAAE,UAAU,EAAE,EAAE,iBAAiB,GAChC,OAAO,CAAC,IAAI,CAAC,CA+ef"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmd-scan-reach.d.mts","sourceRoot":"","sources":["../../../../src/commands/scan/cmd-scan-reach.mts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAEV,iBAAiB,EAClB,MAAM,uCAAuC,CAAA;AAE9C,eAAO,MAAM,QAAQ,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"cmd-scan-reach.d.mts","sourceRoot":"","sources":["../../../../src/commands/scan/cmd-scan-reach.mts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAEV,iBAAiB,EAClB,MAAM,uCAAuC,CAAA;AAE9C,eAAO,MAAM,QAAQ,UAAU,CAAA;AAiD/B,eAAO,MAAM,YAAY;;;;CAIxB,CAAA;AAED,iBAAe,GAAG,CAChB,IAAI,EAAE,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE,EAClC,UAAU,EAAE,UAAU,EACtB,EAAE,UAAU,EAAE,EAAE,iBAAiB,GAChC,OAAO,CAAC,IAAI,CAAC,CAmOf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handle-create-new-scan.d.mts","sourceRoot":"","sources":["../../../../src/commands/scan/handle-create-new-scan.mts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"handle-create-new-scan.d.mts","sourceRoot":"","sources":["../../../../src/commands/scan/handle-create-new-scan.mts"],"names":[],"mappings":"AAiCA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAA;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sCAAsC,CAAA;AAsCjE,MAAM,MAAM,yBAAyB,GAAG;IACtC,YAAY,EAAE,OAAO,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,GAAG,EAAE,MAAM,CAAA;IACX,aAAa,EAAE,OAAO,CAAA;IACtB,WAAW,EAAE,OAAO,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,OAAO,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,UAAU,CAAA;IACtB,KAAK,EAAE,KAAK,CACV,mBAAmB,GAAG;QACpB,0BAA0B,EAAE,OAAO,CAAA;QACnC,uBAAuB,EAAE,OAAO,CAAA;KACjC,CACF,CAAA;IACD,QAAQ,EAAE,OAAO,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,OAAO,CAAA;IACf,WAAW,EAAE,YAAY,CAAA;IACzB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,GAAG,EAAE,OAAO,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC/B,CAAA;AAED,wBAAsB,mBAAmB,CAAC,EACxC,YAAY,EACZ,UAAU,EACV,UAAU,EACV,aAAa,EACb,UAAU,EACV,GAAG,EACH,aAAa,EACb,WAAW,EACX,OAAO,EACP,UAAU,EACV,WAAW,EACX,WAAW,EACX,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,WAAW,EACX,OAAO,EACP,GAAG,EACH,SAAS,EACV,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsX3C"}
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import type { CResult, OutputKind } from '../../types.mts';
|
|
2
2
|
import type { Spinner } from '@socketsecurity/registry/lib/spinner';
|
|
3
3
|
import type { FullScanResult } from '@socketsecurity/sdk';
|
|
4
|
+
export type ReachabilityFallback = {
|
|
5
|
+
cause?: string | undefined;
|
|
6
|
+
message: string;
|
|
7
|
+
};
|
|
4
8
|
export type CreateNewScanOptions = {
|
|
5
9
|
interactive?: boolean | undefined;
|
|
6
10
|
outputKind?: OutputKind | undefined;
|
|
11
|
+
// Set when --reach-fallback-to-regular-scan downgraded the run, so machine
|
|
12
|
+
// consumers can tell a degraded scan from a full one.
|
|
13
|
+
reachabilityFallback?: ReachabilityFallback | undefined;
|
|
7
14
|
spinner?: Spinner | undefined;
|
|
8
15
|
};
|
|
9
16
|
export declare function outputCreateNewScan(result: CResult<FullScanResult['data']>, options?: CreateNewScanOptions | undefined): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output-create-new-scan.d.mts","sourceRoot":"","sources":["../../../../src/commands/scan/output-create-new-scan.mts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAA;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEzD,MAAM,MAAM,oBAAoB,GAAG;IACjC,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACjC,UAAU,CAAC,EAAE,UAAU,GAAG,SAAS,CAAA;IACnC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CAC9B,CAAA;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,EACvC,OAAO,CAAC,EAAE,oBAAoB,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"output-create-new-scan.d.mts","sourceRoot":"","sources":["../../../../src/commands/scan/output-create-new-scan.mts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAA;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEzD,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1B,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACjC,UAAU,CAAC,EAAE,UAAU,GAAG,SAAS,CAAA;IACnC,2EAA2E;IAC3E,sDAAsD;IACtD,oBAAoB,CAAC,EAAE,oBAAoB,GAAG,SAAS,CAAA;IACvD,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CAC9B,CAAA;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,EACvC,OAAO,CAAC,EAAE,oBAAoB,GAAG,SAAS,iBA6F3C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reachability-flags.d.mts","sourceRoot":"","sources":["../../../../src/commands/scan/reachability-flags.mts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAEhD,8EAA8E;AAC9E,uEAAuE;AACvE,gBAAgB;AAChB,eAAO,MAAM,kCAAkC,oKACoH,CAAA;AAEnK,eAAO,MAAM,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"reachability-flags.d.mts","sourceRoot":"","sources":["../../../../src/commands/scan/reachability-flags.mts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAEhD,8EAA8E;AAC9E,uEAAuE;AACvE,gBAAgB;AAChB,eAAO,MAAM,kCAAkC,oKACoH,CAAA;AAEnK,eAAO,MAAM,iBAAiB,EAAE,SA8H/B,CAAA;AAED,eAAO,MAAM,gBAAgB,EAAE,SAO9B,CAAA"}
|
|
@@ -47,4 +47,15 @@ export declare function extractTier1ReachabilityScanId(socketFactsFile: string):
|
|
|
47
47
|
// and `workspacePath` the workspace within it, so a single-root repo reports
|
|
48
48
|
// `.` as its subproject and must be labelled by its workspace alone.
|
|
49
49
|
export declare function getFullWorkspacePath(subprojectPath: string, workspacePath: string): string;
|
|
50
|
+
export type SnapshotSocketFactsOptions = {
|
|
51
|
+
cwd: string;
|
|
52
|
+
outputPath: string;
|
|
53
|
+
tmpDir: string;
|
|
54
|
+
};
|
|
55
|
+
export type SocketFactsSnapshot = {
|
|
56
|
+
restore: () => Promise<void>;
|
|
57
|
+
};
|
|
58
|
+
// Coana overwrites `.socket.facts.json` in place, so an analysis that fails
|
|
59
|
+
// part way leaves partial output where the scan's inputs used to be.
|
|
60
|
+
export declare function snapshotSocketFacts(scanPaths: string[], options: SnapshotSocketFactsOptions): Promise<SocketFactsSnapshot>;
|
|
50
61
|
//# sourceMappingURL=coana.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coana.d.mts","sourceRoot":"","sources":["../../../src/utils/coana.mts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"coana.d.mts","sourceRoot":"","sources":["../../../src/utils/coana.mts"],"names":[],"mappings":"AAkCA,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7B,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAsB,4BAA4B,CAChD,SAAS,EAAE,MAAM,EAAE,GAClB,OAAO,CAAC,mBAAmB,CAAC,CAgD9B;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,aAAa,EAAE,MAAM,CAAA;IACrB,gBAAgB,EAAE,MAAM,CAAA;IACxB,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,wBAAgB,yBAAyB,CACvC,eAAe,EAAE,MAAM,GACtB,iBAAiB,EAAE,CA4CrB;AAED,wBAAgB,8BAA8B,CAC5C,eAAe,EAAE,MAAM,GACtB,MAAM,GAAG,SAAS,CAQpB;AAED,2EAA2E;AAC3E,6EAA6E;AAC7E,6EAA6E;AAC7E,qEAAqE;AACrE,wBAAgB,oBAAoB,CAClC,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,GACpB,MAAM,CAQR;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7B,CAAA;AAED,4EAA4E;AAC5E,qEAAqE;AACrE,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EAAE,EACnB,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,mBAAmB,CAAC,CAoD9B"}
|
package/dist/utils.js
CHANGED
|
@@ -5035,6 +5035,8 @@ function* walkNestedMap(map, keys = []) {
|
|
|
5035
5035
|
* - extractReachabilityErrors: Extract per-component reachability errors
|
|
5036
5036
|
* - extractTier1ReachabilityScanId: Extract scan ID from socket facts file
|
|
5037
5037
|
* - getFullWorkspacePath: Label a build-root/workspace pair the way Coana does
|
|
5038
|
+
* - snapshotSocketFacts: Copy aside the socket facts files Coana overwrites
|
|
5039
|
+
* in place, so a failed analysis can be rolled back
|
|
5038
5040
|
*
|
|
5039
5041
|
* Integration:
|
|
5040
5042
|
* - Works with @coana-tech/cli for reachability analysis
|
|
@@ -5173,6 +5175,62 @@ function getFullWorkspacePath(subprojectPath, workspacePath) {
|
|
|
5173
5175
|
}
|
|
5174
5176
|
return subproject || workspace || '.';
|
|
5175
5177
|
}
|
|
5178
|
+
// Coana overwrites `.socket.facts.json` in place, so an analysis that fails
|
|
5179
|
+
// part way leaves partial output where the scan's inputs used to be.
|
|
5180
|
+
async function snapshotSocketFacts(scanPaths, options) {
|
|
5181
|
+
const {
|
|
5182
|
+
cwd,
|
|
5183
|
+
outputPath,
|
|
5184
|
+
tmpDir
|
|
5185
|
+
} = {
|
|
5186
|
+
__proto__: null,
|
|
5187
|
+
...options
|
|
5188
|
+
};
|
|
5189
|
+
const sources = new Set(scanPaths.filter(p => path.basename(p) === DOT_SOCKET_DOT_FACTS_JSON).map(p => path.resolve(cwd, p)));
|
|
5190
|
+
sources.add(path.resolve(cwd, outputPath));
|
|
5191
|
+
const snapshotDir = path.join(tmpDir, 'socket-facts-snapshot');
|
|
5192
|
+
await fs$2.mkdir(snapshotDir, {
|
|
5193
|
+
recursive: true
|
|
5194
|
+
});
|
|
5195
|
+
const captured = [];
|
|
5196
|
+
const created = [];
|
|
5197
|
+
await Promise.all(Array.from(sources, async (source, index) => {
|
|
5198
|
+
if (!fs.existsSync(source)) {
|
|
5199
|
+
created.push(source);
|
|
5200
|
+
return;
|
|
5201
|
+
}
|
|
5202
|
+
const backup = path.join(snapshotDir, `${index}.json`);
|
|
5203
|
+
try {
|
|
5204
|
+
await fs$2.copyFile(source, backup);
|
|
5205
|
+
captured.push({
|
|
5206
|
+
backup,
|
|
5207
|
+
source
|
|
5208
|
+
});
|
|
5209
|
+
} catch (e) {
|
|
5210
|
+
// A path we cannot copy is left out of both lists so restore() leaves
|
|
5211
|
+
// it untouched rather than deleting a file it never captured.
|
|
5212
|
+
debug$2.debugFn('warn', `[socket-facts] snapshot failed: ${source}`);
|
|
5213
|
+
debug$2.debugDir('error', e);
|
|
5214
|
+
}
|
|
5215
|
+
}));
|
|
5216
|
+
return {
|
|
5217
|
+
async restore() {
|
|
5218
|
+
await Promise.all([...captured.map(async ({
|
|
5219
|
+
backup,
|
|
5220
|
+
source
|
|
5221
|
+
}) => {
|
|
5222
|
+
try {
|
|
5223
|
+
await fs$2.copyFile(backup, source);
|
|
5224
|
+
} catch (e) {
|
|
5225
|
+
debug$2.debugFn('warn', `[socket-facts] restore failed: ${source}`);
|
|
5226
|
+
debug$2.debugDir('error', e);
|
|
5227
|
+
}
|
|
5228
|
+
}), ...created.map(source => fs$2.rm(source, {
|
|
5229
|
+
force: true
|
|
5230
|
+
}).catch(() => {}))]);
|
|
5231
|
+
}
|
|
5232
|
+
};
|
|
5233
|
+
}
|
|
5176
5234
|
|
|
5177
5235
|
/**
|
|
5178
5236
|
* File system utilities for Socket CLI.
|
|
@@ -9084,6 +9142,7 @@ exports.serializeResultJson = serializeResultJson;
|
|
|
9084
9142
|
exports.setGitRemoteGithubRepoUrl = setGitRemoteGithubRepoUrl;
|
|
9085
9143
|
exports.setupSdk = setupSdk;
|
|
9086
9144
|
exports.setupTelemetryExitHandlers = setupTelemetryExitHandlers;
|
|
9145
|
+
exports.snapshotSocketFacts = snapshotSocketFacts;
|
|
9087
9146
|
exports.socketDashboardLink = socketDashboardLink;
|
|
9088
9147
|
exports.socketDevLink = socketDevLink;
|
|
9089
9148
|
exports.socketDocsLink = socketDocsLink;
|
|
@@ -9104,5 +9163,5 @@ exports.walkNestedMap = walkNestedMap;
|
|
|
9104
9163
|
exports.webLink = webLink;
|
|
9105
9164
|
exports.withTmpDir = withTmpDir;
|
|
9106
9165
|
exports.writeSocketJson = writeSocketJson;
|
|
9107
|
-
//# debugId=
|
|
9166
|
+
//# debugId=b463bffe-59eb-47e2-a92a-0ed72f8d1362
|
|
9108
9167
|
//# sourceMappingURL=utils.js.map
|