guardrail-ship 1.0.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/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/mock-implementation.d.ts +1 -0
- package/dist/mock-implementation.d.ts.map +1 -0
- package/dist/mock-implementation.js +2 -0
- package/dist/mock-implementation.js.map +1 -0
- package/dist/mockproof/__tests__/import-graph-scanner.test.d.ts +5 -0
- package/dist/mockproof/__tests__/import-graph-scanner.test.d.ts.map +1 -0
- package/dist/mockproof/__tests__/import-graph-scanner.test.js +92 -0
- package/dist/mockproof/__tests__/import-graph-scanner.test.js.map +1 -0
- package/dist/mockproof/import-graph-scanner.d.ts +93 -0
- package/dist/mockproof/import-graph-scanner.d.ts.map +1 -0
- package/dist/mockproof/import-graph-scanner.js +411 -0
- package/dist/mockproof/import-graph-scanner.js.map +1 -0
- package/dist/mockproof/index.d.ts +10 -0
- package/dist/mockproof/index.d.ts.map +1 -0
- package/dist/mockproof/index.js +10 -0
- package/dist/mockproof/index.js.map +1 -0
- package/dist/reality-mode/auth-enforcer.d.ts +13 -0
- package/dist/reality-mode/auth-enforcer.d.ts.map +1 -0
- package/dist/reality-mode/auth-enforcer.js +90 -0
- package/dist/reality-mode/auth-enforcer.js.map +1 -0
- package/dist/reality-mode/explorer/critical-flows.d.ts +71 -0
- package/dist/reality-mode/explorer/critical-flows.d.ts.map +1 -0
- package/dist/reality-mode/explorer/critical-flows.js +463 -0
- package/dist/reality-mode/explorer/critical-flows.js.map +1 -0
- package/dist/reality-mode/explorer/flow-parser.d.ts +52 -0
- package/dist/reality-mode/explorer/flow-parser.d.ts.map +1 -0
- package/dist/reality-mode/explorer/flow-parser.js +250 -0
- package/dist/reality-mode/explorer/flow-parser.js.map +1 -0
- package/dist/reality-mode/explorer/index.d.ts +11 -0
- package/dist/reality-mode/explorer/index.d.ts.map +1 -0
- package/dist/reality-mode/explorer/index.js +11 -0
- package/dist/reality-mode/explorer/index.js.map +1 -0
- package/dist/reality-mode/explorer/runtime-explorer.d.ts +35 -0
- package/dist/reality-mode/explorer/runtime-explorer.d.ts.map +1 -0
- package/dist/reality-mode/explorer/runtime-explorer.js +688 -0
- package/dist/reality-mode/explorer/runtime-explorer.js.map +1 -0
- package/dist/reality-mode/explorer/surface-discovery.d.ts +60 -0
- package/dist/reality-mode/explorer/surface-discovery.d.ts.map +1 -0
- package/dist/reality-mode/explorer/surface-discovery.js +357 -0
- package/dist/reality-mode/explorer/surface-discovery.js.map +1 -0
- package/dist/reality-mode/explorer/types.d.ts +275 -0
- package/dist/reality-mode/explorer/types.d.ts.map +1 -0
- package/dist/reality-mode/explorer/types.js +8 -0
- package/dist/reality-mode/explorer/types.js.map +1 -0
- package/dist/reality-mode/fake-success-detector.d.ts +10 -0
- package/dist/reality-mode/fake-success-detector.d.ts.map +1 -0
- package/dist/reality-mode/fake-success-detector.js +76 -0
- package/dist/reality-mode/fake-success-detector.js.map +1 -0
- package/dist/reality-mode/index.d.ts +14 -0
- package/dist/reality-mode/index.d.ts.map +1 -0
- package/dist/reality-mode/index.js +14 -0
- package/dist/reality-mode/index.js.map +1 -0
- package/dist/reality-mode/reality-scanner.d.ts +48 -0
- package/dist/reality-mode/reality-scanner.d.ts.map +1 -0
- package/dist/reality-mode/reality-scanner.js +516 -0
- package/dist/reality-mode/reality-scanner.js.map +1 -0
- package/dist/reality-mode/report-generator.d.ts +11 -0
- package/dist/reality-mode/report-generator.d.ts.map +1 -0
- package/dist/reality-mode/report-generator.js +233 -0
- package/dist/reality-mode/report-generator.js.map +1 -0
- package/dist/reality-mode/traffic-classifier.d.ts +14 -0
- package/dist/reality-mode/traffic-classifier.d.ts.map +1 -0
- package/dist/reality-mode/traffic-classifier.js +131 -0
- package/dist/reality-mode/traffic-classifier.js.map +1 -0
- package/dist/reality-mode/types.d.ts +90 -0
- package/dist/reality-mode/types.d.ts.map +1 -0
- package/dist/reality-mode/types.js +2 -0
- package/dist/reality-mode/types.js.map +1 -0
- package/dist/ship-badge/__tests__/ship-badge-generator.test.d.ts +5 -0
- package/dist/ship-badge/__tests__/ship-badge-generator.test.d.ts.map +1 -0
- package/dist/ship-badge/__tests__/ship-badge-generator.test.js +146 -0
- package/dist/ship-badge/__tests__/ship-badge-generator.test.js.map +1 -0
- package/dist/ship-badge/index.d.ts +9 -0
- package/dist/ship-badge/index.d.ts.map +1 -0
- package/dist/ship-badge/index.js +9 -0
- package/dist/ship-badge/index.js.map +1 -0
- package/dist/ship-badge/ship-badge-generator.d.ts +136 -0
- package/dist/ship-badge/ship-badge-generator.d.ts.map +1 -0
- package/dist/ship-badge/ship-badge-generator.js +681 -0
- package/dist/ship-badge/ship-badge-generator.js.map +1 -0
- package/package.json +20 -0
- package/src/index.ts +7 -0
- package/src/mock-implementation.ts +0 -0
- package/src/mockproof/__tests__/import-graph-scanner.test.ts +115 -0
- package/src/mockproof/import-graph-scanner.d.ts +93 -0
- package/src/mockproof/import-graph-scanner.d.ts.map +1 -0
- package/src/mockproof/import-graph-scanner.js +482 -0
- package/src/mockproof/import-graph-scanner.ts +540 -0
- package/src/mockproof/index.ts +18 -0
- package/src/reality-mode/auth-enforcer.ts +97 -0
- package/src/reality-mode/explorer/critical-flows.ts +504 -0
- package/src/reality-mode/explorer/flow-parser.ts +293 -0
- package/src/reality-mode/explorer/index.ts +22 -0
- package/src/reality-mode/explorer/runtime-explorer.ts +715 -0
- package/src/reality-mode/explorer/surface-discovery.ts +498 -0
- package/src/reality-mode/explorer/templates/example-flows/auth-flow.yaml +41 -0
- package/src/reality-mode/explorer/templates/example-flows/checkout-flow.yaml +66 -0
- package/src/reality-mode/explorer/templates/example-flows/contact-form.yaml +43 -0
- package/src/reality-mode/explorer/templates/github-action.yml +132 -0
- package/src/reality-mode/explorer/types.ts +356 -0
- package/src/reality-mode/fake-success-detector.ts +89 -0
- package/src/reality-mode/index.ts +19 -0
- package/src/reality-mode/reality-scanner.d.ts +123 -0
- package/src/reality-mode/reality-scanner.d.ts.map +1 -0
- package/src/reality-mode/reality-scanner.js +526 -0
- package/src/reality-mode/reality-scanner.ts +576 -0
- package/src/reality-mode/report-generator.ts +253 -0
- package/src/reality-mode/traffic-classifier.ts +169 -0
- package/src/reality-mode/types.ts +95 -0
- package/src/ship-badge/__tests__/ship-badge-generator.test.ts +162 -0
- package/src/ship-badge/index.ts +16 -0
- package/src/ship-badge/ship-badge-generator.d.ts +136 -0
- package/src/ship-badge/ship-badge-generator.d.ts.map +1 -0
- package/src/ship-badge/ship-badge-generator.js +779 -0
- package/src/ship-badge/ship-badge-generator.ts +873 -0
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ship Badge Generator
|
|
3
|
+
*
|
|
4
|
+
* "One-click shareable proof that your app is real."
|
|
5
|
+
*
|
|
6
|
+
* Generates badges + hosted permalinks for:
|
|
7
|
+
* ✅ No Mock Data Detected
|
|
8
|
+
* ✅ No Localhost/Ngrok
|
|
9
|
+
* ✅ All required env vars present
|
|
10
|
+
* ✅ Billing not simulated
|
|
11
|
+
* ✅ DB is real
|
|
12
|
+
* ✅ OAuth callbacks not localhost
|
|
13
|
+
*
|
|
14
|
+
* Vibecoders slap this on README / landing page / Product Hunt for social proof.
|
|
15
|
+
*/
|
|
16
|
+
export interface ShipCheck {
|
|
17
|
+
id: string;
|
|
18
|
+
name: string;
|
|
19
|
+
shortName: string;
|
|
20
|
+
status: "pass" | "fail" | "warning" | "skip";
|
|
21
|
+
message: string;
|
|
22
|
+
details?: string[];
|
|
23
|
+
}
|
|
24
|
+
export interface ShipBadgeResult {
|
|
25
|
+
projectId: string;
|
|
26
|
+
projectName: string;
|
|
27
|
+
verdict: "ship" | "no-ship" | "review";
|
|
28
|
+
score: number;
|
|
29
|
+
checks: ShipCheck[];
|
|
30
|
+
badges: ShipBadges;
|
|
31
|
+
timestamp: string;
|
|
32
|
+
expiresAt: string;
|
|
33
|
+
permalink: string;
|
|
34
|
+
embedCode: string;
|
|
35
|
+
}
|
|
36
|
+
export interface ShipBadges {
|
|
37
|
+
main: string;
|
|
38
|
+
mockData: string;
|
|
39
|
+
realApi: string;
|
|
40
|
+
envVars: string;
|
|
41
|
+
billing: string;
|
|
42
|
+
database: string;
|
|
43
|
+
oauth: string;
|
|
44
|
+
combined: string;
|
|
45
|
+
}
|
|
46
|
+
export interface ShipBadgeConfig {
|
|
47
|
+
projectPath: string;
|
|
48
|
+
projectName?: string;
|
|
49
|
+
checks?: string[];
|
|
50
|
+
outputDir?: string;
|
|
51
|
+
baseUrl?: string;
|
|
52
|
+
}
|
|
53
|
+
export declare class ShipBadgeGenerator {
|
|
54
|
+
/**
|
|
55
|
+
* Run all ship checks and generate badges
|
|
56
|
+
*/
|
|
57
|
+
generateShipBadge(config: ShipBadgeConfig): Promise<ShipBadgeResult>;
|
|
58
|
+
/**
|
|
59
|
+
* Run all ship-worthiness checks
|
|
60
|
+
*/
|
|
61
|
+
private runAllChecks;
|
|
62
|
+
/**
|
|
63
|
+
* Check for mock data patterns
|
|
64
|
+
*/
|
|
65
|
+
private checkNoMockData;
|
|
66
|
+
/**
|
|
67
|
+
* Check for localhost/ngrok URLs
|
|
68
|
+
*/
|
|
69
|
+
private checkNoLocalhost;
|
|
70
|
+
/**
|
|
71
|
+
* Check for required environment variables
|
|
72
|
+
*/
|
|
73
|
+
private checkEnvVars;
|
|
74
|
+
/**
|
|
75
|
+
* Check for real billing (not demo/test)
|
|
76
|
+
*/
|
|
77
|
+
private checkRealBilling;
|
|
78
|
+
/**
|
|
79
|
+
* Check for real database connection
|
|
80
|
+
*/
|
|
81
|
+
private checkRealDatabase;
|
|
82
|
+
/**
|
|
83
|
+
* Check OAuth callback URLs
|
|
84
|
+
*/
|
|
85
|
+
private checkOAuthCallbacks;
|
|
86
|
+
/**
|
|
87
|
+
* Calculate overall verdict
|
|
88
|
+
*/
|
|
89
|
+
private calculateVerdict;
|
|
90
|
+
/**
|
|
91
|
+
* Generate all badge SVGs
|
|
92
|
+
*/
|
|
93
|
+
private generateAllBadges;
|
|
94
|
+
/**
|
|
95
|
+
* Create a single check badge
|
|
96
|
+
*/
|
|
97
|
+
private createCheckBadge;
|
|
98
|
+
/**
|
|
99
|
+
* Create a combined badge strip
|
|
100
|
+
*/
|
|
101
|
+
private createCombinedBadge;
|
|
102
|
+
/**
|
|
103
|
+
* Create SVG badge
|
|
104
|
+
*/
|
|
105
|
+
private createBadge;
|
|
106
|
+
/**
|
|
107
|
+
* Generate embed code for README
|
|
108
|
+
*/
|
|
109
|
+
private generateEmbedCode;
|
|
110
|
+
/**
|
|
111
|
+
* Save badges to directory
|
|
112
|
+
*/
|
|
113
|
+
private saveBadges;
|
|
114
|
+
/**
|
|
115
|
+
* Generate project ID from path
|
|
116
|
+
*/
|
|
117
|
+
private generateProjectId;
|
|
118
|
+
/**
|
|
119
|
+
* Find source files
|
|
120
|
+
*/
|
|
121
|
+
private findSourceFiles;
|
|
122
|
+
/**
|
|
123
|
+
* Check if file is a test file
|
|
124
|
+
*/
|
|
125
|
+
private isTestFile;
|
|
126
|
+
/**
|
|
127
|
+
* Escape HTML entities
|
|
128
|
+
*/
|
|
129
|
+
private escapeHtml;
|
|
130
|
+
/**
|
|
131
|
+
* Generate human-readable report
|
|
132
|
+
*/
|
|
133
|
+
generateReport(result: ShipBadgeResult): string;
|
|
134
|
+
}
|
|
135
|
+
export declare const shipBadgeGenerator: ShipBadgeGenerator;
|
|
136
|
+
//# sourceMappingURL=ship-badge-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ship-badge-generator.d.ts","sourceRoot":"","sources":["ship-badge-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAWD,qBAAa,kBAAkB;IAC7B;;OAEG;IACG,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IA8C1E;;OAEG;YACW,YAAY;IAwB1B;;OAEG;YACW,eAAe;IA8C7B;;OAEG;YACW,gBAAgB;IAmD9B;;OAEG;YACW,YAAY;IAuD1B;;OAEG;YACW,gBAAgB;IA0D9B;;OAEG;YACW,iBAAiB;IAiD/B;;OAEG;YACW,mBAAmB;IAsDjC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAsBxB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAiBzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAgBxB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAW3B;;OAEG;IACH,OAAO,CAAC,WAAW;IAkDnB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAYzB;;OAEG;YACW,UAAU;IAuBxB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAQzB;;OAEG;YACW,eAAe;IAgC7B;;OAEG;IACH,OAAO,CAAC,UAAU;IAclB;;OAEG;IACH,OAAO,CAAC,UAAU;IASlB;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM;CAgDhD;AAED,eAAO,MAAM,kBAAkB,oBAA2B,CAAC"}
|