├── .editorconfig ├── .eslintignore ├── .eslintrc.json ├── .gitattributes ├── .github ├── CODEOWNERS ├── CONTRIBUTING.md ├── ISSUE_TEMPLATE.md ├── ISSUE_TEMPLATE │ ├── ---file-a-bug.md │ ├── ---request-a-feature.md │ ├── ---request-documentation-improvements.md │ └── 2-bug-report-browser.md ├── PULL_REQUEST_TEMPLATE.md ├── dependabot.yml └── workflows │ └── 3rdparty.yml ├── .gitignore ├── .markdownlintrc ├── .npmrc ├── .nycrc ├── .vscode ├── extensions.json ├── launch.json ├── settings.json └── tasks.json ├── @types └── listr-input.d.ts ├── LICENSE.txt ├── README.md ├── azure-pipelines.yml ├── azure-pipelines ├── all-versions.yml ├── dependabot.yml ├── full.yml ├── latest-version.yml ├── main.yml ├── pr.yml ├── scheduled.yml └── standard.yml ├── package.json ├── packages ├── configuration-accessibility │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── index.json │ └── package.json ├── configuration-all │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── index.json │ └── package.json ├── configuration-development │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── index.json │ └── package.json ├── configuration-progressive-web-apps │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── index.json │ └── package.json ├── configuration-web-recommended │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── index.json │ └── package.json ├── connector-jsdom │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── @types │ │ │ └── jsdomutils.d.ts │ │ ├── before-parse.ts │ │ ├── connector.ts │ │ ├── evaluate-resource-loader.ts │ │ ├── evaluate-runner.ts │ │ ├── polyfills │ │ │ └── custom-elements.min.js │ │ └── resource-loader.ts │ ├── tests │ │ ├── collect.ts │ │ ├── evaluate.ts │ │ ├── events.ts │ │ ├── fetch-content.ts │ │ ├── fixtures │ │ │ └── common │ │ │ │ ├── favicon-32x32.png │ │ │ │ ├── favicon.ico │ │ │ │ ├── index.html │ │ │ │ └── nellie.png │ │ ├── invalid-url.ts │ │ └── request-response.ts │ └── tsconfig.json ├── connector-local │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ └── connector.ts │ ├── tests │ │ ├── fixtures │ │ │ ├── add │ │ │ │ └── new-file.html │ │ │ ├── base-and-no-base │ │ │ │ ├── base.html │ │ │ │ ├── image.png │ │ │ │ ├── no-base.html │ │ │ │ └── resources │ │ │ │ │ └── image.png │ │ │ ├── base │ │ │ │ ├── index.html │ │ │ │ └── resources │ │ │ │ │ └── image.png │ │ │ ├── folder with spaces and [brackets] │ │ │ │ └── script with spaces and [brackets].js │ │ │ ├── no-base │ │ │ │ ├── image.png │ │ │ │ └── index.html │ │ │ ├── no-watch │ │ │ │ ├── script.js │ │ │ │ ├── stylish-output.png │ │ │ │ └── test.html │ │ │ ├── watch-ignore │ │ │ │ ├── .gitignore │ │ │ │ └── tsconfig.json │ │ │ └── watch-no-ignore │ │ │ │ └── tsconfig.json │ │ └── tests.ts │ └── tsconfig.json ├── connector-puppeteer │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── connector.ts │ │ └── lib │ │ │ ├── actions.ts │ │ │ ├── authenticators.ts │ │ │ ├── chromium-finder.ts │ │ │ ├── create-fetchend-payload.ts │ │ │ ├── events.ts │ │ │ ├── get-element-from-response.ts │ │ │ ├── get-favicon.ts │ │ │ ├── launcher.ts │ │ │ ├── lifecycle.ts │ │ │ └── schema.ts │ ├── tests │ │ ├── _valid-event.ts │ │ ├── actions.ts │ │ ├── authentication.ts │ │ ├── chromium-finder.ts │ │ ├── collect.ts │ │ ├── configuration.ts │ │ ├── evaluate.ts │ │ ├── events.ts │ │ ├── fetch-content.ts │ │ ├── fixtures │ │ │ ├── action.js │ │ │ ├── common │ │ │ │ ├── favicon-32x32.png │ │ │ │ ├── favicon.ico │ │ │ │ ├── index.html │ │ │ │ └── nellie.png │ │ │ └── invalid-action.js │ │ ├── invalid-url.ts │ │ └── request-response.ts │ └── tsconfig.json ├── create-hint │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── create-hint.ts │ │ ├── files │ │ │ ├── .npmrc │ │ │ └── LICENSE.txt │ │ ├── handlebars-utils.ts │ │ ├── index.ts │ │ ├── no-official-files │ │ │ ├── .editorconfig │ │ │ ├── .eslintignore │ │ │ ├── .eslintrc.json │ │ │ ├── .gitattributes │ │ │ └── .markdownlintrc │ │ ├── shared-templates │ │ │ ├── config.hbs │ │ │ ├── package.hbs │ │ │ └── tsconfig.json.hbs │ │ ├── templates │ │ │ ├── hint-doc.hbs │ │ │ ├── hint.ts.hbs │ │ │ ├── index.ts.hbs │ │ │ ├── locales-messages.json.hbs │ │ │ ├── meta-index.ts.hbs │ │ │ ├── meta.ts.hbs │ │ │ ├── partial-event-code.hbs │ │ │ ├── readme.md.hbs │ │ │ └── tests.ts.hbs │ │ └── utils.ts │ ├── tests │ │ ├── create-hint.ts │ │ ├── fixtures │ │ │ └── template.hbs │ │ └── handlebars-utils.ts │ ├── tsconfig-webpack.json │ ├── tsconfig.json │ └── webpack.config.js ├── create-hintrc │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── @types │ │ │ └── browserslist.d.ts │ │ ├── browserslist.ts │ │ ├── create-hintrc.ts │ │ └── index.ts │ ├── tests │ │ ├── browserslist.ts │ │ └── create-hintrc.ts │ ├── tsconfig-webpack.json │ ├── tsconfig.json │ └── webpack.config.js ├── create-parser │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── files │ │ │ ├── .npmrc │ │ │ └── LICENSE.txt │ │ ├── handlebars-utils.ts │ │ ├── index.ts │ │ ├── new-parser.ts │ │ ├── no-official-files │ │ │ ├── .editorconfig │ │ │ ├── .eslintignore │ │ │ ├── .eslintrc.json │ │ │ ├── .gitattributes │ │ │ └── .markdownlintrc │ │ ├── shared-templates │ │ │ ├── config.hbs │ │ │ ├── package.hbs │ │ │ └── tsconfig.json.hbs │ │ └── templates │ │ │ ├── doc.hbs │ │ │ ├── index.hbs │ │ │ ├── parser.hbs │ │ │ └── tests.hbs │ ├── tests │ │ ├── fixtures │ │ │ └── template.hbs │ │ ├── handlebars-utils.ts │ │ └── new-parser.ts │ ├── tsconfig-webpack.json │ ├── tsconfig.json │ └── webpack.config.js ├── extension-browser │ ├── .eslintrc.json │ ├── .gitignore │ ├── .hintrc │ ├── .npmrc │ ├── CHANGELOG.md │ ├── CONTRIBUTING.md │ ├── LICENSE.txt │ ├── README.md │ ├── images │ │ ├── edge-devtools.png │ │ ├── extension-browser-0.png │ │ └── extension-browser-1.png │ ├── package.json │ ├── scripts │ │ ├── bundle-size.js │ │ ├── copy-version.js │ │ ├── create-i18n.js │ │ ├── host-ui.js │ │ ├── import-hints.js │ │ ├── merge-i18n.js │ │ ├── tsconfig.json │ │ └── update-manifest.js │ ├── src │ │ ├── @types │ │ │ ├── browserslist.d.ts │ │ │ ├── chrome.d.ts │ │ │ ├── react-syntax-highlighter.d.ts │ │ │ └── svg-url-loader.d.ts │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── background-script.ts │ │ ├── browser-action │ │ │ ├── browser-action.html │ │ │ ├── devtools.png │ │ │ └── logo.svg │ │ ├── content-script │ │ │ ├── connector.ts │ │ │ ├── evaluator.ts │ │ │ ├── fetcher.ts │ │ │ ├── formatter.ts │ │ │ ├── set-fetch-type.ts │ │ │ └── webhint.ts │ │ ├── devtools │ │ │ ├── devtools.html │ │ │ ├── devtools.ts │ │ │ ├── panel.html │ │ │ ├── panel.tsx │ │ │ ├── utils │ │ │ │ ├── categories.ts │ │ │ │ ├── hints.ts │ │ │ │ ├── i18n.ts │ │ │ │ ├── ids.ts │ │ │ │ ├── inject.ts │ │ │ │ ├── inspire.ts │ │ │ │ ├── messaging.ts │ │ │ │ ├── network.ts │ │ │ │ ├── storage.ts │ │ │ │ ├── themes.ts │ │ │ │ └── types.ts │ │ │ └── views │ │ │ │ ├── app.base.css │ │ │ │ ├── app.fluent.css │ │ │ │ ├── app.photon.css │ │ │ │ ├── app.tsx │ │ │ │ ├── controls │ │ │ │ ├── button.css │ │ │ │ ├── button.tsx │ │ │ │ ├── checkbox.base.css │ │ │ │ ├── checkbox.check.svg │ │ │ │ ├── checkbox.fluent.css │ │ │ │ ├── checkbox.photon.css │ │ │ │ ├── checkbox.tsx │ │ │ │ ├── external-docs.css │ │ │ │ ├── external-docs.tsx │ │ │ │ ├── external-link.css │ │ │ │ ├── external-link.tsx │ │ │ │ ├── feedback-link.tsx │ │ │ │ ├── inspect-button.css │ │ │ │ ├── inspect-button.icon.svg │ │ │ │ ├── inspect-button.tsx │ │ │ │ ├── label.css │ │ │ │ ├── label.tsx │ │ │ │ ├── notification.css │ │ │ │ ├── notification.tsx │ │ │ │ ├── print-link.css │ │ │ │ ├── print-link.tsx │ │ │ │ ├── progress-bar.css │ │ │ │ ├── progress-bar.tsx │ │ │ │ ├── radio.base.css │ │ │ │ ├── radio.fluent.css │ │ │ │ ├── radio.photon.css │ │ │ │ ├── radio.tsx │ │ │ │ ├── source-code.css │ │ │ │ ├── source-code.tsx │ │ │ │ ├── summary.css │ │ │ │ ├── summary.tsx │ │ │ │ ├── toggle.css │ │ │ │ ├── toggle.tsx │ │ │ │ ├── valid-input.css │ │ │ │ └── valid-input.tsx │ │ │ │ ├── page.css │ │ │ │ ├── page.tsx │ │ │ │ ├── pages │ │ │ │ ├── analyze.css │ │ │ │ ├── analyze.tsx │ │ │ │ ├── config.css │ │ │ │ ├── config.tsx │ │ │ │ ├── config │ │ │ │ │ ├── example.css │ │ │ │ │ ├── example.tsx │ │ │ │ │ ├── header.css │ │ │ │ │ ├── header.tsx │ │ │ │ │ ├── label.css │ │ │ │ │ ├── label.tsx │ │ │ │ │ ├── section.css │ │ │ │ │ ├── section.tsx │ │ │ │ │ └── sections │ │ │ │ │ │ ├── browsers.tsx │ │ │ │ │ │ ├── categories.css │ │ │ │ │ │ ├── categories.tsx │ │ │ │ │ │ ├── resources.tsx │ │ │ │ │ │ └── severities.tsx │ │ │ │ ├── error.css │ │ │ │ ├── error.tsx │ │ │ │ ├── results.css │ │ │ │ ├── results.tsx │ │ │ │ └── results │ │ │ │ │ ├── category-summary.css │ │ │ │ │ ├── category-summary.tsx │ │ │ │ │ ├── category.css │ │ │ │ │ ├── category.tsx │ │ │ │ │ ├── header.css │ │ │ │ │ ├── header.tsx │ │ │ │ │ ├── hint.css │ │ │ │ │ ├── hint.tsx │ │ │ │ │ ├── message-group.css │ │ │ │ │ ├── message-group.tsx │ │ │ │ │ ├── problem.css │ │ │ │ │ └── problem.tsx │ │ │ │ └── powered-by.tsx │ │ ├── icon.png │ │ ├── images │ │ │ ├── icon-accessibility.svg │ │ │ ├── icon-close.svg │ │ │ ├── icon-compatibility.svg │ │ │ ├── icon-info.svg │ │ │ ├── icon-performance.svg │ │ │ ├── icon-pitfalls.svg │ │ │ ├── icon-pwa.svg │ │ │ ├── icon-security.svg │ │ │ ├── icon-severity-error.svg │ │ │ ├── icon-severity-hint.svg │ │ │ ├── icon-severity-info.svg │ │ │ ├── icon-severity-warning.svg │ │ │ └── nellie-working.svg │ │ ├── manifest.json │ │ ├── shared │ │ │ ├── globals.ts │ │ │ ├── headers.ts │ │ │ └── types.ts │ │ ├── shims │ │ │ ├── acorn-jsx-walk.ts │ │ │ ├── acorn-jsx.ts │ │ │ ├── file-type.ts │ │ │ ├── get-message.ts │ │ │ ├── is-svg.ts │ │ │ ├── request-async.ts │ │ │ └── url.ts │ │ ├── tab-icon.dark.svg │ │ └── tab-icon.light.svg │ ├── tests │ │ ├── background-script.ts │ │ ├── content-script.ts │ │ ├── content-script │ │ │ └── fetcher.ts │ │ ├── devtools.ts │ │ ├── devtools │ │ │ └── utils │ │ │ │ └── hints.ts │ │ ├── end-to-end.ts │ │ ├── fixtures │ │ │ ├── base.html │ │ │ ├── google-analytics.html │ │ │ ├── missing-lang.html │ │ │ ├── mock-extension-apis.js │ │ │ └── results.json │ │ ├── helpers │ │ │ ├── fixtures.ts │ │ │ ├── globals.ts │ │ │ └── host-ui.ts │ │ └── webhint.ts │ ├── tsconfig.json │ └── webpack.config.js ├── extension-vscode │ ├── .npmignore │ ├── .npmrc │ ├── .vscode │ │ └── launch.json │ ├── .vscodeignore │ ├── CHANGELOG.md │ ├── CONTRIBUTING.md │ ├── LICENSE.txt │ ├── README.md │ ├── icon.png │ ├── package.json │ ├── scripts │ │ ├── bundle-size.js │ │ └── tsconfig.json │ ├── src │ │ ├── extension.ts │ │ ├── quickfix-provider.ts │ │ ├── server.ts │ │ └── utils │ │ │ ├── analyze.ts │ │ │ ├── config.ts │ │ │ ├── fs.ts │ │ │ ├── notifications.ts │ │ │ ├── packages.ts │ │ │ ├── problems.ts │ │ │ ├── process.ts │ │ │ ├── prompts.ts │ │ │ ├── webhint-packages.ts │ │ │ └── webhint-utils.ts │ ├── tests │ │ ├── fixtures │ │ │ ├── browsers │ │ │ │ └── .hintrc │ │ │ ├── no-browsers │ │ │ │ └── .hintrc │ │ │ ├── no-hint-property │ │ │ │ └── .hintrc │ │ │ ├── no-hints │ │ │ │ └── .hintrc │ │ │ ├── string-browsers │ │ │ │ └── .hintrc │ │ │ ├── with-hint │ │ │ │ └── .hintrc │ │ │ └── with-problem │ │ │ │ └── .hintrc │ │ ├── quickfix-provider.ts │ │ └── utils │ │ │ ├── analyze.ts │ │ │ ├── config.ts │ │ │ ├── packages.ts │ │ │ ├── problems.ts │ │ │ ├── prompts.ts │ │ │ ├── webhint-packages.ts │ │ │ └── webhint-utils.ts │ ├── tsconfig.json │ └── webpack.config.js ├── formatter-codeframe │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── images │ │ └── codeframe-output.png │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ └── formatter.ts │ ├── tests │ │ ├── fixtures │ │ │ └── list-of-problems.ts │ │ └── tests.ts │ └── tsconfig.json ├── formatter-excel │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── images │ │ ├── details.png │ │ └── summary.png │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ └── formatter.ts │ ├── tests │ │ ├── fixtures │ │ │ └── list-of-problems.ts │ │ └── tests.ts │ └── tsconfig.json ├── formatter-html │ ├── .gitignore │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── THIRD_PARTY_NOTICES.txt │ ├── images │ │ ├── html-output.png │ │ └── json-output.png │ ├── package.json │ ├── scripts │ │ ├── compile-locales.js │ │ └── create-get-message.js │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── assets │ │ │ ├── images │ │ │ │ ├── back-to-top.svg │ │ │ │ └── scan │ │ │ │ │ ├── accessibility.svg │ │ │ │ │ ├── axe.png │ │ │ │ │ ├── cloudinary_logo_for_white_bg.svg │ │ │ │ │ ├── compatibility.svg │ │ │ │ │ ├── dev-icon.svg │ │ │ │ │ ├── favicon-16x16.png │ │ │ │ │ ├── favicon-32x32.png │ │ │ │ │ ├── favicon_failed.ico │ │ │ │ │ ├── favicon_passed.ico │ │ │ │ │ ├── favicon_pending.ico │ │ │ │ │ ├── next-arrow.svg │ │ │ │ │ ├── open-blank.svg │ │ │ │ │ ├── open-close.svg │ │ │ │ │ ├── other-icon.svg │ │ │ │ │ ├── performance.svg │ │ │ │ │ ├── permalink-icon.svg │ │ │ │ │ ├── pitfalls_icon.svg │ │ │ │ │ ├── pwa.svg │ │ │ │ │ ├── qualys-ssl-labs-logo.png │ │ │ │ │ ├── results-docs-icon.svg │ │ │ │ │ ├── results-passed-icon.svg │ │ │ │ │ ├── security.svg │ │ │ │ │ ├── snyk.svg │ │ │ │ │ └── sub-section.svg │ │ │ ├── js │ │ │ │ ├── anchor-top.js │ │ │ │ ├── highlight │ │ │ │ │ ├── highlight.min.js │ │ │ │ │ └── languages │ │ │ │ │ │ └── xml.min.js │ │ │ │ ├── polyfills │ │ │ │ │ └── details.js │ │ │ │ └── scan │ │ │ │ │ └── scanner-common.js │ │ │ └── styles │ │ │ │ ├── anchor-top.css │ │ │ │ ├── base.css │ │ │ │ ├── controls.css │ │ │ │ ├── fonts.css │ │ │ │ ├── fonts │ │ │ │ ├── montserrat-300.woff │ │ │ │ ├── montserrat-300.woff2 │ │ │ │ ├── montserrat-400.woff │ │ │ │ ├── montserrat-400.woff2 │ │ │ │ ├── montserrat-500.woff │ │ │ │ ├── montserrat-500.woff2 │ │ │ │ ├── source-sans-pro.woff │ │ │ │ └── source-sans-pro.woff2 │ │ │ │ ├── highlight │ │ │ │ └── default.min.css │ │ │ │ ├── layouts.css │ │ │ │ ├── scan │ │ │ │ └── scan-results.css │ │ │ │ ├── structure.css │ │ │ │ └── type.css │ │ ├── configs │ │ │ ├── category-images.json │ │ │ └── third-party-service-config.json │ │ ├── formatter.ts │ │ ├── result.ts │ │ ├── utils.ts │ │ └── views │ │ │ ├── pages │ │ │ └── report.ejs │ │ │ └── partials │ │ │ ├── browser-icon.ejs │ │ │ ├── category-pass-message.ejs │ │ │ ├── check-mark.ejs │ │ │ ├── scan-category-summary.ejs │ │ │ ├── scan-error-message.ejs │ │ │ ├── scan-expand-all.ejs │ │ │ ├── scan-result-category-item.ejs │ │ │ ├── scan-result-item.ejs │ │ │ └── scan-result.ejs │ ├── tests │ │ ├── fixtures │ │ │ └── list-of-problems.ts │ │ └── tests.ts │ └── tsconfig.json ├── formatter-json │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── images │ │ └── json-output.png │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ └── formatter.ts │ ├── tests │ │ ├── fixtures │ │ │ └── list-of-problems.ts │ │ └── tests.ts │ └── tsconfig.json ├── formatter-stylish │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── images │ │ └── stylish-output.png │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ └── formatter.ts │ ├── tests │ │ ├── fixtures │ │ │ └── list-of-problems.ts │ │ └── tests.ts │ └── tsconfig.json ├── formatter-summary │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── images │ │ └── summary-output.png │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ └── formatter.ts │ ├── tests │ │ ├── fixtures │ │ │ └── list-of-problems.ts │ │ └── tests.ts │ └── tsconfig.json ├── hint-apple-touch-icons │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── hint.ts │ │ └── meta.ts │ ├── tests │ │ ├── fixtures │ │ │ ├── apple-touch-icon152x152.png │ │ │ ├── apple-touch-icon167x167.png │ │ │ ├── apple-touch-icon180x180.png │ │ │ ├── incorrect-dimensions100x100.png │ │ │ ├── incorrect-dimensions200x200.png │ │ │ ├── incorrect-file-format.png │ │ │ ├── not-square.png │ │ │ └── transparent-background.png │ │ └── tests.ts │ └── tsconfig.json ├── hint-axe │ ├── .gitignore │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── scripts │ │ ├── create.js │ │ ├── create │ │ │ ├── create-config.js │ │ │ ├── create-docs.js │ │ │ ├── create-hints.js │ │ │ ├── create-locales.js │ │ │ ├── create-metas.js │ │ │ └── utils.js │ │ └── tsconfig.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ └── util │ │ │ └── axe.ts │ ├── tests │ │ ├── _utils.ts │ │ ├── color.ts │ │ ├── fixtures │ │ │ ├── forms.jsx │ │ │ ├── local-default-iframe.html │ │ │ └── spread.jsx │ │ ├── forms.ts │ │ ├── keyboard.ts │ │ ├── language.ts │ │ └── text-alternatives.ts │ └── tsconfig.json ├── hint-babel-config │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── docs │ │ └── is-valid.md │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── index.ts │ │ ├── is-valid.ts │ │ ├── meta.ts │ │ └── meta │ │ │ └── is-valid.ts │ ├── tests │ │ ├── fixtures │ │ │ ├── circular-2 │ │ │ │ └── .babelrc │ │ │ ├── circular │ │ │ │ └── .babelrc │ │ │ ├── has-additional-property │ │ │ │ └── .babelrc │ │ │ ├── has-invalid-babel-package-json │ │ │ │ └── package.json │ │ │ ├── has-invalid-enum-property │ │ │ │ └── .babelrc │ │ │ ├── has-valid-babel-package-json │ │ │ │ └── package.json │ │ │ ├── invalid-extends │ │ │ │ └── .babelrc │ │ │ ├── invalid-json │ │ │ │ └── package.json │ │ │ ├── invalid-schema │ │ │ │ └── .babelrc │ │ │ ├── invalid │ │ │ │ └── .babelrc │ │ │ ├── no-babel-package-json │ │ │ │ └── package.json │ │ │ └── valid-schema │ │ │ │ └── .babelrc │ │ └── is-valid.ts │ └── tsconfig.json ├── hint-button-type │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── hint.ts │ │ └── meta.ts │ ├── tests │ │ └── tests.ts │ └── tsconfig.json ├── hint-compat-api │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── docs │ │ ├── css.md │ │ └── html.md │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── css.ts │ │ ├── html.ts │ │ ├── index.ts │ │ ├── meta.ts │ │ ├── meta │ │ │ ├── compat-hint-schema.json │ │ │ ├── css.ts │ │ │ └── html.ts │ │ └── utils │ │ │ ├── alternatives.ts │ │ │ ├── browsers.ts │ │ │ ├── filter-supports.ts │ │ │ ├── ignore.ts │ │ │ └── parse-supports.ts │ ├── tests │ │ ├── css.ts │ │ ├── fixtures │ │ │ ├── css │ │ │ │ ├── atrules.css │ │ │ │ ├── ignore.css │ │ │ │ ├── properties.css │ │ │ │ ├── selectors.css │ │ │ │ ├── subgrid.css │ │ │ │ ├── supports.css │ │ │ │ └── values.css │ │ │ └── html │ │ │ │ ├── attributes.html │ │ │ │ ├── elements.html │ │ │ │ ├── ignore.html │ │ │ │ └── values.html │ │ ├── html.ts │ │ └── utils │ │ │ ├── browsers.ts │ │ │ ├── filter-supports.ts │ │ │ └── parse-supports.ts │ └── tsconfig.json ├── hint-content-type │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── hint.ts │ │ └── meta.ts │ ├── tests │ │ ├── fixtures │ │ │ ├── image.png │ │ │ └── test.woff2 │ │ └── tests.ts │ └── tsconfig.json ├── hint-create-element-svg │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── hint.ts │ │ ├── meta.ts │ │ └── svgElements.ts │ ├── tests │ │ ├── fixtures │ │ │ └── testjs.js │ │ └── tests.ts │ └── tsconfig.json ├── hint-css-prefix-order │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── hint.ts │ │ └── meta.ts │ ├── tests │ │ ├── fixtures │ │ │ ├── cross-block.css │ │ │ ├── different-property-at-end.css │ │ │ ├── different-property-at-end.fixed.css │ │ │ ├── interleaved-prefixes.css │ │ │ ├── interleaved-prefixes.fixed.css │ │ │ ├── mixed-with-prefixes-first.css │ │ │ ├── mixed-with-prefixes-last.css │ │ │ ├── mixed-with-prefixes-last.fixed.css │ │ │ ├── multi-block.css │ │ │ ├── multi-property.css │ │ │ ├── prefixed-only.css │ │ │ ├── prefixed-values-first.css │ │ │ ├── prefixed-values-last.css │ │ │ ├── prefixed-values-last.fixed.css │ │ │ ├── prefixes-first-same-line.css │ │ │ ├── prefixes-first.css │ │ │ ├── prefixes-last-moz.css │ │ │ ├── prefixes-last-same-line.css │ │ │ ├── prefixes-last-same-line.fixed.css │ │ │ ├── prefixes-last-same-line.html │ │ │ ├── prefixes-last-webkit.css │ │ │ ├── prefixes-last-webkit.fixed.html │ │ │ ├── prefixes-last-webkit.html │ │ │ ├── prefixes-nested-blocks.scss │ │ │ └── unprefixed-only.css │ │ └── tests.ts │ └── tsconfig.json ├── hint-detect-css-reflows │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── docs │ │ ├── composite.md │ │ ├── layout.md │ │ └── paint.md │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── assets │ │ │ └── CSSReflow.json │ │ ├── composite.ts │ │ ├── index.ts │ │ ├── layout.ts │ │ ├── meta.ts │ │ ├── meta │ │ │ ├── composite.ts │ │ │ ├── hint-detect-css-reflows-schema.json │ │ │ ├── layout.ts │ │ │ └── paint.ts │ │ └── paint.ts │ ├── tests │ │ ├── composite.ts │ │ ├── fixtures │ │ │ ├── composite-triggers.css │ │ │ ├── layout-triggers.css │ │ │ └── paint-triggers.css │ │ ├── layout.ts │ │ └── paint.ts │ └── tsconfig.json ├── hint-disown-opener │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── hint.ts │ │ └── meta.ts │ ├── tests │ │ └── tests.ts │ └── tsconfig.json ├── hint-doctype │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── hint.ts │ │ ├── meta.ts │ │ └── types.ts │ ├── tests │ │ └── tests.ts │ └── tsconfig.json ├── hint-highest-available-document-mode │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── hint.ts │ │ └── meta.ts │ ├── tests │ │ └── tests.ts │ └── tsconfig.json ├── hint-html-checker │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── hint.ts │ │ └── meta.ts │ ├── tests │ │ └── tests.ts │ └── tsconfig.json ├── hint-http-cache │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── hint.ts │ │ └── meta.ts │ ├── tests │ │ └── tests.ts │ └── tsconfig.json ├── hint-http-compression │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── hint.ts │ │ ├── meta.ts │ │ └── types.ts │ ├── tests │ │ ├── _tests.ts │ │ ├── fixtures │ │ │ ├── favicon.br │ │ │ ├── favicon.gz │ │ │ ├── favicon.ico │ │ │ ├── favicon.zopfli.gz │ │ │ ├── image.br │ │ │ ├── image.gz │ │ │ ├── image.png │ │ │ ├── image.svgz │ │ │ ├── image.zopfli.gz │ │ │ ├── page.br │ │ │ ├── page.gz │ │ │ ├── page.html │ │ │ ├── page.zopfli.gz │ │ │ ├── script-small.br │ │ │ ├── script-small.gz │ │ │ ├── script-small.js │ │ │ ├── script-small.zopfli.gz │ │ │ ├── script.br │ │ │ ├── script.gz │ │ │ ├── script.js │ │ │ └── script.zopfli.gz │ │ ├── tests-http.ts │ │ └── tests-https.ts │ └── tsconfig.json ├── hint-https-only │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── hint.ts │ │ └── meta.ts │ ├── tests │ │ ├── fixtures │ │ │ └── nellie-studying.png │ │ ├── tests-https.ts │ │ └── tests.ts │ └── tsconfig.json ├── hint-ie-flexbox-compat │ ├── .npmrc │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── hint.ts │ │ └── meta.ts │ ├── tests │ │ ├── fixtures │ │ │ ├── inline.css │ │ │ ├── keyframe-rule.css │ │ │ ├── multiple-displays-in-rule.css │ │ │ ├── multiple-displays.css │ │ │ ├── no-flex.css │ │ │ └── simple.css │ │ └── tests.ts │ └── tsconfig.json ├── hint-image-optimization-cloudinary │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── cloudinary-types.ts │ │ ├── hint.ts │ │ └── meta.ts │ ├── tests │ │ ├── fixtures │ │ │ ├── invalid-image.js │ │ │ ├── nellie-studying.png │ │ │ └── space-nellie.svg │ │ └── tests.ts │ └── tsconfig.json ├── hint-leading-dot-classlist │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── hint.ts │ │ └── meta.ts │ ├── tests │ │ ├── fixtures │ │ │ ├── test-failing-add.js │ │ │ ├── test-failing-remove.js │ │ │ ├── test-irrelevant.js │ │ │ └── test-passing.js │ │ └── tests.ts │ └── tsconfig.json ├── hint-manifest-app-name │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── @types │ │ │ └── punycode.d.ts │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── hint.ts │ │ └── meta.ts │ ├── tests │ │ └── tests.ts │ └── tsconfig.json ├── hint-manifest-exists │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── hint.ts │ │ └── meta.ts │ ├── tests │ │ └── tests.ts │ └── tsconfig.json ├── hint-manifest-file-extension │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── hint.ts │ │ └── meta.ts │ ├── tests │ │ └── tests.ts │ └── tsconfig.json ├── hint-manifest-icons │ ├── .npmrc │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── hint.ts │ │ └── meta.ts │ ├── tests │ │ ├── fixtures │ │ │ ├── empty-icons.webmanifest │ │ │ ├── icon-128x128.png │ │ │ ├── icon-192x192.png │ │ │ ├── icon-512x512.png │ │ │ ├── icons-ok.webmanifest │ │ │ ├── incorrect-type.webmanifest │ │ │ ├── missing-size.webmanifest │ │ │ ├── missing-type.webmanifest │ │ │ └── test.webmanifest │ │ ├── tests-local.ts │ │ └── tests.ts │ └── tsconfig.json ├── hint-manifest-is-valid │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── @types │ │ │ └── bcp47.d.ts │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── hint.ts │ │ └── meta.ts │ ├── tests │ │ └── tests.ts │ └── tsconfig.json ├── hint-manifest-scoped-urls │ ├── .npmrc │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── hint.ts │ │ └── meta.ts │ ├── tests │ │ └── tests.ts │ └── tsconfig.json ├── hint-meta-charset-utf-8 │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── hint.ts │ │ └── meta.ts │ ├── tests │ │ ├── fixtures │ │ │ └── repro.html │ │ └── tests.ts │ └── tsconfig.json ├── hint-meta-theme-color │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── images │ │ ├── no_theme-color.png │ │ └── theme-color.png │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── hint.ts │ │ └── meta.ts │ ├── tests │ │ └── tests.ts │ └── tsconfig.json ├── hint-meta-viewport │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── @types │ │ │ └── metaviewport-parser.d.ts │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── hint.ts │ │ └── meta.ts │ ├── tests │ │ └── tests.ts │ └── tsconfig.json ├── hint-minified-js │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── hint.ts │ │ └── meta.ts │ ├── tests │ │ └── tests.ts │ └── tsconfig.json ├── hint-no-bom │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── hint.ts │ │ └── meta.ts │ ├── tests │ │ ├── fixtures │ │ │ ├── bom.html │ │ │ └── no-bom.html │ │ └── tests.ts │ └── tsconfig.json ├── hint-no-broken-links │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── hint.ts │ │ └── meta.ts │ ├── tests │ │ └── tests.ts │ └── tsconfig.json ├── hint-no-disallowed-headers │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── hint.ts │ │ └── meta.ts │ ├── tests │ │ └── tests.ts │ └── tsconfig.json ├── hint-no-friendly-error-pages │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── hint.ts │ │ └── meta.ts │ ├── tests │ │ └── tests.ts │ └── tsconfig.json ├── hint-no-html-only-headers │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── hint.ts │ │ └── meta.ts │ ├── tests │ │ └── tests.ts │ └── tsconfig.json ├── hint-no-http-redirects │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── hint.ts │ │ └── meta.ts │ ├── tests │ │ └── tests.ts │ └── tsconfig.json ├── hint-no-inline-styles │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── hint.ts │ │ └── meta.ts │ ├── tests │ │ └── test.ts │ └── tsconfig.json ├── hint-no-p3p │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── hint.ts │ │ └── meta.ts │ ├── tests │ │ └── tests.ts │ └── tsconfig.json ├── hint-no-protocol-relative-urls │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── hint.ts │ │ └── meta.ts │ ├── tests │ │ ├── _generate-tests.ts │ │ ├── tests-http.ts │ │ └── tests-https.ts │ └── tsconfig.json ├── hint-no-vulnerable-javascript-libraries │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── scripts │ │ ├── pack-snyk.js │ │ └── tsconfig.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── hint.ts │ │ ├── meta.ts │ │ ├── snyk-snapshot.json │ │ └── types.ts │ ├── tests │ │ └── tests.ts │ └── tsconfig.json ├── hint-performance-budget │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── connections.ini │ │ ├── connections.ts │ │ ├── hint.ts │ │ ├── meta.ts │ │ └── types.ts │ ├── tests │ │ ├── fixtures │ │ │ └── image.png │ │ ├── tests-http.ts │ │ └── tests-https.ts │ └── tsconfig.json ├── hint-scoped-svg-styles │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── hint.ts │ │ └── meta.ts │ ├── tests │ │ ├── fixtures │ │ │ ├── elements-inside-unrelated-svg.html │ │ │ ├── elements-outside-svg.html │ │ │ └── valid-page.html │ │ └── hint.ts │ └── tsconfig.json ├── hint-sri │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── hint.ts │ │ ├── meta.ts │ │ └── types.ts │ ├── tests │ │ ├── fixtures │ │ │ ├── local-no-pass │ │ │ │ └── test.html │ │ │ ├── local-pass │ │ │ │ ├── test-relative.html │ │ │ │ └── test.html │ │ │ ├── scripts.js │ │ │ └── styles.css │ │ ├── tests-http.ts │ │ ├── tests-https.ts │ │ └── tests-local.ts │ └── tsconfig.json ├── hint-ssllabs │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── @types │ │ │ └── node-ssllabs.d.ts │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── api.ts │ │ ├── hint.ts │ │ ├── meta.ts │ │ └── types.ts │ ├── tests │ │ └── tests.ts │ └── tsconfig.json ├── hint-strict-transport-security │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── hint.ts │ │ └── meta.ts │ ├── tests │ │ ├── _common.ts │ │ ├── http-tests.ts │ │ └── https-tests.ts │ └── tsconfig.json ├── hint-stylesheet-limits │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── hint.ts │ │ └── meta.ts │ ├── tests │ │ └── tests.ts │ └── tsconfig.json ├── hint-summary-display │ ├── .npmrc │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── hint.ts │ │ └── meta.ts │ ├── tests │ │ ├── fixtures │ │ │ ├── summaryDefaultStyle.css │ │ │ ├── summaryStyleChanged.css │ │ │ ├── summaryTest1.css │ │ │ ├── summaryTest2.css │ │ │ ├── summaryTest3.css │ │ │ ├── summaryTest4.css │ │ │ ├── summaryTest5.css │ │ │ ├── summaryTest6.css │ │ │ └── summaryTest7.css │ │ └── tests.ts │ └── tsconfig.json ├── hint-typescript-config │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── docs │ │ ├── consistent-casing.md │ │ ├── import-helpers.md │ │ ├── is-valid.md │ │ ├── no-comments.md │ │ ├── strict.md │ │ └── target.md │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── consistent-casing.ts │ │ ├── helpers │ │ │ └── config-checker.ts │ │ ├── import-helpers.ts │ │ ├── index.ts │ │ ├── is-valid.ts │ │ ├── meta.ts │ │ ├── meta │ │ │ ├── consistent-casing.ts │ │ │ ├── import-helpers.ts │ │ │ ├── is-valid.ts │ │ │ ├── no-comments.ts │ │ │ ├── strict.ts │ │ │ └── target.ts │ │ ├── no-comments.ts │ │ ├── strict.ts │ │ └── target.ts │ ├── tests │ │ ├── consistent-casing.ts │ │ ├── fixtures │ │ │ ├── circular-2 │ │ │ │ └── tsconfig.circular.json │ │ │ ├── circular │ │ │ │ └── tsconfig.circular.json │ │ │ ├── consistent-casing │ │ │ │ ├── consistent-casing-false │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── no-consistent-casing │ │ │ │ │ └── tsconfig.json │ │ │ │ └── valid │ │ │ │ │ └── tsconfig.json │ │ │ ├── extends-with-error │ │ │ │ └── tsconfig.json │ │ │ ├── import-helpers │ │ │ │ ├── import-false │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── import │ │ │ │ │ └── tsconfig.json │ │ │ │ └── no-import │ │ │ │ │ └── tsconfig.json │ │ │ ├── invalid-extends │ │ │ │ └── tsconfig.json │ │ │ ├── invalidjson │ │ │ │ └── tsconfig.json │ │ │ ├── invalidschemaenum │ │ │ │ └── tsconfig.json │ │ │ ├── invalidschemapattern │ │ │ │ └── tsconfig.json │ │ │ ├── no-comments │ │ │ │ ├── invalid │ │ │ │ │ └── tsconfig.json │ │ │ │ └── valid │ │ │ │ │ └── tsconfig.json │ │ │ ├── no-compiler-options │ │ │ │ └── tsconfig.json │ │ │ ├── noconfig │ │ │ │ └── text.txt │ │ │ ├── strict │ │ │ │ ├── no-strict │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── strict-false │ │ │ │ │ └── tsconfig.json │ │ │ │ └── strict-true │ │ │ │ │ └── tsconfig.json │ │ │ ├── target │ │ │ │ ├── config-package-json │ │ │ │ │ └── package.json │ │ │ │ ├── es2015 │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── es2016 │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── es3 │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── es5 │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── esnext │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── extends-overrides │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── extends │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── no-config-package-json │ │ │ │ │ └── package.json │ │ │ │ ├── no-target-extends-target │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── no-target-extends │ │ │ │ │ └── tsconfig.json │ │ │ │ └── no-target │ │ │ │ │ └── tsconfig.json │ │ │ └── valid │ │ │ │ └── tsconfig.json │ │ ├── import-helpers.ts │ │ ├── is-valid.ts │ │ ├── no-comments.ts │ │ ├── strict.ts │ │ └── target.ts │ └── tsconfig.json ├── hint-validate-set-cookie-header │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── hint.ts │ │ ├── meta.ts │ │ └── types.ts │ ├── tests │ │ └── tests.ts │ └── tsconfig.json ├── hint-webpack-config │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── docs │ │ ├── config-exists.md │ │ ├── is-installed.md │ │ ├── is-valid.md │ │ ├── module-esnext-typescript.md │ │ ├── modules-false-babel.md │ │ └── no-devtool-in-prod.md │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── index.ts │ │ ├── is-installed.ts │ │ ├── is-valid.ts │ │ ├── meta.ts │ │ ├── meta │ │ │ ├── config-exists.ts │ │ │ ├── is-installed.ts │ │ │ ├── is-valid.ts │ │ │ ├── module-esnext-typescript.ts │ │ │ ├── modules-false-babel.ts │ │ │ └── no-devtool-in-prod.ts │ │ ├── module-esnext-typescript.ts │ │ ├── modules-false-babel.ts │ │ └── no-devtool-in-prod.ts │ ├── tests │ │ ├── fixtures │ │ │ ├── .gitignore │ │ │ ├── babelinvalid │ │ │ │ ├── .babelrc │ │ │ │ ├── node_modules │ │ │ │ │ └── webpack │ │ │ │ │ │ └── package.json │ │ │ │ └── webpack.config.js │ │ │ ├── babelvalid │ │ │ │ ├── .babelrc │ │ │ │ ├── node_modules │ │ │ │ │ └── webpack │ │ │ │ │ │ └── package.json │ │ │ │ └── webpack.config.js │ │ │ ├── eval │ │ │ │ └── webpack.config.js │ │ │ ├── invalidconfig │ │ │ │ └── webpack.config.js │ │ │ ├── noconfig │ │ │ │ └── text.txt │ │ │ ├── noeval │ │ │ │ └── webpack.config.js │ │ │ ├── tsinvalid │ │ │ │ ├── node_modules │ │ │ │ │ └── webpack │ │ │ │ │ │ └── package.json │ │ │ │ ├── tsconfig.json │ │ │ │ └── webpack.config.js │ │ │ ├── tsvalid │ │ │ │ ├── node_modules │ │ │ │ │ └── webpack │ │ │ │ │ │ └── package.json │ │ │ │ ├── tsconfig.json │ │ │ │ └── webpack.config.js │ │ │ ├── valid │ │ │ │ ├── node_modules │ │ │ │ │ └── webpack │ │ │ │ │ │ └── package.json │ │ │ │ └── webpack.config.js │ │ │ └── version1 │ │ │ │ ├── node_modules │ │ │ │ └── webpack │ │ │ │ │ └── package.json │ │ │ │ ├── tsconfig.json │ │ │ │ └── webpack.config.js │ │ ├── is-installed.ts │ │ ├── is-valid.ts │ │ ├── module-esnext-typescript.ts │ │ ├── modules-false-babel.ts │ │ └── no-devtool-in-prod.ts │ └── tsconfig.json ├── hint-x-content-type-options │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── hint.ts │ │ └── meta.ts │ ├── tests │ │ └── tests.ts │ └── tsconfig.json ├── hint │ ├── .hintrc │ ├── .npmrc │ ├── .nycrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── docs │ │ ├── about │ │ │ ├── CONTRIBUTORS.md │ │ │ ├── FAQ.md │ │ │ ├── GOVERNANCE.md │ │ │ └── PROJECT_CHARTER.md │ │ ├── contributor-guide │ │ │ ├── getting-started │ │ │ │ ├── architecture.md │ │ │ │ ├── development-environment.md │ │ │ │ ├── events.md │ │ │ │ ├── images │ │ │ │ │ ├── architecture.svg │ │ │ │ │ ├── cli.svg │ │ │ │ │ ├── cli_diagram.xml │ │ │ │ │ ├── sequence.svg │ │ │ │ │ └── sequence.vsdx │ │ │ │ └── pull-requests.md │ │ │ ├── guides │ │ │ │ └── create-custom-hint.md │ │ │ ├── how-to │ │ │ │ ├── common-hint-scenarios.md │ │ │ │ ├── configuration.md │ │ │ │ ├── connector.md │ │ │ │ ├── formatter.md │ │ │ │ ├── hint.md │ │ │ │ ├── parser.md │ │ │ │ └── test-rules.md │ │ │ └── index.md │ │ ├── index.md │ │ └── user-guide │ │ │ ├── api │ │ │ └── using-api.md │ │ │ ├── concepts │ │ │ ├── configurations.md │ │ │ ├── connectors.md │ │ │ ├── formatters.md │ │ │ ├── hints.md │ │ │ ├── images │ │ │ │ ├── codeframe.png │ │ │ │ ├── excel-details.png │ │ │ │ ├── excel-summary.png │ │ │ │ ├── html-output.png │ │ │ │ ├── json-output.png │ │ │ │ ├── stylish-output.png │ │ │ │ └── summary-output.png │ │ │ └── parsers.md │ │ │ ├── configuring-webhint │ │ │ ├── browser-context.md │ │ │ ├── ignoring-domains.md │ │ │ ├── images │ │ │ │ └── default-config.png │ │ │ ├── rules-timeout.md │ │ │ ├── summary.md │ │ │ ├── using-relative-resources.md │ │ │ └── website-authentication.md │ │ │ ├── development-flow-integration │ │ │ ├── circleci.md │ │ │ ├── images │ │ │ │ ├── access-control-1.png │ │ │ │ ├── access-control-2.png │ │ │ │ ├── deployment-credentials.png │ │ │ │ ├── deployment-options-1.png │ │ │ │ ├── deployment-options-2.png │ │ │ │ ├── deployment-slots.png │ │ │ │ ├── slots-1.png │ │ │ │ ├── slots-2.png │ │ │ │ └── slots-3.png │ │ │ ├── local-server.md │ │ │ ├── summary.md │ │ │ ├── travis-and-azure.md │ │ │ └── travisci.md │ │ │ ├── hints │ │ │ └── index.md │ │ │ ├── images │ │ │ └── summary-output.png │ │ │ ├── index.md │ │ │ ├── server-configurations │ │ │ ├── apache.md │ │ │ ├── iis.md │ │ │ └── summary.md │ │ │ └── troubleshoot │ │ │ └── summary.md │ ├── package.json │ ├── src │ │ ├── bin │ │ │ └── hint.ts │ │ └── lib │ │ │ ├── @types │ │ │ ├── README.md │ │ │ └── optionator.d.ts │ │ │ ├── analyzer.ts │ │ │ ├── cli.ts │ │ │ ├── cli │ │ │ ├── actions.ts │ │ │ ├── analyze.ts │ │ │ ├── help.ts │ │ │ ├── options.ts │ │ │ └── version.ts │ │ │ ├── config.ts │ │ │ ├── config │ │ │ ├── config-hints.ts │ │ │ ├── config-schema.json │ │ │ └── config-validator.ts │ │ │ ├── engine.ts │ │ │ ├── enums │ │ │ ├── error-status.ts │ │ │ ├── hint-scope.ts │ │ │ └── index.ts │ │ │ ├── hint-context.ts │ │ │ ├── index.ts │ │ │ ├── types.ts │ │ │ ├── types │ │ │ ├── analyzer-error.ts │ │ │ ├── analyzer.ts │ │ │ ├── connector.ts │ │ │ ├── element-events.ts │ │ │ ├── event.ts │ │ │ ├── events.ts │ │ │ ├── formatters.ts │ │ │ ├── hint-meta.ts │ │ │ ├── hints.ts │ │ │ ├── network.ts │ │ │ └── parser.ts │ │ │ └── utils │ │ │ ├── index.ts │ │ │ └── resource-loader.ts │ ├── tests │ │ └── lib │ │ │ ├── analyzer.ts │ │ │ ├── cli.ts │ │ │ ├── cli │ │ │ ├── analyze.ts │ │ │ ├── help.ts │ │ │ └── version.ts │ │ │ ├── config.ts │ │ │ ├── config │ │ │ ├── config-hints.ts │ │ │ └── config-validator.ts │ │ │ ├── engine.ts │ │ │ ├── fixtures │ │ │ ├── exception │ │ │ │ └── package.json │ │ │ ├── getFilenameForDirectory │ │ │ │ └── .hintrc │ │ │ ├── getFilenameForDirectoryEmpty │ │ │ │ └── .empty │ │ │ ├── notvalid │ │ │ │ ├── notvalid.css │ │ │ │ └── package.json │ │ │ └── valid │ │ │ │ ├── array-hints.json │ │ │ │ ├── hintrc │ │ │ │ ├── hintrc.js │ │ │ │ ├── package.json │ │ │ │ ├── withextends.json │ │ │ │ └── withtwoextends.json │ │ │ ├── hint-context.ts │ │ │ └── utils │ │ │ ├── fixtures │ │ │ ├── @example │ │ │ │ └── webhint-connector-example │ │ │ │ │ ├── index.js │ │ │ │ │ └── package.json │ │ │ ├── connector1 │ │ │ │ ├── index.js │ │ │ │ └── package.json │ │ │ ├── connector2 │ │ │ │ ├── index.js │ │ │ │ └── package.json │ │ │ ├── package.json │ │ │ └── test-page.html │ │ │ └── resource-loader.ts │ └── tsconfig.json ├── parser-babel-config │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── parser.ts │ │ ├── schema.json │ │ └── types.ts │ ├── tests │ │ ├── fixtures │ │ │ ├── invalid │ │ │ │ └── .babelrc │ │ │ ├── valid-with-extends-invalid │ │ │ │ └── .babelrc │ │ │ ├── valid-with-extends-loop-2 │ │ │ │ └── .babelrc │ │ │ ├── valid-with-extends-loop │ │ │ │ └── .babelrc │ │ │ ├── valid-with-extends │ │ │ │ └── .babelrc │ │ │ └── valid │ │ │ │ └── .babelrc │ │ └── tests.ts │ └── tsconfig.json ├── parser-css │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── parser.ts │ │ └── types.ts │ ├── tests │ │ ├── basic-tests.ts │ │ ├── helpers │ │ │ └── mocks.ts │ │ └── interface-tests.ts │ └── tsconfig.json ├── parser-html │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── parser.ts │ │ └── types.ts │ ├── tests │ │ └── parser.ts │ └── tsconfig.json ├── parser-javascript │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── parser.ts │ │ ├── types.ts │ │ └── walk.ts │ ├── tests │ │ └── tests.ts │ └── tsconfig.json ├── parser-jsx │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ └── parser.ts │ ├── tests │ │ └── tests.ts │ └── tsconfig.json ├── parser-less │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ └── parser.ts │ ├── tests │ │ ├── basic-tests.ts │ │ ├── fixtures │ │ │ └── test.less │ │ ├── helpers │ │ │ └── mocks.ts │ │ └── interface-tests.ts │ └── tsconfig.json ├── parser-manifest │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── parser.ts │ │ ├── schema.json │ │ ├── schema.ts │ │ └── types.ts │ ├── tests │ │ └── tests.ts │ └── tsconfig.json ├── parser-package-json │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── parser.ts │ │ ├── schema.json │ │ ├── schema.ts │ │ └── types.ts │ ├── tests │ │ ├── fixtures │ │ │ └── valid │ │ │ │ └── package.json │ │ └── tests.ts │ └── tsconfig.json ├── parser-sass │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ └── parser.ts │ ├── tests │ │ ├── basic-tests.ts │ │ ├── helpers │ │ │ └── mocks.ts │ │ └── interface-tests.ts │ └── tsconfig.json ├── parser-typescript-config │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── parser.ts │ │ ├── schema.json │ │ └── types.ts │ ├── tests │ │ ├── fixtures │ │ │ ├── schema.json │ │ │ ├── tsconfig.invalid.json │ │ │ ├── tsconfig.valid-with-extends-invalid.json │ │ │ ├── tsconfig.valid-with-extends-loop-2.json │ │ │ ├── tsconfig.valid-with-extends-loop.json │ │ │ ├── tsconfig.valid-with-extends.json │ │ │ └── tsconfig.valid.json │ │ └── tests.ts │ └── tsconfig.json ├── parser-typescript │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ └── parser.ts │ ├── tests │ │ └── tests.ts │ └── tsconfig.json ├── parser-webpack-config │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── parser.ts │ │ └── types.ts │ ├── tests │ │ ├── fixtures │ │ │ ├── invalid-config │ │ │ │ └── webpack.config.js │ │ │ └── valid │ │ │ │ └── webpack.config.js │ │ └── webpack-config.ts │ └── tsconfig.json ├── utils-compat-data │ ├── .gitignore │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── scripts │ │ ├── extra-data.js │ │ ├── mdn-browser-compat-data.js │ │ ├── mdn-data.js │ │ └── tsconfig.json │ ├── src │ │ ├── browsers.ts │ │ ├── cache.ts │ │ ├── css.ts │ │ ├── helpers.ts │ │ ├── html.ts │ │ ├── index.ts │ │ ├── matches.ts │ │ └── support.ts │ ├── tests │ │ ├── browsers.ts │ │ └── support.ts │ └── tsconfig.json ├── utils-connector-tools │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── @types │ │ │ ├── browserslist.d.ts │ │ │ └── data-urls.d.ts │ │ ├── index.ts │ │ ├── normalize-headers.ts │ │ ├── redirects.ts │ │ ├── requester-options.ts │ │ ├── requester.ts │ │ └── resolver.ts │ ├── tests │ │ ├── normalize-headers.ts │ │ ├── redirects.ts │ │ ├── requester.ts │ │ └── resolver.ts │ └── tsconfig.json ├── utils-create-server │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── buffer-serialization.ts │ │ ├── generate-html-page.ts │ │ ├── independent-thread-server.ts │ │ ├── index.ts │ │ ├── same-thread-server.ts │ │ └── types.ts │ ├── tests │ │ └── generate-html-page.ts │ └── tsconfig.json ├── utils-css │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── get-css-code-snippet.ts │ │ ├── get-css-location-from-node.ts │ │ ├── get-unprefixed.ts │ │ ├── get-vendor-prefix.ts │ │ └── index.ts │ ├── tests │ │ ├── fixtures │ │ │ └── report.css │ │ ├── get-css-code-snippet.ts │ │ ├── get-css-location-from-node.ts │ │ ├── get-unprefixed.ts │ │ └── get-vendor-prefix.ts │ └── tsconfig.json ├── utils-debug │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ └── debug.ts │ └── tsconfig.json ├── utils-dom │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── characterdata.ts │ │ ├── comment.ts │ │ ├── create-element.ts │ │ ├── create-html-document.ts │ │ ├── cssstyledeclaration.ts │ │ ├── documenttype.ts │ │ ├── elements │ │ │ ├── htmlanchorelement.ts │ │ │ ├── htmlbodyelement.ts │ │ │ └── htmlhtmlelement.ts │ │ ├── find-original-element.ts │ │ ├── get-compiled-selector.ts │ │ ├── get-element-by-url.ts │ │ ├── get-html-code-snippet.ts │ │ ├── globals.ts │ │ ├── htmldocument.ts │ │ ├── htmlelement.ts │ │ ├── index.ts │ │ ├── node.ts │ │ ├── snapshot.ts │ │ ├── text.ts │ │ ├── traverse.ts │ │ ├── types.ts │ │ └── utils.ts │ ├── tests │ │ ├── axe.ts │ │ ├── elements │ │ │ └── htmlanchorelement.ts │ │ ├── find-original-element.ts │ │ ├── fixtures │ │ │ ├── html-report.html │ │ │ ├── serialized-test-html.html │ │ │ └── test-html.html │ │ ├── get-element-by-url.ts │ │ ├── get-html-code-snippet.ts │ │ ├── globals.ts │ │ ├── html.ts │ │ ├── htmldocument.ts │ │ ├── htmlelement.ts │ │ ├── node.ts │ │ └── snapshot.ts │ └── tsconfig.json ├── utils-fs │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── cwd.ts │ │ ├── file-extension.ts │ │ ├── file-name.ts │ │ ├── index.ts │ │ ├── is-directory.ts │ │ ├── is-file.ts │ │ ├── load-js-file.ts │ │ ├── load-json-file.ts │ │ ├── path-exists.ts │ │ ├── read-file-async.ts │ │ ├── read-file.ts │ │ └── write-file-async.ts │ ├── tests │ │ ├── cwd.ts │ │ ├── file-extension.ts │ │ ├── file-name.ts │ │ ├── fixtures │ │ │ ├── bom.txt │ │ │ ├── dummy.txt │ │ │ ├── empty.txt │ │ │ ├── fixture.js │ │ │ └── fixture.json │ │ ├── is-directory.ts │ │ ├── is-file.ts │ │ ├── load-js-file.ts │ │ ├── load-json-file.ts │ │ └── read-file-async.ts │ └── tsconfig.json ├── utils-i18n │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── format.ts │ │ ├── get-category-name.ts │ │ ├── get-message.ts │ │ └── index.ts │ ├── tests │ │ └── get-message.ts │ └── tsconfig.json ├── utils-json │ ├── .gitignore │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── final-config.ts │ │ ├── index.ts │ │ ├── parse-json.ts │ │ ├── schema-validator.ts │ │ └── types.ts │ ├── tests │ │ ├── final-config.ts │ │ ├── fixtures │ │ │ ├── baseConfig.json │ │ │ ├── baseConfigCircular.json │ │ │ ├── fixture.json │ │ │ └── node_modules │ │ │ │ └── @tsconfig │ │ │ │ └── strictest │ │ │ │ └── tsconfig.json │ │ ├── parse-json.ts │ │ └── schema-validator.ts │ └── tsconfig.json ├── utils-network │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── as-path-string.ts │ │ ├── as-uri.ts │ │ ├── capitalize-header-name.ts │ │ ├── has-protocol.ts │ │ ├── included-headers.ts │ │ ├── index.ts │ │ ├── is-data-uri.ts │ │ ├── is-html-document.ts │ │ ├── is-http.ts │ │ ├── is-https.ts │ │ ├── is-local-file.ts │ │ ├── is-regular-protocol.ts │ │ ├── normalize-header-value.ts │ │ ├── request-async.ts │ │ ├── request-json-async.ts │ │ ├── rx-local-file.ts │ │ └── rx-localhost.ts │ ├── tests │ │ ├── as-path-string.ts │ │ ├── as-uri.ts │ │ ├── capitalize-header-name.ts │ │ ├── fixtures │ │ │ └── empty.txt │ │ ├── has-protocol.ts │ │ ├── included-headers.ts │ │ ├── is-data-uri.ts │ │ ├── is-html-document.ts │ │ ├── is-http.ts │ │ ├── is-https.ts │ │ ├── is-local-file.ts │ │ ├── is-regular-protocol.ts │ │ ├── normalize-header-value.ts │ │ ├── request-async.ts │ │ ├── rx-local-file.ts │ │ └── rx-localhost.ts │ └── tsconfig.json ├── utils-string │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── cut-string.ts │ │ ├── index.ts │ │ ├── merge-ignore-include-arrays.ts │ │ ├── normalize-includes.ts │ │ ├── normalize-string-by-delimiter.ts │ │ ├── normalize-string.ts │ │ ├── pretty-print-array.ts │ │ ├── to-camel-case.ts │ │ ├── to-lowercase-array.ts │ │ ├── to-lowercase-keys.ts │ │ └── to-pascal-case.ts │ ├── tests │ │ ├── cut-string.ts │ │ ├── merge-ignore-include-arrays.ts │ │ ├── normalize-includes.ts │ │ ├── normalize-string-by-delimiter.ts │ │ ├── pretty-print-array.ts │ │ ├── to-camel-case.ts │ │ ├── to-lower-case-keys.ts │ │ └── to-pascal-case.ts │ └── tsconfig.json ├── utils-tests-helpers │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── get-hint-path.ts │ │ ├── hint-runner.ts │ │ ├── hint-test-type.ts │ │ └── index.ts │ ├── tests │ │ ├── get-hint-path.ts │ │ └── hint-runner-helpers.ts │ └── tsconfig.json ├── utils-types │ ├── .npmrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── src │ │ ├── category.ts │ │ ├── fix.ts │ │ ├── http-headers.ts │ │ ├── index.ts │ │ ├── problem-documentation.ts │ │ ├── problem-location.ts │ │ ├── problems.ts │ │ └── severity.ts │ └── tsconfig.json ├── utils-worker │ ├── .eslintignore │ ├── .gitignore │ ├── .npmrc │ ├── CHANGELOG.md │ ├── CONTRIBUTING.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── scripts │ │ ├── bundle-size.js │ │ ├── create-i18n.js │ │ ├── import-hints.js │ │ ├── import-parsers.js │ │ ├── merge-i18n.js │ │ └── tsconfig.json │ ├── src │ │ ├── @types │ │ │ └── browserslist.d.ts │ │ ├── _locales │ │ │ └── en │ │ │ │ └── messages.json │ │ ├── connector.ts │ │ ├── shared │ │ │ ├── globals.ts │ │ │ ├── host.ts │ │ │ ├── network.ts │ │ │ └── types.ts │ │ ├── shims │ │ │ ├── acorn-jsx-walk.ts │ │ │ ├── acorn-jsx.ts │ │ │ ├── file-type.ts │ │ │ ├── get-message.ts │ │ │ ├── is-svg.ts │ │ │ ├── request-async.ts │ │ │ └── url.ts │ │ └── webhint.ts │ ├── tests │ │ ├── fixtures │ │ │ └── basic-hints.html │ │ ├── helpers │ │ │ ├── fixtures.ts │ │ │ ├── runner.ts │ │ │ └── types.ts │ │ ├── integration.ts │ │ └── test-perf.ts │ ├── tsconfig.json │ └── webpack.config.js └── utils │ ├── .gitignore │ ├── .npmrc │ ├── .nycrc │ ├── CHANGELOG.md │ ├── LICENSE.txt │ ├── README.md │ ├── package.json │ ├── scripts │ ├── mime-db.js │ └── tsconfig.json │ ├── src │ ├── @types │ │ └── npm-registry-fetch.d.ts │ ├── async-wrapper.ts │ ├── config-store.ts │ ├── config │ │ ├── get-hints-from-configuration.ts │ │ ├── index.ts │ │ ├── normalize-hints.ts │ │ ├── to-absolute-paths.ts │ │ └── types.ts │ ├── content-type.ts │ ├── formatter │ │ ├── index.ts │ │ ├── occurrences-to-color.ts │ │ └── severity-to-color.ts │ ├── has-yarnlock.ts │ ├── index.ts │ ├── logging.ts │ ├── mime-db │ │ └── index.ts │ ├── misc │ │ ├── ask-question.ts │ │ ├── delay.ts │ │ ├── environment.ts │ │ ├── get-platform.ts │ │ ├── index.ts │ │ └── merge-env-with-options.ts │ ├── npm.ts │ ├── packages │ │ ├── enums.ts │ │ ├── find-node-modules-root.ts │ │ ├── find-package-root.ts │ │ ├── has-multiple-resources.ts │ │ ├── index.ts │ │ ├── is-full-package-name.ts │ │ ├── is-official.ts │ │ ├── load-hint-package.ts │ │ ├── load-package.ts │ │ ├── load-resource.ts │ │ ├── require-package.ts │ │ └── resource-error.ts │ └── types │ │ ├── index.ts │ │ └── npm.ts │ ├── tests │ ├── async-wrapper.ts │ ├── config │ │ ├── fixtures │ │ │ ├── configurationWithExtends.json │ │ │ ├── configurationWithHints.json │ │ │ ├── configurationWithHints2.json │ │ │ ├── configurationWithLoop1.json │ │ │ ├── configurationWithLoop2.json │ │ │ ├── configurationWithTwoExtends.json │ │ │ └── configurationWithoutHints.json │ │ ├── get-hints-from-configuration.ts │ │ ├── normalize-hints.ts │ │ └── to-absolute-paths.ts │ ├── content-type.ts │ ├── fixtures │ │ ├── dep-package.json │ │ ├── dev-package.json │ │ ├── dirWithYarnLock │ │ │ └── yarn.lock │ │ ├── dummy.txt │ │ ├── fixture.ico │ │ ├── fixture.json │ │ ├── fixture.svg │ │ ├── fixture.xml │ │ └── packages │ │ │ ├── node_modules │ │ │ └── testModule │ │ │ │ └── package.json │ │ │ └── package.json │ ├── formatter │ │ ├── occurences-to-color.ts │ │ └── severity-to-color.ts │ ├── has-yarnlock.ts │ ├── logging.ts │ ├── misc │ │ ├── environment.ts │ │ ├── get-platform.ts │ │ └── merge-env-with-options.ts │ ├── npm.ts │ └── packages │ │ ├── find-node-modules-root.ts │ │ └── load-resource.ts │ └── tsconfig.json ├── release ├── @types │ ├── custom.ts │ ├── listr-inquirer.d.ts │ ├── octokit-plugin-throttling.ts │ └── tsort.d.ts ├── lib │ ├── git-helpers.ts │ ├── skippers.ts │ ├── update-dependencies.ts │ ├── utils.ts │ └── yargs-config.ts ├── main.ts └── tasks │ ├── authenticate-github.ts │ ├── calculate-changed-packages.ts │ ├── calculate-new-versions.ts │ ├── clean-up.ts │ ├── clean-workspace.ts │ ├── commit-packages-changes.ts │ ├── deauthenticate-github.ts │ ├── get-packages.ts │ ├── install-dependencies.ts │ ├── push-changes.ts │ ├── release.ts │ ├── run-tests.ts │ ├── save-changes.ts │ ├── update-changelogs.ts │ ├── update-configuration-all.ts │ ├── validate-changes.ts │ └── validate-environment.ts ├── scripts ├── @types │ └── json-schema-to-typescript.d.ts ├── ava-cache.js ├── build-or-test-all.js ├── create-i18n.js ├── dist-management │ ├── download-dist.js │ ├── pack-and-upload.sh │ └── upload-dist.js ├── fix-dependencies.js ├── lint-dependencies.js ├── lint-markdown.js ├── prebuild.js ├── set-NPM_CONFIG_PREFIX.bat ├── test.js ├── update-3rd-party.ts ├── update-tsconfig-references.ts ├── utils.js └── utils │ ├── exec.d.ts │ └── exec.js ├── tsconfig.json └── yarn.lock /.eslintignore: -------------------------------------------------------------------------------- 1 | coverage 2 | dist 3 | node_modules 4 | fixtures 5 | packages/hint-webpack-config/docs/is-valid.md 6 | *.d.ts 7 | packages/hint/hint-report 8 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Automatically normalize line endings for all text-based files. 2 | # https://git-scm.com/docs/gitattributes#_end_of_line_conversion 3 | 4 | * text=auto eol=lf 5 | *.png -text 6 | *.ico -text 7 | *.woff2 -text 8 | *.br -text 9 | *.gz -text 10 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | # For more information about the configurations used 2 | # in this file, please see GitHub's documentation. 3 | # 4 | # https://github.com/blog/2392-introducing-code-owners. 5 | 6 | * @molant @vidorteg 7 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: npm 4 | directory: "/" 5 | schedule: 6 | interval: monthly 7 | open-pull-requests-limit: 99 8 | ignore: 9 | - dependency-name: angular 10 | versions: 11 | - ">= 0" 12 | - dependency-name: jquery 13 | versions: 14 | - ">= 0" 15 | -------------------------------------------------------------------------------- /.markdownlintrc: -------------------------------------------------------------------------------- 1 | { 2 | "MD013": { 3 | "code_blocks": false, 4 | "tables": false 5 | }, 6 | "MD014": false, 7 | "MD026": { 8 | "punctuation": ".,;:!" 9 | }, 10 | "MD029": false, 11 | "MD033": { 12 | "allowed_elements": ["br", "details", "summary"] 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | package-lock=false 2 | scripts-prepend-node-path=auto 3 | -------------------------------------------------------------------------------- /.nycrc: -------------------------------------------------------------------------------- 1 | { 2 | "branches": 80, 3 | "cache": true, 4 | "check-coverage": true, 5 | "exclude": [ 6 | "**/dist/tests/**" 7 | ], 8 | "extension": [ 9 | ".ts", 10 | ".tsx" 11 | ], 12 | "functions": 80, 13 | "instrument": true, 14 | "lines": 80, 15 | "reporter": [ 16 | "lcov", 17 | "text" 18 | ], 19 | "sourceMap": true, 20 | "statements": 80 21 | } 22 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "dbaeumer.vscode-eslint", 4 | "eamodio.gitlens", 5 | "github.vscode-pull-request-github", 6 | "EditorConfig.EditorConfig", 7 | "ms-vsliveshare.vsliveshare", 8 | "webhint.vscode-webhint" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "eslint.alwaysShowStatus": true, 3 | "eslint.validate": [ 4 | "javascript", 5 | "javascriptreact", 6 | "typescript", 7 | "typescriptreact" 8 | ], 9 | "files.exclude": { 10 | "**/*.css.d.ts": true 11 | }, 12 | "files.insertFinalNewline": true, 13 | "files.trimTrailingWhitespace": true 14 | } 15 | -------------------------------------------------------------------------------- /@types/listr-input.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'listr-input'; 2 | -------------------------------------------------------------------------------- /azure-pipelines.yml: -------------------------------------------------------------------------------- 1 | # Scope the validations to main and PRs to main 2 | trigger: 3 | - main 4 | pr: 5 | - main 6 | 7 | # Changes in main 8 | jobs: 9 | - template: azure-pipelines/main.yml 10 | 11 | # PRs 12 | - template: azure-pipelines/pr.yml 13 | 14 | # Dependabot PRs 15 | - template: azure-pipelines/dependabot.yml 16 | 17 | # Daily full run (configured via dashboard) 18 | - template: azure-pipelines/scheduled.yml 19 | -------------------------------------------------------------------------------- /azure-pipelines/all-versions.yml: -------------------------------------------------------------------------------- 1 | parameters: 2 | name: '' 3 | vmImage: '' 4 | condition: '' 5 | worker: '' 6 | 7 | jobs: 8 | - job: ${{ parameters.name }} 9 | pool: 10 | vmImage: ${{ parameters.vmImage }} 11 | strategy: 12 | matrix: 13 | node_14_x: 14 | node_version: 14.x 15 | steps: 16 | - template: ${{ parameters.worker }} 17 | timeoutInMinutes: 120 18 | condition: ${{ parameters.condition }} 19 | -------------------------------------------------------------------------------- /azure-pipelines/dependabot.yml: -------------------------------------------------------------------------------- 1 | # Dependabot PRs 2 | # Run only latest version of node on Linux 3 | jobs: 4 | - template: latest-version.yml 5 | parameters: 6 | name: Dependabot 7 | vmImage: 'ubuntu-latest' 8 | condition: and(eq(variables['Build.Reason'], 'PullRequest'), startsWith(variables['System.PullRequest.SourceBranch'], 'dependabot/')) 9 | worker: 'standard.yml' 10 | -------------------------------------------------------------------------------- /azure-pipelines/full.yml: -------------------------------------------------------------------------------- 1 | steps: 2 | - task: NodeTool@0 3 | inputs: 4 | versionSpec: $(node_version) 5 | - task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2 6 | displayName: 'Use Yarn 1.x' 7 | inputs: 8 | checkLatest: true 9 | - script: yarn --ignore-engines 10 | displayName: 'Install dependencies' 11 | - script: yarn test 12 | displayName: 'Test' 13 | -------------------------------------------------------------------------------- /azure-pipelines/latest-version.yml: -------------------------------------------------------------------------------- 1 | parameters: 2 | name: '' 3 | vmImage: '' 4 | condition: '' 5 | worker: '' 6 | 7 | jobs: 8 | - job: ${{ parameters.name }} 9 | pool: 10 | vmImage: ${{ parameters.vmImage }} 11 | strategy: 12 | matrix: 13 | node_14_x: 14 | node_version: 14.x 15 | steps: 16 | - template: ${{ parameters.worker }} 17 | timeoutInMinutes: 120 18 | condition: ${{ parameters.condition }} 19 | -------------------------------------------------------------------------------- /packages/configuration-all/README.md: -------------------------------------------------------------------------------- 1 | # webhint's all configuration (`@hint/configuration-all`) 2 | 3 | **You should not use this package in your environment.** 4 | 5 | This package is for internal usage and have an easy way to download all 6 | the first party resources to generate the documentation in 7 | [webhint.io](https://webhint.io). 8 | -------------------------------------------------------------------------------- /packages/configuration-development/.npmrc: -------------------------------------------------------------------------------- 1 | package-lock=false 2 | -------------------------------------------------------------------------------- /packages/configuration-progressive-web-apps/.npmrc: -------------------------------------------------------------------------------- 1 | package-lock=false 2 | -------------------------------------------------------------------------------- /packages/configuration-web-recommended/.npmrc: -------------------------------------------------------------------------------- 1 | package-lock=false 2 | -------------------------------------------------------------------------------- /packages/connector-jsdom/.npmrc: -------------------------------------------------------------------------------- 1 | package-lock=false 2 | -------------------------------------------------------------------------------- /packages/connector-jsdom/src/@types/jsdomutils.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'jsdom/lib/jsdom/living/generated/utils'; 2 | -------------------------------------------------------------------------------- /packages/connector-jsdom/tests/fixtures/common/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/connector-jsdom/tests/fixtures/common/favicon-32x32.png -------------------------------------------------------------------------------- /packages/connector-jsdom/tests/fixtures/common/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/connector-jsdom/tests/fixtures/common/favicon.ico -------------------------------------------------------------------------------- /packages/connector-jsdom/tests/fixtures/common/nellie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/connector-jsdom/tests/fixtures/common/nellie.png -------------------------------------------------------------------------------- /packages/connector-local/.npmrc: -------------------------------------------------------------------------------- 1 | package-lock=false 2 | -------------------------------------------------------------------------------- /packages/connector-local/tests/fixtures/add/new-file.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/connector-local/tests/fixtures/base-and-no-base/base.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 |
Empty
7 | 8 | -------------------------------------------------------------------------------- /packages/connector-local/tests/fixtures/base-and-no-base/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/connector-local/tests/fixtures/base-and-no-base/image.png -------------------------------------------------------------------------------- /packages/connector-local/tests/fixtures/base-and-no-base/no-base.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
Empty
6 | 7 | -------------------------------------------------------------------------------- /packages/connector-local/tests/fixtures/base-and-no-base/resources/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/connector-local/tests/fixtures/base-and-no-base/resources/image.png -------------------------------------------------------------------------------- /packages/connector-local/tests/fixtures/base/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 |
Empty
7 | 8 | -------------------------------------------------------------------------------- /packages/connector-local/tests/fixtures/base/resources/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/connector-local/tests/fixtures/base/resources/image.png -------------------------------------------------------------------------------- /packages/connector-local/tests/fixtures/folder with spaces and [brackets]/script with spaces and [brackets].js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | hello() { 3 | return 'hello world'; 4 | } 5 | }; 6 | -------------------------------------------------------------------------------- /packages/connector-local/tests/fixtures/no-base/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/connector-local/tests/fixtures/no-base/image.png -------------------------------------------------------------------------------- /packages/connector-local/tests/fixtures/no-base/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
Empty
6 | 7 | -------------------------------------------------------------------------------- /packages/connector-local/tests/fixtures/no-watch/script.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | hello() { 3 | return 'hello world'; 4 | } 5 | }; 6 | -------------------------------------------------------------------------------- /packages/connector-local/tests/fixtures/no-watch/stylish-output.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/connector-local/tests/fixtures/no-watch/stylish-output.png -------------------------------------------------------------------------------- /packages/connector-local/tests/fixtures/no-watch/test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 |
My html
7 | 8 | -------------------------------------------------------------------------------- /packages/connector-local/tests/fixtures/watch-ignore/.gitignore: -------------------------------------------------------------------------------- 1 | ignore.html -------------------------------------------------------------------------------- /packages/connector-puppeteer/.npmrc: -------------------------------------------------------------------------------- 1 | package-lock=false 2 | -------------------------------------------------------------------------------- /packages/connector-puppeteer/tests/fixtures/action.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | action: () => { } 3 | }; 4 | -------------------------------------------------------------------------------- /packages/connector-puppeteer/tests/fixtures/common/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/connector-puppeteer/tests/fixtures/common/favicon-32x32.png -------------------------------------------------------------------------------- /packages/connector-puppeteer/tests/fixtures/common/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/connector-puppeteer/tests/fixtures/common/favicon.ico -------------------------------------------------------------------------------- /packages/connector-puppeteer/tests/fixtures/common/nellie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/connector-puppeteer/tests/fixtures/common/nellie.png -------------------------------------------------------------------------------- /packages/connector-puppeteer/tests/fixtures/invalid-action.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | wrongAction: () => { } 3 | }; 4 | -------------------------------------------------------------------------------- /packages/create-hint/.npmrc: -------------------------------------------------------------------------------- 1 | package-lock=false 2 | -------------------------------------------------------------------------------- /packages/create-hint/README.md: -------------------------------------------------------------------------------- 1 | # Create hint (`create-hint`) 2 | 3 | A package initialization template for [`webhint`][webhint] 4 | [hints][hints]. 5 | 6 | To use it run: 7 | 8 | ```bash 9 | npm init hint 10 | ``` 11 | 12 | 13 | 14 | [hints]: https://webhint.io/docs/user-guide/concepts/hints/ 15 | [webhint]: https://webhint.io/ 16 | -------------------------------------------------------------------------------- /packages/create-hint/src/files/.npmrc: -------------------------------------------------------------------------------- 1 | package-lock=false 2 | -------------------------------------------------------------------------------- /packages/create-hint/src/index.ts: -------------------------------------------------------------------------------- 1 | import createHint from './create-hint'; 2 | 3 | createHint(); 4 | -------------------------------------------------------------------------------- /packages/create-hint/src/no-official-files/.eslintignore: -------------------------------------------------------------------------------- 1 | coverage 2 | dist 3 | fixtures 4 | node_modules 5 | -------------------------------------------------------------------------------- /packages/create-hint/src/no-official-files/.gitattributes: -------------------------------------------------------------------------------- 1 | # Automatically normalize line endings for all text-based files. 2 | # https://git-scm.com/docs/gitattributes#_end_of_line_conversion 3 | 4 | * text=auto 5 | -------------------------------------------------------------------------------- /packages/create-hint/src/no-official-files/.markdownlintrc: -------------------------------------------------------------------------------- 1 | { 2 | "MD013": { 3 | "code_blocks": false 4 | }, 5 | "MD026": { 6 | "punctuation": ".,;:!" 7 | }, 8 | "MD029": false 9 | } 10 | -------------------------------------------------------------------------------- /packages/create-hint/src/templates/index.ts.hbs: -------------------------------------------------------------------------------- 1 | /** 2 | * @fileoverview {{description}} 3 | */ 4 | 5 | {{#each hints}} 6 | import * as {{toCamelCase normalizedName}} from './{{normalizedName}}'; 7 | {{/each}} 8 | 9 | module.exports = { 10 | {{#each hints}} 11 | '{{normalizedName}}': {{toCamelCase normalizedName}}{{#unless @last}},{{/unless}} 12 | {{/each}} 13 | }; 14 | -------------------------------------------------------------------------------- /packages/create-hint/src/templates/meta-index.ts.hbs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | {{#each hints}} 3 | '{{normalizedName}}': require('meta/{{normalizedName}}'){{#unless @last}},{{/unless}} 4 | {{/each}} 5 | }; 6 | -------------------------------------------------------------------------------- /packages/create-hint/tests/fixtures/template.hbs: -------------------------------------------------------------------------------- 1 | {{{dependencyVersion "dummy-package" "1.0.0"}}} 2 | -------------------------------------------------------------------------------- /packages/create-hintrc/.npmrc: -------------------------------------------------------------------------------- 1 | package-lock=false 2 | -------------------------------------------------------------------------------- /packages/create-hintrc/README.md: -------------------------------------------------------------------------------- 1 | # Create `.hintrc` (`create-hintrc`) 2 | 3 | A package initialization template for [`webhint`'s][webhint] 4 | [.hintrc file][config]. 5 | 6 | To use it run: 7 | 8 | ```bash 9 | npm init hintrc 10 | ``` 11 | 12 | 13 | 14 | [config]: https://webhint.io/docs/user-guide/#default-configuration 15 | [webhint]: https://webhint.io/ 16 | -------------------------------------------------------------------------------- /packages/create-hintrc/src/@types/browserslist.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'browserslist' { 2 | function browserslist(match?: string | string[]): string[]; 3 | export = browserslist; 4 | } 5 | -------------------------------------------------------------------------------- /packages/create-hintrc/src/index.ts: -------------------------------------------------------------------------------- 1 | import createHintrc from './create-hintrc'; 2 | 3 | createHintrc(); 4 | -------------------------------------------------------------------------------- /packages/create-parser/.npmrc: -------------------------------------------------------------------------------- 1 | package-lock=false 2 | -------------------------------------------------------------------------------- /packages/create-parser/README.md: -------------------------------------------------------------------------------- 1 | # Create parser (`create-parser`) 2 | 3 | A package initialization template for [`hint`][hint] 4 | [parsers][parsers]. 5 | 6 | To use it run: 7 | 8 | ```bash 9 | npm init parser 10 | ``` 11 | 12 | 13 | 14 | [parsers]: https://webhint.io/docs/user-guide/concepts/parsers/ 15 | [hint]: https://webhint.io/ 16 | -------------------------------------------------------------------------------- /packages/create-parser/src/files/.npmrc: -------------------------------------------------------------------------------- 1 | package-lock=false 2 | -------------------------------------------------------------------------------- /packages/create-parser/src/index.ts: -------------------------------------------------------------------------------- 1 | import newParser from './new-parser'; 2 | 3 | newParser(); 4 | -------------------------------------------------------------------------------- /packages/create-parser/src/no-official-files/.eslintignore: -------------------------------------------------------------------------------- 1 | coverage 2 | dist 3 | fixtures 4 | node_modules 5 | -------------------------------------------------------------------------------- /packages/create-parser/src/no-official-files/.gitattributes: -------------------------------------------------------------------------------- 1 | # Automatically normalize line endings for all text-based files. 2 | # https://git-scm.com/docs/gitattributes#_end_of_line_conversion 3 | 4 | * text=auto 5 | -------------------------------------------------------------------------------- /packages/create-parser/src/no-official-files/.markdownlintrc: -------------------------------------------------------------------------------- 1 | { 2 | "MD013": { 3 | "code_blocks": false 4 | }, 5 | "MD026": { 6 | "punctuation": ".,;:!" 7 | }, 8 | "MD029": false 9 | } 10 | -------------------------------------------------------------------------------- /packages/create-parser/src/shared-templates/config.hbs: -------------------------------------------------------------------------------- 1 | { 2 | "connector": { 3 | "name": "jsdom", 4 | "options": { 5 | "waitFor": 1000 6 | } 7 | }, 8 | "formatters": "summary", 9 | "hintsTimeout": 120000, 10 | "parsers": ["{{normalizedName}}"] 11 | } 12 | -------------------------------------------------------------------------------- /packages/create-parser/src/templates/doc.hbs: -------------------------------------------------------------------------------- 1 | # {{name}} (`{{normalizedName}}`) 2 | 3 | {{description}} 4 | 5 | ## How to use it 6 | 7 | ## Example 8 | -------------------------------------------------------------------------------- /packages/create-parser/src/templates/index.hbs: -------------------------------------------------------------------------------- 1 | /** 2 | * @fileoverview {{description}} 3 | */ 4 | 5 | module.exports = { 6 | '{{normalizedName}}': require('./parsers/{{normalizedName}}/{{normalizedName}}') 7 | }; 8 | -------------------------------------------------------------------------------- /packages/create-parser/tests/fixtures/template.hbs: -------------------------------------------------------------------------------- 1 | {{{dependencyVersion "dummy-package" "1.0.0"}}} 2 | -------------------------------------------------------------------------------- /packages/extension-browser/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": [ 3 | "react-hooks" 4 | ], 5 | "rules": { 6 | "react-hooks/rules-of-hooks": "error", 7 | "react-hooks/exhaustive-deps": "error" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /packages/extension-browser/.gitignore: -------------------------------------------------------------------------------- 1 | # Autogenerated CSS Module type definitions 2 | *.css.d.ts 3 | 4 | # Autogenerated imports for hints and hint metadata 5 | *.import.ts 6 | 7 | # webpack's bundled stats file 8 | stats.json 9 | -------------------------------------------------------------------------------- /packages/extension-browser/.npmrc: -------------------------------------------------------------------------------- 1 | package-lock=false 2 | -------------------------------------------------------------------------------- /packages/extension-browser/images/edge-devtools.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/extension-browser/images/edge-devtools.png -------------------------------------------------------------------------------- /packages/extension-browser/images/extension-browser-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/extension-browser/images/extension-browser-0.png -------------------------------------------------------------------------------- /packages/extension-browser/images/extension-browser-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/extension-browser/images/extension-browser-1.png -------------------------------------------------------------------------------- /packages/extension-browser/scripts/host-ui.js: -------------------------------------------------------------------------------- 1 | const { hostUI } = require('../dist/tests/helpers/host-ui'); 2 | 3 | const main = async () => { 4 | await hostUI(); 5 | console.log('Press CTRL+C to stop.'); 6 | }; 7 | 8 | main(); 9 | -------------------------------------------------------------------------------- /packages/extension-browser/scripts/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowJs": true, 4 | "alwaysStrict": true, 5 | "checkJs": true, 6 | "moduleResolution": "node", 7 | "noUnusedLocals": true, 8 | "resolveJsonModule": true, 9 | "strict": true, 10 | "target": "esnext" 11 | }, 12 | "include": [ 13 | "**/*.js" 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /packages/extension-browser/src/@types/browserslist.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'browserslist' { 2 | function browserslist(match?: string | string[]): string[]; 3 | export = browserslist; 4 | } 5 | -------------------------------------------------------------------------------- /packages/extension-browser/src/@types/react-syntax-highlighter.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'react-syntax-highlighter/dist/esm/prism-light' { 2 | const rshl: any; 3 | export default rshl; 4 | } 5 | 6 | declare module 'react-syntax-highlighter/dist/esm/languages/prism/*' { 7 | const language: any; 8 | export default language; 9 | } 10 | -------------------------------------------------------------------------------- /packages/extension-browser/src/@types/svg-url-loader.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.svg' { 2 | const svgDataURL: string; 3 | export = svgDataURL; 4 | } 5 | -------------------------------------------------------------------------------- /packages/extension-browser/src/browser-action/devtools.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/extension-browser/src/browser-action/devtools.png -------------------------------------------------------------------------------- /packages/extension-browser/src/devtools/devtools.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /packages/extension-browser/src/devtools/devtools.ts: -------------------------------------------------------------------------------- 1 | import { browser } from '../shared/globals'; 2 | import { getMessage } from './utils/i18n'; 3 | 4 | browser.devtools.panels.create( 5 | getMessage('hintsTitle'), 6 | `/tab-icon.${browser.devtools.panels.themeName}.svg`, 7 | '/devtools/panel.html' 8 | ); 9 | -------------------------------------------------------------------------------- /packages/extension-browser/src/devtools/panel.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Hints 6 | 7 | 8 |
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /packages/extension-browser/src/devtools/panel.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { render } from 'react-dom'; 3 | 4 | require('focus-visible'); 5 | 6 | import App from './views/app'; 7 | 8 | const props = (window as any).initialState || {}; 9 | 10 | render(, document.getElementById('webhint-root')); 11 | -------------------------------------------------------------------------------- /packages/extension-browser/src/devtools/utils/categories.ts: -------------------------------------------------------------------------------- 1 | import { Category } from '@hint/utils-types'; 2 | 3 | import metas from '../../shared/metas.import'; 4 | 5 | /** 6 | * Returns a list with all the hint categories. 7 | */ 8 | export const getCategories = () => { 9 | return [...new Set(metas.map((meta) => { 10 | return (meta.docs && meta.docs.category || Category.other); 11 | }))].sort(); 12 | }; 13 | -------------------------------------------------------------------------------- /packages/extension-browser/src/devtools/utils/i18n.ts: -------------------------------------------------------------------------------- 1 | import { browser } from '../../shared/globals'; 2 | import { MessageName } from '../../shared/i18n.import'; 3 | 4 | export { MessageName } from '../../shared/i18n.import'; 5 | 6 | export const getMessage = (key: MessageName, substitutions?: string | string[]) => { 7 | return browser.i18n.getMessage(key, substitutions); 8 | }; 9 | -------------------------------------------------------------------------------- /packages/extension-browser/src/devtools/utils/ids.ts: -------------------------------------------------------------------------------- 1 | import { useState } from 'react'; 2 | 3 | let nextId = 0; 4 | 5 | export const uniqueId = () => { 6 | return `id${nextId++}`; 7 | }; 8 | 9 | export const useUniqueId = () => { 10 | const [id] = useState(() => { 11 | return uniqueId(); 12 | }); 13 | 14 | return id; 15 | }; 16 | -------------------------------------------------------------------------------- /packages/extension-browser/src/devtools/utils/inject.ts: -------------------------------------------------------------------------------- 1 | import { browser } from '../../shared/globals'; 2 | 3 | export const evaluate = (code: string): Promise => { 4 | return new Promise((resolve, reject) => { 5 | browser.devtools.inspectedWindow.eval(code, (result, err) => { 6 | if (err) { 7 | reject(err); 8 | 9 | return; 10 | } 11 | 12 | resolve(result); 13 | }); 14 | }); 15 | }; 16 | -------------------------------------------------------------------------------- /packages/extension-browser/src/devtools/views/controls/checkbox.check.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/extension-browser/src/devtools/views/controls/checkbox.fluent.css: -------------------------------------------------------------------------------- 1 | .root { 2 | composes: root from './checkbox.base.css'; 3 | } 4 | -------------------------------------------------------------------------------- /packages/extension-browser/src/devtools/views/controls/external-docs.css: -------------------------------------------------------------------------------- 1 | .header { 2 | margin-bottom: 0; 3 | } 4 | 5 | .list { 6 | margin-top: .5rem; /* 8px */ 7 | } 8 | -------------------------------------------------------------------------------- /packages/extension-browser/src/devtools/views/controls/inspect-button.icon.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /packages/extension-browser/src/devtools/views/controls/label.css: -------------------------------------------------------------------------------- 1 | .root { 2 | align-items: center; 3 | display: grid; 4 | column-gap: 0.375rem; /* 6px */ 5 | grid-template-columns: auto 1fr; 6 | justify-items: start; 7 | } 8 | -------------------------------------------------------------------------------- /packages/extension-browser/src/devtools/views/controls/radio.fluent.css: -------------------------------------------------------------------------------- 1 | .root { 2 | composes: root from './radio.base.css'; 3 | } 4 | -------------------------------------------------------------------------------- /packages/extension-browser/src/devtools/views/controls/summary.css: -------------------------------------------------------------------------------- 1 | .root { 2 | cursor: pointer; 3 | line-height: 1.5rem; /* 24px */ 4 | width: -moz-fit-content; 5 | width: fit-content; 6 | } 7 | 8 | .root:focus { 9 | outline: var(--focus-outline); 10 | } 11 | 12 | .root:global(:not(.focus-visible)) { 13 | outline: none; 14 | } 15 | -------------------------------------------------------------------------------- /packages/extension-browser/src/devtools/views/controls/valid-input.css: -------------------------------------------------------------------------------- 1 | .root { 2 | background-color: var(--input-text-bg); 3 | border: var(--border); 4 | border-radius: var(--rounding); 5 | color: var(--base-color); 6 | font-size: var(--font-size-sm); 7 | padding: 0.1875rem 0.75rem 0.3125rem; /* 3px 12px 5px */ 8 | width: 8.25rem; /* 132px */ 9 | } 10 | 11 | .root:focus { 12 | outline: var(--focus-outline); 13 | } 14 | -------------------------------------------------------------------------------- /packages/extension-browser/src/devtools/views/page.css: -------------------------------------------------------------------------------- 1 | .root { 2 | min-height: 100%; 3 | } 4 | 5 | .root.disabled { 6 | filter: blur(10px); 7 | } 8 | 9 | .fieldset { 10 | border: none; 11 | margin: 0; 12 | padding: 0; 13 | } 14 | -------------------------------------------------------------------------------- /packages/extension-browser/src/devtools/views/pages/config/example.css: -------------------------------------------------------------------------------- 1 | .root { 2 | color: var(--example-color); 3 | font-size: var(--font-size-xs); 4 | grid-column: 2 / 2; 5 | } 6 | -------------------------------------------------------------------------------- /packages/extension-browser/src/devtools/views/pages/config/header.css: -------------------------------------------------------------------------------- 1 | .root { 2 | align-items: start; 3 | background-color: var(--base-bg); 4 | display: grid; 5 | gap: 1rem; 6 | grid-template-columns: 1fr auto; 7 | justify-items: start; 8 | margin-top: 1rem; 9 | } 10 | 11 | .help { 12 | font-size: var(--font-size); 13 | font-weight: normal; 14 | margin: 0; 15 | } 16 | -------------------------------------------------------------------------------- /packages/extension-browser/src/devtools/views/pages/config/label.css: -------------------------------------------------------------------------------- 1 | .root { 2 | font-size: var(--font-size-sm); 3 | line-height: 1rem; /* 16px */ 4 | margin: 0.5rem 0; 5 | } 6 | -------------------------------------------------------------------------------- /packages/extension-browser/src/devtools/views/pages/config/section.css: -------------------------------------------------------------------------------- 1 | .header { 2 | font-size: var(--font-size); 3 | font-weight: var(--bold); 4 | margin: 0; 5 | } 6 | -------------------------------------------------------------------------------- /packages/extension-browser/src/devtools/views/pages/error.css: -------------------------------------------------------------------------------- 1 | .content { 2 | margin: 1.5rem 2rem; 3 | } 4 | 5 | .title { 6 | font-size: 0.875rem; 7 | margin: 0; 8 | } 9 | 10 | .actions { 11 | display: inline-grid; 12 | gap: 0.5rem; /* 8px */ 13 | grid-template-columns: auto auto; 14 | margin-bottom: 1rem; /* 16px */ 15 | } 16 | 17 | .stack { 18 | white-space: pre-wrap; 19 | } 20 | -------------------------------------------------------------------------------- /packages/extension-browser/src/devtools/views/pages/results/problem.css: -------------------------------------------------------------------------------- 1 | .problemLink { 2 | color: var(--link-alt-color); 3 | text-decoration: none; 4 | vertical-align: middle; 5 | word-break: break-all; 6 | } 7 | 8 | .problemLink:focus { 9 | border-bottom: 2px solid var(--base-color); 10 | outline: none; 11 | } 12 | 13 | .problemLink:global(:not(.focus-visible)) { 14 | border: none; 15 | } 16 | -------------------------------------------------------------------------------- /packages/extension-browser/src/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/extension-browser/src/icon.png -------------------------------------------------------------------------------- /packages/extension-browser/src/images/icon-close.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /packages/extension-browser/src/images/icon-compatibility.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /packages/extension-browser/src/images/icon-info.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /packages/extension-browser/src/images/icon-pitfalls.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /packages/extension-browser/src/images/icon-pwa.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /packages/extension-browser/src/images/icon-severity-error.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /packages/extension-browser/src/images/icon-severity-hint.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /packages/extension-browser/src/images/icon-severity-info.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /packages/extension-browser/src/images/icon-severity-warning.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /packages/extension-browser/src/shims/acorn-jsx-walk.ts: -------------------------------------------------------------------------------- 1 | export const extend = () => {}; 2 | -------------------------------------------------------------------------------- /packages/extension-browser/src/shims/acorn-jsx.ts: -------------------------------------------------------------------------------- 1 | export = null; 2 | -------------------------------------------------------------------------------- /packages/extension-browser/src/shims/file-type.ts: -------------------------------------------------------------------------------- 1 | export const fromBuffer = () => { 2 | return Promise.resolve(undefined); 3 | }; 4 | -------------------------------------------------------------------------------- /packages/extension-browser/src/shims/is-svg.ts: -------------------------------------------------------------------------------- 1 | export default function() { 2 | return false; 3 | } 4 | -------------------------------------------------------------------------------- /packages/extension-browser/src/shims/request-async.ts: -------------------------------------------------------------------------------- 1 | export = { default: null }; 2 | -------------------------------------------------------------------------------- /packages/extension-browser/src/shims/url.ts: -------------------------------------------------------------------------------- 1 | export = { 2 | format: (url: URL) => { 3 | return `${url}`; 4 | }, 5 | URL 6 | }; 7 | -------------------------------------------------------------------------------- /packages/extension-browser/tests/fixtures/base.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Test 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /packages/extension-browser/tests/fixtures/google-analytics.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Test 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /packages/extension-browser/tests/fixtures/missing-lang.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Test 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/extension-vscode/.npmignore: -------------------------------------------------------------------------------- 1 | !dist 2 | dist/tests 3 | -------------------------------------------------------------------------------- /packages/extension-vscode/.npmrc: -------------------------------------------------------------------------------- 1 | package-lock=false 2 | -------------------------------------------------------------------------------- /packages/extension-vscode/.vscodeignore: -------------------------------------------------------------------------------- 1 | **/*.map 2 | **/*.ts 3 | **/tsconfig.base.json 4 | **/tsconfig.json 5 | **/tsconfig.tsbuildinfo 6 | .eslintcache 7 | .nyc_output/** 8 | .vscode/** 9 | coverage/** 10 | dist/src/utils/** 11 | dist/src/*.d.ts 12 | dist/tests/** 13 | node_modules 14 | webpack.config.js 15 | -------------------------------------------------------------------------------- /packages/extension-vscode/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/extension-vscode/icon.png -------------------------------------------------------------------------------- /packages/extension-vscode/scripts/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowJs": true, 4 | "alwaysStrict": true, 5 | "checkJs": true, 6 | "moduleResolution": "node", 7 | "noUnusedLocals": true, 8 | "resolveJsonModule": true, 9 | "strict": true, 10 | "target": "esnext" 11 | }, 12 | "include": [ 13 | "**/*.js" 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /packages/extension-vscode/src/utils/notifications.ts: -------------------------------------------------------------------------------- 1 | // Report that installing dependencies failed. 2 | export const installFailed = 'vscode-webhint/install-failed'; 3 | 4 | // Reveal the output panel for this extension. 5 | export const showOutput = 'vscode-webhint/show-output'; 6 | -------------------------------------------------------------------------------- /packages/extension-vscode/tests/fixtures/browsers/.hintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["development"], 3 | "browserslist": ["defaults"] 4 | } 5 | -------------------------------------------------------------------------------- /packages/extension-vscode/tests/fixtures/no-browsers/.hintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["development"] 3 | } 4 | -------------------------------------------------------------------------------- /packages/extension-vscode/tests/fixtures/no-hint-property/.hintrc: -------------------------------------------------------------------------------- 1 | { 2 | "browserslist": ["ie 11"], 3 | "parsers": ["css", "html"] 4 | } 5 | -------------------------------------------------------------------------------- /packages/extension-vscode/tests/fixtures/no-hints/.hintrc: -------------------------------------------------------------------------------- 1 | { 2 | "browserslist": ["ie 11"], 3 | "parsers": ["css", "html"], 4 | "hints": { } 5 | } 6 | -------------------------------------------------------------------------------- /packages/extension-vscode/tests/fixtures/string-browsers/.hintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["development"], 3 | "browserslist": "defaults" 4 | } 5 | -------------------------------------------------------------------------------- /packages/extension-vscode/tests/fixtures/with-hint/.hintrc: -------------------------------------------------------------------------------- 1 | { 2 | "browserslist": ["ie 11"], 3 | "parsers": ["css", "html"], 4 | "hints": { 5 | "compat-api/css": "error" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /packages/extension-vscode/tests/fixtures/with-problem/.hintrc: -------------------------------------------------------------------------------- 1 | { 2 | "browserslist": ["ie 11"], 3 | "parsers": ["css", "html"], 4 | "hints": { 5 | "compat-api/css": ["error", { 6 | "ignore": ["grid-row"] 7 | }] 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /packages/formatter-codeframe/.npmrc: -------------------------------------------------------------------------------- 1 | package-lock=false 2 | -------------------------------------------------------------------------------- /packages/formatter-codeframe/images/codeframe-output.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/formatter-codeframe/images/codeframe-output.png -------------------------------------------------------------------------------- /packages/formatter-excel/.npmrc: -------------------------------------------------------------------------------- 1 | package-lock=false 2 | -------------------------------------------------------------------------------- /packages/formatter-excel/images/details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/formatter-excel/images/details.png -------------------------------------------------------------------------------- /packages/formatter-excel/images/summary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/formatter-excel/images/summary.png -------------------------------------------------------------------------------- /packages/formatter-html/.gitignore: -------------------------------------------------------------------------------- 1 | src/assets/js/scan/get-message.js 2 | src/assets/js/scan/_locales 3 | -------------------------------------------------------------------------------- /packages/formatter-html/.npmrc: -------------------------------------------------------------------------------- 1 | package-lock=false 2 | -------------------------------------------------------------------------------- /packages/formatter-html/images/html-output.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/formatter-html/images/html-output.png -------------------------------------------------------------------------------- /packages/formatter-html/images/json-output.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/formatter-html/images/json-output.png -------------------------------------------------------------------------------- /packages/formatter-html/src/assets/images/back-to-top.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/formatter-html/src/assets/images/scan/axe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/formatter-html/src/assets/images/scan/axe.png -------------------------------------------------------------------------------- /packages/formatter-html/src/assets/images/scan/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/formatter-html/src/assets/images/scan/favicon-16x16.png -------------------------------------------------------------------------------- /packages/formatter-html/src/assets/images/scan/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/formatter-html/src/assets/images/scan/favicon-32x32.png -------------------------------------------------------------------------------- /packages/formatter-html/src/assets/images/scan/favicon_failed.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/formatter-html/src/assets/images/scan/favicon_failed.ico -------------------------------------------------------------------------------- /packages/formatter-html/src/assets/images/scan/favicon_passed.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/formatter-html/src/assets/images/scan/favicon_passed.ico -------------------------------------------------------------------------------- /packages/formatter-html/src/assets/images/scan/favicon_pending.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/formatter-html/src/assets/images/scan/favicon_pending.ico -------------------------------------------------------------------------------- /packages/formatter-html/src/assets/images/scan/next-arrow.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/formatter-html/src/assets/images/scan/other-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/formatter-html/src/assets/images/scan/qualys-ssl-labs-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/formatter-html/src/assets/images/scan/qualys-ssl-labs-logo.png -------------------------------------------------------------------------------- /packages/formatter-html/src/assets/images/scan/results-passed-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/formatter-html/src/assets/styles/fonts/montserrat-300.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/formatter-html/src/assets/styles/fonts/montserrat-300.woff -------------------------------------------------------------------------------- /packages/formatter-html/src/assets/styles/fonts/montserrat-300.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/formatter-html/src/assets/styles/fonts/montserrat-300.woff2 -------------------------------------------------------------------------------- /packages/formatter-html/src/assets/styles/fonts/montserrat-400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/formatter-html/src/assets/styles/fonts/montserrat-400.woff -------------------------------------------------------------------------------- /packages/formatter-html/src/assets/styles/fonts/montserrat-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/formatter-html/src/assets/styles/fonts/montserrat-400.woff2 -------------------------------------------------------------------------------- /packages/formatter-html/src/assets/styles/fonts/montserrat-500.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/formatter-html/src/assets/styles/fonts/montserrat-500.woff -------------------------------------------------------------------------------- /packages/formatter-html/src/assets/styles/fonts/montserrat-500.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/formatter-html/src/assets/styles/fonts/montserrat-500.woff2 -------------------------------------------------------------------------------- /packages/formatter-html/src/assets/styles/fonts/source-sans-pro.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/formatter-html/src/assets/styles/fonts/source-sans-pro.woff -------------------------------------------------------------------------------- /packages/formatter-html/src/assets/styles/fonts/source-sans-pro.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/formatter-html/src/assets/styles/fonts/source-sans-pro.woff2 -------------------------------------------------------------------------------- /packages/formatter-html/src/configs/category-images.json: -------------------------------------------------------------------------------- 1 | { 2 | "accessibility": "/images/scan/accessibility.svg", 3 | "compatibility": "/images/scan/compatibility.svg", 4 | "performance": "/images/scan/performance.svg", 5 | "pitfalls": "/images/scan/pitfalls_icon.svg", 6 | "pwa": "/images/scan/pwa.svg", 7 | "security": "/images/scan/security.svg", 8 | "development": "/images/scan/dev-icon.svg", 9 | "other": "/images/scan/other-icon.svg" 10 | } 11 | -------------------------------------------------------------------------------- /packages/formatter-html/src/views/partials/category-pass-message.ejs: -------------------------------------------------------------------------------- 1 |
2 |
3 |

<%= getMessage('noIssues'); %>

4 |
5 |
6 | -------------------------------------------------------------------------------- /packages/formatter-html/src/views/partials/check-mark.ejs: -------------------------------------------------------------------------------- 1 | <%= getMessage('passed'); %> 2 | -------------------------------------------------------------------------------- /packages/formatter-html/src/views/partials/scan-error-message.ejs: -------------------------------------------------------------------------------- 1 |
2 |

3 | <%= getMessage('thereWasAnError'); %> <% if(result.isScanner) { %><%= getMessage('performScan'); %><% } else { %><%= getMessage('runWebhintAgain'); %><% } %> 4 |

5 |

6 | -------------------------------------------------------------------------------- /packages/formatter-html/src/views/partials/scan-expand-all.ejs: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /packages/formatter-json/.npmrc: -------------------------------------------------------------------------------- 1 | package-lock=false 2 | -------------------------------------------------------------------------------- /packages/formatter-json/images/json-output.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/formatter-json/images/json-output.png -------------------------------------------------------------------------------- /packages/formatter-json/src/_locales/en/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "issues": { 3 | "description": "Show error text.", 4 | "message": "$1 issues" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /packages/formatter-stylish/.npmrc: -------------------------------------------------------------------------------- 1 | package-lock=false 2 | -------------------------------------------------------------------------------- /packages/formatter-stylish/images/stylish-output.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/formatter-stylish/images/stylish-output.png -------------------------------------------------------------------------------- /packages/formatter-summary/.npmrc: -------------------------------------------------------------------------------- 1 | package-lock=false 2 | -------------------------------------------------------------------------------- /packages/formatter-summary/images/summary-output.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/formatter-summary/images/summary-output.png -------------------------------------------------------------------------------- /packages/hint-apple-touch-icons/.npmrc: -------------------------------------------------------------------------------- 1 | package-lock=false 2 | -------------------------------------------------------------------------------- /packages/hint-apple-touch-icons/tests/fixtures/apple-touch-icon152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/hint-apple-touch-icons/tests/fixtures/apple-touch-icon152x152.png -------------------------------------------------------------------------------- /packages/hint-apple-touch-icons/tests/fixtures/apple-touch-icon167x167.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/hint-apple-touch-icons/tests/fixtures/apple-touch-icon167x167.png -------------------------------------------------------------------------------- /packages/hint-apple-touch-icons/tests/fixtures/apple-touch-icon180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/hint-apple-touch-icons/tests/fixtures/apple-touch-icon180x180.png -------------------------------------------------------------------------------- /packages/hint-apple-touch-icons/tests/fixtures/incorrect-dimensions100x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/hint-apple-touch-icons/tests/fixtures/incorrect-dimensions100x100.png -------------------------------------------------------------------------------- /packages/hint-apple-touch-icons/tests/fixtures/incorrect-dimensions200x200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/hint-apple-touch-icons/tests/fixtures/incorrect-dimensions200x200.png -------------------------------------------------------------------------------- /packages/hint-apple-touch-icons/tests/fixtures/incorrect-file-format.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/hint-apple-touch-icons/tests/fixtures/incorrect-file-format.png -------------------------------------------------------------------------------- /packages/hint-apple-touch-icons/tests/fixtures/not-square.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/hint-apple-touch-icons/tests/fixtures/not-square.png -------------------------------------------------------------------------------- /packages/hint-apple-touch-icons/tests/fixtures/transparent-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webhintio/hint/76264f7733c74f3f0a9d94652fe1cd6a60ea9be9/packages/hint-apple-touch-icons/tests/fixtures/transparent-background.png -------------------------------------------------------------------------------- /packages/hint-axe/.gitignore: -------------------------------------------------------------------------------- 1 | docs/ 2 | src/meta 3 | src/*.ts 4 | -------------------------------------------------------------------------------- /packages/hint-axe/.npmrc: -------------------------------------------------------------------------------- 1 | package-lock=false 2 | -------------------------------------------------------------------------------- /packages/hint-axe/scripts/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowJs": true, 4 | "alwaysStrict": true, 5 | "checkJs": true, 6 | "moduleResolution": "node", 7 | "noUnusedLocals": true, 8 | "resolveJsonModule": true, 9 | "strict": true, 10 | "target": "esnext" 11 | }, 12 | "include": [ 13 | "**/*.js" 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /packages/hint-axe/tests/_utils.ts: -------------------------------------------------------------------------------- 1 | import * as axeCore from 'axe-core'; 2 | 3 | export const axeCoreVersion = axeCore.version 4 | .split('.') 5 | .slice(0, 2) 6 | .join('.'); 7 | -------------------------------------------------------------------------------- /packages/hint-axe/tests/fixtures/forms.jsx: -------------------------------------------------------------------------------- 1 | 2 | function Test() { 3 | return ; 4 | } 5 | -------------------------------------------------------------------------------- /packages/hint-axe/tests/fixtures/spread.jsx: -------------------------------------------------------------------------------- 1 | 2 | function Test(props) { 3 | return ; 4 | } 5 | -------------------------------------------------------------------------------- /packages/hint-babel-config/.npmrc: -------------------------------------------------------------------------------- 1 | package-lock=false 2 | -------------------------------------------------------------------------------- /packages/hint-babel-config/src/_locales/en/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "isValid_description": { 3 | "description": "is-valid hint metadata description", 4 | "message": "'babel-config/is-valid' warns against providing an invalid babel configuration file `.babelrc`" 5 | }, 6 | "isValid_name": { 7 | "description": "is-valid hint metadata name", 8 | "message": "Valid Babel configuration" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /packages/hint-babel-config/src/index.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @fileoverview Verify that the babel config is valid. 3 | */ 4 | 5 | import * as babelConfigIsValid from './is-valid'; 6 | 7 | module.exports = { 'is-valid': babelConfigIsValid }; 8 | -------------------------------------------------------------------------------- /packages/hint-babel-config/src/meta.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @fileoverview Verify that the babel config is valid. 3 | */ 4 | 5 | module.exports = { 'is-valid': require('./meta/is-valid') }; 6 | -------------------------------------------------------------------------------- /packages/hint-babel-config/tests/fixtures/circular-2/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../circular/.babelrc", 3 | "presets": [ 4 | [ 5 | "env", 6 | { 7 | "targets": { 8 | "browsers": [ 9 | "last 2 versions", 10 | "> 5% in BE" 11 | ], 12 | "uglify": false 13 | }, 14 | "modules": false 15 | } 16 | ] 17 | ] 18 | } -------------------------------------------------------------------------------- /packages/hint-babel-config/tests/fixtures/circular/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../circular-2/.babelrc", 3 | "presets": [ 4 | [ 5 | "env", 6 | { 7 | "targets": { 8 | "browsers": [ 9 | "last 2 versions", 10 | "> 5% in BE" 11 | ], 12 | "uglify": false 13 | }, 14 | "modules": false 15 | } 16 | ] 17 | ] 18 | } -------------------------------------------------------------------------------- /packages/hint-babel-config/tests/fixtures/has-invalid-babel-package-json/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "babel": { 3 | "plugins": ["transform-react-jsx"], 4 | "moduleId": 1, 5 | "ignore": [ 6 | "foo.js", 7 | "bar/**/*.js" 8 | ] 9 | }, 10 | "name": "example", 11 | "version": "0.0.1" 12 | } 13 | -------------------------------------------------------------------------------- /packages/hint-babel-config/tests/fixtures/invalid-extends/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../invalid/.babelrc", 3 | "presets": [ 4 | [ 5 | "env", 6 | { 7 | "targets": { 8 | "browsers": [ 9 | "last 2 versions", 10 | "> 5% in BE" 11 | ], 12 | "uglify": false 13 | }, 14 | "modules": false 15 | } 16 | ] 17 | ] 18 | } -------------------------------------------------------------------------------- /packages/hint-babel-config/tests/fixtures/invalid-json/package.json: -------------------------------------------------------------------------------- 1 | invalidJson 2 | -------------------------------------------------------------------------------- /packages/hint-babel-config/tests/fixtures/invalid-schema/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": [ 3 | "transform-react-jsx" 4 | ], 5 | "moduleId": 1, 6 | "ignore": [ 7 | "foo.js", 8 | "bar/**/*.js" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /packages/hint-babel-config/tests/fixtures/invalid/.babelrc: -------------------------------------------------------------------------------- 1 | {invalidJson} 2 | -------------------------------------------------------------------------------- /packages/hint-babel-config/tests/fixtures/no-babel-package-json/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example", 3 | "version": "0.0.1" 4 | } 5 | -------------------------------------------------------------------------------- /packages/hint-button-type/.npmrc: -------------------------------------------------------------------------------- 1 | package-lock=false 2 | -------------------------------------------------------------------------------- /packages/hint-compat-api/.npmrc: -------------------------------------------------------------------------------- 1 | package-lock=false 2 | -------------------------------------------------------------------------------- /packages/hint-compat-api/src/index.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @fileoverview description 3 | */ 4 | 5 | import * as CSSCompatHint from './css'; 6 | import * as HTMLCompatHint from './html'; 7 | 8 | /* eslint-disable quote-props */ 9 | 10 | module.exports = { 11 | 'css': CSSCompatHint, 12 | 'html': HTMLCompatHint 13 | }; 14 | -------------------------------------------------------------------------------- /packages/hint-compat-api/src/meta.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable quote-props */ 2 | 3 | module.exports = { 4 | 'css': require('./meta/css'), 5 | 'html': require('./meta/html') 6 | }; 7 | -------------------------------------------------------------------------------- /packages/hint-compat-api/src/meta/compat-hint-schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "additionalProperties": false, 3 | "definitions": { 4 | "features": { 5 | "type": "array", 6 | "items": { "type": "string" }, 7 | "uniqueItems": true 8 | } 9 | }, 10 | "properties": { 11 | "enable": { "$ref": "#/definitions/features" }, 12 | "ignore": { "$ref": "#/definitions/features" } 13 | }, 14 | "type": ["object", "null"] 15 | } 16 | -------------------------------------------------------------------------------- /packages/hint-compat-api/tests/fixtures/css/atrules.css: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes name { 2 | 0% { left: 0%; } 3 | } 4 | 5 | @keyframes name { 6 | 0% { left: 0%; } 7 | } 8 | -------------------------------------------------------------------------------- /packages/hint-compat-api/tests/fixtures/css/ignore.css: -------------------------------------------------------------------------------- 1 | .example { 2 | -webkit-appearance: none; 3 | -moz-appearance: none; 4 | appearance: none; /* unprefixed */ 5 | } 6 | -------------------------------------------------------------------------------- /packages/hint-compat-api/tests/fixtures/css/selectors.css: -------------------------------------------------------------------------------- 1 | .example:valid { 2 | color: green; 3 | } 4 | -------------------------------------------------------------------------------- /packages/hint-compat-api/tests/fixtures/css/subgrid.css: -------------------------------------------------------------------------------- 1 | .example { 2 | grid-template-rows: subgrid; 3 | } 4 | -------------------------------------------------------------------------------- /packages/hint-compat-api/tests/fixtures/css/supports.css: -------------------------------------------------------------------------------- 1 | @supports (display: grid) { 2 | div { 3 | display: grid; 4 | } 5 | } 6 | 7 | @supports (display: flex) { 8 | .content { 9 | display: grid; /* Report */ 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/hint-compat-api/tests/fixtures/css/values.css: -------------------------------------------------------------------------------- 1 | .example1 { 2 | display: -ms-grid; 3 | display: grid; /* Report 1 */ 4 | } 5 | 6 | .example2 { 7 | display: grid; /* Report 2 */ 8 | display: -ms-grid; 9 | } 10 | 11 | .example3 { 12 | display: -ms-grid; /* Report 3 */ 13 | } 14 | 15 | .example4 { 16 | display: grid; /* Report 4 */ 17 | } 18 | -------------------------------------------------------------------------------- /packages/hint-compat-api/tests/fixtures/html/attributes.html: -------------------------------------------------------------------------------- 1 | 2 | mountains 3 |