Quasar Framework - Build high-performance VueJS user interfaces in record time
This report summarizes scanner evidence for quasarframework/quasar, a JavaScript project with 27,211 GitHub stars. SynthScan examined 653,470 lines of code across 4005 source files, recording 1077 pattern matches distributed across 11 syntactic categories. The legacy adjusted pattern signal is 2.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? 160 finding(s).
Are imports declared and package/API names verified? 917 finding(s).
Are wrappers, guards, and repeated structures necessary? 73 finding(s).
Which changes need focused human review? 1077 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 1077 distinct pattern matches across 11 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 | ui/playground/src/pages/form/field-align.vue | 26 | <q-toggle :dark="dark" v-model="placeholder" label="Placeholder" /> | CODE |
| LOW | ui/playground/src/pages/form/radio.vue | 459 | Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do | CODE |
| LOW | ui/playground/src/pages/form/radio.vue | 459 | Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do | CODE |
| LOW | ui/playground/src/pages/form/slider-range-label.vue | 183 | left-label-value="Lorem ipsum dolor sit amet consectetur, adipisicing elit" | CODE |
| LOW | ui/playground/src/pages/form/slider-range-label.vue | 183 | left-label-value="Lorem ipsum dolor sit amet consectetur, adipisicing elit" | CODE |
| LOW | ui/playground/src/pages/form/slider-range-label.vue | 197 | left-label-value="Lorem ipsum dolor sit amet consectetur, adipisicing elit" | CODE |
| LOW | ui/playground/src/pages/form/slider-range-label.vue | 197 | left-label-value="Lorem ipsum dolor sit amet consectetur, adipisicing elit" | CODE |
| LOW | ui/playground/src/pages/form/slider-range-label.vue | 214 | left-label-value="Lorem ipsum dolor sit amet consectetur, adipisicing elit" | CODE |
| LOW | ui/playground/src/pages/form/slider-range-label.vue | 214 | left-label-value="Lorem ipsum dolor sit amet consectetur, adipisicing elit" | CODE |
| LOW | ui/playground/src/pages/form/slider-range-label.vue | 230 | left-label-value="Lorem ipsum dolor sit amet consectetur, adipisicing elit" | CODE |
| LOW | ui/playground/src/pages/form/slider-range-label.vue | 230 | left-label-value="Lorem ipsum dolor sit amet consectetur, adipisicing elit" | CODE |
| LOW | ui/playground/src/pages/form/slider-range-label.vue | 344 | label-value="Lorem ipsum dolor sit amet consectetur, adipisicing elit" | CODE |
| LOW | ui/playground/src/pages/form/slider-range-label.vue | 344 | label-value="Lorem ipsum dolor sit amet consectetur, adipisicing elit" | CODE |
| LOW | ui/playground/src/pages/form/slider-range-label.vue | 356 | label-value="Lorem ipsum dolor sit amet consectetur, adipisicing elit" | CODE |
| LOW | ui/playground/src/pages/form/slider-range-label.vue | 356 | label-value="Lorem ipsum dolor sit amet consectetur, adipisicing elit" | CODE |
| LOW | ui/playground/src/pages/form/slider-range-label.vue | 371 | label-value="Lorem ipsum dolor sit amet consectetur, adipisicing elit" | CODE |
| LOW | ui/playground/src/pages/form/slider-range-label.vue | 371 | label-value="Lorem ipsum dolor sit amet consectetur, adipisicing elit" | CODE |
| LOW | ui/playground/src/pages/form/slider-range-label.vue | 385 | label-value="Lorem ipsum dolor sit amet consectetur, adipisicing elit" | CODE |
| LOW | ui/playground/src/pages/form/slider-range-label.vue | 385 | label-value="Lorem ipsum dolor sit amet consectetur, adipisicing elit" | CODE |
| LOW | ui/playground/src/pages/form/toggle.vue | 432 | <q-item-label caption> Lorem ipsum </q-item-label> | CODE |
| LOW | ui/playground/src/pages/form/toggle.vue | 448 | Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do | CODE |
| LOW | ui/playground/src/pages/form/toggle.vue | 448 | Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do | CODE |
| LOW | ui/playground/src/pages/form/editor-part2-model.vue | 55 | 'Some <i>model</i>. Lorem ipsum <a href="https://google.com">dolor</a> lorem ipsum dolor.' | CODE |
| LOW | ui/playground/src/pages/form/input.vue | 21 | <q-toggle :dark="dark" v-model="placeholder" label="Placeholder" /> | CODE |
| LOW | ui/playground/src/pages/css/typography.vue | 64 | Lorem Ipsum is simply dummy text of the printing and typesetting | CODE |
| LOW⚡ | ui/playground/src/pages/css/typography.vue | 114 | 'Body 1. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quos blanditiis tenetur unde suscipit, quam bea | CODE |
| LOW⚡ | ui/playground/src/pages/css/typography.vue | 114 | 'Body 1. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quos blanditiis tenetur unde suscipit, quam bea | CODE |
| LOW⚡ | ui/playground/src/pages/css/typography.vue | 119 | 'Body 2. Lorem ipsum dolor sit amet consectetur adipisicing elit. Cupiditate aliquid ad quas sunt voluptatum offic | CODE |
| LOW⚡ | ui/playground/src/pages/css/typography.vue | 119 | 'Body 2. Lorem ipsum dolor sit amet consectetur adipisicing elit. Cupiditate aliquid ad quas sunt voluptatum offic | CODE |
| LOW⚡ | ui/playground/src/pages/css/flex-addon.vue | 17 | <div class="placeholder" v-for="i in 4" :key="i"> | CODE |
| LOW⚡ | ui/playground/src/pages/css/flex-addon.vue | 23 | <div class="placeholder" v-for="i in 4" :key="i"> | CODE |
| LOW⚡ | ui/playground/src/pages/css/flex-addon.vue | 29 | <div class="placeholder" v-for="i in 4" :key="i"> | CODE |
| LOW⚡ | ui/playground/src/pages/css/flex-addon.vue | 39 | <div class="placeholder" v-for="i in 5" :key="i"> | CODE |
| LOW⚡ | ui/playground/src/pages/css/flex-addon.vue | 45 | <div class="placeholder" v-for="i in 4" :key="i"> | CODE |
| LOW⚡ | ui/playground/src/pages/css/flex-addon.vue | 51 | <div class="placeholder" v-for="i in 4" :key="i"> | CODE |
| LOW⚡ | ui/playground/src/pages/css/flex-addon.vue | 57 | <div class="placeholder" v-for="i in 4" :key="i"> | CODE |
| LOW⚡ | ui/playground/src/pages/css/flex-addon.vue | 63 | <div class="placeholder" v-for="i in 4" :key="i"> | CODE |
| LOW⚡ | ui/playground/src/pages/css/flex-addon.vue | 73 | <div class="placeholder" v-for="i in 5" :key="i"> | CODE |
| LOW⚡ | ui/playground/src/pages/css/flex-addon.vue | 79 | <div class="placeholder" v-for="i in 2" :key="i"> | CODE |
| LOW⚡ | ui/playground/src/pages/css/flex-addon.vue | 89 | <div class="placeholder" v-for="i in 5" :key="i"> | CODE |
| LOW⚡ | ui/playground/src/pages/css/flex-addon.vue | 95 | <div class="placeholder" v-for="i in 2" :key="i"> | CODE |
| LOW⚡ | ui/playground/src/pages/css/flex-addon.vue | 101 | <div class="placeholder" v-for="i in 6" :key="i"> | CODE |
| LOW⚡ | ui/playground/src/pages/css/flex-addon.vue | 111 | <div class="placeholder" v-for="i in 4" :key="i"> | CODE |
| LOW⚡ | ui/playground/src/pages/css/flex-addon.vue | 117 | <div class="placeholder" v-for="i in 2" :key="i"> | CODE |
| LOW⚡ | ui/playground/src/pages/css/flex-addon.vue | 123 | <div class="placeholder" v-for="i in 10" :key="i"> | CODE |
| LOW⚡ | ui/playground/src/pages/css/flex-addon.vue | 133 | <div class="placeholder" v-for="i in 10" :key="i"> | CODE |
| LOW⚡ | ui/playground/src/pages/css/flex-addon.vue | 139 | <div class="placeholder" v-for="i in 2" :key="i"> | CODE |
| LOW⚡ | ui/playground/src/pages/css/flex-addon.vue | 149 | <div class="placeholder" v-for="i in 10" :key="i"> | CODE |
| LOW⚡ | ui/playground/src/pages/css/flex-addon.vue | 155 | <div class="placeholder" v-for="i in 4" :key="i"> | CODE |
| LOW⚡ | ui/playground/src/pages/css/flex-addon.vue | 165 | <div class="placeholder" v-for="i in 4" :key="i"> | CODE |
| LOW⚡ | ui/playground/src/pages/css/flex-addon.vue | 171 | <div class="placeholder" v-for="i in 4" :key="i"> | CODE |
| LOW⚡ | ui/playground/src/pages/css/flex-addon.vue | 177 | <div class="placeholder" v-for="i in 4" :key="i"> | CODE |
| LOW⚡ | ui/playground/src/pages/css/flex-addon.vue | 183 | <div class="placeholder" v-for="i in 4" :key="i"> | CODE |
| LOW⚡ | ui/playground/src/pages/css/flex-addon.vue | 193 | <div class="placeholder" v-for="i in 4" :key="i"> | CODE |
| LOW⚡ | ui/playground/src/pages/css/flex-addon.vue | 199 | <div class="placeholder" v-for="i in 4" :key="i"> | CODE |
| LOW⚡ | ui/playground/src/pages/css/flex-addon.vue | 205 | <div class="placeholder" v-for="i in 4" :key="i"> | CODE |
| LOW⚡ | ui/playground/src/pages/css/flex-addon.vue | 211 | <div class="placeholder" v-for="i in 4" :key="i"> | CODE |
| LOW⚡ | ui/playground/src/pages/css/flex-addon.vue | 232 | <div class="placeholder" v-for="i in 4" :key="i"> | CODE |
| LOW⚡ | ui/playground/src/pages/css/flex-addon.vue | 238 | <div class="placeholder" v-for="i in 4" :key="i"> | CODE |
| LOW⚡ | ui/playground/src/pages/css/flex-addon.vue | 244 | <div class="placeholder" v-for="i in 4" :key="i"> | CODE |
| 836 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | app-vite/lib/cmd/info.js | 88 | print({ | CODE |
| HIGH⚡ | app-vite/lib/cmd/info.js | 93 | print({ key: 'Node.js', value: green(process.version.slice(1)) }) | CODE |
| HIGH⚡ | app-vite/lib/cmd/info.js | 94 | print({ key: 'Global packages', section: true }) | CODE |
| HIGH⚡ | app-vite/lib/cmd/info.js | 95 | print({ key: ' NPM', value: getSpawnOutput('npm') }) | CODE |
| HIGH⚡ | app-vite/lib/cmd/info.js | 96 | print({ key: ' yarn', value: getSpawnOutput('yarn') }) | CODE |
| HIGH⚡ | app-vite/lib/cmd/info.js | 97 | print({ key: ' pnpm', value: getSpawnOutput('pnpm') }) | CODE |
| HIGH⚡ | app-vite/lib/cmd/info.js | 98 | print({ key: ' bun', value: getSpawnOutput('bun') }) | CODE |
| HIGH⚡ | app-vite/lib/cmd/info.js | 99 | print({ key: ' @quasar/cli', value: green(process.env.QUASAR_CLI_VERSION) }) | CODE |
| HIGH⚡ | app-vite/lib/cmd/info.js | 100 | print({ key: ' @quasar/icongenie', value: getSpawnOutput('icongenie') }) | CODE |
| HIGH⚡ | app-vite/lib/cmd/info.js | 101 | print({ key: ' cordova', value: getSpawnOutput('cordova') }) | CODE |
| HIGH⚡ | app-vite/lib/cmd/info.js | 106 | print({ key: 'Important local packages', section: true }) | CODE |
| HIGH⚡ | app-vite/lib/cmd/info.js | 119 | print(safeMultiPkgInfo(pkg, [appPaths.appDir, appPaths.cliDir])) | CODE |
| HIGH⚡ | app-vite/lib/cmd/info.js | 124 | print(safePkgInfo(pkg, appPaths.pwaDir)) | CODE |
| HIGH⚡ | app-vite/lib/cmd/info.js | 130 | print(safePkgInfo(pkg, appPaths.electronDir)) | CODE |
| HIGH⚡ | app-vite/lib/cmd/info.js | 143 | print({ key: 'Quasar App Extensions', section: true }) | CODE |
| HIGH⚡ | app-vite/lib/cmd/info.js | 147 | print(safePkgInfo(ext.packageName, appPaths.appDir)) | CODE |
| HIGH⚡ | app-vite/lib/cmd/info.js | 150 | print({ key: ' *None installed*' }) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ui/types/utils/scroll.d.ts | 16 | function getVerticalScrollPosition(scrollTarget: Element | Window): number; | CODE |
| LOW | ui/types/utils/scroll.d.ts | 17 | function getHorizontalScrollPosition(scrollTarget: Element | Window): number; | CODE |
| LOW | ui/types/utils/scroll.d.ts | 30 | function setVerticalScrollPosition( | CODE |
| LOW | ui/types/utils/scroll.d.ts | 35 | function setHorizontalScrollPosition( | CODE |
| LOW | ui/test/specs/specs.utils.js | 322 | export function getComponentPropAssignment({ | CODE |
| LOW | ui/test/specs/testFile.js | 123 | function getTestFileMisconfiguration({ ctx, generator, json, testFile, opts }) { | CODE |
| LOW | ui/test/specs/astParser.js | 236 | function injectVariableDeclaration({ content, declaration, isExported }) { | CODE |
| LOW | …playground/src/pages/other/run-sequential-promises.vue | 226 | function isFailureEqualWithThreadsAndAbortOnFail(result, expected) { | CODE |
| LOW | ui/playground/src/pages/global/dialog-plugin.vue | 715 | function customComponentOptionsApi(async) { | CODE |
| LOW | ui/playground/src/pages/global/dialog-plugin.vue | 751 | function customComponentCompositionApi(async) { | CODE |
| LOW | …composables/private.use-router-link/use-router-link.js | 47 | function isSameRouteLocationParamsValue(a, b) { | CODE |
| LOW | …composables/private.use-router-link/use-router-link.js | 55 | function isSameRouteLocationParams(a, b) { | CODE |
| LOW | ui/src/plugins/private.body/Body.js | 48 | function applyClientSsrCorrections() { | CODE |
| LOW | …sr-directive-transform/noop-ssr-directive-transform.js | 1 | export default function noopSsrDirectiveTransform() { | CODE |
| LOW | ui/src/utils/scroll/scroll.js | 55 | export function getVerticalScrollPosition(scrollTarget) { | CODE |
| LOW | ui/src/utils/scroll/scroll.js | 59 | export function getHorizontalScrollPosition(scrollTarget) { | CODE |
| LOW | ui/src/utils/scroll/scroll.js | 125 | export function setVerticalScrollPosition(scrollTarget, offset, duration) { | CODE |
| LOW | ui/src/utils/scroll/scroll.js | 133 | export function setHorizontalScrollPosition(scrollTarget, offset, duration) { | CODE |
| LOW | ui/src/utils/scroll/prevent-scroll.js | 44 | export function addPreventScrollReleaseListener(fn) { | CODE |
| LOW | ui/src/utils/scroll/prevent-scroll.js | 48 | export function removePreventScrollReleaseListener(fn) { | CODE |
| LOW | ui/src/utils/private.focus/detached-fullscreen.js | 27 | export function addDetachedFullscreenListener(fn) { | CODE |
| LOW | ui/src/utils/private.focus/detached-fullscreen.js | 31 | export function removeDetachedFullscreenListener(fn) { | CODE |
| LOW | ui/src/utils/private.focus/detached-fullscreen.js | 105 | export function focusIsInDetachedFullscreen(rootEl, focusedEl) { | CODE |
| LOW | ui/src/utils/private.focus/detached-fullscreen.js | 120 | export function clickIsInDetachedFullscreen(rootEl, targetEl) { | CODE |
| LOW | ui/src/components/tabs/QTabs.test.js | 61 | async function waitForContainerMeasurement() { | CODE |
| LOW | ui/src/components/form/QForm.test.js | 8 | function createValidationComponent(overrides = {}) { | CODE |
| LOW | ui/src/components/tooltip/QTooltip.test.js | 105 | function mountTooltipOnPinnedAnchor(props) { | CODE |
| LOW | ui/src/components/tooltip/QTooltip.test.js | 177 | async function expectNaturalWidthAtTheRightEdge() { | CODE |
| LOW | ui/src/components/input/QInput.js | 395 | function cancelPendingValueEmission() { | CODE |
| LOW | ui/src/components/virtual-scroll/use-virtual-scroll.js | 475 | function setVirtualScrollSliceRange( | CODE |
| LOW | ui/src/components/menu/QMenu.test.js | 215 | async function expectNaturalWidthAtTheRightEdge() { | CODE |
| LOW | ui/src/components/menu/QMenu.test.js | 244 | async function expectScrollKeptAcrossUpdatePosition() { | CODE |
| LOW | ui/src/components/btn-dropdown/QBtnDropdown.test.js | 112 | async function mountPositionedBtnDropdown(props) { | CODE |
| LOW | app-vite/types/app-wrappers.d.ts | 80 | export function defineSsrInjectDevMiddleware( | CODE |
| LOW⚡ | app-vite/types/app-wrappers.d.ts | 100 | export function defineSsrServeStaticContent( | CODE |
| LOW⚡ | app-vite/types/app-wrappers.d.ts | 108 | export function defineSsrRenderPreloadTag( | CODE |
| LOW⚡ | app-vite/types/app-wrappers.d.ts | 116 | export function defineSsgRenderPreloadTag( | CODE |
| LOW | app-vite/exports/electron/preload-runtime.d.ts | 7 | export declare function resolveElectronAssetsPath(...args: string[]): string; | CODE |
| LOW | app-vite/exports/electron/main-runtime.js | 4 | export function resolveElectronAssetsPath(...args) { | CODE |
| LOW | app-vite/exports/electron/preload-runtime.js | 3 | export function resolveElectronAssetsPath(...args) { | CODE |
| LOW | app-vite/exports/electron/main-runtime.d.ts | 7 | export declare function resolveElectronAssetsPath(...args: string[]): string; | CODE |
| LOW | app-vite/lib/types-generator.js | 382 | function getImportMetaEnvDeclaration(quasarConf) { | CODE |
| LOW | app-vite/lib/quasar-config-file.js | 138 | export function getRelativePublicPathError({ publicPath, vueRouterMode }, ctx) { | CODE |
| LOW | app-vite/lib/quasar-config-file.js | 232 | function resolveAppExtensionAssets(cfg, previousAssetCounts, packageDir) { | CODE |
| LOW | app-vite/lib/config-tools.js | 164 | export function getFilenameBasedRoutingScanEntries( | CODE |
| LOW | app-vite/lib/config-tools.js | 488 | export function createBrowserRolldownConfig(quasarConf, { shippedToClient }) { | CODE |
| LOW | app-vite/lib/modes/modes-utils.js | 117 | export async function ensureModePackageJsonAndWorkspace( | CODE |
| LOW | …des/cordova/vite-plugin.dev.cordova-platform-inject.js | 8 | export function quasarVitePluginDevCordovaPlatformInject(quasarConf) { | CODE |
| LOW | app-vite/lib/modes/ssg/ssg-builder.js | 28 | function getSsgRendererErrorHandler(onSsgRendererError) { | CODE |
| LOW | app-vite/lib/modes/ssg/ssg-builder.js | 91 | function getParseVueRouterRoutesFn(quasarConf) { | CODE |
| LOW | app-vite/lib/modes/pwa/pwa-utils.js | 89 | export function quasarVitePluginPwaResources(quasarConf) { | CODE |
| LOW | app-vite/lib/plugins/vite.strip-filename-hashes.js | 22 | export function quasarViteStripFilenameHashesPlugin() { | CODE |
| LOW | app-vite/lib/plugins/vite.html.js | 58 | export function quasarViteIndexHtmlTransformPlugin(quasarConf) { | CODE |
| LOW | app-vite/lib/plugins/vite.html.js | 105 | function injectSsrRuntimeInterpolation(html) { | CODE |
| LOW | app-vite/lib/plugins/vite.html.js | 261 | export async function getProdSsrRenderTemplateFileContent( | CODE |
| LOW | app-vite/lib/plugins/rolldown.virtual-entry.js | 9 | export function quasarRolldownVirtualEntry({ | CODE |
| LOW | app-vite/lib/plugins/rolldown.inject-replacements.js | 21 | export function quasarRolldownInjectReplacementsPlugin() { | CODE |
| LOW | app-vite/lib/plugins/rolldown.vue-shim.js | 5 | export function quasarRolldownVueShimPlugin() { | CODE |
| LOW | app-vite/lib/utils/net.js | 6 | export function getExternalNetworkInterface() { | CODE |
| LOW | app-vite/lib/utils/remove-build-artifacts.js | 52 | export function getBuildArtifactsCleanTarget({ | CODE |
| 13 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ui/test/hydration-pwa/server-rendered-flag.js | 1 | // Must be the FIRST import of a hydration-pwa test file that wants | COMMENT |
| LOW | ui/playground/src-ssr/pnpm-workspace.yaml | 1 | # This file exists to force pnpm install deps here, regardless of upper workspaces | COMMENT |
| LOW | ui/playground/src/pages/components/data-table-part2.vue | 581 | // const | COMMENT |
| LOW | ui/playground/src/pages/global/dialog/TestDialog.vue | 21 | // REQUIRED; need to specify some events that your | COMMENT |
| LOW | ui/src/composables/private.use-anchor/use-anchor.js | 101 | // the devland has not already set it on the anchor itself | COMMENT |
| LOW | ui/src/utils/scroll/prevent-scroll.js | 21 | // The lock strategy leaks into other components; when changing it, re-check | COMMENT |
| LOW | ui/src/components/infinite-scroll/QInfiniteScroll.js | 161 | // right root from the start | COMMENT |
| LOW | ui/src/components/tabs/QTabs.js | 221 | } | COMMENT |
| LOW | ui/src/components/input/use-mask.js | 401 | } | COMMENT |
| LOW | app-vite/test/playground-suite.js | 21 | testSsrProdServer | COMMENT |
| LOW | app-vite/test/playground-suite.js | 41 | storeGreeting: 'Greetings from Pinia', | COMMENT |
| LOW | app-vite/test/ae-lifecycle/ae-lifecycle.test.js | 21 | // lib/app-extension/AppExtensionInstance.test.js and lib/cmd/ext.test.js | COMMENT |
| LOW | app-vite/playground-js/quasar.config.js | 41 | COMMENT | |
| LOW | app-vite/playground-js/quasar.config.js | 81 | // (like functional components as one of the examples), | COMMENT |
| LOW | app-vite/playground-js/quasar.config.js | 121 | ] | COMMENT |
| LOW | app-vite/playground-js/quasar.config.js | 141 | // extendSSGManifestJson (json) {}, | COMMENT |
| LOW | app-vite/playground-js/quasar.config.js | 161 | // useCredentialsForManifestTag: true, | COMMENT |
| LOW | app-vite/playground-js/quasar.config.js | 181 | // extendElectronPackageJson (pkgJson) {}, | COMMENT |
| LOW | app-vite/playground-ts/quasar.config.ts | 81 | COMMENT | |
| LOW | app-vite/playground-ts/quasar.config.ts | 101 | // sourceFiles: { | COMMENT |
| LOW | app-vite/playground-ts/quasar.config.ts | 121 | middlewares: [ | COMMENT |
| LOW | app-vite/playground-ts/quasar.config.ts | 141 | ssg: { | COMMENT |
| LOW | app-vite/playground-ts/quasar.config.ts | 161 | // manifestFilename: 'manifest.json', | COMMENT |
| LOW | app-vite/playground-ts/quasar.config.ts | 181 | // extendElectronMainConf (rolldownConf) {}, | COMMENT |
| LOW | app-vite/lib/quasar-config-file.js | 341 | } | COMMENT |
| LOW | app-vite/templates/bex/js/background.js | 61 | // }).then(responsePayload => { ... }).catch(err => { ... }) | COMMENT |
| LOW | app-vite/templates/bex/ts/background.ts | 81 | // bridge.send({ | COMMENT |
| LOW | app-vite/templates/workspace/pnpm-workspace.yaml | 1 | # This file exists to force pnpm install deps here, regardless of upper workspaces | COMMENT |
| LOW | vite-plugin/test/fixture-values.js | 1 | // Single source for values the test suites pin from fixture/source | COMMENT |
| LOW | …e-quasar/templates/app/vite-3/js/BASE/quasar.config.js | 41 | // browser: 'baseline-widely-available', | COMMENT |
| LOW | …e-quasar/templates/app/vite-3/js/BASE/quasar.config.js | 101 | // vueDevtools: true, | COMMENT |
| LOW | …e-quasar/templates/app/vite-3/js/BASE/quasar.config.js | 121 | plugins: [] | COMMENT |
| LOW | …e-quasar/templates/app/vite-3/js/BASE/quasar.config.js | 161 | // extendSSRManifestJson (json) {}, | COMMENT |
| LOW | …e-quasar/templates/app/vite-3/js/BASE/quasar.config.js | 181 | COMMENT | |
| LOW | …e-quasar/templates/app/vite-3/js/BASE/quasar.config.js | 201 | // extendPWAManifestJson (json) {}, | COMMENT |
| LOW | …e-quasar/templates/app/vite-3/ts/BASE/quasar.config.ts | 61 | // minify: false, | COMMENT |
| LOW | …e-quasar/templates/app/vite-3/ts/BASE/quasar.config.ts | 121 | // (like functional components as one of the examples), | COMMENT |
| LOW | …e-quasar/templates/app/vite-3/ts/BASE/quasar.config.ts | 161 | // manualStoreSerialization: true, | COMMENT |
| LOW | …e-quasar/templates/app/vite-3/ts/BASE/quasar.config.ts | 181 | // ssgRendererRetryCount: 0, | COMMENT |
| LOW | …e-quasar/templates/app/vite-3/ts/BASE/quasar.config.ts | 201 | }, | COMMENT |
| LOW | docs/src-ssr/pnpm-workspace.yaml | 1 | # This file exists to force pnpm install deps here, regardless of upper workspaces | COMMENT |
| LOW | docs/src-ssg/pnpm-workspace.yaml | 1 | # This file exists to force pnpm install deps here, regardless of upper workspaces | COMMENT |
| LOW | docs/src-pwa/pnpm-workspace.yaml | 1 | # This file exists to force pnpm install deps here, regardless of upper workspaces | COMMENT |
| LOW | docs/src/examples/QField/ValidationAsync.vue | 41 | setTimeout(() => { | COMMENT |
| LOW | docs/src/examples/QSelect/FilteringAddMultiple.vue | 21 | import { ref } from 'vue' | COMMENT |
| LOW | docs/src/examples/QSelect/FilteringNoAddToMenu.vue | 21 | const stringOptions = ['Google', 'Facebook', 'Twitter', 'Apple', 'Oracle'] | COMMENT |
| LOW | docs/src/examples/QSelect/FilteringAddsToMenu.vue | 21 | const stringOptions = ['Google', 'Facebook', 'Twitter', 'Apple', 'Oracle'] | COMMENT |
| LOW | docs/src/pages/quasar-cli-vite/boot-files.md | 61 | COMMENT | |
| LOW | …rc/pages/quasar-cli-vite/developing-ssr/ssr-context.md | 61 | // Must be a non-empty base64 or base64url value. | COMMENT |
| LOW | …e/developing-browser-extensions/bex-with-typescript.md | 81 | COMMENT | |
| LOW | docs/src/pages/quasar-plugins/web-storage.md | 121 | // each time the ref takes the default, so an object or Array is a | COMMENT |
| LOW | docs/src/pages/quasar-plugins/dialog.md | 281 | COMMENT | |
| LOW | docs/src/pages/quasar-plugins/dialog.md | 301 | // onDialogCancel - Function to call to settle dialog with "cancel" outcome | COMMENT |
| LOW | …c/pages/vue-composables/use-dialog-plugin-component.md | 81 | // onDialogOK - Function to call to settle dialog with "ok" outcome | COMMENT |
| LOW | docs/src/pages/vue-components/table.md | 41 | // array of Objects | COMMENT |
| LOW | docs/src/pages/vue-components/table.md | 61 | // (optional) alignment | COMMENT |
| LOW | docs/src/pages/vue-components/table.md | 81 | // want to handle (by yourself) rows with null/undefined as value | COMMENT |
| LOW | .github/workflows/ui-build-cache.yml | 1 | name: ui build cache | COMMENT |
| LOW | .github/workflows/release-tests.yml | 1 | name: Release tests | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …rc/composables/use-split-attrs/use-split-attrs.test.js | 67 | expect(child.vm.result.listeners.value.onFoo()).toBe('A') | CODE |
| CRITICAL | …rc/composables/use-split-attrs/use-split-attrs.test.js | 73 | expect(child.vm.result.listeners.value.onFoo()).toBe('B') | CODE |
| CRITICAL | ui/src/components/uploader/xhr-uploader-plugin.test.js | 57 | const [, fn] = this.upload.addEventListener.mock.calls.find( | CODE |
| CRITICAL | ui/src/components/uploader/QUploader.test.js | 61 | const [, fn] = this.upload.addEventListener.mock.calls.find( | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | app-vite/test/playground-suite.js | 126 | // scaffold the renderer for the non-interactive default (no | COMMENT |
| MEDIUM | app-vite/test/playground-suite.js | 494 | // scaffold the renderer for the default (not using it), which would | COMMENT |
| MEDIUM | create-quasar/test/unit/cli-package-contract.test.js | 7 | // cli/vitest-e2e.config.js) spawns our bin to scaffold its test | COMMENT |
| MEDIUM | create-quasar/test/e2e/e2e-utils.js | 67 | // A combo's tests build on each other's outcome (scaffold → lint → | COMMENT |
| MEDIUM | docs/src/pages/guide.md | 560 | Wrap a block in `// #region <label>` and `// #endregion` markers and it renders folded by default. Users can expand it o | CODE |
| MEDIUM | docs/src/pages/start/vite-plugin/vite-plugin.md | 19 | > - Are you sure that you've landed correctly? This page will teach you to use our Vite plugin, but it's not the same as | CODE |
| MEDIUM | docs/src/pages/start/vite-plugin/vite-plugin.md | 22 | > Cross-platform support with Vite is handled by community plugins. These are not tightly integrated with Quasar as with | CODE |
| MEDIUM | docs/src/pages/start/vite-plugin/vite-plugin.md | 38 | For the official (and full) guide, please visit the [Vite guide for scaffolding](https://vitejs.dev/guide/#scaffolding-y | CODE |
| MEDIUM | cli/vitest.config.js | 6 | // (test/e2e) boot servers and scaffold full projects, so they only | COMMENT |
| MEDIUM | .github/workflows/create-quasar-tests.yml | 51 | # the expensive e2e matrix only runs when the scaffolding itself may | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …/private.use-portal-refocus/use-portal-refocus.test.js | 399 | // seamless: a modal dialog would trap the restored focus back | COMMENT |
| MEDIUM | …/src/utils/private.click-outside/click-outside.test.js | 121 | // stack (open order): outer QMenu -> seamless QDialog -> inner QMenu | COMMENT |
| MEDIUM | …/src/utils/private.click-outside/click-outside.test.js | 126 | // click inside the seamless dialog, outside the inner menu popup | COMMENT |
| MEDIUM | ui/src/utils/private.click-outside/click-outside.js | 26 | // a modal (non-seamless) QDialog shields popups opened before it, | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …dialog-plugin-component/use-dialog-plugin-component.js | 54 | // Don't forget to update the types in "ui/types/composables.d.ts" | COMMENT |
| LOW | app-vite/lib/utils/banner.js | 122 | If you're using Vue Router "history" mode, don't forget to | CODE |
| LOW | app-vite/lib/utils/banner.js | 133 | Vue Router is set to "history" mode, so don't forget to | CODE |
| LOW | docs/src/examples/QInnerLoading/LabelProp.vue | 40 | // Don't forget to specify which animations | COMMENT |
| LOW | docs/src/examples/QInnerLoading/Basic.vue | 37 | // Don't forget to specify which animations | COMMENT |
| LOW | docs/src/examples/QTable/Synchronizing.vue | 602 | // don't forget to update local pagination object | COMMENT |
| MEDIUM | docs/src/examples/QDate/Persian.vue | 16 | // Again, for demonstration purposes only: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | ui/types/config.d.ts | 25 | // The rest will be augmented by auto-generated code | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …asar-cli-vite/developing-capacitor-apps/preparation.md | 8 | ## Step 1: Installation | COMMENT |
| LOW | …asar-cli-vite/developing-capacitor-apps/preparation.md | 70 | ## Step 2: Add Capacitor Quasar Mode | COMMENT |
| LOW | …asar-cli-vite/developing-capacitor-apps/preparation.md | 83 | ## Step 3: Start Developing | COMMENT |
| LOW | docs/src/pages/start/quick-start.md | 15 | ## Step 1: Create a Project | COMMENT |
| LOW | docs/src/pages/start/quick-start.md | 49 | ## Step 2: Start developing | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | app-vite/lib/cmd/new.js | 40 | # Create a store with TypeScript (-f ts is optional if tsconfig.json is present) | COMMENT |