AI Slop Code RIsk Monitor

fabricjs/fabric.js

Javascript Canvas Library, SVG-to-Canvas (& canvas-to-SVG) Parser

6.5 Moderate pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for fabricjs/fabric.js, a TypeScript project with 31,464 GitHub stars. SynthScan examined 127,625 lines of code across 731 source files, recording 158 pattern matches distributed across 5 syntactic categories. The legacy adjusted pattern signal is 6.5 (Moderate 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.

6.5
Adjusted Signal
6.5
Raw Pattern Score
100%
Time Factor
2026-10-10
Last Push
31.5K
Stars
TypeScript
Language
127.6K
Lines of Code
731
Files
158
Pattern Hits
2026-10-12
Scan Date
0.11
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 2.1/100 · LOW

Can maintainers explain intent, assumptions, and trade-offs? 52 finding(s).

Hallucinated Dependency & Supply Chain Risk 26.2/100 · MEDIUM

Are imports declared and package/API names verified? 106 finding(s).

Agent Over-Engineering Ratio 0.8/100 · LOW

Are wrappers, guards, and repeated structures necessary? 21 finding(s).

PR Review Velocity Impact 29.2/100 · MEDIUM

Which changes need focused human review? 158 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

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.

Severity Breakdown

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.

CRITICAL 80HIGH 0MEDIUM 1LOW 77

Directory Score Breakdown

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.

Pattern Findings

The scanner identified 158 distinct pattern matches across 5 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.

Hallucination Indicators80 hits · 750 pts
SeverityFileLineSnippetContext
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts218 expect(cObj.oCoords.tl.corner.tl.x.toFixed(2), 'tl corner.tl.x').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts221 expect(cObj.oCoords.tl.corner.tl.y.toFixed(2), 'tl corner.tl.y').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts224 expect(cObj.oCoords.tl.corner.tr.x.toFixed(2), 'tl corner.tr.x').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts227 expect(cObj.oCoords.tl.corner.tr.y.toFixed(2), 'tl corner.tr.y').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts230 expect(cObj.oCoords.tl.corner.bl.x.toFixed(2), 'tl corner.bl.x').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts233 expect(cObj.oCoords.tl.corner.bl.y.toFixed(2), 'tl corner.bl.y').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts236 expect(cObj.oCoords.tl.corner.br.x.toFixed(2), 'tl corner.br.x').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts239 expect(cObj.oCoords.tl.corner.br.y.toFixed(2), 'tl corner.br.y').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts242 expect(cObj.oCoords.bl.corner.tl.x.toFixed(2), 'bl corner.tl.x').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts245 expect(cObj.oCoords.bl.corner.tl.y.toFixed(2), 'bl corner.tl.y').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts248 expect(cObj.oCoords.bl.corner.tr.x.toFixed(2), 'bl corner.tr.x').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts251 expect(cObj.oCoords.bl.corner.tr.y.toFixed(2), 'bl corner.tr.y').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts254 expect(cObj.oCoords.bl.corner.bl.x.toFixed(2), 'bl corner.bl.x').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts257 expect(cObj.oCoords.bl.corner.bl.y.toFixed(2), 'bl corner.bl.y').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts260 expect(cObj.oCoords.bl.corner.br.x.toFixed(2), 'bl corner.br.x').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts263 expect(cObj.oCoords.bl.corner.br.y.toFixed(2), 'bl corner.br.y').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts266 expect(cObj.oCoords.tr.corner.tl.x.toFixed(2), 'tr corner.tl.x').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts269 expect(cObj.oCoords.tr.corner.tl.y.toFixed(2), 'tr corner.tl.y').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts272 expect(cObj.oCoords.tr.corner.tr.x.toFixed(2), 'tr corner.tr.x').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts275 expect(cObj.oCoords.tr.corner.tr.y.toFixed(2), 'tr corner.tr.y').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts278 expect(cObj.oCoords.tr.corner.bl.x.toFixed(2), 'tr corner.bl.x').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts281 expect(cObj.oCoords.tr.corner.bl.y.toFixed(2), 'tr corner.bl.y').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts284 expect(cObj.oCoords.tr.corner.br.x.toFixed(2), 'tr corner.br.x').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts287 expect(cObj.oCoords.tr.corner.br.y.toFixed(2), 'tr corner.br.y').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts290 expect(cObj.oCoords.br.corner.tl.x.toFixed(2), 'br corner.tl.x').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts293 expect(cObj.oCoords.br.corner.tl.y.toFixed(2), 'br corner.tl.y').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts296 expect(cObj.oCoords.br.corner.tr.x.toFixed(2), 'br corner.tr.x').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts299 expect(cObj.oCoords.br.corner.tr.y.toFixed(2), 'br corner.tr.y').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts302 expect(cObj.oCoords.br.corner.bl.x.toFixed(2), 'br corner.bl.x').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts305 expect(cObj.oCoords.br.corner.bl.y.toFixed(2), 'br corner.bl.y').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts308 expect(cObj.oCoords.br.corner.br.x.toFixed(2), 'br corner.br.x').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts311 expect(cObj.oCoords.br.corner.br.y.toFixed(2), 'br corner.br.y').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts314 expect(cObj.oCoords.mtr.corner.tl.x.toFixed(2), 'mtr corner.tl.x').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts317 expect(cObj.oCoords.mtr.corner.tl.y.toFixed(2), 'mtr corner.tl.y').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts320 expect(cObj.oCoords.mtr.corner.tr.x.toFixed(2), 'mtr corner.tr.x').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts323 expect(cObj.oCoords.mtr.corner.tr.y.toFixed(2), 'mtr corner.tr.y').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts326 expect(cObj.oCoords.mtr.corner.bl.x.toFixed(2), 'mtr corner.bl.x').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts329 expect(cObj.oCoords.mtr.corner.bl.y.toFixed(2), 'mtr corner.bl.y').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts332 expect(cObj.oCoords.mtr.corner.br.x.toFixed(2), 'mtr corner.br.x').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts335 expect(cObj.oCoords.mtr.corner.br.y.toFixed(2), 'mtr corner.br.y').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts445 expect(cObj.oCoords.tl.corner.tl.x.toFixed(2), 'tl corner.tl.x').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts448 expect(cObj.oCoords.tl.corner.tl.y.toFixed(2), 'tl corner.tl.y').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts451 expect(cObj.oCoords.tl.corner.tr.x.toFixed(2), 'tl corner.tr.x').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts454 expect(cObj.oCoords.tl.corner.tr.y.toFixed(2), 'tl corner.tr.y').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts457 expect(cObj.oCoords.tl.corner.bl.x.toFixed(2), 'tl corner.bl.x').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts460 expect(cObj.oCoords.tl.corner.bl.y.toFixed(2), 'tl corner.bl.y').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts463 expect(cObj.oCoords.tl.corner.br.x.toFixed(2), 'tl corner.br.x').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts466 expect(cObj.oCoords.tl.corner.br.y.toFixed(2), 'tl corner.br.y').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts469 expect(cObj.oCoords.bl.corner.tl.x.toFixed(2), 'bl corner.tl.x').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts472 expect(cObj.oCoords.bl.corner.tl.y.toFixed(2), 'bl corner.tl.y').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts475 expect(cObj.oCoords.bl.corner.tr.x.toFixed(2), 'bl corner.tr.x').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts478 expect(cObj.oCoords.bl.corner.tr.y.toFixed(2), 'bl corner.tr.y').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts481 expect(cObj.oCoords.bl.corner.bl.x.toFixed(2), 'bl corner.bl.x').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts484 expect(cObj.oCoords.bl.corner.bl.y.toFixed(2), 'bl corner.bl.y').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts487 expect(cObj.oCoords.bl.corner.br.x.toFixed(2), 'bl corner.br.x').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts490 expect(cObj.oCoords.bl.corner.br.y.toFixed(2), 'bl corner.br.y').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts493 expect(cObj.oCoords.tr.corner.tl.x.toFixed(2), 'tr corner.tl.x').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts496 expect(cObj.oCoords.tr.corner.tl.y.toFixed(2), 'tr corner.tl.y').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts499 expect(cObj.oCoords.tr.corner.tr.x.toFixed(2), 'tr corner.tr.x').toBe(CODE
CRITICAL⚡…es/core/src/shapes/Object/Object-interactivity.spec.ts502 expect(cObj.oCoords.tr.corner.tr.y.toFixed(2), 'tr corner.tr.y').toBe(CODE
20 more matches not shown…
Over-Commented Block30 hits · 30 pts
SeverityFileLineSnippetContext
LOWtsconfig.json1{COMMENT
LOWtsconfig.json61 "declaration": true /* Generate .d.ts files from TypeScript and JavaScript files in your project. */,COMMENT
LOWtsconfig.json81 // "preserveConstEnums": true, /* Disable erasing `const enum` declarations in generated code.COMMENT
LOWtsconfig.json101 // "noUnusedLocals": true, /* Enable error reporting when a local variables aren't read. *COMMENT
LOWtsconfig-extensions.json1{COMMENT
LOWtsconfig-extensions.json61 /* Emit */COMMENT
LOWtsconfig-extensions.json81 "noEmitOnError": false /* Disable emitting files if any type checking errors are reported. */,COMMENT
LOWtsconfig-extensions.json101 // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */COMMENT
LOW.codesandbox/templates/next/next-env.d.ts1/// <reference types="next" />COMMENT
LOWpackages/core/src/util/path/regex.ts21// const reClosePathCommand = String.raw`(Z)\s*`;COMMENT
LOWpackages/core/src/util/path/regex.ts41// `|(?:${reCubicCurveShortcutCommand})` +COMMENT
LOWpackages/core/src/shapes/Group.spec.ts1741 // var rect1 = new fabric.Rect({ top: 1, left: 1, width: 3, height: 2, strokeWidth: 0, fill: 'red' }),COMMENT
LOWpackages/core/src/shapes/Group.spec.ts1761 // assert.equal(rect5.scaleX, 1, 'scaleX is back to original');COMMENT
LOWpackages/core/src/shapes/IText/ITextKeyBehavior.test.ts361// var iText = new fabric.IText('test', { styles: { 0: { 0: { fill: 'red' }, 1: { fill: 'blue' }}}});COMMENT
LOWpackages/core/src/shapes/Object/Object.spec.ts241 expect(cObj.get('width'), 'width should be set').toBe(99);COMMENT
LOWpackages/core/src/shapes/Object/Object.spec.ts1861 // expect(object2.fill, 'once assigned object is red').toBe('red');COMMENT
LOWpackages/core/src/canvas/StaticCanvas.spec.ts2341 expect(canvas2.nextRenderHandle).toBe(0);COMMENT
LOWpackages/core/src/canvas/Canvas.spec.ts2321 // canvas._setupCurrentTransform(eventStub, rect, alreadySelected);COMMENT
LOWpackages/core/src/canvas/Canvas.spec.ts2341 // target: canvas.upperCanvasEl,COMMENT
LOWpackages/core/src/canvas/Canvas.spec.ts2361 // canvas._setupCurrentTransform(eventStub, rect);COMMENT
LOWpackages/core/src/canvas/Canvas.spec.ts2381 // fabric.getFabricDocument().location.hostname +COMMENT
LOWpackages/core/src/canvas/Canvas.spec.ts2401 // var callbackFired = false;COMMENT
LOWpackages/core/src/canvas/Canvas-events.spec.ts1821 expect(getTargets(), 'dispose should clear instances').toEqual([]);COMMENT
LOWpackages/core/src/canvas/Canvas-events.spec.ts1841 // expect(!!canvas.actionIsDisabled('mt', target, e), 'action is not disabled').toBe(false);COMMENT
LOWpackages/core/src/canvas/Canvas-events.spec.ts1861 // expect(!!canvas.actionIsDisabled('br', target, e), 'br action is disabled lockScalingX').toBe(true);COMMENT
LOWpackages/core/src/canvas/Canvas-events.spec.ts1881 // expect(!!canvas.actionIsDisabled('ml', target, e), 'ml action is disabled scaling locked').toBe(true);COMMENT
LOWpackages/core/src/canvas/Canvas-events.spec.ts1901 // target = new FabricObject();COMMENT
LOWpackages/core/src/canvas/Canvas-events.spec.ts1921 // expect(!!canvas.actionIsDisabled('tl', target, e), 'tl action is not disabled lockSkewingY').toBe(false);COMMENT
LOW.github/workflows/codeql-analysis.yml1# For most projects, this workflow file will not need changing; you simply needCOMMENT
LOW.github/workflows/scorecard.yml41COMMENT
Fake / Example Data26 hits · 26 pts
SeverityFileLineSnippetContext
LOW…x/templates/vanilla/src/testcases/clipPathSelection.ts7 const sampleText = `Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sem massa, suscipit non elit vel, vCODE
LOW…x/templates/vanilla/src/testcases/clipPathSelection.ts7 const sampleText = `Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sem massa, suscipit non elit vel, vCODE
LOW…ndbox/templates/vanilla/src/testcases/textbox-itext.ts4 const textValue = 'Lorem ipsum dolor sit amet consecutrioeioreieo';CODE
LOW…ndbox/templates/vanilla/src/testcases/textbox-itext.ts4 const textValue = 'Lorem ipsum dolor sit amet consecutrioeioreieo';CODE
LOW…/src/content/docs/docs/Old docs/fabric-intro-part-2.md402var shadowText3 = new fabric.Text("Lorem ipsum dolor sit", {CODE
LOW…/src/content/docs/docs/Old docs/fabric-intro-part-2.md435var loremIpsumDolor = new fabric.Text("Lorem ipsum dolor", {CODE
LOW…/src/content/docs/docs/Old docs/fabric-intro-part-2.md464var lineHeight3 = new fabric.Text('Lorem ipsum ...', {CODE
LOW…/src/content/docs/docs/Old docs/fabric-intro-part-2.md467var lineHeight1 = new fabric.Text('Lorem ipsum ...', {CODE
LOW…ite/src/components/CarbonAd/InlineCarbonAdReminder.jsx22 key="placeholder"CODE
LOW…es/e2e/tests/visual-output/rendering/testcases/text.ts260 'lorem ipsum\ndolor\nsit Amet2\nconsectgetur',CODE
LOW…es/e2e/tests/visual-output/rendering/testcases/text.ts276 'lorem ipsum\ndolor\nsit Amet2\nconsectgetur',CODE
LOW…es/e2e/tests/visual-output/rendering/testcases/text.ts732 'lorem ipsum\ndolor\nsit Amet2\nconsectgetur',CODE
LOW…es/e2e/tests/visual-output/rendering/testcases/text.ts768 'lorem ipsum\ndolor\nsit Amet2\nconsectgetur',CODE
LOW…es/e2e/tests/visual-output/rendering/testcases/text.ts806 'lorem ipsum\ndolor\nsit Amet2\nconsectgetur',CODE
LOW…es/e2e/tests/visual-output/rendering/testcases/text.ts893 'lorem ipsum dolor sit Amet consectgetur',CODE
LOW…es/e2e/tests/visual-output/rendering/testcases/text.ts893 'lorem ipsum dolor sit Amet consectgetur',CODE
LOW…es/e2e/tests/visual-output/rendering/testcases/text.ts926 const text = new TestTextboxClass('lorem ipsum dolor sit Amet sit Amet', {CODE
LOW…es/e2e/tests/visual-output/rendering/testcases/text.ts926 const text = new TestTextboxClass('lorem ipsum dolor sit Amet sit Amet', {CODE
LOW…es/e2e/tests/visual-output/rendering/testcases/text.ts969 'lorem ipsum dolor sit Amet consectgetur',CODE
LOW…es/e2e/tests/visual-output/rendering/testcases/text.ts969 'lorem ipsum dolor sit Amet consectgetur',CODE
LOW…/visual-output/rendering/testcases/textWithClipPath.ts10 const sampleText = `Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sem massa, suscipit non elit vel,CODE
LOW…/visual-output/rendering/testcases/textWithClipPath.ts10 const sampleText = `Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sem massa, suscipit non elit vel,CODE
LOW…tests/visual-output/rendering/testcases/to-data-url.ts4const canvasWithObjects = String.raw`{"version":"7.0.0-beta1","objects":[{"type":"Rect","version":"7.0.0-beta1","left":4CODE
LOW…tests/visual-output/rendering/testcases/to-data-url.ts4const canvasWithObjects = String.raw`{"version":"7.0.0-beta1","objects":[{"type":"Rect","version":"7.0.0-beta1","left":4CODE
LOWpackages/e2e/tests/text/drag&drop/index.spec.ts330 text: 'lorem ipsum\ndolor\nsit Amet2\nconsectgetur',CODE
LOWpackages/e2e/tests/text/drag&drop/index.ts197 const b = new fabric.Textbox('lorem ipsum\ndolor\nsit Amet2\nconsectgetur', {CODE
Hyper-Verbose Identifiers21 hits · 21 pts
SeverityFileLineSnippetContext
LOW…ckages/gradient-controls/src/linearGradientControls.ts11export function createLinearGradientControls(CODE
LOW…ckages/gradient-controls/src/linearGradientHandlers.ts37 function linearGradientColorPositionHandler(CODE
LOW…ckages/gradient-controls/src/linearGradientHandlers.ts62 function linearGradientCoordPositionHandler(CODE
LOW…ckages/gradient-controls/src/linearGradientHandlers.ts148 function renderCircleControlWithLine(CODE
LOWpackages/cropping-controls/src/controlRendering.ts85export function renderRoundedSegmentControl(CODE
LOWpackages/cropping-controls/src/croppingHandlers.ts216export function ghostScalePositionHandler(CODE
LOWpackages/core/src/gradient/Gradient.spec.ts51function createRadialGradientWithInternalRadius() {CODE
LOWpackages/core/src/gradient/Gradient.spec.ts69function createRadialGradientSwapped() {CODE
LOWpackages/core/src/util/path/typechecks.ts103export function isAbsCubicCurveShortcutCmd(CODE
LOWpackages/core/src/util/path/typechecks.ts108export function isRelCubicCurveShortcutCmd(CODE
LOWpackages/core/src/util/path/typechecks.ts125export function isAbsQuadraticCurveShortcutCmd(CODE
LOWpackages/core/src/util/path/typechecks.ts130export function isRelQuadraticCurveShortcutCmd(CODE
LOWpackages/core/src/shapes/Object/StackedObject.spec.ts35function prepareObjectsForTreeTesting() {CODE
LOW…ages/core/src/parser/recursivelyParseGradientsXlink.ts16export function recursivelyParseGradientsXlink(CODE
LOWpackages/core/src/parser/getGlobalStylesForElement.ts8export function getGlobalStylesForElement(CODE
LOWpackages/core/src/canvas/Canvas.spec.ts674 function assertObjectsInOrderOnCanvas(CODE
LOWpackages/core/src/canvas/Canvas.spec.ts694 function assertNestedObjectsInOrder(CODE
LOWpackages/core/src/canvas/Canvas-events.spec.ts1063 function setSubTargetCheckRecursive(obj: any) {CODE
LOWpackages/core/src/canvas/Canvas-events.spec.ts1131 function setSubTargetCheckRecursive(obj: any) {CODE
LOW…e/tests/visual-output/rendering/testcases/free-draw.ts961async function renderFreedrawingWithDecimateToPoint(CODE
LOW…tput/rendering/testcases/global-composite-operation.ts151function generateGlobalCompositeTests(): renderTestType[] {CODE
AI Slop Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMpackages/core/src/canvas/StaticCanvas.ts507 // but the code is robust enough to mostly work with flippingCOMMENT