specshield 1.0.0 → 1.0.2
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/README.md +60 -10
- package/package.json +38 -6
package/README.md
CHANGED
|
@@ -1,16 +1,66 @@
|
|
|
1
|
-
# SpecShield CLI
|
|
1
|
+
# 🚀 SpecShield — OpenAPI Diff & Breaking Change Detection CLI
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+

|
|
4
|
+

|
|
5
|
+

|
|
6
|
+

|
|
4
7
|
|
|
5
|
-
|
|
8
|
+
Compare OpenAPI and Swagger specs, detect breaking changes, and fail CI before incompatible API changes reach production.
|
|
6
9
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
10
|
+
|
|
11
|
+
## 📌 What is SpecShield?
|
|
12
|
+
|
|
13
|
+
SpecShield is a CLI tool that compares two OpenAPI/Swagger specifications and detects:
|
|
14
|
+
|
|
15
|
+
- ❌ Breaking changes
|
|
16
|
+
- ➕ Additions
|
|
17
|
+
- 🔄 Modifications
|
|
18
|
+
|
|
19
|
+
It is designed for:
|
|
20
|
+
- CI/CD pipelines
|
|
21
|
+
- Backend developers
|
|
22
|
+
- API governance teams
|
|
23
|
+
- Local development workflows
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## ❗ Why SpecShield?
|
|
28
|
+
|
|
29
|
+
API changes can silently break:
|
|
30
|
+
- Mobile apps
|
|
31
|
+
- Frontend clients
|
|
32
|
+
- Partner integrations
|
|
33
|
+
- Internal microservices
|
|
34
|
+
|
|
35
|
+
Manual API review is:
|
|
36
|
+
- ❌ Error-prone
|
|
37
|
+
- ❌ Time-consuming
|
|
38
|
+
- ❌ Not scalable
|
|
39
|
+
|
|
40
|
+
👉 SpecShield solves this by automating API contract validation.
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## 🎯 Key Benefits
|
|
45
|
+
|
|
46
|
+
- 🚫 Prevent breaking API releases
|
|
47
|
+
- ⚙️ Enforce API contract checks in CI/CD
|
|
48
|
+
- 🔍 Compare OpenAPI specs automatically
|
|
49
|
+
- 📊 Generate machine-readable reports
|
|
50
|
+
- 🧩 Integrate easily with existing workflows
|
|
51
|
+
- 🛑 Fail builds when breaking changes are detected
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## ✨ Features
|
|
56
|
+
|
|
57
|
+
- Detect breaking changes, additions, and modifications
|
|
58
|
+
- Support YAML and JSON OpenAPI specs
|
|
59
|
+
- CI/CD-ready with exit codes
|
|
60
|
+
- JSON output for automation
|
|
61
|
+
- `.specshield.yml` config support
|
|
62
|
+
- Ignore list for known changes
|
|
63
|
+
- Future SaaS-ready remote mode
|
|
14
64
|
|
|
15
65
|
## Installation
|
|
16
66
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "specshield",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "CLI
|
|
3
|
+
"version": "1.0.2",
|
|
4
|
+
"description": "CLI to compare OpenAPI/Swagger specs and detect breaking changes for CI/CD pipelines and local developer workflows.",
|
|
5
5
|
"main": "src/cli.js",
|
|
6
6
|
"bin": {
|
|
7
7
|
"specshield": "./bin/specshield.js"
|
|
@@ -12,9 +12,37 @@
|
|
|
12
12
|
"test:watch": "jest --watch",
|
|
13
13
|
"lint": "eslint src tests --ext .js"
|
|
14
14
|
},
|
|
15
|
-
"keywords": [
|
|
15
|
+
"keywords": [
|
|
16
|
+
"openapi",
|
|
17
|
+
"swagger",
|
|
18
|
+
"openapi-diff",
|
|
19
|
+
"swagger-diff",
|
|
20
|
+
"api-diff",
|
|
21
|
+
"api-breaking-changes",
|
|
22
|
+
"breaking-change-detection",
|
|
23
|
+
"contract-testing",
|
|
24
|
+
"api-contract",
|
|
25
|
+
"api-versioning",
|
|
26
|
+
"api-governance",
|
|
27
|
+
"ci-cd",
|
|
28
|
+
"devops",
|
|
29
|
+
"github-actions",
|
|
30
|
+
"automation",
|
|
31
|
+
"cli",
|
|
32
|
+
"developer-tools",
|
|
33
|
+
"yaml",
|
|
34
|
+
"json",
|
|
35
|
+
"schema-diff",
|
|
36
|
+
"rest-api",
|
|
37
|
+
"openapi-cli"
|
|
38
|
+
],
|
|
16
39
|
"license": "MIT",
|
|
17
|
-
"files": [
|
|
40
|
+
"files": [
|
|
41
|
+
"bin",
|
|
42
|
+
"src",
|
|
43
|
+
"README.md",
|
|
44
|
+
"LICENSE"
|
|
45
|
+
],
|
|
18
46
|
"dependencies": {
|
|
19
47
|
"axios": "^1.6.7",
|
|
20
48
|
"chalk": "^4.1.2",
|
|
@@ -28,8 +56,12 @@
|
|
|
28
56
|
},
|
|
29
57
|
"jest": {
|
|
30
58
|
"testEnvironment": "node",
|
|
31
|
-
"testMatch": [
|
|
32
|
-
|
|
59
|
+
"testMatch": [
|
|
60
|
+
"**/tests/**/*.test.js"
|
|
61
|
+
],
|
|
62
|
+
"collectCoverageFrom": [
|
|
63
|
+
"src/**/*.js"
|
|
64
|
+
]
|
|
33
65
|
},
|
|
34
66
|
"engines": {
|
|
35
67
|
"node": ">=20.0.0"
|