Skip to content
Permalink
Browse files

Fix: Use flattened utils

  • Loading branch information
sarvaje committed Oct 24, 2019
1 parent 751b60a commit 7ee688a1b1178e631bb0adf0e7fdb82b576cb36b
Showing with 817 additions and 467 deletions.
  1. +1 βˆ’3 packages/connector-jsdom/src/before-parse.ts
  2. +11 βˆ’5 packages/connector-jsdom/src/connector.ts
  3. +7 βˆ’4 packages/connector-jsdom/src/resource-loader.ts
  4. +1 βˆ’3 packages/connector-jsdom/tests/collect.ts
  5. +1 βˆ’2 packages/connector-jsdom/tests/evaluate.ts
  6. +14 βˆ’5 packages/connector-local/src/connector.ts
  7. +12 βˆ’11 packages/connector-local/tests/tests.ts
  8. +12 βˆ’4 packages/connector-puppeteer/src/connector.ts
  9. +1 βˆ’3 packages/connector-puppeteer/src/lib/create-fetchend-payload.ts
  10. +1 βˆ’2 packages/connector-puppeteer/src/lib/events.ts
  11. +1 βˆ’3 packages/connector-puppeteer/src/lib/get-element-from-response.ts
  12. +1 βˆ’3 packages/connector-puppeteer/src/lib/lifecycle.ts
  13. +1 βˆ’2 packages/connector-puppeteer/tests/authentication.ts
  14. +1 βˆ’3 packages/connector-puppeteer/tests/collect.ts
  15. +1 βˆ’3 packages/connector-puppeteer/tests/evaluate.ts
  16. +10 βˆ’5 packages/create-hint/src/create-hint.ts
  17. +1 βˆ’3 packages/create-hint/src/handlebars-utils.ts
  18. +1 βˆ’2 packages/create-hint/src/templates/tests.ts.hbs
  19. +1 βˆ’3 packages/create-hint/src/utils.ts
  20. +4 βˆ’6 packages/create-hint/tests/create-hint.ts
  21. +9 βˆ’3 packages/create-hintrc/src/create-hintrc.ts
  22. +4 βˆ’3 packages/create-hintrc/tests/create-hintrc.ts
  23. +1 βˆ’3 packages/create-parser/src/handlebars-utils.ts
  24. +7 βˆ’4 packages/create-parser/src/new-parser.ts
  25. +4 βˆ’10 packages/create-parser/tests/new-parser.ts
  26. +2 βˆ’4 packages/extension-browser/tests/devtools.ts
  27. +2 βˆ’4 packages/extension-browser/tests/end-to-end.ts
  28. +1 βˆ’3 packages/extension-browser/tests/helpers/host-ui.ts
  29. +1 βˆ’3 packages/formatter-codeframe/src/formatter.ts
  30. +3 βˆ’2 packages/formatter-codeframe/tests/tests.ts
  31. +1 βˆ’2 packages/formatter-excel/src/formatter.ts
  32. +1 βˆ’1 packages/formatter-html/scripts/create-get-message.js
  33. +1 βˆ’2 packages/formatter-html/src/formatter.ts
  34. +1 βˆ’3 packages/formatter-html/src/result.ts
  35. +1 βˆ’2 packages/formatter-json/src/formatter.ts
  36. +2 βˆ’2 packages/formatter-json/tests/tests.ts
  37. +1 βˆ’4 packages/formatter-stylish/src/formatter.ts
  38. +2 βˆ’2 packages/formatter-stylish/tests/tests.ts
  39. +1 βˆ’2 packages/formatter-summary/src/formatter.ts
  40. +1 βˆ’2 packages/formatter-summary/tests/tests.ts
  41. +1 βˆ’3 packages/hint-amp-validator/tests/tests.ts
  42. +1 βˆ’3 packages/hint-apple-touch-icons/src/hint.ts
  43. +1 βˆ’3 packages/hint-apple-touch-icons/tests/tests.ts
  44. +1 βˆ’2 packages/hint-axe/tests/color.ts
  45. +1 βˆ’2 packages/hint-axe/tests/keyboard.ts
  46. +1 βˆ’2 packages/hint-axe/tests/language.ts
  47. +1 βˆ’2 packages/hint-babel-config/tests/is-valid.ts
  48. +1 βˆ’2 packages/hint-button-type/tests/tests.ts
  49. +1 βˆ’4 packages/hint-compat-api/tests/css.ts
  50. +1 βˆ’4 packages/hint-compat-api/tests/html.ts
  51. +1 βˆ’3 packages/hint-content-type/tests/tests.ts
  52. +1 βˆ’3 packages/hint-create-element-svg/tests/tests.ts
  53. +1 βˆ’3 packages/hint-css-prefix-order/tests/tests.ts
  54. +1 βˆ’3 packages/hint-disown-opener/tests/tests.ts
  55. +1 βˆ’2 packages/hint-doctype/tests/tests.ts
  56. +1 βˆ’2 packages/hint-highest-available-document-mode/tests/tests.ts
  57. +2 βˆ’2 packages/hint-html-checker/src/hint.ts
  58. +2 βˆ’2 packages/hint-html-checker/tests/tests.ts
  59. +1 βˆ’2 packages/hint-http-cache/tests/tests.ts
  60. +11 βˆ’4 packages/hint-http-compression/src/hint.ts
  61. +1 βˆ’2 packages/hint-http-compression/tests/tests-http.ts
  62. +1 βˆ’2 packages/hint-http-compression/tests/tests-https.ts
  63. +1 βˆ’2 packages/hint-https-only/src/hint.ts
  64. +1 βˆ’2 packages/hint-https-only/tests/tests-https.ts
  65. +1 βˆ’2 packages/hint-https-only/tests/tests.ts
  66. +1 βˆ’2 packages/hint-image-optimization-cloudinary/src/hint.ts
  67. +1 βˆ’2 packages/hint-image-optimization-cloudinary/tests/tests.ts
  68. +1 βˆ’2 packages/hint-manifest-app-name/tests/tests.ts
  69. +1 βˆ’2 packages/hint-manifest-exists/src/hint.ts
  70. +1 βˆ’2 packages/hint-manifest-exists/tests/tests.ts
  71. +1 βˆ’2 packages/hint-manifest-file-extension/tests/tests.ts
  72. +1 βˆ’3 packages/hint-manifest-icons/tests/tests-local.ts
  73. +1 βˆ’2 packages/hint-manifest-icons/tests/tests.ts
  74. +1 βˆ’2 packages/hint-manifest-is-valid/tests/tests.ts
  75. +1 βˆ’2 packages/hint-manifest-scoped-urls/tests/tests.ts
  76. +1 βˆ’2 packages/hint-meta-charset-utf-8/tests/tests.ts
  77. +1 βˆ’2 packages/hint-meta-theme-color/src/hint.ts
  78. +1 βˆ’2 packages/hint-meta-theme-color/tests/tests.ts
  79. +1 βˆ’2 packages/hint-meta-viewport/tests/tests.ts
  80. +1 βˆ’2 packages/hint-minified-js/tests/tests.ts
  81. +1 βˆ’3 packages/hint-no-bom/src/hint.ts
  82. +1 βˆ’2 packages/hint-no-bom/tests/tests.ts
  83. +1 βˆ’2 packages/hint-no-broken-links/src/hint.ts
  84. +1 βˆ’2 packages/hint-no-broken-links/tests/tests.ts
  85. +1 βˆ’3 packages/hint-no-disallowed-headers/tests/tests.ts
  86. +1 βˆ’2 packages/hint-no-friendly-error-pages/src/hint.ts
  87. +1 βˆ’2 packages/hint-no-friendly-error-pages/tests/tests.ts
  88. +1 βˆ’3 packages/hint-no-html-only-headers/tests/tests.ts
  89. +1 βˆ’2 packages/hint-no-http-redirects/tests/tests.ts
  90. +1 βˆ’3 packages/hint-no-p3p/src/hint.ts
  91. +1 βˆ’2 packages/hint-no-p3p/tests/tests.ts
  92. +1 βˆ’2 packages/hint-no-protocol-relative-urls/tests/tests.ts
  93. +1 βˆ’2 packages/hint-no-vulnerable-javascript-libraries/tests/tests.ts
  94. +1 βˆ’2 packages/hint-performance-budget/src/connections.ts
  95. +1 βˆ’2 packages/hint-performance-budget/src/hint.ts
  96. +1 βˆ’2 packages/hint-performance-budget/tests/tests-http.ts
  97. +1 βˆ’2 packages/hint-performance-budget/tests/tests-https.ts
  98. +1 βˆ’3 packages/hint-scoped-svg-styles/tests/hint.ts
  99. +1 βˆ’3 packages/hint-sri/tests/tests-http.ts
  100. +1 βˆ’3 packages/hint-sri/tests/tests-https.ts
  101. +1 βˆ’2 packages/hint-sri/tests/tests-local.ts
  102. +1 βˆ’2 packages/hint-ssllabs/tests/tests.ts
  103. +1 βˆ’2 packages/hint-strict-transport-security/src/hint.ts
  104. +3 βˆ’3 packages/hint-strict-transport-security/tests/_common.ts
  105. +1 βˆ’2 packages/hint-strict-transport-security/tests/http-tests.ts
  106. +1 βˆ’2 packages/hint-strict-transport-security/tests/https-tests.ts
  107. +1 βˆ’2 packages/hint-stylesheet-limits/tests/tests.ts
  108. +1 βˆ’4 packages/hint-summary-display/tests/tests.ts
  109. +1 βˆ’2 packages/hint-typescript-config/tests/consistent-casing.ts
  110. +11 βˆ’13 packages/hint-typescript-config/tests/import-helpers.ts
  111. +1 βˆ’2 packages/hint-typescript-config/tests/is-valid.ts
  112. +1 βˆ’2 packages/hint-typescript-config/tests/no-comments.ts
  113. +1 βˆ’2 packages/hint-typescript-config/tests/strict.ts
  114. +1 βˆ’2 packages/hint-typescript-config/tests/target.ts
  115. +1 βˆ’2 packages/hint-validate-set-cookie-header/tests/tests.ts
  116. +1 βˆ’2 packages/hint-webpack-config/tests/config-exists.ts
  117. +1 βˆ’4 packages/hint-webpack-config/tests/is-installed.ts
  118. +1 βˆ’2 packages/hint-webpack-config/tests/is-valid.ts
  119. +1 βˆ’4 packages/hint-webpack-config/tests/module-esnext-typescript.ts
  120. +1 βˆ’4 packages/hint-webpack-config/tests/modules-false-babel.ts
  121. +1 βˆ’4 packages/hint-webpack-config/tests/no-devtool-in-prod.ts
  122. +1 βˆ’2 packages/hint-x-content-type-options/tests/tests.ts
  123. +1 βˆ’2 packages/hint/docs/contributor-guide/how-to/test-rules.md
  124. +7 βˆ’5 packages/hint/src/lib/analyzer.ts
  125. +16 βˆ’5 packages/hint/src/lib/cli/analyze.ts
  126. +7 βˆ’3 packages/hint/src/lib/config.ts
  127. +10 βˆ’11 packages/hint/src/lib/utils/resource-loader.ts
  128. +4 βˆ’1 packages/hint/tests/lib/analyzer.ts
  129. +7 βˆ’10 packages/hint/tests/lib/cli/analyze.ts
  130. +1 βˆ’8 packages/hint/tests/lib/cli/version.ts
  131. +1 βˆ’3 packages/hint/tests/lib/config.ts
  132. +1 βˆ’3 packages/hint/tests/lib/engine.ts
  133. +7 βˆ’9 packages/hint/tests/lib/utils/resource-loader.ts
  134. +1 βˆ’2 packages/parser-babel-config/src/parser.ts
  135. +1 βˆ’4 packages/parser-babel-config/tests/tests.ts
  136. +0 βˆ’1 packages/parser-css/src/parser.ts
  137. +1 βˆ’2 packages/parser-package-json/src/parser.ts
  138. +2 βˆ’5 packages/parser-package-json/tests/tests.ts
  139. +1 βˆ’3 packages/parser-typescript-config/src/parser.ts
  140. +5 βˆ’6 packages/parser-typescript-config/tests/tests.ts
  141. +1 βˆ’3 packages/parser-webpack-config/src/parser.ts
  142. +4 βˆ’1 packages/parser-webpack-config/tests/webpack-config.ts
  143. +7 βˆ’4 packages/utils-connector-tools/src/requester.ts
  144. +1 βˆ’4 packages/utils-create-server/src/same-thread-server.ts
  145. +1 βˆ’3 packages/utils-tests-helpers/src/hint-runner.ts
  146. +495 βˆ’26 yarn.lock
@@ -8,9 +8,7 @@ import * as path from 'path';
import { DOMWindow } from 'jsdom';

import * as jsdomutils from 'jsdom/lib/jsdom/living/generated/utils';
import { fs } from '@hint/utils';

const { readFile } = fs;
import { readFile } from '@hint/utils';

export const beforeParse = (finalHref: string) => {
return (window: DOMWindow) => {
@@ -31,7 +31,17 @@ import { fork, ChildProcess } from 'child_process';

import { JSDOM, ResourceLoader, VirtualConsole } from 'jsdom';

import { contentType, debug as d, dom, HTMLElement, HTMLDocument, HttpHeaders, network } from '@hint/utils';
import {
createHTMLDocument,
debug as d,
getContentTypeData,
getType,
HTMLDocument,
HTMLElement,
HttpHeaders,
isHTMLDocument,
traverse
} from '@hint/utils';
import { Engine, Event, FetchEnd, FetchError, IConnector, NetworkData } from 'hint';
import { Requester } from '@hint/utils-connector-tools';

@@ -43,10 +53,6 @@ import { beforeParse } from './before-parse';
* Defaults
* ------------------------------------------------------------------------------
*/

const { createHTMLDocument, traverse } = dom;
const { getContentTypeData, getType } = contentType;
const { isHTMLDocument } = network;
const debug: debug.IDebugger = d(__filename);

const defaultOptions = {
@@ -1,15 +1,18 @@
import { URL } from 'url';

import { contentType, dom, debug as d, HTMLDocument } from '@hint/utils';
import {
debug as d,
getContentTypeData,
getElementByUrl,
getType,
HTMLDocument
} from '@hint/utils';
import { ResourceLoader } from 'jsdom';

import { FetchEnd, FetchError, NetworkData } from 'hint';

import JSDOMConnector from './connector';

const { getElementByUrl } = dom;
const { getContentTypeData, getType } = contentType;

const debug: debug.IDebugger = d(__filename);

export default class CustomResourceLoader extends ResourceLoader {
@@ -8,13 +8,11 @@ import * as sinon from 'sinon';
import anyTest, { TestInterface, ExecutionContext } from 'ava';

import { ServerConfiguration, Server } from '@hint/utils-create-server';
import { test as testUtils } from '@hint/utils';
import { generateHTMLPage } from '@hint/utils';
import { Engine, Events, IConnector, IConnectorConstructor } from 'hint';

import JSDOMConnector from '../src/connector';

const { generateHTMLPage } = testUtils;

const name: string = 'jsdom';

type CollectContext = {
@@ -3,12 +3,11 @@ import { URL } from 'url';
import test from 'ava';

import { Server } from '@hint/utils-create-server';
import { test as testUtils } from '@hint/utils';
import { generateHTMLPage } from '@hint/utils';
import { Engine, Events, IConnector } from 'hint';

import JSDOMConnector from '../src/connector';

const { generateHTMLPage } = testUtils;
const name: string = 'jsdom';

const scripts = [
@@ -45,7 +45,20 @@ import * as chokidar from 'chokidar';
import * as globby from 'globby';
import { JSDOM } from 'jsdom';

import { contentType, dom, fs, HTMLDocument, HTMLElement, logger, network } from '@hint/utils';
import {
asPathString,
cwd,
getAsUri,
getContentTypeData,
getType,
HTMLDocument,
HTMLElement,
isFile,
isTextMediaType,
logger,
readFileAsync,
traverse
} from '@hint/utils';

import {
Engine,
@@ -66,10 +79,6 @@ import { getMessage } from './i18n.import';
* ------------------------------------------------------------------------------
*/

const { traverse } = dom;
const { getContentTypeData, getType, isTextMediaType } = contentType;
const { cwd, isFile, readFileAsync } = fs;
const { asPathString, getAsUri } = network;
const defaultOptions = {};

export default class LocalConnector implements IConnector {
@@ -7,14 +7,16 @@ import anyTest, { TestInterface } from 'ava';
import * as proxyquire from 'proxyquire';
import { EventEmitter2 } from 'eventemitter2';

import { fs, logger, misc, network } from '@hint/utils';
import {
asPathString,
delay,
getAsUri,
logger,
readFileAsync
} from '@hint/utils';
import { Engine, FetchEnd } from 'hint';
import { HTMLEvents } from '@hint/parser-html';

const { delay } = misc;
const { asPathString, getAsUri } = network;
const { readFileAsync } = fs;

type SandboxContext = {
sandbox: sinon.SinonSandbox;
};
@@ -54,13 +56,12 @@ const mockContext = (context: SandboxContext) => {

const script = proxyquire('../src/connector', {
'@hint/utils': {
fs: {
cwd: cwdStub,
isFile: isFileStub,
readFileAsync
},
asPathString,
cwd: cwdStub,
getAsUri,
isFile: isFileStub,
logger,
network
readFileAsync
},
chokidar
});
@@ -4,7 +4,18 @@ import * as isCI from 'is-ci';
import compact = require('lodash/compact');
import * as puppeteer from 'puppeteer-core';

import { Browser, getInstallationPath, debug as d, dom, HTMLElement, HTMLDocument, HttpHeaders, misc, network } from '@hint/utils';
import {
Browser,
getInstallationPath,
debug as d,
createHTMLDocument,
traverse,
HTMLElement,
HTMLDocument,
HttpHeaders,
getPlatform,
isRegularProtocol
} from '@hint/utils';
import { normalizeHeaders, Requester } from '@hint/utils-connector-tools';
import { IConnector, Engine, NetworkData } from 'hint';

@@ -16,9 +27,6 @@ import { onRequestHandler, onRequestFailedHandler, onResponseHandler } from './l

import { schema } from './lib/schema';

const { createHTMLDocument, traverse } = dom;
const { getPlatform } = misc;
const { isRegularProtocol } = network;
const debug: debug.IDebugger = d(__filename);

type EventName = keyof puppeteer.PageEventObj;
@@ -1,11 +1,9 @@
import * as puppeteer from 'puppeteer-core';
import { contentType, HTMLDocument, HttpHeaders } from '@hint/utils';
import { getContentTypeData, HTMLDocument, HttpHeaders } from '@hint/utils';
import { normalizeHeaders } from '@hint/utils-connector-tools';
import { FetchEnd, NetworkData } from 'hint';
import { getElementFromResponse } from './get-element-from-response';

const { getContentTypeData } = contentType;

export type Fetcher = (target: string | URL, customHeaders?: object) => Promise<NetworkData>;

const getRawResponse = (response: puppeteer.Response, fetchContent: Fetcher) => {
@@ -1,10 +1,9 @@
import * as puppeteer from 'puppeteer-core';
import { contentType, debug as d, HTMLDocument } from '@hint/utils';
import { getType, debug as d, HTMLDocument } from '@hint/utils';
import { Events } from 'hint';
import { createFetchEndPayload, Fetcher } from './create-fetchend-payload';
import { getElementFromResponse } from './get-element-from-response';

const { getType } = contentType;
const debug: debug.IDebugger = d(__filename);

type EventResult<K extends keyof Events> = {
@@ -1,8 +1,6 @@
import * as puppeteer from 'puppeteer-core';

import { dom, HTMLElement, HTMLDocument } from '@hint/utils';

const { getElementByUrl } = dom;
import { getElementByUrl, HTMLElement, HTMLDocument } from '@hint/utils';

/** Returns the HTMLElement that initiated a request */
export const getElementFromResponse = (source: puppeteer.Response | puppeteer.Request, dom?: HTMLDocument): HTMLElement | null => {
@@ -6,7 +6,7 @@ import { spawn } from 'child_process';
import * as locker from 'lockfile';
import * as puppeteer from 'puppeteer-core';

import { debug as d, fs } from '@hint/utils';
import { debug as d, readFileAsync, writeFileAsync } from '@hint/utils';
import { LaunchOptions } from 'puppeteer-core';

const debug: debug.IDebugger = d(__filename);
@@ -16,8 +16,6 @@ const unlockFile = promisify(locker.unlock);
const lockName = 'puppeteer-connector.lock';
let isLocked = false;

const { readFileAsync, writeFileAsync } = fs;

const infoFile = 'browser.info';
const TIMEOUT = 30000;

@@ -4,13 +4,12 @@ import test from 'ava';
import * as sinon from 'sinon';

import { Server } from '@hint/utils-create-server';
import { test as testUtils } from '@hint/utils';
import { generateHTMLPage } from '@hint/utils';
import { Engine, Events } from 'hint';

import Connector from '../src/connector';
import { validEvent } from './_valid-event';

const { generateHTMLPage } = testUtils;
const name = 'puppeteer';

test(`[${name}] Form authentication on a page works`, async (t) => {
@@ -9,12 +9,10 @@ import anyTest, { TestInterface, ExecutionContext } from 'ava';

import { Server, ServerConfiguration } from '@hint/utils-create-server';
import { Engine, Events, IConnectorConstructor } from 'hint';
import { test as testUtils } from '@hint/utils';
import { generateHTMLPage } from '@hint/utils';

import ChromeConnector from '../src/connector';

const { generateHTMLPage } = testUtils;

const name = 'puppeteer';

type CollectContext = {
@@ -3,13 +3,11 @@ import { URL } from 'url';
import test from 'ava';

import { Server } from '@hint/utils-create-server';
import { test as testUtils } from '@hint/utils';
import { generateHTMLPage } from '@hint/utils';
import { Engine, Events } from 'hint';

import Connector from '../src/connector';

const { generateHTMLPage } = testUtils;

const name = 'puppeteer';

const scripts = [
@@ -5,15 +5,20 @@ import { copy } from 'fs-extra';
import * as inquirer from 'inquirer';
import * as mkdirp from 'mkdirp';

import { fs, logger, misc, packages } from '@hint/utils';
import {
cwd,
logger,
isOfficial,
normalizeStringByDelimiter,
readFile,
toCamelCase,
toPascalCase,
writeFileAsync
} from '@hint/utils';
import { Category, HintScope } from 'hint';

import Handlebars, { compileTemplate, escapeSafeString } from './handlebars-utils';

const { isOfficial } = packages;
const { cwd, readFile, writeFileAsync } = fs;
const { normalizeStringByDelimiter, toCamelCase, toPascalCase } = misc;

/*
* ------------------------------------------------------------------------------
* Types.
@@ -1,9 +1,7 @@
import * as Handlebars from 'handlebars';
import { fs } from '@hint/utils';
import { readFileAsync } from '@hint/utils';
import { loadCreateHintPackage } from './utils';

const { readFileAsync } = fs;

const pkg = loadCreateHintPackage();

/**
@@ -1,7 +1,6 @@
import { test } from '@hint/utils';
import { generateHTMLPage, getHintPath } from '@hint/utils';
import { HintTest, testHint } from '@hint/utils-tests-helpers';

const { generateHTMLPage, getHintPath } = test;
const hintPath = getHintPath(__filename{{#if parentName}}, true{{/if}});

/*
@@ -1,6 +1,4 @@
import { packages } from '@hint/utils';

const { findPackageRoot } = packages;
import { findPackageRoot } from '@hint/utils';

/** Returns an object that represents the `package.json` version of `create-hint` */
export const loadCreateHintPackage = () => {
@@ -70,12 +70,10 @@ const loadScript = (context: CreateHintContext) => {
const script = proxyquire('../src/create-hint', {
'../src/handlebars-utils': context.handlebarsUtils,
'@hint/utils': {
fs: {
cwd: context.cwd,
readFile: utils.fs.readFile,
writeFileAsync: context.writeFileAsyncModule
},
packages: { isOfficial: context.isOfficialModule }
cwd: context.cwd,
isOfficial: context.isOfficialModule,
readFile: utils.readFile,
writeFileAsync: context.writeFileAsyncModule
},
'fs-extra': context.fsExtra,
inquirer: context.inquirer,
@@ -15,14 +15,20 @@ import { promisify } from 'util';
import * as inquirer from 'inquirer';

import { ResourceType, UserConfig, utils } from 'hint';
import { appInsights, debug as d, fs as fsUtils, logger, npm, NpmPackage } from '@hint/utils';
import {
appInsights,
cwd,
debug as d,
getOfficialPackages,
installPackages,
logger,
NpmPackage
} from '@hint/utils';

import { generateBrowserslistConfig } from './browserslist';

const { resourceLoader: { getInstalledResources, getCoreResources } } = utils;
const { getOfficialPackages, installPackages } = npm;
const { sendPendingData, trackEvent } = appInsights;
const { cwd } = fsUtils;

const debug: debug.IDebugger = d(__filename);
const defaultFormatter = 'summary';

0 comments on commit 7ee688a

Please sign in to comment.
You can’t perform that action at this time.