the elegant TypeScript UI framework
This report summarizes scanner evidence for Ripple-TS/ripple, a JavaScript project with 7,412 GitHub stars. SynthScan examined 483,447 lines of code across 1861 source files, recording 250 pattern matches distributed across 8 syntactic categories. The legacy adjusted pattern signal is 0.7 (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? 230 finding(s).
Are imports declared and package/API names verified? 6 finding(s).
Are wrappers, guards, and repeated structures necessary? 143 finding(s).
Which changes need focused human review? 250 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 250 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 | …chmarks/weather-app/svelte/src/weather-state.svelte.js | 51 | function getCurrentLocationWeather() { | CODE |
| LOW | packages/adapter-node/types/index.d.ts | 62 | export function webResponseToNodeResponse( | CODE |
| LOW | packages/tsrx-ripple/src/transform/client/index.js | 1802 | function SetContextForOutsideComponent(context, more_state = {}) { | CODE |
| LOW | packages/tsrx-ripple/src/transform/client/index.js | 1814 | function SetStateForOutsideComponent(state, more_state = {}) { | CODE |
| LOW | packages/vite-plugin/tests/prerender-entries.test.js | 93 | function expectValidEntriesAccepted() { | CODE |
| LOW | packages/vite-plugin/src/index.js | 249 | function hasRippleFilesInDirectory(dir, maxDepth = 3) { | CODE |
| LOW | packages/ripple/tests/setup-hydration.js | 38 | export async function hydrateComponentWithRootBoundary( | CODE |
| LOW | packages/ripple/tests/hydration/compiled/server/html.js | 141 | export function HtmlInChildrenWithSiblings() { | CODE |
| LOW | packages/ripple/tests/hydration/compiled/server/html.js | 234 | export function HtmlWithCommentsInChildren() { | CODE |
| LOW | packages/ripple/tests/hydration/compiled/server/html.js | 519 | export function HtmlAfterSwitchInChildren() { | CODE |
| LOW | packages/ripple/tests/hydration/compiled/server/html.js | 873 | export function HtmlAfterComponentInChildren() { | CODE |
| LOW | packages/ripple/tests/hydration/compiled/server/html.js | 1189 | export function ArticleWithChildrenThenSibling() { | CODE |
| LOW | packages/ripple/tests/hydration/compiled/server/html.js | 1261 | export function ArticleWithHtmlChildThenSibling() { | CODE |
| LOW | packages/ripple/tests/hydration/compiled/server/html.js | 1365 | export function InlineArticleWithHtmlChild() { | CODE |
| LOW | packages/ripple/tests/hydration/compiled/server/html.js | 1750 | export function DocsLayoutExactWithoutData() { | CODE |
| LOW | packages/ripple/tests/hydration/compiled/server/html.js | 1798 | export function TemplateWithHtmlAndSiblings() { | CODE |
| LOW | packages/ripple/tests/hydration/compiled/server/html.js | 1858 | export function HtmlCodeBlocksWithSiblingChain() { | CODE |
| LOW | …/tests/hydration/compiled/server/mixed-control-flow.js | 171 | export function MixedControlFlowAsyncPending() { | CODE |
| LOW | …ple/tests/hydration/compiled/server/fragment-cursor.js | 17 | export function TrailingNavigatedElements() { | CODE |
| LOW | …ple/tests/hydration/compiled/server/fragment-cursor.js | 30 | export function TrailingStaticNavigatedElements() { | CODE |
| LOW | …ple/tests/hydration/compiled/server/fragment-cursor.js | 56 | export function LeadingNavigatedThenStatic() { | CODE |
| LOW | …ple/tests/hydration/compiled/server/fragment-cursor.js | 82 | export function NestedNavigatedThenStatic() { | CODE |
| LOW | …ple/tests/hydration/compiled/server/fragment-cursor.js | 284 | export function WrapTrailingNavigatedElements() { | CODE |
| LOW | …ple/tests/hydration/compiled/server/fragment-cursor.js | 308 | export function WrapTrailingStaticNavigatedElements() { | CODE |
| LOW | …ple/tests/hydration/compiled/server/fragment-cursor.js | 356 | export function WrapLeadingNavigatedThenStatic() { | CODE |
| LOW | …ple/tests/hydration/compiled/server/fragment-cursor.js | 380 | export function WrapTrailingNestedNavigated() { | CODE |
| LOW | …ple/tests/hydration/compiled/server/fragment-cursor.js | 404 | export function WrapNestedNavigatedThenStatic() { | CODE |
| LOW | …ple/tests/hydration/compiled/server/fragment-cursor.js | 428 | export function WrapTrackedTextThenStatic() { | CODE |
| LOW | …ple/tests/hydration/compiled/server/fragment-cursor.js | 452 | export function WrapStaticThenTrackedText() { | CODE |
| LOW | …ple/tests/hydration/compiled/server/fragment-cursor.js | 476 | export function WrapStaticNestedThenStatic() { | CODE |
| LOW | …ple/tests/hydration/compiled/server/fragment-cursor.js | 548 | export function WrapDynamicChildThenStatic() { | CODE |
| LOW | …ple/tests/hydration/compiled/server/fragment-cursor.js | 887 | export function WrapUntrackedTextThenStatic() { | CODE |
| LOW | …ple/tests/hydration/compiled/server/fragment-cursor.js | 911 | export function WrapNestedFragmentThenStatic() { | CODE |
| LOW | …ple/tests/hydration/compiled/server/fragment-cursor.js | 935 | export function WrapTrailingNestedFragment() { | CODE |
| LOW | …ple/tests/hydration/compiled/server/fragment-cursor.js | 1079 | export function WrapInlineElementThenStatic() { | CODE |
| LOW | …ple/tests/hydration/compiled/server/fragment-cursor.js | 1397 | export function StaticThenStyleThenStatic() { | CODE |
| LOW | …ple/tests/hydration/compiled/server/fragment-cursor.js | 1432 | export function WrapStaticThenStyleThenStatic() { | CODE |
| LOW | …ple/tests/hydration/compiled/server/fragment-cursor.js | 1568 | export function CompThenStatementThenStaticInDiv() { | CODE |
| LOW | …hydration/compiled/server/track-async-serialization.js | 614 | export function AsyncWithReactiveDependency() { | CODE |
| LOW | …hydration/compiled/server/track-async-serialization.js | 657 | export function AsyncWithReadOnlyDependency() { | CODE |
| LOW | packages/ripple/tests/hydration/compiled/server/try.js | 162 | export function AsyncTryWithLeadingSibling() { | CODE |
| LOW | …/ripple/tests/hydration/compiled/server/if-children.js | 111 | export function IfWithSiblingsAndChildren({ children }) { | CODE |
| LOW | …/ripple/tests/hydration/compiled/server/if-children.js | 145 | export function TestIfWithSiblingsAndChildren() { | CODE |
| LOW | …/ripple/tests/hydration/compiled/server/if-children.js | 179 | export function ElementWithChildrenThenIf() { | CODE |
| LOW | …/ripple/tests/hydration/compiled/server/if-children.js | 231 | export function DomElementChildrenThenSibling() { | CODE |
| LOW | …/ripple/tests/hydration/compiled/server/if-children.js | 258 | export function DomChildrenThenStaticSiblings() { | CODE |
| LOW | …/ripple/tests/hydration/compiled/server/if-children.js | 271 | export function StaticListThenStaticSiblings() { | CODE |
| LOW | …/ripple/tests/hydration/compiled/server/if-children.js | 333 | export function ComponentChildrenWithControlFlowRoots() { | CODE |
| LOW | …s/hydration/compiled/server/if-fragment-controlflow.js | 138 | export function ComponentBodyFragmentControlFlow() { | CODE |
| LOW | …s/hydration/compiled/server/if-fragment-controlflow.js | 165 | export function ComponentBodyCodeBlockControlFlow() { | CODE |
| LOW | packages/ripple/tests/hydration/compiled/server/for.js | 917 | export function KeyedForLoopAppendAndRotate() { | CODE |
| LOW | packages/ripple/tests/hydration/compiled/server/for.js | 961 | export function RootKeyedForLoopAppendAndRotate() { | CODE |
| LOW | …ckages/ripple/tests/hydration/compiled/server/basic.js | 210 | export function NestedTsxTsrxExpressionValues() { | CODE |
| LOW | …ckages/ripple/tests/hydration/compiled/server/basic.js | 290 | export function MixedTsrxCollectionSplitServerText() { | CODE |
| LOW | …ckages/ripple/tests/hydration/compiled/server/basic.js | 334 | export function MixedTsrxCollectionSplitClientText() { | CODE |
| LOW | …ckages/ripple/tests/hydration/compiled/server/basic.js | 378 | export function MixedTsrxCollectionPrimitiveServerText() { | CODE |
| LOW | …ckages/ripple/tests/hydration/compiled/server/basic.js | 414 | export function MixedTsrxCollectionPrimitiveClientText() { | CODE |
| LOW | …ckages/ripple/tests/hydration/compiled/server/basic.js | 496 | export function DynamicArrayFromConditional() { | CODE |
| LOW | …ckages/ripple/tests/hydration/compiled/server/basic.js | 543 | export function NestedTsrxInsideTopLevelTsxExpression() { | CODE |
| LOW | …ckages/ripple/tests/hydration/compiled/server/basic.js | 571 | export function NestedTsrxElementsInsideTopLevelTsxValue() { | CODE |
| 69 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | benchmarks/dbmon/solid/src/App.jsx | 1 | import { For, createStore, reconcile } from 'solid-js'; | COMMENT |
| LOW | benchmarks/effectful-list/inferno/src/fx.js | 1 | // __fx lifecycle counters + the SHARED module-level callback ref. | COMMENT |
| LOW | benchmarks/effectful-list/inferno/src/ops.js | 1 | // Shared op driver for the effectful-list bench — framework-agnostic. The App | COMMENT |
| LOW | benchmarks/effectful-list/svelte/src/fx.js | 1 | // __fx lifecycle counters + the SHARED module-level callback ref. | COMMENT |
| LOW | benchmarks/effectful-list/svelte/src/ops.js | 1 | // Shared op driver for the effectful-list bench — framework-agnostic. The App | COMMENT |
| LOW | benchmarks/effectful-list/octane-tsrx/src/fx.js | 1 | // __fx lifecycle counters + the SHARED module-level callback ref. | COMMENT |
| LOW | benchmarks/effectful-list/octane-tsrx/src/ops.js | 1 | // Shared op driver for the effectful-list bench — framework-agnostic. The App | COMMENT |
| LOW | benchmarks/effectful-list/ripple/src/fx.js | 1 | // __fx lifecycle counters + the SHARED module-level callback ref. | COMMENT |
| LOW | benchmarks/effectful-list/ripple/src/ops.js | 1 | // Shared op driver for the effectful-list bench — framework-agnostic. The App | COMMENT |
| LOW | benchmarks/effectful-list/solid/src/Row.jsx | 1 | import { createEffect, onCleanup, getOwner } from 'solid-js'; | COMMENT |
| LOW | benchmarks/effectful-list/solid/src/fx.js | 1 | // __fx lifecycle counters + the SHARED module-level callback ref — Solid | COMMENT |
| LOW | benchmarks/effectful-list/solid/src/ops.js | 1 | // Shared op driver for the effectful-list bench — framework-agnostic. The App | COMMENT |
| LOW | benchmarks/effectful-list/preact/src/Row.jsx | 1 | import { useCallback, useEffect, useLayoutEffect, useRef } from 'preact/hooks'; | COMMENT |
| LOW | benchmarks/effectful-list/preact/src/fx.js | 1 | // __fx lifecycle counters + the SHARED module-level callback ref. | COMMENT |
| LOW | benchmarks/effectful-list/preact/src/ops.js | 1 | // Shared op driver for the effectful-list bench — framework-agnostic. The App | COMMENT |
| LOW | benchmarks/effectful-list/octane-jsx/src/fx.js | 1 | // __fx lifecycle counters + the SHARED module-level callback ref. | COMMENT |
| LOW | benchmarks/effectful-list/octane-jsx/src/ops.js | 1 | // Shared op driver for the effectful-list bench — framework-agnostic. The App | COMMENT |
| LOW | benchmarks/effectful-list/vue-vapor/vite.config.js | 1 | import { defineConfig } from 'vite'; | COMMENT |
| LOW | benchmarks/effectful-list/vue-vapor/src/fx.js | 1 | // __fx lifecycle counters + the SHARED module-level callback ref — Vue Vapor | COMMENT |
| LOW | benchmarks/effectful-list/vue-vapor/src/Row.vue | 1 | <script setup vapor> | COMMENT |
| LOW | benchmarks/effectful-list/vue-vapor/src/ops.js | 1 | // Shared op driver for the effectful-list bench — framework-agnostic. The App | COMMENT |
| LOW | benchmarks/effectful-list/react/src/Row.jsx | 1 | import { useEffect, useLayoutEffect, useRef } from 'react'; | COMMENT |
| LOW | benchmarks/effectful-list/react/src/fx.js | 1 | // __fx lifecycle counters + the SHARED module-level callback ref. | COMMENT |
| LOW | benchmarks/effectful-list/react/src/ops.js | 1 | // Shared op driver for the effectful-list bench — framework-agnostic. The App | COMMENT |
| LOW | benchmarks/recursive-context/solid/src/App.jsx | 1 | import { createSignal, createContext, useContext } from 'solid-js'; | COMMENT |
| LOW | benchmarks/recursive-context/octane-jsx/src/App.tsx | 1 | import { useState, createContext, use } from 'octane'; | COMMENT |
| LOW | benchmarks/recursive-context/vue-vapor/vite.config.js | 1 | import { defineConfig } from 'vite'; | COMMENT |
| LOW | benchmarks/streaming-ssr/inferno/src/data.ts | 61 | // Called ONCE per render, before the framework render starts: all ten data | COMMENT |
| LOW | benchmarks/streaming-ssr/ripple/src/data.ts | 61 | // Called ONCE per render, before the framework render starts: all ten data | COMMENT |
| LOW | benchmarks/streaming-ssr/solid/src/data.ts | 61 | // Called ONCE per render, before the framework render starts: all ten data | COMMENT |
| LOW | benchmarks/streaming-ssr/preact/src/data.ts | 61 | // Called ONCE per render, before the framework render starts: all ten data | COMMENT |
| LOW | benchmarks/streaming-ssr/octane/src/data.ts | 61 | // Called ONCE per render, before the framework render starts: all ten data | COMMENT |
| LOW | benchmarks/streaming-ssr/react/src/data.ts | 61 | // Called ONCE per render, before the framework render starts: all ten data | COMMENT |
| LOW | benchmarks/news/vue-vapor/vite.config.js | 1 | import { defineConfig } from 'vite'; | COMMENT |
| LOW | benchmarks/memo-wall/svelte/src/ops.js | 1 | // Shared op driver for the memo-wall bench — framework-agnostic (identical | COMMENT |
| LOW | benchmarks/memo-wall/octane-tsrx/src/wall-b.ts | 1 | // Wall B's row factory — a PLAIN .ts module the octane compiler never touches. | COMMENT |
| LOW | benchmarks/memo-wall/octane-tsrx/src/ops.js | 1 | // Shared op driver for the memo-wall bench — framework-agnostic (identical | COMMENT |
| LOW | benchmarks/memo-wall/ripple/src/ops.js | 1 | // Shared op driver for the memo-wall bench — framework-agnostic (identical | COMMENT |
| LOW | benchmarks/memo-wall/solid/src/rows.jsx | 1 | import { createContext, useContext } from 'solid-js'; | COMMENT |
| LOW | benchmarks/memo-wall/solid/src/ops.js | 1 | // Shared op driver for the memo-wall bench — framework-agnostic (identical | COMMENT |
| LOW | benchmarks/memo-wall/preact/src/ops.js | 1 | // Shared op driver for the memo-wall bench — framework-agnostic (identical | COMMENT |
| LOW | benchmarks/memo-wall/octane-jsx/src/App.tsx | 1 | import { useState } from 'octane'; | COMMENT |
| LOW | benchmarks/memo-wall/octane-jsx/src/ops.js | 1 | // Shared op driver for the memo-wall bench — framework-agnostic (identical | COMMENT |
| LOW | benchmarks/memo-wall/vue-vapor/src/ops.js | 1 | // Shared op driver for the memo-wall bench — framework-agnostic (identical | COMMENT |
| LOW | benchmarks/memo-wall/react/src/ops.js | 1 | // Shared op driver for the memo-wall bench — framework-agnostic (identical | COMMENT |
| LOW | benchmarks/svg-dashboard/inferno/src/ops.js | 1 | // svg-dashboard shared op driver — framework-agnostic. Each App binds its | COMMENT |
| LOW | benchmarks/svg-dashboard/svelte/src/ops.js | 1 | // svg-dashboard shared op driver — framework-agnostic. Each App binds its | COMMENT |
| LOW | benchmarks/svg-dashboard/octane-tsrx/src/ops.js | 1 | // svg-dashboard shared op driver — framework-agnostic. Each App binds its | COMMENT |
| LOW | benchmarks/svg-dashboard/ripple/src/ops.js | 1 | // svg-dashboard shared op driver — framework-agnostic. Each App binds its | COMMENT |
| LOW | benchmarks/svg-dashboard/solid/src/App.jsx | 1 | import { For, Show, createRenderEffect, createStore, onCleanup, reconcile } from 'solid-js'; | COMMENT |
| LOW | benchmarks/svg-dashboard/solid/src/ops.js | 1 | // svg-dashboard shared op driver — framework-agnostic. Each App binds its | COMMENT |
| LOW | benchmarks/svg-dashboard/react/src/ops.js | 1 | // svg-dashboard shared op driver — framework-agnostic. Each App binds its | COMMENT |
| LOW | benchmarks/signal-favoring/vue-vapor/vite.config.js | 1 | import { defineConfig } from 'vite'; | COMMENT |
| LOW | benchmarks/portal-swarm/solid/src/App.jsx | 1 | import { createSignal, For, Show } from 'solid-js'; | COMMENT |
| LOW | benchmarks/portal-swarm/vue-vapor/src/Section.vue | 1 | <script setup vapor> | COMMENT |
| LOW | benchmarks/chat-stream/inferno/src/data.js | 1 | // Deterministic chat corpus — IDENTICAL in every framework app (this file is | COMMENT |
| LOW | benchmarks/chat-stream/svelte/src/data.js | 1 | // Deterministic chat corpus — IDENTICAL in every framework app (this file is | COMMENT |
| LOW | benchmarks/chat-stream/octane-tsrx/src/data.js | 1 | // Deterministic chat corpus — IDENTICAL in every framework app (this file is | COMMENT |
| LOW | benchmarks/chat-stream/ripple/src/data.js | 1 | // Deterministic chat corpus — IDENTICAL in every framework app (this file is | COMMENT |
| LOW | benchmarks/chat-stream/solid/src/data.js | 1 | // Deterministic chat corpus — IDENTICAL in every framework app (this file is | COMMENT |
| 14 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | benchmarks/js-framework/inferno/src/main.jsx | 82 | // replayed by ../../run-reorder.mjs for its identity gate) ────────────────── | COMMENT |
| MEDIUM | benchmarks/js-framework/solid/src/main.jsx | 100 | // replayed by ../../run-reorder.mjs for its identity gate) ────────────────── | COMMENT |
| MEDIUM | benchmarks/js-framework/preact/src/main.jsx | 86 | // replayed by ../../run-reorder.mjs for its identity gate) ────────────────── | COMMENT |
| MEDIUM | benchmarks/js-framework/octane-jsx/src/Main.tsx | 99 | // replayed by ../../run-reorder.mjs for its identity gate) ────────────────── | COMMENT |
| MEDIUM | benchmarks/js-framework/react/src/main.jsx | 91 | // replayed by ../../run-reorder.mjs for its identity gate) ────────────────── | COMMENT |
| MEDIUM | …ges/ripple/tests/hydration/nested-control-flow.test.js | 20 | // ── for + if ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ges/ripple/tests/hydration/nested-control-flow.test.js | 31 | // ── for + switch ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ges/ripple/tests/hydration/nested-control-flow.test.js | 44 | // ── if + switch (no for) ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ges/ripple/tests/hydration/nested-control-flow.test.js | 62 | // ── for + if + switch (single item — no inter-item cursor advance) ──────────── | COMMENT |
| MEDIUM | …ges/ripple/tests/hydration/nested-control-flow.test.js | 76 | // ── for + if + switch (multiple items — the regression) ────────────────────── | COMMENT |
| MEDIUM | …ges/ripple/tests/hydration/nested-control-flow.test.js | 100 | // ── switch + try (no for/if — baseline for try cursor behaviour) ───────────── | COMMENT |
| MEDIUM⚡ | …ges/ripple/tests/hydration/nested-control-flow.test.js | 111 | // ── for + switch + try (no if) ──────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | …ges/ripple/tests/hydration/nested-control-flow.test.js | 121 | // ── for + if + try (no switch) ──────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | …ges/ripple/tests/hydration/nested-control-flow.test.js | 131 | // ── for + if + switch + try ─────────────────────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/tsrx-ripple/src/transform/client/index.js | 4650 | // We need to check if any child nodes are dynamic to determine | COMMENT |
| LOW | packages/cli/src/lib/project-creator.js | 41 | // Step 1: Get or download template | COMMENT |
| LOW | packages/cli/src/lib/project-creator.js | 63 | // Step 2: Create project directory | COMMENT |
| LOW | packages/cli/src/lib/project-creator.js | 76 | // Step 3: Copy template files | COMMENT |
| LOW | packages/cli/src/lib/project-creator.js | 102 | // Step 4: Update package.json | COMMENT |
| LOW | packages/cli/src/lib/project-creator.js | 115 | // Step 5: Configure styling | COMMENT |
| LOW | packages/cli/src/lib/project-creator.js | 128 | // Step 6: Initialize Git (if requested) | COMMENT |
| LOW | packages/cli/src/commands/create.js | 34 | // Step 1: Get or validate project name | COMMENT |
| LOW⚡ | packages/cli/src/commands/create.js | 48 | // Step 2: Check directory and handle conflicts | COMMENT |
| LOW⚡ | packages/cli/src/commands/create.js | 54 | // Step 3: Get template | COMMENT |
| LOW | packages/cli/src/commands/create.js | 67 | // Step 4: Get package manager | COMMENT |
| LOW | packages/cli/src/commands/create.js | 79 | // Step 5: Git initialization preference | COMMENT |
| LOW | packages/cli/src/commands/create.js | 100 | // Step 6: Create the project | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | packages/tsrx-ripple/src/enums.js | 187 | context.state.scope.root.conflicts.add(node.name); | CODE |
| CRITICAL | packages/tsrx-ripple/src/analyze/index.js | 1586 | context.state.analysis.metadata.serverImportDeclarations.push(node); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/cli/src/lib/project-creator.js | 41 | // Step 1: Get or download template | COMMENT |
| LOW | packages/cli/src/lib/project-creator.js | 63 | // Step 2: Create project directory | COMMENT |
| LOW | packages/cli/src/lib/project-creator.js | 76 | // Step 3: Copy template files | COMMENT |
| LOW | packages/cli/src/lib/project-creator.js | 102 | // Step 4: Update package.json | COMMENT |
| LOW | packages/cli/src/lib/project-creator.js | 115 | // Step 5: Configure styling | COMMENT |
| LOW | packages/cli/src/lib/project-creator.js | 128 | // Step 6: Initialize Git (if requested) | COMMENT |
| LOW | packages/cli/src/commands/create.js | 34 | // Step 1: Get or validate project name | COMMENT |
| LOW⚡ | packages/cli/src/commands/create.js | 48 | // Step 2: Check directory and handle conflicts | COMMENT |
| LOW⚡ | packages/cli/src/commands/create.js | 54 | // Step 3: Get template | COMMENT |
| LOW | packages/cli/src/commands/create.js | 67 | // Step 4: Get package manager | COMMENT |
| LOW | packages/cli/src/commands/create.js | 79 | // Step 5: Git initialization preference | COMMENT |
| LOW | packages/cli/src/commands/create.js | 100 | // Step 6: Create the project | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | packages/vite-plugin/src/server/production.js | 354 | // static per-request head additions go into the scaffold | COMMENT |
| MEDIUM | packages/vite-plugin/src/server/render-route.js | 104 | // static per-request head additions go into the scaffold | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/tsrx-ripple/src/dom-setters.js | 48 | input: ['accept', 'align', 'alt', 'autocomplete', 'capture', 'checked', 'defaultChecked', 'defaultValue', 'dirName', 'd | CODE |
| LOW | packages/tsrx-ripple/src/dom-setters.js | 76 | textarea: ['autocomplete', 'cols', 'defaultValue', 'dirName', 'disabled', 'maxLength', 'minLength', 'name', 'placeholde | CODE |
| LOW | packages/ripple/tests/hydration/reactivity.test.js | 35 | expect(container.querySelector('.name')?.textContent).toBe('John Doe'); | CODE |
| LOW | packages/ripple/tests/hydration/basic.test.js | 84 | expect(container.querySelector('input')?.getAttribute('placeholder')).toBe('Enter text'); | CODE |