🐤 The friendly full-stack language
This report summarizes scanner evidence for imba/imba, a JavaScript project with 6,515 GitHub stars. SynthScan examined 183,939 lines of code across 624 source files, recording 166 pattern matches distributed across 8 syntactic categories. The legacy adjusted pattern signal is 1.0 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 158 finding(s).
Are imports declared and package/API names verified? 5 finding(s).
Are wrappers, guards, and repeated structures necessary? 121 finding(s).
Which changes need focused human review? 166 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 166 distinct pattern matches across 8 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/imba-monarch/src/monarch/lexer.ts | 670 | export function createTokenizationSupport(modeId: string, lexer: monarchCommon.ILexer): ITokenizationSupport { | CODE |
| LOW | packages/imba-monarch/src/monarch/lexer.js | 8 | function MonarchStackElementFactory(maxCacheDepth) { | CODE |
| LOW | packages/imba-monarch/src/monarch/lexer.js | 156 | function MonarchClassicTokensCollector() { | CODE |
| LOW | packages/imba-monarch/src/monarch/lexer.js | 516 | export function createTokenizationSupport(modeId, lexer) { | CODE |
| LOW | packages/imba-language-core/test/harness.ts | 23 | export function createFixtureLanguageService( | CODE |
| LOW | packages/imba-language-core/test/harness.ts | 104 | export function createBareLanguageService(rootDir: string): LanguageService { | CODE |
| LOW | packages/imba-language-core/src/projectCompiler.ts | 19 | export function setProjectCompilerEnabled(value: boolean): void { | CODE |
| LOW | packages/imba-language-core/src/projectCompiler.ts | 102 | export function getProjectCompilerForFile(fileName: string): ProjectCompiler | null { | CODE |
| LOW | packages/imba-language-core/src/projectCompiler.ts | 111 | export function markProjectCompilerFailed(packageDir: string): void { | CODE |
| LOW | packages/imba-language-core/src/plugins/imbaFolding.ts | 27 | export function computeIndentFoldingRanges(text: string): { startLine: number; endLine: number }[] { | CODE |
| LOW | …ages/imba-language-core/src/plugins/imbaDiagnostics.ts | 24 | export function createImbaDiagnosticsPlugin(typescript?: typeof ts): LanguageServicePlugin { | CODE |
| LOW | …s/imba-language-core/src/plugins/imbaSemanticTokens.ts | 25 | export function createImbaSemanticTokensPlugin(): LanguageServicePlugin { | CODE |
| LOW | …/imba-language-core/src/plugins/imbaDocumentSymbols.ts | 93 | export function createImbaDocumentSymbolsPlugin(): LanguageServicePlugin { | CODE |
| LOW | …imba-language-core/src/plugins/imbaWorkspaceSymbols.ts | 13 | export function createImbaWorkspaceSymbolsPlugin(): LanguageServicePlugin { | CODE |
| LOW | …s/imba-language-core/src/plugins/typescriptServices.ts | 333 | function stripImbaSpecifierEndings(edit: { | CODE |
| LOW | …ages/imba-language-core/src/plugins/imbaCompletions.ts | 38 | export function createImbaCompletionsPlugin(typescript: typeof ts): LanguageServicePlugin { | CODE |
| LOW | packages/imba-language-core/src/plugins/checkerUtils.ts | 52 | export function findGlobalNamespaceExports( | CODE |
| LOW | packages/imba-language-core/src/plugins/checkerUtils.ts | 91 | export function findModuleExportsByFileSuffix( | CODE |
| LOW⚡ | packages/typescript-imba-plugin/src/ts.d.ts | 8547 | function isExternalModuleNameRelative(moduleName: string): boolean; | CODE |
| LOW⚡ | packages/typescript-imba-plugin/src/ts.d.ts | 8556 | function textSpanIntersectsWithTextSpan(span: TextSpan, other: TextSpan): boolean; | CODE |
| LOW⚡ | packages/typescript-imba-plugin/src/ts.d.ts | 8558 | function decodedTextSpanIntersectsWith(start1: number, length1: number, start2: number, length2: number): boolean; | CODE |
| LOW⚡ | packages/typescript-imba-plugin/src/ts.d.ts | 8559 | function textSpanIntersectsWithPosition(span: TextSpan, position: number): boolean; | CODE |
| LOW⚡ | packages/typescript-imba-plugin/src/ts.d.ts | 8564 | function textChangeRangeIsUnchanged(range: TextChangeRange): boolean; | CODE |
| LOW⚡ | packages/typescript-imba-plugin/src/ts.d.ts | 8574 | function collapseTextChangeRangesAcrossMultipleVersions(changes: readonly TextChangeRange[]): TextChangeRange; | CODE |
| LOW⚡ | packages/typescript-imba-plugin/src/ts.d.ts | 8576 | function isParameterPropertyDeclaration(node: Node, parent: Node): node is ParameterPropertyDeclaration; | CODE |
| LOW⚡ | packages/typescript-imba-plugin/src/ts.d.ts | 8579 | function walkUpBindingElementsAndPatterns(binding: BindingElement): VariableDeclaration | ParameterDeclaration; | CODE |
| LOW⚡ | packages/typescript-imba-plugin/src/ts.d.ts | 8586 | function validateLocaleAndSetLanguage(locale: string, sys: { | CODE |
| LOW⚡ | packages/typescript-imba-plugin/src/ts.d.ts | 8741 | function getEffectiveTypeParameterDeclarations(node: DeclarationWithTypeParameters): readonly TypeParameterDeclarati | CODE |
| LOW⚡ | packages/typescript-imba-plugin/src/ts.d.ts | 8742 | function getEffectiveConstraintOfTypeParameter(node: TypeParameterDeclaration): TypeNode | undefined; | CODE |
| LOW⚡ | packages/typescript-imba-plugin/src/ts.d.ts | 8750 | function skipPartiallyEmittedExpressions(node: Expression): Expression; | CODE |
| LOW⚡ | packages/typescript-imba-plugin/src/ts.d.ts | 8751 | function skipPartiallyEmittedExpressions(node: Node): Node; | CODE |
| LOW⚡ | packages/typescript-imba-plugin/src/ts.d.ts | 8753 | function isBreakOrContinueStatement(node: Node): node is BreakOrContinueStatement; | CODE |
| LOW⚡ | packages/typescript-imba-plugin/src/ts.d.ts | 8774 | function isTemplateMiddleOrTemplateTail(node: Node): node is TemplateMiddle | TemplateTail; | CODE |
| LOW⚡ | packages/typescript-imba-plugin/src/ts.d.ts | 8775 | function isImportOrExportSpecifier(node: Node): node is ImportSpecifier | ExportSpecifier; | CODE |
| LOW⚡ | packages/typescript-imba-plugin/src/ts.d.ts | 8776 | function isTypeOnlyImportDeclaration(node: Node): node is TypeOnlyImportDeclaration; | CODE |
| LOW⚡ | packages/typescript-imba-plugin/src/ts.d.ts | 8777 | function isTypeOnlyExportDeclaration(node: Node): node is TypeOnlyExportDeclaration; | CODE |
| LOW⚡ | packages/typescript-imba-plugin/src/ts.d.ts | 8778 | function isTypeOnlyImportOrExportDeclaration(node: Node): node is TypeOnlyAliasDeclaration; | CODE |
| LOW⚡ | packages/typescript-imba-plugin/src/ts.d.ts | 8780 | function isStringTextContainingNode(node: Node): node is StringLiteral | TemplateLiteralToken; | CODE |
| LOW⚡ | packages/typescript-imba-plugin/src/ts.d.ts | 8789 | function isAutoAccessorPropertyDeclaration(node: Node): node is AutoAccessorPropertyDeclaration; | CODE |
| LOW⚡ | packages/typescript-imba-plugin/src/ts.d.ts | 8793 | function isObjectLiteralElementLike(node: Node): node is ObjectLiteralElementLike; | CODE |
| LOW⚡ | packages/typescript-imba-plugin/src/ts.d.ts | 8800 | function isFunctionOrConstructorTypeNode(node: Node): node is FunctionTypeNode | ConstructorTypeNode; | CODE |
| LOW⚡ | packages/typescript-imba-plugin/src/ts.d.ts | 8802 | function isPropertyAccessOrQualifiedName(node: Node): node is PropertyAccessExpression | QualifiedName; | CODE |
| LOW⚡ | packages/typescript-imba-plugin/src/ts.d.ts | 8824 | function isStringLiteralOrJsxExpression(node: Node): node is StringLiteral | JsxExpression; | CODE |
| LOW⚡ | packages/typescript-imba-plugin/src/ts.d.ts | 8828 | function isJSDocCommentContainingNode(node: Node): boolean; | CODE |
| LOW⚡ | packages/typescript-imba-plugin/src/ts.d.ts | 8832 | function hasOnlyExpressionInitializer(node: Node): node is HasExpressionInitializer; | CODE |
| LOW⚡ | packages/typescript-imba-plugin/src/ts.d.ts | 8973 | function isTypeParameterDeclaration(node: Node): node is TypeParameterDeclaration; | CODE |
| LOW⚡ | packages/typescript-imba-plugin/src/ts.d.ts | 8980 | function isClassStaticBlockDeclaration(node: Node): node is ClassStaticBlockDeclaration; | CODE |
| LOW⚡ | packages/typescript-imba-plugin/src/ts.d.ts | 8984 | function isCallSignatureDeclaration(node: Node): node is CallSignatureDeclaration; | CODE |
| LOW⚡ | packages/typescript-imba-plugin/src/ts.d.ts | 8985 | function isConstructSignatureDeclaration(node: Node): node is ConstructSignatureDeclaration; | CODE |
| LOW⚡ | packages/typescript-imba-plugin/src/ts.d.ts | 8986 | function isIndexSignatureDeclaration(node: Node): node is IndexSignatureDeclaration; | CODE |
| LOW⚡ | packages/typescript-imba-plugin/src/ts.d.ts | 9009 | function isTemplateLiteralTypeSpan(node: Node): node is TemplateLiteralTypeSpan; | CODE |
| LOW⚡ | packages/typescript-imba-plugin/src/ts.d.ts | 9010 | function isTemplateLiteralTypeNode(node: Node): node is TemplateLiteralTypeNode; | CODE |
| LOW⚡ | packages/typescript-imba-plugin/src/ts.d.ts | 9015 | function isObjectLiteralExpression(node: Node): node is ObjectLiteralExpression; | CODE |
| LOW⚡ | packages/typescript-imba-plugin/src/ts.d.ts | 9016 | function isPropertyAccessExpression(node: Node): node is PropertyAccessExpression; | CODE |
| LOW⚡ | packages/typescript-imba-plugin/src/ts.d.ts | 9017 | function isElementAccessExpression(node: Node): node is ElementAccessExpression; | CODE |
| LOW⚡ | packages/typescript-imba-plugin/src/ts.d.ts | 9020 | function isTaggedTemplateExpression(node: Node): node is TaggedTemplateExpression; | CODE |
| LOW⚡ | packages/typescript-imba-plugin/src/ts.d.ts | 9021 | function isTypeAssertionExpression(node: Node): node is TypeAssertion; | CODE |
| LOW⚡ | packages/typescript-imba-plugin/src/ts.d.ts | 9022 | function isParenthesizedExpression(node: Node): node is ParenthesizedExpression; | CODE |
| LOW⚡ | packages/typescript-imba-plugin/src/ts.d.ts | 9068 | function isVariableDeclarationList(node: Node): node is VariableDeclarationList; | CODE |
| LOW⚡ | packages/typescript-imba-plugin/src/ts.d.ts | 9077 | function isNamespaceExportDeclaration(node: Node): node is NamespaceExportDeclaration; | CODE |
| 58 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/zed-imba/src/imba.rs | 1 | use zed_extension_api::{self as zed, Result}; | COMMENT |
| LOW | …ckages/typescript-imba-plugin/typings/imba.extras.d.ts | 1 | /// <reference path="./imba.events.d.ts" /> | COMMENT |
| LOW | packages/imba/typings/imba.d.ts | 81 | ease: any; | COMMENT |
| LOW | packages/imba/polyfills/crypto/index.js | 61 | COMMENT | |
| LOW | …polyfills/crypto/esm/lib/elliptic/lib/curve/edwards.js | 161 | var f = g.redSub(c); | COMMENT |
| LOW | …polyfills/crypto/esm/lib/elliptic/lib/curve/edwards.js | 261 | // H = B + A | COMMENT |
| LOW | …a/polyfills/crypto/esm/lib/elliptic/lib/curve/short.js | 641 | if (this.zOne) { | COMMENT |
| LOW | packages/imba/polyfills/crypto/esm/lib/hash/hash/sha.js | 1 | export {default as sha1} from "./sha/1"; | COMMENT |
| LOW | …ls/crypto/esm/lib/string_decoder/lib/string_decoder.js | 1 | // Copyright Joyent, Inc. and other Node contributors. | COMMENT |
| LOW | packages/imba/polyfills/util/index.js | 1 | // Copyright Joyent, Inc. and other Node contributors. | COMMENT |
| LOW | packages/imba/polyfills/string_decoder/index.js | 1 | // Copyright Joyent, Inc. and other Node contributors. | COMMENT |
| LOW | packages/imba/polyfills/path/path2.js | 1 | // 'path' module extracted from Node.js v8.11.1 (only the posix part) | COMMENT |
| LOW | packages/imba/polyfills/path/index.js | 1 | // Copyright Joyent, Inc. and other Node contributors. | COMMENT |
| LOW | packages/imba/polyfills/stream/readable.js | 281 | // | COMMENT |
| LOW | packages/imba/polyfills/stream/writable.js | 61 | // encoding is 'binary' so we have to make this configurable. | COMMENT |
| LOW | packages/imba/polyfills/stream/transform.js | 1 | // a transform stream is a readable/writable stream where you do | COMMENT |
| LOW | packages/imba/polyfills/stream/transform.js | 21 | // _read(n) is called, it transforms the queued up data, calling the | COMMENT |
| LOW | packages/imba/polyfills/assert/index.js | 41 | // Originally from narwhal.js (http://narwhaljs.org) | COMMENT |
| LOW | packages/imba/polyfills/assert/index.js | 281 | // If both values are instances of typed arrays, wrap their underlying | COMMENT |
| LOW | packages/imba/polyfills/zlib/index.js | 1 | // Copyright Joyent, Inc. and other Node contributors. | COMMENT |
| LOW | packages/imba/polyfills/zlib/zlib-lib/inflate.js | 1381 | if (copy > state.whave) { | COMMENT |
| LOW | packages/imba/polyfills/zlib/zlib-lib/deflate.js | 321 | function fill_window(s) { | COMMENT |
| LOW | packages/imba/polyfills/zlib/zlib-lib/deflate.js | 441 | // /* Previous high water mark below current data -- zero WIN_INIT | COMMENT |
| LOW | packages/imba/polyfills/zlib/zlib-lib/inffast.js | 181 | COMMENT | |
| LOW | packages/imba/polyfills/zlib/zlib-lib/trees.js | 1161 | } | COMMENT |
| LOW | packages/imba/polyfills/url/index.js | 1 | // TODO Just use the native URL class | COMMENT |
| LOW | packages/imba/polyfills/url/index.js | 181 | var i, hec, l, p; | COMMENT |
| LOW | packages/imba/polyfills/querystring/index.js | 1 | // Copyright Joyent, Inc. and other Node contributors. | COMMENT |
| LOW | packages/imba/polyfills/buffer/index.js | 821 | }; | COMMENT |
| LOW | apps/imba.io/content/docs/usage.md | 1 | # Usage | COMMENT |
| LOW | apps/imba.io/src/util/mousetrap.js | 561 | // if a sequence name is not specified, but this is a sequence at | COMMENT |
| LOW | apps/imba.io/src/util/mousetrap.js | 641 | maxLevel = Math.max(maxLevel, callbacks[i].level); | COMMENT |
| LOW | apps/imba.io/src/util/mousetrap.js | 681 | COMMENT | |
| LOW | apps/imba.io/src/util/mousetrap.js | 801 | // weird race condition if a sequence ends with the key | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …ages/imba/polyfills/crypto/esm/lib/parse-asn1/index.js | 91 | var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10); | CODE |
| CRITICAL | …ages/imba/polyfills/crypto/esm/lib/parse-asn1/index.js | 92 | var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')]; | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | apps/imba.io/content/reference.md | 0 | first level is ignored this is indented not indented | STRING |
| HIGH | apps/imba.io/content/docs/basic-syntax.md | 0 | first level is ignored this is indented not indented | STRING |
| HIGH | apps/imba.io/content/docs/literals.md | 0 | first level is ignored this is indented not indented | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | packages/imba/scripts/bootstrap.compiler.js | 1 | !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.am | CODE |
| MEDIUM⚡ | packages/imba/scripts/bootstrap.compiler.js | 1 | !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.am | CODE |
| MEDIUM⚡ | packages/imba/scripts/bootstrap.compiler.js | 1 | !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.am | CODE |
| MEDIUM | packages/vscode-imba/syntaxes/imba.tmLanguage.json | 836 | "match": "(?xi) (?<![\\w-])\n[-+]? # Sign indicator\n\n(?: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | packages/imba-language-core/PLAN.md | 318 | ### 2026-06-12 — F8: Zed extension scaffold (the LSP dividend) [superseded by v2 above] | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …es/imba-language-core/test/m2-attr-completions.test.ts | 30 | expect(labels).toContain('placeholder'); | CODE |
| LOW | apps/imba.io/content/docs/data-binding.md | 221 | let people = [{name: 'Jane Doe', interests: ['Imba']}] | CODE |
| LOW | apps/imba.io/public/imdb.js | 745 | "character": "John Doe" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ls/crypto/esm/lib/string_decoder/lib/string_decoder.js | 248 | // number of bytes available, we need to check if we end on a leading/high | COMMENT |