@umeshindu222/apisnap 1.1.1 ā 1.1.3
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 +18 -25
- package/dist/core/runner.js +26 -59
- package/dist/core/runner.js.map +1 -1
- package/package.json +42 -42
package/README.md
CHANGED
|
@@ -28,59 +28,52 @@
|
|
|
28
28
|
|
|
29
29
|
## š Quick Start
|
|
30
30
|
|
|
31
|
-
### 1
|
|
31
|
+
### Step 1: Install and add the middleware to your Express app
|
|
32
|
+
|
|
32
33
|
```bash
|
|
33
34
|
npm install @umeshindu222/apisnap
|
|
34
35
|
```
|
|
35
36
|
|
|
36
|
-
In your Express application, initialize APISnap **after** all your routes:
|
|
37
37
|
```javascript
|
|
38
38
|
const express = require('express');
|
|
39
39
|
const apisnap = require('@umeshindu222/apisnap');
|
|
40
|
+
|
|
40
41
|
const app = express();
|
|
41
42
|
|
|
43
|
+
// Your routes here
|
|
42
44
|
app.get('/users', (req, res) => res.json({ users: [] }));
|
|
45
|
+
app.post('/users', (req, res) => res.json({ message: 'Created' }));
|
|
43
46
|
|
|
44
|
-
// Add APISnap
|
|
47
|
+
// Add APISnap ā place AFTER your routes
|
|
45
48
|
apisnap.init(app);
|
|
46
49
|
|
|
47
50
|
app.listen(3000);
|
|
48
51
|
```
|
|
49
52
|
|
|
50
|
-
### 2
|
|
51
|
-
Run this once in your project root to generate config templates:
|
|
52
|
-
```bash
|
|
53
|
-
npx @umeshindu222/apisnap init
|
|
54
|
-
```
|
|
53
|
+
### Step 2: Run the health check
|
|
55
54
|
|
|
56
|
-
### 3. Run the Check
|
|
57
55
|
```bash
|
|
58
|
-
npx @umeshindu222/apisnap
|
|
56
|
+
npx @umeshindu222/apisnap --port 3000
|
|
59
57
|
```
|
|
60
58
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
## āļø Configuration
|
|
64
|
-
|
|
65
|
-
APISnap uses a dual-config system to keep your secrets safe:
|
|
66
|
-
|
|
67
|
-
| File | Purpose | Git Status |
|
|
68
|
-
| :--- | :--- | :--- |
|
|
69
|
-
| `apisnap.json` | Shared team settings (Port, Slow Threshold) | **Commit to Git** |
|
|
70
|
-
| `apisnap.local.json` | Personal secrets (Auth Tokens, API Keys) | **Add to .gitignore** |
|
|
59
|
+
That's it. APISnap finds and tests every route automatically.
|
|
71
60
|
|
|
72
61
|
---
|
|
73
62
|
|
|
74
|
-
##
|
|
63
|
+
## š CLI Usage
|
|
75
64
|
|
|
76
65
|
```bash
|
|
77
66
|
npx @umeshindu222/apisnap [options]
|
|
78
67
|
```
|
|
79
68
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
69
|
+
| Option | Description | Default |
|
|
70
|
+
|--------|-------------|---------|
|
|
71
|
+
| `-p, --port <number>` | Port your server is running on | `3000` |
|
|
72
|
+
| `-H, --header <string>` | Custom header for auth (e.g., `"Authorization: Bearer token"`) | ā |
|
|
73
|
+
| `-s, --slow <number>` | Response time threshold in ms for slow warnings | `200` |
|
|
74
|
+
| `-e, --export <filename>` | Export results to a JSON file | ā |
|
|
75
|
+
| `-V, --version` | Show version number | ā |
|
|
76
|
+
| `-h, --help` | Show help | ā |
|
|
84
77
|
|
|
85
78
|
---
|
|
86
79
|
|
package/dist/core/runner.js
CHANGED
|
@@ -8,48 +8,39 @@ const axios_1 = __importDefault(require("axios"));
|
|
|
8
8
|
const chalk_1 = __importDefault(require("chalk"));
|
|
9
9
|
const ora_1 = __importDefault(require("ora"));
|
|
10
10
|
const commander_1 = require("commander");
|
|
11
|
-
const path_1 = __importDefault(require("path"));
|
|
12
11
|
const program = new commander_1.Command();
|
|
13
12
|
const { version } = require('../../package.json');
|
|
14
13
|
program
|
|
15
14
|
.name('apisnap')
|
|
16
15
|
.description('Instant API health-check CLI for Express.js')
|
|
17
16
|
.version(version)
|
|
18
|
-
.option('-p, --port <number>', '
|
|
19
|
-
.option('-H, --header <string>', '
|
|
20
|
-
.option('-s, --slow <number>', '
|
|
21
|
-
.option('-e, --export <filename>', 'Export results to JSON file (e.g., report.json)')
|
|
17
|
+
.option('-p, --port <number>', 'The port your server is running on', '3000')
|
|
18
|
+
.option('-H, --header <string>', 'Add a custom header (e.g., "Authorization: Bearer token")')
|
|
19
|
+
.option('-s, --slow <number>', 'Threshold for slow response warning (ms)', '200')
|
|
20
|
+
.option('-e, --export <filename>', 'Export results to a JSON file (e.g., report.json)')
|
|
22
21
|
.action(async (options) => {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
['apisnap.json', 'apisnap.local.json'].forEach(file => {
|
|
26
|
-
const filePath = path_1.default.join(process.cwd(), file);
|
|
27
|
-
if (fs_1.default.existsSync(filePath)) {
|
|
28
|
-
try {
|
|
29
|
-
const fileData = JSON.parse(fs_1.default.readFileSync(filePath, 'utf8'));
|
|
30
|
-
config = {
|
|
31
|
-
...config,
|
|
32
|
-
...fileData,
|
|
33
|
-
headers: { ...config.headers, ...fileData.headers }
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
catch (e) {
|
|
37
|
-
console.log(chalk_1.default.yellow(`ā ļø Warning: Failed to parse ${file}`));
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
// Final Priority: CLI Flags always win
|
|
42
|
-
const port = options.port || config.port;
|
|
43
|
-
const slowThreshold = options.slow ? parseInt(options.slow) : config.slowThreshold;
|
|
44
|
-
const finalHeaders = { ...config.headers };
|
|
45
|
-
if (options.header) {
|
|
46
|
-
const [key, ...val] = options.header.split(':');
|
|
47
|
-
finalHeaders[key.trim()] = val.join(':').trim();
|
|
48
|
-
}
|
|
22
|
+
const port = options.port;
|
|
23
|
+
const slowThreshold = parseInt(options.slow);
|
|
49
24
|
const discoveryUrl = `http://localhost:${port}/__apisnap_discovery`;
|
|
50
25
|
const results = []; // Collect all test results here
|
|
26
|
+
// Parse custom header from CLI flag
|
|
27
|
+
const customHeaders = {};
|
|
28
|
+
if (options.header) {
|
|
29
|
+
const [key, ...value] = options.header.split(':');
|
|
30
|
+
if (key && value) {
|
|
31
|
+
customHeaders[key.trim()] = value.join(':').trim();
|
|
32
|
+
}
|
|
33
|
+
}
|
|
51
34
|
console.log(chalk_1.default.bold.cyan(`\nšø APISnap v${version}`));
|
|
52
|
-
|
|
35
|
+
// Show active options
|
|
36
|
+
if (Object.keys(customHeaders).length > 0) {
|
|
37
|
+
console.log(chalk_1.default.gray(` Headers: ${JSON.stringify(customHeaders)}`));
|
|
38
|
+
}
|
|
39
|
+
console.log(chalk_1.default.gray(` Slow threshold: ${slowThreshold}ms`));
|
|
40
|
+
if (options.export) {
|
|
41
|
+
console.log(chalk_1.default.gray(` Export: ${options.export}`));
|
|
42
|
+
}
|
|
43
|
+
console.log();
|
|
53
44
|
const spinner = (0, ora_1.default)('Connecting to your API...').start();
|
|
54
45
|
try {
|
|
55
46
|
// 1. Fetch the route map from the middleware
|
|
@@ -86,8 +77,8 @@ program
|
|
|
86
77
|
method: method,
|
|
87
78
|
url: fullUrl,
|
|
88
79
|
headers: {
|
|
89
|
-
...
|
|
90
|
-
'User-Agent':
|
|
80
|
+
...customHeaders,
|
|
81
|
+
'User-Agent': 'APISnap/1.0.0',
|
|
91
82
|
},
|
|
92
83
|
timeout: 5000,
|
|
93
84
|
});
|
|
@@ -145,7 +136,7 @@ program
|
|
|
145
136
|
config: {
|
|
146
137
|
port,
|
|
147
138
|
slowThreshold,
|
|
148
|
-
headers:
|
|
139
|
+
headers: customHeaders,
|
|
149
140
|
},
|
|
150
141
|
summary: {
|
|
151
142
|
total: endpoints.length,
|
|
@@ -165,29 +156,5 @@ program
|
|
|
165
156
|
process.exit(1);
|
|
166
157
|
}
|
|
167
158
|
});
|
|
168
|
-
program
|
|
169
|
-
.command('init')
|
|
170
|
-
.description('Initialize APISnap configuration files')
|
|
171
|
-
.action(() => {
|
|
172
|
-
const sharedConfig = {
|
|
173
|
-
port: 3000,
|
|
174
|
-
slowThreshold: 200,
|
|
175
|
-
description: "Shared project API settings"
|
|
176
|
-
};
|
|
177
|
-
const localConfig = {
|
|
178
|
-
headers: {
|
|
179
|
-
Authorization: "Bearer YOUR_PRIVATE_TOKEN_HERE"
|
|
180
|
-
}
|
|
181
|
-
};
|
|
182
|
-
// Create the files in the user's current directory
|
|
183
|
-
fs_1.default.writeFileSync('apisnap.json', JSON.stringify(sharedConfig, null, 2));
|
|
184
|
-
fs_1.default.writeFileSync('apisnap.local.json', JSON.stringify(localConfig, null, 2));
|
|
185
|
-
console.log(chalk_1.default.green.bold('\n⨠APISnap Initialized Successfully!'));
|
|
186
|
-
console.log(chalk_1.default.cyan('Created:'));
|
|
187
|
-
console.log(` š ${chalk_1.default.white('apisnap.json')} (Shared - Push to GitHub)`);
|
|
188
|
-
console.log(` š ${chalk_1.default.yellow('apisnap.local.json')} (Private - DO NOT PUSH)`);
|
|
189
|
-
console.log(chalk_1.default.red.bold('\nā ļø IMPORTANT SECURITY STEP:'));
|
|
190
|
-
console.log(`Add ${chalk_1.default.yellow.bold('apisnap.local.json')} to your ${chalk_1.default.white('.gitignore')} file now!\n`);
|
|
191
|
-
});
|
|
192
159
|
program.parse(process.argv);
|
|
193
160
|
//# sourceMappingURL=runner.js.map
|
package/dist/core/runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/core/runner.ts"],"names":[],"mappings":";;;;;AAAA,4CAAoB;AACpB,kDAA0B;AAC1B,kDAA0B;AAC1B,8CAAsB;AACtB,yCAAoC;
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/core/runner.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,42 +1,42 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@umeshindu222/apisnap",
|
|
3
|
-
"version": "1.1.
|
|
4
|
-
"description": "Instant API auto-discovery and health-check CLI for Express.js",
|
|
5
|
-
"main": "dist/middleware/index.js",
|
|
6
|
-
"types": "dist/middleware/index.d.ts",
|
|
7
|
-
"bin": {
|
|
8
|
-
"apisnap": "bin/cli.js"
|
|
9
|
-
},
|
|
10
|
-
"files": [
|
|
11
|
-
"dist",
|
|
12
|
-
"bin",
|
|
13
|
-
"README.md"
|
|
14
|
-
],
|
|
15
|
-
"scripts": {
|
|
16
|
-
"build": "tsc",
|
|
17
|
-
"prepublishOnly": "npm run build"
|
|
18
|
-
},
|
|
19
|
-
"keywords": [
|
|
20
|
-
"express",
|
|
21
|
-
"api",
|
|
22
|
-
"testing",
|
|
23
|
-
"health-check",
|
|
24
|
-
"cli",
|
|
25
|
-
"automation"
|
|
26
|
-
],
|
|
27
|
-
"author": "Umesh Induranga",
|
|
28
|
-
"license": "MIT",
|
|
29
|
-
"dependencies": {
|
|
30
|
-
"axios": "^1.13.6",
|
|
31
|
-
"chalk": "^5.6.2",
|
|
32
|
-
"commander": "^14.0.3",
|
|
33
|
-
"express": "^4.22.1",
|
|
34
|
-
"ora": "^9.3.0"
|
|
35
|
-
},
|
|
36
|
-
"devDependencies": {
|
|
37
|
-
"@types/express": "^5.0.6",
|
|
38
|
-
"@types/node": "^25.3.3",
|
|
39
|
-
"ts-node": "^10.9.2",
|
|
40
|
-
"typescript": "^5.9.3"
|
|
41
|
-
}
|
|
42
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@umeshindu222/apisnap",
|
|
3
|
+
"version": "1.1.3",
|
|
4
|
+
"description": "Instant API auto-discovery and health-check CLI for Express.js",
|
|
5
|
+
"main": "dist/middleware/index.js",
|
|
6
|
+
"types": "dist/middleware/index.d.ts",
|
|
7
|
+
"bin": {
|
|
8
|
+
"apisnap": "bin/cli.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist",
|
|
12
|
+
"bin",
|
|
13
|
+
"README.md"
|
|
14
|
+
],
|
|
15
|
+
"scripts": {
|
|
16
|
+
"build": "tsc",
|
|
17
|
+
"prepublishOnly": "npm run build"
|
|
18
|
+
},
|
|
19
|
+
"keywords": [
|
|
20
|
+
"express",
|
|
21
|
+
"api",
|
|
22
|
+
"testing",
|
|
23
|
+
"health-check",
|
|
24
|
+
"cli",
|
|
25
|
+
"automation"
|
|
26
|
+
],
|
|
27
|
+
"author": "Umesh Induranga",
|
|
28
|
+
"license": "MIT",
|
|
29
|
+
"dependencies": {
|
|
30
|
+
"axios": "^1.13.6",
|
|
31
|
+
"chalk": "^5.6.2",
|
|
32
|
+
"commander": "^14.0.3",
|
|
33
|
+
"express": "^4.22.1",
|
|
34
|
+
"ora": "^9.3.0"
|
|
35
|
+
},
|
|
36
|
+
"devDependencies": {
|
|
37
|
+
"@types/express": "^5.0.6",
|
|
38
|
+
"@types/node": "^25.3.3",
|
|
39
|
+
"ts-node": "^10.9.2",
|
|
40
|
+
"typescript": "^5.9.3"
|
|
41
|
+
}
|
|
42
|
+
}
|