A modern & fully featured HTML5 game engine (2D & 3D) for JavaScript/TypeScript, with WebGL/WebGPU rendering, built-in physics, Tiled map & glTF support and WebAudio.
This report summarizes scanner evidence for melonjs/melonJS, a JavaScript project with 6,429 GitHub stars. SynthScan examined 457,124 lines of code across 1199 source files, recording 644 pattern matches distributed across 9 syntactic categories. The legacy adjusted pattern signal is 2.6 (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? 397 finding(s).
Are imports declared and package/API names verified? 8 finding(s).
Are wrappers, guards, and repeated structures necessary? 254 finding(s).
Which changes need focused human review? 644 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 644 distinct pattern matches across 9 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 |
|---|---|---|---|---|
| MEDIUM | packages/melonjs/tests/guid-pair-identity.spec.js | 58 | // ── the generator ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/guid-pair-identity.spec.js | 95 | // ── a Tiled-style level load ──────────────────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/guid-pair-identity.spec.js | 138 | // ── a manually populated world ────────────────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/guid-pair-identity.spec.js | 173 | // ── what the bug actually broke ───────────────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/bitmaptextdata.spec.js | 92 | // ── shared battery: the SAME assertions through both parsers ────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/bitmaptextdata.spec.js | 259 | // ── XML-only quirks (the text format is positional, so these don't apply) ───── | COMMENT |
| MEDIUM | packages/melonjs/tests/mesh_texture_groups.spec.js | 97 | // ── resolution ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/mesh_texture_groups.spec.js | 210 | // ── the WebGL draw ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/mesh_texture_groups.spec.js | 340 | // ── the WebGL accumulated (Camera2d) draw ─────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/mesh_texture_groups.spec.js | 390 | // ── review-hardening: cases the first cut got wrong (#1573) ───────── | COMMENT |
| MEDIUM | packages/melonjs/tests/mesh_texture_groups.spec.js | 390 | // ── review-hardening: cases the first cut got wrong (#1573) ───────── | COMMENT |
| MEDIUM | packages/melonjs/tests/mesh_texture_groups.spec.js | 600 | // ── per-material normal maps (#1574) ──────────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/mesh_texture_groups.spec.js | 600 | // ── per-material normal maps (#1574) ──────────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/color.spec.ts | 242 | // accepted) ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/texture-filter.spec.js | 56 | // ── resolver truth table (backend-neutral mode) ──────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/texture-filter.spec.js | 97 | // ── GL enum mapping ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/texture-filter.spec.js | 109 | // ── runtime setter, decoupled from setAntiAlias ──────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/texture-filter.spec.js | 139 | // ── per-mesh override precedence ─────────────────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/webgl_mesh_depth.spec.js | 145 | // ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/webgl_mesh_depth.spec.js | 147 | // ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/webgl_mesh_depth.spec.js | 256 | // ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/webgl_mesh_depth.spec.js | 258 | // ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/webgl_mesh_depth.spec.js | 360 | // ── ADVERSARIAL: depth accumulation across many meshes ────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/webgl_mesh_depth.spec.js | 430 | // ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/webgl_mesh_depth.spec.js | 432 | // ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/webgl_mesh_depth.spec.js | 591 | // ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/webgl_mesh_depth.spec.js | 593 | // ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/obj_normals.spec.js | 157 | // ── review-hardening: cases the first cut got wrong (#1572) ───────── | COMMENT |
| MEDIUM | packages/melonjs/tests/obj_normals.spec.js | 157 | // ── review-hardening: cases the first cut got wrong (#1572) ───────── | COMMENT |
| MEDIUM | packages/melonjs/tests/nineslicesprite.spec.js | 86 | // ── construction ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/nineslicesprite.spec.js | 128 | // ── static draw geometry ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/nineslicesprite.spec.js | 240 | // ── adversarial ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/vertex.spec.js | 11 | // ── normalizeVertices ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/vertex.spec.js | 180 | // ── projectVertices ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/vertex.spec.js | 391 | // ── computeVertexNormal ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/vertex.spec.js | 591 | // ── convexHull ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/vertex.spec.js | 732 | // ── ribbonSides ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/frameAnimation.spec.js | 74 | // ── addAnimation + animationspeed defaulting ───────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/frameAnimation.spec.js | 110 | // ── selection + query accessors ────────────────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/frameAnimation.spec.js | 152 | // ── update timing (the core stepping) ──────────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/frameAnimation.spec.js | 257 | // ── onFrame ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/frameAnimation.spec.js | 352 | // ── legacy resetAnim forms (back-compat) ───────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/frameAnimation.spec.js | 372 | // ── pause / play / stop + animationpause accessor ──────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/frameAnimation.spec.js | 414 | // ── reverseAnimation + dt accessor ─────────────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/frameAnimation.spec.js | 443 | // ── adversarial ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/frameAnimation.spec.js | 462 | // ── single-frame animations ────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/ui.spec.js | 32 | // ─── UIBaseElement ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/ui.spec.js | 149 | // ─── UISpriteElement ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/ui.spec.js | 253 | // ─── UITextButton ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/ui.spec.js | 337 | // ─── Real draw pass ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/transparent_queue.spec.js | 616 | // ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/transparent_queue.spec.js | 620 | // ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/transparent_queue.spec.js | 1203 | // ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/transparent_queue.spec.js | 1211 | // ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/sprite3d.spec.js | 634 | // ── adversarial: flip × texture atlas (trimmed + rotated) ─────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/gltf.spec.js | 32 | // ── GLB container builders ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/gltf.spec.js | 129 | // ── Parser ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/gltf.spec.js | 271 | // ── Adversarial / malformed-input robustness ───────────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/gltf.spec.js | 382 | // ── Normals & lights ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/melonjs/tests/gltf.spec.js | 592 | // ── Materials: baseColorFactor + vertex colors (COLOR_0) ────────────────────── | COMMENT |
| 179 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/matter-adapter/tests/parity.spec.ts | 121 | beforeEach(() => { | COMMENT |
| LOW | packages/matter-adapter/tests/parity.spec.ts | 201 | maxY = Math.max(maxY, p.y + poly.pos.y); | COMMENT |
| LOW | packages/matter-adapter/tests/parity.spec.ts | 281 | describe("anchorPoint and collision alignment", () => { | COMMENT |
| LOW | packages/matter-adapter/src/index.ts | 421 | } | COMMENT |
| LOW | packages/matter-adapter/src/index.ts | 561 | Matter.Composite.add(this.engine.world, body); | COMMENT |
| LOW | packages/matter-adapter/src/index.ts | 581 | // system translation living on the adapter where it belongs. | COMMENT |
| LOW | packages/matter-adapter/src/index.ts | 801 | private invalidateContactsFor(body: Matter.Body): void { | COMMENT |
| LOW | packages/matter-adapter/src/index.ts | 961 | // shapes. `part.vertices` are world-space and already carry the body's | COMMENT |
| LOW | packages/matter-adapter/src/index.ts | 1181 | // The supersedes rule (modern `onCollisionActive` wins over legacy | COMMENT |
| LOW | packages/matter-adapter/src/index.ts | 1201 | // are not in `renderableMap` (only the parent is), so looking the | COMMENT |
| LOW | packages/matter-adapter/src/index.ts | 1221 | // For END phase: dispatch to whichever partner is still attached | COMMENT |
| LOW | packages/matter-adapter/src/index.ts | 1481 | // the vertices to land where they were authored. The arithmetic | COMMENT |
| LOW | packages/debug-plugin/src/index.js | 141 | this._syncPosition(); | COMMENT |
| LOW | packages/debug-plugin/src/patches.js | 401 | // Under a Camera3d the renderer is mid-perspective-projection, so the | COMMENT |
| LOW | packages/melonjs/vitest.config.ts | 21 | } | COMMENT |
| LOW | packages/melonjs/vitest.config.ts | 41 | // Several specs create a WebGL context in `beforeAll`. On a CI | COMMENT |
| LOW | packages/melonjs/vitest.config.ts | 61 | // a context can sit past the timeout above. | COMMENT |
| LOW | packages/melonjs/tests/webgl_vao_teardown.spec.js | 101 | // still idempotent: a second teardown on the now-lost context must | COMMENT |
| LOW | packages/melonjs/tests/clipRect.spec.js | 221 | COMMENT | |
| LOW | packages/melonjs/tests/trigger_level_change.spec.js | 241 | loadOptions.push(settings); | COMMENT |
| LOW | packages/melonjs/tests/trigger_level_change.spec.js | 261 | // outright. Through `update(dt)` rather than `_onTick(timestamp)`: | COMMENT |
| LOW | packages/melonjs/tests/eye_position.spec.js | 301 | // batcher, and a uniform lives on its program. The batcher skips a | COMMENT |
| LOW | …ages/melonjs/tests/createPattern_repeat_parity.spec.js | 401 | it("cache.get(image, {framewidth, frameheight}) with multiple atlases under one image", (ctx) => { | COMMENT |
| LOW | packages/melonjs/tests/vertexBuffer.spec.js | 181 | // Uint32 packing is reinterpreted as Float32 — namely any color whose | COMMENT |
| LOW | packages/melonjs/tests/audio-backend.spec.js | 761 | // play, then `loop(true, id)` on the id it returned. There are two | COMMENT |
| LOW | packages/melonjs/tests/audio-backend.spec.js | 1061 | // THE reported bug, from the engine's side. `_autoSuspend` moves the | COMMENT |
| LOW | packages/melonjs/tests/camera3d_integration.spec.js | 361 | // didn't override the camera class. The bug surfaced in real apps via | COMMENT |
| LOW | packages/melonjs/tests/camera3d_integration.spec.js | 421 | expect(app.world.sortOn, `stage[${i}]`).toBe(expected[i]); | COMMENT |
| LOW | packages/melonjs/tests/platform.spec.ts | 101 | // iPadOS 13 (Sept 2019) made Safari ship the desktop Mac UA by | COMMENT |
| LOW | packages/melonjs/tests/builtin-resting.spec.js | 421 | COMMENT | |
| LOW | packages/melonjs/tests/webgl_mesh_depth.spec.js | 301 | // 2. green mesh at z=-10 (farther, drawn second — should be | COMMENT |
| LOW | packages/melonjs/tests/webgl_mesh_depth.spec.js | 361 | // Each drawMesh flushes immediately (separate draw call), so inter-mesh | COMMENT |
| LOW | packages/melonjs/tests/webgl_mesh_depth.spec.js | 421 | // must paint over the platform regardless of order. | COMMENT |
| LOW | packages/melonjs/tests/lights.spec.js | 1901 | // shader that `WebGLRenderer.drawLight` happens to use for Light2d. | COMMENT |
| LOW | packages/melonjs/tests/lights.spec.js | 1961 | // | COMMENT |
| LOW | packages/melonjs/tests/lights.spec.js | 2061 | // Lights 2-N hit the same shader and accumulate without | COMMENT |
| LOW | packages/melonjs/tests/webgl_mesh_fog.spec.js | 981 | // The placement uniforms live on the PROGRAM, so a swapped shader | COMMENT |
| LOW | …ages/melonjs/tests/builtin-adapter-adversarial.spec.js | 701 | // viewport, so we opt into always-update. | COMMENT |
| LOW | …ages/melonjs/tests/builtin-adapter-adversarial.spec.js | 821 | it("Quirk #6: collision callbacks fire INLINE during step — handler-side vel mutation on a peer is integrated within t | COMMENT |
| LOW | …ages/melonjs/tests/builtin-adapter-adversarial.spec.js | 1101 | COMMENT | |
| LOW | packages/melonjs/tests/lit_quad_specular.spec.js | 181 | // a highlight is light reflected OFF the surface, not the | COMMENT |
| LOW | packages/melonjs/tests/prewarm.spec.js | 121 | it("warms again once the context is restored", async (ctx) => { | COMMENT |
| LOW | packages/melonjs/tests/emitter.spec.js | 261 | // --------------------------------------------------------------------- | COMMENT |
| LOW | packages/melonjs/tests/camera3d.spec.js | 201 | 5, | COMMENT |
| LOW | packages/melonjs/tests/camera3d.spec.js | 661 | // local pos.z), so a child inside a container that itself has | COMMENT |
| LOW | packages/melonjs/tests/builtin-line-collision.spec.js | 121 | expect(box.pos.x).toBeGreaterThan(startX + 50); | COMMENT |
| LOW | packages/melonjs/tests/transparent_queue.spec.js | 241 | // camera's view — one scaled container makes the upper 3x3 | COMMENT |
| LOW | packages/melonjs/tests/transparent_queue.spec.js | 901 | // vertices sit at view-space z = 0: the camera itself. The divide | COMMENT |
| LOW | packages/melonjs/tests/vector2d.spec.ts | 401 | // depends on which components are zero, and `atan2` reads that | COMMENT |
| LOW | packages/melonjs/tests/container.spec.js | 881 | // (= world 110 and 90). Camera cached at (0, 0, 0) — siblings' | COMMENT |
| LOW | packages/melonjs/tests/container.spec.js | 1521 | expect(child.visibleInAllCameras).toEqual(true); | COMMENT |
| LOW | packages/melonjs/tests/depth.spec.js | 461 | }); | COMMENT |
| LOW | packages/melonjs/tests/audio-preload-regression.spec.js | 161 | } | COMMENT |
| LOW | packages/melonjs/tests/texture.spec.js | 401 | // start from a drained unit pool: the 50 sibling tests above can | COMMENT |
| LOW | packages/melonjs/tests/mesh.spec.js | 1141 | // transform before projection. With width=60 from | COMMENT |
| LOW | packages/melonjs/tests/hdr-render-target.spec.js | 161 | // `OES_texture_half_float_linear`, which the Khronos registry marks | COMMENT |
| LOW | packages/melonjs/tests/hdr-render-target.spec.js | 801 | COMMENT | |
| LOW | packages/melonjs/tests/asset-paths-with-spaces.spec.js | 61 | ["binary", "data/misc/plain.bin", "data/misc/name with space.bin"], | COMMENT |
| LOW | packages/melonjs/tests/webgl_required_check.spec.js | 41 | }; | COMMENT |
| LOW | packages/melonjs/tests/webgl_mesh_anchor.spec.js | 261 | // offset (≈ -2000 px) flings it off-screen, leaving the center red. | COMMENT |
| 299 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | packages/matter-adapter/src/index.ts | 1046 | // robust than reading the normal sign. | COMMENT |
| MEDIUM | packages/melonjs/src/video/texture/noise_texture2d.js | 82 | * // a seamless water normal map fed to a lit sprite | COMMENT |
| MEDIUM | packages/melonjs/src/video/effects/shadereffect.js | 572 | * // a shader that scrolls a static seamless noise texture over time | COMMENT |
| MEDIUM | packages/melonjs/src/physics/builtin/raycast.ts | 289 | // We still check to be robust. | COMMENT |
| MEDIUM | …ges/examples/src/examples/heatHaze/ExampleHeatHaze.tsx | 40 | uniform sampler2D uNoise; // seamless flow map | CODE |
| MEDIUM | …s/examples/src/examples/nightcity/ExampleNightCity.tsx | 248 | // so the aim returns to its start as the loop wraps (seamless). | COMMENT |
| MEDIUM | …es/src/examples/earthDefender/ExampleEarthDefender.tsx | 255 | // fallback and the gapless one, which a seamless loop wants. | COMMENT |
| MEDIUM | …ages/examples/src/examples/earthDefender/fx/scenery.ts | 86 | // is a texel-aligned copy of a seamless tile; as a grid of separate | COMMENT |
| MEDIUM | …ges/examples/src/examples/aquarium/ExampleAquarium.tsx | 71 | uniform sampler2D uNoise; // static seamless flow map | CODE |
| MEDIUM | …ges/examples/src/examples/aquarium/ExampleAquarium.tsx | 237 | // static seamless noise flow map (baked once; scrolled on the GPU) | COMMENT |
| MEDIUM | packages/planck-adapter/src/index.ts | 1114 | // comparing the other body's vertical position is more robust. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | packages/melonjs/tests/ground_shadow.spec.js | 338 | const before = renderer._shadowQuads.unlit._modelMatrix.val.slice(); | CODE |
| CRITICAL | packages/melonjs/tests/ground_shadow.spec.js | 367 | const before = renderer._shadowQuads.unlit._modelMatrix.val.slice(); | CODE |
| CRITICAL | packages/melonjs/tests/ground_shadow.spec.js | 2661 | const before = renderer._shadowQuads.unlit._modelMatrix.val.slice(); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | packages/melonjs/tests/blend-modes-conformance.spec.js | 137 | // the scaffold places its builtin bindings ABOVE the user's, so the | COMMENT |
| MEDIUM | packages/melonjs/tests/mesh_hosted_effect.spec.js | 189 | // the WGSL module has no module-scope equivalent (the quad scaffold | COMMENT |
| MEDIUM | packages/melonjs/tests/lighting_block_wiring.spec.js | 354 | // The scaffold's normal map is flat +Z under a light directly overhead, so | COMMENT |
| MEDIUM | packages/melonjs/src/video/webgpu/pipeline/cache.js | 315 | // same group-1 shape as the effect scaffold | COMMENT |
| MEDIUM | packages/melonjs/src/video/effects/shadereffect.js | 417 | // which the sprite scaffold does not read) | COMMENT |
| MEDIUM | packages/melonjs/src/video/effects/shadereffect.js | 909 | // size_img @2, offset @4 — the scaffold's MEBuiltins layout); | COMMENT |
| MEDIUM | packages/melonjs/src/video/effects/mesh_splice.js | 108 | // equivalent — the quad scaffold shims one in as a `var<private>` — so a | COMMENT |
| MEDIUM | packages/melonjs/src/video/effects/wgsl/scaffold.js | 94 | "// ---- melonJS effect scaffold ----", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/release.ts | 199 | function assertPluginManifestVersion(version: string) { | CODE |
| LOW | packages/melonjs/tests/tmxtileset.spec.js | 946 | function makeCollectionWithSubRect(tileData) { | CODE |
| LOW | …es/melonjs/src/video/webgl/shaders/multitexture-lit.js | 70 | export function buildLitMultiTextureFragment(maxTextures) { | CODE |
| LOW | …ckages/melonjs/src/video/webgl/shaders/multitexture.js | 14 | export function buildMultiTextureFragment(maxTextures) { | CODE |
| LOW | packages/melonjs/src/video/webgl/lighting/pack.ts | 27 | export function createLightUniformScratch(): LightUniformScratch { | CODE |
| LOW | packages/melonjs/src/video/effects/local_space.js | 95 | export function localVertexDeclarationsGLSL(builtins) { | CODE |
| LOW | packages/melonjs/src/video/effects/local_space.js | 118 | export function localVertexStatementsGLSL(builtins) { | CODE |
| LOW | packages/melonjs/src/video/effects/local_space.js | 192 | export function localVertexStatementsWGSL(builtins) { | CODE |
| LOW | packages/melonjs/src/particles/emitter.ts | 45 | function createDefaultParticleTexture( | CODE |
| LOW | packages/melonjs/src/loader/parsers/pbr.ts | 86 | export function specularFromMetallicRoughness( | CODE |
| LOW | packages/melonjs/src/geometries/roundrect.ts | 62 | function setOrPush(x: number, y: number) { | CODE |
| LOW | packages/melonjs/src/geometries/toarccanvas.ts | 96 | export function endpointToCenterParameterization( | CODE |
| LOW | packages/melonjs/src/level/tiled/TMXObjectFactory.js | 164 | export function registerTiledObjectFactory(type, factory) { | CODE |
| LOW | packages/melonjs/src/level/tiled/TMXObjectFactory.js | 271 | export function registerBuiltinTiledClass(name, Constructor) { | CODE |
| LOW | packages/examples/src/examples/whac-a-mole/effects.ts | 33 | export function attachChromaticAberration( | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/melonjs/tests/plugin.spec.js | 20 | this.name = "John Doe"; | CODE |
| LOW | packages/melonjs/tests/bughunt-renderables.spec.js | 285 | text: "placeholder", | CODE |
| LOW | packages/melonjs/tests/bughunt-renderables.spec.js | 296 | text: "placeholder", | CODE |
| LOW | packages/melonjs/tests/font.spec.js | 142 | "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna | CODE |
| LOW | packages/melonjs/tests/font.spec.js | 142 | "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | …ages/melonjs/tests/createPattern_repeat_parity.spec.js | 161 | // Step 1: a sprite-like atlas allocates a unit for (source, no-repeat) | COMMENT |
| LOW⚡ | …ages/melonjs/tests/createPattern_repeat_parity.spec.js | 165 | // Step 2: a pattern allocates a separate unit for (source, repeat-x) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | …ages/melonjs/tests/createPattern_repeat_parity.spec.js | 161 | // Step 1: a sprite-like atlas allocates a unit for (source, no-repeat) | COMMENT |
| LOW⚡ | …ages/melonjs/tests/createPattern_repeat_parity.spec.js | 165 | // Step 2: a pattern allocates a separate unit for (source, repeat-x) | COMMENT |