@iris-code/core 0.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 +38 -0
- package/dist/config.d.ts +147 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +550 -0
- package/dist/config.js.map +1 -0
- package/dist/csharp/analyser.d.ts +14 -0
- package/dist/csharp/analyser.d.ts.map +1 -0
- package/dist/csharp/analyser.js +436 -0
- package/dist/csharp/analyser.js.map +1 -0
- package/dist/csharp/lexer.d.ts +29 -0
- package/dist/csharp/lexer.d.ts.map +1 -0
- package/dist/csharp/lexer.js +182 -0
- package/dist/csharp/lexer.js.map +1 -0
- package/dist/duplicates.d.ts +53 -0
- package/dist/duplicates.d.ts.map +1 -0
- package/dist/duplicates.js +491 -0
- package/dist/duplicates.js.map +1 -0
- package/dist/fileAnalyser.d.ts +4 -0
- package/dist/fileAnalyser.d.ts.map +1 -0
- package/dist/fileAnalyser.js +8 -0
- package/dist/fileAnalyser.js.map +1 -0
- package/dist/fileNaming.d.ts +68 -0
- package/dist/fileNaming.d.ts.map +1 -0
- package/dist/fileNaming.js +343 -0
- package/dist/fileNaming.js.map +1 -0
- package/dist/gate.d.ts +49 -0
- package/dist/gate.d.ts.map +1 -0
- package/dist/gate.js +242 -0
- package/dist/gate.js.map +1 -0
- package/dist/go/analyser.d.ts +5 -0
- package/dist/go/analyser.d.ts.map +1 -0
- package/dist/go/analyser.js +576 -0
- package/dist/go/analyser.js.map +1 -0
- package/dist/guards.d.ts +16 -0
- package/dist/guards.d.ts.map +1 -0
- package/dist/guards.js +355 -0
- package/dist/guards.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +110 -0
- package/dist/index.js.map +1 -0
- package/dist/languages.d.ts +46 -0
- package/dist/languages.d.ts.map +1 -0
- package/dist/languages.js +155 -0
- package/dist/languages.js.map +1 -0
- package/dist/lines.d.ts +9 -0
- package/dist/lines.d.ts.map +1 -0
- package/dist/lines.js +58 -0
- package/dist/lines.js.map +1 -0
- package/dist/python/analyser.d.ts +5 -0
- package/dist/python/analyser.d.ts.map +1 -0
- package/dist/python/analyser.js +630 -0
- package/dist/python/analyser.js.map +1 -0
- package/dist/qualitySignals.d.ts +30 -0
- package/dist/qualitySignals.d.ts.map +1 -0
- package/dist/qualitySignals.js +101 -0
- package/dist/qualitySignals.js.map +1 -0
- package/dist/ruby/analyser.d.ts +5 -0
- package/dist/ruby/analyser.d.ts.map +1 -0
- package/dist/ruby/analyser.js +450 -0
- package/dist/ruby/analyser.js.map +1 -0
- package/dist/scoring.d.ts +4 -0
- package/dist/scoring.d.ts.map +1 -0
- package/dist/scoring.js +37 -0
- package/dist/scoring.js.map +1 -0
- package/dist/secrets.d.ts +5 -0
- package/dist/secrets.d.ts.map +1 -0
- package/dist/secrets.js +245 -0
- package/dist/secrets.js.map +1 -0
- package/dist/securityContext.d.ts +2 -0
- package/dist/securityContext.d.ts.map +1 -0
- package/dist/securityContext.js +16 -0
- package/dist/securityContext.js.map +1 -0
- package/dist/sfc.d.ts +32 -0
- package/dist/sfc.d.ts.map +1 -0
- package/dist/sfc.js +228 -0
- package/dist/sfc.js.map +1 -0
- package/dist/slop.d.ts +37 -0
- package/dist/slop.d.ts.map +1 -0
- package/dist/slop.js +81 -0
- package/dist/slop.js.map +1 -0
- package/dist/suppressions.d.ts +19 -0
- package/dist/suppressions.d.ts.map +1 -0
- package/dist/suppressions.js +152 -0
- package/dist/suppressions.js.map +1 -0
- package/dist/ts/analyser.d.ts +4 -0
- package/dist/ts/analyser.d.ts.map +1 -0
- package/dist/ts/analyser.js +769 -0
- package/dist/ts/analyser.js.map +1 -0
- package/dist/types.d.ts +139 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +46 -0
- package/dist/types.js.map +1 -0
- package/package.json +43 -0
package/README.md
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# @iris/core
|
|
2
|
+
|
|
3
|
+
Shared analysis engine package for Iris.
|
|
4
|
+
|
|
5
|
+
## Scope
|
|
6
|
+
|
|
7
|
+
This package is intended to become the single source of truth for:
|
|
8
|
+
|
|
9
|
+
- scoring logic
|
|
10
|
+
- issue normalization
|
|
11
|
+
- shared analysis result types
|
|
12
|
+
- gate evaluation
|
|
13
|
+
- deterministic, density-ranked workspace Quality Signals
|
|
14
|
+
- workspace-wide, path/role-aware, and fallback per-language file naming checks with ordered glob rules, suggestions, and built-in exemptions
|
|
15
|
+
- fixture-backed parity tests used by both the extension and the CLI
|
|
16
|
+
- Vue and Svelte single-file component script extraction with native line preservation
|
|
17
|
+
|
|
18
|
+
## Extraction notes
|
|
19
|
+
|
|
20
|
+
Keep the package pure where possible. Host-specific concerns should stay outside:
|
|
21
|
+
|
|
22
|
+
- VS Code commands, webviews, and SecretStorage stay in `Iris-extension`
|
|
23
|
+
- CLI argument parsing and output formatting can stay in the CLI shell layer
|
|
24
|
+
- `@iris/core` should receive plain source text and config data, then return structured analysis output
|
|
25
|
+
|
|
26
|
+
## Publish-ready surface
|
|
27
|
+
|
|
28
|
+
This package now publishes compiled output from `dist/` rather than exposing raw TypeScript source.
|
|
29
|
+
|
|
30
|
+
- `pnpm run build` compiles the package
|
|
31
|
+
- `pnpm run test` runs the fixture-backed packaged-surface tests
|
|
32
|
+
- `pnpm pack` will build and test first via `prepack`
|
|
33
|
+
|
|
34
|
+
## v1.16 analysis surface
|
|
35
|
+
|
|
36
|
+
`computeQualitySignals` consumes aggregate scan metrics and returns recurring quality signals ranked by density and impact. Each signal preserves its raw count or percentage and carries a simple attention level; it does not create a second workspace score.
|
|
37
|
+
|
|
38
|
+
`checkFileNaming` enforces the workspace naming policy, with a matching language policy taking precedence. `analyseFile` accepts optional `relativePath` and `baselineFiles` context so extension and CLI callers share baseline-aware behavior without core reading the filesystem.
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import type { LanguagesConfig } from './languages';
|
|
2
|
+
export interface HealthScoreWeights {
|
|
3
|
+
errorWarning: number;
|
|
4
|
+
warningWarning: number;
|
|
5
|
+
anyUsage: number;
|
|
6
|
+
tsIgnore: number;
|
|
7
|
+
consoleLog: number;
|
|
8
|
+
deepNesting: number;
|
|
9
|
+
longParamList: number;
|
|
10
|
+
unusedVar: number;
|
|
11
|
+
unusedFunction: number;
|
|
12
|
+
hardcodedSecret: number;
|
|
13
|
+
evalUsage: number;
|
|
14
|
+
sqlConcatenation: number;
|
|
15
|
+
insecureRandom: number;
|
|
16
|
+
unsafeRegex: number;
|
|
17
|
+
hardcodedLocalhost: number;
|
|
18
|
+
disabledTlsVerification: number;
|
|
19
|
+
debugFlagsEnabled: number;
|
|
20
|
+
weakHashing: number;
|
|
21
|
+
openRedirect: number;
|
|
22
|
+
bareSuppression: number;
|
|
23
|
+
duplicateCode: number;
|
|
24
|
+
fileNaming: number;
|
|
25
|
+
}
|
|
26
|
+
export interface InlineDiagnosticsConfig {
|
|
27
|
+
hardcodedSecrets: boolean;
|
|
28
|
+
securitySmells: boolean;
|
|
29
|
+
duplicateCode: boolean;
|
|
30
|
+
errorWarnings: boolean;
|
|
31
|
+
warningLevelWarnings: boolean;
|
|
32
|
+
tsIgnore: boolean;
|
|
33
|
+
unusedFunctions: boolean;
|
|
34
|
+
anyUsage: boolean;
|
|
35
|
+
consoleLogs: boolean;
|
|
36
|
+
magicNumbers: boolean;
|
|
37
|
+
longParamLists: boolean;
|
|
38
|
+
unusedVars: boolean;
|
|
39
|
+
todos: boolean;
|
|
40
|
+
fileNaming: boolean;
|
|
41
|
+
}
|
|
42
|
+
export type FileNamingConvention = 'snake_case' | 'kebab-case' | 'camelCase' | 'PascalCase';
|
|
43
|
+
export interface FileNamingPolicy {
|
|
44
|
+
convention: FileNamingConvention;
|
|
45
|
+
ignore: string[];
|
|
46
|
+
scope?: 'new-files' | 'all';
|
|
47
|
+
}
|
|
48
|
+
export interface FileNamingOverride {
|
|
49
|
+
/** Workspace-relative globs. Overrides are evaluated in order; the last match wins. */
|
|
50
|
+
files: string[];
|
|
51
|
+
convention: FileNamingConvention;
|
|
52
|
+
scope?: 'new-files' | 'all';
|
|
53
|
+
}
|
|
54
|
+
export interface FileNamingConfig extends FileNamingPolicy {
|
|
55
|
+
/** Role/path rules. Only valid on the top-level workspace policy. */
|
|
56
|
+
overrides?: FileNamingOverride[];
|
|
57
|
+
}
|
|
58
|
+
export interface IrisConfig {
|
|
59
|
+
functionLengthThreshold: number;
|
|
60
|
+
fileLengthThreshold: number;
|
|
61
|
+
maxFunctionsPerFile: number;
|
|
62
|
+
maxImportsPerFile: number;
|
|
63
|
+
maxParameterCount: number;
|
|
64
|
+
complexityThreshold: number;
|
|
65
|
+
enableConsoleLogWarnings: boolean;
|
|
66
|
+
enableMagicNumberDetection: boolean;
|
|
67
|
+
enableTodoDetection: boolean;
|
|
68
|
+
enableLongParamDetection: boolean;
|
|
69
|
+
enableUnusedDetection: boolean;
|
|
70
|
+
enableMissingReturnTypeWarnings: boolean;
|
|
71
|
+
enableSecretsDetection: boolean;
|
|
72
|
+
enableSecuritySmells: boolean;
|
|
73
|
+
enableDuplicateDetection: boolean;
|
|
74
|
+
duplicateBlockMinTokens: number;
|
|
75
|
+
enableCodeLens: boolean;
|
|
76
|
+
enableStatusBar: boolean;
|
|
77
|
+
severityOverrides: Partial<Record<string, 'error' | 'warning' | 'info'>>;
|
|
78
|
+
ignoreFiles: string[];
|
|
79
|
+
ignoreFunctions: string[];
|
|
80
|
+
testConvention: 'colocated' | 'dedicated' | 'both';
|
|
81
|
+
sidebarFontSize: number;
|
|
82
|
+
ignoreSuppressions: boolean;
|
|
83
|
+
enableInlineDiagnostics: boolean;
|
|
84
|
+
inlineDiagnostics: InlineDiagnosticsConfig;
|
|
85
|
+
healthScoreWeights: HealthScoreWeights;
|
|
86
|
+
fileNaming?: FileNamingConfig;
|
|
87
|
+
fileNamingScope: 'new-files' | 'all';
|
|
88
|
+
languages?: LanguagesConfig;
|
|
89
|
+
}
|
|
90
|
+
export type IrisConfigPresetId = 'strict' | 'balanced' | 'legacy' | 'security' | 'typescript' | 'ai-assisted';
|
|
91
|
+
export interface IrisGeneratedConfig extends Omit<Partial<IrisConfig>, 'inlineDiagnostics' | 'healthScoreWeights'> {
|
|
92
|
+
presetId?: IrisConfigPresetId;
|
|
93
|
+
inlineDiagnostics?: Partial<InlineDiagnosticsConfig>;
|
|
94
|
+
healthScoreWeights?: Partial<HealthScoreWeights>;
|
|
95
|
+
minHealthScore?: number;
|
|
96
|
+
trendRegressionThreshold?: number;
|
|
97
|
+
gateBaselineMode?: boolean;
|
|
98
|
+
gateMaxSecrets?: number;
|
|
99
|
+
gateMaxComplexity?: number;
|
|
100
|
+
gateMaxFileLength?: number;
|
|
101
|
+
gateMaxSmellsPerFile?: number;
|
|
102
|
+
gateMaxSecuritySmells?: number;
|
|
103
|
+
gateMaxSuppressions?: number;
|
|
104
|
+
gateMaxDuplicateBlocks?: number;
|
|
105
|
+
gateMaxNamingViolations?: number;
|
|
106
|
+
}
|
|
107
|
+
export interface IrisConfigPresetDefinition {
|
|
108
|
+
id: IrisConfigPresetId;
|
|
109
|
+
label: string;
|
|
110
|
+
description: string;
|
|
111
|
+
recommendedFor: string[];
|
|
112
|
+
config: IrisGeneratedConfig;
|
|
113
|
+
}
|
|
114
|
+
export declare const IRIS_WARNING_TYPES: readonly ["file-too-long", "function-too-long", "too-many-functions", "too-many-imports", "no-exports", "hardcoded-secret", "any-usage", "ts-ignore", "unused-function", "unused-var", "console-log", "magic-number", "long-param-list", "todo", "parse-error", "security-smell", "duplicate-code", "file-naming", "method-missing", "mass-assignment", "god-class", "large-class", "catch-all-exception", "async-void", "linq-abuse"];
|
|
115
|
+
export declare const IRIS_HEALTH_WEIGHT_KEYS: readonly ["errorWarning", "warningWarning", "anyUsage", "tsIgnore", "consoleLog", "deepNesting", "longParamList", "unusedVar", "unusedFunction", "hardcodedSecret", "evalUsage", "sqlConcatenation", "insecureRandom", "unsafeRegex", "hardcodedLocalhost", "disabledTlsVerification", "debugFlagsEnabled", "weakHashing", "openRedirect", "bareSuppression", "duplicateCode", "fileNaming"];
|
|
116
|
+
export declare const IRIS_INLINE_DIAGNOSTIC_KEYS: readonly ["hardcodedSecrets", "securitySmells", "duplicateCode", "errorWarnings", "warningLevelWarnings", "tsIgnore", "unusedFunctions", "anyUsage", "consoleLogs", "magicNumbers", "longParamLists", "unusedVars", "todos", "fileNaming"];
|
|
117
|
+
export declare const DEFAULT_IRIS_CONFIG: IrisConfig;
|
|
118
|
+
export declare const IRIS_CONFIG_PRESETS: Record<IrisConfigPresetId, IrisConfigPresetDefinition>;
|
|
119
|
+
export declare function mergeIrisConfig(overrides?: Partial<IrisConfig>): IrisConfig;
|
|
120
|
+
export declare function getIrisConfigPreset(id: IrisConfigPresetId): IrisConfigPresetDefinition;
|
|
121
|
+
export declare function buildGeneratedConfig(presetId: IrisConfigPresetId, overrides?: IrisGeneratedConfig): IrisGeneratedConfig;
|
|
122
|
+
/**
|
|
123
|
+
* Public URL of the .irisconfig.json JSON schema, written into every generated
|
|
124
|
+
* config as `$schema`.
|
|
125
|
+
*
|
|
126
|
+
* Editors resolve `$schema` themselves, so ONE line in the file gives completion,
|
|
127
|
+
* hover docs, and unknown-key validation in VS Code, JetBrains, Neovim, and
|
|
128
|
+
* anything else that speaks JSON schema. The alternative was per-host plumbing:
|
|
129
|
+
* VS Code contributes `jsonValidation`, and the JetBrains equivalent would have
|
|
130
|
+
* meant Java against an extension point that lives in a backend-only module in
|
|
131
|
+
* 2026.2, unverifiable in a remote-dev split.
|
|
132
|
+
*
|
|
133
|
+
* Versioned on purpose: a breaking config change publishes /v2 and leaves every
|
|
134
|
+
* existing file pointing at a schema that still describes it correctly.
|
|
135
|
+
* Served from Iris-landing/public/schema/v1/ - keep the two in step with
|
|
136
|
+
* `node scripts/copy-schema.js` in the extension repo.
|
|
137
|
+
*/
|
|
138
|
+
export declare const IRIS_CONFIG_SCHEMA_URL = "https://www.iriscode.co/schema/v1/irisconfig.schema.json";
|
|
139
|
+
export interface SerializeGeneratedConfigOptions {
|
|
140
|
+
/**
|
|
141
|
+
* Optional schema reference for development/test generated configs. Release
|
|
142
|
+
* callers should omit this so configs point at the versioned public schema.
|
|
143
|
+
*/
|
|
144
|
+
schemaUrl?: string;
|
|
145
|
+
}
|
|
146
|
+
export declare function serializeGeneratedConfigJsonc(values: IrisGeneratedConfig, presetId?: IrisConfigPresetId, options?: SerializeGeneratedConfigOptions): string;
|
|
147
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|