@ship-safe/cli 1.1.0 → 1.1.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/index.js +26 -20
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -6908,22 +6908,28 @@ import chalk2 from "chalk";
|
|
|
6908
6908
|
|
|
6909
6909
|
// src/lib/banner.ts
|
|
6910
6910
|
import chalk from "chalk";
|
|
6911
|
-
var
|
|
6912
|
-
var
|
|
6913
|
-
var
|
|
6911
|
+
var PURPLE = chalk.hex("#A855F7");
|
|
6912
|
+
var PURPLE_BOLD = chalk.hex("#A855F7").bold;
|
|
6913
|
+
var DIM_PURPLE = chalk.hex("#C084FC");
|
|
6914
6914
|
function printBanner() {
|
|
6915
6915
|
console.log("");
|
|
6916
6916
|
console.log(
|
|
6917
|
-
|
|
6917
|
+
PURPLE(" \u250F\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2513")
|
|
6918
6918
|
);
|
|
6919
6919
|
console.log(
|
|
6920
|
-
|
|
6920
|
+
PURPLE(" \u2503") + chalk.bold.white(" ") + PURPLE("\u2503")
|
|
6921
6921
|
);
|
|
6922
6922
|
console.log(
|
|
6923
|
-
|
|
6923
|
+
PURPLE(" \u2503") + chalk.bold.white(" ") + PURPLE_BOLD("S H I P S A F E") + chalk.bold.white(" ") + PURPLE("\u2503")
|
|
6924
6924
|
);
|
|
6925
6925
|
console.log(
|
|
6926
|
-
|
|
6926
|
+
PURPLE(" \u2503") + chalk.dim(" Security Scanner for AI-gen code ") + PURPLE("\u2503")
|
|
6927
|
+
);
|
|
6928
|
+
console.log(
|
|
6929
|
+
PURPLE(" \u2503") + chalk.bold.white(" ") + PURPLE("\u2503")
|
|
6930
|
+
);
|
|
6931
|
+
console.log(
|
|
6932
|
+
PURPLE(" \u2517\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u251B")
|
|
6927
6933
|
);
|
|
6928
6934
|
console.log("");
|
|
6929
6935
|
}
|
|
@@ -6963,31 +6969,31 @@ function printScanSummaryBox(stats) {
|
|
|
6963
6969
|
}
|
|
6964
6970
|
function printUpsellBox(criticalHigh) {
|
|
6965
6971
|
console.log("");
|
|
6966
|
-
console.log(
|
|
6972
|
+
console.log(DIM_PURPLE(" \u256D\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256E"));
|
|
6967
6973
|
console.log(
|
|
6968
|
-
|
|
6974
|
+
DIM_PURPLE(" \u2502") + PURPLE_BOLD(" \u{1F512} Unlock AI-Powered Deep Analysis ") + DIM_PURPLE("\u2502")
|
|
6969
6975
|
);
|
|
6970
|
-
console.log(
|
|
6976
|
+
console.log(DIM_PURPLE(" \u2502 \u2502"));
|
|
6971
6977
|
if (criticalHigh > 0) {
|
|
6972
6978
|
console.log(
|
|
6973
|
-
|
|
6979
|
+
DIM_PURPLE(" \u2502 ") + chalk.white(`Found ${criticalHigh} critical/high issues. AI finds`) + " ".repeat(Math.max(0, 46 - `Found ${criticalHigh} critical/high issues. AI finds`.length)) + DIM_PURPLE("\u2502")
|
|
6974
6980
|
);
|
|
6975
6981
|
console.log(
|
|
6976
|
-
|
|
6982
|
+
DIM_PURPLE(" \u2502 ") + chalk.dim("auth logic flaws, business logic bugs & more.") + " ".repeat(3) + DIM_PURPLE("\u2502")
|
|
6977
6983
|
);
|
|
6978
6984
|
} else {
|
|
6979
6985
|
console.log(
|
|
6980
|
-
|
|
6986
|
+
DIM_PURPLE(" \u2502 ") + chalk.dim("Surface scan clean. AI finds auth logic,") + " ".repeat(8) + DIM_PURPLE("\u2502")
|
|
6981
6987
|
);
|
|
6982
6988
|
console.log(
|
|
6983
|
-
|
|
6989
|
+
DIM_PURPLE(" \u2502 ") + chalk.dim("RLS policies & business logic bugs.") + " ".repeat(13) + DIM_PURPLE("\u2502")
|
|
6984
6990
|
);
|
|
6985
6991
|
}
|
|
6986
|
-
console.log(
|
|
6992
|
+
console.log(DIM_PURPLE(" \u2502 \u2502"));
|
|
6987
6993
|
console.log(
|
|
6988
|
-
|
|
6994
|
+
DIM_PURPLE(" \u2502 ") + chalk.white("\u2192 Run ") + PURPLE_BOLD("shipsafe login") + chalk.white(" to get started") + " ".repeat(13) + DIM_PURPLE("\u2502")
|
|
6989
6995
|
);
|
|
6990
|
-
console.log(
|
|
6996
|
+
console.log(DIM_PURPLE(" \u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256F"));
|
|
6991
6997
|
}
|
|
6992
6998
|
|
|
6993
6999
|
// src/lib/output.ts
|
|
@@ -7541,14 +7547,14 @@ async function scanCommand(targetPath, options) {
|
|
|
7541
7547
|
value: "free"
|
|
7542
7548
|
},
|
|
7543
7549
|
{
|
|
7544
|
-
name: `${chalk5.hex("#
|
|
7550
|
+
name: `${chalk5.hex("#A855F7")("\u25B8")} ${chalk5.bold("Login first")} ${chalk5.dim("\u2014 unlock AI-powered deep analysis")}`,
|
|
7545
7551
|
value: "login"
|
|
7546
7552
|
}
|
|
7547
7553
|
],
|
|
7548
7554
|
theme: {
|
|
7549
|
-
prefix: { idle: chalk5.hex("#
|
|
7555
|
+
prefix: { idle: chalk5.hex("#A855F7")(" \u{1F6E1}\uFE0F"), done: chalk5.green(" \u2713") },
|
|
7550
7556
|
style: {
|
|
7551
|
-
highlight: (text) => chalk5.hex("#
|
|
7557
|
+
highlight: (text) => chalk5.hex("#A855F7")(text)
|
|
7552
7558
|
}
|
|
7553
7559
|
}
|
|
7554
7560
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ship-safe/cli",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.1",
|
|
4
4
|
"description": "Security scanner for AI-generated code — find vulnerabilities before you ship",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -51,8 +51,8 @@
|
|
|
51
51
|
"@types/node": "^22",
|
|
52
52
|
"tsup": "^8",
|
|
53
53
|
"typescript": "^5.7",
|
|
54
|
-
"@shipsafe/
|
|
55
|
-
"@shipsafe/
|
|
54
|
+
"@shipsafe/shared": "0.1.0",
|
|
55
|
+
"@shipsafe/scanner": "0.1.0"
|
|
56
56
|
},
|
|
57
57
|
"scripts": {
|
|
58
58
|
"build": "tsup",
|