blotdev 1.0.0 → 1.1.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/README.md +9 -4
- package/dist/index.js +56 -9
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -8,16 +8,16 @@ Scan codebases for brand consistency issues. Catches hardcoded colors, fonts, an
|
|
|
8
8
|
npm install blotdev
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
-
##
|
|
11
|
+
## Quick Start
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
|
-
npx blotdev
|
|
15
|
-
npx blotdev
|
|
14
|
+
npx blotdev --init # create blot.config.json
|
|
15
|
+
npx blotdev # scan and output brand-issues.md
|
|
16
16
|
```
|
|
17
17
|
|
|
18
18
|
## Config
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
Edit `blot.config.json` with your brand values:
|
|
21
21
|
|
|
22
22
|
```json
|
|
23
23
|
{
|
|
@@ -52,6 +52,10 @@ Full scans also write `brand-issues.md` with a checklist format.
|
|
|
52
52
|
|
|
53
53
|
## Pre-commit
|
|
54
54
|
|
|
55
|
+
```bash
|
|
56
|
+
npx blotdev --staged
|
|
57
|
+
```
|
|
58
|
+
|
|
55
59
|
With lint-staged:
|
|
56
60
|
|
|
57
61
|
```json
|
|
@@ -66,6 +70,7 @@ With lint-staged:
|
|
|
66
70
|
|
|
67
71
|
| Flag | Description |
|
|
68
72
|
|------|-------------|
|
|
73
|
+
| `-i, --init` | Create config file |
|
|
69
74
|
| `-s, --staged` | Scan staged files only |
|
|
70
75
|
| `-h, --help` | Show help |
|
|
71
76
|
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,41 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
"use strict";
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
3
36
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
4
39
|
const config_1 = require("./config");
|
|
5
40
|
const scanner_1 = require("./scanner");
|
|
6
41
|
const detectors_1 = require("./detectors");
|
|
@@ -9,6 +44,7 @@ function parseArgs(args) {
|
|
|
9
44
|
return {
|
|
10
45
|
staged: args.includes("--staged") || args.includes("-s"),
|
|
11
46
|
help: args.includes("--help") || args.includes("-h"),
|
|
47
|
+
init: args.includes("--init") || args.includes("-i"),
|
|
12
48
|
};
|
|
13
49
|
}
|
|
14
50
|
function printHelp() {
|
|
@@ -17,30 +53,41 @@ blotdev - Scan for brand consistency issues
|
|
|
17
53
|
|
|
18
54
|
Usage:
|
|
19
55
|
blotdev Scan codebase, output brand-issues.md
|
|
56
|
+
blotdev --init Create blot.config.json
|
|
20
57
|
blotdev --staged Scan staged files only (pre-commit)
|
|
21
58
|
|
|
22
59
|
Options:
|
|
60
|
+
-i, --init Create config file
|
|
23
61
|
-s, --staged Only scan git staged files
|
|
24
62
|
-h, --help Show this help
|
|
25
63
|
|
|
26
|
-
Config:
|
|
27
|
-
Create blot.config.json in project root:
|
|
28
|
-
|
|
29
|
-
{
|
|
30
|
-
"colors": ["#1a1a1a", "#ffffff"],
|
|
31
|
-
"fonts": ["Inter", "Space Grotesk"],
|
|
32
|
-
"allowInlineStyles": false
|
|
33
|
-
}
|
|
34
|
-
|
|
35
64
|
https://blot.dev
|
|
36
65
|
`);
|
|
37
66
|
}
|
|
67
|
+
function createConfig() {
|
|
68
|
+
const configPath = path.join(process.cwd(), "blot.config.json");
|
|
69
|
+
if (fs.existsSync(configPath)) {
|
|
70
|
+
console.error("blot.config.json already exists");
|
|
71
|
+
process.exit(1);
|
|
72
|
+
}
|
|
73
|
+
const config = {
|
|
74
|
+
colors: [],
|
|
75
|
+
fonts: [],
|
|
76
|
+
allowInlineStyles: true,
|
|
77
|
+
};
|
|
78
|
+
fs.writeFileSync(configPath, JSON.stringify(config, null, 2) + "\n");
|
|
79
|
+
console.log("Created blot.config.json");
|
|
80
|
+
}
|
|
38
81
|
async function main() {
|
|
39
82
|
const options = parseArgs(process.argv.slice(2));
|
|
40
83
|
if (options.help) {
|
|
41
84
|
printHelp();
|
|
42
85
|
process.exit(0);
|
|
43
86
|
}
|
|
87
|
+
if (options.init) {
|
|
88
|
+
createConfig();
|
|
89
|
+
process.exit(0);
|
|
90
|
+
}
|
|
44
91
|
const cwd = process.cwd();
|
|
45
92
|
const config = (0, config_1.loadConfig)(cwd);
|
|
46
93
|
const files = options.staged ? (0, scanner_1.getStagedFiles)(cwd) : await (0, scanner_1.getAllFiles)(cwd);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,uCAAyB;AACzB,2CAA6B;AAC7B,qCAAsC;AACtC,uCAAwD;AACxD,2CAA+C;AAC/C,qCAA+D;AAG/D,SAAS,SAAS,CAAC,IAAc;IAC/B,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QACxD,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QACpD,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;KACrD,CAAC;AACJ,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;CAcb,CAAC,CAAC;AACH,CAAC;AAED,SAAS,YAAY;IACnB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,kBAAkB,CAAC,CAAC;IAEhE,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG;QACb,MAAM,EAAE,EAAE;QACV,KAAK,EAAE,EAAE;QACT,iBAAiB,EAAE,IAAI;KACxB,CAAC;IAEF,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;AAC1C,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,SAAS,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,YAAY,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,MAAM,GAAG,IAAA,mBAAU,EAAC,GAAG,CAAC,CAAC;IAE/B,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAA,wBAAc,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,IAAA,qBAAW,EAAC,GAAG,CAAC,CAAC;IAE5E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QACjC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,UAAU,GAAgB,EAAE,CAAC;IACnC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,UAAU,CAAC,IAAI,CAAC,GAAG,IAAA,4BAAgB,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,IAAA,uBAAc,EAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAEzC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,IAAA,4BAAmB,EAAC,UAAU,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC;IAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/types.d.ts
CHANGED
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,MAAM;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,cAAc,CAAC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;CACf"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,MAAM;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,cAAc,CAAC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;CACf"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "blotdev",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "CLI tool to scan codebases for brand consistency issues - catches hardcoded colors, fonts, and styles that should use design tokens.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|