@gulibs/safe-coder 0.0.2 → 0.0.4

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.
@@ -1 +1 @@
1
- {"version":3,"file":"eslint-integration.d.ts","sourceRoot":"","sources":["../../src/errors/eslint-integration.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAS;;IAcjB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAkB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IA2BxF,OAAO,CAAC,UAAU;CAGnB"}
1
+ {"version":3,"file":"eslint-integration.d.ts","sourceRoot":"","sources":["../../src/errors/eslint-integration.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAuB;;IAmB/B,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAkB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IA8BxF,OAAO,CAAC,UAAU;CAGnB"}
@@ -1,18 +1,27 @@
1
1
  import { ESLint } from 'eslint';
2
2
  export class ESLintIntegration {
3
- eslint;
3
+ eslint = null;
4
4
  constructor() {
5
- this.eslint = new ESLint({
6
- overrideConfig: {
7
- rules: {
8
- 'no-unused-vars': 'warn',
9
- 'no-undef': 'error',
10
- 'no-console': 'off',
5
+ try {
6
+ this.eslint = new ESLint({
7
+ overrideConfig: {
8
+ rules: {
9
+ 'no-unused-vars': 'warn',
10
+ 'no-undef': 'error',
11
+ 'no-console': 'off',
12
+ },
11
13
  },
12
- },
13
- });
14
+ });
15
+ }
16
+ catch (error) {
17
+ // ESLint initialization failed, continue without it
18
+ this.eslint = null;
19
+ }
14
20
  }
15
21
  async detectErrors(code, filename = 'code.ts') {
22
+ if (!this.eslint) {
23
+ return []; // ESLint not available
24
+ }
16
25
  try {
17
26
  const results = await this.eslint.lintText(code, { filePath: filename });
18
27
  const errors = [];
@@ -1 +1 @@
1
- {"version":3,"file":"eslint-integration.js","sourceRoot":"","sources":["../../src/errors/eslint-integration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,MAAM,OAAO,iBAAiB;IACpB,MAAM,CAAS;IAEvB;QACE,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC;YACvB,cAAc,EAAE;gBACd,KAAK,EAAE;oBACL,gBAAgB,EAAE,MAAM;oBACxB,UAAU,EAAE,OAAO;oBACnB,YAAY,EAAE,KAAK;iBACpB;aACF;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,IAAY,EAAE,WAAmB,SAAS;QAC3D,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;YACzE,MAAM,MAAM,GAAoB,EAAE,CAAC;YAEnC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;oBACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAyB;oBAE1E,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,QAAQ;wBACd,OAAO,EAAE,OAAO,CAAC,OAAO;wBACxB,IAAI,EAAE,OAAO,CAAC,IAAI;wBAClB,MAAM,EAAE,OAAO,CAAC,MAAM;wBACtB,QAAQ;wBACR,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,SAAS;qBACpD,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,wCAAwC;YACxC,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAEO,UAAU,CAAC,MAAuB;QACxC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IACxD,CAAC;CACF"}
1
+ {"version":3,"file":"eslint-integration.js","sourceRoot":"","sources":["../../src/errors/eslint-integration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,MAAM,OAAO,iBAAiB;IACpB,MAAM,GAAkB,IAAI,CAAC;IAErC;QACE,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC;gBACvB,cAAc,EAAE;oBACd,KAAK,EAAE;wBACL,gBAAgB,EAAE,MAAM;wBACxB,UAAU,EAAE,OAAO;wBACnB,YAAY,EAAE,KAAK;qBACpB;iBACF;aACF,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,oDAAoD;YACpD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACrB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,IAAY,EAAE,WAAmB,SAAS;QAC3D,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,EAAE,CAAC,CAAC,uBAAuB;QACpC,CAAC;QACD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;YACzE,MAAM,MAAM,GAAoB,EAAE,CAAC;YAEnC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;oBACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAyB;oBAE1E,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,QAAQ;wBACd,OAAO,EAAE,OAAO,CAAC,OAAO;wBACxB,IAAI,EAAE,OAAO,CAAC,IAAI;wBAClB,MAAM,EAAE,OAAO,CAAC,MAAM;wBACtB,QAAQ;wBACR,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,SAAS;qBACpD,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,wCAAwC;YACxC,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAEO,UAAU,CAAC,MAAuB;QACxC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IACxD,CAAC;CACF"}
@@ -1,4 +1,4 @@
1
- import patternsData from './patterns.json';
1
+ import { patterns as patternsData } from './patterns.js';
2
2
  export class PatternMatcher {
3
3
  patterns;
4
4
  constructor() {
@@ -1 +1 @@
1
- {"version":3,"file":"pattern-matcher.js","sourceRoot":"","sources":["../../src/errors/pattern-matcher.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAqB3C,MAAM,OAAO,cAAc;IACjB,QAAQ,CAAiB;IAEjC;QACE,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,QAA0B,CAAC;IAC1D,CAAC;IAED,MAAM,CAAC,IAAY;QACjB,MAAM,MAAM,GAAoB,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC;YAEzB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACpC,IAAI,CAAC;oBACH,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;oBAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;oBAErC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;wBAC5B,MAAM,CAAC,IAAI,CAAC;4BACV,IAAI,EAAE,OAAO,CAAC,EAAE;4BAChB,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,WAAW,EAAE;4BAClD,IAAI,EAAE,UAAU;4BAChB,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;4BACjD,QAAQ,EAAE,OAAO,CAAC,QAAQ;4BAC1B,GAAG,EAAE,OAAO,CAAC,GAAG;4BAChB,OAAO,EAAE,OAAO,CAAC,OAAO;yBACzB,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,8BAA8B;oBAC9B,SAAS;gBACX,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAEO,UAAU,CAAC,MAAuB;QACxC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IACxD,CAAC;IAED,UAAU,CAAC,OAAqB;QAC9B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;CACF"}
1
+ {"version":3,"file":"pattern-matcher.js","sourceRoot":"","sources":["../../src/errors/pattern-matcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,eAAe,CAAC;AAqBzD,MAAM,OAAO,cAAc;IACjB,QAAQ,CAAiB;IAEjC;QACE,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,QAA0B,CAAC;IAC1D,CAAC;IAED,MAAM,CAAC,IAAY;QACjB,MAAM,MAAM,GAAoB,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC;YAEzB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACpC,IAAI,CAAC;oBACH,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;oBAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;oBAErC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;wBAC5B,MAAM,CAAC,IAAI,CAAC;4BACV,IAAI,EAAE,OAAO,CAAC,EAAE;4BAChB,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,WAAW,EAAE;4BAClD,IAAI,EAAE,UAAU;4BAChB,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;4BACjD,QAAQ,EAAE,OAAO,CAAC,QAAQ;4BAC1B,GAAG,EAAE,OAAO,CAAC,GAAG;4BAChB,OAAO,EAAE,OAAO,CAAC,OAAO;yBACzB,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,8BAA8B;oBAC9B,SAAS;gBACX,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAEO,UAAU,CAAC,MAAuB;QACxC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IACxD,CAAC;IAED,UAAU,CAAC,OAAqB;QAC9B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;CACF"}
@@ -0,0 +1,11 @@
1
+ export declare const patterns: {
2
+ patterns: {
3
+ id: string;
4
+ name: string;
5
+ priority: number;
6
+ pattern: string;
7
+ description: string;
8
+ fix: string;
9
+ }[];
10
+ };
11
+ //# sourceMappingURL=patterns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../../src/errors/patterns.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ;;;;;;;;;CAmCpB,CAAC"}
@@ -0,0 +1,37 @@
1
+ export const patterns = {
2
+ patterns: [
3
+ {
4
+ id: 'undefined-variable',
5
+ name: 'Undefined Variable',
6
+ priority: 3,
7
+ pattern: '\\b(\\w+)\\s*\\?\\.',
8
+ description: 'Variable may be undefined before optional chaining',
9
+ fix: 'Ensure variable is defined before use or use optional chaining',
10
+ },
11
+ {
12
+ id: 'missing-import',
13
+ name: 'Missing Import',
14
+ priority: 2,
15
+ pattern: "import\\s+.*from\\s+['\"]([^'\"]+)['\"]",
16
+ description: 'Import statement may be missing or incorrect',
17
+ fix: 'Add missing import statement',
18
+ },
19
+ {
20
+ id: 'async-await',
21
+ name: 'Missing Await',
22
+ priority: 2,
23
+ pattern: '(async\\s+)?function.*\\{[^}]*\\b(\\w+)\\([^)]*\\)(?!\\s*await)',
24
+ description: 'Async function call missing await',
25
+ fix: 'Add await keyword before async function call',
26
+ },
27
+ {
28
+ id: 'null-check',
29
+ name: 'Missing Null Check',
30
+ priority: 3,
31
+ pattern: '\\b(\\w+)\\.(\\w+)(?!\\s*\\?)',
32
+ description: 'Property access without null/undefined check',
33
+ fix: 'Add null/undefined check before property access',
34
+ },
35
+ ],
36
+ };
37
+ //# sourceMappingURL=patterns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patterns.js","sourceRoot":"","sources":["../../src/errors/patterns.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,QAAQ,EAAE;QACR;YACE,EAAE,EAAE,oBAAoB;YACxB,IAAI,EAAE,oBAAoB;YAC1B,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,qBAAqB;YAC9B,WAAW,EAAE,oDAAoD;YACjE,GAAG,EAAE,gEAAgE;SACtE;QACD;YACE,EAAE,EAAE,gBAAgB;YACpB,IAAI,EAAE,gBAAgB;YACtB,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,yCAAyC;YAClD,WAAW,EAAE,8CAA8C;YAC3D,GAAG,EAAE,8BAA8B;SACpC;QACD;YACE,EAAE,EAAE,aAAa;YACjB,IAAI,EAAE,eAAe;YACrB,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,iEAAiE;YAC1E,WAAW,EAAE,mCAAmC;YAChD,GAAG,EAAE,8CAA8C;SACpD;QACD;YACE,EAAE,EAAE,YAAY;YAChB,IAAI,EAAE,oBAAoB;YAC1B,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,+BAA+B;YACxC,WAAW,EAAE,8CAA8C;YAC3D,GAAG,EAAE,iDAAiD;SACvD;KACF;CACF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gulibs/safe-coder",
3
- "version": "0.0.2",
3
+ "version": "0.0.4",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "registry": "https://registry.npmjs.org"
@@ -26,6 +26,9 @@
26
26
  "README.md",
27
27
  "LICENSE"
28
28
  ],
29
+ "exports": {
30
+ ".": "./dist/index.js"
31
+ },
29
32
  "keywords": [
30
33
  "mcp",
31
34
  "model-context-protocol",
@@ -39,6 +42,7 @@
39
42
  "@modelcontextprotocol/sdk": "^1.22.0",
40
43
  "@typescript-eslint/typescript-estree": "^8.48.0",
41
44
  "axios": "^1.13.2",
45
+ "eslint": "^8.57.1",
42
46
  "zod": "^3.25.76"
43
47
  },
44
48
  "devDependencies": {
@@ -46,7 +50,6 @@
46
50
  "@types/node": "^20.0.0",
47
51
  "@typescript-eslint/eslint-plugin": "^6.21.0",
48
52
  "@typescript-eslint/parser": "^6.21.0",
49
- "eslint": "^8.57.1",
50
53
  "tsx": "^4.0.0",
51
54
  "typescript": "^5.9.3",
52
55
  "vitest": "^1.0.0"
@@ -1,36 +0,0 @@
1
- {
2
- "patterns": [
3
- {
4
- "id": "undefined-variable",
5
- "name": "Undefined Variable",
6
- "priority": 3,
7
- "pattern": "\\b(\\w+)\\s*\\?\\s*\\.",
8
- "description": "Variable may be undefined before optional chaining",
9
- "fix": "Ensure variable is defined before use or use optional chaining"
10
- },
11
- {
12
- "id": "missing-import",
13
- "name": "Missing Import",
14
- "priority": 2,
15
- "pattern": "import\\s+.*from\\s+['\"]([^'\"]+)['\"]",
16
- "description": "Import statement may be missing or incorrect",
17
- "fix": "Add missing import statement"
18
- },
19
- {
20
- "id": "async-await",
21
- "name": "Missing Await",
22
- "priority": 2,
23
- "pattern": "(async\\s+)?function.*\\{[^}]*\\b(\\w+)\\([^)]*\\)(?!\\s*await)",
24
- "description": "Async function call missing await",
25
- "fix": "Add await keyword before async function call"
26
- },
27
- {
28
- "id": "null-check",
29
- "name": "Missing Null Check",
30
- "priority": 3,
31
- "pattern": "\\b(\\w+)\\.(\\w+)(?!\\s*\\?)",
32
- "description": "Property access without null/undefined check",
33
- "fix": "Add null/undefined check before property access"
34
- }
35
- ]
36
- }