From 9f5d8e258ef835db2e3e2c6799908eddf7b7a2a9 Mon Sep 17 00:00:00 2001 From: Sylvester Aswin Stanley Date: Sun, 1 Nov 2020 20:30:15 +0100 Subject: [PATCH 01/20] feat: initial commit to convert everything to typescript --- .eslintrc.js | 20 +- package.json | 34 +- src/{cli.js => cli.ts} | 27 +- src/helpers/build-css.js | 19 - src/helpers/build-css.ts | 31 + src/helpers/build-doc-partials.js | 38 - src/helpers/build-doc-partials.ts | 52 + src/helpers/build-index.js | 26 - src/helpers/build-index.ts | 38 + src/helpers/build-nav.js | 13 - src/helpers/build-nav.ts | 21 + src/helpers/build-sections.js | 40 - src/helpers/build-sections.ts | 44 + src/helpers/build-sidebar.js | 12 - src/helpers/build-sidebar.ts | 20 + .../{build-stats.js => build-stats.ts} | 43 +- src/helpers/save-file.js | 19 - src/helpers/save-file.ts | 31 + src/index.js | 105 - src/index.ts | 28 +- src/lib/resolveUtility.js | 4 +- src/modules/animation.js | 23 - src/modules/animation.ts | 37 + ...ackground-image.js => background-image.ts} | 67 +- src/modules/{border.js => border.ts} | 93 +- src/modules/box-shadow.js | 30 - src/modules/box-shadow.ts | 44 + src/modules/box-sizing.js | 25 - src/modules/box-sizing.ts | 38 + src/modules/clear.js | 29 - src/modules/clear.ts | 42 + src/modules/colors.js | 59 - src/modules/colors.ts | 75 + src/modules/{cursor.js => cursor.ts} | 29 +- src/modules/{display.js => display.ts} | 35 +- src/modules/{flexbox.js => flexbox.ts} | 49 +- src/modules/float.js | 27 - src/modules/float.ts | 40 + src/modules/{font.js => font.ts} | 53 +- src/modules/{grid.js => grid.ts} | 0 src/modules/height.js | 31 - src/modules/height.ts | 47 + src/modules/index.js | 77 - src/modules/index.ts | 37 + src/modules/letter-spacing.js | 25 - src/modules/letter-spacing.ts | 39 + src/modules/line-height.js | 23 - src/modules/line-height.ts | 37 + src/modules/list-style.js | 27 - src/modules/list-style.ts | 41 + src/modules/opacity.js | 23 - src/modules/opacity.ts | 37 + src/modules/{outline.js => outline.ts} | 39 +- src/modules/{overflow.js => overflow.ts} | 29 +- src/modules/pointer-events.js | 25 - src/modules/pointer-events.ts | 38 + src/modules/{position.js => position.ts} | 33 +- src/modules/resize.js | 29 - src/modules/resize.ts | 42 + src/modules/series.js | 41 - src/modules/series.ts | 56 + src/modules/single.js | 24 - src/modules/single.ts | 35 + src/modules/{spacing.js => spacing.ts} | 31 +- src/modules/{text-align.js => text-align.ts} | 29 +- src/modules/text-decoration.js | 29 - src/modules/text-decoration.ts | 46 + src/modules/text-overflow.js | 27 - src/modules/text-overflow.ts | 41 + src/modules/text-transform.js | 29 - src/modules/text-transform.ts | 42 + src/modules/transform.js | 39 - src/modules/transform.ts | 54 + src/modules/transition.js | 59 - src/modules/transition.ts | 77 + src/modules/user-select.js | 31 - src/modules/user-select.ts | 44 + .../{vertical-align.js => vertical-align.ts} | 31 +- src/modules/visibility.js | 27 - src/modules/visibility.ts | 40 + src/modules/white-space.js | 31 - src/modules/white-space.ts | 44 + src/modules/width.js | 31 - src/modules/width.ts | 47 + src/modules/z-index.js | 25 - src/modules/z-index.ts | 39 + src/plugins/{docs.js => docs.ts} | 30 +- src/plugins/index.js | 9 - src/plugins/index.ts | 3 + src/plugins/{json.js => json.ts} | 17 +- src/plugins/prefix.js | 11 - src/plugins/prefix.ts | 16 + src/types.ts | 73 + src/util/{applyRules.js => applyRules.ts} | 44 +- src/util/computeStyles.js | 24 - src/util/computeStyles.ts | 12 +- src/util/defineClass.js | 20 - src/util/defineClass.ts | 30 + src/util/defineSeries.js | 31 - src/util/defineSeries.ts | 54 + src/util/index.js | 13 - src/util/index.ts | 13 + src/util/{responsive.js => responsive.ts} | 21 +- src/util/template.js | 5 - src/util/template.ts | 7 + src/util/traverse.js | 33 - src/util/traverse.ts | 42 + ...g.default.js => utility.config.default.ts} | 86 +- tsconfig.json | 18 + yarn.lock | 3275 ++++++----------- 110 files changed, 3408 insertions(+), 3667 deletions(-) rename src/{cli.js => cli.ts} (79%) delete mode 100644 src/helpers/build-css.js create mode 100644 src/helpers/build-css.ts delete mode 100644 src/helpers/build-doc-partials.js create mode 100644 src/helpers/build-doc-partials.ts delete mode 100644 src/helpers/build-index.js create mode 100644 src/helpers/build-index.ts delete mode 100644 src/helpers/build-nav.js create mode 100644 src/helpers/build-nav.ts delete mode 100644 src/helpers/build-sections.js create mode 100644 src/helpers/build-sections.ts delete mode 100644 src/helpers/build-sidebar.js create mode 100644 src/helpers/build-sidebar.ts rename src/helpers/{build-stats.js => build-stats.ts} (51%) delete mode 100644 src/helpers/save-file.js create mode 100644 src/helpers/save-file.ts delete mode 100644 src/index.js delete mode 100644 src/modules/animation.js create mode 100644 src/modules/animation.ts rename src/modules/{background-image.js => background-image.ts} (60%) rename src/modules/{border.js => border.ts} (53%) delete mode 100644 src/modules/box-shadow.js create mode 100644 src/modules/box-shadow.ts delete mode 100644 src/modules/box-sizing.js create mode 100644 src/modules/box-sizing.ts delete mode 100644 src/modules/clear.js create mode 100644 src/modules/clear.ts delete mode 100644 src/modules/colors.js create mode 100644 src/modules/colors.ts rename src/modules/{cursor.js => cursor.ts} (56%) rename src/modules/{display.js => display.ts} (75%) rename src/modules/{flexbox.js => flexbox.ts} (80%) delete mode 100644 src/modules/float.js create mode 100644 src/modules/float.ts rename src/modules/{font.js => font.ts} (75%) rename src/modules/{grid.js => grid.ts} (100%) delete mode 100644 src/modules/height.js create mode 100644 src/modules/height.ts delete mode 100644 src/modules/index.js create mode 100644 src/modules/index.ts delete mode 100644 src/modules/letter-spacing.js create mode 100644 src/modules/letter-spacing.ts delete mode 100644 src/modules/line-height.js create mode 100644 src/modules/line-height.ts delete mode 100644 src/modules/list-style.js create mode 100644 src/modules/list-style.ts delete mode 100644 src/modules/opacity.js create mode 100644 src/modules/opacity.ts rename src/modules/{outline.js => outline.ts} (50%) rename src/modules/{overflow.js => overflow.ts} (71%) delete mode 100644 src/modules/pointer-events.js create mode 100644 src/modules/pointer-events.ts rename src/modules/{position.js => position.ts} (58%) delete mode 100644 src/modules/resize.js create mode 100644 src/modules/resize.ts delete mode 100644 src/modules/series.js create mode 100644 src/modules/series.ts delete mode 100644 src/modules/single.js create mode 100644 src/modules/single.ts rename src/modules/{spacing.js => spacing.ts} (67%) rename src/modules/{text-align.js => text-align.ts} (56%) delete mode 100644 src/modules/text-decoration.js create mode 100644 src/modules/text-decoration.ts delete mode 100644 src/modules/text-overflow.js create mode 100644 src/modules/text-overflow.ts delete mode 100644 src/modules/text-transform.js create mode 100644 src/modules/text-transform.ts delete mode 100644 src/modules/transform.js create mode 100644 src/modules/transform.ts delete mode 100644 src/modules/transition.js create mode 100644 src/modules/transition.ts delete mode 100644 src/modules/user-select.js create mode 100644 src/modules/user-select.ts rename src/modules/{vertical-align.js => vertical-align.ts} (55%) delete mode 100644 src/modules/visibility.js create mode 100644 src/modules/visibility.ts delete mode 100644 src/modules/white-space.js create mode 100644 src/modules/white-space.ts delete mode 100644 src/modules/width.js create mode 100644 src/modules/width.ts delete mode 100644 src/modules/z-index.js create mode 100644 src/modules/z-index.ts rename src/plugins/{docs.js => docs.ts} (56%) delete mode 100644 src/plugins/index.js create mode 100644 src/plugins/index.ts rename src/plugins/{json.js => json.ts} (56%) delete mode 100644 src/plugins/prefix.js create mode 100644 src/plugins/prefix.ts create mode 100644 src/types.ts rename src/util/{applyRules.js => applyRules.ts} (79%) delete mode 100644 src/util/computeStyles.js delete mode 100644 src/util/defineClass.js create mode 100644 src/util/defineClass.ts delete mode 100644 src/util/defineSeries.js create mode 100644 src/util/defineSeries.ts delete mode 100644 src/util/index.js create mode 100644 src/util/index.ts rename src/util/{responsive.js => responsive.ts} (54%) delete mode 100644 src/util/template.js create mode 100644 src/util/template.ts delete mode 100644 src/util/traverse.js create mode 100644 src/util/traverse.ts rename src/{utility.config.default.js => utility.config.default.ts} (69%) create mode 100644 tsconfig.json diff --git a/.eslintrc.js b/.eslintrc.js index 9af41d4..82d0942 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,15 +1,19 @@ module.exports = { - parser: "babel-eslint", + parser: "@typescript-eslint/parser", // Specifies the ESLint parser + root: true, + extends: [ + "plugin:@typescript-eslint/recommended", // Uses the recommended rules from @typescript-eslint/eslint-plugin + "prettier/@typescript-eslint", // Uses eslint-config-prettier to disable ESLint rules from @typescript-eslint/eslint-plugin that would conflict with prettier + "plugin:prettier/recommended", // Enables eslint-plugin-prettier and displays prettier errors as ESLint errors. Make sure this is always the last configuration in the extends array. + ], + plugins: [], parserOptions: { - sourceType: "module" + ecmaVersion: 2018, // Allows for the parsing of modern ECMAScript features + sourceType: "module", // Allows for the use of imports + ecmaFeatures: {}, }, env: { es6: true, - node: true + node: true, }, - extends: ["eslint:recommended", "prettier"], - plugins: ["prettier"], - rules: { - "prettier/prettier": "error" - } }; diff --git a/package.json b/package.json index 169df69..3818b93 100644 --- a/package.json +++ b/package.json @@ -13,26 +13,32 @@ "format": "git ls-files --directory . | egrep '\\.js$'| xargs prettier --write --print-width 80 --tab-width 2 --trailing-comma all --single-quote" }, "bin": { - "utility": "src/cli.js" + "utility": "src/cli.ts" }, "dependencies": { - "commander": "4.1.0", - "cssstats": "^3.4.0", + "commander": "6.2.0", + "cssstats": "^3.4.1", "deepmerge": "^4.2.2", - "lodash": "^4.17.15", - "opn": "^6.0.0", + "lodash": "^4.17.20", "postcss": "7.0.26" }, "devDependencies": { - "babel-eslint": "^10.0.3", - "chalk": "^3.0.0", - "eslint": "^6.8.0", - "eslint-config-prettier": "^6.9.0", - "eslint-plugin-prettier": "^3.1.2", - "husky": "^4.0.0", - "lint-staged": "^9.5.0", - "postcss-cli": "^6.1.3", - "prettier": "^1.19.1" + "@types/lodash": "^4.14.164", + "@typescript-eslint/eslint-plugin": "^4.6.0", + "@typescript-eslint/parser": "^4.6.0", + "babel-eslint": "^10.1.0", + "chalk": "^4.1.0", + "eslint": "^7.12.1", + "eslint-config-prettier": "^6.15.0", + "eslint-plugin-import": "^2.22.1", + "eslint-plugin-prettier": "^3.1.4", + "husky": "^4.3.0", + "lint-staged": "^10.5.1", + "open": "^7.3.0", + "postcss-cli": "^8.2.0", + "prettier": "^2.1.2", + "ts-node": "^9.0.0", + "typescript": "^4.0.5" }, "husky": { "hooks": { diff --git a/src/cli.js b/src/cli.ts similarity index 79% rename from src/cli.js rename to src/cli.ts index a6c020e..87012d4 100755 --- a/src/cli.js +++ b/src/cli.ts @@ -1,13 +1,12 @@ -#!/usr/bin/env node -const program = require("commander"); -const postcss = require("postcss"); -const chalk = require("chalk"); -const path = require("path"); -const fs = require("fs"); -const utility = require(".."); -const { builder } = utility; +#!/usr/bin/env ts-node +import program from "commander"; +import postcss from "postcss"; +import chalk from "chalk"; +import path from "path"; +import fs from "fs"; +import { builder } from "../"; -const packageJson = require(path.resolve(__dirname, "../package.json")); +import packageJson from "../package.json"; program.version(packageJson.version).usage(" []"); @@ -49,8 +48,8 @@ program : fs.readFileSync(path.resolve(__dirname, "../bootstrap.css"), "utf-8"); const write = options.output - ? data => fs.writeFileSync(options.output, data) - : data => process.stdout.write(data); + ? (data) => fs.writeFileSync(options.output, data) + : (data) => process.stdout.write(data); let config; const localConfig = path.resolve("utility.config.js"); @@ -67,13 +66,13 @@ program console.log(chalk.blue("Building CSS bundle...")); postcss([builder(config)]) .process(input) - .then(result => { + .then((result) => { write(result.css); // eslint-disable-next-line no-console - console.log(console.green("Success!")); + console.log(chalk.green("Success!")); }) // eslint-disable-next-line no-console - .catch(e => console.err(chalk.red(e))); + .catch((e) => console.error(chalk.red(e))); }); program.command("*", null, { noHelp: true }).action(() => { diff --git a/src/helpers/build-css.js b/src/helpers/build-css.js deleted file mode 100644 index 2326c3c..0000000 --- a/src/helpers/build-css.js +++ /dev/null @@ -1,19 +0,0 @@ -const path = require("path"); -const fs = require("fs"); -const _ = require("lodash"); -module.exports = function({ packageName, atomCss }) { - const cssFile = fs.readFileSync( - path.join(__dirname, "templates", "theme.css"), - "utf8" - ); - const headTemplate = _.template( - fs.readFileSync(path.join(__dirname, "templates", "head.html"), "utf8") - ); - const headHtml = headTemplate({ - packageName, - cssFile, - atomCss - }); - - return headHtml; -}; diff --git a/src/helpers/build-css.ts b/src/helpers/build-css.ts new file mode 100644 index 0000000..0f41348 --- /dev/null +++ b/src/helpers/build-css.ts @@ -0,0 +1,31 @@ +import path from "path"; +import { promises as fsAsync } from "fs"; +import _ from "lodash"; + +interface BuildCSS { + packageName: string; + atomCss: string; +} + +export default async function ({ + packageName, + atomCss, +}: BuildCSS): Promise { + const cssFile = await fsAsync.readFile( + path.join(__dirname, "templates", "theme.css"), + "utf-8" + ); + const headTemplate = _.template( + await fsAsync.readFile( + path.join(__dirname, "templates", "head.html"), + "utf-8" + ) + ); + const headHtml = headTemplate({ + packageName, + cssFile, + atomCss, + }); + + return headHtml; +} diff --git a/src/helpers/build-doc-partials.js b/src/helpers/build-doc-partials.js deleted file mode 100644 index 8215b74..0000000 --- a/src/helpers/build-doc-partials.js +++ /dev/null @@ -1,38 +0,0 @@ -const buildCss = require("./build-css"); -const buildNav = require("./build-nav"); -const buildSidebar = require("./build-sidebar"); -const buildSections = require("./build-sections"); -const buildStats = require("./build-stats"); - -/* Function which build all parts of the document */ -module.exports = function({ packageName, modules, atomCss }) { - // Build the - const headHtml = buildCss({ - packageName, - atomCss - }); - // Build the - const navHtml = buildNav({ - packageName - }); - // Build the - const sidebarHtml = buildSidebar({ - modules - }); - // Build the - const sectionsHtml = buildSections({ - modules - }); - // Build the <> - const statsHtml = buildStats({ - atomCss - }); - - return { - headHtml, - navHtml, - sidebarHtml, - sectionsHtml, - statsHtml - }; -}; diff --git a/src/helpers/build-doc-partials.ts b/src/helpers/build-doc-partials.ts new file mode 100644 index 0000000..0448fd0 --- /dev/null +++ b/src/helpers/build-doc-partials.ts @@ -0,0 +1,52 @@ +import buildCss from "./build-css"; +import buildNav from "./build-nav"; +import buildSidebar from "./build-sidebar"; +import buildSections from "./build-sections"; +import buildStats from "./build-stats"; + +/* Function which build all parts of the document */ +export default async function buildDocPartials({ + packageName, + modules, + atomCss, +}: { + packageName: string; + modules: any; + atomCss: string; +}): Promise<{ + headHtml: string; + navHtml: string; + sidebarHtml: string; + sectionsHtml: string[]; + statsHtml: string; +}> { + // Build the + const headHtml = await buildCss({ + packageName, + atomCss, + }); + // Build the + const navHtml = await buildNav({ + packageName, + }); + // Build the + const sidebarHtml = await buildSidebar({ + modules, + }); + // Build the + const sectionsHtml = await buildSections({ + modules, + }); + // Build the <> + const statsHtml = await buildStats({ + atomCss, + }); + + return { + headHtml, + navHtml, + sidebarHtml, + sectionsHtml, + statsHtml, + }; +} diff --git a/src/helpers/build-index.js b/src/helpers/build-index.js deleted file mode 100644 index eda51a4..0000000 --- a/src/helpers/build-index.js +++ /dev/null @@ -1,26 +0,0 @@ -const path = require("path"); -const _ = require("lodash"); -const fs = require("fs"); - -module.exports = function({ - headHtml, - navHtml, - sidebarHtml, - sectionsHtml, - statsHtml, - packageName -}) { - const indexTemplate = _.template( - fs.readFileSync(path.join(__dirname, "templates", "index.html"), "utf8") - ); - const indexHtml = indexTemplate({ - packageName, - head: headHtml, - nav: navHtml, - sidebar: sidebarHtml, - sections: sectionsHtml, - stats: statsHtml - }); - - return indexHtml; -}; diff --git a/src/helpers/build-index.ts b/src/helpers/build-index.ts new file mode 100644 index 0000000..303945b --- /dev/null +++ b/src/helpers/build-index.ts @@ -0,0 +1,38 @@ +import path from "path"; +import _ from "lodash"; +import { promises as fsAsync } from "fs"; + +interface BuildIndex { + headHtml: string; + navHtml: string; + sidebarHtml: string; + sectionsHtml: string[]; + statsHtml: string; + packageName: string; +} + +export default async function ({ + headHtml, + navHtml, + sidebarHtml, + sectionsHtml, + statsHtml, + packageName, +}: BuildIndex): Promise { + const indexTemplate = _.template( + await fsAsync.readFile( + path.join(__dirname, "templates", "index.html"), + "utf-8" + ) + ); + const indexHtml = indexTemplate({ + packageName, + head: headHtml, + nav: navHtml, + sidebar: sidebarHtml, + sections: sectionsHtml, + stats: statsHtml, + }); + + return indexHtml; +} diff --git a/src/helpers/build-nav.js b/src/helpers/build-nav.js deleted file mode 100644 index d6cbbc4..0000000 --- a/src/helpers/build-nav.js +++ /dev/null @@ -1,13 +0,0 @@ -const path = require("path"); -const fs = require("fs"); -const _ = require("lodash"); -module.exports = function({ packageName }) { - const navTemplate = _.template( - fs.readFileSync(path.join(__dirname, "templates", "nav.html"), "utf8") - ); - const navHtml = navTemplate({ - packageName - }); - - return navHtml; -}; diff --git a/src/helpers/build-nav.ts b/src/helpers/build-nav.ts new file mode 100644 index 0000000..1295979 --- /dev/null +++ b/src/helpers/build-nav.ts @@ -0,0 +1,21 @@ +import path from "path"; +import { promises as fsAsync } from "fs"; +import _ from "lodash"; + +export default async function buildNav({ + packageName, +}: { + packageName: string; +}): Promise { + const navTemplate = _.template( + await fsAsync.readFile( + path.join(__dirname, "templates", "nav.html"), + "utf8" + ) + ); + const navHtml = navTemplate({ + packageName, + }); + + return navHtml; +} diff --git a/src/helpers/build-sections.js b/src/helpers/build-sections.js deleted file mode 100644 index 05c6aa1..0000000 --- a/src/helpers/build-sections.js +++ /dev/null @@ -1,40 +0,0 @@ -const path = require("path"); -const _ = require("lodash"); -const fs = require("fs"); - -const selectorReplace = selector => { - return selector - .replace(".", "") - .replace(":active", "") - .replace(":hover", ""); -}; - -module.exports = function({ modules }) { - const sectionTemplate = _.template( - fs.readFileSync(path.join(__dirname, "templates", "section.html"), "utf8") - ); - const sectionsHtml = []; - Object.keys(modules).forEach(module => { - const moduleName = module[0].toUpperCase() + module.slice(1); - const rules = []; - modules[module].forEach(rule => { - // console.log(JSON.stringify(rule)); - const { nodes, selector, media } = rule; - if (/^\.[A-Za-z0-9\-\:\_]+$/.test(selector)) { - rules.push({ - selector, - nodes, - media, - class: selectorReplace(selector) - }); - } - }); - const sectionHtml = sectionTemplate({ - module: moduleName, - rules - }); - sectionsHtml.push(sectionHtml); - }); - - return sectionsHtml; -}; diff --git a/src/helpers/build-sections.ts b/src/helpers/build-sections.ts new file mode 100644 index 0000000..a17658e --- /dev/null +++ b/src/helpers/build-sections.ts @@ -0,0 +1,44 @@ +import path from "path"; +import _ from "lodash"; +import { promises as fsAsync } from "fs"; + +const selectorReplace = (selector) => { + return selector.replace(".", "").replace(":active", "").replace(":hover", ""); +}; + +export default async function buildSections({ + modules, +}: { + modules: any; +}): Promise { + const sectionTemplate = _.template( + await fsAsync.readFile( + path.join(__dirname, "templates", "section.html"), + "utf8" + ) + ); + const sectionsHtml = []; + Object.keys(modules).forEach((module) => { + const moduleName = module[0].toUpperCase() + module.slice(1); + const rules = []; + modules[module].forEach((rule) => { + // console.log(JSON.stringify(rule)); + const { nodes, selector, media } = rule; + if (/^\.[A-Za-z0-9\-\:\_]+$/.test(selector)) { + rules.push({ + selector, + nodes, + media, + class: selectorReplace(selector), + }); + } + }); + const sectionHtml = sectionTemplate({ + module: moduleName, + rules, + }); + sectionsHtml.push(sectionHtml); + }); + + return sectionsHtml; +} diff --git a/src/helpers/build-sidebar.js b/src/helpers/build-sidebar.js deleted file mode 100644 index 3a1e3ad..0000000 --- a/src/helpers/build-sidebar.js +++ /dev/null @@ -1,12 +0,0 @@ -const path = require("path"); -const _ = require("lodash"); -const fs = require("fs"); -module.exports = function({ modules }) { - const sidebarTemplate = _.template( - fs.readFileSync(path.join(__dirname, "templates", "sidebar.html"), "utf8") - ); - const sidebarHtml = sidebarTemplate({ - links: Object.keys(modules).map(module => _.capitalize(module)) - }); - return sidebarHtml; -}; diff --git a/src/helpers/build-sidebar.ts b/src/helpers/build-sidebar.ts new file mode 100644 index 0000000..9c59b71 --- /dev/null +++ b/src/helpers/build-sidebar.ts @@ -0,0 +1,20 @@ +import path from "path"; +import _ from "lodash"; +import { promises as fsAsync } from "fs"; + +export default async function buildSidebar({ + modules, +}: { + modules: any; +}): Promise { + const sidebarTemplate = _.template( + await fsAsync.readFile( + path.join(__dirname, "templates", "sidebar.html"), + "utf-8" + ) + ); + const sidebarHtml = sidebarTemplate({ + links: Object.keys(modules).map((module) => _.capitalize(module)), + }); + return sidebarHtml; +} diff --git a/src/helpers/build-stats.js b/src/helpers/build-stats.ts similarity index 51% rename from src/helpers/build-stats.js rename to src/helpers/build-stats.ts index 221f69e..4b567dd 100644 --- a/src/helpers/build-stats.js +++ b/src/helpers/build-stats.ts @@ -1,27 +1,36 @@ -const path = require("path"); -const fs = require("fs"); -const _ = require("lodash"); -const cssstats = require("cssstats"); +import path from "path"; +import { promises as fsAsync } from "fs"; +import _ from "lodash"; +import cssstats from "cssstats"; -module.exports = function({ atomCss }) { +interface BuildStats { + atomCss: string; +} + +export default async function buildStats({ + atomCss, +}: BuildStats): Promise { const { humanizedSize: size, humanizedGzipSize: gzippedSize, - rules: { total: totalRules } = {}, + rules: { total: totalRules } = {} as any, selectors: { total: totalSelectors, class: selectorsClass, id: selectorsId, pseudoClass: selectorsPseudoClass, pseudoElement: selectorsPseudoElement, - specificity: { average: selectorsSpecificity } = {} - } = {}, - declarations: { total: totalDecls, unique: uniqueDecls } = {}, - mediaQueries: { total: totalMedia } = {} - } = cssstats(atomCss); + specificity: { average: selectorsSpecificity } = {} as any, + } = {} as any, + declarations: { total: totalDecls, unique: uniqueDecls } = {} as any, + mediaQueries: { total: totalMedia } = {} as any, + } = cssstats(atomCss) as any; const statsTemplate = _.template( - fs.readFileSync(path.join(__dirname, "templates", "stats.html"), "utf8") + await fsAsync.readFile( + path.join(__dirname, "templates", "stats.html"), + "utf8" + ) ); const statsHtml = statsTemplate({ overview: { @@ -29,7 +38,7 @@ module.exports = function({ atomCss }) { gzippedSize, totalRules, totalDecls, - totalMedia + totalMedia, }, selectors: { total: totalSelectors, @@ -37,12 +46,12 @@ module.exports = function({ atomCss }) { id: selectorsId, pClass: selectorsPseudoClass, pElement: selectorsPseudoElement, - specificity: Math.round(selectorsSpecificity) + specificity: Math.round(selectorsSpecificity), }, declarations: { total: totalDecls, - unique: uniqueDecls - } + unique: uniqueDecls, + }, }); return statsHtml; -}; +} diff --git a/src/helpers/save-file.js b/src/helpers/save-file.js deleted file mode 100644 index 4d3aca0..0000000 --- a/src/helpers/save-file.js +++ /dev/null @@ -1,19 +0,0 @@ -const fs = require("fs"); -const opn = require("opn"); -const chalk = require("chalk"); -module.exports = function({ content, filePath, dirPath, openFile = false }) { - if (content === undefined) { - // eslint-disable-next-line no-console - console.error(chalk.red("The content of the file should not be empty")); - process.exit(0); - } - if (!fs.existsSync(dirPath)) { - fs.mkdirSync(dirPath); - } - fs.writeFileSync(filePath, content); - // eslint-disable-next-line no-console - console.log(chalk.blue(`Document was created : ${filePath}`)); - if (openFile) { - opn(filePath, { app: ["google-chrome", "--incognito"] }); - } -}; diff --git a/src/helpers/save-file.ts b/src/helpers/save-file.ts new file mode 100644 index 0000000..e7517af --- /dev/null +++ b/src/helpers/save-file.ts @@ -0,0 +1,31 @@ +import fs from "fs"; +import { promises as fsAsync } from "fs"; +import open from "open"; +import chalk from "chalk"; + +interface SaveFile { + content: string; + filePath: string; + dirPath: string; + openFile?: boolean; +} + +export default async function saveFile({ + content, + filePath, + dirPath, + openFile = false, +}: SaveFile): Promise { + if (content === undefined) { + console.error(chalk.red("The content of the file should not be empty")); + process.exit(0); + } + if (!fs.existsSync(dirPath)) { + fs.mkdirSync(dirPath); + } + await fsAsync.writeFile(filePath, content); + console.log(chalk.blue(`Document was created : ${filePath}`)); + if (openFile) { + open(filePath, { app: ["google-chrome", "--incognito"] }); + } +} diff --git a/src/index.js b/src/index.js deleted file mode 100644 index ad242c7..0000000 --- a/src/index.js +++ /dev/null @@ -1,105 +0,0 @@ -const path = require("path"); -const fs = require("fs"); -const chalk = require("chalk"); -const postcss = require("postcss"); -const computeStyles = require("./util/computeStyles"); -const deepmerge = require("deepmerge"); - -const AT_RULE_NAME = "utility"; -const DEFAULT_CONFIG_PATH = "./utility.config.default.js"; - -const builder = postcss.plugin("utility", config => styles => { - const defaultConfig = require(DEFAULT_CONFIG_PATH); - const { - plugins = [], - modules = [], - config: globalConfig = {}, - forceInsert = false - } = - config || defaultConfig; - const toRemove = []; - - styles.walkAtRules("utility", rule => { - if (rule.name !== AT_RULE_NAME) { - return; - } - const { - // This give the full path of the file - // the plugin is running. Helps to fetch the custom config - source: { input: { file: sourceFilename } = {} } = {}, - params - } = rule; - // Kept this as an mutable array - let modulesToGenerate = []; - - const { dir: sourceDirname } = path.parse(sourceFilename); - - // Check if params is empty before considering - // to build all the modules as part of the configfile - // which was sent - if (params) { - // ------------------------------ - // NEEDS IMPLEMENTATION - ADDED PLUGIN SUPPORT - // ------------------------------ - // Can rely on this check since - // postcss always give is a string - const [moduleName, moduleConfigFile] = params.split(" "); - // @utility ; - // map[] = - let moduleConfig = {}; - const modulePath = moduleName - ? path.join(__dirname, `./modules/${moduleName}.js`) - : ""; - const moduleConfigPath = moduleConfigFile - ? path.join(sourceDirname, moduleConfigFile) - : ""; - // Exit if the module name or - // the provided module name is not supported - if (moduleName && !fs.existsSync(modulePath)) { - // eslint-disable-next-line no-console - console.log(chalk.red(`Module => ${moduleName} : is not supported`)); - process.exit(-1); - } - const moduleFunction = require(modulePath); - // Deep merge the config if user has provided custom - // config file - if (moduleConfigPath && fs.existsSync(moduleConfigPath)) { - const customModuleConfig = require(moduleConfigPath); - // Using deepmerge here - // https://github.com/KyleAMathews/deepmerge - moduleConfig = deepmerge(moduleConfig, customModuleConfig); - } - // Push. - modulesToGenerate.push(moduleFunction(moduleConfig)); - } else { - // This means the user has provide a config which has everything - // Blindly reply on the config send to the plugin - modulesToGenerate = [].concat(modules); - } - const computedStyles = computeStyles({ - modules: modulesToGenerate, - plugins, - config: globalConfig - }); - rule.before(computedStyles); - toRemove.push(rule); - }); - - if (forceInsert) { - const computedStyles = computeStyles({ - modules, - plugins, - config: globalConfig - }); - styles.prepend(computedStyles); - } - // remove @utility - toRemove.forEach(function(rule) { - rule.remove(); - }); -}); - -module.exports = builder; -module.exports.plugins = require("./plugins"); -module.exports.modules = require("./modules"); -module.exports.util = require("./util"); diff --git a/src/index.ts b/src/index.ts index 2673478..fa8a17b 100644 --- a/src/index.ts +++ b/src/index.ts @@ -7,19 +7,20 @@ import deepmerge from "deepmerge"; import computeStyles from "./util/computeStyles"; const AT_RULE_NAME = "utility"; -const DEFAULT_CONFIG_PATH = "./utility.config.default.js"; +const DEFAULT_CONFIG_PATH = "./utility.config.default.ts"; -const builder = postcss.plugin("utility", config => styles => { +const builder = postcss.plugin("utility", (config) => (styles) => { + // eslint-disable-next-line @typescript-eslint/no-var-requires const defaultConfig = require(DEFAULT_CONFIG_PATH); const { plugins = [], modules = [], config: globalConfig = {}, - forceInsert = false + forceInsert = false, } = config || defaultConfig; const toRemove = []; - styles.walkAtRules("utility", rule => { + styles.walkAtRules("utility", (rule) => { if (rule.name !== AT_RULE_NAME) { return; } @@ -27,7 +28,7 @@ const builder = postcss.plugin("utility", config => styles => { // This give the full path of the file // the plugin is running. Helps to fetch the custom config source: { input: { file: sourceFilename } = {} } = {}, - params + params, } = rule; // Kept this as an mutable array let modulesToGenerate = []; @@ -60,10 +61,12 @@ const builder = postcss.plugin("utility", config => styles => { console.log(chalk.red(`Module => ${moduleName} : is not supported`)); process.exit(-1); } + // eslint-disable-next-line @typescript-eslint/no-var-requires const moduleFunction = require(modulePath); // Deep merge the config if user has provided custom // config file if (moduleConfigPath && fs.existsSync(moduleConfigPath)) { + // eslint-disable-next-line @typescript-eslint/no-var-requires const customModuleConfig = require(moduleConfigPath); // Using deepmerge here // https://github.com/KyleAMathews/deepmerge @@ -79,7 +82,7 @@ const builder = postcss.plugin("utility", config => styles => { const computedStyles = computeStyles({ modules: modulesToGenerate, plugins, - config: globalConfig + config: globalConfig, }); rule.before(computedStyles); toRemove.push(rule); @@ -89,17 +92,18 @@ const builder = postcss.plugin("utility", config => styles => { const computedStyles = computeStyles({ modules, plugins, - config: globalConfig + config: globalConfig, }); styles.prepend(computedStyles); } // remove @utility - toRemove.forEach(function(rule) { + toRemove.forEach(function (rule) { rule.remove(); }); }); -module.exports = builder; -module.exports.plugins = require("./plugins"); -module.exports.modules = require("./modules"); -module.exports.util = require("./util"); +export { builder }; + +export * as plugins from "./plugins"; +export * as modules from "./modules"; +export { default as util } from "./util"; diff --git a/src/lib/resolveUtility.js b/src/lib/resolveUtility.js index 3893951..c398865 100644 --- a/src/lib/resolveUtility.js +++ b/src/lib/resolveUtility.js @@ -1,6 +1,6 @@ const generateModules = require("../util/generateModules"); -const resolveUtility = config => css => { +const resolveUtility = (config) => (css) => { const { plugins = [] } = config || {}; const modules = generateModules(config); @@ -9,7 +9,7 @@ const resolveUtility = config => css => { }, modules); // use @import utility insertion point - css.walkAtRules("utility", atRule => { + css.walkAtRules("utility", (atRule) => { atRule.before(classes); atRule.remove(); }); diff --git a/src/modules/animation.js b/src/modules/animation.js deleted file mode 100644 index 629df07..0000000 --- a/src/modules/animation.js +++ /dev/null @@ -1,23 +0,0 @@ -const applyRules = require("../util/applyRules"); - -const defaultNames = { - anim: "anim" -}; - -const getRules = (names, cfg) => ({ - anim: { name: names["anim"], key: "animation", value: cfg.values } -}); - -const meta = { - module: "animation" -}; - -module.exports = config => globalConfig => { - return applyRules({ - config, - globalConfig, - defaultNames, - getRules, - meta: Object.assign({}, meta, config && config.meta) - }); -}; diff --git a/src/modules/animation.ts b/src/modules/animation.ts new file mode 100644 index 0000000..738e563 --- /dev/null +++ b/src/modules/animation.ts @@ -0,0 +1,37 @@ +import applyRules from "../util/applyRules"; + +import { GetRules, GenericObject, Meta, Module } from "../types"; + +export type AnimationSupportedTypes = { + [key in keyof typeof defaultNames]?: string; +}; + +export type AnimationModuleType = Module; + +export interface ConfigVariables { + values?: GenericObject | string[]; +} + +const defaultNames = { + anim: "anim", +}; + +const getRules: GetRules = (names, cfg) => ({ + anim: { name: names["anim"], key: "animation", value: cfg.values }, +}); + +const meta: Meta = { + module: "animation", +}; + +const module: AnimationModuleType = (config) => (globalConfig) => { + return applyRules({ + config, + globalConfig, + defaultNames, + getRules, + meta: Object.assign({}, meta, config && config.meta), + }); +}; + +export default module; diff --git a/src/modules/background-image.js b/src/modules/background-image.ts similarity index 60% rename from src/modules/background-image.js rename to src/modules/background-image.ts index 6b4db2e..7289d9d 100644 --- a/src/modules/background-image.js +++ b/src/modules/background-image.ts @@ -1,4 +1,19 @@ -const applyRules = require("../util/applyRules"); +import applyRules from "../util/applyRules"; + +import { GetRules, GenericObject, Meta, Module } from "../types"; + +export type BackgroundImageSupportedTypes = { + [key in keyof typeof defaultNames]?: string; +}; + +export type BackgroundImageModuleType = Module; + +export interface ConfigVariables { + backgroundImageValues?: GenericObject | string[]; + backgroundPositionValues?: GenericObject | string[]; + backgroundPositionXValues?: GenericObject | string[]; + backgroundPositionYValues?: GenericObject | string[]; +} const defaultNames = { bgi: "bgi", @@ -21,110 +36,112 @@ const defaultNames = { "bgo:cb": "bgocb", "bgsz:a": "bgsza", "bgsz:ct": "bgszct", - "bgsz:cv": "bgszcv" + "bgsz:cv": "bgszcv", }; -const getRules = (names, cfg) => ({ +const getRules: GetRules = (names, cfg) => ({ bgi: { name: names["bgi"], key: "background-image", - value: cfg.backgroundImageValues + value: cfg.backgroundImageValues, }, "bgi:n": { name: names["bgi:n"], key: "background-image", value: "none" }, "bgr:n": { name: names["bgr:n"], key: "background-repeat", - value: "no-repeat" + value: "no-repeat", }, "bgr:x": { name: names["bgr:x"], key: "background-repeat", - value: "repeat-x" + value: "repeat-x", }, "bgr:y": { name: names["bgr:y"], key: "background-repeat", - value: "repeat-y" + value: "repeat-y", }, "bgr:rd": { name: names["bgr:rd"], key: "background-repeat", - value: "round" + value: "round", }, "bga:f": { name: names["bga:f"], key: "background-attachment", - value: "fixed" + value: "fixed", }, "bga:s": { name: names["bga:s"], key: "background-attachment", - value: "scroll" + value: "scroll", }, bgp: { name: names["bgp"], key: "background-position", - value: cfg.backgroundPositionValues + value: cfg.backgroundPositionValues, }, bgpx: { name: names["bgpx"], key: "background-position-x", - value: cfg.backgroundPositionXValues + value: cfg.backgroundPositionXValues, }, bgpy: { name: names["bgpy"], key: "background-position-y", - value: cfg.backgroundPositionYValues + value: cfg.backgroundPositionYValues, }, "bgcp:bb": { name: names["bgcp:bb"], key: "background-clip", - value: "border-box" + value: "border-box", }, "bgcp:pb": { name: names["bgcp:pb"], key: "background-clip", - value: "padding-box" + value: "padding-box", }, "bgcp:cb": { name: names["bgcp:cb"], key: "background-clip", - value: "content-box" + value: "content-box", }, "bgo:bb": { name: names["bgo:bb"], key: "background-origin", - value: "border-box" + value: "border-box", }, "bgo:pb": { name: names["bgo:pb"], key: "background-origin", - value: "padding-box" + value: "padding-box", }, "bgo:cb": { name: names["bgo:cb"], key: "background-origin", - value: "content-box" + value: "content-box", }, "bgsz:a": { name: names["bgsz:a"], key: "background-size", value: "auto" }, "bgsz:ct": { name: names["bgsz:ct"], key: "background-size", - value: "contain" + value: "contain", }, - "bgsz:cv": { name: names["bgsz:cv"], key: "background-size", value: "cover" } + "bgsz:cv": { name: names["bgsz:cv"], key: "background-size", value: "cover" }, }); -const meta = { - module: "background-image" +const meta: Meta = { + module: "background-image", }; -module.exports = config => globalConfig => { +const module: BackgroundImageModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, defaultNames, getRules, - meta: Object.assign({}, meta, config && config.meta) + meta: Object.assign({}, meta, config && config.meta), }); }; + +export default module; diff --git a/src/modules/border.js b/src/modules/border.ts similarity index 53% rename from src/modules/border.js rename to src/modules/border.ts index 159c464..655b2fa 100644 --- a/src/modules/border.js +++ b/src/modules/border.ts @@ -1,4 +1,37 @@ -const applyRules = require("../util/applyRules"); +import applyRules from "../util/applyRules"; + +import { GetRules, GenericObject, Meta, Module } from "../types"; + +export type BorderSupportedTypes = { + [key in keyof typeof defaultNames]?: string; +}; + +export type BorderModuleType = Module; + +export interface ConfigVariables { + borderValues?: GenericObject | string[]; + borderWidthValues?: GenericObject | string[]; + borderStyleValues?: GenericObject | string[]; + borderImageValues?: GenericObject | string[]; + borderTopValues?: GenericObject | string[]; + borderTopWidthValues?: GenericObject | string[]; + borderTopStyleValues?: GenericObject | string[]; + borderRightValues?: GenericObject | string[]; + borderRightWidthValues?: GenericObject | string[]; + borderRightStyleValues?: GenericObject | string[]; + borderBottomValues?: GenericObject | string[]; + borderBottomWidthValues?: GenericObject | string[]; + borderBottomStyleValues?: GenericObject | string[]; + borderLeftValues?: GenericObject | string[]; + borderLeftWidthValues?: GenericObject | string[]; + borderLeftStyleValues?: GenericObject | string[]; + borderRadiusValues?: GenericObject | string[]; + borderTopRightRadiusValues?: GenericObject | string[]; + borderTopLeftRadiusValues?: GenericObject | string[]; + borderBottomRightRadiusValues?: GenericObject | string[]; + borderBottomLeftRadiusValues?: GenericObject | string[]; + borderSpacingValues?: GenericObject | string[]; +} const defaultNames = { bd: "bd", @@ -30,136 +63,138 @@ const defaultNames = { bdtlrs: "bdtlrs", bdbrrs: "bdbrrs", bdblrs: "bdblrs", - bdsp: "bdsp" + bdsp: "bdsp", }; -const getRules = (names, cfg) => ({ +const getRules: GetRules = (names, cfg) => ({ bd: { name: names["bd"], key: "border", value: cfg.borderValues }, "bd:n": { name: names["bd:n"], key: "border", value: "none" }, "bd:w": { name: names["bd:w"], key: "border-width", - value: cfg.borderWidthValues + value: cfg.borderWidthValues, }, "bd:s": { name: names["bd:s"], key: "border-style", - value: cfg.borderStyleValues + value: cfg.borderStyleValues, }, "bdcl:c": { name: names["bdcl:c"], key: "border-collapse", - value: "collapse" + value: "collapse", }, "bdcl:s": { name: names["bdcl:s"], key: "border-collapse", - value: "separate" + value: "separate", }, bdi: { name: names["bdi"], key: "border-image", - value: cfg.borderImageValues + value: cfg.borderImageValues, }, "bdi:n": { name: names["bdi:n"], key: "border-image", value: "none" }, bdt: { name: names["bdt"], key: "border-top", value: cfg.borderTopValues }, "bdt:w": { name: names["bdt:w"], key: "border-top-width", - value: cfg.borderTopWidthValues + value: cfg.borderTopWidthValues, }, "bdt:s": { name: names["bdt:s"], key: "border-top-style", - value: cfg.borderTopStyleValues + value: cfg.borderTopStyleValues, }, "bdt:n": { name: names["bdt:n"], key: "border-top", value: "none" }, bdr: { name: names["bdr"], key: "border-right", - value: cfg.borderRightValues + value: cfg.borderRightValues, }, "bdr:w": { name: names["bdr:w"], key: "border-right-width", - value: cfg.borderRightWidthValues + value: cfg.borderRightWidthValues, }, "bdr:s": { name: names["bdr:s"], key: "border-right-style", - value: cfg.borderRightStyleValues + value: cfg.borderRightStyleValues, }, "bdr:n": { name: names["bdr:n"], key: "border-right", value: "none" }, bdb: { name: names["bdb"], key: "border-bottom", - value: cfg.borderBottomValues + value: cfg.borderBottomValues, }, "bdb:w": { name: names["bdb:w"], key: "border-bottom-width", - value: cfg.borderBottomWidthValues + value: cfg.borderBottomWidthValues, }, "bdb:s": { name: names["bdb:s"], key: "border-bottom-style", - value: cfg.borderBottomStyleValues + value: cfg.borderBottomStyleValues, }, "bdb:n": { name: names["bdb:n"], key: "border-bottom", value: "none" }, bdl: { name: names["bdl"], key: "border-left", value: cfg.borderLeftValues }, "bdl:w": { name: names["bdl:w"], key: "border-left-width", - value: cfg.borderLeftWidthValues + value: cfg.borderLeftWidthValues, }, "bdl:s": { name: names["bdl:s"], key: "border-left-style", - value: cfg.borderLeftStyleValues + value: cfg.borderLeftStyleValues, }, "bdl:n": { name: names["bdl:n"], key: "border-left", value: "none" }, bdrs: { name: names["bdrs"], key: "border-radius", - value: cfg.borderRadiusValues + value: cfg.borderRadiusValues, }, bdtrrs: { name: names["bdtrrs"], key: "border-top-right-radius", - value: cfg.borderTopRightRadiusValues + value: cfg.borderTopRightRadiusValues, }, bdtlrs: { name: names["bdtlrs"], key: "border-top-left-radius", - value: cfg.borderTopLeftRadiusValues + value: cfg.borderTopLeftRadiusValues, }, bdbrrs: { name: names["bdbrrs"], key: "border-bottom-right-radius", - value: cfg.borderBottomRightRadiusValues + value: cfg.borderBottomRightRadiusValues, }, bdblrs: { name: names["bdblrs"], key: "border-bottom-left-radius", - value: cfg.borderBottomLeftRadiusValues + value: cfg.borderBottomLeftRadiusValues, }, bdsp: { name: names["bdsp"], key: "border-spacing", - value: cfg.borderSpacingValues - } + value: cfg.borderSpacingValues, + }, }); -const meta = { - module: "border" +const meta: Meta = { + module: "border", }; -module.exports = config => globalConfig => { +const module: BorderModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, defaultNames, getRules, - meta: Object.assign({}, meta, config && config.meta) + meta: Object.assign({}, meta, config && config.meta), }); }; + +export default module; diff --git a/src/modules/box-shadow.js b/src/modules/box-shadow.js deleted file mode 100644 index 564e471..0000000 --- a/src/modules/box-shadow.js +++ /dev/null @@ -1,30 +0,0 @@ -const applyRules = require("../util/applyRules"); - -const defaultNames = { "bxsh:n": "bxsh:n", bxsh: "bxsh" }; - -const getRules = (names, cfg) => ({ - "bxsh:n": { - name: names["bxsh:n"], - key: "box-shadow", - value: "none" - }, - bxsh: { - name: names["bxsh"], - key: "box-shadow", - value: cfg.boxShadowValues - } -}); - -const meta = { - module: "box-shadow" -}; - -module.exports = config => globalConfig => { - return applyRules({ - config, - globalConfig, - defaultNames, - getRules, - meta: Object.assign({}, meta, config && config.meta) - }); -}; diff --git a/src/modules/box-shadow.ts b/src/modules/box-shadow.ts new file mode 100644 index 0000000..bc1b974 --- /dev/null +++ b/src/modules/box-shadow.ts @@ -0,0 +1,44 @@ +import applyRules from "../util/applyRules"; + +import { GetRules, GenericObject, Meta, Module } from "../types"; + +export type BoxShadowSupportedTypes = { + [key in keyof typeof defaultNames]?: string; +}; + +export type BoxShadowModuleType = Module; + +export interface ConfigVariables { + boxShadowValues?: GenericObject | string[]; +} + +const defaultNames = { "bxsh:n": "bxsh:n", bxsh: "bxsh" }; + +const getRules: GetRules = (names, cfg) => ({ + "bxsh:n": { + name: names["bxsh:n"], + key: "box-shadow", + value: "none", + }, + bxsh: { + name: names["bxsh"], + key: "box-shadow", + value: cfg.boxShadowValues, + }, +}); + +const meta: Meta = { + module: "box-shadow", +}; + +const module: BoxShadowModuleType = (config) => (globalConfig) => { + return applyRules({ + config, + globalConfig, + defaultNames, + getRules, + meta: Object.assign({}, meta, config && config.meta), + }); +}; + +export default module; diff --git a/src/modules/box-sizing.js b/src/modules/box-sizing.js deleted file mode 100644 index 2e5a396..0000000 --- a/src/modules/box-sizing.js +++ /dev/null @@ -1,25 +0,0 @@ -const applyRules = require("../util/applyRules"); - -const defaultNames = { - "bxz:cb": "bxzcb", - "bxz:bb": "bxzbb" -}; - -const getRules = names => ({ - "bxz:cb": { name: names["bxz:cb"], key: "box-sizing", value: "content-box" }, - "bxz:bb": { name: names["bxz:bb"], key: "box-sizing", value: "border-box" } -}); - -const meta = { - module: "box-sizing" -}; - -module.exports = config => globalConfig => { - return applyRules({ - config, - globalConfig, - defaultNames, - getRules, - meta: Object.assign({}, meta, config && config.meta) - }); -}; diff --git a/src/modules/box-sizing.ts b/src/modules/box-sizing.ts new file mode 100644 index 0000000..47735cd --- /dev/null +++ b/src/modules/box-sizing.ts @@ -0,0 +1,38 @@ +import applyRules from "../util/applyRules"; + +import { GetRules, Meta, Module } from "../types"; + +export type BoxSizingSupportedTypes = { + [key in keyof typeof defaultNames]?: string; +}; + +export type BoxSizingModuleType = Module; + +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface ConfigVariables {} + +const defaultNames = { + "bxz:cb": "bxzcb", + "bxz:bb": "bxzbb", +}; + +const getRules: GetRules = (names) => ({ + "bxz:cb": { name: names["bxz:cb"], key: "box-sizing", value: "content-box" }, + "bxz:bb": { name: names["bxz:bb"], key: "box-sizing", value: "border-box" }, +}); + +const meta: Meta = { + module: "box-sizing", +}; + +const module: BoxSizingModuleType = (config) => (globalConfig) => { + return applyRules({ + config, + globalConfig, + defaultNames, + getRules, + meta: Object.assign({}, meta, config && config.meta), + }); +}; + +export default module; diff --git a/src/modules/clear.js b/src/modules/clear.js deleted file mode 100644 index 61bbaac..0000000 --- a/src/modules/clear.js +++ /dev/null @@ -1,29 +0,0 @@ -const applyRules = require("../util/applyRules"); - -const defaultNames = { - "cl:n": "cln", - "cl:l": "cll", - "cl:r": "clr", - "cl:b": "clb" -}; - -const getRules = names => ({ - "cl:n": { name: names["cl:n"], key: "clear", value: "none" }, - "cl:l": { name: names["cl:l"], key: "clear", value: "left" }, - "cl:r": { name: names["cl:r"], key: "clear", value: "right" }, - "cl:b": { name: names["cl:b"], key: "clear", value: "both" } -}); - -const meta = { - module: "clear" -}; - -module.exports = config => globalConfig => { - return applyRules({ - config, - globalConfig, - defaultNames, - getRules, - meta: Object.assign({}, meta, config && config.meta) - }); -}; diff --git a/src/modules/clear.ts b/src/modules/clear.ts new file mode 100644 index 0000000..fd2c6ca --- /dev/null +++ b/src/modules/clear.ts @@ -0,0 +1,42 @@ +import applyRules from "../util/applyRules"; + +import { GetRules, GenericObject, Meta, Module } from "../types"; + +export type ClearSupportedTypes = { + [key in keyof typeof defaultNames]?: string; +}; + +export type ClearModuleType = Module; + +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface ConfigVariables {} + +const defaultNames = { + "cl:n": "cln", + "cl:l": "cll", + "cl:r": "clr", + "cl:b": "clb", +}; + +const getRules: GetRules = (names) => ({ + "cl:n": { name: names["cl:n"], key: "clear", value: "none" }, + "cl:l": { name: names["cl:l"], key: "clear", value: "left" }, + "cl:r": { name: names["cl:r"], key: "clear", value: "right" }, + "cl:b": { name: names["cl:b"], key: "clear", value: "both" }, +}); + +const meta: Meta = { + module: "clear", +}; + +const module: ClearModuleType = (config) => (globalConfig) => { + return applyRules({ + config, + globalConfig, + defaultNames, + getRules, + meta: Object.assign({}, meta, config && config.meta), + }); +}; + +export default module; diff --git a/src/modules/colors.js b/src/modules/colors.js deleted file mode 100644 index 7b277a2..0000000 --- a/src/modules/colors.js +++ /dev/null @@ -1,59 +0,0 @@ -const applyRules = require("../util/applyRules"); - -const defaultNames = { - c: "c", - bgc: "bgc", - bdc: "bdc", - bdtc: "bdtc", - bdrc: "bdrc", - bdbc: "bdbc", - bdlc: "bdlc" -}; - -const getRules = (names, cfg) => ({ - c: { name: names["c"], key: "color", value: cfg.colorValues }, - bgc: { - name: names["bgc"], - key: "background-color", - value: cfg.backgroundColorValues - }, - bdc: { - name: names["bdc"], - key: "border-color", - value: cfg.borderColorValues - }, - bdtc: { - name: names["bdtc"], - key: "border-top-color", - value: cfg.borderColorValues - }, - bdrc: { - name: names["bdrc"], - key: "border-right-color", - value: cfg.borderColorValues - }, - bdbc: { - name: names["bdbc"], - key: "border-bottom-color", - value: cfg.borderColorValues - }, - bdlc: { - name: names["bdlc"], - key: "border-left-color", - value: cfg.borderColorValues - } -}); - -const meta = { - module: "colors" -}; - -module.exports = config => globalConfig => { - return applyRules({ - config, - globalConfig, - defaultNames, - getRules, - meta: Object.assign({}, meta, config && config.meta) - }); -}; diff --git a/src/modules/colors.ts b/src/modules/colors.ts new file mode 100644 index 0000000..55e19b7 --- /dev/null +++ b/src/modules/colors.ts @@ -0,0 +1,75 @@ +import applyRules from "../util/applyRules"; + +import { GetRules, GenericObject, Meta, Module } from "../types"; + +export type ColorsSupportedTypes = { + [key in keyof typeof defaultNames]?: string; +}; + +export type ColorsModuleType = Module; + +export interface ConfigVariables { + colorValues?: GenericObject | string[]; + backgroundColorValues?: GenericObject | string[]; + borderColorValues?: GenericObject | string[]; +} + +const defaultNames = { + c: "c", + bgc: "bgc", + bdc: "bdc", + bdtc: "bdtc", + bdrc: "bdrc", + bdbc: "bdbc", + bdlc: "bdlc", +}; + +const getRules: GetRules = (names, cfg) => ({ + c: { name: names["c"], key: "color", value: cfg.colorValues }, + bgc: { + name: names["bgc"], + key: "background-color", + value: cfg.backgroundColorValues, + }, + bdc: { + name: names["bdc"], + key: "border-color", + value: cfg.borderColorValues, + }, + bdtc: { + name: names["bdtc"], + key: "border-top-color", + value: cfg.borderColorValues, + }, + bdrc: { + name: names["bdrc"], + key: "border-right-color", + value: cfg.borderColorValues, + }, + bdbc: { + name: names["bdbc"], + key: "border-bottom-color", + value: cfg.borderColorValues, + }, + bdlc: { + name: names["bdlc"], + key: "border-left-color", + value: cfg.borderColorValues, + }, +}); + +const meta: Meta = { + module: "colors", +}; + +const module: ColorsModuleType = (config) => (globalConfig) => { + return applyRules({ + config, + globalConfig, + defaultNames, + getRules, + meta: Object.assign({}, meta, config && config.meta), + }); +}; + +export default module; diff --git a/src/modules/cursor.js b/src/modules/cursor.ts similarity index 56% rename from src/modules/cursor.js rename to src/modules/cursor.ts index 4b06d66..213f676 100644 --- a/src/modules/cursor.js +++ b/src/modules/cursor.ts @@ -1,4 +1,15 @@ -const applyRules = require("../util/applyRules"); +import applyRules from "../util/applyRules"; + +import { GetRules, GenericObject, Meta, Module } from "../types"; + +export type CursorSupportedTypes = { + [key in keyof typeof defaultNames]?: string; +}; + +export type CursorModuleType = Module; + +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface ConfigVariables {} const defaultNames = { "cur:a": "cura", @@ -8,10 +19,10 @@ const defaultNames = { "cur:he": "curhe", "cur:m": "curm", "cur:p": "curp", - "cur:t": "curt" + "cur:t": "curt", }; -const getRules = names => ({ +const getRules: GetRules = (names) => ({ "cur:a": { name: names["cur:a"], key: "cursor", value: "auto" }, "cur:d": { name: names["cur:d"], key: "cursor", value: "default" }, "cur:c": { name: names["cur:c"], key: "cursor", value: "crosshair" }, @@ -19,19 +30,21 @@ const getRules = names => ({ "cur:he": { name: names["cur:he"], key: "cursor", value: "help" }, "cur:m": { name: names["cur:m"], key: "cursor", value: "move" }, "cur:p": { name: names["cur:p"], key: "cursor", value: "pointer" }, - "cur:t": { name: names["cur:t"], key: "cursor", value: "text" } + "cur:t": { name: names["cur:t"], key: "cursor", value: "text" }, }); -const meta = { - module: "cursor" +const meta: Meta = { + module: "cursor", }; -module.exports = config => globalConfig => { +const module: CursorModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, defaultNames, getRules, - meta: Object.assign({}, meta, config && config.meta) + meta: Object.assign({}, meta, config && config.meta), }); }; + +export default module; diff --git a/src/modules/display.js b/src/modules/display.ts similarity index 75% rename from src/modules/display.js rename to src/modules/display.ts index 49bf8c1..88722d4 100644 --- a/src/modules/display.js +++ b/src/modules/display.ts @@ -1,4 +1,15 @@ -const applyRules = require("../util/applyRules"); +import applyRules from "../util/applyRules"; + +import { GetRules, GenericObject, Meta, Module } from "../types"; + +export type DisplaySupportedTypes = { + [key in keyof typeof defaultNames]?: string; +}; + +export type DisplayModuleType = Module; + +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface ConfigVariables {} const defaultNames = { "d:n": "dn", @@ -25,10 +36,10 @@ const defaultNames = { "d:rbb": "drbb", "d:rbbg": "drbbg", "d:rbt": "drbt", - "d:rbtg": "drbtg" + "d:rbtg": "drbtg", }; -const getRules = names => ({ +const getRules: GetRules = (names) => ({ "d:n": { name: names["d:n"], key: "display", value: "none" }, "d:b": { name: names["d:b"], key: "display", value: "block" }, "d:f": { name: names["d:f"], key: "display", value: "flex" }, @@ -46,17 +57,17 @@ const getRules = names => ({ "d:tbclg": { name: names["d:tbclg"], key: "display", - value: "table-column-group" + value: "table-column-group", }, "d:tbhg": { name: names["d:tbhg"], key: "display", - value: "table-header-group" + value: "table-header-group", }, "d:tbfg": { name: names["d:tbfg"], key: "display", - value: "table-footer-group" + value: "table-footer-group", }, "d:tbr": { name: names["d:tbr"], key: "display", value: "table-row" }, "d:tbrg": { name: names["d:tbrg"], key: "display", value: "table-row-group" }, @@ -65,19 +76,21 @@ const getRules = names => ({ "d:rbb": { name: names["d:rbb"], key: "display", value: "ruby-base" }, "d:rbbg": { name: names["d:rbbg"], key: "display", value: "ruby-base-group" }, "d:rbt": { name: names["d:rbt"], key: "display", value: "ruby-text" }, - "d:rbtg": { name: names["d:rbtg"], key: "display", value: "ruby-text-group" } + "d:rbtg": { name: names["d:rbtg"], key: "display", value: "ruby-text-group" }, }); -const meta = { - module: "display" +const meta: Meta = { + module: "display", }; -module.exports = config => globalConfig => { +const module: DisplayModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, defaultNames, getRules, - meta: Object.assign({}, meta, config && config.meta) + meta: Object.assign({}, meta, config && config.meta), }); }; + +export default module; diff --git a/src/modules/flexbox.js b/src/modules/flexbox.ts similarity index 80% rename from src/modules/flexbox.js rename to src/modules/flexbox.ts index 81942c7..965ac0d 100644 --- a/src/modules/flexbox.js +++ b/src/modules/flexbox.ts @@ -1,4 +1,17 @@ -const applyRules = require("../util/applyRules"); +import applyRules from "../util/applyRules"; + +import { GetRules, GenericObject, Meta, Module } from "../types"; + +export type FlexBoxSupportedTypes = { + [key in keyof typeof defaultNames]?: string; +}; + +export type FlexBoxModuleType = Module; + +export interface ConfigVariables { + flexBasisValues?: GenericObject | string[]; + orderValues?: GenericObject | string[]; +} const defaultNames = { "fx:r": "fx:r", @@ -40,10 +53,10 @@ const defaultNames = { "ac:sa": "acsa", "ac:sb": "acsb", "ac:se": "acse", - ord: "ord" + ord: "ord", }; -const getRules = (names, cfg) => ({ +const getRules: GetRules = (names, cfg) => ({ "fx:r": { name: names["fx:r"], key: "flex", value: "0 0 auto" }, "fx:a": { name: names["fx:a"], key: "flex", value: "1 1 auto" }, "fx:n": { name: names["fx:n"], key: "flex", value: "none" }, @@ -52,13 +65,13 @@ const getRules = (names, cfg) => ({ "fxd:cr": { name: names["fxd:cr"], key: "flex-direction", - value: "column-reverse" + value: "column-reverse", }, "fxd:r": { name: names["fxd:r"], key: "flex-direction", value: "row" }, "fxd:rr": { name: names["fxd:rr"], key: "flex-direction", - value: "row-reverse" + value: "row-reverse", }, "fxg:0": { name: names["fxg:0"], key: "flex-grow", value: "0" }, "fxg:1": { name: names["fxg:1"], key: "flex-grow", value: "1" }, @@ -83,22 +96,22 @@ const getRules = (names, cfg) => ({ "jc:fs": { name: names["jc:fs"], key: "justify-content", - value: "flex-start" + value: "flex-start", }, "jc:sa": { name: names["jc:sa"], key: "justify-content", - value: "space-around" + value: "space-around", }, "jc:sb": { name: names["jc:sb"], key: "justify-content", - value: "space-between" + value: "space-between", }, "jc:se": { name: names["jc:se"], key: "justify-content", - value: "space-evenly" + value: "space-evenly", }, "ac:c": { name: names["ac:c"], key: "align-content", value: "center" }, "ac:s": { name: names["ac:s"], key: "align-content", value: "stretch" }, @@ -107,31 +120,33 @@ const getRules = (names, cfg) => ({ "ac:sa": { name: names["ac:sa"], key: "align-content", - value: "space-around" + value: "space-around", }, "ac:sb": { name: names["ac:sb"], key: "align-content", - value: "space-between" + value: "space-between", }, "ac:se": { name: names["ac:se"], key: "align-content", - value: "space-evenly" + value: "space-evenly", }, - ord: { name: names["ord"], key: "order", value: cfg.orderValues } + ord: { name: names["ord"], key: "order", value: cfg.orderValues }, }); -const meta = { - module: "flexbox" +const meta: Meta = { + module: "flexbox", }; -module.exports = config => globalConfig => { +const module: FlexBoxModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, defaultNames, getRules, - meta: Object.assign({}, meta, config && config.meta) + meta: Object.assign({}, meta, config && config.meta), }); }; + +export default module; diff --git a/src/modules/float.js b/src/modules/float.js deleted file mode 100644 index 09e8970..0000000 --- a/src/modules/float.js +++ /dev/null @@ -1,27 +0,0 @@ -const applyRules = require("../util/applyRules"); - -const defaultNames = { - "fl:n": "fln", - "fl:l": "fll", - "fl:r": "flr" -}; - -const getRules = names => ({ - "fl:n": { name: names["fl:n"], key: "float", value: "none" }, - "fl:l": { name: names["fl:l"], key: "float", value: "left" }, - "fl:r": { name: names["fl:r"], key: "float", value: "right" } -}); - -const meta = { - module: "float" -}; - -module.exports = config => globalConfig => { - return applyRules({ - config, - globalConfig, - defaultNames, - getRules, - meta: Object.assign({}, meta, config && config.meta) - }); -}; diff --git a/src/modules/float.ts b/src/modules/float.ts new file mode 100644 index 0000000..ec89d59 --- /dev/null +++ b/src/modules/float.ts @@ -0,0 +1,40 @@ +import applyRules from "../util/applyRules"; + +import { GetRules, GenericObject, Meta, Module } from "../types"; + +export type FloatSupportedTypes = { + [key in keyof typeof defaultNames]?: string; +}; + +export type FloatModuleType = Module; + +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface ConfigVariables {} + +const defaultNames = { + "fl:n": "fln", + "fl:l": "fll", + "fl:r": "flr", +}; + +const getRules: GetRules = (names) => ({ + "fl:n": { name: names["fl:n"], key: "float", value: "none" }, + "fl:l": { name: names["fl:l"], key: "float", value: "left" }, + "fl:r": { name: names["fl:r"], key: "float", value: "right" }, +}); + +const meta: Meta = { + module: "float", +}; + +const module: FloatModuleType = (config) => (globalConfig) => { + return applyRules({ + config, + globalConfig, + defaultNames, + getRules, + meta: Object.assign({}, meta, config && config.meta), + }); +}; + +export default module; diff --git a/src/modules/font.js b/src/modules/font.ts similarity index 75% rename from src/modules/font.js rename to src/modules/font.ts index 54aa404..0c1ecca 100644 --- a/src/modules/font.js +++ b/src/modules/font.ts @@ -1,4 +1,19 @@ -const applyRules = require("../util/applyRules"); +import applyRules from "../util/applyRules"; + +import { GetRules, GenericObject, Meta, Module } from "../types"; + +export type FontSupportedTypes = { + [key in keyof typeof defaultNames]?: string; +}; + +export type FontModuleType = Module; + +export interface ConfigVariables { + fontWeightValues?: GenericObject | string[]; + fontSizeValues?: GenericObject | string[]; + fontSizeAdjustValues?: GenericObject | string[]; + fontFamilyValues?: GenericObject | string[]; +} const defaultNames = { fw: "fw", @@ -35,10 +50,10 @@ const defaultNames = { "fst:se": "fstse", "fst:e": "fste", "fst:ee": "fstee", - "fst:ue": "fstue" + "fst:ue": "fstue", }; -const getRules = (names, cfg) => ({ +const getRules: GetRules = (names, cfg) => ({ fw: { name: names["fw"], key: "font-weight", value: cfg.fontWeightValues }, "fw:n": { name: names["fw:n"], key: "font-weight", value: "normal" }, "fw:b": { name: names["fw:b"], key: "font-weight", value: "bold" }, @@ -53,7 +68,7 @@ const getRules = (names, cfg) => ({ fza: { name: names["fza"], key: "font-size-adjust", - value: cfg.fontSizeAdjustValues + value: cfg.fontSizeAdjustValues, }, "fza:n": { name: names["fza:n"], key: "font-size-adjust", value: "none" }, ff: { name: names["ff"], key: "font-family", value: cfg.fontFamilyValues }, @@ -65,17 +80,17 @@ const getRules = (names, cfg) => ({ "ff:a": { name: names["ff:a"], key: "font-family", - value: 'Arial, "Helvetica Neue", Helvetica, sans-serif' + value: 'Arial, "Helvetica Neue", Helvetica, sans-serif', }, "ff:t": { name: names["ff:t"], key: "font-family", - value: '"Times New Roman", Times, Baskerville, Georgia, serif' + value: '"Times New Roman", Times, Baskerville, Georgia, serif', }, "ff:v": { name: names["ff:v"], key: "font-family", - value: "Verdana, Geneva, sans-serif" + value: "Verdana, Geneva, sans-serif", }, "fef:n": { name: names["fef:n"], key: "font-effect", value: "none" }, "fef:eg": { name: names["fef:eg"], key: "font-effect", value: "engrave" }, @@ -85,47 +100,49 @@ const getRules = (names, cfg) => ({ "fst:uc": { name: names["fst:uc"], key: "font-stretch", - value: "ultra-condensed" + value: "ultra-condensed", }, "fst:ec": { name: names["fst:ec"], key: "font-stretch", - value: "extra-condensed" + value: "extra-condensed", }, "fst:c": { name: names["fst:c"], key: "font-stretch", value: "condensed" }, "fst:sc": { name: names["fst:sc"], key: "font-stretch", - value: "semi-condensed" + value: "semi-condensed", }, "fst:se": { name: names["fst:se"], key: "font-stretch", - value: "semi-expanded" + value: "semi-expanded", }, "fst:e": { name: names["fst:e"], key: "font-stretch", value: "expanded" }, "fst:ee": { name: names["fst:ee"], key: "font-stretch", - value: "extra-expanded" + value: "extra-expanded", }, "fst:ue": { name: names["fst:ue"], key: "font-stretch", - value: "ultra-expanded" - } + value: "ultra-expanded", + }, }); -const meta = { - module: "font" +const meta: Meta = { + module: "font", }; -module.exports = config => globalConfig => { +const module: FontModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, defaultNames, getRules, - meta: Object.assign({}, meta, config && config.meta) + meta: Object.assign({}, meta, config && config.meta), }); }; + +export default module; diff --git a/src/modules/grid.js b/src/modules/grid.ts similarity index 100% rename from src/modules/grid.js rename to src/modules/grid.ts diff --git a/src/modules/height.js b/src/modules/height.js deleted file mode 100644 index 398f7c1..0000000 --- a/src/modules/height.js +++ /dev/null @@ -1,31 +0,0 @@ -const applyRules = require("../util/applyRules"); - -const defaultNames = { - h: "h", - "h:a": "wa", - mah: "mah", - "mah:n": "mahn", - mih: "mih" -}; - -const getRules = (names, cfg) => ({ - h: { name: names["h"], key: "height", value: cfg.heightValues }, - "h:a": { name: names["h:a"], key: "height", value: "auto" }, - mah: { name: names["mah"], key: "max-height", value: cfg.maxHeightValues }, - "mah:n": { name: names["mah:n"], key: "max-height", value: "none" }, - mih: { name: names["mih"], key: "min-height", value: cfg.minHeightValues } -}); - -const meta = { - module: "height" -}; - -module.exports = config => globalConfig => { - return applyRules({ - config, - globalConfig, - defaultNames, - getRules, - meta: Object.assign({}, meta, config && config.meta) - }); -}; diff --git a/src/modules/height.ts b/src/modules/height.ts new file mode 100644 index 0000000..67a1490 --- /dev/null +++ b/src/modules/height.ts @@ -0,0 +1,47 @@ +import applyRules from "../util/applyRules"; + +import { GetRules, GenericObject, Meta, Module } from "../types"; + +export type HeightSupportedTypes = { + [key in keyof typeof defaultNames]?: string; +}; + +export type HeightModuleType = Module; + +export interface ConfigVariables { + heightValues?: GenericObject | string[]; + maxHeightValues?: GenericObject | string[]; + minHeightValues?: GenericObject | string[]; +} + +const defaultNames = { + h: "h", + "h:a": "wa", + mah: "mah", + "mah:n": "mahn", + mih: "mih", +}; + +const getRules: GetRules = (names, cfg) => ({ + h: { name: names["h"], key: "height", value: cfg.heightValues }, + "h:a": { name: names["h:a"], key: "height", value: "auto" }, + mah: { name: names["mah"], key: "max-height", value: cfg.maxHeightValues }, + "mah:n": { name: names["mah:n"], key: "max-height", value: "none" }, + mih: { name: names["mih"], key: "min-height", value: cfg.minHeightValues }, +}); + +const meta: Meta = { + module: "height", +}; + +const module: HeightModuleType = (config) => (globalConfig) => { + return applyRules({ + config, + globalConfig, + defaultNames, + getRules, + meta: Object.assign({}, meta, config && config.meta), + }); +}; + +export default module; diff --git a/src/modules/index.js b/src/modules/index.js deleted file mode 100644 index 7d79d58..0000000 --- a/src/modules/index.js +++ /dev/null @@ -1,77 +0,0 @@ -const animation = require("./animation"); -const backgroundImage = require("./background-image"); -const border = require("./border"); -const boxShadow = require("./box-shadow"); -const boxSizing = require("./box-sizing"); -const clear = require("./clear"); -const colors = require("./colors"); -const cursor = require("./cursor"); -const display = require("./display"); -const flexbox = require("./flexbox"); -const float = require("./float"); -const font = require("./font"); -const height = require("./height"); -const letterSpacing = require("./letter-spacing"); -const lineHeight = require("./line-height"); -const listStyle = require("./list-style"); -const opacity = require("./opacity"); -const outline = require("./outline"); -const overflow = require("./overflow"); -const pointerEvents = require("./pointer-events"); -const position = require("./position"); -const resize = require("./resize"); -const series = require("./series"); -const single = require("./single"); -const spacing = require("./spacing"); -const textAlign = require("./text-align"); -const textDecoration = require("./text-decoration"); -const textOverflow = require("./text-overflow"); -const textTransform = require("./text-transform"); -const transform = require("./transform"); -const transition = require("./transition"); -const verticalAlign = require("./vertical-align"); -const visibility = require("./visibility"); -const whiteSpace = require("./white-space"); -const width = require("./width"); -const useSelect = require("./user-select"); -const zIndex = require("./z-index"); - -module.exports = { - animation, - backgroundImage, - border, - boxShadow, - boxSizing, - clear, - colors, - cursor, - display, - flexbox, - float, - font, - height, - letterSpacing, - lineHeight, - listStyle, - opacity, - outline, - overflow, - pointerEvents, - position, - resize, - series, - single, - spacing, - textAlign, - textDecoration, - textOverflow, - textTransform, - transform, - transition, - verticalAlign, - visibility, - whiteSpace, - width, - useSelect, - zIndex -}; diff --git a/src/modules/index.ts b/src/modules/index.ts new file mode 100644 index 0000000..5e0ec25 --- /dev/null +++ b/src/modules/index.ts @@ -0,0 +1,37 @@ +export { default as animation } from "./animation"; +export { default as backgroundImage } from "./background-image"; +export { default as border } from "./border"; +export { default as boxShadow } from "./box-shadow"; +export { default as boxSizing } from "./box-sizing"; +export { default as clear } from "./clear"; +export { default as colors } from "./colors"; +export { default as cursor } from "./cursor"; +export { default as display } from "./display"; +export { default as flexbox } from "./flexbox"; +export { default as float } from "./float"; +export { default as font } from "./font"; +export { default as height } from "./height"; +export { default as letterSpacing } from "./letter-spacing"; +export { default as lineHeight } from "./line-height"; +export { default as listStyle } from "./list-style"; +export { default as opacity } from "./opacity"; +export { default as outline } from "./outline"; +export { default as overflow } from "./overflow"; +export { default as pointerEvents } from "./pointer-events"; +export { default as position } from "./position"; +export { default as resize } from "./resize"; +export { default as series } from "./series"; +export { default as single } from "./single"; +export { default as spacing } from "./spacing"; +export { default as textAlign } from "./text-align"; +export { default as textDecoration } from "./text-decoration"; +export { default as textOverflow } from "./text-overflow"; +export { default as textTransform } from "./text-transform"; +export { default as transform } from "./transform"; +export { default as transition } from "./transition"; +export { default as verticalAlign } from "./vertical-align"; +export { default as visibility } from "./visibility"; +export { default as whiteSpace } from "./white-space"; +export { default as width } from "./width"; +export { default as useSelect } from "./user-select"; +export { default as zIndex } from "./z-index"; diff --git a/src/modules/letter-spacing.js b/src/modules/letter-spacing.js deleted file mode 100644 index 1463906..0000000 --- a/src/modules/letter-spacing.js +++ /dev/null @@ -1,25 +0,0 @@ -const applyRules = require("../util/applyRules"); - -const defaultNames = { - lts: "lts", - "lts:n": "lts:n" -}; - -const getRules = (names, cfg) => ({ - lts: { name: names["lts"], key: "letter-spacing", value: cfg.values }, - "lts:n": { name: names["lts:n"], key: "letter-spacing", value: "normal" } -}); - -const meta = { - module: "letter-spacing" -}; - -module.exports = config => globalConfig => { - return applyRules({ - config, - globalConfig, - defaultNames, - getRules, - meta: Object.assign({}, meta, config && config.meta) - }); -}; diff --git a/src/modules/letter-spacing.ts b/src/modules/letter-spacing.ts new file mode 100644 index 0000000..2fa0690 --- /dev/null +++ b/src/modules/letter-spacing.ts @@ -0,0 +1,39 @@ +import applyRules from "../util/applyRules"; + +import { GetRules, GenericObject, Meta, Module } from "../types"; + +export type LetterSpacingSupportedTypes = { + [key in keyof typeof defaultNames]?: string; +}; + +export type LetterSpacingModuleType = Module; + +export interface ConfigVariables { + values: GenericObject | string[]; +} + +const defaultNames = { + lts: "lts", + "lts:n": "lts:n", +}; + +const getRules: GetRules = (names, cfg) => ({ + lts: { name: names["lts"], key: "letter-spacing", value: cfg.values }, + "lts:n": { name: names["lts:n"], key: "letter-spacing", value: "normal" }, +}); + +const meta: Meta = { + module: "letter-spacing", +}; + +const module: LetterSpacingModuleType = (config) => (globalConfig) => { + return applyRules({ + config, + globalConfig, + defaultNames, + getRules, + meta: Object.assign({}, meta, config && config.meta), + }); +}; + +export default module; diff --git a/src/modules/line-height.js b/src/modules/line-height.js deleted file mode 100644 index 31b222d..0000000 --- a/src/modules/line-height.js +++ /dev/null @@ -1,23 +0,0 @@ -const applyRules = require("../util/applyRules"); - -const defaultNames = { - lh: "lh" -}; - -const getRules = (names, cfg) => ({ - lh: { name: names["lh"], key: "line-height", value: cfg.values } -}); - -const meta = { - module: "line-height" -}; - -module.exports = config => globalConfig => { - return applyRules({ - config, - globalConfig, - defaultNames, - getRules, - meta: Object.assign({}, meta, config && config.meta) - }); -}; diff --git a/src/modules/line-height.ts b/src/modules/line-height.ts new file mode 100644 index 0000000..5f42f30 --- /dev/null +++ b/src/modules/line-height.ts @@ -0,0 +1,37 @@ +import applyRules from "../util/applyRules"; + +import { GetRules, GenericObject, Meta, Module } from "../types"; + +export type LineHeightSupportedTypes = { + [key in keyof typeof defaultNames]?: string; +}; + +export type LineHeightModuleType = Module; + +export interface ConfigVariables { + values: GenericObject | string[]; +} + +const defaultNames = { + lh: "lh", +}; + +const getRules: GetRules = (names, cfg) => ({ + lh: { name: names["lh"], key: "line-height", value: cfg.values }, +}); + +const meta: Meta = { + module: "line-height", +}; + +const module: LineHeightModuleType = (config) => (globalConfig) => { + return applyRules({ + config, + globalConfig, + defaultNames, + getRules, + meta: Object.assign({}, meta, config && config.meta), + }); +}; + +export default module; diff --git a/src/modules/list-style.js b/src/modules/list-style.js deleted file mode 100644 index 1df82ec..0000000 --- a/src/modules/list-style.js +++ /dev/null @@ -1,27 +0,0 @@ -const applyRules = require("../util/applyRules"); - -const defaultNames = { - "li:sy": "lisy" -}; - -const getRules = (names, cfg) => ({ - "li:sy": { - name: names["li:sy"], - key: "list-style", - value: cfg.listStyleValues - } -}); - -const meta = { - module: "list-style" -}; - -module.exports = config => globalConfig => { - return applyRules({ - config, - globalConfig, - defaultNames, - getRules, - meta: Object.assign({}, meta, config && config.meta) - }); -}; diff --git a/src/modules/list-style.ts b/src/modules/list-style.ts new file mode 100644 index 0000000..afe994d --- /dev/null +++ b/src/modules/list-style.ts @@ -0,0 +1,41 @@ +import applyRules from "../util/applyRules"; + +import { GetRules, GenericObject, Meta, Module } from "../types"; + +export type ListStyleSupportedTypes = { + [key in keyof typeof defaultNames]?: string; +}; + +export type ListStyleModuleType = Module; + +export interface ConfigVariables { + listStyleValues?: GenericObject | string[]; +} + +const defaultNames = { + "li:sy": "lisy", +}; + +const getRules: GetRules = (names, cfg) => ({ + "li:sy": { + name: names["li:sy"], + key: "list-style", + value: cfg.listStyleValues, + }, +}); + +const meta: Meta = { + module: "list-style", +}; + +const module: ListStyleModuleType = (config) => (globalConfig) => { + return applyRules({ + config, + globalConfig, + defaultNames, + getRules, + meta: Object.assign({}, meta, config && config.meta), + }); +}; + +export default module; diff --git a/src/modules/opacity.js b/src/modules/opacity.js deleted file mode 100644 index 17acbf2..0000000 --- a/src/modules/opacity.js +++ /dev/null @@ -1,23 +0,0 @@ -const applyRules = require("../util/applyRules"); - -const defaultNames = { - op: "op" -}; - -const getRules = (names, cfg) => ({ - op: { name: names["op"], key: "opacity", value: cfg.values } -}); - -const meta = { - module: "opacity" -}; - -module.exports = config => globalConfig => { - return applyRules({ - config, - globalConfig, - defaultNames, - getRules, - meta: Object.assign({}, meta, config && config.meta) - }); -}; diff --git a/src/modules/opacity.ts b/src/modules/opacity.ts new file mode 100644 index 0000000..a4a22b7 --- /dev/null +++ b/src/modules/opacity.ts @@ -0,0 +1,37 @@ +import applyRules from "../util/applyRules"; + +import { GetRules, GenericObject, Meta, Module } from "../types"; + +export type OpacitySupportedTypes = { + [key in keyof typeof defaultNames]?: string; +}; + +export type OpacityModuleType = Module; + +export interface ConfigVariables { + values?: GenericObject | string[]; +} + +const defaultNames = { + op: "op", +}; + +const getRules: GetRules = (names, cfg) => ({ + op: { name: names["op"], key: "opacity", value: cfg.values }, +}); + +const meta: Meta = { + module: "opacity", +}; + +const module: OpacityModuleType = (config) => (globalConfig) => { + return applyRules({ + config, + globalConfig, + defaultNames, + getRules, + meta: Object.assign({}, meta, config && config.meta), + }); +}; + +export default module; diff --git a/src/modules/outline.js b/src/modules/outline.ts similarity index 50% rename from src/modules/outline.js rename to src/modules/outline.ts index bf958d6..b64a145 100644 --- a/src/modules/outline.js +++ b/src/modules/outline.ts @@ -1,4 +1,19 @@ -const applyRules = require("../util/applyRules"); +import applyRules from "../util/applyRules"; + +import { GetRules, GenericObject, Meta, Module } from "../types"; + +export type OutlineSupportedTypes = { + [key in keyof typeof defaultNames]?: string; +}; + +export type OutlineModuleType = Module; + +export interface ConfigVariables { + outlineValues?: GenericObject | string[]; + outlineOffsetValues?: GenericObject | string[]; + outlineWidthValues?: GenericObject | string[]; + outlineColorValues?: GenericObject | string[]; +} const defaultNames = { ol: "ol", @@ -9,21 +24,21 @@ const defaultNames = { "olw:m": "olwm", "olw:tk": "olwtk", olc: "olc", - "olc:i": "olci" + "olc:i": "olci", }; -const getRules = (names, cfg) => ({ +const getRules: GetRules = (names, cfg) => ({ ol: { name: names["ol"], key: "outline", value: cfg.outlineValues }, "ol:n": { name: names["ol:n"], key: "outline", value: "none" }, olo: { name: names["olo"], key: "outline-offset", - value: cfg.outlineOffsetValues + value: cfg.outlineOffsetValues, }, olw: { name: names["olw"], key: "outline-width", - value: cfg.outlineWidthValues + value: cfg.outlineWidthValues, }, "olw:tn": { name: names["olw:tn"], key: "outline-width", value: "thin" }, "olw:m": { name: names["olw:m"], key: "outline-width", value: "medium" }, @@ -31,21 +46,23 @@ const getRules = (names, cfg) => ({ olc: { name: names["olc"], key: "outline-color", - value: cfg.outlineColorValues + value: cfg.outlineColorValues, }, - "olc:i": { name: names["olc:i"], key: "outline-color", value: "invert" } + "olc:i": { name: names["olc:i"], key: "outline-color", value: "invert" }, }); -const meta = { - module: "outline" +const meta: Meta = { + module: "outline", }; -module.exports = config => globalConfig => { +const module: OutlineModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, defaultNames, getRules, - meta: Object.assign({}, meta, config && config.meta) + meta: Object.assign({}, meta, config && config.meta), }); }; + +export default module; diff --git a/src/modules/overflow.js b/src/modules/overflow.ts similarity index 71% rename from src/modules/overflow.js rename to src/modules/overflow.ts index ba14c2a..923b437 100644 --- a/src/modules/overflow.js +++ b/src/modules/overflow.ts @@ -1,4 +1,15 @@ -const applyRules = require("../util/applyRules"); +import applyRules from "../util/applyRules"; + +import { GetRules, GenericObject, Meta, Module } from "../types"; + +export type OverflowSupportedTypes = { + [key in keyof typeof defaultNames]?: string; +}; + +export type OverflowModuleType = Module; + +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface ConfigVariables {} const defaultNames = { "ov:v": "ovv", @@ -17,10 +28,10 @@ const defaultNames = { "ovs:s": "ovss", "ovs:p": "ovsp", "ovs:m": "ovsm", - "ovs:mq": "ovsmq" + "ovs:mq": "ovsmq", }; -const getRules = names => ({ +const getRules: GetRules = (names) => ({ "ov:v": { name: names["ov:v"], key: "overflow", value: "visible" }, "ov:h": { name: names["ov:h"], key: "overflow", value: "hidden" }, "ov:s": { name: names["ov:s"], key: "overflow", value: "scroll" }, @@ -37,19 +48,21 @@ const getRules = names => ({ "ovs:s": { name: names["ovs:s"], key: "overflow-style", value: "scrollbar" }, "ovs:p": { name: names["ovs:p"], key: "overflow-style", value: "panner" }, "ovs:m": { name: names["ovs:m"], key: "overflow-style", value: "move" }, - "ovs:mq": { name: names["ovs:mq"], key: "overflow-style", value: "marquee" } + "ovs:mq": { name: names["ovs:mq"], key: "overflow-style", value: "marquee" }, }); -const meta = { - module: "overflow" +const meta: Meta = { + module: "overflow", }; -module.exports = config => globalConfig => { +const module: OverflowModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, defaultNames, getRules, - meta: Object.assign({}, meta, config && config.meta) + meta: Object.assign({}, meta, config && config.meta), }); }; + +export default module; diff --git a/src/modules/pointer-events.js b/src/modules/pointer-events.js deleted file mode 100644 index 63edbea..0000000 --- a/src/modules/pointer-events.js +++ /dev/null @@ -1,25 +0,0 @@ -const applyRules = require("../util/applyRules"); - -const defaultNames = { - "pe:n": "pe:n", - "pe:a": "pe:a" -}; - -const getRules = names => ({ - "pe:n": { name: names["pe:n"], key: "pointer-events", value: "none" }, - "pe:a": { name: names["pe:a"], key: "pointer-events", value: "auto" } -}); - -const meta = { - module: "pointer-events" -}; - -module.exports = config => globalConfig => { - return applyRules({ - config, - globalConfig, - defaultNames, - getRules, - meta: Object.assign({}, meta, config && config.meta) - }); -}; diff --git a/src/modules/pointer-events.ts b/src/modules/pointer-events.ts new file mode 100644 index 0000000..f9312dc --- /dev/null +++ b/src/modules/pointer-events.ts @@ -0,0 +1,38 @@ +import applyRules from "../util/applyRules"; + +import { GetRules, GenericObject, Meta, Module } from "../types"; + +export type PointerEventsSupportedTypes = { + [key in keyof typeof defaultNames]?: string; +}; + +export type PointerEventsModuleType = Module; + +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface ConfigVariables {} + +const defaultNames = { + "pe:n": "pe:n", + "pe:a": "pe:a", +}; + +const getRules: GetRules = (names) => ({ + "pe:n": { name: names["pe:n"], key: "pointer-events", value: "none" }, + "pe:a": { name: names["pe:a"], key: "pointer-events", value: "auto" }, +}); + +const meta: Meta = { + module: "pointer-events", +}; + +const module: PointerEventsModuleType = (config) => (globalConfig) => { + return applyRules({ + config, + globalConfig, + defaultNames, + getRules, + meta: Object.assign({}, meta, config && config.meta), + }); +}; + +export default module; diff --git a/src/modules/position.js b/src/modules/position.ts similarity index 58% rename from src/modules/position.js rename to src/modules/position.ts index 154c972..c1bef3e 100644 --- a/src/modules/position.js +++ b/src/modules/position.ts @@ -1,4 +1,19 @@ -const applyRules = require("../util/applyRules"); +import applyRules from "../util/applyRules"; + +import { GetRules, GenericObject, Meta, Module } from "../types"; + +export type PositionSupportedTypes = { + [key in keyof typeof defaultNames]?: string; +}; + +export type PositionModuleType = Module; + +export interface ConfigVariables { + topValues?: GenericObject | string; + rightValues?: GenericObject | string; + bottomValues?: GenericObject | string; + leftValues?: GenericObject | string; +} const defaultNames = { "pos:s": "poss", @@ -13,10 +28,10 @@ const defaultNames = { b: "b", "b:a": "ba", l: "l", - "l:a": "la" + "l:a": "la", }; -const getRules = (names, cfg) => ({ +const getRules: GetRules = (names, cfg) => ({ "pos:s": { name: names["pos:s"], key: "position", value: "static" }, "pos:a": { name: names["pos:a"], key: "position", value: "absolute" }, "pos:r": { name: names["pos:r"], key: "position", value: "relative" }, @@ -29,19 +44,21 @@ const getRules = (names, cfg) => ({ b: { name: names["b"], key: "bottom", value: cfg.bottomValues }, "b:a": { name: names["b:a"], key: "bottom", value: "auto" }, l: { name: names["l"], key: "left", value: cfg.leftValues }, - "l:a": { name: names["l:a"], key: "left", value: "auto" } + "l:a": { name: names["l:a"], key: "left", value: "auto" }, }); -const meta = { - module: "position" +const meta: Meta = { + module: "position", }; -module.exports = config => globalConfig => { +const module: PositionModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, defaultNames, getRules, - meta: Object.assign({}, meta, config && config.meta) + meta: Object.assign({}, meta, config && config.meta), }); }; + +export default module; diff --git a/src/modules/resize.js b/src/modules/resize.js deleted file mode 100644 index 29c3afb..0000000 --- a/src/modules/resize.js +++ /dev/null @@ -1,29 +0,0 @@ -const applyRules = require("../util/applyRules"); - -const defaultNames = { - "rsz:n": "rszn", - "rsz:b": "rszb", - "rsz:h": "rszh", - "rsz:v": "rszv" -}; - -const getRules = names => ({ - "rsz:n": { name: names["rsz:n"], key: "resize", value: "none" }, - "rsz:b": { name: names["rsz:b"], key: "resize", value: "both" }, - "rsz:h": { name: names["rsz:h"], key: "resize", value: "horizontal" }, - "rsz:v": { name: names["rsz:v"], key: "resize", value: "vertical" } -}); - -const meta = { - module: "resize" -}; - -module.exports = config => globalConfig => { - return applyRules({ - config, - globalConfig, - defaultNames, - getRules, - meta: Object.assign({}, meta, config && config.meta) - }); -}; diff --git a/src/modules/resize.ts b/src/modules/resize.ts new file mode 100644 index 0000000..7c3c20b --- /dev/null +++ b/src/modules/resize.ts @@ -0,0 +1,42 @@ +import applyRules from "../util/applyRules"; + +import { GetRules, GenericObject, Meta, Module } from "../types"; + +export type ResizeSupportedTypes = { + [key in keyof typeof defaultNames]?: string; +}; + +export type ResizeModuleType = Module; + +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface ConfigVariables {} + +const defaultNames = { + "rsz:n": "rszn", + "rsz:b": "rszb", + "rsz:h": "rszh", + "rsz:v": "rszv", +}; + +const getRules: GetRules = (names) => ({ + "rsz:n": { name: names["rsz:n"], key: "resize", value: "none" }, + "rsz:b": { name: names["rsz:b"], key: "resize", value: "both" }, + "rsz:h": { name: names["rsz:h"], key: "resize", value: "horizontal" }, + "rsz:v": { name: names["rsz:v"], key: "resize", value: "vertical" }, +}); + +const meta: Meta = { + module: "resize", +}; + +const module: ResizeModuleType = (config) => (globalConfig) => { + return applyRules({ + config, + globalConfig, + defaultNames, + getRules, + meta: Object.assign({}, meta, config && config.meta), + }); +}; + +export default module; diff --git a/src/modules/series.js b/src/modules/series.js deleted file mode 100644 index f1be953..0000000 --- a/src/modules/series.js +++ /dev/null @@ -1,41 +0,0 @@ -const defineSeries = require("../util/defineSeries"); -const responsive = require("../util/responsive"); - -const meta = { - module: "series" -}; - -module.exports = config => globalConfig => { - const { - property, - className, - values, - isResponsive = false, - pseudoClasses = [] - } = config; - - const { - seriesSeparator = "", - pseudoClassesSeparator = "", - breakPointSeparator = "", - breakPoints = {} - } = - globalConfig || {}; - - const series = defineSeries(className, property, values, { - seriesSeparator, - pseudoClassesSeparator, - pseudoClasses, - meta - }); - - if (isResponsive) { - return series.concat( - responsive(series, breakPoints, { - breakPointSeparator - }) - ); - } - - return series; -}; diff --git a/src/modules/series.ts b/src/modules/series.ts new file mode 100644 index 0000000..1f991de --- /dev/null +++ b/src/modules/series.ts @@ -0,0 +1,56 @@ +import { Rule, AtRule } from "postcss"; +import defineSeries from "../util/defineSeries"; +import responsive from "../util/responsive"; + +import { PseudoClass, GenericObject, Meta, Module } from "../types"; + +export type SeriesModuleType = Module; + +export interface ConfigVariables { + values?: GenericObject | string[]; +} + +const meta: Meta = { + module: "series", +}; + +const module: SeriesModuleType = (config) => (globalConfig) => { + const { + property, + className, + values, + isResponsive = false, + pseudoClasses = [], + } = config; + + const { + seriesSeparator = "", + pseudoClassesSeparator = "", + breakPointSeparator = "", + breakPoints = {}, + } = globalConfig || {}; + + const series: Array = defineSeries( + className, + property, + values, + { + seriesSeparator, + pseudoClassesSeparator, + pseudoClasses: pseudoClasses as PseudoClass[], + meta, + } + ); + + if (isResponsive) { + return series.concat( + responsive(series as Rule[], breakPoints, { + breakPointSeparator, + }) + ); + } + + return series; +}; + +export default module; diff --git a/src/modules/single.js b/src/modules/single.js deleted file mode 100644 index 33bdafc..0000000 --- a/src/modules/single.js +++ /dev/null @@ -1,24 +0,0 @@ -const defineClass = require("../util/defineClass"); -const responsive = require("../util/responsive"); - -const meta = { - module: "single" -}; - -module.exports = config => globalConfig => { - const { className, props, isResponsive = false } = config || {}; - - const { breakPointSeparator = "", breakPoints = {} } = globalConfig || {}; - - const single = [defineClass(className, props, meta)]; - - if (isResponsive) { - return single.concat( - responsive(single, breakPoints, { - breakPointSeparator - }) - ); - } - - return single; -}; diff --git a/src/modules/single.ts b/src/modules/single.ts new file mode 100644 index 0000000..2f2ce73 --- /dev/null +++ b/src/modules/single.ts @@ -0,0 +1,35 @@ +import { Rule, AtRule } from "postcss"; +import defineClass from "../util/defineClass"; +import responsive from "../util/responsive"; + +import { Meta, Module } from "../types"; + +export type SingleModuleType = Module; + +export interface ConfigVariables { + values?: string[]; +} + +const meta: Meta = { + module: "single", +}; + +const module: SingleModuleType = (config) => (globalConfig) => { + const { className, props, isResponsive = false } = config || {}; + + const { breakPointSeparator = "", breakPoints = {} } = globalConfig || {}; + + const single: Array = [defineClass(className, props, meta)]; + + if (isResponsive) { + return single.concat( + responsive(single as Rule[], breakPoints, { + breakPointSeparator, + }) + ); + } + + return single; +}; + +export default module; diff --git a/src/modules/spacing.js b/src/modules/spacing.ts similarity index 67% rename from src/modules/spacing.js rename to src/modules/spacing.ts index a147d83..5f8e75e 100644 --- a/src/modules/spacing.js +++ b/src/modules/spacing.ts @@ -1,4 +1,17 @@ -const applyRules = require("../util/applyRules"); +import applyRules from "../util/applyRules"; + +import { GetRules, GenericObject, Meta, Module } from "../types"; + +export type SpacingSupportedTypes = { + [key in keyof typeof defaultNames]?: string; +}; + +export type SpacingModuleType = Module; + +export interface ConfigVariables { + marginValues?: GenericObject | string[]; + paddingValues?: GenericObject | string[]; +} const defaultNames = { m: "m", @@ -15,10 +28,10 @@ const defaultNames = { pt: "pt", pr: "pr", pb: "pb", - pl: "pl" + pl: "pl", }; -const getRules = (names, cfg) => ({ +const getRules: GetRules = (names, cfg) => ({ m: { name: names["m"], key: "margin", value: cfg.marginValues }, "m:a": { name: names["m:a"], key: "margin", value: "auto" }, mt: { name: names["mt"], key: "margin-top", value: cfg.marginValues }, @@ -33,19 +46,21 @@ const getRules = (names, cfg) => ({ pt: { name: names["pt"], key: "padding-top", value: cfg.paddingValues }, pr: { name: names["pr"], key: "padding-right", value: cfg.paddingValues }, pb: { name: names["pb"], key: "padding-bottom", value: cfg.paddingValues }, - pl: { name: names["pl"], key: "padding-left", value: cfg.paddingValues } + pl: { name: names["pl"], key: "padding-left", value: cfg.paddingValues }, }); -const meta = { - module: "spacing" +const meta: Meta = { + module: "spacing", }; -module.exports = config => globalConfig => { +const module: SpacingModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, defaultNames, getRules, - meta: Object.assign({}, meta, config && config.meta) + meta: Object.assign({}, meta, config && config.meta), }); }; + +export default module; diff --git a/src/modules/text-align.js b/src/modules/text-align.ts similarity index 56% rename from src/modules/text-align.js rename to src/modules/text-align.ts index 2069dfe..6a365c1 100644 --- a/src/modules/text-align.js +++ b/src/modules/text-align.ts @@ -1,4 +1,15 @@ -const applyRules = require("../util/applyRules"); +import applyRules from "../util/applyRules"; + +import { GetRules, GenericObject, Meta, Module } from "../types"; + +export type TextAlignSupportedTypes = { + [key in keyof typeof defaultNames]?: string; +}; + +export type TextAlignModuleType = Module; + +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface ConfigVariables {} const defaultNames = { "ta:l": "tal", @@ -8,10 +19,10 @@ const defaultNames = { "tal:a": "tala", "tal:l": "tall", "tal:c": "talc", - "tal:r": "talr" + "tal:r": "talr", }; -const getRules = names => ({ +const getRules: GetRules = (names) => ({ "ta:l": { name: names["ta:l"], key: "text-align", value: "left" }, "ta:c": { name: names["ta:c"], key: "text-align", value: "center" }, "ta:r": { name: names["ta:r"], key: "text-align", value: "right" }, @@ -19,19 +30,21 @@ const getRules = names => ({ "tal:a": { name: names["tal:a"], key: "text-align-last", value: "auto" }, "tal:l": { name: names["tal:l"], key: "text-align-last", value: "left" }, "tal:c": { name: names["tal:c"], key: "text-align-last", value: "center" }, - "tal:r": { name: names["tal:r"], key: "text-align-last", value: "right" } + "tal:r": { name: names["tal:r"], key: "text-align-last", value: "right" }, }); -const meta = { - module: "text-align" +const meta: Meta = { + module: "text-align", }; -module.exports = config => globalConfig => { +const module: TextAlignModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, defaultNames, getRules, - meta: Object.assign({}, meta, config && config.meta) + meta: Object.assign({}, meta, config && config.meta), }); }; + +export default module; diff --git a/src/modules/text-decoration.js b/src/modules/text-decoration.js deleted file mode 100644 index d83eb23..0000000 --- a/src/modules/text-decoration.js +++ /dev/null @@ -1,29 +0,0 @@ -const applyRules = require("../util/applyRules"); - -const defaultNames = { - "td:n": "tdn", - "td:u": "tdu", - "td:o": "tdo", - "td:l": "tdl" -}; - -const getRules = names => ({ - "td:n": { name: names["td:n"], key: "text-decoration", value: "none" }, - "td:u": { name: names["td:u"], key: "text-decoration", value: "underline" }, - "td:o": { name: names["td:o"], key: "text-decoration", value: "overline" }, - "td:l": { name: names["td:l"], key: "text-decoration", value: "line-through" } -}); - -const meta = { - module: "text-decoration" -}; - -module.exports = config => globalConfig => { - return applyRules({ - config, - globalConfig, - defaultNames, - getRules, - meta: Object.assign({}, meta, config && config.meta) - }); -}; diff --git a/src/modules/text-decoration.ts b/src/modules/text-decoration.ts new file mode 100644 index 0000000..c57bd96 --- /dev/null +++ b/src/modules/text-decoration.ts @@ -0,0 +1,46 @@ +import applyRules from "../util/applyRules"; + +import { GetRules, GenericObject, Meta, Module } from "../types"; + +export type TextDecorationSupportedTypes = { + [key in keyof typeof defaultNames]?: string; +}; + +export type TextDecorationModuleType = Module; + +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface ConfigVariables {} + +const defaultNames = { + "td:n": "tdn", + "td:u": "tdu", + "td:o": "tdo", + "td:l": "tdl", +}; + +const getRules: GetRules = (names) => ({ + "td:n": { name: names["td:n"], key: "text-decoration", value: "none" }, + "td:u": { name: names["td:u"], key: "text-decoration", value: "underline" }, + "td:o": { name: names["td:o"], key: "text-decoration", value: "overline" }, + "td:l": { + name: names["td:l"], + key: "text-decoration", + value: "line-through", + }, +}); + +const meta: Meta = { + module: "text-decoration", +}; + +const module: TextDecorationModuleType = (config) => (globalConfig) => { + return applyRules({ + config, + globalConfig, + defaultNames, + getRules, + meta: Object.assign({}, meta, config && config.meta), + }); +}; + +export default module; diff --git a/src/modules/text-overflow.js b/src/modules/text-overflow.js deleted file mode 100644 index bf5a5e9..0000000 --- a/src/modules/text-overflow.js +++ /dev/null @@ -1,27 +0,0 @@ -const applyRules = require("../util/applyRules"); - -const defaultNames = { - "tx:o": "txo" -}; - -const getRules = (names, cfg) => ({ - trf: { - name: names["tx:o"], - key: "text-overflow", - value: cfg.textOverflowValues - } -}); - -const meta = { - module: "text-overflow" -}; - -module.exports = config => globalConfig => { - return applyRules({ - config, - globalConfig, - defaultNames, - getRules, - meta: Object.assign({}, meta, config && config.meta) - }); -}; diff --git a/src/modules/text-overflow.ts b/src/modules/text-overflow.ts new file mode 100644 index 0000000..45e3f75 --- /dev/null +++ b/src/modules/text-overflow.ts @@ -0,0 +1,41 @@ +import applyRules from "../util/applyRules"; + +import { GetRules, GenericObject, Meta, Module } from "../types"; + +export type TextOverflowSupportedTypes = { + [key in keyof typeof defaultNames]?: string; +}; + +export type TextOverflowModuleType = Module; + +export interface ConfigVariables { + textOverflowValues?: GenericObject | string[]; +} + +const defaultNames = { + "tx:o": "txo", +}; + +const getRules: GetRules = (names, cfg) => ({ + trf: { + name: names["tx:o"], + key: "text-overflow", + value: cfg.textOverflowValues, + }, +}); + +const meta: Meta = { + module: "text-overflow", +}; + +const module: TextOverflowModuleType = (config) => (globalConfig) => { + return applyRules({ + config, + globalConfig, + defaultNames, + getRules, + meta: Object.assign({}, meta, config && config.meta), + }); +}; + +export default module; diff --git a/src/modules/text-transform.js b/src/modules/text-transform.js deleted file mode 100644 index 2d403e9..0000000 --- a/src/modules/text-transform.js +++ /dev/null @@ -1,29 +0,0 @@ -const applyRules = require("../util/applyRules"); - -const defaultNames = { - "tt:n": "ttn", - "tt:c": "ttc", - "tt:u": "ttu", - "tt:l": "ttl" -}; - -const getRules = names => ({ - "tt:n": { name: names["tt:n"], key: "text-transform", value: "none" }, - "tt:c": { name: names["tt:c"], key: "text-transform", value: "capitalize" }, - "tt:u": { name: names["tt:u"], key: "text-transform", value: "uppercase" }, - "tt:l": { name: names["tt:l"], key: "text-transform", value: "lowercase" } -}); - -const meta = { - module: "text-transform" -}; - -module.exports = config => globalConfig => { - return applyRules({ - config, - globalConfig, - defaultNames, - getRules, - meta: Object.assign({}, meta, config && config.meta) - }); -}; diff --git a/src/modules/text-transform.ts b/src/modules/text-transform.ts new file mode 100644 index 0000000..bc1636f --- /dev/null +++ b/src/modules/text-transform.ts @@ -0,0 +1,42 @@ +import applyRules from "../util/applyRules"; + +import { GetRules, Meta, Module } from "../types"; + +export type BoxShadowSupportedTypes = { + [key in keyof typeof defaultNames]?: string; +}; + +export type BoxShadowModuleType = Module; + +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface ConfigVariables {} + +const defaultNames = { + "tt:n": "ttn", + "tt:c": "ttc", + "tt:u": "ttu", + "tt:l": "ttl", +}; + +const getRules: GetRules = (names) => ({ + "tt:n": { name: names["tt:n"], key: "text-transform", value: "none" }, + "tt:c": { name: names["tt:c"], key: "text-transform", value: "capitalize" }, + "tt:u": { name: names["tt:u"], key: "text-transform", value: "uppercase" }, + "tt:l": { name: names["tt:l"], key: "text-transform", value: "lowercase" }, +}); + +const meta: Meta = { + module: "text-transform", +}; + +const module: BoxShadowModuleType = (config) => (globalConfig) => { + return applyRules({ + config, + globalConfig, + defaultNames, + getRules, + meta: Object.assign({}, meta, config && config.meta), + }); +}; + +export default module; diff --git a/src/modules/transform.js b/src/modules/transform.js deleted file mode 100644 index 802a826..0000000 --- a/src/modules/transform.js +++ /dev/null @@ -1,39 +0,0 @@ -const applyRules = require("../util/applyRules"); - -const defaultNames = { - trf: "trf", - "trf:n": "trfn", - trfo: "trfo", - "trfs:f": "trfsf", - "trfs:p": "trfsp" -}; - -const getRules = (names, cfg) => ({ - trf: { name: names["trf"], key: "transform", value: cfg.transformValues }, - "trf:n": { name: names["trf:n"], key: "transform", value: "none" }, - trfo: { - name: names["trfo"], - key: "transform-origin", - value: cfg.transformOriginValues - }, - "trfs:f": { name: names["trfs:f"], key: "transform-style", value: "flat" }, - "trfs:p": { - name: names["trfs:p"], - key: "transform-style", - value: "preserve-3d" - } -}); - -const meta = { - module: "transform" -}; - -module.exports = config => globalConfig => { - return applyRules({ - config, - globalConfig, - defaultNames, - getRules, - meta: Object.assign({}, meta, config && config.meta) - }); -}; diff --git a/src/modules/transform.ts b/src/modules/transform.ts new file mode 100644 index 0000000..7e33292 --- /dev/null +++ b/src/modules/transform.ts @@ -0,0 +1,54 @@ +import applyRules from "../util/applyRules"; + +import { GetRules, GenericObject, Meta, Module } from "../types"; + +export type TransformSupportedTypes = { + [key in keyof typeof defaultNames]?: string; +}; + +export type TransformModuleType = Module; + +export interface ConfigVariables { + transformValues?: GenericObject | string; + transformOriginValues?: GenericObject | string; +} + +const defaultNames = { + trf: "trf", + "trf:n": "trfn", + trfo: "trfo", + "trfs:f": "trfsf", + "trfs:p": "trfsp", +}; + +const getRules: GetRules = (names, cfg) => ({ + trf: { name: names["trf"], key: "transform", value: cfg.transformValues }, + "trf:n": { name: names["trf:n"], key: "transform", value: "none" }, + trfo: { + name: names["trfo"], + key: "transform-origin", + value: cfg.transformOriginValues, + }, + "trfs:f": { name: names["trfs:f"], key: "transform-style", value: "flat" }, + "trfs:p": { + name: names["trfs:p"], + key: "transform-style", + value: "preserve-3d", + }, +}); + +const meta: Meta = { + module: "transform", +}; + +const module: TransformModuleType = (config) => (globalConfig) => { + return applyRules({ + config, + globalConfig, + defaultNames, + getRules, + meta: Object.assign({}, meta, config && config.meta), + }); +}; + +export default module; diff --git a/src/modules/transition.js b/src/modules/transition.js deleted file mode 100644 index 350a074..0000000 --- a/src/modules/transition.js +++ /dev/null @@ -1,59 +0,0 @@ -const applyRules = require("../util/applyRules"); - -const defaultNames = { - trs: "trs", - trsde: "trsde", - trsdu: "trsdu", - trsp: "trsp", - "trsp:n": "trspn", - "trsp:a": "trspa", - trstf: "trstf" -}; - -const getRules = (names, cfg) => ({ - trs: { name: names["trs"], key: "transition", value: cfg.transitionValues }, - trsde: { - name: names["trsde"], - key: "transition-delay", - value: cfg.transitionDelayValues - }, - trsdu: { - name: names["trsdu"], - key: "transition-duration", - value: cfg.transitionDurationValues - }, - trsp: { - name: names["trsp"], - key: "transition-property", - value: cfg.transitionPropertyValues - }, - "trsp:n": { - name: names["trsp:n"], - key: "transition-property", - value: "none" - }, - "trsp:a": { - name: names["trsp:a"], - key: "transition-property", - value: "all" - }, - trstf: { - name: names["trstf"], - key: "transition-timing-function", - value: cfg.transitionTimingFunctionValues - } -}); - -const meta = { - module: "transition" -}; - -module.exports = config => globalConfig => { - return applyRules({ - config, - globalConfig, - defaultNames, - getRules, - meta: Object.assign({}, meta, config && config.meta) - }); -}; diff --git a/src/modules/transition.ts b/src/modules/transition.ts new file mode 100644 index 0000000..e730bea --- /dev/null +++ b/src/modules/transition.ts @@ -0,0 +1,77 @@ +import applyRules from "../util/applyRules"; + +import { GetRules, GenericObject, Meta, Module } from "../types"; + +export type TransitionSupportedTypes = { + [key in keyof typeof defaultNames]?: string; +}; + +export type TransitionModuleType = Module; + +export interface ConfigVariables { + transitionValues?: GenericObject | string[]; + transitionDelayValues?: GenericObject | string[]; + transitionDurationValues?: GenericObject | string[]; + transitionPropertyValues?: GenericObject | string[]; + transitionTimingFunctionValues?: GenericObject | string[]; +} + +const defaultNames = { + trs: "trs", + trsde: "trsde", + trsdu: "trsdu", + trsp: "trsp", + "trsp:n": "trspn", + "trsp:a": "trspa", + trstf: "trstf", +}; + +const getRules: GetRules = (names, cfg) => ({ + trs: { name: names["trs"], key: "transition", value: cfg.transitionValues }, + trsde: { + name: names["trsde"], + key: "transition-delay", + value: cfg.transitionDelayValues, + }, + trsdu: { + name: names["trsdu"], + key: "transition-duration", + value: cfg.transitionDurationValues, + }, + trsp: { + name: names["trsp"], + key: "transition-property", + value: cfg.transitionPropertyValues, + }, + "trsp:n": { + name: names["trsp:n"], + key: "transition-property", + value: "none", + }, + "trsp:a": { + name: names["trsp:a"], + key: "transition-property", + value: "all", + }, + trstf: { + name: names["trstf"], + key: "transition-timing-function", + value: cfg.transitionTimingFunctionValues, + }, +}); + +const meta: Meta = { + module: "transition", +}; + +const module: TransitionModuleType = (config) => (globalConfig) => { + return applyRules({ + config, + globalConfig, + defaultNames, + getRules, + meta: Object.assign({}, meta, config && config.meta), + }); +}; + +export default module; diff --git a/src/modules/user-select.js b/src/modules/user-select.js deleted file mode 100644 index a9711b9..0000000 --- a/src/modules/user-select.js +++ /dev/null @@ -1,31 +0,0 @@ -const applyRules = require("../util/applyRules"); - -const defaultNames = { - "us:n": "us:n", - "us:au": "us:au", - "us:t": "us:t", - "us:c": "us:c", - "us:a": "us:a" -}; - -const getRules = names => ({ - "us:n": { name: names["us:n"], key: "user-select", value: "none" }, - "us:au": { name: names["us:au"], key: "user-select", value: "auto" }, - "us:t": { name: names["us:t"], key: "user-select", value: "text" }, - "us:c": { name: names["us:c"], key: "user-select", value: "contain" }, - "us:a": { name: names["us:a"], key: "user-select", value: "all" } -}); - -const meta = { - module: "user-select" -}; - -module.exports = config => globalConfig => { - return applyRules({ - config, - globalConfig, - defaultNames, - getRules, - meta: Object.assign({}, meta, config && config.meta) - }); -}; diff --git a/src/modules/user-select.ts b/src/modules/user-select.ts new file mode 100644 index 0000000..657be63 --- /dev/null +++ b/src/modules/user-select.ts @@ -0,0 +1,44 @@ +import applyRules from "../util/applyRules"; + +import { GetRules, GenericObject, Meta, Module } from "../types"; + +export type UserSelectSupportedTypes = { + [key in keyof typeof defaultNames]?: string; +}; + +export type UserSelectModuleType = Module; + +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface ConfigVariables {} + +const defaultNames = { + "us:n": "us:n", + "us:au": "us:au", + "us:t": "us:t", + "us:c": "us:c", + "us:a": "us:a", +}; + +const getRules: GetRules = (names) => ({ + "us:n": { name: names["us:n"], key: "user-select", value: "none" }, + "us:au": { name: names["us:au"], key: "user-select", value: "auto" }, + "us:t": { name: names["us:t"], key: "user-select", value: "text" }, + "us:c": { name: names["us:c"], key: "user-select", value: "contain" }, + "us:a": { name: names["us:a"], key: "user-select", value: "all" }, +}); + +const meta: Meta = { + module: "user-select", +}; + +const module: UserSelectModuleType = (config) => (globalConfig) => { + return applyRules({ + config, + globalConfig, + defaultNames, + getRules, + meta: Object.assign({}, meta, config && config.meta), + }); +}; + +export default module; diff --git a/src/modules/vertical-align.js b/src/modules/vertical-align.ts similarity index 55% rename from src/modules/vertical-align.js rename to src/modules/vertical-align.ts index fbb841c..3a42ab1 100644 --- a/src/modules/vertical-align.js +++ b/src/modules/vertical-align.ts @@ -1,4 +1,15 @@ -const applyRules = require("../util/applyRules"); +import applyRules from "../util/applyRules"; + +import { GetRules, GenericObject, Meta, Module } from "../types"; + +export type BoxShadowSupportedTypes = { + [key in keyof typeof defaultNames]?: string; +}; + +export type BoxShadowModuleType = Module; + +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface ConfigVariables {} const defaultNames = { "va:sup": "vasup", @@ -8,10 +19,10 @@ const defaultNames = { "va:bl": "vabl", "va:b": "vab", "va:tb": "vatb", - "va:sub": "vasub" + "va:sub": "vasub", }; -const getRules = names => ({ +const getRules: GetRules = (names) => ({ "va:sup": { name: names["va:sup"], key: "vertical-align", value: "super" }, "va:t": { name: names["va:t"], key: "vertical-align", value: "top" }, "va:tt": { name: names["va:tt"], key: "vertical-align", value: "text-top" }, @@ -21,21 +32,23 @@ const getRules = names => ({ "va:tb": { name: names["va:tb"], key: "vertical-align", - value: "text-bottom" + value: "text-bottom", }, - "va:sub": { name: names["va:sub"], key: "vertical-align", value: "sub" } + "va:sub": { name: names["va:sub"], key: "vertical-align", value: "sub" }, }); -const meta = { - module: "vertical-align" +const meta: Meta = { + module: "vertical-align", }; -module.exports = config => globalConfig => { +const module: BoxShadowModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, defaultNames, getRules, - meta: Object.assign({}, meta, config && config.meta) + meta: Object.assign({}, meta, config && config.meta), }); }; + +export default module; diff --git a/src/modules/visibility.js b/src/modules/visibility.js deleted file mode 100644 index 608ded7..0000000 --- a/src/modules/visibility.js +++ /dev/null @@ -1,27 +0,0 @@ -const applyRules = require("../util/applyRules"); - -const defaultNames = { - "v:v": "vv", - "v:h": "vh", - "v:c": "vc" -}; - -const getRules = names => ({ - "v:v": { name: names["v:v"], key: "visibility", value: "visible" }, - "v:h": { name: names["v:h"], key: "visibility", value: "hidden" }, - "v:c": { name: names["v:c"], key: "visibility", value: "collapse" } -}); - -const meta = { - module: "visibility" -}; - -module.exports = config => globalConfig => { - return applyRules({ - config, - globalConfig, - defaultNames, - getRules, - meta: Object.assign({}, meta, config && config.meta) - }); -}; diff --git a/src/modules/visibility.ts b/src/modules/visibility.ts new file mode 100644 index 0000000..0da59c6 --- /dev/null +++ b/src/modules/visibility.ts @@ -0,0 +1,40 @@ +import applyRules from "../util/applyRules"; + +import { GetRules, GenericObject, Meta, Module } from "../types"; + +export type VisibilitySupportedTypes = { + [key in keyof typeof defaultNames]?: string; +}; + +export type VisibilityModuleType = Module; + +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface ConfigVariables {} + +const defaultNames = { + "v:v": "vv", + "v:h": "vh", + "v:c": "vc", +}; + +const getRules: GetRules = (names) => ({ + "v:v": { name: names["v:v"], key: "visibility", value: "visible" }, + "v:h": { name: names["v:h"], key: "visibility", value: "hidden" }, + "v:c": { name: names["v:c"], key: "visibility", value: "collapse" }, +}); + +const meta: Meta = { + module: "visibility", +}; + +const module: VisibilityModuleType = (config) => (globalConfig) => { + return applyRules({ + config, + globalConfig, + defaultNames, + getRules, + meta: Object.assign({}, meta, config && config.meta), + }); +}; + +export default module; diff --git a/src/modules/white-space.js b/src/modules/white-space.js deleted file mode 100644 index 9328dcd..0000000 --- a/src/modules/white-space.js +++ /dev/null @@ -1,31 +0,0 @@ -const applyRules = require("../util/applyRules"); - -const defaultNames = { - "whs:n": "whsn", - "whs:p": "whsp", - "whs:nw": "whsnw", - "whs:pw": "whspw", - "whs:pl": "whspl" -}; - -const getRules = names => ({ - "whs:n": { name: names["whs:n"], key: "white-space", value: "normal" }, - "whs:p": { name: names["whs:p"], key: "white-space", value: "pre" }, - "whs:nw": { name: names["whs:nw"], key: "white-space", value: "nowrap" }, - "whs:pw": { name: names["whs:pw"], key: "white-space", value: "pre-wrap" }, - "whs:pl": { name: names["whs:pl"], key: "white-space", value: "pre-line" } -}); - -const meta = { - module: "white-space" -}; - -module.exports = config => globalConfig => { - return applyRules({ - config, - globalConfig, - defaultNames, - getRules, - meta: Object.assign({}, meta, config && config.meta) - }); -}; diff --git a/src/modules/white-space.ts b/src/modules/white-space.ts new file mode 100644 index 0000000..bcb0a7e --- /dev/null +++ b/src/modules/white-space.ts @@ -0,0 +1,44 @@ +import applyRules from "../util/applyRules"; + +import { GetRules, GenericObject, Meta, Module } from "../types"; + +export type WhiteSpaceSupportedTypes = { + [key in keyof typeof defaultNames]?: string; +}; + +export type WhiteSpaceModuleType = Module; + +// eslint-disable-next-line @typescript-eslint/no-empty-interface +export interface ConfigVariables {} + +const defaultNames = { + "whs:n": "whsn", + "whs:p": "whsp", + "whs:nw": "whsnw", + "whs:pw": "whspw", + "whs:pl": "whspl", +}; + +const getRules: GetRules = (names) => ({ + "whs:n": { name: names["whs:n"], key: "white-space", value: "normal" }, + "whs:p": { name: names["whs:p"], key: "white-space", value: "pre" }, + "whs:nw": { name: names["whs:nw"], key: "white-space", value: "nowrap" }, + "whs:pw": { name: names["whs:pw"], key: "white-space", value: "pre-wrap" }, + "whs:pl": { name: names["whs:pl"], key: "white-space", value: "pre-line" }, +}); + +const meta: Meta = { + module: "white-space", +}; + +const module: WhiteSpaceModuleType = (config) => (globalConfig) => { + return applyRules({ + config, + globalConfig, + defaultNames, + getRules, + meta: Object.assign({}, meta, config && config.meta), + }); +}; + +export default module; diff --git a/src/modules/width.js b/src/modules/width.js deleted file mode 100644 index bd0a482..0000000 --- a/src/modules/width.js +++ /dev/null @@ -1,31 +0,0 @@ -const applyRules = require("../util/applyRules"); - -const defaultNames = { - w: "w", - "w:a": "wa", - maw: "maw", - "maw:n": "mawn", - miw: "miw" -}; - -const getRules = (names, cfg) => ({ - w: { name: names["w"], key: "width", value: cfg.widthValues }, - "w:a": { name: names["w:a"], key: "width", value: "auto" }, - maw: { name: names["maw"], key: "max-width", value: cfg.maxWidthValues }, - "maw:n": { name: names["maw:n"], key: "max-width", value: "none" }, - miw: { name: names["miw"], key: "min-width", value: cfg.minWidthValues } -}); - -const meta = { - module: "width" -}; - -module.exports = config => globalConfig => { - return applyRules({ - config, - globalConfig, - defaultNames, - getRules, - meta: Object.assign({}, meta, config && config.meta) - }); -}; diff --git a/src/modules/width.ts b/src/modules/width.ts new file mode 100644 index 0000000..544df53 --- /dev/null +++ b/src/modules/width.ts @@ -0,0 +1,47 @@ +import applyRules from "../util/applyRules"; + +import { GetRules, GenericObject, Meta, Module } from "../types"; + +export type WidthSupportedTypes = { + [key in keyof typeof defaultNames]?: string; +}; + +export type WidthModuleType = Module; + +export interface ConfigVariables { + widthValues?: GenericObject | string[]; + maxWidthValues?: GenericObject | string[]; + minWidthValues?: GenericObject | string[]; +} + +const defaultNames = { + w: "w", + "w:a": "wa", + maw: "maw", + "maw:n": "mawn", + miw: "miw", +}; + +const getRules: GetRules = (names, cfg) => ({ + w: { name: names["w"], key: "width", value: cfg.widthValues }, + "w:a": { name: names["w:a"], key: "width", value: "auto" }, + maw: { name: names["maw"], key: "max-width", value: cfg.maxWidthValues }, + "maw:n": { name: names["maw:n"], key: "max-width", value: "none" }, + miw: { name: names["miw"], key: "min-width", value: cfg.minWidthValues }, +}); + +const meta: Meta = { + module: "width", +}; + +const module: WidthModuleType = (config) => (globalConfig) => { + return applyRules({ + config, + globalConfig, + defaultNames, + getRules, + meta: Object.assign({}, meta, config && config.meta), + }); +}; + +export default module; diff --git a/src/modules/z-index.js b/src/modules/z-index.js deleted file mode 100644 index 8f37dfb..0000000 --- a/src/modules/z-index.js +++ /dev/null @@ -1,25 +0,0 @@ -const applyRules = require("../util/applyRules"); - -const defaultNames = { - z: "z", - "z:a": "za" -}; - -const getRules = (names, cfg) => ({ - z: { name: names["z"], key: "z-index", value: cfg.values }, - "z:a": { name: names["z:a"], key: "z-index", value: "auto" } -}); - -const meta = { - module: "z-index" -}; - -module.exports = config => globalConfig => { - return applyRules({ - config, - globalConfig, - defaultNames, - getRules, - meta: Object.assign({}, meta, config && config.meta) - }); -}; diff --git a/src/modules/z-index.ts b/src/modules/z-index.ts new file mode 100644 index 0000000..bf86bd4 --- /dev/null +++ b/src/modules/z-index.ts @@ -0,0 +1,39 @@ +import applyRules from "../util/applyRules"; + +import { GetRules, GenericObject, Meta, Module } from "../types"; + +export type ZIndexSupportedTypes = { + [key in keyof typeof defaultNames]?: string; +}; + +export type ZIndexModuleType = Module; + +export interface ConfigVariables { + values?: GenericObject | string; +} + +const defaultNames = { + z: "z", + "z:a": "za", +}; + +const getRules: GetRules = (names, cfg) => ({ + z: { name: names["z"], key: "z-index", value: cfg.values }, + "z:a": { name: names["z:a"], key: "z-index", value: "auto" }, +}); + +const meta: Meta = { + module: "z-index", +}; + +const module: ZIndexModuleType = (config) => (globalConfig) => { + return applyRules({ + config, + globalConfig, + defaultNames, + getRules, + meta: Object.assign({}, meta, config && config.meta), + }); +}; + +export default module; diff --git a/src/plugins/docs.js b/src/plugins/docs.ts similarity index 56% rename from src/plugins/docs.js rename to src/plugins/docs.ts index 03f9237..51ef64a 100644 --- a/src/plugins/docs.js +++ b/src/plugins/docs.ts @@ -1,17 +1,17 @@ -const path = require("path"); -const saveFile = require("../helpers/save-file"); +import path from "path"; +import saveFile from "../helpers/save-file"; -const buildDocPartials = require("../helpers/build-doc-partials"); -const buildIndex = require("../helpers/build-index"); -const traverse = require("../util/traverse"); +import buildDocPartials from "../helpers/build-doc-partials"; +import buildIndex from "../helpers/build-index"; +import traverse from "../util/traverse"; -module.exports = config => root => { +export default (config) => async (root) => { const { output, openFile } = config || {}; const modules = {}; - traverse(root, node => { + traverse(root, (node) => { const { - meta: { module } + meta: { module }, } = node; if (Array.isArray(modules[module])) { modules[module].push(node); @@ -30,27 +30,27 @@ module.exports = config => root => { navHtml, sidebarHtml, sectionsHtml, - statsHtml - } = buildDocPartials({ + statsHtml, + } = await buildDocPartials({ packageName, modules, - atomCss: root.toString() + atomCss: root.toString(), }); - const indexHtml = buildIndex({ + const indexHtml = await buildIndex({ packageName, headHtml, navHtml, sidebarHtml, sectionsHtml, - statsHtml + statsHtml, }); - saveFile({ + await saveFile({ content: indexHtml, filePath: output, dirPath, - openFile + openFile, }); } diff --git a/src/plugins/index.js b/src/plugins/index.js deleted file mode 100644 index f6d0231..0000000 --- a/src/plugins/index.js +++ /dev/null @@ -1,9 +0,0 @@ -const prefix = require("./prefix"); -const docs = require("./docs"); -const json = require("./json"); - -module.exports = { - prefix, - docs, - json -}; diff --git a/src/plugins/index.ts b/src/plugins/index.ts new file mode 100644 index 0000000..df29f83 --- /dev/null +++ b/src/plugins/index.ts @@ -0,0 +1,3 @@ +export { default as prefix } from "./prefix"; +export { default as docs } from "./docs"; +export { default as json } from "./json"; diff --git a/src/plugins/json.js b/src/plugins/json.ts similarity index 56% rename from src/plugins/json.js rename to src/plugins/json.ts index 779ad9d..b39162c 100644 --- a/src/plugins/json.js +++ b/src/plugins/json.ts @@ -1,11 +1,16 @@ -const path = require("path"); -const traverse = require("../util/traverse"); -const saveFile = require("../helpers/save-file"); +import path from "path"; +import traverse from "../util/traverse"; +import saveFile from "../helpers/save-file"; -module.exports = config => root => { +import { Root, ChildNode } from "postcss"; +import { GlobalUtilityConfig } from "../types"; + +export default (config: Pick) => ( + root: Root +) => { const { output } = config || {}; const modules = {}; - traverse(root, node => { + traverse(root, (node: ChildNode) => { const { meta, meta: { module }, @@ -24,7 +29,7 @@ module.exports = config => root => { saveFile({ content: JSON.stringify(modules), filePath: output, - dirPath + dirPath, }); } diff --git a/src/plugins/prefix.js b/src/plugins/prefix.js deleted file mode 100644 index 2312dcc..0000000 --- a/src/plugins/prefix.js +++ /dev/null @@ -1,11 +0,0 @@ -module.exports = config => root => { - const { prefix = "" } = config; - - root.walkRules(rule => { - rule.selectors = rule.selectors.map(selector => - selector.replace(/\./g, `.${prefix}`) - ); - }); - - return root; -}; diff --git a/src/plugins/prefix.ts b/src/plugins/prefix.ts new file mode 100644 index 0000000..b7a6276 --- /dev/null +++ b/src/plugins/prefix.ts @@ -0,0 +1,16 @@ +import { Root } from "postcss"; +import { GlobalUtilityConfig } from "../types"; + +export default (config: Pick) => ( + root: Root +): Root => { + const { prefix = "" } = config; + + root.walkRules((rule) => { + rule.selectors = rule.selectors.map((selector) => + selector.replace(/\./g, `.${prefix}`) + ); + }); + + return root; +}; diff --git a/src/types.ts b/src/types.ts new file mode 100644 index 0000000..9284e96 --- /dev/null +++ b/src/types.ts @@ -0,0 +1,73 @@ +type GenericObjectKeys = number | string; +export type GenericObject = { + [key in GenericObjectKeys]: string | number; +}; + +export type PseudoClass = ":hover" | ":focus"; + +export type UtilityConfig = T & { + names?: GenericObject; + whitelist?: string[]; + blacklist?: string[]; + isResponsive?: boolean; + responsiveWhiteList?: string[]; + responsiveBlackList?: string[]; + meta?: Meta; + pseudoClasses?: + | { + [key: string]: PseudoClass[]; + } + | PseudoClass[]; + nestedRules?: any; + className?: string; + property?: string; + props?: GenericObject; +}; + +export interface GlobalUtilityConfig { + breakPoints: { + [key: string]: string; + }; + prefix?: string; + output?: string; + breakPointSeparator: string; + pseudoClassesSeparator: string; + seriesSeparator: string; + classTemplate?: string; +} + +export interface GetRulesOutput { + name: GenericObjectKeys; + key: string; + value: GenericObject | string[] | string; +} + +export type GetRules = ( + names: GenericObject, + // eslint-disable-next-line @typescript-eslint/ban-types + cfg: UtilityConfig +) => Record; + +export interface Meta { + module: string; + id?: string; +} + +export interface ApplyRulesInput { + config: UtilityConfig; + globalConfig: GlobalUtilityConfig; + defaultNames: GenericObject; + getRules: GetRules; + meta: Meta; + classTemplate?: string; +} + +export type ApplyRulesOutput = any[]; + +export type ApplyRules = ( + config: ApplyRulesInput +) => ApplyRulesOutput; + +export type Module = ( + config?: UtilityConfig +) => (globalConfig: GlobalUtilityConfig) => ApplyRulesOutput; diff --git a/src/util/applyRules.js b/src/util/applyRules.ts similarity index 79% rename from src/util/applyRules.js rename to src/util/applyRules.ts index a8b8352..d1ae8ef 100644 --- a/src/util/applyRules.js +++ b/src/util/applyRules.ts @@ -1,16 +1,20 @@ -const postcss = require("postcss"); -const defineClass = require("./defineClass"); -const defineSeries = require("./defineSeries"); -const responsive = require("./responsive"); -const template = require("./template"); +import postcss from "postcss"; -const applyRules = ({ +import defineClass from "./defineClass"; +import defineSeries from "./defineSeries"; +import responsive from "./responsive"; +import template from "./template"; + +import { ApplyRules, PseudoClass } from "../types"; + +// eslint-disable-next-line @typescript-eslint/ban-types +const applyRules: ApplyRules<{}> = ({ config, globalConfig, defaultNames, getRules, meta, - classTemplate = "{}" + classTemplate = "{}", }) => { const { names = {}, @@ -20,21 +24,21 @@ const applyRules = ({ responsiveWhiteList = [], responsiveBlackList = [], pseudoClasses = {}, - nestedRules + nestedRules, } = config || {}; const { breakPoints = {}, breakPointSeparator = "", pseudoClassesSeparator = "", - seriesSeparator = "" + seriesSeparator = "", } = globalConfig || {}; const customNames = Object.assign({}, defaultNames, names); const customRules = getRules(customNames, config || {}); const enabledRules = Object.keys(customRules) - .filter(name => { + .filter((name) => { if (Array.isArray(whitelist) && whitelist.length > 0) { // Then filter return whitelist.includes(name); @@ -42,11 +46,13 @@ const applyRules = ({ return true; }) // Blacklist what you dont need - .filter(name => !blacklist.includes(name)); + .filter((name) => !blacklist.includes(name)); let result = enabledRules.reduce((acc, curr) => { const { name, key, value } = customRules[curr]; - const { [curr]: modifiers = [] } = pseudoClasses; + const { [curr]: modifiers = [] } = pseudoClasses as { + [key: string]: PseudoClass[]; + }; if (Array.isArray(value) || typeof value === "object") { acc = acc.concat( defineSeries(name, key, value, { @@ -54,7 +60,7 @@ const applyRules = ({ pseudoClasses: modifiers, pseudoClassesSeparator, meta: { ...meta, id: curr }, - classTemplate + classTemplate, }) ); } else if (typeof value === "string" || typeof value === "number") { @@ -95,13 +101,13 @@ const applyRules = ({ result = result.concat( responsive(responsiveRules, breakPoints, { - breakPointSeparator + breakPointSeparator, }) ); } if (nestedRules) { - Object.keys(nestedRules).forEach(nestedRule => { + Object.keys(nestedRules).forEach((nestedRule) => { const isAtRule = nestedRule[0] === "@"; if (isAtRule) { @@ -114,8 +120,8 @@ const applyRules = ({ globalConfig, defaultNames, getRules, - meta - }) + meta, + }), }); result = result.concat(nestedRuleNode); @@ -127,7 +133,7 @@ const applyRules = ({ defaultNames, getRules, meta, - classTemplate: nestedRule + classTemplate: nestedRule, }) ); } @@ -137,4 +143,4 @@ const applyRules = ({ return result; }; -module.exports = applyRules; +export default applyRules; diff --git a/src/util/computeStyles.js b/src/util/computeStyles.js deleted file mode 100644 index 51ef63b..0000000 --- a/src/util/computeStyles.js +++ /dev/null @@ -1,24 +0,0 @@ -const postcss = require("postcss"); - -/* - Common function to loop through modules and plugins - to create the desired styles -*/ -module.exports = ({ modules = [], config = {}, plugins = [] }) => { - // Run through the modules and create - // module specfic nodes - const nodes = modules.reduce((acc, curr) => { - return acc.concat(curr(config)); - }, []); - // Createt he root node for the styles - const rootNodes = postcss.root({ - nodes - }); - // Run all the plugins in the above rootNodes - const computedStyles = plugins.reduce((nodes, plugin) => { - // Pass the rootNodes here since - // plugins always have to run on the entire tree - return plugin(rootNodes); - }, rootNodes); - return computedStyles; -}; diff --git a/src/util/computeStyles.ts b/src/util/computeStyles.ts index 6831c66..7a2b174 100644 --- a/src/util/computeStyles.ts +++ b/src/util/computeStyles.ts @@ -12,15 +12,19 @@ interface Input { plugins?: any[]; } -export default ({ modules = [], config = {}, plugins = [] }: Input) => { +export default function computedStyles({ + modules = [], + config = {}, + plugins = [], +}: Input) { // Run through the modules and create // module specfic nodes const nodes = modules.reduce((acc, curr) => { return acc.concat(curr(config)); }, []); - // Createt he root node for the styles + // Create the root node for the styles const rootNodes = postcss.root({ - nodes + nodes, }); // Run all the plugins in the above rootNodes const computedStyles = plugins.reduce((nodes, plugin) => { @@ -29,4 +33,4 @@ export default ({ modules = [], config = {}, plugins = [] }: Input) => { return plugin(rootNodes); }, rootNodes); return computedStyles; -}; +} diff --git a/src/util/defineClass.js b/src/util/defineClass.js deleted file mode 100644 index 74e482d..0000000 --- a/src/util/defineClass.js +++ /dev/null @@ -1,20 +0,0 @@ -const postcss = require("postcss"); - -const escapeClassName = className => - className.replace(/([^A-Za-z0-9\-\:\_\ \.])/g, "\\$1"); //eslint-disable-line - -module.exports = (name, props, meta = {}) => { - const decls = Object.keys(props).map(prop => - postcss.decl({ - prop, - value: props[prop] - }) - ); - - return postcss - .rule({ - selector: `.${escapeClassName(name)}`, - meta - }) - .append(decls); -}; diff --git a/src/util/defineClass.ts b/src/util/defineClass.ts new file mode 100644 index 0000000..0bf38b3 --- /dev/null +++ b/src/util/defineClass.ts @@ -0,0 +1,30 @@ +import postcss from "postcss"; + +import { GenericObject, Meta } from "../types"; + +const escapeClassName = (className: string) => + className.replace(/([^A-Za-z0-9\-\:\_\ \.])/g, "\\$1"); //eslint-disable-line + +type DefineClass = ( + name: string, + props: GenericObject, + meta: Meta +) => postcss.Rule; + +const defineClass: DefineClass = (name, props, meta: any = {}) => { + const decls = Object.keys(props).map((prop) => + postcss.decl({ + prop, + value: props[prop] as string, + }) + ); + + return postcss + .rule({ + selector: `.${escapeClassName(name)}`, + meta, + } as any) + .append(decls); +}; + +export default defineClass; diff --git a/src/util/defineSeries.js b/src/util/defineSeries.js deleted file mode 100644 index 41e223f..0000000 --- a/src/util/defineSeries.js +++ /dev/null @@ -1,31 +0,0 @@ -const defineClass = require("./defineClass"); -const template = require("./template"); - -module.exports = (name, prop, values, options = {}) => { - const { - seriesSeparator = "", - pseudoClassesSeparator = "", - pseudoClasses = [], - meta = {}, - classTemplate = "{}" - } = options; - - return [""].concat(pseudoClasses).reduce((prev, pseudo) => { - const pseudoSeparator = pseudo !== "" ? pseudoClassesSeparator : ""; - const separator = name !== "" ? seriesSeparator : ""; - const pseudoClass = pseudo.replace(/:/g, ""); - const nodes = Object.keys(values).map(value => - defineClass( - template( - classTemplate, - `${name}${separator}${value}${pseudoSeparator}${pseudoClass}${pseudo}` - ), - { - [`${prop}`]: values[value] - }, - meta - ) - ); - return prev.concat(nodes); - }, []); -}; diff --git a/src/util/defineSeries.ts b/src/util/defineSeries.ts new file mode 100644 index 0000000..abf34d9 --- /dev/null +++ b/src/util/defineSeries.ts @@ -0,0 +1,54 @@ +import { Rule } from "postcss"; +import defineClass from "./defineClass"; +import template from "./template"; + +import { GlobalUtilityConfig, GenericObject, UtilityConfig } from "../types"; + +type Options = Pick< + GlobalUtilityConfig, + "seriesSeparator" | "pseudoClassesSeparator" | "classTemplate" +> & + Pick, "pseudoClasses" | "meta">; + +type DefineSeries = ( + name: string, + prop: string, + values: GenericObject | string[], + options?: Options +) => Rule[]; + +const defineSeries: DefineSeries = ( + name, + prop, + values, + options = {} as Options +) => { + const { + seriesSeparator = "", + pseudoClassesSeparator = "", + pseudoClasses = [], + meta = {}, + classTemplate = "{}", + } = options; + + return [""].concat(pseudoClasses).reduce((prev, pseudo) => { + const pseudoSeparator = pseudo !== "" ? pseudoClassesSeparator : ""; + const separator = name !== "" ? seriesSeparator : ""; + const pseudoClass = pseudo.replace(/:/g, ""); + const nodes = Object.keys(values).map((value) => + defineClass( + template( + classTemplate, + `${name}${separator}${value}${pseudoSeparator}${pseudoClass}${pseudo}` + ), + { + [`${prop}`]: (values as GenericObject)[value], + }, + meta + ) + ); + return prev.concat(nodes); + }, []); +}; + +export default defineSeries; diff --git a/src/util/index.js b/src/util/index.js deleted file mode 100644 index 6059963..0000000 --- a/src/util/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const applyRules = require("./applyRules"); -const defineClass = require("./defineClass"); -const defineSeries = require("./defineSeries"); -const responsive = require("./responsive"); -const traverse = require("./traverse"); - -module.exports = { - applyRules, - defineClass, - defineSeries, - responsive, - traverse -}; diff --git a/src/util/index.ts b/src/util/index.ts new file mode 100644 index 0000000..6db92b6 --- /dev/null +++ b/src/util/index.ts @@ -0,0 +1,13 @@ +import applyRules from "./applyRules"; +import defineClass from "./defineClass"; +import defineSeries from "./defineSeries"; +import responsive from "./responsive"; +import traverse from "./traverse"; + +export default { + applyRules, + defineClass, + defineSeries, + responsive, + traverse, +}; diff --git a/src/util/responsive.js b/src/util/responsive.ts similarity index 54% rename from src/util/responsive.js rename to src/util/responsive.ts index 752c548..266ac9b 100644 --- a/src/util/responsive.js +++ b/src/util/responsive.ts @@ -1,10 +1,17 @@ -const postcss = require("postcss"); +import postcss from "postcss"; +import { GlobalUtilityConfig } from "../types"; -module.exports = (rules, breakpoints = {}, options = {}) => { - const { breakPointSeparator = "" } = options; +type Responsive = ( + rules: postcss.Rule[], + breakpoints?: GlobalUtilityConfig["breakPoints"], + options?: Pick +) => postcss.AtRule[]; - return Object.keys(breakpoints).map(bp => { - const nodes = rules.map(rule => { +const responsive: Responsive = (rules, breakpoints = {}, options) => { + const { breakPointSeparator = "" } = options || {}; + + return Object.keys(breakpoints).map((bp) => { + const nodes = rules.map((rule) => { const newRule = rule.clone(); const matchPseudo = rule.selector.match(/:([\w\d_-]+)/); if (matchPseudo) { @@ -22,7 +29,7 @@ module.exports = (rules, breakpoints = {}, options = {}) => { name: "media", params: breakpoints[bp], - nodes + nodes, }); for (const node of mediaRule.nodes) { @@ -32,3 +39,5 @@ module.exports = (rules, breakpoints = {}, options = {}) => { return mediaRule; }); }; + +export default responsive; diff --git a/src/util/template.js b/src/util/template.js deleted file mode 100644 index b882f5d..0000000 --- a/src/util/template.js +++ /dev/null @@ -1,5 +0,0 @@ -/** - * template function to generate class selectors. - * the placeholder "{}" will get substituted with str - */ -module.exports = (t, str) => t.replace(/{}/g, `.${str}`).replace(".", ""); diff --git a/src/util/template.ts b/src/util/template.ts new file mode 100644 index 0000000..7c27a97 --- /dev/null +++ b/src/util/template.ts @@ -0,0 +1,7 @@ +/** + * template function to generate class selectors. + * the placeholder "{}" will get substituted with str + */ +export default function template(t: string, str: string): string { + return t.replace(/{}/g, `.${str}`).replace(".", ""); +} diff --git a/src/util/traverse.js b/src/util/traverse.js deleted file mode 100644 index fe973ad..0000000 --- a/src/util/traverse.js +++ /dev/null @@ -1,33 +0,0 @@ -const traverseObject = (node, cb, media) => { - const { type, raws, parent, nodes, ...rest } = node; - const nodeToPush = Object.assign( - {}, - rest, - { nodes: nodes.map(n => ({ prop: n.prop, value: n.value })) }, - media !== undefined - ? { - media: media - } - : {} - ); - - cb(nodeToPush); -}; - -const traverseNodes = (nodes, cb, media) => { - nodes.forEach(node => { - if (node.hasOwnProperty("name") && node.name === "media") { - const { params: media, nodes } = node; - traverseNodes(nodes, cb, media); - } else { - traverseObject(node, cb, media); - } - }); -}; - -const traverse = (root, cb) => { - const { nodes } = root; - traverseNodes(nodes, cb); -}; - -module.exports = traverse; diff --git a/src/util/traverse.ts b/src/util/traverse.ts new file mode 100644 index 0000000..030a448 --- /dev/null +++ b/src/util/traverse.ts @@ -0,0 +1,42 @@ +import { Root, ChildNode, AtRule, Declaration, Rule } from "postcss"; + +type CallBack = (node: ChildNode) => void; + +const traverseObject = (node: ChildNode, cb: CallBack, media: any) => { + const { type, raws, parent, nodes, ...rest } = node as Rule; + const nodeToPush = Object.assign( + {}, + rest, + { + nodes: nodes.map((n) => ({ + prop: (n as Declaration).prop, + value: (n as Declaration).value, + })), + }, + media !== undefined + ? { + media, + } + : {} + ); + + cb(nodeToPush as ChildNode); +}; + +const traverseNodes = (nodes: ChildNode[], cb: CallBack, media?: any) => { + nodes.forEach((node) => { + if (node.hasOwnProperty("name") && (node as AtRule).name === "media") { + const { params: media, nodes } = node as AtRule; + traverseNodes(nodes, cb, media); + } else { + traverseObject(node, cb, media); + } + }); +}; + +const traverse = (root: Root, cb): void => { + const { nodes } = root; + traverseNodes(nodes, cb); +}; + +export default traverse; diff --git a/src/utility.config.default.js b/src/utility.config.default.ts similarity index 69% rename from src/utility.config.default.js rename to src/utility.config.default.ts index 298efa7..57a96c7 100644 --- a/src/utility.config.default.js +++ b/src/utility.config.default.ts @@ -1,29 +1,33 @@ +import { + plugins as availablePlugins, + util, + modules as availableModules, +} from "./index"; + +const { prefix, docs } = availablePlugins; +const { defineClass } = util; const { - plugins: { prefix, docs }, - util: { defineClass }, - modules: { - single, - series, - spacing, - position, - zIndex, - float, - clear, - display, - visibility, - overflow, - resize, - cursor, - boxSizing, - width, - height, - font, - verticalAlign, - textAlign, - textDecoration, - textTransform - } -} = require("./index"); + single, + series, + spacing, + position, + zIndex, + float, + clear, + display, + visibility, + overflow, + resize, + cursor, + boxSizing, + width, + height, + font, + verticalAlign, + textAlign, + textDecoration, + textTransform, +} = availableModules; const customModule = () => () => { return [defineClass("custom", { foo: "bar" }, { module: "custom module" })]; @@ -32,7 +36,7 @@ const customModule = () => () => { const breakPoints = { ns: "screen and (min-width: 30em)", m: "screen and (min-width: 30em) and (max-width: 60em)", - l: "screen and (min-width: 60em)" + l: "screen and (min-width: 60em)", }; const spacingScale = ["1rem", "2rem", "3rem", "4rem"]; @@ -42,26 +46,26 @@ const modules = [ property: "font-size", className: "f", values: ["1rem", "2rem", "3rem", "4rem"], - isResponsive: true + isResponsive: true, }), series({ property: "line-height", className: "lh", values: ["1", "2", "3", "4"], - isResponsive: true + isResponsive: true, }), single({ className: "error", props: { color: "red", - "font-weight": "bold" + "font-weight": "bold", }, - isResponsive: true + isResponsive: true, }), spacing({ marginValues: spacingScale, paddingValues: spacingScale, - isResponsive: true + isResponsive: true, }), customModule(), position(), @@ -78,13 +82,13 @@ const modules = [ max: 2147483647, initial: "initial", inherit: "inherit", - unset: "unset" - } + unset: "unset", + }, }), float(), clear(), display({ - whitelist: ["d:n", "d:b", "d:f", "d:if", "d:i", "d:ib", "d:tb"] + whitelist: ["d:n", "d:b", "d:f", "d:if", "d:i", "d:ib", "d:tb"], }), visibility(), overflow(), @@ -94,33 +98,33 @@ const modules = [ width({ widthValues: { 100: "100%", 75: "75%", 50: "50%", 25: "25%" }, maxWidthValues: { 100: "100%" }, - isResponsive: true + isResponsive: true, }), height({ heightValues: { 100: "100%", 75: "75%", 50: "50%", 25: "25%" }, maxHeightValues: { 100: "100%" }, - isResponsive: true + isResponsive: true, }), font({ names: { fz: "f" }, fontSizeValues: ["1rem", "1.25rem", "1.5rem", "2rem", "3rem"], - meta: { module: "typography" } + meta: { module: "typography" }, }), verticalAlign(), textAlign(), textDecoration(), - textTransform() + textTransform(), ]; const plugins = [prefix({ prefix: "x-" }), docs({ output: "docs.html" })]; -module.exports = { +export default { config: { breakPointSeparator: "-", seriesSeparator: "", pseudoClassesSeparator: "", - breakPoints + breakPoints, }, modules, - plugins + plugins, }; diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..ea841c7 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,18 @@ +{ + "compilerOptions": { + "module": "commonjs", + "esModuleInterop": true, + "target": "es2017", + "lib": ["es2017"], + "allowJs": true, + "noImplicitAny": true, + "moduleResolution": "node", + "sourceMap": true, + "outDir": "dist", + "baseUrl": ".", + "paths": { + "*": ["node_modules/*", "src/*"] + } + }, + "include": ["src/**/*"] +} diff --git a/yarn.lock b/yarn.lock index 48b450a..655d3aa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,39 +9,49 @@ dependencies: "@babel/highlight" "^7.0.0" -"@babel/generator@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.4.4.tgz#174a215eb843fc392c7edcaabeaa873de6e8f041" - integrity sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ== +"@babel/code-frame@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" + integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== dependencies: - "@babel/types" "^7.4.4" + "@babel/highlight" "^7.10.4" + +"@babel/generator@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.1.tgz#0d70be32bdaa03d7c51c8597dda76e0df1f15468" + integrity sha512-DB+6rafIdc9o72Yc3/Ph5h+6hUjeOp66pF0naQBgUFFuPqzQwIlPTm3xZR7YNvduIMtkDIj2t21LSQwnbCrXvg== + dependencies: + "@babel/types" "^7.12.1" jsesc "^2.5.1" - lodash "^4.17.11" source-map "^0.5.0" - trim-right "^1.0.1" -"@babel/helper-function-name@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" - integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw== +"@babel/helper-function-name@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a" + integrity sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ== dependencies: - "@babel/helper-get-function-arity" "^7.0.0" - "@babel/template" "^7.1.0" - "@babel/types" "^7.0.0" + "@babel/helper-get-function-arity" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.4" -"@babel/helper-get-function-arity@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" - integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ== +"@babel/helper-get-function-arity@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2" + integrity sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A== dependencies: - "@babel/types" "^7.0.0" + "@babel/types" "^7.10.4" -"@babel/helper-split-export-declaration@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677" - integrity sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q== +"@babel/helper-split-export-declaration@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz#f8a491244acf6a676158ac42072911ba83ad099f" + integrity sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg== dependencies: - "@babel/types" "^7.4.4" + "@babel/types" "^7.11.0" + +"@babel/helper-validator-identifier@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" + integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== "@babel/highlight@^7.0.0": version "7.0.0" @@ -52,58 +62,68 @@ esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/parser@^7.0.0", "@babel/parser@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.4.4.tgz#5977129431b8fe33471730d255ce8654ae1250b6" - integrity sha512-5pCS4mOsL+ANsFZGdvNLybx4wtqAZJ0MJjMHxvzI3bvIsz6sQvzW8XX92EYIkiPtIvcfG3Aj+Ir5VNyjnZhP7w== - -"@babel/runtime@^7.6.3": - version "7.7.7" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.7.7.tgz#194769ca8d6d7790ec23605af9ee3e42a0aa79cf" - integrity sha512-uCnC2JEVAu8AKB5do1WRIsvrdJ0flYx/A/9f/6chdacnEZ7LmavjdsDXr5ksYBegxtuTPR5Va9/+13QF/kFkCA== - dependencies: - regenerator-runtime "^0.13.2" - -"@babel/template@^7.1.0": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.4.4.tgz#f4b88d1225689a08f5bc3a17483545be9e4ed237" - integrity sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw== +"@babel/highlight@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" + integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.4.4" - "@babel/types" "^7.4.4" + "@babel/helper-validator-identifier" "^7.10.4" + chalk "^2.0.0" + js-tokens "^4.0.0" -"@babel/traverse@^7.0.0": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.4.4.tgz#0776f038f6d78361860b6823887d4f3937133fe8" - integrity sha512-Gw6qqkw/e6AGzlyj9KnkabJX7VcubqPtkUQVAwkc0wUMldr3A/hezNB3Rc5eIvId95iSGkGIOe5hh1kMKf951A== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/generator" "^7.4.4" - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-split-export-declaration" "^7.4.4" - "@babel/parser" "^7.4.4" - "@babel/types" "^7.4.4" +"@babel/parser@^7.10.4", "@babel/parser@^7.12.1", "@babel/parser@^7.7.0": + version "7.12.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.3.tgz#a305415ebe7a6c7023b40b5122a0662d928334cd" + integrity sha512-kFsOS0IbsuhO5ojF8Hc8z/8vEIOkylVBrjiZUbLTE3XFe0Qi+uu6HjzQixkFaqr0ZPAMZcBVxEwmsnsLPZ2Xsw== + +"@babel/template@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" + integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/parser" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/traverse@^7.7.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.1.tgz#941395e0c5cc86d5d3e75caa095d3924526f0c1e" + integrity sha512-MA3WPoRt1ZHo2ZmoGKNqi20YnPt0B1S0GTZEPhhd+hw2KGUzBlHuVunj6K4sNuK+reEvyiPwtp0cpaqLzJDmAw== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.12.1" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.11.0" + "@babel/parser" "^7.12.1" + "@babel/types" "^7.12.1" debug "^4.1.0" globals "^11.1.0" - lodash "^4.17.11" + lodash "^4.17.19" -"@babel/types@^7.0.0", "@babel/types@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.4.4.tgz#8db9e9a629bb7c29370009b4b779ed93fe57d5f0" - integrity sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ== +"@babel/types@^7.10.4", "@babel/types@^7.11.0", "@babel/types@^7.12.1", "@babel/types@^7.7.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.1.tgz#e109d9ab99a8de735be287ee3d6a9947a190c4ae" + integrity sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA== dependencies: - esutils "^2.0.2" - lodash "^4.17.11" + "@babel/helper-validator-identifier" "^7.10.4" + lodash "^4.17.19" to-fast-properties "^2.0.0" -"@mrmlnc/readdir-enhanced@^2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" - integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== +"@eslint/eslintrc@^0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.2.1.tgz#f72069c330461a06684d119384435e12a5d76e3c" + integrity sha512-XRUeBZ5zBWLYgSANMpThFddrZZkEbGHgUdt5UJjZfnlN9BGCiUBrf+nvbRupSjMvqzwnQN0qwCmOxITt1cfywA== dependencies: - call-me-maybe "^1.0.1" - glob-to-regexp "^0.3.0" + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + lodash "^4.17.19" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" "@nodelib/fs.scandir@2.1.3": version "2.1.3" @@ -118,11 +138,6 @@ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== -"@nodelib/fs.stat@^1.1.2": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" - integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== - "@nodelib/fs.walk@^1.2.3": version "1.2.4" resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976" @@ -131,61 +146,110 @@ "@nodelib/fs.scandir" "2.1.3" fastq "^1.6.0" -"@samverschueren/stream-to-observable@^0.3.0": - version "0.3.0" - resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f" - integrity sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg== - dependencies: - any-observable "^0.3.0" - "@types/color-name@^1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== -"@types/events@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" - integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== - -"@types/glob@^7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" - integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== - dependencies: - "@types/events" "*" - "@types/minimatch" "*" - "@types/node" "*" +"@types/json-schema@^7.0.3": + version "7.0.6" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" + integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== -"@types/minimatch@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" - integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= -"@types/node@*": - version "12.0.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.0.0.tgz#d11813b9c0ff8aaca29f04cbc12817f4c7d656e5" - integrity sha512-Jrb/x3HT4PTJp6a4avhmJCDEVrPdqLfl3e8GGMbpkGGdwAV5UGlIs4vVEfsHHfylZVOKZWpOqmqFH8CbfOZ6kg== +"@types/lodash@^4.14.164": + version "4.14.164" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.164.tgz#52348bcf909ac7b4c1bcbeda5c23135176e5dfa0" + integrity sha512-fXCEmONnrtbYUc5014avwBeMdhHHO8YJCkOBflUL9EoJBSKZ1dei+VO74fA7JkTHZ1GvZack2TyIw5U+1lT8jg== "@types/parse-json@^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== +"@typescript-eslint/eslint-plugin@^4.6.0": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.6.0.tgz#210cd538bb703f883aff81d3996961f5dba31fdb" + integrity sha512-1+419X+Ynijytr1iWI+/IcX/kJryc78YNpdaXR1aRO1sU3bC0vZrIAF1tIX7rudVI84W7o7M4zo5p1aVt70fAg== + dependencies: + "@typescript-eslint/experimental-utils" "4.6.0" + "@typescript-eslint/scope-manager" "4.6.0" + debug "^4.1.1" + functional-red-black-tree "^1.0.1" + regexpp "^3.0.0" + semver "^7.3.2" + tsutils "^3.17.1" + +"@typescript-eslint/experimental-utils@4.6.0": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.6.0.tgz#f750aef4dd8e5970b5c36084f0a5ca2f0db309a4" + integrity sha512-pnh6Beh2/4xjJVNL+keP49DFHk3orDHHFylSp3WEjtgW3y1U+6l+jNnJrGlbs6qhAz5z96aFmmbUyKhunXKvKw== + dependencies: + "@types/json-schema" "^7.0.3" + "@typescript-eslint/scope-manager" "4.6.0" + "@typescript-eslint/types" "4.6.0" + "@typescript-eslint/typescript-estree" "4.6.0" + eslint-scope "^5.0.0" + eslint-utils "^2.0.0" -acorn-jsx@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.1.0.tgz#294adb71b57398b0680015f0a38c563ee1db5384" - integrity sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw== +"@typescript-eslint/parser@^4.6.0": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.6.0.tgz#7e9ff7df2f21d5c8f65f17add3b99eeeec33199d" + integrity sha512-Dj6NJxBhbdbPSZ5DYsQqpR32MwujF772F2H3VojWU6iT4AqL4BKuoNWOPFCoSZvCcADDvQjDpa6OLDAaiZPz2Q== + dependencies: + "@typescript-eslint/scope-manager" "4.6.0" + "@typescript-eslint/types" "4.6.0" + "@typescript-eslint/typescript-estree" "4.6.0" + debug "^4.1.1" -acorn@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.0.tgz#949d36f2c292535da602283586c2477c57eb2d6c" - integrity sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ== +"@typescript-eslint/scope-manager@4.6.0": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.6.0.tgz#b7d8b57fe354047a72dfb31881d9643092838662" + integrity sha512-uZx5KvStXP/lwrMrfQQwDNvh2ppiXzz5TmyTVHb+5TfZ3sUP7U1onlz3pjoWrK9konRyFe1czyxObWTly27Ang== + dependencies: + "@typescript-eslint/types" "4.6.0" + "@typescript-eslint/visitor-keys" "4.6.0" + +"@typescript-eslint/types@4.6.0": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.6.0.tgz#157ca925637fd53c193c6bf226a6c02b752dde2f" + integrity sha512-5FAgjqH68SfFG4UTtIFv+rqYJg0nLjfkjD0iv+5O27a0xEeNZ5rZNDvFGZDizlCD1Ifj7MAbSW2DPMrf0E9zjA== + +"@typescript-eslint/typescript-estree@4.6.0": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.6.0.tgz#85bd98dcc8280511cfc5b2ce7b03a9ffa1732b08" + integrity sha512-s4Z9qubMrAo/tw0CbN0IN4AtfwuehGXVZM0CHNMdfYMGBDhPdwTEpBrecwhP7dRJu6d9tT9ECYNaWDHvlFSngA== + dependencies: + "@typescript-eslint/types" "4.6.0" + "@typescript-eslint/visitor-keys" "4.6.0" + debug "^4.1.1" + globby "^11.0.1" + is-glob "^4.0.1" + lodash "^4.17.15" + semver "^7.3.2" + tsutils "^3.17.1" + +"@typescript-eslint/visitor-keys@4.6.0": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.6.0.tgz#fb05d6393891b0a089b243fc8f9fb8039383d5da" + integrity sha512-38Aa9Ztl0XyFPVzmutHXqDMCu15Xx8yKvUo38Gu3GhsuckCh3StPI5t2WIO9LHEsOH7MLmlGfKUisU8eW1Sjhg== + dependencies: + "@typescript-eslint/types" "4.6.0" + eslint-visitor-keys "^2.0.0" + +acorn-jsx@^5.2.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" + integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== + +acorn@^7.4.0: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== aggregate-error@^3.0.0: version "3.0.1" @@ -205,6 +269,16 @@ ajv@^6.10.0: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + ajv@^6.9.1: version "6.10.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1" @@ -215,27 +289,17 @@ ajv@^6.9.1: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ansi-escapes@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" - integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== -ansi-escapes@^4.2.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.0.tgz#a4ce2b33d6b214b7950d8595c212f12ac9cc569d" - integrity sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg== +ansi-escapes@^4.3.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" + integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== dependencies: - type-fest "^0.8.1" - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + type-fest "^0.11.0" ansi-regex@^4.1.0: version "4.1.0" @@ -247,11 +311,6 @@ ansi-regex@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= - ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -259,6 +318,13 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" +ansi-styles@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + ansi-styles@^4.1.0: version "4.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" @@ -267,31 +333,18 @@ ansi-styles@^4.1.0: "@types/color-name" "^1.1.1" color-convert "^2.0.1" -any-observable@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" - integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog== - -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== +anymatch@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" + integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - -aproba@^1.0.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + normalize-path "^3.0.0" + picomatch "^2.0.4" -are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" - integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== argparse@^1.0.7: version "1.0.10" @@ -300,72 +353,52 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= - -array-union@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= +array-includes@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" + integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== dependencies: - array-uniq "^1.0.1" + define-properties "^1.1.3" + es-abstract "^1.17.0" + is-string "^1.0.5" array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= +array.prototype.flat@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b" + integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" astral-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== -async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== -atob@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== -babel-eslint@^10.0.3: - version "10.0.3" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.0.3.tgz#81a2c669be0f205e19462fed2482d33e4687a88a" - integrity sha512-z3U7eMY6r/3f3/JB9mTsLjyxrv0Yb1zb8PCWCLpguxfCzBIZUwy23R1t/XKewP+8mEN2Ck8Dtr4q20z6ce6SoA== +babel-eslint@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" + integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== dependencies: "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.0.0" - "@babel/traverse" "^7.0.0" - "@babel/types" "^7.0.0" + "@babel/parser" "^7.7.0" + "@babel/traverse" "^7.7.0" + "@babel/types" "^7.7.0" eslint-visitor-keys "^1.0.0" resolve "^1.12.0" @@ -374,23 +407,10 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== +binary-extensions@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" + integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== brace-expansion@^1.1.7: version "1.1.11" @@ -400,95 +420,37 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^2.3.1, braces@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - -braces@^3.0.1: +braces@^3.0.1, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + bytes@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -call-me-maybe@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" - integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= - -caller-callsite@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" - integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= - dependencies: - callsites "^2.0.0" - -caller-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" - integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= +call-bind@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.0.tgz#24127054bb3f9bdcb4b1fb82418186072f77b8ce" + integrity sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w== dependencies: - caller-callsite "^2.0.0" - -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" - integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + function-bind "^1.1.1" + get-intrinsic "^1.0.0" callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camelcase@^5.0.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -chalk@^1.0.0, chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -497,70 +459,39 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== +chalk@^4.0.0, chalk@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== dependencies: ansi-styles "^4.1.0" supports-color "^7.1.0" -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - -chokidar@^2.0.0: - version "2.1.5" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.5.tgz#0ae8434d962281a5f56c72869e79cb6d9d86ad4d" - integrity sha512-i0TprVWp+Kj4WRPtInjexJ8Q+BqTE909VpH8xVhXrJkoc5QC8VO9TryGOqTr+2hljzc1sC62t22h5tZePodM/A== - dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" +chokidar@^3.3.0: + version "3.4.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.3.tgz#c1df38231448e45ca4ac588e6c79573ba6a57d5b" + integrity sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.5.0" optionalDependencies: - fsevents "^1.2.7" - -chownr@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" - integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== + fsevents "~2.1.2" ci-info@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - clean-stack@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== -cli-cursor@^2.0.0, cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= - dependencies: - restore-cursor "^2.0.0" - cli-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" @@ -568,40 +499,22 @@ cli-cursor@^3.1.0: dependencies: restore-cursor "^3.1.0" -cli-truncate@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" - integrity sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ= - dependencies: - slice-ansi "0.0.4" - string-width "^1.0.1" - -cli-width@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" - integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= - -cliui@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" - integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== +cli-truncate@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" + integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi "^2.0.0" - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + slice-ansi "^3.0.0" + string-width "^4.2.0" -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= +cliui@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.3.tgz#ef180f26c8d9bff3927ee52428bfec2090427981" + integrity sha512-Gj3QHTkVMPKqwP3f7B4KPkBZRMR9r4rfi5bXFpg1a+Svvj8l7q5CnkBkVQzfxT5DFSsGk2+PascOgL0JYkL2kw== dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" color-convert@^1.9.0: version "1.9.3" @@ -627,82 +540,41 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -commander@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.0.tgz#545983a0603fe425bc672d66c9e3c89c42121a83" - integrity sha512-NIQrwvv9V39FHgGFm36+U9SMQzbiHvU79k+iADraJTpmrFFfx7Ds0IvDoAdZsDrknlkRk14OYoWXb57uTh7/sw== +colorette@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" + integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== -commander@^2.20.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== +commander@6.2.0, commander@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.0.tgz#b990bfb8ac030aedc6d11bc04d1488ffef56db75" + integrity sha512-zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q== -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== +compare-versions@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62" + integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA== concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - -core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -cosmiconfig@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-4.0.0.tgz#760391549580bbd2df1e562bc177b13c290972dc" - integrity sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ== - dependencies: - is-directory "^0.3.1" - js-yaml "^3.9.0" - parse-json "^4.0.0" - require-from-string "^2.0.1" - -cosmiconfig@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" - integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== - dependencies: - import-fresh "^2.0.0" - is-directory "^0.3.1" - js-yaml "^3.13.1" - parse-json "^4.0.0" +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= -cosmiconfig@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" - integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== +cosmiconfig@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" + integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== dependencies: "@types/parse-json" "^4.0.0" - import-fresh "^3.1.0" + import-fresh "^3.2.1" parse-json "^5.0.0" path-type "^4.0.0" - yaml "^1.7.2" - -cross-spawn@^6.0.0, cross-spawn@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" + yaml "^1.10.0" cross-spawn@^7.0.0: version "7.0.1" @@ -713,6 +585,15 @@ cross-spawn@^7.0.0: shebang-command "^2.0.0" which "^2.0.1" +cross-spawn@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + css-color-names@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.1.tgz#5d0548fa256456ede4a9a0c2ac7ab19d3eb1ad81" @@ -758,10 +639,10 @@ cssesc@^0.1.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" integrity sha1-yBSQPkViM3GgR3tAEJqq++6t27Q= -cssstats@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/cssstats/-/cssstats-3.4.0.tgz#1977e78b51689425a8bc39a9fa5c92c2284ff090" - integrity sha512-f0yU5/cWetXYfT3rsRGTic3D88Gxdod4vCahmvLtM2qa6l19dDZ2+PwhCzZhYiNZj5JEcKeosD/BVDni2rnEvQ== +cssstats@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/cssstats/-/cssstats-3.4.1.tgz#d5e5b0e356ed60126ae299e9107b67c96fca9189" + integrity sha512-j6iBsr9z1DfIKEbZaJSANi4hOq4GN1Ks2zB/MPBYh/9mbqq0wAQ5f474jVkVFbLk8bO6vLM23rE4Dn0F6XAbPw== dependencies: bytes "^3.0.0" css-selector-tokenizer "^0.7.0" @@ -781,12 +662,7 @@ cssstats@^3.4.0: postcss-safe-parser "^3.0.1" specificity "^0.3.2" -date-fns@^1.27.2: - version "1.30.1" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" - integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== - -debug@^2.2.0, debug@^2.3.3: +debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -800,27 +676,19 @@ debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: dependencies: ms "^2.1.1" -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= +debug@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1" + integrity sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg== + dependencies: + ms "2.1.2" dedent@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -deep-is@~0.1.3: +deep-is@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= @@ -830,63 +698,22 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -del@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/del/-/del-5.1.0.tgz#d9487c94e367410e6eff2925ee58c0c84a75b3a7" - integrity sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA== +define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== dependencies: - globby "^10.0.1" - graceful-fs "^4.2.2" - is-glob "^4.0.1" - is-path-cwd "^2.2.0" - is-path-inside "^3.0.1" - p-map "^3.0.0" - rimraf "^3.0.0" - slash "^3.0.0" + object-keys "^1.0.12" -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= - -dependency-graph@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/dependency-graph/-/dependency-graph-0.8.0.tgz#2da2d35ed852ecc24a5d6c17788ba57c3708755b" - integrity sha512-DCvzSq2UiMsuLnj/9AL484ummEgLtZIcRS7YvtO38QnpX3vqh9nJ8P+zhu8Ja+SmLrBHO2iDbva20jq38qvBkQ== - -detect-libc@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= +dependency-graph@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/dependency-graph/-/dependency-graph-0.9.0.tgz#11aed7e203bc8b00f48356d92db27b265c445318" + integrity sha512-9YLIBURXj4DJMFALxXw9K3Y3rwb5Fk0X5/8ipCzaN84+gKxoHK43tVKRNakCQbiEx07E8Uwhuq21BpUagFhZ8w== -dir-glob@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" - integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== - dependencies: - path-type "^3.0.0" +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== dir-glob@^3.0.1: version "3.0.1" @@ -895,6 +722,14 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" +doctrine@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + doctrine@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" @@ -907,11 +742,6 @@ duplexer@^0.1.1: resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= -elegant-spinner@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" - integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4= - emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" @@ -929,44 +759,135 @@ end-of-stream@^1.1.0: dependencies: once "^1.4.0" -error-ex@^1.3.1: +enquirer@^2.3.5, enquirer@^2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + +error-ex@^1.2.0, error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: is-arrayish "^0.2.1" -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: +es-abstract@^1.17.0, es-abstract@^1.17.0-next.1: + version "1.17.7" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.7.tgz#a4de61b2f66989fc7421676c1cb9787573ace54c" + integrity sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.2.2" + is-regex "^1.1.1" + object-inspect "^1.8.0" + object-keys "^1.1.1" + object.assign "^4.1.1" + string.prototype.trimend "^1.0.1" + string.prototype.trimstart "^1.0.1" + +es-abstract@^1.18.0-next.1: + version "1.18.0-next.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.1.tgz#6e3a0a4bda717e5023ab3b8e90bec36108d22c68" + integrity sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.2.2" + is-negative-zero "^2.0.0" + is-regex "^1.1.1" + object-inspect "^1.8.0" + object-keys "^1.1.1" + object.assign "^4.1.1" + string.prototype.trimend "^1.0.1" + string.prototype.trimstart "^1.0.1" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -eslint-config-prettier@^6.9.0: - version "6.9.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.9.0.tgz#430d24822e82f7deb1e22a435bfa3999fae4ad64" - integrity sha512-k4E14HBtcLv0uqThaI6I/n1LEqROp8XaPu6SO9Z32u5NlGRC07Enu1Bh2KEFw4FNHbekH8yzbIU9kUGxbiGmCA== +eslint-config-prettier@^6.15.0: + version "6.15.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz#7f93f6cb7d45a92f1537a70ecc06366e1ac6fed9" + integrity sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw== dependencies: get-stdin "^6.0.0" -eslint-plugin-prettier@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.2.tgz#432e5a667666ab84ce72f945c72f77d996a5c9ba" - integrity sha512-GlolCC9y3XZfv3RQfwGew7NnuFDKsfI4lbvRK+PIIo23SFH+LemGs4cKwzAaRa+Mdb+lQO/STaIayno8T5sJJA== +eslint-import-resolver-node@^0.3.4: + version "0.3.4" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" + integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== + dependencies: + debug "^2.6.9" + resolve "^1.13.1" + +eslint-module-utils@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" + integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== + dependencies: + debug "^2.6.9" + pkg-dir "^2.0.0" + +eslint-plugin-import@^2.22.1: + version "2.22.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz#0896c7e6a0cf44109a2d97b95903c2bb689d7702" + integrity sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw== + dependencies: + array-includes "^3.1.1" + array.prototype.flat "^1.2.3" + contains-path "^0.1.0" + debug "^2.6.9" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.4" + eslint-module-utils "^2.6.0" + has "^1.0.3" + minimatch "^3.0.4" + object.values "^1.1.1" + read-pkg-up "^2.0.0" + resolve "^1.17.0" + tsconfig-paths "^3.9.0" + +eslint-plugin-prettier@^3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.4.tgz#168ab43154e2ea57db992a2cd097c828171f75c2" + integrity sha512-jZDa8z76klRqo+TdGDTFJSavwbnWK2ZpqGKNZ+VvweMW516pDUMmQ2koXvxEE4JhzNvTv+radye/bWGBmA6jmg== dependencies: prettier-linter-helpers "^1.0.0" -eslint-scope@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" - integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw== +eslint-scope@^5.0.0, eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== dependencies: - esrecurse "^4.1.0" + esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-utils@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" - integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== +eslint-utils@^2.0.0, eslint-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== dependencies: eslint-visitor-keys "^1.1.0" @@ -980,22 +901,34 @@ eslint-visitor-keys@^1.1.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== -eslint@^6.8.0: - version "6.8.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" - integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== +eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint-visitor-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" + integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== + +eslint@^7.12.1: + version "7.12.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.12.1.tgz#bd9a81fa67a6cfd51656cdb88812ce49ccec5801" + integrity sha512-HlMTEdr/LicJfN08LB3nM1rRYliDXOmfoO4vj39xN6BLpFzF00hbwBoqHk8UcJ2M/3nlARZWy/mslvGEuZFvsg== dependencies: "@babel/code-frame" "^7.0.0" + "@eslint/eslintrc" "^0.2.1" ajv "^6.10.0" - chalk "^2.1.0" - cross-spawn "^6.0.5" + chalk "^4.0.0" + cross-spawn "^7.0.2" debug "^4.0.1" doctrine "^3.0.0" - eslint-scope "^5.0.0" - eslint-utils "^1.4.3" - eslint-visitor-keys "^1.1.0" - espree "^6.1.2" - esquery "^1.0.1" + enquirer "^2.3.5" + eslint-scope "^5.1.1" + eslint-utils "^2.1.0" + eslint-visitor-keys "^2.0.0" + espree "^7.3.0" + esquery "^1.2.0" esutils "^2.0.2" file-entry-cache "^5.0.1" functional-red-black-tree "^1.0.1" @@ -1004,181 +937,114 @@ eslint@^6.8.0: ignore "^4.0.6" import-fresh "^3.0.0" imurmurhash "^0.1.4" - inquirer "^7.0.0" is-glob "^4.0.0" js-yaml "^3.13.1" json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.14" + levn "^0.4.1" + lodash "^4.17.19" minimatch "^3.0.4" - mkdirp "^0.5.1" natural-compare "^1.4.0" - optionator "^0.8.3" + optionator "^0.9.1" progress "^2.0.0" - regexpp "^2.0.1" - semver "^6.1.2" - strip-ansi "^5.2.0" - strip-json-comments "^3.0.1" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" table "^5.2.3" text-table "^0.2.0" v8-compile-cache "^2.0.3" -espree@^6.1.2: - version "6.1.2" - resolved "https://registry.yarnpkg.com/espree/-/espree-6.1.2.tgz#6c272650932b4f91c3714e5e7b5f5e2ecf47262d" - integrity sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA== +espree@^7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.0.tgz#dc30437cf67947cf576121ebd780f15eeac72348" + integrity sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw== dependencies: - acorn "^7.1.0" - acorn-jsx "^5.1.0" - eslint-visitor-keys "^1.1.0" + acorn "^7.4.0" + acorn-jsx "^5.2.0" + eslint-visitor-keys "^1.3.0" esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" - integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA== +esquery@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" + integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== dependencies: - estraverse "^4.0.0" + estraverse "^5.1.0" -esrecurse@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" - integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== dependencies: - estraverse "^4.1.0" + estraverse "^5.2.0" -estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: +estraverse@^4.1.1: version "4.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" + integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== + esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -execa@^2.0.3: - version "2.1.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-2.1.0.tgz#e5d3ecd837d2a60ec50f3da78fd39767747bbe99" - integrity sha512-Y/URAVapfbYy2Xp/gb6A0E7iR8xeqOCXsuuaoMn7A5PzrXUK84E1gyiEfq0wQd/GHA6GsoHWwhNq8anb0mleIw== +execa@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== dependencies: cross-spawn "^7.0.0" get-stream "^5.0.0" + human-signals "^1.1.1" is-stream "^2.0.0" merge-stream "^2.0.0" - npm-run-path "^3.0.0" + npm-run-path "^4.0.0" onetime "^5.1.0" - p-finally "^2.0.0" signal-exit "^3.0.2" strip-final-newline "^2.0.0" -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -external-editor@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27" - integrity sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - fast-deep-equal@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + fast-diff@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== -fast-glob@^2.2.6: - version "2.2.6" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.6.tgz#a5d5b697ec8deda468d85a74035290a025a95295" - integrity sha512-0BvMaZc1k9F+MeWWMe8pL6YltFzZYcJsYU7D4JyDA6PAczaXvxqQQ/z+mDF7/4Mw01DeUc+i3CTKajnkANkV4w== - dependencies: - "@mrmlnc/readdir-enhanced" "^2.2.1" - "@nodelib/fs.stat" "^1.1.2" - glob-parent "^3.1.0" - is-glob "^4.0.0" - merge2 "^1.2.3" - micromatch "^3.1.10" - -fast-glob@^3.0.3: - version "3.1.1" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.1.1.tgz#87ee30e9e9f3eb40d6f254a7997655da753d7c82" - integrity sha512-nTCREpBY8w8r+boyFYAx21iL6faSsQynliPHM4Uf56SbkyohCNxpVPEH9xrF5TXKy+IsjkPUHDKiUkzBVRXn9g== +fast-glob@^3.1.1: + version "3.2.4" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.4.tgz#d20aefbf99579383e7f3cc66529158c9b98554d3" + integrity sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" glob-parent "^5.1.0" merge2 "^1.3.0" micromatch "^4.0.2" + picomatch "^2.2.1" fast-json-stable-stringify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= -fast-levenshtein@~2.0.6: +fast-levenshtein@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= @@ -1195,25 +1061,10 @@ fastq@^1.6.0: dependencies: reusify "^1.0.0" -figures@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" - integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4= - dependencies: - escape-string-regexp "^1.0.5" - object-assign "^4.1.0" - -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= - dependencies: - escape-string-regexp "^1.0.5" - -figures@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.1.0.tgz#4b198dd07d8d71530642864af2d45dd9e459c4ec" - integrity sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg== +figures@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== dependencies: escape-string-regexp "^1.0.5" @@ -1224,16 +1075,6 @@ file-entry-cache@^5.0.1: dependencies: flat-cache "^2.0.1" -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -1241,12 +1082,12 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= dependencies: - locate-path "^3.0.0" + locate-path "^2.0.0" find-up@^4.0.0: version "4.1.0" @@ -1256,6 +1097,13 @@ find-up@^4.0.0: locate-path "^5.0.0" path-exists "^4.0.0" +find-versions@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-3.2.0.tgz#10297f98030a786829681690545ef659ed1d254e" + integrity sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww== + dependencies: + semver-regex "^2.0.0" + flat-cache@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" @@ -1270,70 +1118,49 @@ flatted@^2.0.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.0.tgz#55122b6536ea496b4b44893ee2608141d10d9916" integrity sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg== -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= +fs-extra@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc" + integrity sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ== dependencies: - map-cache "^0.2.2" - -fs-extra@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" - integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-minipass@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" - integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ== - dependencies: - minipass "^2.2.1" + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^1.0.0" fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^1.2.7: - version "1.2.9" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f" - integrity sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw== - dependencies: - nan "^2.12.1" - node-pre-gyp "^0.12.0" +fsevents@~2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" + integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - -get-caller-file@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" - integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.0.1.tgz#94a9768fcbdd0595a1c9273aacf4c89d075631be" + integrity sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" get-own-enumerable-property-symbols@^3.0.0: version "3.0.0" @@ -1345,17 +1172,10 @@ get-stdin@^6.0.0: resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== -get-stdin@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-7.0.0.tgz#8d5de98f15171a125c5e516643c7a6d0ea8a96f6" - integrity sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ== - -get-stream@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" +get-stdin@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53" + integrity sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg== get-stream@^5.0.0: version "5.1.0" @@ -1364,19 +1184,6 @@ get-stream@^5.0.0: dependencies: pump "^3.0.0" -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - glob-parent@^5.0.0, glob-parent@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" @@ -1384,10 +1191,12 @@ glob-parent@^5.0.0, glob-parent@^5.1.0: dependencies: is-glob "^4.0.1" -glob-to-regexp@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" - integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= +glob-parent@~5.1.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" + integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== + dependencies: + is-glob "^4.0.1" glob@^7.1.3: version "7.1.4" @@ -1413,44 +1222,28 @@ globals@^12.1.0: dependencies: type-fest "^0.8.1" -globby@^10.0.1: - version "10.0.2" - resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.2.tgz#277593e745acaa4646c3ab411289ec47a0392543" - integrity sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg== +globby@^11.0.0, globby@^11.0.1: + version "11.0.1" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357" + integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ== dependencies: - "@types/glob" "^7.1.1" array-union "^2.1.0" dir-glob "^3.0.1" - fast-glob "^3.0.3" - glob "^7.1.3" - ignore "^5.1.1" - merge2 "^1.2.3" + fast-glob "^3.1.1" + ignore "^5.1.4" + merge2 "^1.3.0" slash "^3.0.0" -globby@^9.0.0: - version "9.2.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d" - integrity sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg== - dependencies: - "@types/glob" "^7.1.1" - array-union "^1.0.2" - dir-glob "^2.2.2" - fast-glob "^2.2.6" - glob "^7.1.3" - ignore "^4.0.3" - pify "^4.0.1" - slash "^2.0.0" +graceful-fs@^4.1.2, graceful-fs@^4.2.0: + version "4.2.4" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" + integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== -graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: +graceful-fs@^4.1.6: version "4.1.15" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== -graceful-fs@^4.2.2: - version "4.2.3" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" - integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== - gzip-size@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-4.1.0.tgz#8ae096257eabe7d69c45be2b67c448124ffb517c" @@ -1459,13 +1252,6 @@ gzip-size@^4.1.0: duplexer "^0.1.1" pify "^3.0.0" -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= - dependencies: - ansi-regex "^2.0.0" - has-class-selector@^3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/has-class-selector/-/has-class-selector-3.3.1.tgz#80740e93357bc0b96da42bc1d06e2a8a7d89943f" @@ -1507,47 +1293,28 @@ has-pseudo-element@^3.3.1: dependencies: pseudo-elements "1.0.0" -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= +has-symbols@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" + integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" + function-bind "^1.1.1" hex-color-regex@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== +hosted-git-info@^2.1.4: + version "2.8.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" + integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== + hsl-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" @@ -1558,59 +1325,43 @@ hsla-regex@^1.0.0: resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= -husky@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/husky/-/husky-4.0.0.tgz#654a72ecd7d59565de5360365a7d78a7bbb05286" - integrity sha512-h9kcWWpZgpGLrhlaBBtbMtA9Tsqu0yrfKSCU9ax6vulTvMSvVWEmFOsBehiLD38vJZVeFyrif5AcpcoiM0LJmw== +human-signals@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" + integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== + +husky@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/husky/-/husky-4.3.0.tgz#0b2ec1d66424e9219d359e26a51c58ec5278f0de" + integrity sha512-tTMeLCLqSBqnflBZnlVDhpaIMucSGaYyX6855jM4AguGeWCeSzNdb1mfyWduTZ3pe3SJVvVWGL0jO1iKZVPfTA== dependencies: - chalk "^3.0.0" + chalk "^4.0.0" ci-info "^2.0.0" - cosmiconfig "^6.0.0" - get-stdin "^7.0.0" + compare-versions "^3.6.0" + cosmiconfig "^7.0.0" + find-versions "^3.2.0" opencollective-postinstall "^2.0.2" pkg-dir "^4.2.0" please-upgrade-node "^3.2.0" slash "^3.0.0" which-pm-runs "^1.0.0" -iconv-lite@^0.4.24, iconv-lite@^0.4.4: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -ignore-walk@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" - integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ== - dependencies: - minimatch "^3.0.4" - -ignore@^4.0.3, ignore@^4.0.6: +ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -ignore@^5.1.1: - version "5.1.4" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf" - integrity sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A== +ignore@^5.1.4: + version "5.1.8" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" + integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== -import-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" - integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= - dependencies: - import-from "^2.1.0" - -import-fresh@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" - integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= +import-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-3.0.0.tgz#20845547718015126ea9b3676b7592fb8bd4cf92" + integrity sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg== dependencies: - caller-path "^2.0.0" - resolve-from "^3.0.0" + import-from "^3.0.0" import-fresh@^3.0.0: version "3.0.0" @@ -1620,7 +1371,7 @@ import-fresh@^3.0.0: parent-module "^1.0.0" resolve-from "^4.0.0" -import-fresh@^3.1.0: +import-fresh@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== @@ -1628,23 +1379,18 @@ import-fresh@^3.1.0: parent-module "^1.0.0" resolve-from "^4.0.0" -import-from@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" - integrity sha1-M1238qev/VOqpHHUuAId7ja387E= +import-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-3.0.0.tgz#055cfec38cd5a27d8057ca51376d7d3bf0891966" + integrity sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ== dependencies: - resolve-from "^3.0.0" + resolve-from "^5.0.0" imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= -indent-string@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" - integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= - indent-string@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" @@ -1658,65 +1404,22 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.3, inherits@~2.0.3: +inherits@2: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@~1.3.0: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== - -inquirer@^7.0.0: - version "7.0.3" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.3.tgz#f9b4cd2dff58b9f73e8d43759436ace15bed4567" - integrity sha512-+OiOVeVydu4hnCGLCSX+wedovR/Yzskv9BFqUNNKq9uU2qg7LCcCo3R86S2E7WLo0y/x2pnEZfZe1CoYnORUAw== - dependencies: - ansi-escapes "^4.2.1" - chalk "^2.4.2" - cli-cursor "^3.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.15" - mute-stream "0.0.8" - run-async "^2.2.0" - rxjs "^6.5.3" - string-width "^4.1.0" - strip-ansi "^5.1.0" - through "^2.3.6" - -invert-kv@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" - integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== dependencies: - binary-extensions "^1.0.0" + binary-extensions "^2.0.0" is-blank@1.0.0: version "1.0.0" @@ -1734,10 +1437,17 @@ is-blank@^2.1.0: is-empty latest is-whitespace latest -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== +is-callable@^1.1.4, is-callable@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9" + integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA== + +is-core-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.0.0.tgz#58531b70aed1db7c0e8d4eb1a0a2d1ddd64bd12d" + integrity sha512-jq1AH6C8MuteOoBPwkxHafmByhL9j5q4OaPGdbuD+ZtQJVzH+i6E3BJDQcBA09k57i2Hh2yQbEG8yObZ0jdlWw== + dependencies: + has "^1.0.3" is-css-shorthand@^1.0.1: version "1.0.1" @@ -1746,42 +1456,15 @@ is-css-shorthand@^1.0.1: dependencies: css-shorthand-properties "^1.0.0" -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: +is-date-object@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" + integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== -is-directory@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" - integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= +is-docker@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.1.1.tgz#4125a88e44e450d384e09047ede71adc2d144156" + integrity sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw== is-empty@0.0.1: version "0.0.1" @@ -1793,30 +1476,11 @@ is-empty@latest: resolved "https://registry.yarnpkg.com/is-empty/-/is-empty-1.2.0.tgz#de9bb5b278738a05a0b09a57e1fb4d4a341a9f6b" integrity sha1-3pu1snhzigWgsJpX4ftNSjQan2s= -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^2.1.0, is-extglob@^2.1.1: +is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" @@ -1827,26 +1491,17 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - dependencies: - is-extglob "^2.1.0" - -is-glob@^4.0.0, is-glob@^4.0.1: +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== dependencies: is-extglob "^2.1.1" -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" +is-negative-zero@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.0.tgz#9553b121b0fac28869da9ed459e20c7543788461" + integrity sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE= is-number@^7.0.0: version "7.0.0" @@ -1858,30 +1513,6 @@ is-obj@^1.0.1: resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= -is-observable@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-1.1.0.tgz#b3e986c8f44de950867cab5403f5a3465005975e" - integrity sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA== - dependencies: - symbol-observable "^1.1.0" - -is-path-cwd@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" - integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== - -is-path-inside@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" - integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== - -is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - is-present@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-present/-/is-present-1.0.0.tgz#29c9b8e8e6e786a594c292fc7239aa24be70b80c" @@ -1889,26 +1520,35 @@ is-present@^1.0.0: dependencies: is-blank "1.0.0" -is-promise@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" - integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= +is-regex@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" + integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== + dependencies: + has-symbols "^1.0.1" is-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= -is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= - is-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== +is-string@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" + integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== + +is-symbol@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== + dependencies: + has-symbols "^1.0.1" + is-vendor-prefixed@^3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/is-vendor-prefixed/-/is-vendor-prefixed-3.3.1.tgz#0746b332b4c651bb20f16fd6aa996e9a87c09673" @@ -1921,17 +1561,14 @@ is-whitespace@^0.3.0, is-whitespace@latest: resolved "https://registry.yarnpkg.com/is-whitespace/-/is-whitespace-0.3.0.tgz#1639ecb1be036aec69a54cbb401cfbed7114ab7f" integrity sha1-Fjnssb4DauxppUy7QBz77XEUq38= -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= +is-wsl@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" -isarray@1.0.0, isarray@~1.0.0: +isarray@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= @@ -1941,24 +1578,12 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@^3.13.1, js-yaml@^3.9.0: +js-yaml@^3.13.1: version "3.13.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== @@ -1991,127 +1616,86 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= - optionalDependencies: - graceful-fs "^4.1.6" - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" - integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== + minimist "^1.2.0" -lcid@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" - integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== dependencies: - invert-kv "^2.0.0" + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" -levn@^0.3.0, levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" + prelude-ls "^1.2.1" + type-check "~0.4.0" lines-and-columns@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= -lint-staged@^9.5.0: - version "9.5.0" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-9.5.0.tgz#290ec605252af646d9b74d73a0fa118362b05a33" - integrity sha512-nawMob9cb/G1J98nb8v3VC/E8rcX1rryUYXVZ69aT9kde6YWX+uvNOEHY5yf2gcWcTJGiD0kqXmCnS3oD75GIA== +lint-staged@^10.5.1: + version "10.5.1" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.5.1.tgz#901e915c2360072dded0e7d752a0d9a49e079daa" + integrity sha512-fTkTGFtwFIJJzn/PbUO3RXyEBHIhbfYBE7+rJyLcOXabViaO/h6OslgeK6zpeUtzkDrzkgyAYDTLAwx6JzDTHw== dependencies: - chalk "^2.4.2" - commander "^2.20.0" - cosmiconfig "^5.2.1" - debug "^4.1.1" + chalk "^4.1.0" + cli-truncate "^2.1.0" + commander "^6.2.0" + cosmiconfig "^7.0.0" + debug "^4.2.0" dedent "^0.7.0" - del "^5.0.0" - execa "^2.0.3" - listr "^0.14.3" - log-symbols "^3.0.0" + enquirer "^2.3.6" + execa "^4.1.0" + listr2 "^3.2.2" + log-symbols "^4.0.0" micromatch "^4.0.2" normalize-path "^3.0.0" - please-upgrade-node "^3.1.1" - string-argv "^0.3.0" + please-upgrade-node "^3.2.0" + string-argv "0.3.1" stringify-object "^3.3.0" -listr-silent-renderer@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e" - integrity sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4= +listr2@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.2.2.tgz#d20feb75015e506992b55af40722ba1af168b8f1" + integrity sha512-AajqcZEUikF2ioph6PfH3dIuxJclhr3i3kHgTOP0xeXdWQohrvJAAmqVcV43/GI987HFY/vzT73jYXoa4esDHg== + dependencies: + chalk "^4.1.0" + cli-truncate "^2.1.0" + figures "^3.2.0" + indent-string "^4.0.0" + log-update "^4.0.0" + p-map "^4.0.0" + rxjs "^6.6.3" + through "^2.3.8" -listr-update-renderer@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz#4ea8368548a7b8aecb7e06d8c95cb45ae2ede6a2" - integrity sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA== - dependencies: - chalk "^1.1.3" - cli-truncate "^0.2.1" - elegant-spinner "^1.0.1" - figures "^1.7.0" - indent-string "^3.0.0" - log-symbols "^1.0.2" - log-update "^2.3.0" - strip-ansi "^3.0.1" - -listr-verbose-renderer@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz#f1132167535ea4c1261102b9f28dac7cba1e03db" - integrity sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw== +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= dependencies: - chalk "^2.4.1" - cli-cursor "^2.1.0" - date-fns "^1.27.2" - figures "^2.0.0" - -listr@^0.14.3: - version "0.14.3" - resolved "https://registry.yarnpkg.com/listr/-/listr-0.14.3.tgz#2fea909604e434be464c50bddba0d496928fa586" - integrity sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA== - dependencies: - "@samverschueren/stream-to-observable" "^0.3.0" - is-observable "^1.1.0" - is-promise "^2.1.0" - is-stream "^1.1.0" - listr-silent-renderer "^1.1.1" - listr-update-renderer "^0.5.0" - listr-verbose-renderer "^0.5.0" - p-map "^2.0.0" - rxjs "^6.3.3" - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= dependencies: - p-locate "^3.0.0" + p-locate "^2.0.0" path-exists "^3.0.0" locate-path@^5.0.0: @@ -2121,113 +1705,78 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" +lodash.difference@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c" + integrity sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw= + +lodash.forown@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.forown/-/lodash.forown-4.4.0.tgz#85115cf04f73ef966eced52511d3893cc46683af" + integrity sha1-hRFc8E9z75ZuztUlEdOJPMRmg68= + +lodash.get@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= + +lodash.groupby@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.groupby/-/lodash.groupby-4.6.0.tgz#0b08a1dcf68397c397855c3239783832df7403d1" + integrity sha1-Cwih3PaDl8OXhVwyOXg4Mt90A9E= + +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= + lodash@^4.17.11, lodash@^4.17.5: version "4.17.11" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== -lodash@^4.17.14, lodash@^4.17.15: - version "4.17.15" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" - integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== - -log-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" - integrity sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg= - dependencies: - chalk "^1.0.0" - -log-symbols@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" - integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== - dependencies: - chalk "^2.0.1" - -log-symbols@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" - integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== - dependencies: - chalk "^2.4.2" +lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20: + version "4.17.20" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" + integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== -log-update@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708" - integrity sha1-iDKP19HOeTiykoN0bwsbwSayRwg= +log-symbols@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" + integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== dependencies: - ansi-escapes "^3.0.0" - cli-cursor "^2.0.0" - wrap-ansi "^3.0.1" + chalk "^4.0.0" -map-age-cleaner@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" - integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== +log-update@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" + integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== dependencies: - p-defer "^1.0.0" + ansi-escapes "^4.3.0" + cli-cursor "^3.1.0" + slice-ansi "^4.0.0" + wrap-ansi "^6.2.0" -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== map-obj@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" - -mem@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" - integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== - dependencies: - map-age-cleaner "^0.1.1" - mimic-fn "^2.0.0" - p-is-promise "^2.0.0" - merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -merge2@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.3.tgz#7ee99dbd69bb6481689253f018488a1b902b0ed5" - integrity sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA== - merge2@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81" integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw== -micromatch@^3.1.10, micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - micromatch@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" @@ -2236,12 +1785,7 @@ micromatch@^4.0.2: braces "^3.0.1" picomatch "^2.0.5" -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== - -mimic-fn@^2.0.0, mimic-fn@^2.1.0: +mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== @@ -2259,34 +1803,11 @@ minimist@0.0.8: integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= - -minipass@^2.2.1, minipass@^2.3.4: - version "2.3.5" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" - integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minizlib@^1.1.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" - integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA== - dependencies: - minipass "^2.2.1" - -mixin-deep@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" - integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== -mkdirp@^0.5.0, mkdirp@^0.5.1: +mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= @@ -2298,162 +1819,72 @@ ms@2.0.0: resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + ms@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== -mute-stream@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== - -nan@^2.12.1: - version "2.13.2" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.13.2.tgz#f51dc7ae66ba7d5d55e1e6d4d8092e802c9aefe7" - integrity sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -needle@^2.2.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.3.1.tgz#d272f2f4034afb9c4c9ab1379aabc17fc85c9388" - integrity sha512-CaLXV3W8Vnbps8ZANqDGz7j4x7Yj1LW4TWF/TQuDfj7Cfx4nAPTvw98qgTevtto1oHDrh3pQkaODbqupXlsWTg== - dependencies: - debug "^4.1.0" - iconv-lite "^0.4.4" - sax "^1.2.4" - -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - -node-pre-gyp@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149" - integrity sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A== - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.1" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.2.7" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^4" - -nopt@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" - integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= - dependencies: - abbrev "1" - osenv "^0.1.4" - -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= +normalize-package-data@^2.3.2: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== dependencies: - remove-trailing-separator "^1.0.1" + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" -normalize-path@^3.0.0: +normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -npm-bundled@^1.0.1: - version "1.0.6" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" - integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g== - -npm-packlist@^1.1.6: - version "1.4.1" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.1.tgz#19064cdf988da80ea3cee45533879d90192bbfbc" - integrity sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw== - dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= - dependencies: - path-key "^2.0.0" - -npm-run-path@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-3.1.0.tgz#7f91be317f6a466efed3c9f2980ad8a4ee8b0fa5" - integrity sha512-Dbl4A/VfiVGLgQv29URL9xshU8XDY1GeLy+fsaZ1AA8JDSfjvr5P5+pzRbWqRSBxk6/DW7MIh8lTM/PaGnP2kg== +npm-run-path@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== dependencies: path-key "^3.0.0" -npmlog@^4.0.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - -object-assign@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" +object-inspect@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" + integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= +object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== dependencies: - isobject "^3.0.0" + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= +object.values@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" + integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== dependencies: - isobject "^3.0.1" + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + has "^1.0.3" once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" @@ -2462,13 +1893,6 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= - dependencies: - mimic-fn "^1.0.0" - onetime@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" @@ -2476,83 +1900,37 @@ onetime@^5.1.0: dependencies: mimic-fn "^2.1.0" +open@^7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/open/-/open-7.3.0.tgz#45461fdee46444f3645b6e14eb3ca94b82e1be69" + integrity sha512-mgLwQIx2F/ye9SmbrUkurZCnkoXyXyu9EbHtJZrICjVAJfyMArdHp3KkixGdZx1ZHFPNIwl0DDM1dFFqXbTLZw== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + opencollective-postinstall@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz#5657f1bede69b6e33a45939b061eb53d3c6c3a89" integrity sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw== -opn@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/opn/-/opn-6.0.0.tgz#3c5b0db676d5f97da1233d1ed42d182bc5a27d2d" - integrity sha512-I9PKfIZC+e4RXZ/qr1RhgyCnGgYX0UEIlXgWnCOVACIvFgaC9rz6Won7xbdhoHrd8IIhV7YEpHjreNUNkqCGkQ== - dependencies: - is-wsl "^1.1.0" - -optionator@^0.8.3: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - -os-locale@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" - integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== - dependencies: - execa "^1.0.0" - lcid "^2.0.0" - mem "^4.0.0" - -os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= - -osenv@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - -p-defer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" - integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= - -p-finally@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" - integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== - -p-is-promise@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" - integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" -p-limit@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2" - integrity sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ== +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== dependencies: - p-try "^2.0.0" + p-try "^1.0.0" p-limit@^2.2.0: version "2.2.2" @@ -2561,12 +1939,12 @@ p-limit@^2.2.0: dependencies: p-try "^2.0.0" -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= dependencies: - p-limit "^2.0.0" + p-limit "^1.1.0" p-locate@^4.1.0: version "4.1.0" @@ -2575,18 +1953,18 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" -p-map@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" - integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== - -p-map@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" - integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== dependencies: aggregate-error "^3.0.0" +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" @@ -2599,13 +1977,12 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" + error-ex "^1.2.0" parse-json@^5.0.0: version "5.0.0" @@ -2617,16 +1994,6 @@ parse-json@^5.0.0: json-parse-better-errors "^1.0.1" lines-and-columns "^1.1.6" -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= - -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= - path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -2642,11 +2009,6 @@ path-is-absolute@^1.0.0: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= - path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" @@ -2657,24 +2019,29 @@ path-parse@^1.0.6: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= dependencies: - pify "^3.0.0" + pify "^2.0.0" path-type@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +picomatch@^2.0.4, picomatch@^2.2.1: + version "2.2.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" + integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== + picomatch@^2.0.5: version "2.2.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a" integrity sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA== -pify@^2.3.0: +pify@^2.0.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= @@ -2684,10 +2051,12 @@ pify@^3.0.0: resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= + dependencies: + find-up "^2.1.0" pkg-dir@^4.2.0: version "4.2.0" @@ -2696,13 +2065,6 @@ pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" -please-upgrade-node@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.1.1.tgz#ed320051dfcc5024fae696712c8288993595e8ac" - integrity sha512-KY1uHnQ2NlQHqIJQpnh/i54rKkuxCEBx+voJIS/Mvb+L2iYd2NMotwduhKTMjfC1uKoX3VXOxLjIYG66dfJTVQ== - dependencies: - semver-compare "^1.0.0" - please-upgrade-node@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" @@ -2710,46 +2072,44 @@ please-upgrade-node@^3.2.0: dependencies: semver-compare "^1.0.0" -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - -postcss-cli@^6.1.3: - version "6.1.3" - resolved "https://registry.yarnpkg.com/postcss-cli/-/postcss-cli-6.1.3.tgz#a9eec3e9cde4aaa90170546baf706f8af6f8ecec" - integrity sha512-eieqJU+OR1OFc/lQqMsDmROTJpoMZFvoAQ+82utBQ8/8qGMTfH9bBSPsTdsagYA8uvNzxHw2I2cNSSJkLAGhvw== - dependencies: - chalk "^2.1.0" - chokidar "^2.0.0" - dependency-graph "^0.8.0" - fs-extra "^7.0.0" - get-stdin "^6.0.0" - globby "^9.0.0" - postcss "^7.0.0" - postcss-load-config "^2.0.0" - postcss-reporter "^6.0.0" +postcss-cli@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/postcss-cli/-/postcss-cli-8.2.0.tgz#f94ad3792e4daece87f70fb4bda9368bb02bbf60" + integrity sha512-N7tgPpB/2yXk/04irc/RiImCkftVw42STaploQBeOT1xvrIkyG+YW+TsHAJ57xWwL+b0AjXnqs5/RL/1XIh2Lw== + dependencies: + chalk "^4.0.0" + chokidar "^3.3.0" + dependency-graph "^0.9.0" + fs-extra "^9.0.0" + get-stdin "^8.0.0" + globby "^11.0.0" + postcss-load-config "^3.0.0" + postcss-reporter "^7.0.0" pretty-hrtime "^1.0.3" read-cache "^1.0.0" - yargs "^12.0.1" + slash "^3.0.0" + yargs "^16.0.0" -postcss-load-config@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.0.0.tgz#f1312ddbf5912cd747177083c5ef7a19d62ee484" - integrity sha512-V5JBLzw406BB8UIfsAWSK2KSwIJ5yoEIVFb4gVkXci0QdKgA24jLmHZ/ghe/GgX0lJ0/D1uUK1ejhzEY94MChQ== +postcss-load-config@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.0.0.tgz#850bb066edd65b734329eacf83af0c0764226c87" + integrity sha512-lErrN8imuEF1cSiHBV8MiR7HeuzlDpCGNtaMyYHlOBuJHHOGw6S4xOMZp8BbXPr7AGQp14L6PZDlIOpfFJ6f7w== dependencies: - cosmiconfig "^4.0.0" - import-cwd "^2.0.0" + cosmiconfig "^7.0.0" + import-cwd "^3.0.0" -postcss-reporter@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/postcss-reporter/-/postcss-reporter-6.0.1.tgz#7c055120060a97c8837b4e48215661aafb74245f" - integrity sha512-LpmQjfRWyabc+fRygxZjpRxfhRf9u/fdlKf4VHG4TSPbV2XNsuISzYW1KL+1aQzx53CAppa1bKG4APIB/DOXXw== +postcss-reporter@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-reporter/-/postcss-reporter-7.0.1.tgz#463780d0d8d64f356403eba901fdeae71d988f2b" + integrity sha512-R9AK80KIqqMb+lwGRBcRkXS7r96VCTxrZvvrfibyA/dWjqctwx7leHMCC05A9HbW8PnChwOWwrmISwp5HQu5wg== dependencies: - chalk "^2.4.1" - lodash "^4.17.11" - log-symbols "^2.2.0" - postcss "^7.0.7" + colorette "^1.2.1" + lodash.difference "^4.5.0" + lodash.forown "^4.4.0" + lodash.get "^4.4.2" + lodash.groupby "^4.6.0" + lodash.sortby "^4.7.0" + log-symbols "^4.0.0" postcss-safe-parser@^3.0.1: version "3.0.1" @@ -2776,19 +2136,10 @@ postcss@^6.0.21, postcss@^6.0.6: source-map "^0.6.1" supports-color "^5.4.0" -postcss@^7.0.0, postcss@^7.0.7: - version "7.0.16" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.16.tgz#48f64f1b4b558cb8b52c88987724359acb010da2" - integrity sha512-MOo8zNSlIqh22Uaa3drkdIAgUGEL+AD1ESiSdmElLUmE2uVDo1QloiT/IfW9qRw8Gw+Y/w69UVMGwbufMSftxA== - dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== prettier-linter-helpers@^1.0.0: version "1.0.0" @@ -2797,21 +2148,16 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@^1.19.1: - version "1.19.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" - integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== +prettier@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.1.2.tgz#3050700dae2e4c8b67c4c3f666cdb8af405e1ce5" + integrity sha512-16c7K+x4qVlJg9rEbXl7HEGmQyZlG4R9AgP+oHKRMsMsuk8s+ATStlf1NpDqyBI1HpVyfjLOeMhH2LvuNvV5Vg== pretty-hrtime@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= -process-nextick-args@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" - integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== - progress@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" @@ -2840,16 +2186,6 @@ punycode@^2.1.0: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -rc@^1.2.7: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - read-cache@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" @@ -2857,50 +2193,39 @@ read-cache@^1.0.0: dependencies: pify "^2.3.0" -readable-stream@^2.0.2, readable-stream@^2.0.6: - version "2.3.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" - integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readdirp@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +readdirp@~3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" + integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== + dependencies: + picomatch "^2.2.1" regenerate@^1.2.1: version "1.4.0" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== -regenerator-runtime@^0.13.2: - version "0.13.2" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz#32e59c9a6fb9b1a4aff09b4930ca2d4477343447" - integrity sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA== - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -regexpp@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" - integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== +regexpp@^3.0.0, regexpp@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" + integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== regexpu-core@^1.0.0: version "1.0.0" @@ -2923,50 +2248,33 @@ regjsparser@^0.1.4: dependencies: jsesc "~0.5.0" -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - -repeat-element@^1.1.0, repeat-element@^1.1.2: +repeat-element@^1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= -require-from-string@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= - -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha1-six699nWiBvItuZTM17rywoYh0g= - resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve@^1.10.0, resolve@^1.13.1, resolve@^1.17.0: + version "1.18.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.18.1.tgz#018fcb2c5b207d2a6424aee361c5a266da8f4130" + integrity sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA== + dependencies: + is-core-module "^2.0.0" + path-parse "^1.0.6" resolve@^1.12.0: version "1.14.2" @@ -2975,14 +2283,6 @@ resolve@^1.12.0: dependencies: path-parse "^1.0.6" -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= - dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" - restore-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" @@ -2991,11 +2291,6 @@ restore-cursor@^3.1.0: onetime "^5.1.0" signal-exit "^3.0.2" -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - reusify@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" @@ -3011,114 +2306,44 @@ rgba-regex@^1.0.0: resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= -rimraf@2.6.3, rimraf@^2.6.1: +rimraf@2.6.3: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== dependencies: glob "^7.1.3" -rimraf@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.0.tgz#614176d4b3010b75e5c390eb0ee96f6dc0cebb9b" - integrity sha512-NDGVxTsjqfunkds7CqsOiEnxln4Bo7Nddl3XhS4pXg5OzwkLqJ971ZVAAnB+DDLnF76N+VnDEiBHaVV8I06SUg== - dependencies: - glob "^7.1.3" - -run-async@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" - integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= - dependencies: - is-promise "^2.1.0" - run-parallel@^1.1.9: version "1.1.9" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== -rxjs@^6.3.3: - version "6.5.1" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.1.tgz#f7a005a9386361921b8524f38f54cbf80e5d08f4" - integrity sha512-y0j31WJc83wPu31vS1VlAFW5JGrnGC+j+TtGAa1fRQphy48+fDYiDmX8tjGloToEsMkxnouOg/1IzXGKkJnZMg== - dependencies: - tslib "^1.9.0" - -rxjs@^6.5.3: - version "6.5.4" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c" - integrity sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q== +rxjs@^6.6.3: + version "6.6.3" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552" + integrity sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ== dependencies: tslib "^1.9.0" -safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sax@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - semver-compare@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= -semver@^5.3.0, semver@^5.5.0: - version "5.7.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" - integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== - -semver@^6.1.2: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -set-blocking@^2.0.0, set-blocking@~2.0.0: +semver-regex@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - -set-value@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" - integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE= - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.1" - to-object-path "^0.3.0" + resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-2.0.0.tgz#a93c2c5844539a770233379107b38c7b4ac9d338" + integrity sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw== -set-value@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" - integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" +"semver@2 || 3 || 4 || 5": + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= - dependencies: - shebang-regex "^1.0.0" +semver@^7.2.1, semver@^7.3.2: + version "7.3.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" + integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== shebang-command@^2.0.0: version "2.0.0" @@ -3127,36 +2352,21 @@ shebang-command@^2.0.0: dependencies: shebang-regex "^3.0.0" -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= - shebang-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -signal-exit@^3.0.0, signal-exit@^3.0.2: +signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= -slash@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" - integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== - slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -slice-ansi@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" - integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU= - slice-ansi@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" @@ -3166,109 +2376,83 @@ slice-ansi@^2.1.0: astral-regex "^1.0.0" is-fullwidth-code-point "^2.0.0" -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== +slice-ansi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" + integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -source-map-resolve@^0.5.0: - version "0.5.2" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" - integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== - dependencies: - atob "^2.1.1" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-url@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" - integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +source-map-support@^0.5.17: + version "0.5.19" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" + integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" -source-map@^0.5.0, source-map@^0.5.6: +source-map@^0.5.0: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= -source-map@^0.6.1: +source-map@^0.6.0, source-map@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +spdx-correct@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.6" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.6.tgz#c80757383c28abf7296744998cbc106ae8b854ce" + integrity sha512-+orQK83kyMva3WyPf59k1+Y525csj5JejicWut55zeTWANuN17qSiSLUXWtzHeNWORSvT7GLDJ/E/XiIWoXBTw== + specificity@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/specificity/-/specificity-0.3.2.tgz#99e6511eceef0f8d9b57924937aac2cb13d13c42" integrity sha512-Nc/QN/A425Qog7j9aHmwOrlwX2e7pNI47ciwxwy4jOlvbbMHkNNJchit+FX+UjF3IAdiaaV5BKeWuDUnws6G1A== -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -string-argv@^0.3.0: +string-argv@0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - string-width@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" @@ -3278,7 +2462,7 @@ string-width@^3.0.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string-width@^4.1.0: +string-width@^4.1.0, string-width@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== @@ -3287,12 +2471,21 @@ string-width@^4.1.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== +string.prototype.trimend@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.2.tgz#6ddd9a8796bc714b489a3ae22246a208f37bfa46" + integrity sha512-8oAG/hi14Z4nOVP0z6mdiVZ/wqjDtWSLygMigTzAb+7aPEDTleeFf+WrF+alzecxIRkckkJVn+dTlwzJXORATw== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + +string.prototype.trimstart@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.2.tgz#22d45da81015309cd0cdd79787e8919fc5c613e7" + integrity sha512-7F6CdBTl5zyu30BJFdzSTlSlLPwODC23Od+iLoVH8X6+3fvDPPuBVVj9iaB1GOsSTSIgVfsfm27R2FGrAPznWg== dependencies: - safe-buffer "~5.1.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" stringify-object@^3.3.0: version "3.3.0" @@ -3303,21 +2496,7 @@ stringify-object@^3.3.0: is-obj "^1.0.1" is-regexp "^1.0.0" -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@^5.1.0, strip-ansi@^5.2.0: +strip-ansi@^5.1.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== @@ -3331,30 +2510,20 @@ strip-ansi@^6.0.0: dependencies: ansi-regex "^5.0.0" -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= strip-final-newline@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== -strip-json-comments@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" - integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== - -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== supports-color@^5.3.0, supports-color@^5.4.0: version "5.5.0" @@ -3377,11 +2546,6 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -symbol-observable@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" - integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== - table@^5.2.3: version "5.2.3" resolved "https://registry.yarnpkg.com/table/-/table-5.2.3.tgz#cde0cc6eb06751c009efab27e8c820ca5b67b7f2" @@ -3392,56 +2556,21 @@ table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" -tar@^4: - version "4.4.8" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d" - integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ== - dependencies: - chownr "^1.1.1" - fs-minipass "^1.2.5" - minipass "^2.3.4" - minizlib "^1.1.1" - mkdirp "^0.5.0" - safe-buffer "^5.1.2" - yallist "^3.0.2" - text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= -through@^2.3.6: +through@^2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - dependencies: - kind-of "^3.0.2" - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -3449,65 +2578,75 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== +ts-node@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-9.0.0.tgz#e7699d2a110cc8c0d3b831715e417688683460b3" + integrity sha512-/TqB4SnererCDR/vb4S/QvSZvzQMJN8daAslg7MeaiHvD8rDZsSfXmNeNumyZZzMned72Xoq/isQljYSt8Ynfg== dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" + arg "^4.1.0" + diff "^4.0.1" + make-error "^1.1.1" + source-map-support "^0.5.17" + yn "3.1.1" -trim-right@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" - integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= +tsconfig-paths@^3.9.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" + integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.0" + strip-bom "^3.0.0" + +tslib@^1.8.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== tslib@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= +tsutils@^3.17.1: + version "3.17.1" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" + integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== + dependencies: + tslib "^1.8.1" + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== dependencies: - prelude-ls "~1.1.2" + prelude-ls "^1.2.1" + +type-fest@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" + integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== type-fest@^0.8.1: version "0.8.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== -union-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" - integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ= - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^0.4.3" - -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== +typescript@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.0.5.tgz#ae9dddfd1069f1cb5beb3ef3b2170dd7c1332389" + integrity sha512-ywmr/VrTVCmNTJ6iV2LwIrfG1P+lv6luD8sUJs+2eI9NLGigaN+nUQc13iHqisq7bra9lnmUSYqbJvegraBOPQ== -unset-value@^1.0.0: +universalify@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" + integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== -upath@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.2.tgz#3db658600edaeeccbe6db5e684d67ee8c2acd068" - integrity sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q== +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== uri-js@^4.2.2: version "4.2.2" @@ -3516,48 +2655,29 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - v8-compile-cache@^2.0.3: version "2.1.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + vendor-prefixes@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/vendor-prefixes/-/vendor-prefixes-1.0.0.tgz#1c7b92ece46e2f1a06c5a907613f5d50045df531" integrity sha1-HHuS7ORuLxoGxakHYT9dUARd9TE= -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= - which-pm-runs@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= -which@^1.2.9: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" @@ -3565,33 +2685,28 @@ which@^2.0.1: dependencies: isexe "^2.0.0" -wide-align@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== - dependencies: - string-width "^1.0.2 || 2" - -word-wrap@~1.2.3: +word-wrap@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" -wrap-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" - integrity sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo= +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" wrappy@1: version "1.0.2" @@ -3610,45 +2725,35 @@ xtend@^4.0.0: resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= -"y18n@^3.2.1 || ^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" - integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== - -yallist@^3.0.0, yallist@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" - integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== - -yaml@^1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.7.2.tgz#f26aabf738590ab61efaca502358e48dc9f348b2" - integrity sha512-qXROVp90sb83XtAoqE8bP9RwAkTTZbugRUTm5YeFCBfNRPEp2YzTeqWiz7m5OORHzEvrA/qcGS8hp/E+MMROYw== - dependencies: - "@babel/runtime" "^7.6.3" - -yargs-parser@^11.1.1: - version "11.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" - integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs@^12.0.1: - version "12.0.5" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" - integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== - dependencies: - cliui "^4.0.0" - decamelize "^1.2.0" - find-up "^3.0.0" - get-caller-file "^1.0.1" - os-locale "^3.0.0" +y18n@^5.0.2: + version "5.0.5" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.5.tgz#8769ec08d03b1ea2df2500acef561743bbb9ab18" + integrity sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg== + +yaml@^1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" + integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== + +yargs-parser@^20.2.2: + version "20.2.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.3.tgz#92419ba867b858c868acf8bae9bf74af0dd0ce26" + integrity sha512-emOFRT9WVHw03QSvN5qor9QQT9+sw5vwxfYweivSMHTcAXPefwVae2FjO7JJjj8hCE4CzPOPeFM83VwT29HCww== + +yargs@^16.0.0: + version "16.1.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.1.0.tgz#fc333fe4791660eace5a894b39d42f851cd48f2a" + integrity sha512-upWFJOmDdHN0syLuESuvXDmrRcWd1QafJolHskzaw79uZa7/x53gxQKiR07W59GWY1tFhhU/Th9DrtSfpS782g== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1 || ^4.0.0" - yargs-parser "^11.1.1" + string-width "^4.2.0" + y18n "^5.0.2" + yargs-parser "^20.2.2" + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== From 080440dca7c9bc82fdae33b864e908bac7fb8dfa Mon Sep 17 00:00:00 2001 From: Sylvester Aswin Stanley Date: Sun, 1 Nov 2020 20:39:24 +0100 Subject: [PATCH 02/20] export module config typing --- src/modules/text-transform.ts | 6 +-- src/modules/vertical-align.ts | 8 +-- src/plugins/json.ts | 2 +- src/types.ts | 93 +++++++++++++++++++++++++++++++++++ 4 files changed, 101 insertions(+), 8 deletions(-) diff --git a/src/modules/text-transform.ts b/src/modules/text-transform.ts index bc1636f..1789eb0 100644 --- a/src/modules/text-transform.ts +++ b/src/modules/text-transform.ts @@ -2,11 +2,11 @@ import applyRules from "../util/applyRules"; import { GetRules, Meta, Module } from "../types"; -export type BoxShadowSupportedTypes = { +export type TextTransformSupportedTypes = { [key in keyof typeof defaultNames]?: string; }; -export type BoxShadowModuleType = Module; +export type TextTransformModuleType = Module; // eslint-disable-next-line @typescript-eslint/no-empty-interface export interface ConfigVariables {} @@ -29,7 +29,7 @@ const meta: Meta = { module: "text-transform", }; -const module: BoxShadowModuleType = (config) => (globalConfig) => { +const module: TextTransformModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, diff --git a/src/modules/vertical-align.ts b/src/modules/vertical-align.ts index 3a42ab1..b21e719 100644 --- a/src/modules/vertical-align.ts +++ b/src/modules/vertical-align.ts @@ -1,12 +1,12 @@ import applyRules from "../util/applyRules"; -import { GetRules, GenericObject, Meta, Module } from "../types"; +import { GetRules, Meta, Module } from "../types"; -export type BoxShadowSupportedTypes = { +export type VerticalAlignSupportedTypes = { [key in keyof typeof defaultNames]?: string; }; -export type BoxShadowModuleType = Module; +export type VerticalAlignModuleType = Module; // eslint-disable-next-line @typescript-eslint/no-empty-interface export interface ConfigVariables {} @@ -41,7 +41,7 @@ const meta: Meta = { module: "vertical-align", }; -const module: BoxShadowModuleType = (config) => (globalConfig) => { +const module: VerticalAlignModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, diff --git a/src/plugins/json.ts b/src/plugins/json.ts index b39162c..bde1550 100644 --- a/src/plugins/json.ts +++ b/src/plugins/json.ts @@ -7,7 +7,7 @@ import { GlobalUtilityConfig } from "../types"; export default (config: Pick) => ( root: Root -) => { +): Root => { const { output } = config || {}; const modules = {}; traverse(root, (node: ChildNode) => { diff --git a/src/types.ts b/src/types.ts index 9284e96..2b054fe 100644 --- a/src/types.ts +++ b/src/types.ts @@ -71,3 +71,96 @@ export type ApplyRules = ( export type Module = ( config?: UtilityConfig ) => (globalConfig: GlobalUtilityConfig) => ApplyRulesOutput; + +/* Below is the typing fot the configs */ +export { + AnimationModuleType, + AnimationSupportedTypes, +} from "./modules/animation"; +export { + BackgroundImageModuleType, + BackgroundImageSupportedTypes, +} from "./modules/background-image"; +export { BorderModuleType, BorderSupportedTypes } from "./modules/border"; +export { + BoxShadowModuleType, + BoxShadowSupportedTypes, +} from "./modules/box-shadow"; +export { + BoxSizingModuleType, + BoxSizingSupportedTypes, +} from "./modules/box-sizing"; +export { ClearModuleType, ClearSupportedTypes } from "./modules/clear"; +export { ColorsModuleType, ColorsSupportedTypes } from "./modules/colors"; +export { CursorModuleType, CursorSupportedTypes } from "./modules/cursor"; +export { DisplayModuleType, DisplaySupportedTypes } from "./modules/display"; +export { FlexBoxModuleType, FlexBoxSupportedTypes } from "./modules/flexbox"; +export { FloatModuleType, FloatSupportedTypes } from "./modules/float"; +export { FontModuleType, FontSupportedTypes } from "./modules/font"; +export { HeightModuleType, HeightSupportedTypes } from "./modules/height"; +export { + LetterSpacingModuleType, + LetterSpacingSupportedTypes, +} from "./modules/letter-spacing"; +export { + LineHeightModuleType, + LineHeightSupportedTypes, +} from "./modules/line-height"; +export { + ListStyleModuleType, + ListStyleSupportedTypes, +} from "./modules/list-style"; +export { OpacityModuleType, OpacitySupportedTypes } from "./modules/opacity"; +export { OutlineModuleType, OutlineSupportedTypes } from "./modules/outline"; +export { OverflowModuleType, OverflowSupportedTypes } from "./modules/overflow"; +export { + PointerEventsModuleType, + PointerEventsSupportedTypes, +} from "./modules/pointer-events"; +export { PositionModuleType, PositionSupportedTypes } from "./modules/position"; +export { ResizeModuleType, ResizeSupportedTypes } from "./modules/resize"; +export { SeriesModuleType } from "./modules/series"; +export { SingleModuleType } from "./modules/single"; +export { SpacingModuleType, SpacingSupportedTypes } from "./modules/spacing"; +export { + TextAlignModuleType, + TextAlignSupportedTypes, +} from "./modules/text-align"; +export { + TextDecorationModuleType, + TextDecorationSupportedTypes, +} from "./modules/text-decoration"; +export { + TextOverflowModuleType, + TextOverflowSupportedTypes, +} from "./modules/text-overflow"; +export { + TextTransformModuleType, + TextTransformSupportedTypes, +} from "./modules/text-transform"; +export { + TransformModuleType, + TransformSupportedTypes, +} from "./modules/transform"; +export { + TransitionModuleType, + TransitionSupportedTypes, +} from "./modules/transition"; +export { + VerticalAlignModuleType, + VerticalAlignSupportedTypes, +} from "./modules/vertical-align"; +export { + VisibilityModuleType, + VisibilitySupportedTypes, +} from "./modules/visibility"; +export { + WhiteSpaceModuleType, + WhiteSpaceSupportedTypes, +} from "./modules/white-space"; +export { WidthModuleType, WidthSupportedTypes } from "./modules/width"; +export { + UserSelectModuleType, + UserSelectSupportedTypes, +} from "./modules/user-select"; +export { ZIndexModuleType, ZIndexSupportedTypes } from "./modules/z-index"; From 266385520a1c9e58a38ec2a13f6a8fa7cd573e7b Mon Sep 17 00:00:00 2001 From: Sylvester Aswin Stanley Date: Mon, 2 Nov 2020 10:53:39 +0100 Subject: [PATCH 03/20] add typings to plugins --- package.json | 15 ++++++++------- src/cli.ts | 21 +++++++++++++-------- src/helpers/build-doc-partials.ts | 4 +++- src/helpers/build-sections.ts | 18 ++++++++++++++---- src/helpers/build-sidebar.ts | 4 +++- src/helpers/build-stats.ts | 4 +++- src/index.ts | 2 +- src/lib/resolveUtility.js | 2 ++ src/plugins/docs.ts | 15 ++++++++++++--- src/plugins/json.ts | 19 ++++++++++--------- src/types.ts | 1 + src/util/defineSeries.ts | 2 +- src/util/traverse.ts | 15 +++++++++++---- tsconfig.json | 1 + yarn.lock | 5 +++++ 15 files changed, 88 insertions(+), 40 deletions(-) diff --git a/package.json b/package.json index 3818b93..023f74d 100644 --- a/package.json +++ b/package.json @@ -5,12 +5,12 @@ "author": "Andrea Moretti (@axyz) ", "repository": "utilitycss/utility", "license": "MIT", - "main": "src/index.js", + "main": "dist", + "typings": "dist", "scripts": { - "lint": "eslint src/* --ext .js", + "lint": "eslint './src/**/*.{js,ts,tsx}'", "build-example": "yarn postcss example/example.css -o example/dist/example.css", - "test": "echo \"Error: no test specified\" && exit 0", - "format": "git ls-files --directory . | egrep '\\.js$'| xargs prettier --write --print-width 80 --tab-width 2 --trailing-comma all --single-quote" + "test": "echo \"Error: no test specified\" && exit 0" }, "bin": { "utility": "src/cli.ts" @@ -24,6 +24,7 @@ }, "devDependencies": { "@types/lodash": "^4.14.164", + "@types/node": "^14.14.6", "@typescript-eslint/eslint-plugin": "^4.6.0", "@typescript-eslint/parser": "^4.6.0", "babel-eslint": "^10.1.0", @@ -46,9 +47,9 @@ } }, "lint-staged": { - "*.js": [ - "prettier --write", - "git add" + "*.{ts,tsx,js}": [ + "prettier --no-config --write", + "eslint --fix" ], "*.css": [ "prettier --write", diff --git a/src/cli.ts b/src/cli.ts index 87012d4..0836075 100755 --- a/src/cli.ts +++ b/src/cli.ts @@ -4,9 +4,11 @@ import postcss from "postcss"; import chalk from "chalk"; import path from "path"; import fs from "fs"; +import { promises as fsAsync } from "fs"; import { builder } from "../"; -import packageJson from "../package.json"; +// eslint-disable-next-line @typescript-eslint/no-var-requires +const packageJson = require("../package.json"); program.version(packageJson.version).usage(" []"); @@ -42,14 +44,17 @@ program .usage("[options] [filename]") .option("-c, --config [path]", "Path to config file") .option("-o, --output [path]", "Output file") - .action((fileName, options) => { + .action(async (fileName, options) => { const input = fileName - ? fs.readFileSync(path.resolve(fileName), "utf-8") - : fs.readFileSync(path.resolve(__dirname, "../bootstrap.css"), "utf-8"); + ? await fsAsync.readFile(path.resolve(fileName), "utf-8") + : await fsAsync.readFile( + path.resolve(__dirname, "../bootstrap.css"), + "utf-8" + ); const write = options.output - ? (data) => fs.writeFileSync(options.output, data) - : (data) => process.stdout.write(data); + ? async (data: string) => await fsAsync.writeFile(options.output, data) + : async (data: string) => process.stdout.write(data); let config; const localConfig = path.resolve("utility.config.js"); @@ -66,8 +71,8 @@ program console.log(chalk.blue("Building CSS bundle...")); postcss([builder(config)]) .process(input) - .then((result) => { - write(result.css); + .then(async (result) => { + await write(result.css); // eslint-disable-next-line no-console console.log(chalk.green("Success!")); }) diff --git a/src/helpers/build-doc-partials.ts b/src/helpers/build-doc-partials.ts index 0448fd0..23ddcb9 100644 --- a/src/helpers/build-doc-partials.ts +++ b/src/helpers/build-doc-partials.ts @@ -4,6 +4,8 @@ import buildSidebar from "./build-sidebar"; import buildSections from "./build-sections"; import buildStats from "./build-stats"; +import { Module } from "../plugins/docs"; + /* Function which build all parts of the document */ export default async function buildDocPartials({ packageName, @@ -11,7 +13,7 @@ export default async function buildDocPartials({ atomCss, }: { packageName: string; - modules: any; + modules: Module; atomCss: string; }): Promise<{ headHtml: string; diff --git a/src/helpers/build-sections.ts b/src/helpers/build-sections.ts index a17658e..b2d3363 100644 --- a/src/helpers/build-sections.ts +++ b/src/helpers/build-sections.ts @@ -2,14 +2,24 @@ import path from "path"; import _ from "lodash"; import { promises as fsAsync } from "fs"; -const selectorReplace = (selector) => { +import { CreatedNode } from "../util/traverse"; +import { Module } from "../plugins/docs"; + +const selectorReplace = (selector: string) => { return selector.replace(".", "").replace(":active", "").replace(":hover", ""); }; +interface Rule { + selector: string; + nodes: CreatedNode["nodes"]; + media: string; + class: string; +} + export default async function buildSections({ modules, }: { - modules: any; + modules: Module; }): Promise { const sectionTemplate = _.template( await fsAsync.readFile( @@ -17,10 +27,10 @@ export default async function buildSections({ "utf8" ) ); - const sectionsHtml = []; + const sectionsHtml: string[] = []; Object.keys(modules).forEach((module) => { const moduleName = module[0].toUpperCase() + module.slice(1); - const rules = []; + const rules: Rule[] = []; modules[module].forEach((rule) => { // console.log(JSON.stringify(rule)); const { nodes, selector, media } = rule; diff --git a/src/helpers/build-sidebar.ts b/src/helpers/build-sidebar.ts index 9c59b71..af08fab 100644 --- a/src/helpers/build-sidebar.ts +++ b/src/helpers/build-sidebar.ts @@ -2,10 +2,12 @@ import path from "path"; import _ from "lodash"; import { promises as fsAsync } from "fs"; +import { Module } from "../plugins/docs"; + export default async function buildSidebar({ modules, }: { - modules: any; + modules: Module; }): Promise { const sidebarTemplate = _.template( await fsAsync.readFile( diff --git a/src/helpers/build-stats.ts b/src/helpers/build-stats.ts index 4b567dd..119c1a4 100644 --- a/src/helpers/build-stats.ts +++ b/src/helpers/build-stats.ts @@ -1,7 +1,9 @@ import path from "path"; import { promises as fsAsync } from "fs"; import _ from "lodash"; -import cssstats from "cssstats"; + +// eslint-disable-next-line @typescript-eslint/no-var-requires +const cssstats = require("cssstats"); interface BuildStats { atomCss: string; diff --git a/src/index.ts b/src/index.ts index fa8a17b..fd455dd 100644 --- a/src/index.ts +++ b/src/index.ts @@ -18,7 +18,7 @@ const builder = postcss.plugin("utility", (config) => (styles) => { config: globalConfig = {}, forceInsert = false, } = config || defaultConfig; - const toRemove = []; + const toRemove: postcss.AtRule[] = []; styles.walkAtRules("utility", (rule) => { if (rule.name !== AT_RULE_NAME) { diff --git a/src/lib/resolveUtility.js b/src/lib/resolveUtility.js index c398865..843b11a 100644 --- a/src/lib/resolveUtility.js +++ b/src/lib/resolveUtility.js @@ -1,3 +1,4 @@ +/* eslint-disable */ const generateModules = require("../util/generateModules"); const resolveUtility = (config) => (css) => { @@ -20,3 +21,4 @@ const resolveUtility = (config) => (css) => { }; module.exports = resolveUtility; +/* eslint-enable */ diff --git a/src/plugins/docs.ts b/src/plugins/docs.ts index 51ef64a..b67aef0 100644 --- a/src/plugins/docs.ts +++ b/src/plugins/docs.ts @@ -1,13 +1,22 @@ import path from "path"; import saveFile from "../helpers/save-file"; +import { Root } from "postcss"; import buildDocPartials from "../helpers/build-doc-partials"; import buildIndex from "../helpers/build-index"; -import traverse from "../util/traverse"; +import traverse, { CreatedNode } from "../util/traverse"; -export default (config) => async (root) => { +import { GlobalUtilityConfig } from "../types"; + +export interface Module { + [key: string]: Array; +} + +export default ( + config: Pick +) => async (root: Root): Promise => { const { output, openFile } = config || {}; - const modules = {}; + const modules: Module = {}; traverse(root, (node) => { const { diff --git a/src/plugins/json.ts b/src/plugins/json.ts index bde1550..6b73531 100644 --- a/src/plugins/json.ts +++ b/src/plugins/json.ts @@ -1,21 +1,22 @@ import path from "path"; -import traverse from "../util/traverse"; +import traverse, { CreatedNode } from "../util/traverse"; import saveFile from "../helpers/save-file"; -import { Root, ChildNode } from "postcss"; +import { Root } from "postcss"; import { GlobalUtilityConfig } from "../types"; export default (config: Pick) => ( root: Root ): Root => { const { output } = config || {}; - const modules = {}; - traverse(root, (node: ChildNode) => { - const { - meta, - meta: { module }, - ...rest - } = node; + const modules: { + [key: string]: Pick & { + nodes: Array>; + }; + } = {}; + traverse(root, (node) => { + const { meta, ...rest } = node; + const { module } = meta; if (modules[module]) { modules[module].nodes.push(rest); } else { diff --git a/src/types.ts b/src/types.ts index 2b054fe..9d970da 100644 --- a/src/types.ts +++ b/src/types.ts @@ -34,6 +34,7 @@ export interface GlobalUtilityConfig { pseudoClassesSeparator: string; seriesSeparator: string; classTemplate?: string; + openFile?: boolean; } export interface GetRulesOutput { diff --git a/src/util/defineSeries.ts b/src/util/defineSeries.ts index abf34d9..db025ef 100644 --- a/src/util/defineSeries.ts +++ b/src/util/defineSeries.ts @@ -11,7 +11,7 @@ type Options = Pick< Pick, "pseudoClasses" | "meta">; type DefineSeries = ( - name: string, + name: string | number, prop: string, values: GenericObject | string[], options?: Options diff --git a/src/util/traverse.ts b/src/util/traverse.ts index 030a448..445c143 100644 --- a/src/util/traverse.ts +++ b/src/util/traverse.ts @@ -1,10 +1,17 @@ import { Root, ChildNode, AtRule, Declaration, Rule } from "postcss"; +import { Meta } from "../types"; +type CallBack = (node: CreatedNode) => void; -type CallBack = (node: ChildNode) => void; +export interface CreatedNode + extends Omit { + nodes: Array<{ prop: string; value: string }>; + media?: any; + meta?: Meta; +} const traverseObject = (node: ChildNode, cb: CallBack, media: any) => { const { type, raws, parent, nodes, ...rest } = node as Rule; - const nodeToPush = Object.assign( + const nodeToPush: CreatedNode = Object.assign( {}, rest, { @@ -20,7 +27,7 @@ const traverseObject = (node: ChildNode, cb: CallBack, media: any) => { : {} ); - cb(nodeToPush as ChildNode); + cb(nodeToPush); }; const traverseNodes = (nodes: ChildNode[], cb: CallBack, media?: any) => { @@ -34,7 +41,7 @@ const traverseNodes = (nodes: ChildNode[], cb: CallBack, media?: any) => { }); }; -const traverse = (root: Root, cb): void => { +const traverse = (root: Root, cb: CallBack): void => { const { nodes } = root; traverseNodes(nodes, cb); }; diff --git a/tsconfig.json b/tsconfig.json index ea841c7..267b168 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -10,6 +10,7 @@ "sourceMap": true, "outDir": "dist", "baseUrl": ".", + "resolveJsonModule": true, "paths": { "*": ["node_modules/*", "src/*"] } diff --git a/yarn.lock b/yarn.lock index 655d3aa..f1db13c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -166,6 +166,11 @@ resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.164.tgz#52348bcf909ac7b4c1bcbeda5c23135176e5dfa0" integrity sha512-fXCEmONnrtbYUc5014avwBeMdhHHO8YJCkOBflUL9EoJBSKZ1dei+VO74fA7JkTHZ1GvZack2TyIw5U+1lT8jg== +"@types/node@^14.14.6": + version "14.14.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.6.tgz#146d3da57b3c636cc0d1769396ce1cfa8991147f" + integrity sha512-6QlRuqsQ/Ox/aJEQWBEJG7A9+u7oSYl3mem/K8IzxXG/kAGbV1YPD9Bg9Zw3vyxC/YP+zONKwy8hGkSt1jxFMw== + "@types/parse-json@^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" From a6ca6f7edefad97f9868b57ad6f37e71ad78a513 Mon Sep 17 00:00:00 2001 From: Sylvester Aswin Stanley Date: Wed, 6 Jan 2021 15:19:08 +0100 Subject: [PATCH 04/20] add build config --- .eslintrc.js | 9 ++++++ example/example.config.js | 51 ++++++++++++++++----------------- example/module.config.js | 4 +-- example/postcss.config.js | 8 +++--- src/cli.ts | 2 +- src/index.ts | 4 +-- src/modules/animation.ts | 4 +-- src/modules/background-image.ts | 4 +-- src/modules/border.ts | 4 +-- src/modules/box-shadow.ts | 4 +-- src/modules/box-sizing.ts | 4 +-- src/modules/clear.ts | 4 +-- src/modules/colors.ts | 4 +-- src/modules/cursor.ts | 4 +-- src/modules/display.ts | 4 +-- src/modules/flexbox.ts | 4 +-- src/modules/float.ts | 4 +-- src/modules/font.ts | 4 +-- src/modules/height.ts | 4 +-- src/modules/letter-spacing.ts | 4 +-- src/modules/line-height.ts | 4 +-- src/modules/list-style.ts | 4 +-- src/modules/opacity.ts | 4 +-- src/modules/outline.ts | 4 +-- src/modules/overflow.ts | 4 +-- src/modules/pointer-events.ts | 4 +-- src/modules/position.ts | 4 +-- src/modules/resize.ts | 4 +-- src/modules/series.ts | 4 +-- src/modules/single.ts | 4 +-- src/modules/spacing.ts | 4 +-- src/modules/text-align.ts | 4 +-- src/modules/text-decoration.ts | 4 +-- src/modules/text-overflow.ts | 4 +-- src/modules/text-transform.ts | 4 +-- src/modules/transform.ts | 4 +-- src/modules/transition.ts | 4 +-- src/modules/user-select.ts | 4 +-- src/modules/vertical-align.ts | 4 +-- src/modules/visibility.ts | 4 +-- src/modules/white-space.ts | 4 +-- src/modules/width.ts | 4 +-- src/modules/z-index.ts | 4 +-- tsconfig.json | 6 ++-- 44 files changed, 120 insertions(+), 112 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 82d0942..f9521e0 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -16,4 +16,13 @@ module.exports = { es6: true, node: true, }, + overrides: [ + { + files: ["./example/**/*.js"], + rules: { + // Allow require statement for all JS files + "@typescript-eslint/no-var-requires": "off", + }, + }, + ], }; diff --git a/example/example.config.js b/example/example.config.js index 07296ff..2e84a6f 100644 --- a/example/example.config.js +++ b/example/example.config.js @@ -1,50 +1,49 @@ const path = require("path"); const { plugins: { docs, json }, - util: { defineClass }, - modules: { font, colors, border, boxShadow } -} = require("../src/index"); + modules: { font, colors, border, boxShadow }, +} = require("../dist/index"); const breakPoints = { ns: "screen and (min-width: 48rem)", m: "screen and (min-width: 48rem) and (max-width: 80rem)", - l: "screen and (min-width: 80rem)" + l: "screen and (min-width: 80rem)", }; const plugins = [ json({ - output: path.join(__dirname, "/dist/example.json") + output: path.join(__dirname, "/dist/example.json"), }), docs({ output: path.join(__dirname, "/dist/docs.html"), - openFile: true - }) + openFile: true, + }), ]; const modules = [ boxShadow({ names: { "bxsh:n": "boxShadowNone", - bxsh: "boxShadow" + bxsh: "boxShadow", }, boxShadowValues: { xs: "0 0 0 1px rgba(0, 0, 0, 0.05)", - inner: "inset 0 2px 4px 0 rgba(0, 0, 0, 0.06)" + inner: "inset 0 2px 4px 0 rgba(0, 0, 0, 0.06)", }, - whitelist: ["bxsh:n", "bxsh"] + whitelist: ["bxsh:n", "bxsh"], }), border({ names: { "bd:w": "borderWidth", "bd:s": "borderStyle", - "bd:n": "borderNone" + "bd:n": "borderNone", }, whitelist: ["bd:w", "bd:s", "bd:n"], borderStyleValues: ["solid", "dotted"], borderWidthValues: ["1px", "2px"], pseudoClasses: { "bd:n": [":hover"] }, isResponsive: true, - responsiveWhiteList: ["bd:n"] + responsiveWhiteList: ["bd:n"], }), font({ names: { fz: "f" }, @@ -59,9 +58,9 @@ const modules = [ "1.625rem", "1.75rem", "1.875rem", - "2rem" + "2rem", ], - isResponsive: true + isResponsive: true, }), colors({ nestedRules: { @@ -70,16 +69,16 @@ const modules = [ isResponsive: true, colorValues: { black: "#ffffff", - white: "#1a1a1a" - } + white: "#1a1a1a", + }, }, "@media foo": { whitelist: ["c"], colorValues: { black: "#ffffff", - white: "#1a1a1a" - } - } + white: "#1a1a1a", + }, + }, }, whitelist: ["c", "bgc", "bdc"], pseudoClasses: { c: [":hover"], bgc: [":hover", ":active"] }, @@ -92,13 +91,13 @@ const modules = [ grey3: "#dddddd", red: "#ce3535", green: "#0f7e4a", - blue: "#0062b4" + blue: "#0062b4", }, backgroundColorValues: { white: "#f3f3f3", pink: "#fde5e5", green: "#e0f3ea", - yellow: "#fffdc0" + yellow: "#fffdc0", }, borderColorValues: { orange: "#ff6900", @@ -106,9 +105,9 @@ const modules = [ white: "#ffffff", grey: "#a5a5a5", green: "#0f7e4a", - red: "#ce3535" - } - }) + red: "#ce3535", + }, + }), ]; module.exports = { @@ -116,8 +115,8 @@ module.exports = { config: { breakPoints, breakPointSeparator: "_", - pseudoClassesSeparator: "_" + pseudoClassesSeparator: "_", }, modules, - plugins + plugins, }; diff --git a/example/module.config.js b/example/module.config.js index 7732653..56a269e 100644 --- a/example/module.config.js +++ b/example/module.config.js @@ -11,7 +11,7 @@ module.exports = { "1.625rem", "1.75rem", "1.875rem", - "2rem" + "2rem", ], - isResponsive: true + isResponsive: true, }; diff --git a/example/postcss.config.js b/example/postcss.config.js index 95102e4..c085f47 100644 --- a/example/postcss.config.js +++ b/example/postcss.config.js @@ -1,13 +1,13 @@ const _ = require("lodash"); -const utility = require("../src/index"); +const utility = require("../dist/index").default; const utilityConfig = require("./example.config"); module.exports = { plugins: [ utility( Object.assign({}, utilityConfig, { - forceInsert: _.includes(process.argv, "forceInsert") + forceInsert: _.includes(process.argv, "forceInsert"), }) - ) - ] + ), + ], }; diff --git a/src/cli.ts b/src/cli.ts index 0836075..d25dac5 100755 --- a/src/cli.ts +++ b/src/cli.ts @@ -5,7 +5,7 @@ import chalk from "chalk"; import path from "path"; import fs from "fs"; import { promises as fsAsync } from "fs"; -import { builder } from "../"; +import builder from "./"; // eslint-disable-next-line @typescript-eslint/no-var-requires const packageJson = require("../package.json"); diff --git a/src/index.ts b/src/index.ts index fd455dd..18e0dcc 100644 --- a/src/index.ts +++ b/src/index.ts @@ -7,7 +7,7 @@ import deepmerge from "deepmerge"; import computeStyles from "./util/computeStyles"; const AT_RULE_NAME = "utility"; -const DEFAULT_CONFIG_PATH = "./utility.config.default.ts"; +const DEFAULT_CONFIG_PATH = "./utility.config.default"; const builder = postcss.plugin("utility", (config) => (styles) => { // eslint-disable-next-line @typescript-eslint/no-var-requires @@ -102,7 +102,7 @@ const builder = postcss.plugin("utility", (config) => (styles) => { }); }); -export { builder }; +export default builder; export * as plugins from "./plugins"; export * as modules from "./modules"; diff --git a/src/modules/animation.ts b/src/modules/animation.ts index 738e563..deffec6 100644 --- a/src/modules/animation.ts +++ b/src/modules/animation.ts @@ -24,7 +24,7 @@ const meta: Meta = { module: "animation", }; -const module: AnimationModuleType = (config) => (globalConfig) => { +const cssModule: AnimationModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, @@ -34,4 +34,4 @@ const module: AnimationModuleType = (config) => (globalConfig) => { }); }; -export default module; +export default cssModule; diff --git a/src/modules/background-image.ts b/src/modules/background-image.ts index 7289d9d..05a3115 100644 --- a/src/modules/background-image.ts +++ b/src/modules/background-image.ts @@ -134,7 +134,7 @@ const meta: Meta = { module: "background-image", }; -const module: BackgroundImageModuleType = (config) => (globalConfig) => { +const cssModule: BackgroundImageModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, @@ -144,4 +144,4 @@ const module: BackgroundImageModuleType = (config) => (globalConfig) => { }); }; -export default module; +export default cssModule; diff --git a/src/modules/border.ts b/src/modules/border.ts index 655b2fa..c018e9d 100644 --- a/src/modules/border.ts +++ b/src/modules/border.ts @@ -187,7 +187,7 @@ const meta: Meta = { module: "border", }; -const module: BorderModuleType = (config) => (globalConfig) => { +const cssModule: BorderModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, @@ -197,4 +197,4 @@ const module: BorderModuleType = (config) => (globalConfig) => { }); }; -export default module; +export default cssModule; diff --git a/src/modules/box-shadow.ts b/src/modules/box-shadow.ts index bc1b974..5c437a7 100644 --- a/src/modules/box-shadow.ts +++ b/src/modules/box-shadow.ts @@ -31,7 +31,7 @@ const meta: Meta = { module: "box-shadow", }; -const module: BoxShadowModuleType = (config) => (globalConfig) => { +const cssModule: BoxShadowModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, @@ -41,4 +41,4 @@ const module: BoxShadowModuleType = (config) => (globalConfig) => { }); }; -export default module; +export default cssModule; diff --git a/src/modules/box-sizing.ts b/src/modules/box-sizing.ts index 47735cd..6162f22 100644 --- a/src/modules/box-sizing.ts +++ b/src/modules/box-sizing.ts @@ -25,7 +25,7 @@ const meta: Meta = { module: "box-sizing", }; -const module: BoxSizingModuleType = (config) => (globalConfig) => { +const cssModule: BoxSizingModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, @@ -35,4 +35,4 @@ const module: BoxSizingModuleType = (config) => (globalConfig) => { }); }; -export default module; +export default cssModule; diff --git a/src/modules/clear.ts b/src/modules/clear.ts index fd2c6ca..c12febd 100644 --- a/src/modules/clear.ts +++ b/src/modules/clear.ts @@ -29,7 +29,7 @@ const meta: Meta = { module: "clear", }; -const module: ClearModuleType = (config) => (globalConfig) => { +const cssModule: ClearModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, @@ -39,4 +39,4 @@ const module: ClearModuleType = (config) => (globalConfig) => { }); }; -export default module; +export default cssModule; diff --git a/src/modules/colors.ts b/src/modules/colors.ts index 55e19b7..715ece9 100644 --- a/src/modules/colors.ts +++ b/src/modules/colors.ts @@ -62,7 +62,7 @@ const meta: Meta = { module: "colors", }; -const module: ColorsModuleType = (config) => (globalConfig) => { +const cssModule: ColorsModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, @@ -72,4 +72,4 @@ const module: ColorsModuleType = (config) => (globalConfig) => { }); }; -export default module; +export default cssModule; diff --git a/src/modules/cursor.ts b/src/modules/cursor.ts index 213f676..a9cd3b9 100644 --- a/src/modules/cursor.ts +++ b/src/modules/cursor.ts @@ -37,7 +37,7 @@ const meta: Meta = { module: "cursor", }; -const module: CursorModuleType = (config) => (globalConfig) => { +const cssModule: CursorModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, @@ -47,4 +47,4 @@ const module: CursorModuleType = (config) => (globalConfig) => { }); }; -export default module; +export default cssModule; diff --git a/src/modules/display.ts b/src/modules/display.ts index 88722d4..d8f5ec5 100644 --- a/src/modules/display.ts +++ b/src/modules/display.ts @@ -83,7 +83,7 @@ const meta: Meta = { module: "display", }; -const module: DisplayModuleType = (config) => (globalConfig) => { +const cssModule: DisplayModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, @@ -93,4 +93,4 @@ const module: DisplayModuleType = (config) => (globalConfig) => { }); }; -export default module; +export default cssModule; diff --git a/src/modules/flexbox.ts b/src/modules/flexbox.ts index 965ac0d..149b804 100644 --- a/src/modules/flexbox.ts +++ b/src/modules/flexbox.ts @@ -139,7 +139,7 @@ const meta: Meta = { module: "flexbox", }; -const module: FlexBoxModuleType = (config) => (globalConfig) => { +const cssModule: FlexBoxModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, @@ -149,4 +149,4 @@ const module: FlexBoxModuleType = (config) => (globalConfig) => { }); }; -export default module; +export default cssModule; diff --git a/src/modules/float.ts b/src/modules/float.ts index ec89d59..6c3f6e0 100644 --- a/src/modules/float.ts +++ b/src/modules/float.ts @@ -27,7 +27,7 @@ const meta: Meta = { module: "float", }; -const module: FloatModuleType = (config) => (globalConfig) => { +const cssModule: FloatModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, @@ -37,4 +37,4 @@ const module: FloatModuleType = (config) => (globalConfig) => { }); }; -export default module; +export default cssModule; diff --git a/src/modules/font.ts b/src/modules/font.ts index 0c1ecca..ddfe0e4 100644 --- a/src/modules/font.ts +++ b/src/modules/font.ts @@ -135,7 +135,7 @@ const meta: Meta = { module: "font", }; -const module: FontModuleType = (config) => (globalConfig) => { +const cssModule: FontModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, @@ -145,4 +145,4 @@ const module: FontModuleType = (config) => (globalConfig) => { }); }; -export default module; +export default cssModule; diff --git a/src/modules/height.ts b/src/modules/height.ts index 67a1490..20a86e6 100644 --- a/src/modules/height.ts +++ b/src/modules/height.ts @@ -34,7 +34,7 @@ const meta: Meta = { module: "height", }; -const module: HeightModuleType = (config) => (globalConfig) => { +const cssModule: HeightModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, @@ -44,4 +44,4 @@ const module: HeightModuleType = (config) => (globalConfig) => { }); }; -export default module; +export default cssModule; diff --git a/src/modules/letter-spacing.ts b/src/modules/letter-spacing.ts index 2fa0690..1c140f8 100644 --- a/src/modules/letter-spacing.ts +++ b/src/modules/letter-spacing.ts @@ -26,7 +26,7 @@ const meta: Meta = { module: "letter-spacing", }; -const module: LetterSpacingModuleType = (config) => (globalConfig) => { +const cssModule: LetterSpacingModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, @@ -36,4 +36,4 @@ const module: LetterSpacingModuleType = (config) => (globalConfig) => { }); }; -export default module; +export default cssModule; diff --git a/src/modules/line-height.ts b/src/modules/line-height.ts index 5f42f30..84988de 100644 --- a/src/modules/line-height.ts +++ b/src/modules/line-height.ts @@ -24,7 +24,7 @@ const meta: Meta = { module: "line-height", }; -const module: LineHeightModuleType = (config) => (globalConfig) => { +const cssModule: LineHeightModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, @@ -34,4 +34,4 @@ const module: LineHeightModuleType = (config) => (globalConfig) => { }); }; -export default module; +export default cssModule; diff --git a/src/modules/list-style.ts b/src/modules/list-style.ts index afe994d..cdfb03f 100644 --- a/src/modules/list-style.ts +++ b/src/modules/list-style.ts @@ -28,7 +28,7 @@ const meta: Meta = { module: "list-style", }; -const module: ListStyleModuleType = (config) => (globalConfig) => { +const cssModule: ListStyleModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, @@ -38,4 +38,4 @@ const module: ListStyleModuleType = (config) => (globalConfig) => { }); }; -export default module; +export default cssModule; diff --git a/src/modules/opacity.ts b/src/modules/opacity.ts index a4a22b7..9394850 100644 --- a/src/modules/opacity.ts +++ b/src/modules/opacity.ts @@ -24,7 +24,7 @@ const meta: Meta = { module: "opacity", }; -const module: OpacityModuleType = (config) => (globalConfig) => { +const cssModule: OpacityModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, @@ -34,4 +34,4 @@ const module: OpacityModuleType = (config) => (globalConfig) => { }); }; -export default module; +export default cssModule; diff --git a/src/modules/outline.ts b/src/modules/outline.ts index b64a145..c904960 100644 --- a/src/modules/outline.ts +++ b/src/modules/outline.ts @@ -55,7 +55,7 @@ const meta: Meta = { module: "outline", }; -const module: OutlineModuleType = (config) => (globalConfig) => { +const cssModule: OutlineModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, @@ -65,4 +65,4 @@ const module: OutlineModuleType = (config) => (globalConfig) => { }); }; -export default module; +export default cssModule; diff --git a/src/modules/overflow.ts b/src/modules/overflow.ts index 923b437..b96aee5 100644 --- a/src/modules/overflow.ts +++ b/src/modules/overflow.ts @@ -55,7 +55,7 @@ const meta: Meta = { module: "overflow", }; -const module: OverflowModuleType = (config) => (globalConfig) => { +const cssModule: OverflowModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, @@ -65,4 +65,4 @@ const module: OverflowModuleType = (config) => (globalConfig) => { }); }; -export default module; +export default cssModule; diff --git a/src/modules/pointer-events.ts b/src/modules/pointer-events.ts index f9312dc..83fc59c 100644 --- a/src/modules/pointer-events.ts +++ b/src/modules/pointer-events.ts @@ -25,7 +25,7 @@ const meta: Meta = { module: "pointer-events", }; -const module: PointerEventsModuleType = (config) => (globalConfig) => { +const cssModule: PointerEventsModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, @@ -35,4 +35,4 @@ const module: PointerEventsModuleType = (config) => (globalConfig) => { }); }; -export default module; +export default cssModule; diff --git a/src/modules/position.ts b/src/modules/position.ts index c1bef3e..ef3f2ce 100644 --- a/src/modules/position.ts +++ b/src/modules/position.ts @@ -51,7 +51,7 @@ const meta: Meta = { module: "position", }; -const module: PositionModuleType = (config) => (globalConfig) => { +const cssModule: PositionModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, @@ -61,4 +61,4 @@ const module: PositionModuleType = (config) => (globalConfig) => { }); }; -export default module; +export default cssModule; diff --git a/src/modules/resize.ts b/src/modules/resize.ts index 7c3c20b..c6c8fc4 100644 --- a/src/modules/resize.ts +++ b/src/modules/resize.ts @@ -29,7 +29,7 @@ const meta: Meta = { module: "resize", }; -const module: ResizeModuleType = (config) => (globalConfig) => { +const cssModule: ResizeModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, @@ -39,4 +39,4 @@ const module: ResizeModuleType = (config) => (globalConfig) => { }); }; -export default module; +export default cssModule; diff --git a/src/modules/series.ts b/src/modules/series.ts index 1f991de..785761f 100644 --- a/src/modules/series.ts +++ b/src/modules/series.ts @@ -14,7 +14,7 @@ const meta: Meta = { module: "series", }; -const module: SeriesModuleType = (config) => (globalConfig) => { +const cssModule: SeriesModuleType = (config) => (globalConfig) => { const { property, className, @@ -53,4 +53,4 @@ const module: SeriesModuleType = (config) => (globalConfig) => { return series; }; -export default module; +export default cssModule; diff --git a/src/modules/single.ts b/src/modules/single.ts index 2f2ce73..37e92dd 100644 --- a/src/modules/single.ts +++ b/src/modules/single.ts @@ -14,7 +14,7 @@ const meta: Meta = { module: "single", }; -const module: SingleModuleType = (config) => (globalConfig) => { +const cssModule: SingleModuleType = (config) => (globalConfig) => { const { className, props, isResponsive = false } = config || {}; const { breakPointSeparator = "", breakPoints = {} } = globalConfig || {}; @@ -32,4 +32,4 @@ const module: SingleModuleType = (config) => (globalConfig) => { return single; }; -export default module; +export default cssModule; diff --git a/src/modules/spacing.ts b/src/modules/spacing.ts index 5f8e75e..787a096 100644 --- a/src/modules/spacing.ts +++ b/src/modules/spacing.ts @@ -53,7 +53,7 @@ const meta: Meta = { module: "spacing", }; -const module: SpacingModuleType = (config) => (globalConfig) => { +const cssModule: SpacingModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, @@ -63,4 +63,4 @@ const module: SpacingModuleType = (config) => (globalConfig) => { }); }; -export default module; +export default cssModule; diff --git a/src/modules/text-align.ts b/src/modules/text-align.ts index 6a365c1..70488f3 100644 --- a/src/modules/text-align.ts +++ b/src/modules/text-align.ts @@ -37,7 +37,7 @@ const meta: Meta = { module: "text-align", }; -const module: TextAlignModuleType = (config) => (globalConfig) => { +const cssModule: TextAlignModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, @@ -47,4 +47,4 @@ const module: TextAlignModuleType = (config) => (globalConfig) => { }); }; -export default module; +export default cssModule; diff --git a/src/modules/text-decoration.ts b/src/modules/text-decoration.ts index c57bd96..a20f543 100644 --- a/src/modules/text-decoration.ts +++ b/src/modules/text-decoration.ts @@ -33,7 +33,7 @@ const meta: Meta = { module: "text-decoration", }; -const module: TextDecorationModuleType = (config) => (globalConfig) => { +const cssModule: TextDecorationModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, @@ -43,4 +43,4 @@ const module: TextDecorationModuleType = (config) => (globalConfig) => { }); }; -export default module; +export default cssModule; diff --git a/src/modules/text-overflow.ts b/src/modules/text-overflow.ts index 45e3f75..d5ddb6b 100644 --- a/src/modules/text-overflow.ts +++ b/src/modules/text-overflow.ts @@ -28,7 +28,7 @@ const meta: Meta = { module: "text-overflow", }; -const module: TextOverflowModuleType = (config) => (globalConfig) => { +const cssModule: TextOverflowModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, @@ -38,4 +38,4 @@ const module: TextOverflowModuleType = (config) => (globalConfig) => { }); }; -export default module; +export default cssModule; diff --git a/src/modules/text-transform.ts b/src/modules/text-transform.ts index 1789eb0..d11c3b2 100644 --- a/src/modules/text-transform.ts +++ b/src/modules/text-transform.ts @@ -29,7 +29,7 @@ const meta: Meta = { module: "text-transform", }; -const module: TextTransformModuleType = (config) => (globalConfig) => { +const cssModule: TextTransformModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, @@ -39,4 +39,4 @@ const module: TextTransformModuleType = (config) => (globalConfig) => { }); }; -export default module; +export default cssModule; diff --git a/src/modules/transform.ts b/src/modules/transform.ts index 7e33292..bd44876 100644 --- a/src/modules/transform.ts +++ b/src/modules/transform.ts @@ -41,7 +41,7 @@ const meta: Meta = { module: "transform", }; -const module: TransformModuleType = (config) => (globalConfig) => { +const cssModule: TransformModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, @@ -51,4 +51,4 @@ const module: TransformModuleType = (config) => (globalConfig) => { }); }; -export default module; +export default cssModule; diff --git a/src/modules/transition.ts b/src/modules/transition.ts index e730bea..ae4b9d1 100644 --- a/src/modules/transition.ts +++ b/src/modules/transition.ts @@ -64,7 +64,7 @@ const meta: Meta = { module: "transition", }; -const module: TransitionModuleType = (config) => (globalConfig) => { +const cssModule: TransitionModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, @@ -74,4 +74,4 @@ const module: TransitionModuleType = (config) => (globalConfig) => { }); }; -export default module; +export default cssModule; diff --git a/src/modules/user-select.ts b/src/modules/user-select.ts index 657be63..6d477b7 100644 --- a/src/modules/user-select.ts +++ b/src/modules/user-select.ts @@ -31,7 +31,7 @@ const meta: Meta = { module: "user-select", }; -const module: UserSelectModuleType = (config) => (globalConfig) => { +const cssModule: UserSelectModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, @@ -41,4 +41,4 @@ const module: UserSelectModuleType = (config) => (globalConfig) => { }); }; -export default module; +export default cssModule; diff --git a/src/modules/vertical-align.ts b/src/modules/vertical-align.ts index b21e719..2f1a3c6 100644 --- a/src/modules/vertical-align.ts +++ b/src/modules/vertical-align.ts @@ -41,7 +41,7 @@ const meta: Meta = { module: "vertical-align", }; -const module: VerticalAlignModuleType = (config) => (globalConfig) => { +const cssModule: VerticalAlignModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, @@ -51,4 +51,4 @@ const module: VerticalAlignModuleType = (config) => (globalConfig) => { }); }; -export default module; +export default cssModule; diff --git a/src/modules/visibility.ts b/src/modules/visibility.ts index 0da59c6..79aa11e 100644 --- a/src/modules/visibility.ts +++ b/src/modules/visibility.ts @@ -27,7 +27,7 @@ const meta: Meta = { module: "visibility", }; -const module: VisibilityModuleType = (config) => (globalConfig) => { +const cssModule: VisibilityModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, @@ -37,4 +37,4 @@ const module: VisibilityModuleType = (config) => (globalConfig) => { }); }; -export default module; +export default cssModule; diff --git a/src/modules/white-space.ts b/src/modules/white-space.ts index bcb0a7e..801adfa 100644 --- a/src/modules/white-space.ts +++ b/src/modules/white-space.ts @@ -31,7 +31,7 @@ const meta: Meta = { module: "white-space", }; -const module: WhiteSpaceModuleType = (config) => (globalConfig) => { +const cssModule: WhiteSpaceModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, @@ -41,4 +41,4 @@ const module: WhiteSpaceModuleType = (config) => (globalConfig) => { }); }; -export default module; +export default cssModule; diff --git a/src/modules/width.ts b/src/modules/width.ts index 544df53..f1e2e02 100644 --- a/src/modules/width.ts +++ b/src/modules/width.ts @@ -34,7 +34,7 @@ const meta: Meta = { module: "width", }; -const module: WidthModuleType = (config) => (globalConfig) => { +const cssModule: WidthModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, @@ -44,4 +44,4 @@ const module: WidthModuleType = (config) => (globalConfig) => { }); }; -export default module; +export default cssModule; diff --git a/src/modules/z-index.ts b/src/modules/z-index.ts index bf86bd4..cc6f92d 100644 --- a/src/modules/z-index.ts +++ b/src/modules/z-index.ts @@ -26,7 +26,7 @@ const meta: Meta = { module: "z-index", }; -const module: ZIndexModuleType = (config) => (globalConfig) => { +const cssModule: ZIndexModuleType = (config) => (globalConfig) => { return applyRules({ config, globalConfig, @@ -36,4 +36,4 @@ const module: ZIndexModuleType = (config) => (globalConfig) => { }); }; -export default module; +export default cssModule; diff --git a/tsconfig.json b/tsconfig.json index 267b168..7c98973 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,15 +1,15 @@ { "compilerOptions": { - "module": "commonjs", + "module": "CommonJS", "esModuleInterop": true, - "target": "es2017", + "target": "ES5", "lib": ["es2017"], "allowJs": true, "noImplicitAny": true, "moduleResolution": "node", "sourceMap": true, "outDir": "dist", - "baseUrl": ".", + "baseUrl": "./src", "resolveJsonModule": true, "paths": { "*": ["node_modules/*", "src/*"] From 5df774a3023d2a6b64ba7d66aed1b3b5f168efac Mon Sep 17 00:00:00 2001 From: Sylvester Date: Sat, 13 Feb 2021 10:58:30 +0100 Subject: [PATCH 05/20] update postcss to 8.0 --- package.json | 37 +- src/cli.ts | 2 +- src/index.ts | 176 +++---- src/types.ts | 7 + src/util/computeStyles.ts | 4 +- src/util/defineClass.ts | 8 +- src/util/responsive.ts | 6 +- src/util/traverse.ts | 3 +- src/utility.config.default.ts | 1 + tsconfig.json | 3 +- yarn.lock | 841 +++++++++++++++++++--------------- 11 files changed, 593 insertions(+), 495 deletions(-) mode change 100755 => 100644 src/cli.ts diff --git a/package.json b/package.json index 023f74d..dce6749 100644 --- a/package.json +++ b/package.json @@ -8,38 +8,41 @@ "main": "dist", "typings": "dist", "scripts": { + "prebuild": "rm -rf dist && copyfiles -u 1 ./src/**/*.html ./src/**/*.css ./dist/", + "build": "tsc -p tsconfig.json", "lint": "eslint './src/**/*.{js,ts,tsx}'", "build-example": "yarn postcss example/example.css -o example/dist/example.css", "test": "echo \"Error: no test specified\" && exit 0" }, "bin": { - "utility": "src/cli.ts" + "utility": "dist/cli.ts" }, "dependencies": { - "commander": "6.2.0", - "cssstats": "^3.4.1", + "commander": "7.0.0", + "cssstats": "^4.0.0", "deepmerge": "^4.2.2", "lodash": "^4.17.20", - "postcss": "7.0.26" + "postcss": "8.2.6" }, "devDependencies": { - "@types/lodash": "^4.14.164", - "@types/node": "^14.14.6", - "@typescript-eslint/eslint-plugin": "^4.6.0", - "@typescript-eslint/parser": "^4.6.0", + "@types/lodash": "^4.14.168", + "@types/node": "^14.14.27", + "@typescript-eslint/eslint-plugin": "^4.15.0", + "@typescript-eslint/parser": "^4.15.0", "babel-eslint": "^10.1.0", "chalk": "^4.1.0", - "eslint": "^7.12.1", - "eslint-config-prettier": "^6.15.0", + "copyfiles": "^2.4.1", + "eslint": "^7.19.0", + "eslint-config-prettier": "^7.2.0", "eslint-plugin-import": "^2.22.1", - "eslint-plugin-prettier": "^3.1.4", + "eslint-plugin-prettier": "^3.3.1", "husky": "^4.3.0", - "lint-staged": "^10.5.1", - "open": "^7.3.0", - "postcss-cli": "^8.2.0", - "prettier": "^2.1.2", - "ts-node": "^9.0.0", - "typescript": "^4.0.5" + "lint-staged": "^10.5.4", + "open": "^7.4.0", + "postcss-cli": "^8.3.1", + "prettier": "^2.2.1", + "ts-node": "^9.1.1", + "typescript": "^4.1.5" }, "husky": { "hooks": { diff --git a/src/cli.ts b/src/cli.ts old mode 100755 new mode 100644 index d25dac5..adc40ad --- a/src/cli.ts +++ b/src/cli.ts @@ -5,7 +5,7 @@ import chalk from "chalk"; import path from "path"; import fs from "fs"; import { promises as fsAsync } from "fs"; -import builder from "./"; +import builder from "./index"; // eslint-disable-next-line @typescript-eslint/no-var-requires const packageJson = require("../package.json"); diff --git a/src/index.ts b/src/index.ts index 18e0dcc..58331fa 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,7 +1,7 @@ -import path from "path"; import fs from "fs"; import chalk from "chalk"; -import postcss from "postcss"; +import path from "path"; +import { AtRule } from "postcss"; import deepmerge from "deepmerge"; import computeStyles from "./util/computeStyles"; @@ -9,7 +9,9 @@ import computeStyles from "./util/computeStyles"; const AT_RULE_NAME = "utility"; const DEFAULT_CONFIG_PATH = "./utility.config.default"; -const builder = postcss.plugin("utility", (config) => (styles) => { +import { PluginConfig } from "./types"; + +function utilityPlugin(config: PluginConfig) { // eslint-disable-next-line @typescript-eslint/no-var-requires const defaultConfig = require(DEFAULT_CONFIG_PATH); const { @@ -18,91 +20,99 @@ const builder = postcss.plugin("utility", (config) => (styles) => { config: globalConfig = {}, forceInsert = false, } = config || defaultConfig; - const toRemove: postcss.AtRule[] = []; + return { + postcssPlugin: "utility", + AtRule: { + [AT_RULE_NAME]: async (atRule: AtRule) => { + const { + /** + * This give the full path of the file + * the plugin is running. Helps to fetch the custom config + */ + source: { input: { file: sourceFilename } = {} } = {}, + params, + } = atRule; + + /** Kept this as an mutable array */ + let modulesToGenerate = []; + + const { dir: sourceDirname } = path.parse(sourceFilename); - styles.walkAtRules("utility", (rule) => { - if (rule.name !== AT_RULE_NAME) { - return; - } - const { - // This give the full path of the file - // the plugin is running. Helps to fetch the custom config - source: { input: { file: sourceFilename } = {} } = {}, - params, - } = rule; - // Kept this as an mutable array - let modulesToGenerate = []; + /** + * Check if params is empty before considering to build all the + * modules as part of the config file which was sent + */ + if (params) { + /** + * ------------------------------ + * NEEDS IMPLEMENTATION - ADDED PLUGIN SUPPORT + * ------------------------------ + * Can rely on this check since postcss always give is a string + */ + const [moduleName, moduleConfigFile] = params.split(" "); + /** + * @utility ; + * map[] = + */ + let moduleConfig = {}; + const modulePath = moduleName + ? path.join(__dirname, `./modules/${moduleName}.js`) + : ""; + const moduleConfigPath = moduleConfigFile + ? path.join(sourceDirname, moduleConfigFile) + : ""; + /** + * Exit if the module name or + * the provided module name is not supported + */ + if (moduleName && !fs.existsSync(modulePath)) { + // eslint-disable-next-line no-console + console.log( + chalk.red(`Module => ${moduleName} : is not supported`) + ); + process.exit(-1); + } + // eslint-disable-next-line @typescript-eslint/no-var-requires + const moduleFunction = require(modulePath); + /** + * Deep merge the config if user has provided custom + * config file + */ + if (moduleConfigPath && fs.existsSync(moduleConfigPath)) { + // eslint-disable-next-line @typescript-eslint/no-var-requires + const customModuleConfig = require(moduleConfigPath); + /** + * Using deepmerge here + * https://github.com/KyleAMathews/deepmerge + */ + moduleConfig = deepmerge(moduleConfig, customModuleConfig); + } + // Push. + modulesToGenerate.push(moduleFunction(moduleConfig)); + } else { + /** + * This means the user has provided a config which has everything + * Blindly reply on the config send to the plugin + */ + modulesToGenerate = [].concat(modules); + } - const { dir: sourceDirname } = path.parse(sourceFilename); + const computedStyles = await computeStyles({ + modules: modulesToGenerate, + plugins, + config: globalConfig, + }); - // Check if params is empty before considering - // to build all the modules as part of the configfile - // which was sent - if (params) { - // ------------------------------ - // NEEDS IMPLEMENTATION - ADDED PLUGIN SUPPORT - // ------------------------------ - // Can rely on this check since - // postcss always give is a string - const [moduleName, moduleConfigFile] = params.split(" "); - // @utility ; - // map[] = - let moduleConfig = {}; - const modulePath = moduleName - ? path.join(__dirname, `./modules/${moduleName}.js`) - : ""; - const moduleConfigPath = moduleConfigFile - ? path.join(sourceDirname, moduleConfigFile) - : ""; - // Exit if the module name or - // the provided module name is not supported - if (moduleName && !fs.existsSync(modulePath)) { - // eslint-disable-next-line no-console - console.log(chalk.red(`Module => ${moduleName} : is not supported`)); - process.exit(-1); - } - // eslint-disable-next-line @typescript-eslint/no-var-requires - const moduleFunction = require(modulePath); - // Deep merge the config if user has provided custom - // config file - if (moduleConfigPath && fs.existsSync(moduleConfigPath)) { - // eslint-disable-next-line @typescript-eslint/no-var-requires - const customModuleConfig = require(moduleConfigPath); - // Using deepmerge here - // https://github.com/KyleAMathews/deepmerge - moduleConfig = deepmerge(moduleConfig, customModuleConfig); - } - // Push. - modulesToGenerate.push(moduleFunction(moduleConfig)); - } else { - // This means the user has provide a config which has everything - // Blindly reply on the config send to the plugin - modulesToGenerate = [].concat(modules); - } - const computedStyles = computeStyles({ - modules: modulesToGenerate, - plugins, - config: globalConfig, - }); - rule.before(computedStyles); - toRemove.push(rule); - }); + atRule.before(computedStyles); + atRule.remove(); + }, + }, + }; +} - if (forceInsert) { - const computedStyles = computeStyles({ - modules, - plugins, - config: globalConfig, - }); - styles.prepend(computedStyles); - } - // remove @utility - toRemove.forEach(function (rule) { - rule.remove(); - }); -}); +export default utilityPlugin; -export default builder; +export const postcss = true; export * as plugins from "./plugins"; export * as modules from "./modules"; diff --git a/src/types.ts b/src/types.ts index 9d970da..04d2538 100644 --- a/src/types.ts +++ b/src/types.ts @@ -165,3 +165,10 @@ export { UserSelectSupportedTypes, } from "./modules/user-select"; export { ZIndexModuleType, ZIndexSupportedTypes } from "./modules/z-index"; + +export interface PluginConfig { + config: GlobalUtilityConfig; + forceInsert?: boolean; + modules: Module[]; + plugins: any[]; +} diff --git a/src/util/computeStyles.ts b/src/util/computeStyles.ts index 7a2b174..f642f24 100644 --- a/src/util/computeStyles.ts +++ b/src/util/computeStyles.ts @@ -16,9 +16,9 @@ export default function computedStyles({ modules = [], config = {}, plugins = [], -}: Input) { +}: Input): any { // Run through the modules and create - // module specfic nodes + // module specific nodes const nodes = modules.reduce((acc, curr) => { return acc.concat(curr(config)); }, []); diff --git a/src/util/defineClass.ts b/src/util/defineClass.ts index 0bf38b3..eefb65e 100644 --- a/src/util/defineClass.ts +++ b/src/util/defineClass.ts @@ -1,15 +1,11 @@ -import postcss from "postcss"; +import postcss, { Rule } from "postcss"; import { GenericObject, Meta } from "../types"; const escapeClassName = (className: string) => className.replace(/([^A-Za-z0-9\-\:\_\ \.])/g, "\\$1"); //eslint-disable-line -type DefineClass = ( - name: string, - props: GenericObject, - meta: Meta -) => postcss.Rule; +type DefineClass = (name: string, props: GenericObject, meta: Meta) => Rule; const defineClass: DefineClass = (name, props, meta: any = {}) => { const decls = Object.keys(props).map((prop) => diff --git a/src/util/responsive.ts b/src/util/responsive.ts index 266ac9b..10a070a 100644 --- a/src/util/responsive.ts +++ b/src/util/responsive.ts @@ -1,11 +1,11 @@ -import postcss from "postcss"; +import postcss, { Rule, AtRule } from "postcss"; import { GlobalUtilityConfig } from "../types"; type Responsive = ( - rules: postcss.Rule[], + rules: Rule[], breakpoints?: GlobalUtilityConfig["breakPoints"], options?: Pick -) => postcss.AtRule[]; +) => AtRule[]; const responsive: Responsive = (rules, breakpoints = {}, options) => { const { breakPointSeparator = "" } = options || {}; diff --git a/src/util/traverse.ts b/src/util/traverse.ts index 445c143..7d4088d 100644 --- a/src/util/traverse.ts +++ b/src/util/traverse.ts @@ -2,8 +2,7 @@ import { Root, ChildNode, AtRule, Declaration, Rule } from "postcss"; import { Meta } from "../types"; type CallBack = (node: CreatedNode) => void; -export interface CreatedNode - extends Omit { +export interface CreatedNode extends Pick { nodes: Array<{ prop: string; value: string }>; media?: any; meta?: Meta; diff --git a/src/utility.config.default.ts b/src/utility.config.default.ts index 57a96c7..f9d6378 100644 --- a/src/utility.config.default.ts +++ b/src/utility.config.default.ts @@ -127,4 +127,5 @@ export default { }, modules, plugins, + forceInsert: false, }; diff --git a/tsconfig.json b/tsconfig.json index 7c98973..363d0ea 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,7 +3,7 @@ "module": "CommonJS", "esModuleInterop": true, "target": "ES5", - "lib": ["es2017"], + "lib": ["es2017", "esnext"], "allowJs": true, "noImplicitAny": true, "moduleResolution": "node", @@ -15,5 +15,6 @@ "*": ["node_modules/*", "src/*"] } }, + "sourceRoot": "src", "include": ["src/**/*"] } diff --git a/yarn.lock b/yarn.lock index f1db13c..8f6ca03 100644 --- a/yarn.lock +++ b/yarn.lock @@ -109,10 +109,10 @@ lodash "^4.17.19" to-fast-properties "^2.0.0" -"@eslint/eslintrc@^0.2.1": - version "0.2.1" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.2.1.tgz#f72069c330461a06684d119384435e12a5d76e3c" - integrity sha512-XRUeBZ5zBWLYgSANMpThFddrZZkEbGHgUdt5UJjZfnlN9BGCiUBrf+nvbRupSjMvqzwnQN0qwCmOxITt1cfywA== +"@eslint/eslintrc@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.3.0.tgz#d736d6963d7003b6514e6324bec9c602ac340318" + integrity sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg== dependencies: ajv "^6.12.4" debug "^4.1.1" @@ -121,7 +121,7 @@ ignore "^4.0.6" import-fresh "^3.2.1" js-yaml "^3.13.1" - lodash "^4.17.19" + lodash "^4.17.20" minimatch "^3.0.4" strip-json-comments "^3.1.1" @@ -161,92 +161,92 @@ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= -"@types/lodash@^4.14.164": - version "4.14.164" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.164.tgz#52348bcf909ac7b4c1bcbeda5c23135176e5dfa0" - integrity sha512-fXCEmONnrtbYUc5014avwBeMdhHHO8YJCkOBflUL9EoJBSKZ1dei+VO74fA7JkTHZ1GvZack2TyIw5U+1lT8jg== +"@types/lodash@^4.14.168": + version "4.14.168" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.168.tgz#fe24632e79b7ade3f132891afff86caa5e5ce008" + integrity sha512-oVfRvqHV/V6D1yifJbVRU3TMp8OT6o6BG+U9MkwuJ3U8/CsDHvalRpsxBqivn71ztOFZBTfJMvETbqHiaNSj7Q== -"@types/node@^14.14.6": - version "14.14.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.6.tgz#146d3da57b3c636cc0d1769396ce1cfa8991147f" - integrity sha512-6QlRuqsQ/Ox/aJEQWBEJG7A9+u7oSYl3mem/K8IzxXG/kAGbV1YPD9Bg9Zw3vyxC/YP+zONKwy8hGkSt1jxFMw== +"@types/node@^14.14.27": + version "14.14.27" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.27.tgz#c7127f8da0498993e13b1a42faf1303d3110d2f2" + integrity sha512-Ecfmo4YDQPwuqTCl1yBxLV5ihKfRlkBmzUEDcfIRvDxOTGQEeikr317Ln7Gcv0tjA8dVgKI3rniqW2G1OyKDng== "@types/parse-json@^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== -"@typescript-eslint/eslint-plugin@^4.6.0": - version "4.6.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.6.0.tgz#210cd538bb703f883aff81d3996961f5dba31fdb" - integrity sha512-1+419X+Ynijytr1iWI+/IcX/kJryc78YNpdaXR1aRO1sU3bC0vZrIAF1tIX7rudVI84W7o7M4zo5p1aVt70fAg== +"@typescript-eslint/eslint-plugin@^4.15.0": + version "4.15.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.15.0.tgz#13a5a07cf30d0d5781e43480aa2a8d38d308b084" + integrity sha512-DJgdGZW+8CFUTz5C/dnn4ONcUm2h2T0itWD85Ob5/V27Ndie8hUoX5HKyGssvR8sUMkAIlUc/AMK67Lqa3kBIQ== dependencies: - "@typescript-eslint/experimental-utils" "4.6.0" - "@typescript-eslint/scope-manager" "4.6.0" + "@typescript-eslint/experimental-utils" "4.15.0" + "@typescript-eslint/scope-manager" "4.15.0" debug "^4.1.1" functional-red-black-tree "^1.0.1" + lodash "^4.17.15" regexpp "^3.0.0" semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/experimental-utils@4.6.0": - version "4.6.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.6.0.tgz#f750aef4dd8e5970b5c36084f0a5ca2f0db309a4" - integrity sha512-pnh6Beh2/4xjJVNL+keP49DFHk3orDHHFylSp3WEjtgW3y1U+6l+jNnJrGlbs6qhAz5z96aFmmbUyKhunXKvKw== +"@typescript-eslint/experimental-utils@4.15.0": + version "4.15.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.15.0.tgz#b87c36410a9b23f637689427be85007a2ec1a9c6" + integrity sha512-V4vaDWvxA2zgesg4KPgEGiomWEBpJXvY4ZX34Y3qxK8LUm5I87L+qGIOTd9tHZOARXNRt9pLbblSKiYBlGMawg== dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/scope-manager" "4.6.0" - "@typescript-eslint/types" "4.6.0" - "@typescript-eslint/typescript-estree" "4.6.0" + "@typescript-eslint/scope-manager" "4.15.0" + "@typescript-eslint/types" "4.15.0" + "@typescript-eslint/typescript-estree" "4.15.0" eslint-scope "^5.0.0" eslint-utils "^2.0.0" -"@typescript-eslint/parser@^4.6.0": - version "4.6.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.6.0.tgz#7e9ff7df2f21d5c8f65f17add3b99eeeec33199d" - integrity sha512-Dj6NJxBhbdbPSZ5DYsQqpR32MwujF772F2H3VojWU6iT4AqL4BKuoNWOPFCoSZvCcADDvQjDpa6OLDAaiZPz2Q== +"@typescript-eslint/parser@^4.15.0": + version "4.15.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.15.0.tgz#8df94365b4b7161f9e8514fe28aef19954810b6b" + integrity sha512-L6Dtbq8Bc7g2aZwnIBETpmUa9XDKCMzKVwAArnGp5Mn7PRNFjf3mUzq8UeBjL3K8t311hvevnyqXAMSmxO8Gpg== dependencies: - "@typescript-eslint/scope-manager" "4.6.0" - "@typescript-eslint/types" "4.6.0" - "@typescript-eslint/typescript-estree" "4.6.0" + "@typescript-eslint/scope-manager" "4.15.0" + "@typescript-eslint/types" "4.15.0" + "@typescript-eslint/typescript-estree" "4.15.0" debug "^4.1.1" -"@typescript-eslint/scope-manager@4.6.0": - version "4.6.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.6.0.tgz#b7d8b57fe354047a72dfb31881d9643092838662" - integrity sha512-uZx5KvStXP/lwrMrfQQwDNvh2ppiXzz5TmyTVHb+5TfZ3sUP7U1onlz3pjoWrK9konRyFe1czyxObWTly27Ang== +"@typescript-eslint/scope-manager@4.15.0": + version "4.15.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.15.0.tgz#c42703558ea6daaaba51a9c3a86f2902dbab9432" + integrity sha512-CSNBZnCC2jEA/a+pR9Ljh8Y+5TY5qgbPz7ICEk9WCpSEgT6Pi7H2RIjxfrrbUXvotd6ta+i27sssKEH8Azm75g== dependencies: - "@typescript-eslint/types" "4.6.0" - "@typescript-eslint/visitor-keys" "4.6.0" + "@typescript-eslint/types" "4.15.0" + "@typescript-eslint/visitor-keys" "4.15.0" -"@typescript-eslint/types@4.6.0": - version "4.6.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.6.0.tgz#157ca925637fd53c193c6bf226a6c02b752dde2f" - integrity sha512-5FAgjqH68SfFG4UTtIFv+rqYJg0nLjfkjD0iv+5O27a0xEeNZ5rZNDvFGZDizlCD1Ifj7MAbSW2DPMrf0E9zjA== +"@typescript-eslint/types@4.15.0": + version "4.15.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.15.0.tgz#3011ae1ac3299bb9a5ac56bdd297cccf679d3662" + integrity sha512-su4RHkJhS+iFwyqyXHcS8EGPlUVoC+XREfy5daivjLur9JP8GhvTmDipuRpcujtGC4M+GYhUOJCPDE3rC5NJrg== -"@typescript-eslint/typescript-estree@4.6.0": - version "4.6.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.6.0.tgz#85bd98dcc8280511cfc5b2ce7b03a9ffa1732b08" - integrity sha512-s4Z9qubMrAo/tw0CbN0IN4AtfwuehGXVZM0CHNMdfYMGBDhPdwTEpBrecwhP7dRJu6d9tT9ECYNaWDHvlFSngA== +"@typescript-eslint/typescript-estree@4.15.0": + version "4.15.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.15.0.tgz#402c86a7d2111c1f7a2513022f22a38a395b7f93" + integrity sha512-jG6xTmcNbi6xzZq0SdWh7wQ9cMb2pqXaUp6bUZOMsIlu5aOlxGxgE/t6L/gPybybQGvdguajXGkZKSndZJpksA== dependencies: - "@typescript-eslint/types" "4.6.0" - "@typescript-eslint/visitor-keys" "4.6.0" + "@typescript-eslint/types" "4.15.0" + "@typescript-eslint/visitor-keys" "4.15.0" debug "^4.1.1" globby "^11.0.1" is-glob "^4.0.1" - lodash "^4.17.15" semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/visitor-keys@4.6.0": - version "4.6.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.6.0.tgz#fb05d6393891b0a089b243fc8f9fb8039383d5da" - integrity sha512-38Aa9Ztl0XyFPVzmutHXqDMCu15Xx8yKvUo38Gu3GhsuckCh3StPI5t2WIO9LHEsOH7MLmlGfKUisU8eW1Sjhg== +"@typescript-eslint/visitor-keys@4.15.0": + version "4.15.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.15.0.tgz#2a07768df30c8a5673f1bce406338a07fdec38ca" + integrity sha512-RnDtJwOwFucWFAMjG3ghCG/ikImFJFEg20DI7mn4pHEx3vC48lIAoyjhffvfHmErRDboUPC7p9Z2il4CLb7qxA== dependencies: - "@typescript-eslint/types" "4.6.0" + "@typescript-eslint/types" "4.15.0" eslint-visitor-keys "^2.0.0" -acorn-jsx@^5.2.0: +acorn-jsx@^5.2.0, acorn-jsx@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== @@ -284,14 +284,14 @@ ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^6.9.1: - version "6.10.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1" - integrity sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg== +ajv@^7.0.2: + version "7.1.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-7.1.0.tgz#f982ea7933dc7f1012eae9eec5a86687d805421b" + integrity sha512-svS9uILze/cXbH0z2myCK2Brqprx/+JJYK5pHicT/GQiBfzzhUVAIT6MwqJg8y4xV/zoGsUeuPuwtoiKSGE15g== dependencies: - fast-deep-equal "^2.0.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" uri-js "^4.2.2" ansi-colors@^4.1.1: @@ -306,17 +306,12 @@ ansi-escapes@^4.3.0: dependencies: type-fest "^0.11.0" -ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== - ansi-regex@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== -ansi-styles@^3.2.0, ansi-styles@^3.2.1: +ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== @@ -380,11 +375,6 @@ array.prototype.flat@^1.2.3: define-properties "^1.1.3" es-abstract "^1.17.0-next.1" -astral-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" - integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== - astral-regex@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" @@ -413,9 +403,9 @@ balanced-match@^1.0.0: integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= binary-extensions@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" - integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== brace-expansion@^1.1.7: version "1.1.11" @@ -437,7 +427,7 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== -bytes@^3.0.0: +bytes@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== @@ -455,7 +445,7 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -473,9 +463,9 @@ chalk@^4.0.0, chalk@^4.1.0: supports-color "^7.1.0" chokidar@^3.3.0: - version "3.4.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.3.tgz#c1df38231448e45ca4ac588e6c79573ba6a57d5b" - integrity sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ== + version "3.5.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" + integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== dependencies: anymatch "~3.1.1" braces "~3.0.2" @@ -485,7 +475,7 @@ chokidar@^3.3.0: normalize-path "~3.0.0" readdirp "~3.5.0" optionalDependencies: - fsevents "~2.1.2" + fsevents "~2.3.1" ci-info@^2.0.0: version "2.0.0" @@ -513,9 +503,9 @@ cli-truncate@^2.1.0: string-width "^4.2.0" cliui@^7.0.2: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.3.tgz#ef180f26c8d9bff3927ee52428bfec2090427981" - integrity sha512-Gj3QHTkVMPKqwP3f7B4KPkBZRMR9r4rfi5bXFpg1a+Svvj8l7q5CnkBkVQzfxT5DFSsGk2+PascOgL0JYkL2kw== + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== dependencies: string-width "^4.2.0" strip-ansi "^6.0.0" @@ -540,7 +530,7 @@ color-name@1.1.3: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= -color-name@~1.1.4: +color-name@^1.1.4, color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== @@ -550,7 +540,12 @@ colorette@^1.2.1: resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== -commander@6.2.0, commander@^6.2.0: +commander@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.0.0.tgz#3e2bbfd8bb6724760980988fb5b22b7ee6b71ab2" + integrity sha512-ovx/7NkTrnPuIV8sqk/GjUIIM1+iUQeqA3ye2VNpq9sVoiZsooObWlQy+OPWGI17GDaEoybuAGJm6U8yC077BA== + +commander@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.0.tgz#b990bfb8ac030aedc6d11bc04d1488ffef56db75" integrity sha512-zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q== @@ -570,6 +565,24 @@ contains-path@^0.1.0: resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= +copyfiles@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/copyfiles/-/copyfiles-2.4.1.tgz#d2dcff60aaad1015f09d0b66e7f0f1c5cd3c5da5" + integrity sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg== + dependencies: + glob "^7.0.5" + minimatch "^3.0.3" + mkdirp "^1.0.4" + noms "0.0.0" + through2 "^2.0.1" + untildify "^4.0.0" + yargs "^16.1.0" + +core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + cosmiconfig@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" @@ -581,6 +594,11 @@ cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + cross-spawn@^7.0.0: version "7.0.1" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14" @@ -604,16 +622,15 @@ css-color-names@0.0.1: resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.1.tgz#5d0548fa256456ede4a9a0c2ac7ab19d3eb1ad81" integrity sha1-XQVI+iVkVu3kqaDCrHqxnT6xrYE= -css-selector-tokenizer@^0.7.0: - version "0.7.1" - resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz#a177271a8bca5019172f4f891fc6eed9cbf68d5d" - integrity sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA== +css-selector-tokenizer@^0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz#735f26186e67c749aaf275783405cf0661fae8f1" + integrity sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg== dependencies: - cssesc "^0.1.0" - fastparse "^1.1.1" - regexpu-core "^1.0.0" + cssesc "^3.0.0" + fastparse "^1.1.2" -css-shorthand-expand@^1.1.0: +css-shorthand-expand@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/css-shorthand-expand/-/css-shorthand-expand-1.2.0.tgz#bd6ac8d79f99928581eaca9fe05a03d316d17fe5" integrity sha512-L3RS1VNYuXgMOfVGX4WzP9AFK6KL0JuioSoO8661egEac2eHX9/s4yFO8mgK6QEtm8UmU8IvuKzPgdQpU0DhpQ== @@ -639,33 +656,34 @@ css-url-regex@0.0.1: resolved "https://registry.yarnpkg.com/css-url-regex/-/css-url-regex-0.0.1.tgz#e05af8c6c290d451ef1632b455ea5c81b4b1395c" integrity sha1-4Fr4xsKQ1FHvFjK0VepcgbSxOVw= -cssesc@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" - integrity sha1-yBSQPkViM3GgR3tAEJqq++6t27Q= - -cssstats@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/cssstats/-/cssstats-3.4.1.tgz#d5e5b0e356ed60126ae299e9107b67c96fca9189" - integrity sha512-j6iBsr9z1DfIKEbZaJSANi4hOq4GN1Ks2zB/MPBYh/9mbqq0wAQ5f474jVkVFbLk8bO6vLM23rE4Dn0F6XAbPw== - dependencies: - bytes "^3.0.0" - css-selector-tokenizer "^0.7.0" - css-shorthand-expand "^1.1.0" - gzip-size "^4.1.0" - has-class-selector "^3.3.1" - has-element-selector "^3.3.1" - has-id-selector "^3.3.1" - has-pseudo-class "^3.3.1" - has-pseudo-element "^3.3.1" +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssstats@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssstats/-/cssstats-4.0.0.tgz#742df1909bdac3b8cb012a6fa49cdf1c8324711e" + integrity sha512-jcZw44x84FKaUo9fE+HRPtW2uDDqBSc2kVUqGiirH34YXPP9tXiAXI9D1fdXygZQ05KoT9sX2Ar5xi9oFunVXA== + dependencies: + bytes "^3.1.0" + css-selector-tokenizer "^0.7.3" + css-shorthand-expand "^1.2.0" + gzip-size "^5.1.1" + has-class-selector "^4.0.0" + has-element-selector "^4.0.0" + has-id-selector "^4.0.0" + has-pseudo-class "^4.0.0" + has-pseudo-element "^4.0.0" is-blank "^2.1.0" is-css-shorthand "^1.0.1" is-present "^1.0.0" - is-vendor-prefixed "^3.3.1" - lodash "^4.17.5" - postcss "^6.0.21" - postcss-safe-parser "^3.0.1" - specificity "^0.3.2" + is-vendor-prefixed "^4.0.0" + lodash "^4.17.20" + postcss "^8.1.4" + postcss-custom-properties "^10.0.0" + postcss-safe-parser "^5.0.2" + specificity "^0.4.1" debug@^2.6.9: version "2.6.9" @@ -747,11 +765,6 @@ duplexer@^0.1.1: resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" @@ -832,12 +845,10 @@ escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -eslint-config-prettier@^6.15.0: - version "6.15.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz#7f93f6cb7d45a92f1537a70ecc06366e1ac6fed9" - integrity sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw== - dependencies: - get-stdin "^6.0.0" +eslint-config-prettier@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-7.2.0.tgz#f4a4bd2832e810e8cc7c1411ec85b3e85c0c53f9" + integrity sha512-rV4Qu0C3nfJKPOAhFujFxB7RMP+URFyQqqOZW9DMRD7ZDTFyjaIlETU3xzHELt++4ugC0+Jm084HQYkkJe+Ivg== eslint-import-resolver-node@^0.3.4: version "0.3.4" @@ -874,10 +885,10 @@ eslint-plugin-import@^2.22.1: resolve "^1.17.0" tsconfig-paths "^3.9.0" -eslint-plugin-prettier@^3.1.4: - version "3.1.4" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.4.tgz#168ab43154e2ea57db992a2cd097c828171f75c2" - integrity sha512-jZDa8z76klRqo+TdGDTFJSavwbnWK2ZpqGKNZ+VvweMW516pDUMmQ2koXvxEE4JhzNvTv+radye/bWGBmA6jmg== +eslint-plugin-prettier@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.1.tgz#7079cfa2497078905011e6f82e8dd8453d1371b7" + integrity sha512-Rq3jkcFY8RYeQLgk2cCwuc0P7SEFwDravPhsJZOQ5N4YI4DSg50NyqJ/9gdZHzQlHf8MvafSesbNJCcP/FF6pQ== dependencies: prettier-linter-helpers "^1.0.0" @@ -916,13 +927,13 @@ eslint-visitor-keys@^2.0.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== -eslint@^7.12.1: - version "7.12.1" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.12.1.tgz#bd9a81fa67a6cfd51656cdb88812ce49ccec5801" - integrity sha512-HlMTEdr/LicJfN08LB3nM1rRYliDXOmfoO4vj39xN6BLpFzF00hbwBoqHk8UcJ2M/3nlARZWy/mslvGEuZFvsg== +eslint@^7.19.0: + version "7.19.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.19.0.tgz#6719621b196b5fad72e43387981314e5d0dc3f41" + integrity sha512-CGlMgJY56JZ9ZSYhJuhow61lMPPjUzWmChFya71Z/jilVos7mR/jPgaEfVGgMBY5DshbKdG8Ezb8FDCHcoMEMg== dependencies: "@babel/code-frame" "^7.0.0" - "@eslint/eslintrc" "^0.2.1" + "@eslint/eslintrc" "^0.3.0" ajv "^6.10.0" chalk "^4.0.0" cross-spawn "^7.0.2" @@ -932,10 +943,10 @@ eslint@^7.12.1: eslint-scope "^5.1.1" eslint-utils "^2.1.0" eslint-visitor-keys "^2.0.0" - espree "^7.3.0" + espree "^7.3.1" esquery "^1.2.0" esutils "^2.0.2" - file-entry-cache "^5.0.1" + file-entry-cache "^6.0.0" functional-red-black-tree "^1.0.1" glob-parent "^5.0.0" globals "^12.1.0" @@ -946,7 +957,7 @@ eslint@^7.12.1: js-yaml "^3.13.1" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" - lodash "^4.17.19" + lodash "^4.17.20" minimatch "^3.0.4" natural-compare "^1.4.0" optionator "^0.9.1" @@ -955,7 +966,7 @@ eslint@^7.12.1: semver "^7.2.1" strip-ansi "^6.0.0" strip-json-comments "^3.1.0" - table "^5.2.3" + table "^6.0.4" text-table "^0.2.0" v8-compile-cache "^2.0.3" @@ -968,6 +979,15 @@ espree@^7.3.0: acorn-jsx "^5.2.0" eslint-visitor-keys "^1.3.0" +espree@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" + integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== + dependencies: + acorn "^7.4.0" + acorn-jsx "^5.3.1" + eslint-visitor-keys "^1.3.0" + esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" @@ -1054,7 +1074,7 @@ fast-levenshtein@^2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= -fastparse@^1.1.1: +fastparse@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ== @@ -1073,12 +1093,12 @@ figures@^3.2.0: dependencies: escape-string-regexp "^1.0.5" -file-entry-cache@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" - integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== +file-entry-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.0.tgz#7921a89c391c6d93efec2169ac6bf300c527ea0a" + integrity sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA== dependencies: - flat-cache "^2.0.1" + flat-cache "^3.0.4" fill-range@^7.0.1: version "7.0.1" @@ -1109,39 +1129,38 @@ find-versions@^3.2.0: dependencies: semver-regex "^2.0.0" -flat-cache@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" - integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== dependencies: - flatted "^2.0.0" - rimraf "2.6.3" - write "1.0.3" + flatted "^3.1.0" + rimraf "^3.0.2" -flatted@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.0.tgz#55122b6536ea496b4b44893ee2608141d10d9916" - integrity sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg== +flatted@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" + integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== fs-extra@^9.0.0: - version "9.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc" - integrity sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ== + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== dependencies: at-least-node "^1.0.0" graceful-fs "^4.2.0" jsonfile "^6.0.1" - universalify "^1.0.0" + universalify "^2.0.0" fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@~2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" - integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== +fsevents@~2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== function-bind@^1.1.1: version "1.1.1" @@ -1172,11 +1191,6 @@ get-own-enumerable-property-symbols@^3.0.0: resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz#b877b49a5c16aefac3655f2ed2ea5b684df8d203" integrity sha512-CIJYJC4GGF06TakLg8z4GQKvDsx9EMspVxOYih7LerEL/WosUnFIww45CGfxfeKHqlg3twgUrYRT1O3WQqjGCg== -get-stdin@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" - integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== - get-stdin@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53" @@ -1203,6 +1217,18 @@ glob-parent@~5.1.0: dependencies: is-glob "^4.0.1" +glob@^7.0.5: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + glob@^7.1.3: version "7.1.4" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" @@ -1227,7 +1253,19 @@ globals@^12.1.0: dependencies: type-fest "^0.8.1" -globby@^11.0.0, globby@^11.0.1: +globby@^11.0.0: + version "11.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.2.tgz#1af538b766a3b540ebfb58a32b2e2d5897321d83" + integrity sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.1.1" + ignore "^5.1.4" + merge2 "^1.3.0" + slash "^3.0.0" + +globby@^11.0.1: version "11.0.1" resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357" integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ== @@ -1239,7 +1277,7 @@ globby@^11.0.0, globby@^11.0.1: merge2 "^1.3.0" slash "^3.0.0" -graceful-fs@^4.1.2, graceful-fs@^4.2.0: +graceful-fs@^4.1.2: version "4.2.4" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== @@ -1249,25 +1287,30 @@ graceful-fs@^4.1.6: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== -gzip-size@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-4.1.0.tgz#8ae096257eabe7d69c45be2b67c448124ffb517c" - integrity sha1-iuCWJX6r59acRb4rZ8RIEk/7UXw= +graceful-fs@^4.2.0: + version "4.2.6" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" + integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== + +gzip-size@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" + integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== dependencies: duplexer "^0.1.1" - pify "^3.0.0" + pify "^4.0.1" -has-class-selector@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/has-class-selector/-/has-class-selector-3.3.1.tgz#80740e93357bc0b96da42bc1d06e2a8a7d89943f" - integrity sha512-Gn2FutMyT2HO7Q4UbRrGQbk0HpGXIu1ptZnmPuVuzB3BoQffWVKzA+jV0Yxw3fxtuvuKbhJYJnGHrAMPFcuGow== +has-class-selector@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-class-selector/-/has-class-selector-4.0.0.tgz#eebeb2cf2aa2f79496e0b6d4b92a74b5dd4c95dd" + integrity sha512-vHI2AQG8kvJAxcQCOdG8aUiTHhUnmGt40f/3KJtiWLFNvt3YlcbdbWJAoZIs0hirQoFN+P8NIwpJMb7LRkkuSA== -has-element-selector@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/has-element-selector/-/has-element-selector-3.3.1.tgz#2be3ac9c6d9048e9ccc4f95bcd9d7b80a61101c5" - integrity sha512-F0i77HehrvTV0U4t+Av8Pcgl3rrrfoZg8WCkvCuQNRWKjuUveEbiePwoMpqe2CXwd9Bc0C2Es0wvUbhIjh+kDw== +has-element-selector@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-element-selector/-/has-element-selector-4.0.0.tgz#97994e6cd335ff324157045adb6c150f4adf2bf1" + integrity sha512-L85fbzBoV78AqC5X34wlfp3qev+hzXEEtqSOXoPDXFtIBmFn4sxVlsIUtTZQA/2hu7dt9xpuqWDB+GS4Y7tbRQ== dependencies: - css-selector-tokenizer "^0.7.0" + css-selector-tokenizer "^0.7.3" has-flag@^3.0.0: version "3.0.0" @@ -1279,24 +1322,24 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-id-selector@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/has-id-selector/-/has-id-selector-3.3.1.tgz#a3e76cc1655157d495d368168752d67a261c8ebe" - integrity sha512-Vhqzp4R/W15MPXpftmcAl0NQVbdh9XdKvT5OLybrz80nLfzcP/L0Qk6rLzzTcp3gr2w16O1cCVcgQCyMSirgFg== +has-id-selector@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-id-selector/-/has-id-selector-4.0.0.tgz#c10b4f4481085653eceea42abca23ea15e3914dd" + integrity sha512-JSCvmyVpsn4p4Bjt+u8vbydNAK3m5Ixu+cF/B1X9gRHBQan4Bkd/eE/jQ191O2KofObLHyeTWfrzfbTA/0NRIg== -has-pseudo-class@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/has-pseudo-class/-/has-pseudo-class-3.3.1.tgz#b0513552f54e878b5bc0322a7f8be4a653852406" - integrity sha512-7qnV9FrqOqoGFfMAWgP08xkF65MGTg4g/Ope/vTyDDq2zFp2gNTT2floDuhwhJ0eVJLnyQm1YYafPnrTEe/OJg== +has-pseudo-class@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-pseudo-class/-/has-pseudo-class-4.0.0.tgz#e4b9f45718ff7ad19c28c401b76b70dc20e73a01" + integrity sha512-H9NPtMTs85zQ9drMtGqSdQcmqr4oprxCdUVyldwsHXHQO33fzIpX/X96iBovmu8YIdaQ6XGg9ZxPrBifjcfILg== dependencies: pseudo-classes "1.0.0" -has-pseudo-element@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/has-pseudo-element/-/has-pseudo-element-3.3.1.tgz#3f05d6826d2136eb6296c9562cf0ffa06a93adbe" - integrity sha512-X33R/CkIOPRhgdPpR7ANE+5y9YvBndQVCyO5DVPFVCY3haNHccYjsnck/nhAaXbA5zTQriM1BtdqNI4biYUv+g== +has-pseudo-element@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-pseudo-element/-/has-pseudo-element-4.0.0.tgz#32bd1025a63a718f0311ec43fd8b051e273b5de1" + integrity sha512-JibJn1za1U1ue/hxmVIwR+NdX0tYfpltzQNqLADKeyMlUbfCo16jUvX9ZmMgS3OpQw4WSSedTrTk9KokzswuxQ== dependencies: - pseudo-elements "1.0.0" + pseudo-elements "1.1.0" has-symbols@^1.0.1: version "1.0.1" @@ -1414,6 +1457,11 @@ inherits@2: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= +inherits@^2.0.1, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" @@ -1486,11 +1534,6 @@ is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" @@ -1554,10 +1597,15 @@ is-symbol@^1.0.2: dependencies: has-symbols "^1.0.1" -is-vendor-prefixed@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/is-vendor-prefixed/-/is-vendor-prefixed-3.3.1.tgz#0746b332b4c651bb20f16fd6aa996e9a87c09673" - integrity sha512-s/bVQt87pP6gm3OlJm78i11Cw1D8BBmkffVhxwdO/jvtcVYKjYkq7BY85rortwA5smP77+xtz+ooobfr/5Wmxg== +is-url-superb@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-url-superb/-/is-url-superb-4.0.0.tgz#b54d1d2499bb16792748ac967aa3ecb41a33a8c2" + integrity sha512-GI+WjezhPPcbM+tqE9LnmsY5qqjwHzTvjJ36wxYX5ujNXefSUJ/T17r5bqDV8yLhcgB59KTPNOc9O9cmHTPWsA== + +is-vendor-prefixed@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-vendor-prefixed/-/is-vendor-prefixed-4.0.0.tgz#1058f8a2a46d1f08a09f68680092dea3a24dbb22" + integrity sha512-IOs6nB0cELr2AfldQbfGf5urbX74pYE2Z9sULu2yeQswqodxtQZwi+avzSGM6AVJ5KbvfStd8lH/ooZ+B5cdUg== dependencies: vendor-prefixes "1.0.0" @@ -1573,7 +1621,12 @@ is-wsl@^2.1.1: dependencies: is-docker "^2.0.0" -isarray@^1.0.0: +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + +isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= @@ -1601,11 +1654,6 @@ jsesc@^2.5.1: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= - json-parse-better-errors@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" @@ -1616,6 +1664,11 @@ json-schema-traverse@^0.4.1: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" @@ -1650,10 +1703,10 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= -lint-staged@^10.5.1: - version "10.5.1" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.5.1.tgz#901e915c2360072dded0e7d752a0d9a49e079daa" - integrity sha512-fTkTGFtwFIJJzn/PbUO3RXyEBHIhbfYBE7+rJyLcOXabViaO/h6OslgeK6zpeUtzkDrzkgyAYDTLAwx6JzDTHw== +lint-staged@^10.5.4: + version "10.5.4" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.5.4.tgz#cd153b5f0987d2371fc1d2847a409a2fe705b665" + integrity sha512-EechC3DdFic/TdOPgj/RB3FicqE6932LTHCUm0Y2fsD9KGlLB+RwJl2q1IYBIvEsKzDOgn0D4gll+YxG5RsrKg== dependencies: chalk "^4.1.0" cli-truncate "^2.1.0" @@ -1735,11 +1788,6 @@ lodash.sortby@^4.7.0: resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= -lodash@^4.17.11, lodash@^4.17.5: - version "4.17.11" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" - integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== - lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20: version "4.17.20" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" @@ -1795,29 +1843,22 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -minimatch@^3.0.4: +minimatch@^3.0.3, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: brace-expansion "^1.1.7" -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= - minimist@^1.2.0: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== -mkdirp@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= - dependencies: - minimist "0.0.8" +mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== ms@2.0.0: version "2.0.0" @@ -1834,11 +1875,24 @@ ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== +nanoid@^3.1.20: + version "3.1.20" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788" + integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw== + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= +noms@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/noms/-/noms-0.0.0.tgz#da8ebd9f3af9d6760919b27d9cdc8092a7332859" + integrity sha1-2o69nzr51nYJGbJ9nNyAkqczKFk= + dependencies: + inherits "^2.0.1" + readable-stream "~1.0.31" + normalize-package-data@^2.3.2: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -1905,10 +1959,10 @@ onetime@^5.1.0: dependencies: mimic-fn "^2.1.0" -open@^7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/open/-/open-7.3.0.tgz#45461fdee46444f3645b6e14eb3ca94b82e1be69" - integrity sha512-mgLwQIx2F/ye9SmbrUkurZCnkoXyXyu9EbHtJZrICjVAJfyMArdHp3KkixGdZx1ZHFPNIwl0DDM1dFFqXbTLZw== +open@^7.4.0: + version "7.4.0" + resolved "https://registry.yarnpkg.com/open/-/open-7.4.0.tgz#ad95b98f871d9acb0ec8fecc557082cc9986626b" + integrity sha512-PGoBCX/lclIWlpS/R2PQuIR4NJoXh6X5AwVzE7WXnWRGvHg7+4TBCgsujUgiPpm0K1y4qvQeWnCWVTpTKZBtvA== dependencies: is-docker "^2.0.0" is-wsl "^2.1.1" @@ -2051,10 +2105,10 @@ pify@^2.0.0, pify@^2.3.0: resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== pkg-dir@^2.0.0: version "2.0.0" @@ -2077,10 +2131,10 @@ please-upgrade-node@^3.2.0: dependencies: semver-compare "^1.0.0" -postcss-cli@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/postcss-cli/-/postcss-cli-8.2.0.tgz#f94ad3792e4daece87f70fb4bda9368bb02bbf60" - integrity sha512-N7tgPpB/2yXk/04irc/RiImCkftVw42STaploQBeOT1xvrIkyG+YW+TsHAJ57xWwL+b0AjXnqs5/RL/1XIh2Lw== +postcss-cli@^8.3.1: + version "8.3.1" + resolved "https://registry.yarnpkg.com/postcss-cli/-/postcss-cli-8.3.1.tgz#865dad08300ac59ae9cecb7066780aa81c767a77" + integrity sha512-leHXsQRq89S3JC9zw/tKyiVV2jAhnfQe0J8VI4eQQbUjwIe0XxVqLrR+7UsahF1s9wi4GlqP6SJ8ydf44cgF2Q== dependencies: chalk "^4.0.0" chokidar "^3.3.0" @@ -2095,18 +2149,26 @@ postcss-cli@^8.2.0: slash "^3.0.0" yargs "^16.0.0" +postcss-custom-properties@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-10.0.0.tgz#5cb31afc530f58ad241f1e836dd5f5f7065334df" + integrity sha512-55BPj5FudpCiPZzBaO+MOeqmwMDa+nV9/0QBJBfhZjYg6D9hE+rW9lpMBLTJoF4OTXnS5Po4yM1nMlgkPbCxFg== + dependencies: + postcss "^7.0.17" + postcss-values-parser "^4.0.0" + postcss-load-config@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.0.0.tgz#850bb066edd65b734329eacf83af0c0764226c87" - integrity sha512-lErrN8imuEF1cSiHBV8MiR7HeuzlDpCGNtaMyYHlOBuJHHOGw6S4xOMZp8BbXPr7AGQp14L6PZDlIOpfFJ6f7w== + version "3.0.1" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.0.1.tgz#d214bf9cfec1608ffaf0f4161b3ba20664ab64b9" + integrity sha512-/pDHe30UYZUD11IeG8GWx9lNtu1ToyTsZHnyy45B4Mrwr/Kb6NgYl7k753+05CJNKnjbwh4975amoPJ+TEjHNQ== dependencies: cosmiconfig "^7.0.0" import-cwd "^3.0.0" postcss-reporter@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/postcss-reporter/-/postcss-reporter-7.0.1.tgz#463780d0d8d64f356403eba901fdeae71d988f2b" - integrity sha512-R9AK80KIqqMb+lwGRBcRkXS7r96VCTxrZvvrfibyA/dWjqctwx7leHMCC05A9HbW8PnChwOWwrmISwp5HQu5wg== + version "7.0.2" + resolved "https://registry.yarnpkg.com/postcss-reporter/-/postcss-reporter-7.0.2.tgz#03e9e7381c1afe40646f9c22e7aeeb860e051065" + integrity sha512-JyQ96NTQQsso42y6L1H1RqHfWH1C3Jr0pt91mVv5IdYddZAE9DUZxuferNgk6q0o6vBVOrfVJb10X1FgDzjmDw== dependencies: colorette "^1.2.1" lodash.difference "^4.5.0" @@ -2114,32 +2176,40 @@ postcss-reporter@^7.0.0: lodash.get "^4.4.2" lodash.groupby "^4.6.0" lodash.sortby "^4.7.0" - log-symbols "^4.0.0" -postcss-safe-parser@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-3.0.1.tgz#b753eff6c7c0aea5e8375fbe4cde8bf9063ff142" - integrity sha1-t1Pv9sfArqXoN1++TN6L+QY/8UI= +postcss-safe-parser@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-5.0.2.tgz#459dd27df6bc2ba64608824ba39e45dacf5e852d" + integrity sha512-jDUfCPJbKOABhwpUKcqCVbbXiloe/QXMcbJ6Iipf3sDIihEzTqRCeMBfRaOHxhBuTYqtASrI1KJWxzztZU4qUQ== dependencies: - postcss "^6.0.6" + postcss "^8.1.0" -postcss@7.0.26: - version "7.0.26" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.26.tgz#5ed615cfcab35ba9bbb82414a4fa88ea10429587" - integrity sha512-IY4oRjpXWYshuTDFxMVkJDtWIk2LhsTlu8bZnbEJA4+bYT16Lvpo8Qv6EvDumhYRgzjZl489pmsY3qVgJQ08nA== +postcss-values-parser@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-4.0.0.tgz#3b4625e649279613f52842f1c81f2064321beec7" + integrity sha512-R9x2D87FcbhwXUmoCXJR85M1BLII5suXRuXibGYyBJ7lVDEpRIdKZh4+8q5S+/+A4m0IoG1U5tFw39asyhX/Hw== dependencies: - chalk "^2.4.2" + color-name "^1.1.4" + is-url-superb "^4.0.0" + postcss "^7.0.5" + +postcss@8.2.6, postcss@^8.1.0, postcss@^8.1.4: + version "8.2.6" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.6.tgz#5d69a974543b45f87e464bc4c3e392a97d6be9fe" + integrity sha512-xpB8qYxgPuly166AGlpRjUdEYtmOWx2iCwGmrv4vqZL9YPVviDVPZPRXxnXr6xPZOdxQ9lp3ZBFCRgWJ7LE3Sg== + dependencies: + colorette "^1.2.1" + nanoid "^3.1.20" source-map "^0.6.1" - supports-color "^6.1.0" -postcss@^6.0.21, postcss@^6.0.6: - version "6.0.23" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" - integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag== +postcss@^7.0.17, postcss@^7.0.5: + version "7.0.35" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24" + integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== dependencies: - chalk "^2.4.1" + chalk "^2.4.2" source-map "^0.6.1" - supports-color "^5.4.0" + supports-color "^6.1.0" prelude-ls@^1.2.1: version "1.2.1" @@ -2153,16 +2223,21 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.1.2.tgz#3050700dae2e4c8b67c4c3f666cdb8af405e1ce5" - integrity sha512-16c7K+x4qVlJg9rEbXl7HEGmQyZlG4R9AgP+oHKRMsMsuk8s+ATStlf1NpDqyBI1HpVyfjLOeMhH2LvuNvV5Vg== +prettier@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.2.1.tgz#795a1a78dd52f073da0cd42b21f9c91381923ff5" + integrity sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q== pretty-hrtime@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + progress@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" @@ -2173,10 +2248,10 @@ pseudo-classes@1.0.0: resolved "https://registry.yarnpkg.com/pseudo-classes/-/pseudo-classes-1.0.0.tgz#60a69b67395c36ff119c4d1c86e1981785206b96" integrity sha1-YKabZzlcNv8RnE0chuGYF4Uga5Y= -pseudo-elements@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/pseudo-elements/-/pseudo-elements-1.0.0.tgz#4be60cbcd8499692a1d72cfdd3e5839dabad1618" - integrity sha1-S+YMvNhJlpKh1yz90+WDnautFhg= +pseudo-elements@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pseudo-elements/-/pseudo-elements-1.1.0.tgz#9ba6dd8ac3ce1f3d7d36d4355aa3e28d08391f28" + integrity sha1-m6bdisPOHz19NtQ1WqPijQg5Hyg= pump@^3.0.0: version "3.0.0" @@ -2215,6 +2290,29 @@ read-pkg@^2.0.0: normalize-package-data "^2.3.2" path-type "^2.0.0" +readable-stream@~1.0.31: + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@~2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + readdirp@~3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" @@ -2222,37 +2320,11 @@ readdirp@~3.5.0: dependencies: picomatch "^2.2.1" -regenerate@^1.2.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" - integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== - regexpp@^3.0.0, regexpp@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== -regexpu-core@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b" - integrity sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs= - dependencies: - regenerate "^1.2.1" - regjsgen "^0.2.0" - regjsparser "^0.1.4" - -regjsgen@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" - integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= - -regjsparser@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" - integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw= - dependencies: - jsesc "~0.5.0" - repeat-element@^1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" @@ -2263,6 +2335,11 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" @@ -2311,10 +2388,10 @@ rgba-regex@^1.0.0: resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= -rimraf@2.6.3: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" @@ -2330,6 +2407,11 @@ rxjs@^6.6.3: dependencies: tslib "^1.9.0" +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + semver-compare@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" @@ -2372,15 +2454,6 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -slice-ansi@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" - integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== - dependencies: - ansi-styles "^3.2.0" - astral-regex "^1.0.0" - is-fullwidth-code-point "^2.0.0" - slice-ansi@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" @@ -2443,10 +2516,10 @@ spdx-license-ids@^3.0.0: resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.6.tgz#c80757383c28abf7296744998cbc106ae8b854ce" integrity sha512-+orQK83kyMva3WyPf59k1+Y525csj5JejicWut55zeTWANuN17qSiSLUXWtzHeNWORSvT7GLDJ/E/XiIWoXBTw== -specificity@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/specificity/-/specificity-0.3.2.tgz#99e6511eceef0f8d9b57924937aac2cb13d13c42" - integrity sha512-Nc/QN/A425Qog7j9aHmwOrlwX2e7pNI47ciwxwy4jOlvbbMHkNNJchit+FX+UjF3IAdiaaV5BKeWuDUnws6G1A== +specificity@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/specificity/-/specificity-0.4.1.tgz#aab5e645012db08ba182e151165738d00887b019" + integrity sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg== sprintf-js@~1.0.2: version "1.0.3" @@ -2458,15 +2531,6 @@ string-argv@0.3.1: resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== -string-width@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - string-width@^4.1.0, string-width@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" @@ -2492,6 +2556,18 @@ string.prototype.trimstart@^1.0.1: define-properties "^1.1.3" es-abstract "^1.18.0-next.1" +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + stringify-object@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" @@ -2501,13 +2577,6 @@ stringify-object@^3.3.0: is-obj "^1.0.1" is-regexp "^1.0.0" -strip-ansi@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - strip-ansi@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" @@ -2530,7 +2599,7 @@ strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -supports-color@^5.3.0, supports-color@^5.4.0: +supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== @@ -2551,21 +2620,29 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -table@^5.2.3: - version "5.2.3" - resolved "https://registry.yarnpkg.com/table/-/table-5.2.3.tgz#cde0cc6eb06751c009efab27e8c820ca5b67b7f2" - integrity sha512-N2RsDAMvDLvYwFcwbPyF3VmVSSkuF+G1e+8inhBLtHpvwXGw4QRPEZhihQNeEN0i1up6/f6ObCJXNdlRG3YVyQ== +table@^6.0.4: + version "6.0.7" + resolved "https://registry.yarnpkg.com/table/-/table-6.0.7.tgz#e45897ffbcc1bcf9e8a87bf420f2c9e5a7a52a34" + integrity sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g== dependencies: - ajv "^6.9.1" - lodash "^4.17.11" - slice-ansi "^2.1.0" - string-width "^3.0.0" + ajv "^7.0.2" + lodash "^4.17.20" + slice-ansi "^4.0.0" + string-width "^4.2.0" text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= +through2@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + through@^2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" @@ -2583,12 +2660,13 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -ts-node@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-9.0.0.tgz#e7699d2a110cc8c0d3b831715e417688683460b3" - integrity sha512-/TqB4SnererCDR/vb4S/QvSZvzQMJN8daAslg7MeaiHvD8rDZsSfXmNeNumyZZzMned72Xoq/isQljYSt8Ynfg== +ts-node@^9.1.1: + version "9.1.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-9.1.1.tgz#51a9a450a3e959401bda5f004a72d54b936d376d" + integrity sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg== dependencies: arg "^4.1.0" + create-require "^1.1.0" diff "^4.0.1" make-error "^1.1.1" source-map-support "^0.5.17" @@ -2638,21 +2716,21 @@ type-fest@^0.8.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== -typescript@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.0.5.tgz#ae9dddfd1069f1cb5beb3ef3b2170dd7c1332389" - integrity sha512-ywmr/VrTVCmNTJ6iV2LwIrfG1P+lv6luD8sUJs+2eI9NLGigaN+nUQc13iHqisq7bra9lnmUSYqbJvegraBOPQ== - -universalify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" - integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== +typescript@^4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.5.tgz#123a3b214aaff3be32926f0d8f1f6e704eb89a72" + integrity sha512-6OSu9PTIzmn9TCDiovULTnET6BgXtDYL4Gg4szY+cGsc3JP1dQL8qvE8kShTRx1NIw4Q9IBHlwODjkjWEtMUyA== universalify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== +untildify@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" + integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== + uri-js@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" @@ -2660,6 +2738,11 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + v8-compile-cache@^2.0.3: version "2.1.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" @@ -2718,19 +2801,17 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" - integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== - dependencies: - mkdirp "^0.5.1" - xtend@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= -y18n@^5.0.2: +xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^5.0.5: version "5.0.5" resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.5.tgz#8769ec08d03b1ea2df2500acef561743bbb9ab18" integrity sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg== @@ -2741,21 +2822,21 @@ yaml@^1.10.0: integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== yargs-parser@^20.2.2: - version "20.2.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.3.tgz#92419ba867b858c868acf8bae9bf74af0dd0ce26" - integrity sha512-emOFRT9WVHw03QSvN5qor9QQT9+sw5vwxfYweivSMHTcAXPefwVae2FjO7JJjj8hCE4CzPOPeFM83VwT29HCww== + version "20.2.4" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" + integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== -yargs@^16.0.0: - version "16.1.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.1.0.tgz#fc333fe4791660eace5a894b39d42f851cd48f2a" - integrity sha512-upWFJOmDdHN0syLuESuvXDmrRcWd1QafJolHskzaw79uZa7/x53gxQKiR07W59GWY1tFhhU/Th9DrtSfpS782g== +yargs@^16.0.0, yargs@^16.1.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== dependencies: cliui "^7.0.2" escalade "^3.1.1" get-caller-file "^2.0.5" require-directory "^2.1.1" string-width "^4.2.0" - y18n "^5.0.2" + y18n "^5.0.5" yargs-parser "^20.2.2" yn@3.1.1: From 6957feea17ce5c4bc0434089a5336e82c0791d44 Mon Sep 17 00:00:00 2001 From: Sylvester Date: Sat, 13 Feb 2021 12:36:34 +0100 Subject: [PATCH 06/20] fix import module --- src/index.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/index.ts b/src/index.ts index 58331fa..f7ced10 100644 --- a/src/index.ts +++ b/src/index.ts @@ -13,7 +13,7 @@ import { PluginConfig } from "./types"; function utilityPlugin(config: PluginConfig) { // eslint-disable-next-line @typescript-eslint/no-var-requires - const defaultConfig = require(DEFAULT_CONFIG_PATH); + const defaultConfig = require(DEFAULT_CONFIG_PATH).default; const { plugins = [], modules = [], @@ -61,6 +61,7 @@ function utilityPlugin(config: PluginConfig) { const moduleConfigPath = moduleConfigFile ? path.join(sourceDirname, moduleConfigFile) : ""; + /** * Exit if the module name or * the provided module name is not supported @@ -73,7 +74,7 @@ function utilityPlugin(config: PluginConfig) { process.exit(-1); } // eslint-disable-next-line @typescript-eslint/no-var-requires - const moduleFunction = require(modulePath); + const moduleFunction = require(modulePath).default; /** * Deep merge the config if user has provided custom * config file From fbf94016a9bf8c20da4cd19f46bea85eab54fd52 Mon Sep 17 00:00:00 2001 From: Sylvester Date: Sat, 13 Feb 2021 12:37:03 +0100 Subject: [PATCH 07/20] fix husky --- package.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/package.json b/package.json index dce6749..a648cba 100644 --- a/package.json +++ b/package.json @@ -55,8 +55,7 @@ "eslint --fix" ], "*.css": [ - "prettier --write", - "git add" + "prettier --write" ] } } From da397f4a08138c958306aefc837b981aefb6041f Mon Sep 17 00:00:00 2001 From: Sylvester Date: Sat, 13 Feb 2021 15:12:35 +0100 Subject: [PATCH 08/20] update base config without docs --- src/helpers/save-file.ts | 4 +++- src/index.ts | 2 +- src/plugins/docs.ts | 1 - src/utility.config.default.ts | 11 ++--------- 4 files changed, 6 insertions(+), 12 deletions(-) diff --git a/src/helpers/save-file.ts b/src/helpers/save-file.ts index e7517af..5d488e8 100644 --- a/src/helpers/save-file.ts +++ b/src/helpers/save-file.ts @@ -21,7 +21,9 @@ export default async function saveFile({ process.exit(0); } if (!fs.existsSync(dirPath)) { - fs.mkdirSync(dirPath); + fs.mkdirSync(dirPath, { + recursive: true, + }); } await fsAsync.writeFile(filePath, content); console.log(chalk.blue(`Document was created : ${filePath}`)); diff --git a/src/index.ts b/src/index.ts index f7ced10..7f3ade0 100644 --- a/src/index.ts +++ b/src/index.ts @@ -11,7 +11,7 @@ const DEFAULT_CONFIG_PATH = "./utility.config.default"; import { PluginConfig } from "./types"; -function utilityPlugin(config: PluginConfig) { +function utilityPlugin(config?: PluginConfig) { // eslint-disable-next-line @typescript-eslint/no-var-requires const defaultConfig = require(DEFAULT_CONFIG_PATH).default; const { diff --git a/src/plugins/docs.ts b/src/plugins/docs.ts index b67aef0..f3551ad 100644 --- a/src/plugins/docs.ts +++ b/src/plugins/docs.ts @@ -31,7 +31,6 @@ export default ( if (output) { const { dir: dirPath } = path.parse(output); - const packageName = "Utility"; const { diff --git a/src/utility.config.default.ts b/src/utility.config.default.ts index f9d6378..01b37b5 100644 --- a/src/utility.config.default.ts +++ b/src/utility.config.default.ts @@ -1,10 +1,5 @@ -import { - plugins as availablePlugins, - util, - modules as availableModules, -} from "./index"; +import { util, modules as availableModules } from "./index"; -const { prefix, docs } = availablePlugins; const { defineClass } = util; const { single, @@ -116,8 +111,6 @@ const modules = [ textTransform(), ]; -const plugins = [prefix({ prefix: "x-" }), docs({ output: "docs.html" })]; - export default { config: { breakPointSeparator: "-", @@ -126,6 +119,6 @@ export default { breakPoints, }, modules, - plugins, + plugins: [], forceInsert: false, }; From 488fb7263161244c58e6a70ee047d6b3cf376235 Mon Sep 17 00:00:00 2001 From: Sylvester Date: Sat, 13 Feb 2021 15:13:37 +0100 Subject: [PATCH 09/20] initial mocha test setup --- __tests__/all-defaults/fixtures/actual.css | 1249 ++++++++++++++++++ __tests__/all-defaults/fixtures/expected.css | 1249 ++++++++++++++++++ __tests__/all-defaults/main.css | 1 + __tests__/all-defaults/postcss.config.js | 6 + __tests__/all-defaults/transform.test.ts | 43 + package.json | 6 +- tsconfig.json | 1 + yarn.lock | 340 ++++- 8 files changed, 2883 insertions(+), 12 deletions(-) create mode 100644 __tests__/all-defaults/fixtures/actual.css create mode 100644 __tests__/all-defaults/fixtures/expected.css create mode 100644 __tests__/all-defaults/main.css create mode 100644 __tests__/all-defaults/postcss.config.js create mode 100644 __tests__/all-defaults/transform.test.ts diff --git a/__tests__/all-defaults/fixtures/actual.css b/__tests__/all-defaults/fixtures/actual.css new file mode 100644 index 0000000..bf7808b --- /dev/null +++ b/__tests__/all-defaults/fixtures/actual.css @@ -0,0 +1,1249 @@ +.f0 { + font-size: 1rem; +} +.f1 { + font-size: 2rem; +} +.f2 { + font-size: 3rem; +} +.f3 { + font-size: 4rem; +} +@media screen and (min-width: 30em) { + .f0-ns { + font-size: 1rem; + } + .f1-ns { + font-size: 2rem; + } + .f2-ns { + font-size: 3rem; + } + .f3-ns { + font-size: 4rem; + } +} +@media screen and (min-width: 30em) and (max-width: 60em) { + .f0-m { + font-size: 1rem; + } + .f1-m { + font-size: 2rem; + } + .f2-m { + font-size: 3rem; + } + .f3-m { + font-size: 4rem; + } +} +@media screen and (min-width: 60em) { + .f0-l { + font-size: 1rem; + } + .f1-l { + font-size: 2rem; + } + .f2-l { + font-size: 3rem; + } + .f3-l { + font-size: 4rem; + } +} +.lh0 { + line-height: 1; +} +.lh1 { + line-height: 2; +} +.lh2 { + line-height: 3; +} +.lh3 { + line-height: 4; +} +@media screen and (min-width: 30em) { + .lh0-ns { + line-height: 1; + } + .lh1-ns { + line-height: 2; + } + .lh2-ns { + line-height: 3; + } + .lh3-ns { + line-height: 4; + } +} +@media screen and (min-width: 30em) and (max-width: 60em) { + .lh0-m { + line-height: 1; + } + .lh1-m { + line-height: 2; + } + .lh2-m { + line-height: 3; + } + .lh3-m { + line-height: 4; + } +} +@media screen and (min-width: 60em) { + .lh0-l { + line-height: 1; + } + .lh1-l { + line-height: 2; + } + .lh2-l { + line-height: 3; + } + .lh3-l { + line-height: 4; + } +} +.error { + color: red; + font-weight: bold; +} +@media screen and (min-width: 30em) { + .error-ns { + color: red; + font-weight: bold; + } +} +@media screen and (min-width: 30em) and (max-width: 60em) { + .error-m { + color: red; + font-weight: bold; + } +} +@media screen and (min-width: 60em) { + .error-l { + color: red; + font-weight: bold; + } +} +.m0 { + margin: 1rem; +} +.m1 { + margin: 2rem; +} +.m2 { + margin: 3rem; +} +.m3 { + margin: 4rem; +} +.ma { + margin: auto; +} +.mt0 { + margin-top: 1rem; +} +.mt1 { + margin-top: 2rem; +} +.mt2 { + margin-top: 3rem; +} +.mt3 { + margin-top: 4rem; +} +.mta { + margin-top: auto; +} +.mr0 { + margin-right: 1rem; +} +.mr1 { + margin-right: 2rem; +} +.mr2 { + margin-right: 3rem; +} +.mr3 { + margin-right: 4rem; +} +.mra { + margin-right: auto; +} +.mb0 { + margin-bottom: 1rem; +} +.mb1 { + margin-bottom: 2rem; +} +.mb2 { + margin-bottom: 3rem; +} +.mb3 { + margin-bottom: 4rem; +} +.mba { + margin-bottom: auto; +} +.ml0 { + margin-left: 1rem; +} +.ml1 { + margin-left: 2rem; +} +.ml2 { + margin-left: 3rem; +} +.ml3 { + margin-left: 4rem; +} +.mla { + margin-left: auto; +} +.p0 { + padding: 1rem; +} +.p1 { + padding: 2rem; +} +.p2 { + padding: 3rem; +} +.p3 { + padding: 4rem; +} +.pt0 { + padding-top: 1rem; +} +.pt1 { + padding-top: 2rem; +} +.pt2 { + padding-top: 3rem; +} +.pt3 { + padding-top: 4rem; +} +.pr0 { + padding-right: 1rem; +} +.pr1 { + padding-right: 2rem; +} +.pr2 { + padding-right: 3rem; +} +.pr3 { + padding-right: 4rem; +} +.pb0 { + padding-bottom: 1rem; +} +.pb1 { + padding-bottom: 2rem; +} +.pb2 { + padding-bottom: 3rem; +} +.pb3 { + padding-bottom: 4rem; +} +.pl0 { + padding-left: 1rem; +} +.pl1 { + padding-left: 2rem; +} +.pl2 { + padding-left: 3rem; +} +.pl3 { + padding-left: 4rem; +} +@media screen and (min-width: 30em) { + .m0-ns { + margin: 1rem; + } + .m1-ns { + margin: 2rem; + } + .m2-ns { + margin: 3rem; + } + .m3-ns { + margin: 4rem; + } + .ma-ns { + margin: auto; + } + .mt0-ns { + margin-top: 1rem; + } + .mt1-ns { + margin-top: 2rem; + } + .mt2-ns { + margin-top: 3rem; + } + .mt3-ns { + margin-top: 4rem; + } + .mta-ns { + margin-top: auto; + } + .mr0-ns { + margin-right: 1rem; + } + .mr1-ns { + margin-right: 2rem; + } + .mr2-ns { + margin-right: 3rem; + } + .mr3-ns { + margin-right: 4rem; + } + .mra-ns { + margin-right: auto; + } + .mb0-ns { + margin-bottom: 1rem; + } + .mb1-ns { + margin-bottom: 2rem; + } + .mb2-ns { + margin-bottom: 3rem; + } + .mb3-ns { + margin-bottom: 4rem; + } + .mba-ns { + margin-bottom: auto; + } + .ml0-ns { + margin-left: 1rem; + } + .ml1-ns { + margin-left: 2rem; + } + .ml2-ns { + margin-left: 3rem; + } + .ml3-ns { + margin-left: 4rem; + } + .mla-ns { + margin-left: auto; + } + .p0-ns { + padding: 1rem; + } + .p1-ns { + padding: 2rem; + } + .p2-ns { + padding: 3rem; + } + .p3-ns { + padding: 4rem; + } + .pt0-ns { + padding-top: 1rem; + } + .pt1-ns { + padding-top: 2rem; + } + .pt2-ns { + padding-top: 3rem; + } + .pt3-ns { + padding-top: 4rem; + } + .pr0-ns { + padding-right: 1rem; + } + .pr1-ns { + padding-right: 2rem; + } + .pr2-ns { + padding-right: 3rem; + } + .pr3-ns { + padding-right: 4rem; + } + .pb0-ns { + padding-bottom: 1rem; + } + .pb1-ns { + padding-bottom: 2rem; + } + .pb2-ns { + padding-bottom: 3rem; + } + .pb3-ns { + padding-bottom: 4rem; + } + .pl0-ns { + padding-left: 1rem; + } + .pl1-ns { + padding-left: 2rem; + } + .pl2-ns { + padding-left: 3rem; + } + .pl3-ns { + padding-left: 4rem; + } +} +@media screen and (min-width: 30em) and (max-width: 60em) { + .m0-m { + margin: 1rem; + } + .m1-m { + margin: 2rem; + } + .m2-m { + margin: 3rem; + } + .m3-m { + margin: 4rem; + } + .ma-m { + margin: auto; + } + .mt0-m { + margin-top: 1rem; + } + .mt1-m { + margin-top: 2rem; + } + .mt2-m { + margin-top: 3rem; + } + .mt3-m { + margin-top: 4rem; + } + .mta-m { + margin-top: auto; + } + .mr0-m { + margin-right: 1rem; + } + .mr1-m { + margin-right: 2rem; + } + .mr2-m { + margin-right: 3rem; + } + .mr3-m { + margin-right: 4rem; + } + .mra-m { + margin-right: auto; + } + .mb0-m { + margin-bottom: 1rem; + } + .mb1-m { + margin-bottom: 2rem; + } + .mb2-m { + margin-bottom: 3rem; + } + .mb3-m { + margin-bottom: 4rem; + } + .mba-m { + margin-bottom: auto; + } + .ml0-m { + margin-left: 1rem; + } + .ml1-m { + margin-left: 2rem; + } + .ml2-m { + margin-left: 3rem; + } + .ml3-m { + margin-left: 4rem; + } + .mla-m { + margin-left: auto; + } + .p0-m { + padding: 1rem; + } + .p1-m { + padding: 2rem; + } + .p2-m { + padding: 3rem; + } + .p3-m { + padding: 4rem; + } + .pt0-m { + padding-top: 1rem; + } + .pt1-m { + padding-top: 2rem; + } + .pt2-m { + padding-top: 3rem; + } + .pt3-m { + padding-top: 4rem; + } + .pr0-m { + padding-right: 1rem; + } + .pr1-m { + padding-right: 2rem; + } + .pr2-m { + padding-right: 3rem; + } + .pr3-m { + padding-right: 4rem; + } + .pb0-m { + padding-bottom: 1rem; + } + .pb1-m { + padding-bottom: 2rem; + } + .pb2-m { + padding-bottom: 3rem; + } + .pb3-m { + padding-bottom: 4rem; + } + .pl0-m { + padding-left: 1rem; + } + .pl1-m { + padding-left: 2rem; + } + .pl2-m { + padding-left: 3rem; + } + .pl3-m { + padding-left: 4rem; + } +} +@media screen and (min-width: 60em) { + .m0-l { + margin: 1rem; + } + .m1-l { + margin: 2rem; + } + .m2-l { + margin: 3rem; + } + .m3-l { + margin: 4rem; + } + .ma-l { + margin: auto; + } + .mt0-l { + margin-top: 1rem; + } + .mt1-l { + margin-top: 2rem; + } + .mt2-l { + margin-top: 3rem; + } + .mt3-l { + margin-top: 4rem; + } + .mta-l { + margin-top: auto; + } + .mr0-l { + margin-right: 1rem; + } + .mr1-l { + margin-right: 2rem; + } + .mr2-l { + margin-right: 3rem; + } + .mr3-l { + margin-right: 4rem; + } + .mra-l { + margin-right: auto; + } + .mb0-l { + margin-bottom: 1rem; + } + .mb1-l { + margin-bottom: 2rem; + } + .mb2-l { + margin-bottom: 3rem; + } + .mb3-l { + margin-bottom: 4rem; + } + .mba-l { + margin-bottom: auto; + } + .ml0-l { + margin-left: 1rem; + } + .ml1-l { + margin-left: 2rem; + } + .ml2-l { + margin-left: 3rem; + } + .ml3-l { + margin-left: 4rem; + } + .mla-l { + margin-left: auto; + } + .p0-l { + padding: 1rem; + } + .p1-l { + padding: 2rem; + } + .p2-l { + padding: 3rem; + } + .p3-l { + padding: 4rem; + } + .pt0-l { + padding-top: 1rem; + } + .pt1-l { + padding-top: 2rem; + } + .pt2-l { + padding-top: 3rem; + } + .pt3-l { + padding-top: 4rem; + } + .pr0-l { + padding-right: 1rem; + } + .pr1-l { + padding-right: 2rem; + } + .pr2-l { + padding-right: 3rem; + } + .pr3-l { + padding-right: 4rem; + } + .pb0-l { + padding-bottom: 1rem; + } + .pb1-l { + padding-bottom: 2rem; + } + .pb2-l { + padding-bottom: 3rem; + } + .pb3-l { + padding-bottom: 4rem; + } + .pl0-l { + padding-left: 1rem; + } + .pl1-l { + padding-left: 2rem; + } + .pl2-l { + padding-left: 3rem; + } + .pl3-l { + padding-left: 4rem; + } +} +.custom { + foo: bar; +} +.poss { + position: static; +} +.posa { + position: absolute; +} +.posr { + position: relative; +} +.posf { + position: fixed; +} +.posstky { + position: sticky; +} +.ta { + top: auto; +} +.ra { + right: auto; +} +.ba { + bottom: auto; +} +.la { + left: auto; +} +.z0 { + z-index: 0; +} +.z1 { + z-index: 1; +} +.z2 { + z-index: 2; +} +.z3 { + z-index: 3; +} +.z4 { + z-index: 4; +} +.z5 { + z-index: 5; +} +.z999 { + z-index: 999; +} +.z9999 { + z-index: 9999; +} +.zmax { + z-index: 2147483647; +} +.zinitial { + z-index: initial; +} +.zinherit { + z-index: inherit; +} +.zunset { + z-index: unset; +} +.za { + z-index: auto; +} +.fln { + float: none; +} +.fll { + float: left; +} +.flr { + float: right; +} +.cln { + clear: none; +} +.cll { + clear: left; +} +.clr { + clear: right; +} +.clb { + clear: both; +} +.dn { + display: none; +} +.db { + display: block; +} +.df { + display: flex; +} +.dif { + display: inline-flex; +} +.di { + display: inline; +} +.dib { + display: inline-block; +} +.dtb { + display: table; +} +.vv { + visibility: visible; +} +.vh { + visibility: hidden; +} +.vc { + visibility: collapse; +} +.ovv { + overflow: visible; +} +.ovh { + overflow: hidden; +} +.ovs { + overflow: scroll; +} +.ova { + overflow: auto; +} +.ovxv { + overflow-x: visible; +} +.ovxh { + overflow-x: hidden; +} +.ovxs { + overflow-x: scroll; +} +.ovxa { + overflow-x: auto; +} +.ovyv { + overflow-y: visible; +} +.ovyh { + overflow-y: hidden; +} +.ovys { + overflow-y: scroll; +} +.ovya { + overflow-y: auto; +} +.ovsa { + overflow-style: auto; +} +.ovss { + overflow-style: scrollbar; +} +.ovsp { + overflow-style: panner; +} +.ovsm { + overflow-style: move; +} +.ovsmq { + overflow-style: marquee; +} +.rszn { + resize: none; +} +.rszb { + resize: both; +} +.rszh { + resize: horizontal; +} +.rszv { + resize: vertical; +} +.cura { + cursor: auto; +} +.curd { + cursor: default; +} +.curc { + cursor: crosshair; +} +.curha { + cursor: hand; +} +.curhe { + cursor: help; +} +.curm { + cursor: move; +} +.curp { + cursor: pointer; +} +.curt { + cursor: text; +} +.bxzcb { + box-sizing: content-box; +} +.bxzbb { + box-sizing: border-box; +} +.w25 { + width: 25%; +} +.w50 { + width: 50%; +} +.w75 { + width: 75%; +} +.w100 { + width: 100%; +} +.wa { + width: auto; +} +.maw100 { + max-width: 100%; +} +.mawn { + max-width: none; +} +@media screen and (min-width: 30em) { + .w25-ns { + width: 25%; + } + .w50-ns { + width: 50%; + } + .w75-ns { + width: 75%; + } + .w100-ns { + width: 100%; + } + .wa-ns { + width: auto; + } + .maw100-ns { + max-width: 100%; + } + .mawn-ns { + max-width: none; + } +} +@media screen and (min-width: 30em) and (max-width: 60em) { + .w25-m { + width: 25%; + } + .w50-m { + width: 50%; + } + .w75-m { + width: 75%; + } + .w100-m { + width: 100%; + } + .wa-m { + width: auto; + } + .maw100-m { + max-width: 100%; + } + .mawn-m { + max-width: none; + } +} +@media screen and (min-width: 60em) { + .w25-l { + width: 25%; + } + .w50-l { + width: 50%; + } + .w75-l { + width: 75%; + } + .w100-l { + width: 100%; + } + .wa-l { + width: auto; + } + .maw100-l { + max-width: 100%; + } + .mawn-l { + max-width: none; + } +} +.h25 { + height: 25%; +} +.h50 { + height: 50%; +} +.h75 { + height: 75%; +} +.h100 { + height: 100%; +} +.wa { + height: auto; +} +.mah100 { + max-height: 100%; +} +.mahn { + max-height: none; +} +@media screen and (min-width: 30em) { + .h25-ns { + height: 25%; + } + .h50-ns { + height: 50%; + } + .h75-ns { + height: 75%; + } + .h100-ns { + height: 100%; + } + .wa-ns { + height: auto; + } + .mah100-ns { + max-height: 100%; + } + .mahn-ns { + max-height: none; + } +} +@media screen and (min-width: 30em) and (max-width: 60em) { + .h25-m { + height: 25%; + } + .h50-m { + height: 50%; + } + .h75-m { + height: 75%; + } + .h100-m { + height: 100%; + } + .wa-m { + height: auto; + } + .mah100-m { + max-height: 100%; + } + .mahn-m { + max-height: none; + } +} +@media screen and (min-width: 60em) { + .h25-l { + height: 25%; + } + .h50-l { + height: 50%; + } + .h75-l { + height: 75%; + } + .h100-l { + height: 100%; + } + .wa-l { + height: auto; + } + .mah100-l { + max-height: 100%; + } + .mahn-l { + max-height: none; + } +} +.fwn { + font-weight: normal; +} +.fwb { + font-weight: bold; +} +.fwbr { + font-weight: bolder; +} +.fwlr { + font-weight: lighter; +} +.fsn { + font-style: normal; +} +.fsi { + font-style: italic; +} +.fso { + font-style: oblique; +} +.fvn { + font-variant: normal; +} +.fvsc { + font-variant: small-caps; +} +.f0 { + font-size: 1rem; +} +.f1 { + font-size: 1.25rem; +} +.f2 { + font-size: 1.5rem; +} +.f3 { + font-size: 2rem; +} +.f4 { + font-size: 3rem; +} +.fzan { + font-size-adjust: none; +} +.ffs { + font-family: serif; +} +.ffss { + font-family: sans-serif; +} +.ffc { + font-family: cursive; +} +.fff { + font-family: fantasy; +} +.ffm { + font-family: monospace; +} +.ffa { + font-family: Arial, "Helvetica Neue", Helvetica, sans-serif; +} +.fft { + font-family: "Times New Roman", Times, Baskerville, Georgia, serif; +} +.ffv { + font-family: Verdana, Geneva, sans-serif; +} +.fefn { + font-effect: none; +} +.fefeg { + font-effect: engrave; +} +.fefeb { + font-effect: emboss; +} +.fefo { + font-effect: outline; +} +.fstn { + font-stretch: normal; +} +.fstuc { + font-stretch: ultra-condensed; +} +.fstec { + font-stretch: extra-condensed; +} +.fstc { + font-stretch: condensed; +} +.fstsc { + font-stretch: semi-condensed; +} +.fstse { + font-stretch: semi-expanded; +} +.fste { + font-stretch: expanded; +} +.fstee { + font-stretch: extra-expanded; +} +.fstue { + font-stretch: ultra-expanded; +} +.vasup { + vertical-align: super; +} +.vat { + vertical-align: top; +} +.vatt { + vertical-align: text-top; +} +.vam { + vertical-align: middle; +} +.vabl { + vertical-align: baseline; +} +.vab { + vertical-align: bottom; +} +.vatb { + vertical-align: text-bottom; +} +.vasub { + vertical-align: sub; +} +.tal { + text-align: left; +} +.tac { + text-align: center; +} +.tar { + text-align: right; +} +.taj { + text-align: justify; +} +.tala { + text-align-last: auto; +} +.tall { + text-align-last: left; +} +.talc { + text-align-last: center; +} +.talr { + text-align-last: right; +} +.tdn { + text-decoration: none; +} +.tdu { + text-decoration: underline; +} +.tdo { + text-decoration: overline; +} +.tdl { + text-decoration: line-through; +} +.ttn { + text-transform: none; +} +.ttc { + text-transform: capitalize; +} +.ttu { + text-transform: uppercase; +} +.ttl { + text-transform: lowercase; +} diff --git a/__tests__/all-defaults/fixtures/expected.css b/__tests__/all-defaults/fixtures/expected.css new file mode 100644 index 0000000..bf7808b --- /dev/null +++ b/__tests__/all-defaults/fixtures/expected.css @@ -0,0 +1,1249 @@ +.f0 { + font-size: 1rem; +} +.f1 { + font-size: 2rem; +} +.f2 { + font-size: 3rem; +} +.f3 { + font-size: 4rem; +} +@media screen and (min-width: 30em) { + .f0-ns { + font-size: 1rem; + } + .f1-ns { + font-size: 2rem; + } + .f2-ns { + font-size: 3rem; + } + .f3-ns { + font-size: 4rem; + } +} +@media screen and (min-width: 30em) and (max-width: 60em) { + .f0-m { + font-size: 1rem; + } + .f1-m { + font-size: 2rem; + } + .f2-m { + font-size: 3rem; + } + .f3-m { + font-size: 4rem; + } +} +@media screen and (min-width: 60em) { + .f0-l { + font-size: 1rem; + } + .f1-l { + font-size: 2rem; + } + .f2-l { + font-size: 3rem; + } + .f3-l { + font-size: 4rem; + } +} +.lh0 { + line-height: 1; +} +.lh1 { + line-height: 2; +} +.lh2 { + line-height: 3; +} +.lh3 { + line-height: 4; +} +@media screen and (min-width: 30em) { + .lh0-ns { + line-height: 1; + } + .lh1-ns { + line-height: 2; + } + .lh2-ns { + line-height: 3; + } + .lh3-ns { + line-height: 4; + } +} +@media screen and (min-width: 30em) and (max-width: 60em) { + .lh0-m { + line-height: 1; + } + .lh1-m { + line-height: 2; + } + .lh2-m { + line-height: 3; + } + .lh3-m { + line-height: 4; + } +} +@media screen and (min-width: 60em) { + .lh0-l { + line-height: 1; + } + .lh1-l { + line-height: 2; + } + .lh2-l { + line-height: 3; + } + .lh3-l { + line-height: 4; + } +} +.error { + color: red; + font-weight: bold; +} +@media screen and (min-width: 30em) { + .error-ns { + color: red; + font-weight: bold; + } +} +@media screen and (min-width: 30em) and (max-width: 60em) { + .error-m { + color: red; + font-weight: bold; + } +} +@media screen and (min-width: 60em) { + .error-l { + color: red; + font-weight: bold; + } +} +.m0 { + margin: 1rem; +} +.m1 { + margin: 2rem; +} +.m2 { + margin: 3rem; +} +.m3 { + margin: 4rem; +} +.ma { + margin: auto; +} +.mt0 { + margin-top: 1rem; +} +.mt1 { + margin-top: 2rem; +} +.mt2 { + margin-top: 3rem; +} +.mt3 { + margin-top: 4rem; +} +.mta { + margin-top: auto; +} +.mr0 { + margin-right: 1rem; +} +.mr1 { + margin-right: 2rem; +} +.mr2 { + margin-right: 3rem; +} +.mr3 { + margin-right: 4rem; +} +.mra { + margin-right: auto; +} +.mb0 { + margin-bottom: 1rem; +} +.mb1 { + margin-bottom: 2rem; +} +.mb2 { + margin-bottom: 3rem; +} +.mb3 { + margin-bottom: 4rem; +} +.mba { + margin-bottom: auto; +} +.ml0 { + margin-left: 1rem; +} +.ml1 { + margin-left: 2rem; +} +.ml2 { + margin-left: 3rem; +} +.ml3 { + margin-left: 4rem; +} +.mla { + margin-left: auto; +} +.p0 { + padding: 1rem; +} +.p1 { + padding: 2rem; +} +.p2 { + padding: 3rem; +} +.p3 { + padding: 4rem; +} +.pt0 { + padding-top: 1rem; +} +.pt1 { + padding-top: 2rem; +} +.pt2 { + padding-top: 3rem; +} +.pt3 { + padding-top: 4rem; +} +.pr0 { + padding-right: 1rem; +} +.pr1 { + padding-right: 2rem; +} +.pr2 { + padding-right: 3rem; +} +.pr3 { + padding-right: 4rem; +} +.pb0 { + padding-bottom: 1rem; +} +.pb1 { + padding-bottom: 2rem; +} +.pb2 { + padding-bottom: 3rem; +} +.pb3 { + padding-bottom: 4rem; +} +.pl0 { + padding-left: 1rem; +} +.pl1 { + padding-left: 2rem; +} +.pl2 { + padding-left: 3rem; +} +.pl3 { + padding-left: 4rem; +} +@media screen and (min-width: 30em) { + .m0-ns { + margin: 1rem; + } + .m1-ns { + margin: 2rem; + } + .m2-ns { + margin: 3rem; + } + .m3-ns { + margin: 4rem; + } + .ma-ns { + margin: auto; + } + .mt0-ns { + margin-top: 1rem; + } + .mt1-ns { + margin-top: 2rem; + } + .mt2-ns { + margin-top: 3rem; + } + .mt3-ns { + margin-top: 4rem; + } + .mta-ns { + margin-top: auto; + } + .mr0-ns { + margin-right: 1rem; + } + .mr1-ns { + margin-right: 2rem; + } + .mr2-ns { + margin-right: 3rem; + } + .mr3-ns { + margin-right: 4rem; + } + .mra-ns { + margin-right: auto; + } + .mb0-ns { + margin-bottom: 1rem; + } + .mb1-ns { + margin-bottom: 2rem; + } + .mb2-ns { + margin-bottom: 3rem; + } + .mb3-ns { + margin-bottom: 4rem; + } + .mba-ns { + margin-bottom: auto; + } + .ml0-ns { + margin-left: 1rem; + } + .ml1-ns { + margin-left: 2rem; + } + .ml2-ns { + margin-left: 3rem; + } + .ml3-ns { + margin-left: 4rem; + } + .mla-ns { + margin-left: auto; + } + .p0-ns { + padding: 1rem; + } + .p1-ns { + padding: 2rem; + } + .p2-ns { + padding: 3rem; + } + .p3-ns { + padding: 4rem; + } + .pt0-ns { + padding-top: 1rem; + } + .pt1-ns { + padding-top: 2rem; + } + .pt2-ns { + padding-top: 3rem; + } + .pt3-ns { + padding-top: 4rem; + } + .pr0-ns { + padding-right: 1rem; + } + .pr1-ns { + padding-right: 2rem; + } + .pr2-ns { + padding-right: 3rem; + } + .pr3-ns { + padding-right: 4rem; + } + .pb0-ns { + padding-bottom: 1rem; + } + .pb1-ns { + padding-bottom: 2rem; + } + .pb2-ns { + padding-bottom: 3rem; + } + .pb3-ns { + padding-bottom: 4rem; + } + .pl0-ns { + padding-left: 1rem; + } + .pl1-ns { + padding-left: 2rem; + } + .pl2-ns { + padding-left: 3rem; + } + .pl3-ns { + padding-left: 4rem; + } +} +@media screen and (min-width: 30em) and (max-width: 60em) { + .m0-m { + margin: 1rem; + } + .m1-m { + margin: 2rem; + } + .m2-m { + margin: 3rem; + } + .m3-m { + margin: 4rem; + } + .ma-m { + margin: auto; + } + .mt0-m { + margin-top: 1rem; + } + .mt1-m { + margin-top: 2rem; + } + .mt2-m { + margin-top: 3rem; + } + .mt3-m { + margin-top: 4rem; + } + .mta-m { + margin-top: auto; + } + .mr0-m { + margin-right: 1rem; + } + .mr1-m { + margin-right: 2rem; + } + .mr2-m { + margin-right: 3rem; + } + .mr3-m { + margin-right: 4rem; + } + .mra-m { + margin-right: auto; + } + .mb0-m { + margin-bottom: 1rem; + } + .mb1-m { + margin-bottom: 2rem; + } + .mb2-m { + margin-bottom: 3rem; + } + .mb3-m { + margin-bottom: 4rem; + } + .mba-m { + margin-bottom: auto; + } + .ml0-m { + margin-left: 1rem; + } + .ml1-m { + margin-left: 2rem; + } + .ml2-m { + margin-left: 3rem; + } + .ml3-m { + margin-left: 4rem; + } + .mla-m { + margin-left: auto; + } + .p0-m { + padding: 1rem; + } + .p1-m { + padding: 2rem; + } + .p2-m { + padding: 3rem; + } + .p3-m { + padding: 4rem; + } + .pt0-m { + padding-top: 1rem; + } + .pt1-m { + padding-top: 2rem; + } + .pt2-m { + padding-top: 3rem; + } + .pt3-m { + padding-top: 4rem; + } + .pr0-m { + padding-right: 1rem; + } + .pr1-m { + padding-right: 2rem; + } + .pr2-m { + padding-right: 3rem; + } + .pr3-m { + padding-right: 4rem; + } + .pb0-m { + padding-bottom: 1rem; + } + .pb1-m { + padding-bottom: 2rem; + } + .pb2-m { + padding-bottom: 3rem; + } + .pb3-m { + padding-bottom: 4rem; + } + .pl0-m { + padding-left: 1rem; + } + .pl1-m { + padding-left: 2rem; + } + .pl2-m { + padding-left: 3rem; + } + .pl3-m { + padding-left: 4rem; + } +} +@media screen and (min-width: 60em) { + .m0-l { + margin: 1rem; + } + .m1-l { + margin: 2rem; + } + .m2-l { + margin: 3rem; + } + .m3-l { + margin: 4rem; + } + .ma-l { + margin: auto; + } + .mt0-l { + margin-top: 1rem; + } + .mt1-l { + margin-top: 2rem; + } + .mt2-l { + margin-top: 3rem; + } + .mt3-l { + margin-top: 4rem; + } + .mta-l { + margin-top: auto; + } + .mr0-l { + margin-right: 1rem; + } + .mr1-l { + margin-right: 2rem; + } + .mr2-l { + margin-right: 3rem; + } + .mr3-l { + margin-right: 4rem; + } + .mra-l { + margin-right: auto; + } + .mb0-l { + margin-bottom: 1rem; + } + .mb1-l { + margin-bottom: 2rem; + } + .mb2-l { + margin-bottom: 3rem; + } + .mb3-l { + margin-bottom: 4rem; + } + .mba-l { + margin-bottom: auto; + } + .ml0-l { + margin-left: 1rem; + } + .ml1-l { + margin-left: 2rem; + } + .ml2-l { + margin-left: 3rem; + } + .ml3-l { + margin-left: 4rem; + } + .mla-l { + margin-left: auto; + } + .p0-l { + padding: 1rem; + } + .p1-l { + padding: 2rem; + } + .p2-l { + padding: 3rem; + } + .p3-l { + padding: 4rem; + } + .pt0-l { + padding-top: 1rem; + } + .pt1-l { + padding-top: 2rem; + } + .pt2-l { + padding-top: 3rem; + } + .pt3-l { + padding-top: 4rem; + } + .pr0-l { + padding-right: 1rem; + } + .pr1-l { + padding-right: 2rem; + } + .pr2-l { + padding-right: 3rem; + } + .pr3-l { + padding-right: 4rem; + } + .pb0-l { + padding-bottom: 1rem; + } + .pb1-l { + padding-bottom: 2rem; + } + .pb2-l { + padding-bottom: 3rem; + } + .pb3-l { + padding-bottom: 4rem; + } + .pl0-l { + padding-left: 1rem; + } + .pl1-l { + padding-left: 2rem; + } + .pl2-l { + padding-left: 3rem; + } + .pl3-l { + padding-left: 4rem; + } +} +.custom { + foo: bar; +} +.poss { + position: static; +} +.posa { + position: absolute; +} +.posr { + position: relative; +} +.posf { + position: fixed; +} +.posstky { + position: sticky; +} +.ta { + top: auto; +} +.ra { + right: auto; +} +.ba { + bottom: auto; +} +.la { + left: auto; +} +.z0 { + z-index: 0; +} +.z1 { + z-index: 1; +} +.z2 { + z-index: 2; +} +.z3 { + z-index: 3; +} +.z4 { + z-index: 4; +} +.z5 { + z-index: 5; +} +.z999 { + z-index: 999; +} +.z9999 { + z-index: 9999; +} +.zmax { + z-index: 2147483647; +} +.zinitial { + z-index: initial; +} +.zinherit { + z-index: inherit; +} +.zunset { + z-index: unset; +} +.za { + z-index: auto; +} +.fln { + float: none; +} +.fll { + float: left; +} +.flr { + float: right; +} +.cln { + clear: none; +} +.cll { + clear: left; +} +.clr { + clear: right; +} +.clb { + clear: both; +} +.dn { + display: none; +} +.db { + display: block; +} +.df { + display: flex; +} +.dif { + display: inline-flex; +} +.di { + display: inline; +} +.dib { + display: inline-block; +} +.dtb { + display: table; +} +.vv { + visibility: visible; +} +.vh { + visibility: hidden; +} +.vc { + visibility: collapse; +} +.ovv { + overflow: visible; +} +.ovh { + overflow: hidden; +} +.ovs { + overflow: scroll; +} +.ova { + overflow: auto; +} +.ovxv { + overflow-x: visible; +} +.ovxh { + overflow-x: hidden; +} +.ovxs { + overflow-x: scroll; +} +.ovxa { + overflow-x: auto; +} +.ovyv { + overflow-y: visible; +} +.ovyh { + overflow-y: hidden; +} +.ovys { + overflow-y: scroll; +} +.ovya { + overflow-y: auto; +} +.ovsa { + overflow-style: auto; +} +.ovss { + overflow-style: scrollbar; +} +.ovsp { + overflow-style: panner; +} +.ovsm { + overflow-style: move; +} +.ovsmq { + overflow-style: marquee; +} +.rszn { + resize: none; +} +.rszb { + resize: both; +} +.rszh { + resize: horizontal; +} +.rszv { + resize: vertical; +} +.cura { + cursor: auto; +} +.curd { + cursor: default; +} +.curc { + cursor: crosshair; +} +.curha { + cursor: hand; +} +.curhe { + cursor: help; +} +.curm { + cursor: move; +} +.curp { + cursor: pointer; +} +.curt { + cursor: text; +} +.bxzcb { + box-sizing: content-box; +} +.bxzbb { + box-sizing: border-box; +} +.w25 { + width: 25%; +} +.w50 { + width: 50%; +} +.w75 { + width: 75%; +} +.w100 { + width: 100%; +} +.wa { + width: auto; +} +.maw100 { + max-width: 100%; +} +.mawn { + max-width: none; +} +@media screen and (min-width: 30em) { + .w25-ns { + width: 25%; + } + .w50-ns { + width: 50%; + } + .w75-ns { + width: 75%; + } + .w100-ns { + width: 100%; + } + .wa-ns { + width: auto; + } + .maw100-ns { + max-width: 100%; + } + .mawn-ns { + max-width: none; + } +} +@media screen and (min-width: 30em) and (max-width: 60em) { + .w25-m { + width: 25%; + } + .w50-m { + width: 50%; + } + .w75-m { + width: 75%; + } + .w100-m { + width: 100%; + } + .wa-m { + width: auto; + } + .maw100-m { + max-width: 100%; + } + .mawn-m { + max-width: none; + } +} +@media screen and (min-width: 60em) { + .w25-l { + width: 25%; + } + .w50-l { + width: 50%; + } + .w75-l { + width: 75%; + } + .w100-l { + width: 100%; + } + .wa-l { + width: auto; + } + .maw100-l { + max-width: 100%; + } + .mawn-l { + max-width: none; + } +} +.h25 { + height: 25%; +} +.h50 { + height: 50%; +} +.h75 { + height: 75%; +} +.h100 { + height: 100%; +} +.wa { + height: auto; +} +.mah100 { + max-height: 100%; +} +.mahn { + max-height: none; +} +@media screen and (min-width: 30em) { + .h25-ns { + height: 25%; + } + .h50-ns { + height: 50%; + } + .h75-ns { + height: 75%; + } + .h100-ns { + height: 100%; + } + .wa-ns { + height: auto; + } + .mah100-ns { + max-height: 100%; + } + .mahn-ns { + max-height: none; + } +} +@media screen and (min-width: 30em) and (max-width: 60em) { + .h25-m { + height: 25%; + } + .h50-m { + height: 50%; + } + .h75-m { + height: 75%; + } + .h100-m { + height: 100%; + } + .wa-m { + height: auto; + } + .mah100-m { + max-height: 100%; + } + .mahn-m { + max-height: none; + } +} +@media screen and (min-width: 60em) { + .h25-l { + height: 25%; + } + .h50-l { + height: 50%; + } + .h75-l { + height: 75%; + } + .h100-l { + height: 100%; + } + .wa-l { + height: auto; + } + .mah100-l { + max-height: 100%; + } + .mahn-l { + max-height: none; + } +} +.fwn { + font-weight: normal; +} +.fwb { + font-weight: bold; +} +.fwbr { + font-weight: bolder; +} +.fwlr { + font-weight: lighter; +} +.fsn { + font-style: normal; +} +.fsi { + font-style: italic; +} +.fso { + font-style: oblique; +} +.fvn { + font-variant: normal; +} +.fvsc { + font-variant: small-caps; +} +.f0 { + font-size: 1rem; +} +.f1 { + font-size: 1.25rem; +} +.f2 { + font-size: 1.5rem; +} +.f3 { + font-size: 2rem; +} +.f4 { + font-size: 3rem; +} +.fzan { + font-size-adjust: none; +} +.ffs { + font-family: serif; +} +.ffss { + font-family: sans-serif; +} +.ffc { + font-family: cursive; +} +.fff { + font-family: fantasy; +} +.ffm { + font-family: monospace; +} +.ffa { + font-family: Arial, "Helvetica Neue", Helvetica, sans-serif; +} +.fft { + font-family: "Times New Roman", Times, Baskerville, Georgia, serif; +} +.ffv { + font-family: Verdana, Geneva, sans-serif; +} +.fefn { + font-effect: none; +} +.fefeg { + font-effect: engrave; +} +.fefeb { + font-effect: emboss; +} +.fefo { + font-effect: outline; +} +.fstn { + font-stretch: normal; +} +.fstuc { + font-stretch: ultra-condensed; +} +.fstec { + font-stretch: extra-condensed; +} +.fstc { + font-stretch: condensed; +} +.fstsc { + font-stretch: semi-condensed; +} +.fstse { + font-stretch: semi-expanded; +} +.fste { + font-stretch: expanded; +} +.fstee { + font-stretch: extra-expanded; +} +.fstue { + font-stretch: ultra-expanded; +} +.vasup { + vertical-align: super; +} +.vat { + vertical-align: top; +} +.vatt { + vertical-align: text-top; +} +.vam { + vertical-align: middle; +} +.vabl { + vertical-align: baseline; +} +.vab { + vertical-align: bottom; +} +.vatb { + vertical-align: text-bottom; +} +.vasub { + vertical-align: sub; +} +.tal { + text-align: left; +} +.tac { + text-align: center; +} +.tar { + text-align: right; +} +.taj { + text-align: justify; +} +.tala { + text-align-last: auto; +} +.tall { + text-align-last: left; +} +.talc { + text-align-last: center; +} +.talr { + text-align-last: right; +} +.tdn { + text-decoration: none; +} +.tdu { + text-decoration: underline; +} +.tdo { + text-decoration: overline; +} +.tdl { + text-decoration: line-through; +} +.ttn { + text-transform: none; +} +.ttc { + text-transform: capitalize; +} +.ttu { + text-transform: uppercase; +} +.ttl { + text-transform: lowercase; +} diff --git a/__tests__/all-defaults/main.css b/__tests__/all-defaults/main.css new file mode 100644 index 0000000..b0e075d --- /dev/null +++ b/__tests__/all-defaults/main.css @@ -0,0 +1 @@ +@utility; diff --git a/__tests__/all-defaults/postcss.config.js b/__tests__/all-defaults/postcss.config.js new file mode 100644 index 0000000..5697f3c --- /dev/null +++ b/__tests__/all-defaults/postcss.config.js @@ -0,0 +1,6 @@ +// eslint-disable-next-line @typescript-eslint/no-var-requires +const utility = require("../../dist/index").default; + +module.exports = { + plugins: [utility()], +}; diff --git a/__tests__/all-defaults/transform.test.ts b/__tests__/all-defaults/transform.test.ts new file mode 100644 index 0000000..82428d7 --- /dev/null +++ b/__tests__/all-defaults/transform.test.ts @@ -0,0 +1,43 @@ +import path from "path"; +import { promises as fsAsync } from "fs"; +import prettier from "prettier"; +import * as assert from "assert"; +import postcss from "postcss"; + +import utility from "../../src/index"; + +describe("All defaults", () => { + it("should transform css for default options", async () => { + /** Path to the input css file */ + const cssFilePath = path.join(__dirname, "./main.css"); + /** Dummy output file */ + const cssOutputFilePath = path.join(__dirname, "./main-out.css"); + /** Read the expected css file from fixtures */ + const expectedCss = await fsAsync + .readFile(path.join(__dirname, "./fixtures/expected.css"), "utf-8") + .then((data) => + prettier.format(data, { + parser: "css", + }) + ); + //* Read the input css file */ + const cssFile = await fsAsync.readFile( + path.join(__dirname, "./main.css"), + "utf-8" + ); + + /** Transform the css file */ + const generatedCss = await postcss([utility()]) + .process(cssFile, { + from: cssFilePath, + to: cssOutputFilePath, + }) + .then(({ css }) => + prettier.format(css, { + parser: "css", + }) + ); + /** Check the transformed file with the expected file */ + assert.strictEqual(generatedCss, expectedCss); + }); +}); diff --git a/package.json b/package.json index a648cba..da8ee0f 100644 --- a/package.json +++ b/package.json @@ -12,23 +12,27 @@ "build": "tsc -p tsconfig.json", "lint": "eslint './src/**/*.{js,ts,tsx}'", "build-example": "yarn postcss example/example.css -o example/dist/example.css", - "test": "echo \"Error: no test specified\" && exit 0" + "test": "mocha --require=ts-node/register __tests__/**/*.test.ts" }, "bin": { "utility": "dist/cli.ts" }, "dependencies": { + "@types/mocha": "^8.2.0", "commander": "7.0.0", "cssstats": "^4.0.0", "deepmerge": "^4.2.2", "lodash": "^4.17.20", + "mocha": "^8.3.0", "postcss": "8.2.6" }, "devDependencies": { "@types/lodash": "^4.14.168", "@types/node": "^14.14.27", + "@types/prettier": "^2.2.1", "@typescript-eslint/eslint-plugin": "^4.15.0", "@typescript-eslint/parser": "^4.15.0", + "assert": "^2.0.0", "babel-eslint": "^10.1.0", "chalk": "^4.1.0", "copyfiles": "^2.4.1", diff --git a/tsconfig.json b/tsconfig.json index 363d0ea..36688a6 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -11,6 +11,7 @@ "outDir": "dist", "baseUrl": "./src", "resolveJsonModule": true, + "types": ["node", "mocha"], "paths": { "*": ["node_modules/*", "src/*"] } diff --git a/yarn.lock b/yarn.lock index 8f6ca03..52f7e06 100644 --- a/yarn.lock +++ b/yarn.lock @@ -166,6 +166,11 @@ resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.168.tgz#fe24632e79b7ade3f132891afff86caa5e5ce008" integrity sha512-oVfRvqHV/V6D1yifJbVRU3TMp8OT6o6BG+U9MkwuJ3U8/CsDHvalRpsxBqivn71ztOFZBTfJMvETbqHiaNSj7Q== +"@types/mocha@^8.2.0": + version "8.2.0" + resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-8.2.0.tgz#3eb56d13a1de1d347ecb1957c6860c911704bc44" + integrity sha512-/Sge3BymXo4lKc31C8OINJgXLaw+7vL1/L1pGiBNpGrBiT8FQiaFpSYV0uhTaG4y78vcMBTMFsWaHDvuD+xGzQ== + "@types/node@^14.14.27": version "14.14.27" resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.27.tgz#c7127f8da0498993e13b1a42faf1303d3110d2f2" @@ -176,6 +181,11 @@ resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== +"@types/prettier@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.2.1.tgz#374e31645d58cb18a07b3ecd8e9dede4deb2cccd" + integrity sha512-DxZZbyMAM9GWEzXL+BMZROWz9oo6A9EilwwOMET2UVu2uZTqMWS5S69KVtuVKaRjCUpcrOXRalet86/OpG4kqw== + "@typescript-eslint/eslint-plugin@^4.15.0": version "4.15.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.15.0.tgz#13a5a07cf30d0d5781e43480aa2a8d38d308b084" @@ -246,6 +256,11 @@ "@typescript-eslint/types" "4.15.0" eslint-visitor-keys "^2.0.0" +"@ungap/promise-all-settled@1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" + integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== + acorn-jsx@^5.2.0, acorn-jsx@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" @@ -294,7 +309,7 @@ ajv@^7.0.2: require-from-string "^2.0.2" uri-js "^4.2.2" -ansi-colors@^4.1.1: +ansi-colors@4.1.1, ansi-colors@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== @@ -306,6 +321,11 @@ ansi-escapes@^4.3.0: dependencies: type-fest "^0.11.0" +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + ansi-regex@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" @@ -353,6 +373,16 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +array-filter@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83" + integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM= + array-includes@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" @@ -375,6 +405,16 @@ array.prototype.flat@^1.2.3: define-properties "^1.1.3" es-abstract "^1.17.0-next.1" +assert@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-2.0.0.tgz#95fc1c616d48713510680f2eaf2d10dd22e02d32" + integrity sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A== + dependencies: + es6-object-assign "^1.1.0" + is-nan "^1.2.1" + object-is "^1.0.1" + util "^0.12.0" + astral-regex@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" @@ -385,6 +425,13 @@ at-least-node@^1.0.0: resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== +available-typed-arrays@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz#6b098ca9d8039079ee3f77f7b783c4480ba513f5" + integrity sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ== + dependencies: + array-filter "^1.0.0" + babel-eslint@^10.1.0: version "10.1.0" resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" @@ -422,6 +469,11 @@ braces@^3.0.1, braces@~3.0.2: dependencies: fill-range "^7.0.1" +browser-stdout@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== + buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" @@ -445,6 +497,11 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== +camelcase@^6.0.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" + integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== + chalk@^2.0.0, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -462,7 +519,7 @@ chalk@^4.0.0, chalk@^4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chokidar@^3.3.0: +chokidar@3.5.1, chokidar@^3.3.0: version "3.5.1" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== @@ -685,6 +742,13 @@ cssstats@^4.0.0: postcss-safe-parser "^5.0.2" specificity "^0.4.1" +debug@4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" + integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== + dependencies: + ms "2.1.2" + debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -706,6 +770,11 @@ debug@^4.2.0: dependencies: ms "2.1.2" +decamelize@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" + integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== + dedent@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" @@ -733,6 +802,11 @@ dependency-graph@^0.9.0: resolved "https://registry.yarnpkg.com/dependency-graph/-/dependency-graph-0.9.0.tgz#11aed7e203bc8b00f48356d92db27b265c445318" integrity sha512-9YLIBURXj4DJMFALxXw9K3Y3rwb5Fk0X5/8ipCzaN84+gKxoHK43tVKRNakCQbiEx07E8Uwhuq21BpUagFhZ8w== +diff@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" + integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== + diff@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" @@ -835,11 +909,21 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" +es6-object-assign@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c" + integrity sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw= + escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== +escape-string-regexp@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" @@ -1107,6 +1191,14 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" +find-up@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + find-up@^2.0.0, find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" @@ -1137,11 +1229,21 @@ flat-cache@^3.0.4: flatted "^3.1.0" rimraf "^3.0.2" +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + flatted@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== +foreach@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" + integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= + fs-extra@^9.0.0: version "9.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" @@ -1217,7 +1319,7 @@ glob-parent@~5.1.0: dependencies: is-glob "^4.0.1" -glob@^7.0.5: +glob@7.1.6, glob@^7.0.5: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -1292,6 +1394,11 @@ graceful-fs@^4.2.0: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== +growl@1.10.5: + version "1.10.5" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" + integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== + gzip-size@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" @@ -1353,6 +1460,11 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" +he@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + hex-color-regex@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" @@ -1457,11 +1569,18 @@ inherits@2: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -inherits@^2.0.1, inherits@~2.0.1, inherits@~2.0.3: +inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== +is-arguments@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9" + integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg== + dependencies: + call-bind "^1.0.0" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" @@ -1534,11 +1653,21 @@ is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== +is-generator-function@^1.0.7: + version "1.0.8" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.8.tgz#dfb5c2b120e02b0a8d9d2c6806cd5621aa922f7b" + integrity sha512-2Omr/twNtufVZFr1GhxjOMFPAj2sjc/dKaIqBhvo4qciXfJmITGH6ZGd8eZYNHza8t1y0e01AuqRhJwfWp26WQ== + is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" @@ -1546,6 +1675,14 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" +is-nan@^1.2.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" + integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + is-negative-zero@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.0.tgz#9553b121b0fac28869da9ed459e20c7543788461" @@ -1561,6 +1698,11 @@ is-obj@^1.0.1: resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + is-present@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-present/-/is-present-1.0.0.tgz#29c9b8e8e6e786a594c292fc7239aa24be70b80c" @@ -1597,6 +1739,17 @@ is-symbol@^1.0.2: dependencies: has-symbols "^1.0.1" +is-typed-array@^1.1.3: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.4.tgz#1f66f34a283a3c94a4335434661ca53fff801120" + integrity sha512-ILaRgn4zaSrVNXNGtON6iFNotXW3hAPF3+0fB1usg2jFlWqo5fEDdmJkz0zBfoi7Dgskr8Khi2xZ8cXqZEfXNA== + dependencies: + available-typed-arrays "^1.0.2" + call-bind "^1.0.0" + es-abstract "^1.18.0-next.1" + foreach "^2.0.5" + has-symbols "^1.0.1" + is-url-superb@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/is-url-superb/-/is-url-superb-4.0.0.tgz#b54d1d2499bb16792748ac967aa3ecb41a33a8c2" @@ -1641,6 +1794,13 @@ js-tokens@^4.0.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== +js-yaml@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.0.0.tgz#f426bc0ff4b4051926cd588c71113183409a121f" + integrity sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q== + dependencies: + argparse "^2.0.1" + js-yaml@^3.13.1: version "3.13.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" @@ -1763,6 +1923,13 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + lodash.difference@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c" @@ -1793,7 +1960,7 @@ lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== -log-symbols@^4.0.0: +log-symbols@4.0.0, log-symbols@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== @@ -1843,7 +2010,7 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -minimatch@^3.0.3, minimatch@^3.0.4: +minimatch@3.0.4, minimatch@^3.0.3, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== @@ -1860,6 +2027,37 @@ mkdirp@^1.0.4: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== +mocha@^8.3.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-8.3.0.tgz#a83a7432d382ae1ca29686062d7fdc2c36f63fe5" + integrity sha512-TQqyC89V1J/Vxx0DhJIXlq9gbbL9XFNdeLQ1+JsnZsVaSOV1z3tWfw0qZmQJGQRIfkvZcs7snQnZnOCKoldq1Q== + dependencies: + "@ungap/promise-all-settled" "1.1.2" + ansi-colors "4.1.1" + browser-stdout "1.3.1" + chokidar "3.5.1" + debug "4.3.1" + diff "5.0.0" + escape-string-regexp "4.0.0" + find-up "5.0.0" + glob "7.1.6" + growl "1.10.5" + he "1.2.0" + js-yaml "4.0.0" + log-symbols "4.0.0" + minimatch "3.0.4" + ms "2.1.3" + nanoid "3.1.20" + serialize-javascript "5.0.1" + strip-json-comments "3.1.1" + supports-color "8.1.1" + which "2.0.2" + wide-align "1.1.3" + workerpool "6.1.0" + yargs "16.2.0" + yargs-parser "20.2.4" + yargs-unparser "2.0.0" + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -1870,12 +2068,17 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +ms@2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + ms@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== -nanoid@^3.1.20: +nanoid@3.1.20, nanoid@^3.1.20: version "3.1.20" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788" integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw== @@ -1920,6 +2123,14 @@ object-inspect@^1.8.0: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== +object-is@^1.0.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.4.tgz#63d6c83c00a43f4cbc9434eb9757c8a5b8565068" + integrity sha512-1ZvAZ4wlF7IyPVOcE1Omikt7UpaFlOQq0HlSti+ZvDH3UiD2brwGMwDbyV43jao2bKJ+4+WdPJHSd7kgzKYVqg== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" @@ -1998,6 +2209,13 @@ p-limit@^2.2.0: dependencies: p-try "^2.0.0" +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" @@ -2012,6 +2230,13 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + p-map@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" @@ -2266,6 +2491,13 @@ punycode@^2.1.0: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + read-cache@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" @@ -2407,6 +2639,11 @@ rxjs@^6.6.3: dependencies: tslib "^1.9.0" +safe-buffer@^5.1.0, safe-buffer@^5.1.2: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -2432,6 +2669,13 @@ semver@^7.2.1, semver@^7.3.2: resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== +serialize-javascript@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" + integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== + dependencies: + randombytes "^2.1.0" + shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -2531,6 +2775,14 @@ string-argv@0.3.1: resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== +"string-width@^1.0.2 || 2": + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + string-width@^4.1.0, string-width@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" @@ -2577,6 +2829,13 @@ stringify-object@^3.3.0: is-obj "^1.0.1" is-regexp "^1.0.0" +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + strip-ansi@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" @@ -2594,11 +2853,18 @@ strip-final-newline@^2.0.0: resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== +supports-color@8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -2743,6 +3009,18 @@ util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= +util@^0.12.0: + version "0.12.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.3.tgz#971bb0292d2cc0c892dab7c6a5d37c2bec707888" + integrity sha512-I8XkoQwE+fPQEhy9v012V+TSdH2kp9ts29i20TaaDUXsg7x/onePbhFJUExBfv/2ay1ZOp/Vsm3nDlmnFGSAog== + dependencies: + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + safe-buffer "^5.1.2" + which-typed-array "^1.1.2" + v8-compile-cache@^2.0.3: version "2.1.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" @@ -2766,18 +3044,43 @@ which-pm-runs@^1.0.0: resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= -which@^2.0.1: +which-typed-array@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.4.tgz#8fcb7d3ee5adf2d771066fba7cf37e32fe8711ff" + integrity sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA== + dependencies: + available-typed-arrays "^1.0.2" + call-bind "^1.0.0" + es-abstract "^1.18.0-next.1" + foreach "^2.0.5" + function-bind "^1.1.1" + has-symbols "^1.0.1" + is-typed-array "^1.1.3" + +which@2.0.2, which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" +wide-align@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== + dependencies: + string-width "^1.0.2 || 2" + word-wrap@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== +workerpool@6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.1.0.tgz#a8e038b4c94569596852de7a8ea4228eefdeb37b" + integrity sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg== + wrap-ansi@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" @@ -2821,12 +3124,22 @@ yaml@^1.10.0: resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== -yargs-parser@^20.2.2: +yargs-parser@20.2.4, yargs-parser@^20.2.2: version "20.2.4" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== -yargs@^16.0.0, yargs@^16.1.0: +yargs-unparser@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" + integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== + dependencies: + camelcase "^6.0.0" + decamelize "^4.0.0" + flat "^5.0.2" + is-plain-obj "^2.1.0" + +yargs@16.2.0, yargs@^16.0.0, yargs@^16.1.0: version "16.2.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== @@ -2843,3 +3156,8 @@ yn@3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== From fae913a0b4ecc44807d8d94d3d01964b09b121a0 Mon Sep 17 00:00:00 2001 From: Sylvester Date: Sat, 13 Feb 2021 16:10:26 +0100 Subject: [PATCH 10/20] fix html docs structure --- src/helpers/templates/sidebar.html | 31 ++++++++++++++++-------------- src/types.ts | 2 +- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/src/helpers/templates/sidebar.html b/src/helpers/templates/sidebar.html index 13863dd..4ec1149 100644 --- a/src/helpers/templates/sidebar.html +++ b/src/helpers/templates/sidebar.html @@ -1,25 +1,28 @@ -
+

Overview

Documentation

    + Atoms <% _.forEach(links, function(link) { %>
  • - Atoms - <% _.forEach(links, function(link) { %> -
  • - - <%- link %> - -
  • - <% }); %> + <%- link %> + <% }); %>
diff --git a/src/types.ts b/src/types.ts index 04d2538..469e8b8 100644 --- a/src/types.ts +++ b/src/types.ts @@ -169,6 +169,6 @@ export { ZIndexModuleType, ZIndexSupportedTypes } from "./modules/z-index"; export interface PluginConfig { config: GlobalUtilityConfig; forceInsert?: boolean; - modules: Module[]; + modules: any[]; plugins: any[]; } From a337e087bd77d43142977c2c20363940932084db Mon Sep 17 00:00:00 2001 From: Sylvester Date: Sat, 13 Feb 2021 16:10:53 +0100 Subject: [PATCH 11/20] test for default with docs --- __tests__/all-defaults/postcss.config.js | 6 - .../fixtures/expected-docs.html | 20299 ++++++++++++++++ .../fixtures/expected.css} | 0 __tests__/default-with-docs/main.css | 1 + __tests__/default-with-docs/transform.test.ts | 81 + package.json | 1 + yarn.lock | 26 + 7 files changed, 20408 insertions(+), 6 deletions(-) delete mode 100644 __tests__/all-defaults/postcss.config.js create mode 100644 __tests__/default-with-docs/fixtures/expected-docs.html rename __tests__/{all-defaults/fixtures/actual.css => default-with-docs/fixtures/expected.css} (100%) create mode 100644 __tests__/default-with-docs/main.css create mode 100644 __tests__/default-with-docs/transform.test.ts diff --git a/__tests__/all-defaults/postcss.config.js b/__tests__/all-defaults/postcss.config.js deleted file mode 100644 index 5697f3c..0000000 --- a/__tests__/all-defaults/postcss.config.js +++ /dev/null @@ -1,6 +0,0 @@ -// eslint-disable-next-line @typescript-eslint/no-var-requires -const utility = require("../../dist/index").default; - -module.exports = { - plugins: [utility()], -}; diff --git a/__tests__/default-with-docs/fixtures/expected-docs.html b/__tests__/default-with-docs/fixtures/expected-docs.html new file mode 100644 index 0000000..83b2d8f --- /dev/null +++ b/__tests__/default-with-docs/fixtures/expected-docs.html @@ -0,0 +1,20299 @@ + + + + + Utility + + + + + + + +
+
+
+ +
+
+
+ +
+

Overview

+ +

Documentation

+ +
+ +
+
+ +

Stats

+

Overview

+
+ + + + + + + + + + + + + + + + + + + +
SizeGzipped SizeRulesDeclarationsMedia queries
+

16KB

+
+

2KB

+
+

403

+
+

407

+
+

18

+
+
+ +

Selectors

+
+ + + + + + + + + + + + + + + + + + + + + +
TotalClassidPseudo ClassPseudo ElementSpecificity
+

403

+
+

403

+
+

0

+
+

0

+
+

0

+
+

10

+
+
+ +

Declarations

+
+ + + + + + + + + + + + + +
TotalUnique
+

407

+
+

196

+
+
+ + +

Series

+

Usage

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ .f0 + +
Lorem Ipsum
+ + [object Object] +
+ .f1 + +
Lorem Ipsum
+ + [object Object] +
+ .f2 + +
Lorem Ipsum
+ + [object Object] +
+ .f3 + +
Lorem Ipsum
+ + [object Object] +
+ .f0-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .f1-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .f2-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .f3-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .f0-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .f1-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .f2-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .f3-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .f0-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .f1-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .f2-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .f3-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .lh0 + +
Lorem Ipsum
+ + [object Object] +
+ .lh1 + +
Lorem Ipsum
+ + [object Object] +
+ .lh2 + +
Lorem Ipsum
+ + [object Object] +
+ .lh3 + +
Lorem Ipsum
+ + [object Object] +
+ .lh0-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .lh1-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .lh2-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .lh3-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .lh0-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .lh1-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .lh2-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .lh3-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .lh0-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .lh1-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .lh2-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .lh3-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+
+ , +

Single

+

Usage

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ .error + +
Lorem Ipsum
+ + [object Object],[object Object] +
+ .error-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object],[object Object] +
+ .error-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object],[object Object] +
+ .error-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object],[object Object] +
+
+ , +

Spacing

+

Usage

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ .m0 + +
Lorem Ipsum
+ + [object Object] +
+ .m1 + +
Lorem Ipsum
+ + [object Object] +
+ .m2 + +
Lorem Ipsum
+ + [object Object] +
+ .m3 + +
Lorem Ipsum
+ + [object Object] +
+ .ma + +
Lorem Ipsum
+ + [object Object] +
+ .mt0 + +
Lorem Ipsum
+ + [object Object] +
+ .mt1 + +
Lorem Ipsum
+ + [object Object] +
+ .mt2 + +
Lorem Ipsum
+ + [object Object] +
+ .mt3 + +
Lorem Ipsum
+ + [object Object] +
+ .mta + +
Lorem Ipsum
+ + [object Object] +
+ .mr0 + +
Lorem Ipsum
+ + [object Object] +
+ .mr1 + +
Lorem Ipsum
+ + [object Object] +
+ .mr2 + +
Lorem Ipsum
+ + [object Object] +
+ .mr3 + +
Lorem Ipsum
+ + [object Object] +
+ .mra + +
Lorem Ipsum
+ + [object Object] +
+ .mb0 + +
Lorem Ipsum
+ + [object Object] +
+ .mb1 + +
Lorem Ipsum
+ + [object Object] +
+ .mb2 + +
Lorem Ipsum
+ + [object Object] +
+ .mb3 + +
Lorem Ipsum
+ + [object Object] +
+ .mba + +
Lorem Ipsum
+ + [object Object] +
+ .ml0 + +
Lorem Ipsum
+ + [object Object] +
+ .ml1 + +
Lorem Ipsum
+ + [object Object] +
+ .ml2 + +
Lorem Ipsum
+ + [object Object] +
+ .ml3 + +
Lorem Ipsum
+ + [object Object] +
+ .mla + +
Lorem Ipsum
+ + [object Object] +
+ .p0 + +
Lorem Ipsum
+ + [object Object] +
+ .p1 + +
Lorem Ipsum
+ + [object Object] +
+ .p2 + +
Lorem Ipsum
+ + [object Object] +
+ .p3 + +
Lorem Ipsum
+ + [object Object] +
+ .pt0 + +
Lorem Ipsum
+ + [object Object] +
+ .pt1 + +
Lorem Ipsum
+ + [object Object] +
+ .pt2 + +
Lorem Ipsum
+ + [object Object] +
+ .pt3 + +
Lorem Ipsum
+ + [object Object] +
+ .pr0 + +
Lorem Ipsum
+ + [object Object] +
+ .pr1 + +
Lorem Ipsum
+ + [object Object] +
+ .pr2 + +
Lorem Ipsum
+ + [object Object] +
+ .pr3 + +
Lorem Ipsum
+ + [object Object] +
+ .pb0 + +
Lorem Ipsum
+ + [object Object] +
+ .pb1 + +
Lorem Ipsum
+ + [object Object] +
+ .pb2 + +
Lorem Ipsum
+ + [object Object] +
+ .pb3 + +
Lorem Ipsum
+ + [object Object] +
+ .pl0 + +
Lorem Ipsum
+ + [object Object] +
+ .pl1 + +
Lorem Ipsum
+ + [object Object] +
+ .pl2 + +
Lorem Ipsum
+ + [object Object] +
+ .pl3 + +
Lorem Ipsum
+ + [object Object] +
+ .m0-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .m1-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .m2-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .m3-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .ma-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .mt0-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .mt1-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .mt2-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .mt3-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .mta-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .mr0-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .mr1-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .mr2-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .mr3-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .mra-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .mb0-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .mb1-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .mb2-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .mb3-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .mba-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .ml0-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .ml1-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .ml2-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .ml3-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .mla-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .p0-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .p1-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .p2-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .p3-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .pt0-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .pt1-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .pt2-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .pt3-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .pr0-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .pr1-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .pr2-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .pr3-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .pb0-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .pb1-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .pb2-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .pb3-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .pl0-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .pl1-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .pl2-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .pl3-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .m0-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .m1-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .m2-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .m3-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .ma-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .mt0-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .mt1-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .mt2-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .mt3-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .mta-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .mr0-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .mr1-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .mr2-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .mr3-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .mra-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .mb0-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .mb1-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .mb2-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .mb3-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .mba-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .ml0-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .ml1-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .ml2-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .ml3-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .mla-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .p0-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .p1-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .p2-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .p3-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .pt0-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .pt1-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .pt2-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .pt3-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .pr0-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .pr1-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .pr2-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .pr3-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .pb0-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .pb1-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .pb2-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .pb3-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .pl0-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .pl1-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .pl2-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .pl3-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .m0-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .m1-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .m2-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .m3-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .ma-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .mt0-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .mt1-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .mt2-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .mt3-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .mta-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .mr0-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .mr1-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .mr2-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .mr3-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .mra-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .mb0-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .mb1-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .mb2-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .mb3-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .mba-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .ml0-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .ml1-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .ml2-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .ml3-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .mla-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .p0-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .p1-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .p2-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .p3-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .pt0-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .pt1-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .pt2-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .pt3-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .pr0-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .pr1-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .pr2-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .pr3-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .pb0-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .pb1-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .pb2-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .pb3-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .pl0-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .pl1-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .pl2-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .pl3-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+
+ , +

Custom module

+

Usage

+
+ + + + + + + + + + + + + +
ClassDescription
+ .custom + +
Lorem Ipsum
+ + [object Object] +
+
+ , +

Position

+

Usage

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ .poss + +
Lorem Ipsum
+ + [object Object] +
+ .posa + +
Lorem Ipsum
+ + [object Object] +
+ .posr + +
Lorem Ipsum
+ + [object Object] +
+ .posf + +
Lorem Ipsum
+ + [object Object] +
+ .posstky + +
Lorem Ipsum
+ + [object Object] +
+ .ta + +
Lorem Ipsum
+ + [object Object] +
+ .ra + +
Lorem Ipsum
+ + [object Object] +
+ .ba + +
Lorem Ipsum
+ + [object Object] +
+ .la + +
Lorem Ipsum
+ + [object Object] +
+
+ , +

Z-index

+

Usage

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ .z0 + +
Lorem Ipsum
+ + [object Object] +
+ .z1 + +
Lorem Ipsum
+ + [object Object] +
+ .z2 + +
Lorem Ipsum
+ + [object Object] +
+ .z3 + +
Lorem Ipsum
+ + [object Object] +
+ .z4 + +
Lorem Ipsum
+ + [object Object] +
+ .z5 + +
Lorem Ipsum
+ + [object Object] +
+ .z999 + +
Lorem Ipsum
+ + [object Object] +
+ .z9999 + +
Lorem Ipsum
+ + [object Object] +
+ .zmax + +
Lorem Ipsum
+ + [object Object] +
+ .zinitial + +
Lorem Ipsum
+ + [object Object] +
+ .zinherit + +
Lorem Ipsum
+ + [object Object] +
+ .zunset + +
Lorem Ipsum
+ + [object Object] +
+ .za + +
Lorem Ipsum
+ + [object Object] +
+
+ , +

Float

+

Usage

+
+ + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ .fln + +
Lorem Ipsum
+ + [object Object] +
+ .fll + +
Lorem Ipsum
+ + [object Object] +
+ .flr + +
Lorem Ipsum
+ + [object Object] +
+
+ , +

Clear

+

Usage

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ .cln + +
Lorem Ipsum
+ + [object Object] +
+ .cll + +
Lorem Ipsum
+ + [object Object] +
+ .clr + +
Lorem Ipsum
+ + [object Object] +
+ .clb + +
Lorem Ipsum
+ + [object Object] +
+
+ , +

Display

+

Usage

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ .dn + +
Lorem Ipsum
+ + [object Object] +
+ .db + +
Lorem Ipsum
+ + [object Object] +
+ .df + +
Lorem Ipsum
+ + [object Object] +
+ .dif + +
Lorem Ipsum
+ + [object Object] +
+ .di + +
Lorem Ipsum
+ + [object Object] +
+ .dib + +
Lorem Ipsum
+ + [object Object] +
+ .dtb + +
Lorem Ipsum
+ + [object Object] +
+
+ , +

Visibility

+

Usage

+
+ + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ .vv + +
Lorem Ipsum
+ + [object Object] +
+ .vh + +
Lorem Ipsum
+ + [object Object] +
+ .vc + +
Lorem Ipsum
+ + [object Object] +
+
+ , +

Overflow

+

Usage

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ .ovv + +
Lorem Ipsum
+ + [object Object] +
+ .ovh + +
Lorem Ipsum
+ + [object Object] +
+ .ovs + +
Lorem Ipsum
+ + [object Object] +
+ .ova + +
Lorem Ipsum
+ + [object Object] +
+ .ovxv + +
Lorem Ipsum
+ + [object Object] +
+ .ovxh + +
Lorem Ipsum
+ + [object Object] +
+ .ovxs + +
Lorem Ipsum
+ + [object Object] +
+ .ovxa + +
Lorem Ipsum
+ + [object Object] +
+ .ovyv + +
Lorem Ipsum
+ + [object Object] +
+ .ovyh + +
Lorem Ipsum
+ + [object Object] +
+ .ovys + +
Lorem Ipsum
+ + [object Object] +
+ .ovya + +
Lorem Ipsum
+ + [object Object] +
+ .ovsa + +
Lorem Ipsum
+ + [object Object] +
+ .ovss + +
Lorem Ipsum
+ + [object Object] +
+ .ovsp + +
Lorem Ipsum
+ + [object Object] +
+ .ovsm + +
Lorem Ipsum
+ + [object Object] +
+ .ovsmq + +
Lorem Ipsum
+ + [object Object] +
+
+ , +

Resize

+

Usage

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ .rszn + +
Lorem Ipsum
+ + [object Object] +
+ .rszb + +
Lorem Ipsum
+ + [object Object] +
+ .rszh + +
Lorem Ipsum
+ + [object Object] +
+ .rszv + +
Lorem Ipsum
+ + [object Object] +
+
+ , +

Cursor

+

Usage

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ .cura + +
Lorem Ipsum
+ + [object Object] +
+ .curd + +
Lorem Ipsum
+ + [object Object] +
+ .curc + +
Lorem Ipsum
+ + [object Object] +
+ .curha + +
Lorem Ipsum
+ + [object Object] +
+ .curhe + +
Lorem Ipsum
+ + [object Object] +
+ .curm + +
Lorem Ipsum
+ + [object Object] +
+ .curp + +
Lorem Ipsum
+ + [object Object] +
+ .curt + +
Lorem Ipsum
+ + [object Object] +
+
+ , +

Box-sizing

+

Usage

+
+ + + + + + + + + + + + + + + + + + +
ClassDescription
+ .bxzcb + +
Lorem Ipsum
+ + [object Object] +
+ .bxzbb + +
Lorem Ipsum
+ + [object Object] +
+
+ , +

Width

+

Usage

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ .w25 + +
Lorem Ipsum
+ + [object Object] +
+ .w50 + +
Lorem Ipsum
+ + [object Object] +
+ .w75 + +
Lorem Ipsum
+ + [object Object] +
+ .w100 + +
Lorem Ipsum
+ + [object Object] +
+ .wa + + + + [object Object] +
+ .maw100 + +
Lorem Ipsum
+ + [object Object] +
+ .mawn + +
Lorem Ipsum
+ + [object Object] +
+ .w25-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .w50-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .w75-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .w100-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .wa-ns + + + +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .maw100-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .mawn-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .w25-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .w50-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .w75-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .w100-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .wa-m + + + +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .maw100-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .mawn-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .w25-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .w50-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .w75-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .w100-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .wa-l + + + +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .maw100-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .mawn-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+
+ , +

Height

+

Usage

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ .h25 + +
Lorem Ipsum
+ + [object Object] +
+ .h50 + +
Lorem Ipsum
+ + [object Object] +
+ .h75 + +
Lorem Ipsum
+ + [object Object] +
+ .h100 + +
Lorem Ipsum
+ + [object Object] +
+ .wa + + + + [object Object] +
+ .mah100 + +
Lorem Ipsum
+ + [object Object] +
+ .mahn + +
Lorem Ipsum
+ + [object Object] +
+ .h25-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .h50-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .h75-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .h100-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .wa-ns + + + +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .mah100-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .mahn-ns + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) +

+ + [object Object] +
+ .h25-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .h50-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .h75-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .h100-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .wa-m + + + +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .mah100-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .mahn-m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 30em) and (max-width: 60em) +

+ + [object Object] +
+ .h25-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .h50-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .h75-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .h100-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .wa-l + + + +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .mah100-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+ .mahn-l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 60em) +

+ + [object Object] +
+
+ , +

Typography

+

Usage

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ .fwn + +
Lorem Ipsum
+ + [object Object] +
+ .fwb + +
Lorem Ipsum
+ + [object Object] +
+ .fwbr + +
Lorem Ipsum
+ + [object Object] +
+ .fwlr + +
Lorem Ipsum
+ + [object Object] +
+ .fsn + +
Lorem Ipsum
+ + [object Object] +
+ .fsi + +
Lorem Ipsum
+ + [object Object] +
+ .fso + +
Lorem Ipsum
+ + [object Object] +
+ .fvn + +
Lorem Ipsum
+ + [object Object] +
+ .fvsc + +
Lorem Ipsum
+ + [object Object] +
+ .f0 + +
Lorem Ipsum
+ + [object Object] +
+ .f1 + +
Lorem Ipsum
+ + [object Object] +
+ .f2 + +
Lorem Ipsum
+ + [object Object] +
+ .f3 + +
Lorem Ipsum
+ + [object Object] +
+ .f4 + +
Lorem Ipsum
+ + [object Object] +
+ .fzan + +
Lorem Ipsum
+ + [object Object] +
+ .ffs + +
Lorem Ipsum
+ + [object Object] +
+ .ffss + +
Lorem Ipsum
+ + [object Object] +
+ .ffc + +
Lorem Ipsum
+ + [object Object] +
+ .fff + +
Lorem Ipsum
+ + [object Object] +
+ .ffm + +
Lorem Ipsum
+ + [object Object] +
+ .ffa + +
Lorem Ipsum
+ + [object Object] +
+ .fft + +
Lorem Ipsum
+ + [object Object] +
+ .ffv + +
Lorem Ipsum
+ + [object Object] +
+ .fefn + +
Lorem Ipsum
+ + [object Object] +
+ .fefeg + +
Lorem Ipsum
+ + [object Object] +
+ .fefeb + +
Lorem Ipsum
+ + [object Object] +
+ .fefo + +
Lorem Ipsum
+ + [object Object] +
+ .fstn + +
Lorem Ipsum
+ + [object Object] +
+ .fstuc + +
Lorem Ipsum
+ + [object Object] +
+ .fstec + +
Lorem Ipsum
+ + [object Object] +
+ .fstc + +
Lorem Ipsum
+ + [object Object] +
+ .fstsc + +
Lorem Ipsum
+ + [object Object] +
+ .fstse + +
Lorem Ipsum
+ + [object Object] +
+ .fste + +
Lorem Ipsum
+ + [object Object] +
+ .fstee + +
Lorem Ipsum
+ + [object Object] +
+ .fstue + +
Lorem Ipsum
+ + [object Object] +
+
+ , +

Vertical-align

+

Usage

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ .vasup + +
Lorem Ipsum
+ + [object Object] +
+ .vat + +
Lorem Ipsum
+ + [object Object] +
+ .vatt + +
Lorem Ipsum
+ + [object Object] +
+ .vam + +
Lorem Ipsum
+ + [object Object] +
+ .vabl + +
Lorem Ipsum
+ + [object Object] +
+ .vab + +
Lorem Ipsum
+ + [object Object] +
+ .vatb + +
Lorem Ipsum
+ + [object Object] +
+ .vasub + +
Lorem Ipsum
+ + [object Object] +
+
+ , +

Text-align

+

Usage

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ .tal + +
Lorem Ipsum
+ + [object Object] +
+ .tac + +
Lorem Ipsum
+ + [object Object] +
+ .tar + +
Lorem Ipsum
+ + [object Object] +
+ .taj + +
Lorem Ipsum
+ + [object Object] +
+ .tala + +
Lorem Ipsum
+ + [object Object] +
+ .tall + +
Lorem Ipsum
+ + [object Object] +
+ .talc + +
Lorem Ipsum
+ + [object Object] +
+ .talr + +
Lorem Ipsum
+ + [object Object] +
+
+ , +

Text-decoration

+

Usage

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ .tdn + +
Lorem Ipsum
+ + [object Object] +
+ .tdu + +
Lorem Ipsum
+ + [object Object] +
+ .tdo + +
Lorem Ipsum
+ + [object Object] +
+ .tdl + +
Lorem Ipsum
+ + [object Object] +
+
+ , +

Text-transform

+

Usage

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ .ttn + +
Lorem Ipsum
+ + [object Object] +
+ .ttc + +
Lorem Ipsum
+ + [object Object] +
+ .ttu + +
Lorem Ipsum
+ + [object Object] +
+ .ttl + +
Lorem Ipsum
+ + [object Object] +
+
+
+
+
+ + diff --git a/__tests__/all-defaults/fixtures/actual.css b/__tests__/default-with-docs/fixtures/expected.css similarity index 100% rename from __tests__/all-defaults/fixtures/actual.css rename to __tests__/default-with-docs/fixtures/expected.css diff --git a/__tests__/default-with-docs/main.css b/__tests__/default-with-docs/main.css new file mode 100644 index 0000000..b0e075d --- /dev/null +++ b/__tests__/default-with-docs/main.css @@ -0,0 +1 @@ +@utility; diff --git a/__tests__/default-with-docs/transform.test.ts b/__tests__/default-with-docs/transform.test.ts new file mode 100644 index 0000000..95fe91c --- /dev/null +++ b/__tests__/default-with-docs/transform.test.ts @@ -0,0 +1,81 @@ +import path from "path"; +import { promises as fsAsync } from "fs"; +import prettier from "prettier"; +import * as assert from "assert"; +import postcss from "postcss"; + +// eslint-disable-next-line @typescript-eslint/no-var-requires +const prettydiff = require("prettydiff"); + +import utility, { plugins as availablePlugins } from "../../src/index"; +import defaultConfig from "../../src/utility.config.default"; +const { docs } = availablePlugins; +const plugins = [ + docs({ + output: path.join(__dirname, "./dist/docs.html"), + }), +]; + +describe("Default with docs", () => { + it("should transform css for default options + docs", async () => { + /** Path to the input css file */ + const cssFilePath = path.join(__dirname, "./main.css"); + /** Dummy output file */ + const cssOutputFilePath = path.join(__dirname, "./main-out.css"); + /** Read the expected css file from fixtures */ + const expectedCss = await fsAsync + .readFile(path.join(__dirname, "./fixtures/expected.css"), "utf-8") + .then((data) => + prettier.format(data, { + parser: "css", + }) + ); + /** Read the expected HTML file from fixtures */ + const expectedHTML = await fsAsync.readFile( + path.join(__dirname, "./fixtures/expected-docs.html"), + "utf-8" + ); + + //* Read the input css file */ + const cssFile = await fsAsync.readFile( + path.join(__dirname, "./main.css"), + "utf-8" + ); + + /** Transform the css file */ + const generatedCss = await postcss([ + utility({ + config: defaultConfig.config, + modules: defaultConfig.modules, + plugins, + }), + ]) + .process(cssFile, { + from: cssFilePath, + to: cssOutputFilePath, + }) + .then(({ css }) => + prettier.format(css, { + parser: "css", + }) + ); + + const generateHTML = await fsAsync.readFile( + path.join(__dirname, "./dist/docs.html"), + "utf-8" + ); + + /** Get the diff */ + const htmlDiffOutput = prettydiff({ + source: expectedHTML, + mode: "diff", + diff: generateHTML, + lang: "html", + }); + /** Check the transformed file with the expected file */ + assert.strictEqual(generatedCss, expectedCss); + + /** Check if the length of diff is zero */ + assert.strictEqual(htmlDiffOutput.length, 0); + }); +}); diff --git a/package.json b/package.json index da8ee0f..4cab146 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "open": "^7.4.0", "postcss-cli": "^8.3.1", "prettier": "^2.2.1", + "prettydiff": "^101.2.6", "ts-node": "^9.1.1", "typescript": "^4.1.5" }, diff --git a/yarn.lock b/yarn.lock index 52f7e06..facd093 100644 --- a/yarn.lock +++ b/yarn.lock @@ -171,6 +171,11 @@ resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-8.2.0.tgz#3eb56d13a1de1d347ecb1957c6860c911704bc44" integrity sha512-/Sge3BymXo4lKc31C8OINJgXLaw+7vL1/L1pGiBNpGrBiT8FQiaFpSYV0uhTaG4y78vcMBTMFsWaHDvuD+xGzQ== +"@types/node@^12.7.1", "@types/node@^12.7.2": + version "12.20.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.0.tgz#692dfdecd6c97f5380c42dd50f19261f9f604deb" + integrity sha512-0/41wHcurotvSOTHQUFkgL702c3pyWR1mToSrrX3pGPvGfpHTv3Ksx0M4UVuU5VJfjVb62Eyr1eKO1tWNUCg2Q== + "@types/node@^14.14.27": version "14.14.27" resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.27.tgz#c7127f8da0498993e13b1a42faf1303d3110d2f2" @@ -1184,6 +1189,11 @@ file-entry-cache@^6.0.0: dependencies: flat-cache "^3.0.4" +file-saver@^2.0.2: + version "2.0.5" + resolved "https://registry.yarnpkg.com/file-saver/-/file-saver-2.0.5.tgz#d61cfe2ce059f414d899e9dd6d4107ee25670c38" + integrity sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA== + fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -2458,6 +2468,15 @@ pretty-hrtime@^1.0.3: resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= +prettydiff@^101.2.6: + version "101.2.6" + resolved "https://registry.yarnpkg.com/prettydiff/-/prettydiff-101.2.6.tgz#b6ffbb618f0ad55887c2c1b02a336ba31a83d243" + integrity sha512-/fJ33pQ8MPI7+IB8fo/lOMR58CE/4GYNZRtjcQiPYmGNMo1HS9KmaybYdtEnfmx5EOSe/ch3Sg2fJ8YkNKb/XQ== + dependencies: + "@types/node" "^12.7.2" + file-saver "^2.0.2" + sparser "^1.4.11" + process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" @@ -2734,6 +2753,13 @@ source-map@^0.6.0, source-map@^0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +sparser@^1.4.11: + version "1.4.12" + resolved "https://registry.yarnpkg.com/sparser/-/sparser-1.4.12.tgz#d591f088c2658a57b138390110d71db0f0053cb0" + integrity sha512-qxDcacCuwHbvsf803PpZuETRI1pU8NAmLbyzZqFHPW7QjPK9pnCoX9ZPPbOMyiti6EOocfYzqzDPWj4fICXNzw== + dependencies: + "@types/node" "^12.7.1" + spdx-correct@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" From f9d09f490ac55190c8fb23db09fa7c5e5b78152b Mon Sep 17 00:00:00 2001 From: Sylvester Date: Sat, 13 Feb 2021 16:24:00 +0100 Subject: [PATCH 12/20] more tests for default configs --- .../fixtures/expected.css | 1249 + __tests__/all-defaults-with-prefix/main.css | 1 + .../transform.test.ts | 57 + __tests__/default-with-docs/transform.test.ts | 2 +- .../fixtures/expected-docs.html | 22644 ++++++++++++++++ .../fixtures/expected-modules.json | 22644 ++++++++++++++++ .../default-with-json/fixtures/expected.css | 1249 + __tests__/default-with-json/main.css | 1 + __tests__/default-with-json/transform.test.ts | 103 + package.json | 2 +- 10 files changed, 47950 insertions(+), 2 deletions(-) create mode 100644 __tests__/all-defaults-with-prefix/fixtures/expected.css create mode 100644 __tests__/all-defaults-with-prefix/main.css create mode 100644 __tests__/all-defaults-with-prefix/transform.test.ts create mode 100644 __tests__/default-with-json/fixtures/expected-docs.html create mode 100644 __tests__/default-with-json/fixtures/expected-modules.json create mode 100644 __tests__/default-with-json/fixtures/expected.css create mode 100644 __tests__/default-with-json/main.css create mode 100644 __tests__/default-with-json/transform.test.ts diff --git a/__tests__/all-defaults-with-prefix/fixtures/expected.css b/__tests__/all-defaults-with-prefix/fixtures/expected.css new file mode 100644 index 0000000..d1b84f5 --- /dev/null +++ b/__tests__/all-defaults-with-prefix/fixtures/expected.css @@ -0,0 +1,1249 @@ +.x-f0 { + font-size: 1rem; +} +.x-f1 { + font-size: 2rem; +} +.x-f2 { + font-size: 3rem; +} +.x-f3 { + font-size: 4rem; +} +@media screen and (min-width: 30em) { + .x-f0-ns { + font-size: 1rem; + } + .x-f1-ns { + font-size: 2rem; + } + .x-f2-ns { + font-size: 3rem; + } + .x-f3-ns { + font-size: 4rem; + } +} +@media screen and (min-width: 30em) and (max-width: 60em) { + .x-f0-m { + font-size: 1rem; + } + .x-f1-m { + font-size: 2rem; + } + .x-f2-m { + font-size: 3rem; + } + .x-f3-m { + font-size: 4rem; + } +} +@media screen and (min-width: 60em) { + .x-f0-l { + font-size: 1rem; + } + .x-f1-l { + font-size: 2rem; + } + .x-f2-l { + font-size: 3rem; + } + .x-f3-l { + font-size: 4rem; + } +} +.x-lh0 { + line-height: 1; +} +.x-lh1 { + line-height: 2; +} +.x-lh2 { + line-height: 3; +} +.x-lh3 { + line-height: 4; +} +@media screen and (min-width: 30em) { + .x-lh0-ns { + line-height: 1; + } + .x-lh1-ns { + line-height: 2; + } + .x-lh2-ns { + line-height: 3; + } + .x-lh3-ns { + line-height: 4; + } +} +@media screen and (min-width: 30em) and (max-width: 60em) { + .x-lh0-m { + line-height: 1; + } + .x-lh1-m { + line-height: 2; + } + .x-lh2-m { + line-height: 3; + } + .x-lh3-m { + line-height: 4; + } +} +@media screen and (min-width: 60em) { + .x-lh0-l { + line-height: 1; + } + .x-lh1-l { + line-height: 2; + } + .x-lh2-l { + line-height: 3; + } + .x-lh3-l { + line-height: 4; + } +} +.x-error { + color: red; + font-weight: bold; +} +@media screen and (min-width: 30em) { + .x-error-ns { + color: red; + font-weight: bold; + } +} +@media screen and (min-width: 30em) and (max-width: 60em) { + .x-error-m { + color: red; + font-weight: bold; + } +} +@media screen and (min-width: 60em) { + .x-error-l { + color: red; + font-weight: bold; + } +} +.x-m0 { + margin: 1rem; +} +.x-m1 { + margin: 2rem; +} +.x-m2 { + margin: 3rem; +} +.x-m3 { + margin: 4rem; +} +.x-ma { + margin: auto; +} +.x-mt0 { + margin-top: 1rem; +} +.x-mt1 { + margin-top: 2rem; +} +.x-mt2 { + margin-top: 3rem; +} +.x-mt3 { + margin-top: 4rem; +} +.x-mta { + margin-top: auto; +} +.x-mr0 { + margin-right: 1rem; +} +.x-mr1 { + margin-right: 2rem; +} +.x-mr2 { + margin-right: 3rem; +} +.x-mr3 { + margin-right: 4rem; +} +.x-mra { + margin-right: auto; +} +.x-mb0 { + margin-bottom: 1rem; +} +.x-mb1 { + margin-bottom: 2rem; +} +.x-mb2 { + margin-bottom: 3rem; +} +.x-mb3 { + margin-bottom: 4rem; +} +.x-mba { + margin-bottom: auto; +} +.x-ml0 { + margin-left: 1rem; +} +.x-ml1 { + margin-left: 2rem; +} +.x-ml2 { + margin-left: 3rem; +} +.x-ml3 { + margin-left: 4rem; +} +.x-mla { + margin-left: auto; +} +.x-p0 { + padding: 1rem; +} +.x-p1 { + padding: 2rem; +} +.x-p2 { + padding: 3rem; +} +.x-p3 { + padding: 4rem; +} +.x-pt0 { + padding-top: 1rem; +} +.x-pt1 { + padding-top: 2rem; +} +.x-pt2 { + padding-top: 3rem; +} +.x-pt3 { + padding-top: 4rem; +} +.x-pr0 { + padding-right: 1rem; +} +.x-pr1 { + padding-right: 2rem; +} +.x-pr2 { + padding-right: 3rem; +} +.x-pr3 { + padding-right: 4rem; +} +.x-pb0 { + padding-bottom: 1rem; +} +.x-pb1 { + padding-bottom: 2rem; +} +.x-pb2 { + padding-bottom: 3rem; +} +.x-pb3 { + padding-bottom: 4rem; +} +.x-pl0 { + padding-left: 1rem; +} +.x-pl1 { + padding-left: 2rem; +} +.x-pl2 { + padding-left: 3rem; +} +.x-pl3 { + padding-left: 4rem; +} +@media screen and (min-width: 30em) { + .x-m0-ns { + margin: 1rem; + } + .x-m1-ns { + margin: 2rem; + } + .x-m2-ns { + margin: 3rem; + } + .x-m3-ns { + margin: 4rem; + } + .x-ma-ns { + margin: auto; + } + .x-mt0-ns { + margin-top: 1rem; + } + .x-mt1-ns { + margin-top: 2rem; + } + .x-mt2-ns { + margin-top: 3rem; + } + .x-mt3-ns { + margin-top: 4rem; + } + .x-mta-ns { + margin-top: auto; + } + .x-mr0-ns { + margin-right: 1rem; + } + .x-mr1-ns { + margin-right: 2rem; + } + .x-mr2-ns { + margin-right: 3rem; + } + .x-mr3-ns { + margin-right: 4rem; + } + .x-mra-ns { + margin-right: auto; + } + .x-mb0-ns { + margin-bottom: 1rem; + } + .x-mb1-ns { + margin-bottom: 2rem; + } + .x-mb2-ns { + margin-bottom: 3rem; + } + .x-mb3-ns { + margin-bottom: 4rem; + } + .x-mba-ns { + margin-bottom: auto; + } + .x-ml0-ns { + margin-left: 1rem; + } + .x-ml1-ns { + margin-left: 2rem; + } + .x-ml2-ns { + margin-left: 3rem; + } + .x-ml3-ns { + margin-left: 4rem; + } + .x-mla-ns { + margin-left: auto; + } + .x-p0-ns { + padding: 1rem; + } + .x-p1-ns { + padding: 2rem; + } + .x-p2-ns { + padding: 3rem; + } + .x-p3-ns { + padding: 4rem; + } + .x-pt0-ns { + padding-top: 1rem; + } + .x-pt1-ns { + padding-top: 2rem; + } + .x-pt2-ns { + padding-top: 3rem; + } + .x-pt3-ns { + padding-top: 4rem; + } + .x-pr0-ns { + padding-right: 1rem; + } + .x-pr1-ns { + padding-right: 2rem; + } + .x-pr2-ns { + padding-right: 3rem; + } + .x-pr3-ns { + padding-right: 4rem; + } + .x-pb0-ns { + padding-bottom: 1rem; + } + .x-pb1-ns { + padding-bottom: 2rem; + } + .x-pb2-ns { + padding-bottom: 3rem; + } + .x-pb3-ns { + padding-bottom: 4rem; + } + .x-pl0-ns { + padding-left: 1rem; + } + .x-pl1-ns { + padding-left: 2rem; + } + .x-pl2-ns { + padding-left: 3rem; + } + .x-pl3-ns { + padding-left: 4rem; + } +} +@media screen and (min-width: 30em) and (max-width: 60em) { + .x-m0-m { + margin: 1rem; + } + .x-m1-m { + margin: 2rem; + } + .x-m2-m { + margin: 3rem; + } + .x-m3-m { + margin: 4rem; + } + .x-ma-m { + margin: auto; + } + .x-mt0-m { + margin-top: 1rem; + } + .x-mt1-m { + margin-top: 2rem; + } + .x-mt2-m { + margin-top: 3rem; + } + .x-mt3-m { + margin-top: 4rem; + } + .x-mta-m { + margin-top: auto; + } + .x-mr0-m { + margin-right: 1rem; + } + .x-mr1-m { + margin-right: 2rem; + } + .x-mr2-m { + margin-right: 3rem; + } + .x-mr3-m { + margin-right: 4rem; + } + .x-mra-m { + margin-right: auto; + } + .x-mb0-m { + margin-bottom: 1rem; + } + .x-mb1-m { + margin-bottom: 2rem; + } + .x-mb2-m { + margin-bottom: 3rem; + } + .x-mb3-m { + margin-bottom: 4rem; + } + .x-mba-m { + margin-bottom: auto; + } + .x-ml0-m { + margin-left: 1rem; + } + .x-ml1-m { + margin-left: 2rem; + } + .x-ml2-m { + margin-left: 3rem; + } + .x-ml3-m { + margin-left: 4rem; + } + .x-mla-m { + margin-left: auto; + } + .x-p0-m { + padding: 1rem; + } + .x-p1-m { + padding: 2rem; + } + .x-p2-m { + padding: 3rem; + } + .x-p3-m { + padding: 4rem; + } + .x-pt0-m { + padding-top: 1rem; + } + .x-pt1-m { + padding-top: 2rem; + } + .x-pt2-m { + padding-top: 3rem; + } + .x-pt3-m { + padding-top: 4rem; + } + .x-pr0-m { + padding-right: 1rem; + } + .x-pr1-m { + padding-right: 2rem; + } + .x-pr2-m { + padding-right: 3rem; + } + .x-pr3-m { + padding-right: 4rem; + } + .x-pb0-m { + padding-bottom: 1rem; + } + .x-pb1-m { + padding-bottom: 2rem; + } + .x-pb2-m { + padding-bottom: 3rem; + } + .x-pb3-m { + padding-bottom: 4rem; + } + .x-pl0-m { + padding-left: 1rem; + } + .x-pl1-m { + padding-left: 2rem; + } + .x-pl2-m { + padding-left: 3rem; + } + .x-pl3-m { + padding-left: 4rem; + } +} +@media screen and (min-width: 60em) { + .x-m0-l { + margin: 1rem; + } + .x-m1-l { + margin: 2rem; + } + .x-m2-l { + margin: 3rem; + } + .x-m3-l { + margin: 4rem; + } + .x-ma-l { + margin: auto; + } + .x-mt0-l { + margin-top: 1rem; + } + .x-mt1-l { + margin-top: 2rem; + } + .x-mt2-l { + margin-top: 3rem; + } + .x-mt3-l { + margin-top: 4rem; + } + .x-mta-l { + margin-top: auto; + } + .x-mr0-l { + margin-right: 1rem; + } + .x-mr1-l { + margin-right: 2rem; + } + .x-mr2-l { + margin-right: 3rem; + } + .x-mr3-l { + margin-right: 4rem; + } + .x-mra-l { + margin-right: auto; + } + .x-mb0-l { + margin-bottom: 1rem; + } + .x-mb1-l { + margin-bottom: 2rem; + } + .x-mb2-l { + margin-bottom: 3rem; + } + .x-mb3-l { + margin-bottom: 4rem; + } + .x-mba-l { + margin-bottom: auto; + } + .x-ml0-l { + margin-left: 1rem; + } + .x-ml1-l { + margin-left: 2rem; + } + .x-ml2-l { + margin-left: 3rem; + } + .x-ml3-l { + margin-left: 4rem; + } + .x-mla-l { + margin-left: auto; + } + .x-p0-l { + padding: 1rem; + } + .x-p1-l { + padding: 2rem; + } + .x-p2-l { + padding: 3rem; + } + .x-p3-l { + padding: 4rem; + } + .x-pt0-l { + padding-top: 1rem; + } + .x-pt1-l { + padding-top: 2rem; + } + .x-pt2-l { + padding-top: 3rem; + } + .x-pt3-l { + padding-top: 4rem; + } + .x-pr0-l { + padding-right: 1rem; + } + .x-pr1-l { + padding-right: 2rem; + } + .x-pr2-l { + padding-right: 3rem; + } + .x-pr3-l { + padding-right: 4rem; + } + .x-pb0-l { + padding-bottom: 1rem; + } + .x-pb1-l { + padding-bottom: 2rem; + } + .x-pb2-l { + padding-bottom: 3rem; + } + .x-pb3-l { + padding-bottom: 4rem; + } + .x-pl0-l { + padding-left: 1rem; + } + .x-pl1-l { + padding-left: 2rem; + } + .x-pl2-l { + padding-left: 3rem; + } + .x-pl3-l { + padding-left: 4rem; + } +} +.x-custom { + foo: bar; +} +.x-poss { + position: static; +} +.x-posa { + position: absolute; +} +.x-posr { + position: relative; +} +.x-posf { + position: fixed; +} +.x-posstky { + position: sticky; +} +.x-ta { + top: auto; +} +.x-ra { + right: auto; +} +.x-ba { + bottom: auto; +} +.x-la { + left: auto; +} +.x-z0 { + z-index: 0; +} +.x-z1 { + z-index: 1; +} +.x-z2 { + z-index: 2; +} +.x-z3 { + z-index: 3; +} +.x-z4 { + z-index: 4; +} +.x-z5 { + z-index: 5; +} +.x-z999 { + z-index: 999; +} +.x-z9999 { + z-index: 9999; +} +.x-zmax { + z-index: 2147483647; +} +.x-zinitial { + z-index: initial; +} +.x-zinherit { + z-index: inherit; +} +.x-zunset { + z-index: unset; +} +.x-za { + z-index: auto; +} +.x-fln { + float: none; +} +.x-fll { + float: left; +} +.x-flr { + float: right; +} +.x-cln { + clear: none; +} +.x-cll { + clear: left; +} +.x-clr { + clear: right; +} +.x-clb { + clear: both; +} +.x-dn { + display: none; +} +.x-db { + display: block; +} +.x-df { + display: flex; +} +.x-dif { + display: inline-flex; +} +.x-di { + display: inline; +} +.x-dib { + display: inline-block; +} +.x-dtb { + display: table; +} +.x-vv { + visibility: visible; +} +.x-vh { + visibility: hidden; +} +.x-vc { + visibility: collapse; +} +.x-ovv { + overflow: visible; +} +.x-ovh { + overflow: hidden; +} +.x-ovs { + overflow: scroll; +} +.x-ova { + overflow: auto; +} +.x-ovxv { + overflow-x: visible; +} +.x-ovxh { + overflow-x: hidden; +} +.x-ovxs { + overflow-x: scroll; +} +.x-ovxa { + overflow-x: auto; +} +.x-ovyv { + overflow-y: visible; +} +.x-ovyh { + overflow-y: hidden; +} +.x-ovys { + overflow-y: scroll; +} +.x-ovya { + overflow-y: auto; +} +.x-ovsa { + overflow-style: auto; +} +.x-ovss { + overflow-style: scrollbar; +} +.x-ovsp { + overflow-style: panner; +} +.x-ovsm { + overflow-style: move; +} +.x-ovsmq { + overflow-style: marquee; +} +.x-rszn { + resize: none; +} +.x-rszb { + resize: both; +} +.x-rszh { + resize: horizontal; +} +.x-rszv { + resize: vertical; +} +.x-cura { + cursor: auto; +} +.x-curd { + cursor: default; +} +.x-curc { + cursor: crosshair; +} +.x-curha { + cursor: hand; +} +.x-curhe { + cursor: help; +} +.x-curm { + cursor: move; +} +.x-curp { + cursor: pointer; +} +.x-curt { + cursor: text; +} +.x-bxzcb { + box-sizing: content-box; +} +.x-bxzbb { + box-sizing: border-box; +} +.x-w25 { + width: 25%; +} +.x-w50 { + width: 50%; +} +.x-w75 { + width: 75%; +} +.x-w100 { + width: 100%; +} +.x-wa { + width: auto; +} +.x-maw100 { + max-width: 100%; +} +.x-mawn { + max-width: none; +} +@media screen and (min-width: 30em) { + .x-w25-ns { + width: 25%; + } + .x-w50-ns { + width: 50%; + } + .x-w75-ns { + width: 75%; + } + .x-w100-ns { + width: 100%; + } + .x-wa-ns { + width: auto; + } + .x-maw100-ns { + max-width: 100%; + } + .x-mawn-ns { + max-width: none; + } +} +@media screen and (min-width: 30em) and (max-width: 60em) { + .x-w25-m { + width: 25%; + } + .x-w50-m { + width: 50%; + } + .x-w75-m { + width: 75%; + } + .x-w100-m { + width: 100%; + } + .x-wa-m { + width: auto; + } + .x-maw100-m { + max-width: 100%; + } + .x-mawn-m { + max-width: none; + } +} +@media screen and (min-width: 60em) { + .x-w25-l { + width: 25%; + } + .x-w50-l { + width: 50%; + } + .x-w75-l { + width: 75%; + } + .x-w100-l { + width: 100%; + } + .x-wa-l { + width: auto; + } + .x-maw100-l { + max-width: 100%; + } + .x-mawn-l { + max-width: none; + } +} +.x-h25 { + height: 25%; +} +.x-h50 { + height: 50%; +} +.x-h75 { + height: 75%; +} +.x-h100 { + height: 100%; +} +.x-wa { + height: auto; +} +.x-mah100 { + max-height: 100%; +} +.x-mahn { + max-height: none; +} +@media screen and (min-width: 30em) { + .x-h25-ns { + height: 25%; + } + .x-h50-ns { + height: 50%; + } + .x-h75-ns { + height: 75%; + } + .x-h100-ns { + height: 100%; + } + .x-wa-ns { + height: auto; + } + .x-mah100-ns { + max-height: 100%; + } + .x-mahn-ns { + max-height: none; + } +} +@media screen and (min-width: 30em) and (max-width: 60em) { + .x-h25-m { + height: 25%; + } + .x-h50-m { + height: 50%; + } + .x-h75-m { + height: 75%; + } + .x-h100-m { + height: 100%; + } + .x-wa-m { + height: auto; + } + .x-mah100-m { + max-height: 100%; + } + .x-mahn-m { + max-height: none; + } +} +@media screen and (min-width: 60em) { + .x-h25-l { + height: 25%; + } + .x-h50-l { + height: 50%; + } + .x-h75-l { + height: 75%; + } + .x-h100-l { + height: 100%; + } + .x-wa-l { + height: auto; + } + .x-mah100-l { + max-height: 100%; + } + .x-mahn-l { + max-height: none; + } +} +.x-fwn { + font-weight: normal; +} +.x-fwb { + font-weight: bold; +} +.x-fwbr { + font-weight: bolder; +} +.x-fwlr { + font-weight: lighter; +} +.x-fsn { + font-style: normal; +} +.x-fsi { + font-style: italic; +} +.x-fso { + font-style: oblique; +} +.x-fvn { + font-variant: normal; +} +.x-fvsc { + font-variant: small-caps; +} +.x-f0 { + font-size: 1rem; +} +.x-f1 { + font-size: 1.25rem; +} +.x-f2 { + font-size: 1.5rem; +} +.x-f3 { + font-size: 2rem; +} +.x-f4 { + font-size: 3rem; +} +.x-fzan { + font-size-adjust: none; +} +.x-ffs { + font-family: serif; +} +.x-ffss { + font-family: sans-serif; +} +.x-ffc { + font-family: cursive; +} +.x-fff { + font-family: fantasy; +} +.x-ffm { + font-family: monospace; +} +.x-ffa { + font-family: Arial, "Helvetica Neue", Helvetica, sans-serif; +} +.x-fft { + font-family: "Times New Roman", Times, Baskerville, Georgia, serif; +} +.x-ffv { + font-family: Verdana, Geneva, sans-serif; +} +.x-fefn { + font-effect: none; +} +.x-fefeg { + font-effect: engrave; +} +.x-fefeb { + font-effect: emboss; +} +.x-fefo { + font-effect: outline; +} +.x-fstn { + font-stretch: normal; +} +.x-fstuc { + font-stretch: ultra-condensed; +} +.x-fstec { + font-stretch: extra-condensed; +} +.x-fstc { + font-stretch: condensed; +} +.x-fstsc { + font-stretch: semi-condensed; +} +.x-fstse { + font-stretch: semi-expanded; +} +.x-fste { + font-stretch: expanded; +} +.x-fstee { + font-stretch: extra-expanded; +} +.x-fstue { + font-stretch: ultra-expanded; +} +.x-vasup { + vertical-align: super; +} +.x-vat { + vertical-align: top; +} +.x-vatt { + vertical-align: text-top; +} +.x-vam { + vertical-align: middle; +} +.x-vabl { + vertical-align: baseline; +} +.x-vab { + vertical-align: bottom; +} +.x-vatb { + vertical-align: text-bottom; +} +.x-vasub { + vertical-align: sub; +} +.x-tal { + text-align: left; +} +.x-tac { + text-align: center; +} +.x-tar { + text-align: right; +} +.x-taj { + text-align: justify; +} +.x-tala { + text-align-last: auto; +} +.x-tall { + text-align-last: left; +} +.x-talc { + text-align-last: center; +} +.x-talr { + text-align-last: right; +} +.x-tdn { + text-decoration: none; +} +.x-tdu { + text-decoration: underline; +} +.x-tdo { + text-decoration: overline; +} +.x-tdl { + text-decoration: line-through; +} +.x-ttn { + text-transform: none; +} +.x-ttc { + text-transform: capitalize; +} +.x-ttu { + text-transform: uppercase; +} +.x-ttl { + text-transform: lowercase; +} diff --git a/__tests__/all-defaults-with-prefix/main.css b/__tests__/all-defaults-with-prefix/main.css new file mode 100644 index 0000000..b0e075d --- /dev/null +++ b/__tests__/all-defaults-with-prefix/main.css @@ -0,0 +1 @@ +@utility; diff --git a/__tests__/all-defaults-with-prefix/transform.test.ts b/__tests__/all-defaults-with-prefix/transform.test.ts new file mode 100644 index 0000000..16f0658 --- /dev/null +++ b/__tests__/all-defaults-with-prefix/transform.test.ts @@ -0,0 +1,57 @@ +import path from "path"; +import { promises as fsAsync } from "fs"; +import prettier from "prettier"; +import * as assert from "assert"; +import postcss from "postcss"; + +import utility, { plugins as availablePlugins } from "../../src/index"; +import defaultConfig from "../../src/utility.config.default"; +const { prefix } = availablePlugins; +const plugins = [ + prefix({ + prefix: "x-", + }), +]; + +describe("Default class prefix", () => { + it("should transform css with class definition prefix", async () => { + /** Path to the input css file */ + const cssFilePath = path.join(__dirname, "./main.css"); + /** Dummy output file */ + const cssOutputFilePath = path.join(__dirname, "./main-out.css"); + /** Read the expected css file from fixtures */ + const expectedCss = await fsAsync + .readFile(path.join(__dirname, "./fixtures/expected.css"), "utf-8") + .then((data) => + prettier.format(data, { + parser: "css", + }) + ); + //* Read the input css file */ + const cssFile = await fsAsync.readFile( + path.join(__dirname, "./main.css"), + "utf-8" + ); + + /** Transform the css file */ + const generatedCss = await postcss([ + utility({ + config: defaultConfig.config, + modules: defaultConfig.modules, + plugins, + }), + ]) + .process(cssFile, { + from: cssFilePath, + to: cssOutputFilePath, + }) + .then(({ css }) => + prettier.format(css, { + parser: "css", + }) + ); + + /** Check the transformed file with the expected file */ + assert.strictEqual(generatedCss, expectedCss); + }); +}); diff --git a/__tests__/default-with-docs/transform.test.ts b/__tests__/default-with-docs/transform.test.ts index 95fe91c..15db520 100644 --- a/__tests__/default-with-docs/transform.test.ts +++ b/__tests__/default-with-docs/transform.test.ts @@ -17,7 +17,7 @@ const plugins = [ ]; describe("Default with docs", () => { - it("should transform css for default options + docs", async () => { + it("should transform css with docs", async () => { /** Path to the input css file */ const cssFilePath = path.join(__dirname, "./main.css"); /** Dummy output file */ diff --git a/__tests__/default-with-json/fixtures/expected-docs.html b/__tests__/default-with-json/fixtures/expected-docs.html new file mode 100644 index 0000000..a858c3c --- /dev/null +++ b/__tests__/default-with-json/fixtures/expected-docs.html @@ -0,0 +1,22644 @@ + + + + + + Utility + + + + + + + + + +
+
+ +
+
+ +
+

Overview

+ +

Documentation

+ +
+ +
+
+ +

+ Stats +

+

+ Overview +

+
+ + + + + + + + + + + + + + + + + + + +
SizeGzipped SizeRulesDeclarationsMedia queries
+

+ 16KB +

+
+

+ 2KB +

+
+

+ 403 +

+
+

+ 407 +

+
+

+ 18 +

+
+
+ +

+ Selectors +

+
+ + + + + + + + + + + + + + + + + + + + + +
TotalClassidPseudo ClassPseudo ElementSpecificity
+

+ 403 +

+
+

+ 403 +

+
+

+ 0 +

+
+

+ 0 +

+
+

+ 0 +

+
+

+ 10 +

+
+
+ +

+ Declarations +

+
+ + + + + + + + + + + + + +
TotalUnique
+

+ 407 +

+
+

+ 196 +

+
+
+ + +

+ Series +

+

+ Usage +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ + .f0 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .f1 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .f2 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .f3 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .f0-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .f1-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .f2-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .f3-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .f0-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .f1-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .f2-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .f3-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .f0-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .f1-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .f2-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .f3-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .lh0 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .lh1 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .lh2 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .lh3 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .lh0-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .lh1-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .lh2-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .lh3-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .lh0-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .lh1-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .lh2-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .lh3-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .lh0-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .lh1-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .lh2-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .lh3-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+
+, +

+ Single +

+

+ Usage +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ + .error + + +
+ Lorem Ipsum +
+ + + [object Object],[object Object] + +
+ + .error-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object],[object Object] + +
+ + .error-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object],[object Object] + +
+ + .error-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object],[object Object] + +
+
+, +

+ Spacing +

+

+ Usage +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ + .m0 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .m1 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .m2 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .m3 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ma + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .mt0 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .mt1 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .mt2 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .mt3 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .mta + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .mr0 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .mr1 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .mr2 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .mr3 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .mra + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .mb0 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .mb1 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .mb2 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .mb3 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .mba + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ml0 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ml1 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ml2 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ml3 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .mla + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .p0 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .p1 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .p2 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .p3 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .pt0 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .pt1 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .pt2 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .pt3 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .pr0 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .pr1 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .pr2 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .pr3 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .pb0 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .pb1 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .pb2 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .pb3 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .pl0 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .pl1 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .pl2 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .pl3 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .m0-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .m1-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .m2-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .m3-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .ma-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .mt0-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .mt1-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .mt2-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .mt3-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .mta-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .mr0-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .mr1-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .mr2-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .mr3-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .mra-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .mb0-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .mb1-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .mb2-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .mb3-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .mba-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .ml0-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .ml1-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .ml2-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .ml3-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .mla-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .p0-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .p1-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .p2-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .p3-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .pt0-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .pt1-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .pt2-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .pt3-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .pr0-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .pr1-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .pr2-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .pr3-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .pb0-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .pb1-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .pb2-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .pb3-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .pl0-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .pl1-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .pl2-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .pl3-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .m0-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .m1-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .m2-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .m3-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .ma-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .mt0-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .mt1-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .mt2-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .mt3-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .mta-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .mr0-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .mr1-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .mr2-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .mr3-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .mra-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .mb0-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .mb1-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .mb2-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .mb3-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .mba-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .ml0-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .ml1-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .ml2-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .ml3-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .mla-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .p0-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .p1-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .p2-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .p3-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .pt0-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .pt1-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .pt2-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .pt3-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .pr0-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .pr1-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .pr2-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .pr3-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .pb0-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .pb1-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .pb2-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .pb3-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .pl0-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .pl1-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .pl2-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .pl3-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .m0-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .m1-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .m2-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .m3-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .ma-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .mt0-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .mt1-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .mt2-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .mt3-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .mta-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .mr0-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .mr1-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .mr2-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .mr3-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .mra-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .mb0-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .mb1-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .mb2-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .mb3-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .mba-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .ml0-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .ml1-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .ml2-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .ml3-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .mla-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .p0-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .p1-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .p2-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .p3-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .pt0-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .pt1-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .pt2-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .pt3-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .pr0-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .pr1-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .pr2-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .pr3-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .pb0-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .pb1-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .pb2-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .pb3-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .pl0-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .pl1-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .pl2-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .pl3-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+
+, +

+ Custom module +

+

+ Usage +

+
+ + + + + + + + + + + + + + + +
ClassDescription
+ + .custom + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+
+, +

+ Position +

+

+ Usage +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ + .poss + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .posa + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .posr + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .posf + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .posstky + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ta + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ra + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ba + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .la + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+
+, +

+ Z-index +

+

+ Usage +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ + .z0 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .z1 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .z2 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .z3 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .z4 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .z5 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .z999 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .z9999 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .zmax + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .zinitial + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .zinherit + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .zunset + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .za + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+
+, +

+ Float +

+

+ Usage +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ + .fln + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fll + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .flr + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+
+, +

+ Clear +

+

+ Usage +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ + .cln + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .cll + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .clr + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .clb + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+
+, +

+ Display +

+

+ Usage +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ + .dn + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .db + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .df + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .dif + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .di + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .dib + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .dtb + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+
+, +

+ Visibility +

+

+ Usage +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ + .vv + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .vh + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .vc + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+
+, +

+ Overflow +

+

+ Usage +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ + .ovv + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ovh + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ovs + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ova + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ovxv + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ovxh + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ovxs + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ovxa + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ovyv + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ovyh + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ovys + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ovya + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ovsa + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ovss + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ovsp + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ovsm + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ovsmq + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+
+, +

+ Resize +

+

+ Usage +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ + .rszn + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .rszb + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .rszh + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .rszv + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+
+, +

+ Cursor +

+

+ Usage +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ + .cura + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .curd + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .curc + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .curha + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .curhe + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .curm + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .curp + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .curt + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+
+, +

+ Box-sizing +

+

+ Usage +

+
+ + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ + .bxzcb + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .bxzbb + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+
+, +

+ Width +

+

+ Usage +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ + .w25 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .w50 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .w75 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .w100 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .wa + + + + + + [object Object] + +
+ + .maw100 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .mawn + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .w25-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .w50-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .w75-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .w100-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .wa-ns + + + + +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .maw100-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .mawn-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .w25-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .w50-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .w75-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .w100-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .wa-m + + + + +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .maw100-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .mawn-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .w25-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .w50-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .w75-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .w100-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .wa-l + + + + +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .maw100-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .mawn-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+
+, +

+ Height +

+

+ Usage +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ + .h25 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .h50 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .h75 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .h100 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .wa + + + + + + [object Object] + +
+ + .mah100 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .mahn + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .h25-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .h50-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .h75-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .h100-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .wa-ns + + + + +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .mah100-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .mahn-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .h25-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .h50-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .h75-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .h100-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .wa-m + + + + +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .mah100-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .mahn-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .h25-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .h50-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .h75-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .h100-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .wa-l + + + + +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .mah100-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .mahn-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+
+, +

+ Typography +

+

+ Usage +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ + .fwn + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fwb + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fwbr + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fwlr + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fsn + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fsi + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fso + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fvn + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fvsc + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .f0 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .f1 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .f2 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .f3 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .f4 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fzan + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ffs + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ffss + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ffc + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fff + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ffm + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ffa + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fft + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ffv + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fefn + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fefeg + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fefeb + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fefo + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fstn + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fstuc + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fstec + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fstc + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fstsc + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fstse + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fste + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fstee + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fstue + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+
+, +

+ Vertical-align +

+

+ Usage +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ + .vasup + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .vat + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .vatt + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .vam + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .vabl + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .vab + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .vatb + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .vasub + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+
+, +

+ Text-align +

+

+ Usage +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ + .tal + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .tac + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .tar + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .taj + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .tala + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .tall + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .talc + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .talr + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+
+, +

+ Text-decoration +

+

+ Usage +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ + .tdn + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .tdu + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .tdo + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .tdl + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+
+, +

+ Text-transform +

+

+ Usage +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ + .ttn + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ttc + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ttu + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ttl + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+
+ +
+
+
+ + + diff --git a/__tests__/default-with-json/fixtures/expected-modules.json b/__tests__/default-with-json/fixtures/expected-modules.json new file mode 100644 index 0000000..a858c3c --- /dev/null +++ b/__tests__/default-with-json/fixtures/expected-modules.json @@ -0,0 +1,22644 @@ + + + + + + Utility + + + + + + + + + +
+
+ +
+
+ +
+

Overview

+ +

Documentation

+ +
+ +
+
+ +

+ Stats +

+

+ Overview +

+
+ + + + + + + + + + + + + + + + + + + +
SizeGzipped SizeRulesDeclarationsMedia queries
+

+ 16KB +

+
+

+ 2KB +

+
+

+ 403 +

+
+

+ 407 +

+
+

+ 18 +

+
+
+ +

+ Selectors +

+
+ + + + + + + + + + + + + + + + + + + + + +
TotalClassidPseudo ClassPseudo ElementSpecificity
+

+ 403 +

+
+

+ 403 +

+
+

+ 0 +

+
+

+ 0 +

+
+

+ 0 +

+
+

+ 10 +

+
+
+ +

+ Declarations +

+
+ + + + + + + + + + + + + +
TotalUnique
+

+ 407 +

+
+

+ 196 +

+
+
+ + +

+ Series +

+

+ Usage +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ + .f0 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .f1 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .f2 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .f3 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .f0-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .f1-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .f2-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .f3-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .f0-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .f1-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .f2-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .f3-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .f0-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .f1-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .f2-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .f3-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .lh0 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .lh1 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .lh2 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .lh3 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .lh0-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .lh1-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .lh2-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .lh3-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .lh0-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .lh1-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .lh2-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .lh3-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .lh0-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .lh1-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .lh2-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .lh3-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+
+, +

+ Single +

+

+ Usage +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ + .error + + +
+ Lorem Ipsum +
+ + + [object Object],[object Object] + +
+ + .error-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object],[object Object] + +
+ + .error-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object],[object Object] + +
+ + .error-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object],[object Object] + +
+
+, +

+ Spacing +

+

+ Usage +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ + .m0 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .m1 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .m2 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .m3 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ma + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .mt0 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .mt1 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .mt2 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .mt3 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .mta + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .mr0 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .mr1 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .mr2 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .mr3 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .mra + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .mb0 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .mb1 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .mb2 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .mb3 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .mba + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ml0 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ml1 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ml2 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ml3 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .mla + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .p0 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .p1 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .p2 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .p3 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .pt0 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .pt1 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .pt2 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .pt3 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .pr0 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .pr1 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .pr2 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .pr3 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .pb0 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .pb1 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .pb2 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .pb3 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .pl0 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .pl1 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .pl2 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .pl3 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .m0-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .m1-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .m2-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .m3-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .ma-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .mt0-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .mt1-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .mt2-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .mt3-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .mta-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .mr0-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .mr1-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .mr2-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .mr3-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .mra-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .mb0-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .mb1-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .mb2-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .mb3-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .mba-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .ml0-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .ml1-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .ml2-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .ml3-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .mla-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .p0-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .p1-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .p2-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .p3-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .pt0-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .pt1-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .pt2-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .pt3-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .pr0-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .pr1-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .pr2-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .pr3-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .pb0-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .pb1-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .pb2-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .pb3-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .pl0-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .pl1-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .pl2-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .pl3-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .m0-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .m1-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .m2-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .m3-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .ma-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .mt0-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .mt1-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .mt2-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .mt3-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .mta-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .mr0-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .mr1-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .mr2-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .mr3-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .mra-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .mb0-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .mb1-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .mb2-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .mb3-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .mba-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .ml0-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .ml1-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .ml2-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .ml3-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .mla-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .p0-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .p1-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .p2-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .p3-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .pt0-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .pt1-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .pt2-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .pt3-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .pr0-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .pr1-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .pr2-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .pr3-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .pb0-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .pb1-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .pb2-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .pb3-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .pl0-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .pl1-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .pl2-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .pl3-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .m0-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .m1-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .m2-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .m3-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .ma-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .mt0-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .mt1-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .mt2-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .mt3-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .mta-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .mr0-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .mr1-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .mr2-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .mr3-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .mra-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .mb0-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .mb1-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .mb2-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .mb3-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .mba-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .ml0-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .ml1-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .ml2-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .ml3-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .mla-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .p0-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .p1-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .p2-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .p3-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .pt0-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .pt1-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .pt2-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .pt3-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .pr0-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .pr1-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .pr2-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .pr3-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .pb0-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .pb1-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .pb2-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .pb3-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .pl0-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .pl1-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .pl2-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .pl3-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+
+, +

+ Custom module +

+

+ Usage +

+
+ + + + + + + + + + + + + + + +
ClassDescription
+ + .custom + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+
+, +

+ Position +

+

+ Usage +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ + .poss + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .posa + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .posr + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .posf + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .posstky + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ta + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ra + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ba + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .la + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+
+, +

+ Z-index +

+

+ Usage +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ + .z0 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .z1 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .z2 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .z3 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .z4 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .z5 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .z999 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .z9999 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .zmax + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .zinitial + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .zinherit + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .zunset + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .za + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+
+, +

+ Float +

+

+ Usage +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ + .fln + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fll + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .flr + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+
+, +

+ Clear +

+

+ Usage +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ + .cln + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .cll + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .clr + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .clb + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+
+, +

+ Display +

+

+ Usage +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ + .dn + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .db + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .df + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .dif + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .di + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .dib + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .dtb + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+
+, +

+ Visibility +

+

+ Usage +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ + .vv + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .vh + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .vc + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+
+, +

+ Overflow +

+

+ Usage +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ + .ovv + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ovh + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ovs + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ova + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ovxv + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ovxh + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ovxs + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ovxa + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ovyv + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ovyh + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ovys + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ovya + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ovsa + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ovss + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ovsp + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ovsm + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ovsmq + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+
+, +

+ Resize +

+

+ Usage +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ + .rszn + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .rszb + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .rszh + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .rszv + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+
+, +

+ Cursor +

+

+ Usage +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ + .cura + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .curd + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .curc + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .curha + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .curhe + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .curm + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .curp + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .curt + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+
+, +

+ Box-sizing +

+

+ Usage +

+
+ + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ + .bxzcb + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .bxzbb + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+
+, +

+ Width +

+

+ Usage +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ + .w25 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .w50 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .w75 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .w100 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .wa + + + + + + [object Object] + +
+ + .maw100 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .mawn + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .w25-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .w50-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .w75-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .w100-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .wa-ns + + + + +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .maw100-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .mawn-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .w25-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .w50-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .w75-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .w100-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .wa-m + + + + +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .maw100-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .mawn-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .w25-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .w50-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .w75-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .w100-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .wa-l + + + + +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .maw100-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .mawn-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+
+, +

+ Height +

+

+ Usage +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ + .h25 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .h50 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .h75 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .h100 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .wa + + + + + + [object Object] + +
+ + .mah100 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .mahn + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .h25-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .h50-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .h75-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .h100-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .wa-ns + + + + +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .mah100-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .mahn-ns + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) +

+ + + [object Object] + +
+ + .h25-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .h50-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .h75-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .h100-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .wa-m + + + + +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .mah100-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .mahn-m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 30em) and (max-width: 60em) +

+ + + [object Object] + +
+ + .h25-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .h50-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .h75-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .h100-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .wa-l + + + + +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .mah100-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+ + .mahn-l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 60em) +

+ + + [object Object] + +
+
+, +

+ Typography +

+

+ Usage +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ + .fwn + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fwb + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fwbr + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fwlr + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fsn + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fsi + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fso + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fvn + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fvsc + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .f0 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .f1 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .f2 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .f3 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .f4 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fzan + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ffs + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ffss + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ffc + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fff + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ffm + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ffa + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fft + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ffv + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fefn + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fefeg + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fefeb + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fefo + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fstn + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fstuc + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fstec + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fstc + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fstsc + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fstse + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fste + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fstee + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fstue + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+
+, +

+ Vertical-align +

+

+ Usage +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ + .vasup + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .vat + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .vatt + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .vam + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .vabl + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .vab + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .vatb + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .vasub + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+
+, +

+ Text-align +

+

+ Usage +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ + .tal + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .tac + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .tar + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .taj + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .tala + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .tall + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .talc + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .talr + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+
+, +

+ Text-decoration +

+

+ Usage +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ + .tdn + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .tdu + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .tdo + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .tdl + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+
+, +

+ Text-transform +

+

+ Usage +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ + .ttn + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ttc + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ttu + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .ttl + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+
+ +
+
+
+ + + diff --git a/__tests__/default-with-json/fixtures/expected.css b/__tests__/default-with-json/fixtures/expected.css new file mode 100644 index 0000000..bf7808b --- /dev/null +++ b/__tests__/default-with-json/fixtures/expected.css @@ -0,0 +1,1249 @@ +.f0 { + font-size: 1rem; +} +.f1 { + font-size: 2rem; +} +.f2 { + font-size: 3rem; +} +.f3 { + font-size: 4rem; +} +@media screen and (min-width: 30em) { + .f0-ns { + font-size: 1rem; + } + .f1-ns { + font-size: 2rem; + } + .f2-ns { + font-size: 3rem; + } + .f3-ns { + font-size: 4rem; + } +} +@media screen and (min-width: 30em) and (max-width: 60em) { + .f0-m { + font-size: 1rem; + } + .f1-m { + font-size: 2rem; + } + .f2-m { + font-size: 3rem; + } + .f3-m { + font-size: 4rem; + } +} +@media screen and (min-width: 60em) { + .f0-l { + font-size: 1rem; + } + .f1-l { + font-size: 2rem; + } + .f2-l { + font-size: 3rem; + } + .f3-l { + font-size: 4rem; + } +} +.lh0 { + line-height: 1; +} +.lh1 { + line-height: 2; +} +.lh2 { + line-height: 3; +} +.lh3 { + line-height: 4; +} +@media screen and (min-width: 30em) { + .lh0-ns { + line-height: 1; + } + .lh1-ns { + line-height: 2; + } + .lh2-ns { + line-height: 3; + } + .lh3-ns { + line-height: 4; + } +} +@media screen and (min-width: 30em) and (max-width: 60em) { + .lh0-m { + line-height: 1; + } + .lh1-m { + line-height: 2; + } + .lh2-m { + line-height: 3; + } + .lh3-m { + line-height: 4; + } +} +@media screen and (min-width: 60em) { + .lh0-l { + line-height: 1; + } + .lh1-l { + line-height: 2; + } + .lh2-l { + line-height: 3; + } + .lh3-l { + line-height: 4; + } +} +.error { + color: red; + font-weight: bold; +} +@media screen and (min-width: 30em) { + .error-ns { + color: red; + font-weight: bold; + } +} +@media screen and (min-width: 30em) and (max-width: 60em) { + .error-m { + color: red; + font-weight: bold; + } +} +@media screen and (min-width: 60em) { + .error-l { + color: red; + font-weight: bold; + } +} +.m0 { + margin: 1rem; +} +.m1 { + margin: 2rem; +} +.m2 { + margin: 3rem; +} +.m3 { + margin: 4rem; +} +.ma { + margin: auto; +} +.mt0 { + margin-top: 1rem; +} +.mt1 { + margin-top: 2rem; +} +.mt2 { + margin-top: 3rem; +} +.mt3 { + margin-top: 4rem; +} +.mta { + margin-top: auto; +} +.mr0 { + margin-right: 1rem; +} +.mr1 { + margin-right: 2rem; +} +.mr2 { + margin-right: 3rem; +} +.mr3 { + margin-right: 4rem; +} +.mra { + margin-right: auto; +} +.mb0 { + margin-bottom: 1rem; +} +.mb1 { + margin-bottom: 2rem; +} +.mb2 { + margin-bottom: 3rem; +} +.mb3 { + margin-bottom: 4rem; +} +.mba { + margin-bottom: auto; +} +.ml0 { + margin-left: 1rem; +} +.ml1 { + margin-left: 2rem; +} +.ml2 { + margin-left: 3rem; +} +.ml3 { + margin-left: 4rem; +} +.mla { + margin-left: auto; +} +.p0 { + padding: 1rem; +} +.p1 { + padding: 2rem; +} +.p2 { + padding: 3rem; +} +.p3 { + padding: 4rem; +} +.pt0 { + padding-top: 1rem; +} +.pt1 { + padding-top: 2rem; +} +.pt2 { + padding-top: 3rem; +} +.pt3 { + padding-top: 4rem; +} +.pr0 { + padding-right: 1rem; +} +.pr1 { + padding-right: 2rem; +} +.pr2 { + padding-right: 3rem; +} +.pr3 { + padding-right: 4rem; +} +.pb0 { + padding-bottom: 1rem; +} +.pb1 { + padding-bottom: 2rem; +} +.pb2 { + padding-bottom: 3rem; +} +.pb3 { + padding-bottom: 4rem; +} +.pl0 { + padding-left: 1rem; +} +.pl1 { + padding-left: 2rem; +} +.pl2 { + padding-left: 3rem; +} +.pl3 { + padding-left: 4rem; +} +@media screen and (min-width: 30em) { + .m0-ns { + margin: 1rem; + } + .m1-ns { + margin: 2rem; + } + .m2-ns { + margin: 3rem; + } + .m3-ns { + margin: 4rem; + } + .ma-ns { + margin: auto; + } + .mt0-ns { + margin-top: 1rem; + } + .mt1-ns { + margin-top: 2rem; + } + .mt2-ns { + margin-top: 3rem; + } + .mt3-ns { + margin-top: 4rem; + } + .mta-ns { + margin-top: auto; + } + .mr0-ns { + margin-right: 1rem; + } + .mr1-ns { + margin-right: 2rem; + } + .mr2-ns { + margin-right: 3rem; + } + .mr3-ns { + margin-right: 4rem; + } + .mra-ns { + margin-right: auto; + } + .mb0-ns { + margin-bottom: 1rem; + } + .mb1-ns { + margin-bottom: 2rem; + } + .mb2-ns { + margin-bottom: 3rem; + } + .mb3-ns { + margin-bottom: 4rem; + } + .mba-ns { + margin-bottom: auto; + } + .ml0-ns { + margin-left: 1rem; + } + .ml1-ns { + margin-left: 2rem; + } + .ml2-ns { + margin-left: 3rem; + } + .ml3-ns { + margin-left: 4rem; + } + .mla-ns { + margin-left: auto; + } + .p0-ns { + padding: 1rem; + } + .p1-ns { + padding: 2rem; + } + .p2-ns { + padding: 3rem; + } + .p3-ns { + padding: 4rem; + } + .pt0-ns { + padding-top: 1rem; + } + .pt1-ns { + padding-top: 2rem; + } + .pt2-ns { + padding-top: 3rem; + } + .pt3-ns { + padding-top: 4rem; + } + .pr0-ns { + padding-right: 1rem; + } + .pr1-ns { + padding-right: 2rem; + } + .pr2-ns { + padding-right: 3rem; + } + .pr3-ns { + padding-right: 4rem; + } + .pb0-ns { + padding-bottom: 1rem; + } + .pb1-ns { + padding-bottom: 2rem; + } + .pb2-ns { + padding-bottom: 3rem; + } + .pb3-ns { + padding-bottom: 4rem; + } + .pl0-ns { + padding-left: 1rem; + } + .pl1-ns { + padding-left: 2rem; + } + .pl2-ns { + padding-left: 3rem; + } + .pl3-ns { + padding-left: 4rem; + } +} +@media screen and (min-width: 30em) and (max-width: 60em) { + .m0-m { + margin: 1rem; + } + .m1-m { + margin: 2rem; + } + .m2-m { + margin: 3rem; + } + .m3-m { + margin: 4rem; + } + .ma-m { + margin: auto; + } + .mt0-m { + margin-top: 1rem; + } + .mt1-m { + margin-top: 2rem; + } + .mt2-m { + margin-top: 3rem; + } + .mt3-m { + margin-top: 4rem; + } + .mta-m { + margin-top: auto; + } + .mr0-m { + margin-right: 1rem; + } + .mr1-m { + margin-right: 2rem; + } + .mr2-m { + margin-right: 3rem; + } + .mr3-m { + margin-right: 4rem; + } + .mra-m { + margin-right: auto; + } + .mb0-m { + margin-bottom: 1rem; + } + .mb1-m { + margin-bottom: 2rem; + } + .mb2-m { + margin-bottom: 3rem; + } + .mb3-m { + margin-bottom: 4rem; + } + .mba-m { + margin-bottom: auto; + } + .ml0-m { + margin-left: 1rem; + } + .ml1-m { + margin-left: 2rem; + } + .ml2-m { + margin-left: 3rem; + } + .ml3-m { + margin-left: 4rem; + } + .mla-m { + margin-left: auto; + } + .p0-m { + padding: 1rem; + } + .p1-m { + padding: 2rem; + } + .p2-m { + padding: 3rem; + } + .p3-m { + padding: 4rem; + } + .pt0-m { + padding-top: 1rem; + } + .pt1-m { + padding-top: 2rem; + } + .pt2-m { + padding-top: 3rem; + } + .pt3-m { + padding-top: 4rem; + } + .pr0-m { + padding-right: 1rem; + } + .pr1-m { + padding-right: 2rem; + } + .pr2-m { + padding-right: 3rem; + } + .pr3-m { + padding-right: 4rem; + } + .pb0-m { + padding-bottom: 1rem; + } + .pb1-m { + padding-bottom: 2rem; + } + .pb2-m { + padding-bottom: 3rem; + } + .pb3-m { + padding-bottom: 4rem; + } + .pl0-m { + padding-left: 1rem; + } + .pl1-m { + padding-left: 2rem; + } + .pl2-m { + padding-left: 3rem; + } + .pl3-m { + padding-left: 4rem; + } +} +@media screen and (min-width: 60em) { + .m0-l { + margin: 1rem; + } + .m1-l { + margin: 2rem; + } + .m2-l { + margin: 3rem; + } + .m3-l { + margin: 4rem; + } + .ma-l { + margin: auto; + } + .mt0-l { + margin-top: 1rem; + } + .mt1-l { + margin-top: 2rem; + } + .mt2-l { + margin-top: 3rem; + } + .mt3-l { + margin-top: 4rem; + } + .mta-l { + margin-top: auto; + } + .mr0-l { + margin-right: 1rem; + } + .mr1-l { + margin-right: 2rem; + } + .mr2-l { + margin-right: 3rem; + } + .mr3-l { + margin-right: 4rem; + } + .mra-l { + margin-right: auto; + } + .mb0-l { + margin-bottom: 1rem; + } + .mb1-l { + margin-bottom: 2rem; + } + .mb2-l { + margin-bottom: 3rem; + } + .mb3-l { + margin-bottom: 4rem; + } + .mba-l { + margin-bottom: auto; + } + .ml0-l { + margin-left: 1rem; + } + .ml1-l { + margin-left: 2rem; + } + .ml2-l { + margin-left: 3rem; + } + .ml3-l { + margin-left: 4rem; + } + .mla-l { + margin-left: auto; + } + .p0-l { + padding: 1rem; + } + .p1-l { + padding: 2rem; + } + .p2-l { + padding: 3rem; + } + .p3-l { + padding: 4rem; + } + .pt0-l { + padding-top: 1rem; + } + .pt1-l { + padding-top: 2rem; + } + .pt2-l { + padding-top: 3rem; + } + .pt3-l { + padding-top: 4rem; + } + .pr0-l { + padding-right: 1rem; + } + .pr1-l { + padding-right: 2rem; + } + .pr2-l { + padding-right: 3rem; + } + .pr3-l { + padding-right: 4rem; + } + .pb0-l { + padding-bottom: 1rem; + } + .pb1-l { + padding-bottom: 2rem; + } + .pb2-l { + padding-bottom: 3rem; + } + .pb3-l { + padding-bottom: 4rem; + } + .pl0-l { + padding-left: 1rem; + } + .pl1-l { + padding-left: 2rem; + } + .pl2-l { + padding-left: 3rem; + } + .pl3-l { + padding-left: 4rem; + } +} +.custom { + foo: bar; +} +.poss { + position: static; +} +.posa { + position: absolute; +} +.posr { + position: relative; +} +.posf { + position: fixed; +} +.posstky { + position: sticky; +} +.ta { + top: auto; +} +.ra { + right: auto; +} +.ba { + bottom: auto; +} +.la { + left: auto; +} +.z0 { + z-index: 0; +} +.z1 { + z-index: 1; +} +.z2 { + z-index: 2; +} +.z3 { + z-index: 3; +} +.z4 { + z-index: 4; +} +.z5 { + z-index: 5; +} +.z999 { + z-index: 999; +} +.z9999 { + z-index: 9999; +} +.zmax { + z-index: 2147483647; +} +.zinitial { + z-index: initial; +} +.zinherit { + z-index: inherit; +} +.zunset { + z-index: unset; +} +.za { + z-index: auto; +} +.fln { + float: none; +} +.fll { + float: left; +} +.flr { + float: right; +} +.cln { + clear: none; +} +.cll { + clear: left; +} +.clr { + clear: right; +} +.clb { + clear: both; +} +.dn { + display: none; +} +.db { + display: block; +} +.df { + display: flex; +} +.dif { + display: inline-flex; +} +.di { + display: inline; +} +.dib { + display: inline-block; +} +.dtb { + display: table; +} +.vv { + visibility: visible; +} +.vh { + visibility: hidden; +} +.vc { + visibility: collapse; +} +.ovv { + overflow: visible; +} +.ovh { + overflow: hidden; +} +.ovs { + overflow: scroll; +} +.ova { + overflow: auto; +} +.ovxv { + overflow-x: visible; +} +.ovxh { + overflow-x: hidden; +} +.ovxs { + overflow-x: scroll; +} +.ovxa { + overflow-x: auto; +} +.ovyv { + overflow-y: visible; +} +.ovyh { + overflow-y: hidden; +} +.ovys { + overflow-y: scroll; +} +.ovya { + overflow-y: auto; +} +.ovsa { + overflow-style: auto; +} +.ovss { + overflow-style: scrollbar; +} +.ovsp { + overflow-style: panner; +} +.ovsm { + overflow-style: move; +} +.ovsmq { + overflow-style: marquee; +} +.rszn { + resize: none; +} +.rszb { + resize: both; +} +.rszh { + resize: horizontal; +} +.rszv { + resize: vertical; +} +.cura { + cursor: auto; +} +.curd { + cursor: default; +} +.curc { + cursor: crosshair; +} +.curha { + cursor: hand; +} +.curhe { + cursor: help; +} +.curm { + cursor: move; +} +.curp { + cursor: pointer; +} +.curt { + cursor: text; +} +.bxzcb { + box-sizing: content-box; +} +.bxzbb { + box-sizing: border-box; +} +.w25 { + width: 25%; +} +.w50 { + width: 50%; +} +.w75 { + width: 75%; +} +.w100 { + width: 100%; +} +.wa { + width: auto; +} +.maw100 { + max-width: 100%; +} +.mawn { + max-width: none; +} +@media screen and (min-width: 30em) { + .w25-ns { + width: 25%; + } + .w50-ns { + width: 50%; + } + .w75-ns { + width: 75%; + } + .w100-ns { + width: 100%; + } + .wa-ns { + width: auto; + } + .maw100-ns { + max-width: 100%; + } + .mawn-ns { + max-width: none; + } +} +@media screen and (min-width: 30em) and (max-width: 60em) { + .w25-m { + width: 25%; + } + .w50-m { + width: 50%; + } + .w75-m { + width: 75%; + } + .w100-m { + width: 100%; + } + .wa-m { + width: auto; + } + .maw100-m { + max-width: 100%; + } + .mawn-m { + max-width: none; + } +} +@media screen and (min-width: 60em) { + .w25-l { + width: 25%; + } + .w50-l { + width: 50%; + } + .w75-l { + width: 75%; + } + .w100-l { + width: 100%; + } + .wa-l { + width: auto; + } + .maw100-l { + max-width: 100%; + } + .mawn-l { + max-width: none; + } +} +.h25 { + height: 25%; +} +.h50 { + height: 50%; +} +.h75 { + height: 75%; +} +.h100 { + height: 100%; +} +.wa { + height: auto; +} +.mah100 { + max-height: 100%; +} +.mahn { + max-height: none; +} +@media screen and (min-width: 30em) { + .h25-ns { + height: 25%; + } + .h50-ns { + height: 50%; + } + .h75-ns { + height: 75%; + } + .h100-ns { + height: 100%; + } + .wa-ns { + height: auto; + } + .mah100-ns { + max-height: 100%; + } + .mahn-ns { + max-height: none; + } +} +@media screen and (min-width: 30em) and (max-width: 60em) { + .h25-m { + height: 25%; + } + .h50-m { + height: 50%; + } + .h75-m { + height: 75%; + } + .h100-m { + height: 100%; + } + .wa-m { + height: auto; + } + .mah100-m { + max-height: 100%; + } + .mahn-m { + max-height: none; + } +} +@media screen and (min-width: 60em) { + .h25-l { + height: 25%; + } + .h50-l { + height: 50%; + } + .h75-l { + height: 75%; + } + .h100-l { + height: 100%; + } + .wa-l { + height: auto; + } + .mah100-l { + max-height: 100%; + } + .mahn-l { + max-height: none; + } +} +.fwn { + font-weight: normal; +} +.fwb { + font-weight: bold; +} +.fwbr { + font-weight: bolder; +} +.fwlr { + font-weight: lighter; +} +.fsn { + font-style: normal; +} +.fsi { + font-style: italic; +} +.fso { + font-style: oblique; +} +.fvn { + font-variant: normal; +} +.fvsc { + font-variant: small-caps; +} +.f0 { + font-size: 1rem; +} +.f1 { + font-size: 1.25rem; +} +.f2 { + font-size: 1.5rem; +} +.f3 { + font-size: 2rem; +} +.f4 { + font-size: 3rem; +} +.fzan { + font-size-adjust: none; +} +.ffs { + font-family: serif; +} +.ffss { + font-family: sans-serif; +} +.ffc { + font-family: cursive; +} +.fff { + font-family: fantasy; +} +.ffm { + font-family: monospace; +} +.ffa { + font-family: Arial, "Helvetica Neue", Helvetica, sans-serif; +} +.fft { + font-family: "Times New Roman", Times, Baskerville, Georgia, serif; +} +.ffv { + font-family: Verdana, Geneva, sans-serif; +} +.fefn { + font-effect: none; +} +.fefeg { + font-effect: engrave; +} +.fefeb { + font-effect: emboss; +} +.fefo { + font-effect: outline; +} +.fstn { + font-stretch: normal; +} +.fstuc { + font-stretch: ultra-condensed; +} +.fstec { + font-stretch: extra-condensed; +} +.fstc { + font-stretch: condensed; +} +.fstsc { + font-stretch: semi-condensed; +} +.fstse { + font-stretch: semi-expanded; +} +.fste { + font-stretch: expanded; +} +.fstee { + font-stretch: extra-expanded; +} +.fstue { + font-stretch: ultra-expanded; +} +.vasup { + vertical-align: super; +} +.vat { + vertical-align: top; +} +.vatt { + vertical-align: text-top; +} +.vam { + vertical-align: middle; +} +.vabl { + vertical-align: baseline; +} +.vab { + vertical-align: bottom; +} +.vatb { + vertical-align: text-bottom; +} +.vasub { + vertical-align: sub; +} +.tal { + text-align: left; +} +.tac { + text-align: center; +} +.tar { + text-align: right; +} +.taj { + text-align: justify; +} +.tala { + text-align-last: auto; +} +.tall { + text-align-last: left; +} +.talc { + text-align-last: center; +} +.talr { + text-align-last: right; +} +.tdn { + text-decoration: none; +} +.tdu { + text-decoration: underline; +} +.tdo { + text-decoration: overline; +} +.tdl { + text-decoration: line-through; +} +.ttn { + text-transform: none; +} +.ttc { + text-transform: capitalize; +} +.ttu { + text-transform: uppercase; +} +.ttl { + text-transform: lowercase; +} diff --git a/__tests__/default-with-json/main.css b/__tests__/default-with-json/main.css new file mode 100644 index 0000000..b0e075d --- /dev/null +++ b/__tests__/default-with-json/main.css @@ -0,0 +1 @@ +@utility; diff --git a/__tests__/default-with-json/transform.test.ts b/__tests__/default-with-json/transform.test.ts new file mode 100644 index 0000000..aacdbdc --- /dev/null +++ b/__tests__/default-with-json/transform.test.ts @@ -0,0 +1,103 @@ +import path from "path"; +import { promises as fsAsync } from "fs"; +import prettier from "prettier"; +import * as assert from "assert"; +import postcss from "postcss"; + +// eslint-disable-next-line @typescript-eslint/no-var-requires +const prettydiff = require("prettydiff"); + +import utility, { plugins as availablePlugins } from "../../src/index"; +import defaultConfig from "../../src/utility.config.default"; +const { docs, json } = availablePlugins; +const plugins = [ + docs({ + output: path.join(__dirname, "./dist/docs.html"), + }), + docs({ + output: path.join(__dirname, "./dist/modules.json"), + }), +]; + +describe("Default with json", () => { + it("should transform css and module json", async () => { + /** Path to the input css file */ + const cssFilePath = path.join(__dirname, "./main.css"); + /** Dummy output file */ + const cssOutputFilePath = path.join(__dirname, "./main-out.css"); + /** Read the expected css file from fixtures */ + const expectedCss = await fsAsync + .readFile(path.join(__dirname, "./fixtures/expected.css"), "utf-8") + .then((data) => + prettier.format(data, { + parser: "css", + }) + ); + /** Read the expected HTML file from fixtures */ + const expectedHTML = await fsAsync.readFile( + path.join(__dirname, "./fixtures/expected-docs.html"), + "utf-8" + ); + /** Read the expected JSON file from fixtures */ + const expectedJSON = await fsAsync.readFile( + path.join(__dirname, "./fixtures/expected-modules.json"), + "utf-8" + ); + + //* Read the input css file */ + const cssFile = await fsAsync.readFile( + path.join(__dirname, "./main.css"), + "utf-8" + ); + + /** Transform the css file */ + const generatedCss = await postcss([ + utility({ + config: defaultConfig.config, + modules: defaultConfig.modules, + plugins, + }), + ]) + .process(cssFile, { + from: cssFilePath, + to: cssOutputFilePath, + }) + .then(({ css }) => + prettier.format(css, { + parser: "css", + }) + ); + + const generateHTML = await fsAsync.readFile( + path.join(__dirname, "./dist/docs.html"), + "utf-8" + ); + + const generateJSON = await fsAsync.readFile( + path.join(__dirname, "./dist/modules.json"), + "utf-8" + ); + + /** Get the diff of HTML */ + const htmlDiffOutput = prettydiff({ + source: expectedHTML, + mode: "diff", + diff: generateHTML, + lang: "html", + }); + /** Get the diff of JSON */ + const jsonDiffOutput = prettydiff({ + source: expectedJSON, + mode: "diff", + diff: generateJSON, + lang: "json", + }); + /** Check the transformed file with the expected file */ + assert.strictEqual(generatedCss, expectedCss); + + /** Check if the length of diff is zero */ + assert.strictEqual(htmlDiffOutput.length, 0); + /** Check if the length of diff is zero */ + assert.strictEqual(jsonDiffOutput.length, 0); + }); +}); diff --git a/package.json b/package.json index 4cab146..a096fde 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@utilitycss/utility", - "version": "0.6.1", + "version": "1.0.0", "description": "Generator for Utility CSS frameworks", "author": "Andrea Moretti (@axyz) ", "repository": "utilitycss/utility", From 5b86bdc2b0cd3a909bf6b29c131947027eb621c2 Mon Sep 17 00:00:00 2001 From: Sylvester Date: Sun, 14 Feb 2021 14:59:12 +0100 Subject: [PATCH 13/20] fix json diffing --- .../fixtures/expected-modules.json | 25393 ++-------------- __tests__/default-with-json/transform.test.ts | 30 +- package.json | 1 + yarn.lock | 58 + 4 files changed, 2825 insertions(+), 22657 deletions(-) diff --git a/__tests__/default-with-json/fixtures/expected-modules.json b/__tests__/default-with-json/fixtures/expected-modules.json index a858c3c..c620eb8 100644 --- a/__tests__/default-with-json/fixtures/expected-modules.json +++ b/__tests__/default-with-json/fixtures/expected-modules.json @@ -1,22644 +1,2753 @@ - - - - - - Utility - - - - - - - - - -
-
- -
-
- -
-

Overview

- -

Documentation

- -
- -
-
- -

- Stats -

-

- Overview -

-
- - - - - - - - - - - - - - - - - - - -
SizeGzipped SizeRulesDeclarationsMedia queries
-

- 16KB -

-
-

- 2KB -

-
-

- 403 -

-
-

- 407 -

-
-

- 18 -

-
-
- -

- Selectors -

-
- - - - - - - - - - - - - - - - - - - - - -
TotalClassidPseudo ClassPseudo ElementSpecificity
-

- 403 -

-
-

- 403 -

-
-

- 0 -

-
-

- 0 -

-
-

- 0 -

-
-

- 10 -

-
-
- -

- Declarations -

-
- - - - - - - - - - - - - -
TotalUnique
-

- 407 -

-
-

- 196 -

-
-
- - -

- Series -

-

- Usage -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClassDescription
- - .f0 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .f1 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .f2 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .f3 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .f0-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .f1-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .f2-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .f3-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .f0-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .f1-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .f2-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .f3-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .f0-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .f1-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .f2-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .f3-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .lh0 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .lh1 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .lh2 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .lh3 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .lh0-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .lh1-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .lh2-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .lh3-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .lh0-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .lh1-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .lh2-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .lh3-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .lh0-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .lh1-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .lh2-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .lh3-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
-
-, -

- Single -

-

- Usage -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClassDescription
- - .error - - -
- Lorem Ipsum -
- - - [object Object],[object Object] - -
- - .error-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object],[object Object] - -
- - .error-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object],[object Object] - -
- - .error-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object],[object Object] - -
-
-, -

- Spacing -

-

- Usage -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClassDescription
- - .m0 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .m1 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .m2 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .m3 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ma - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .mt0 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .mt1 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .mt2 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .mt3 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .mta - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .mr0 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .mr1 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .mr2 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .mr3 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .mra - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .mb0 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .mb1 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .mb2 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .mb3 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .mba - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ml0 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ml1 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ml2 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ml3 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .mla - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .p0 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .p1 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .p2 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .p3 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .pt0 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .pt1 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .pt2 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .pt3 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .pr0 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .pr1 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .pr2 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .pr3 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .pb0 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .pb1 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .pb2 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .pb3 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .pl0 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .pl1 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .pl2 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .pl3 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .m0-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .m1-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .m2-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .m3-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .ma-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .mt0-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .mt1-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .mt2-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .mt3-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .mta-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .mr0-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .mr1-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .mr2-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .mr3-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .mra-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .mb0-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .mb1-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .mb2-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .mb3-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .mba-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .ml0-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .ml1-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .ml2-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .ml3-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .mla-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .p0-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .p1-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .p2-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .p3-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .pt0-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .pt1-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .pt2-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .pt3-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .pr0-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .pr1-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .pr2-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .pr3-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .pb0-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .pb1-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .pb2-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .pb3-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .pl0-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .pl1-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .pl2-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .pl3-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .m0-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .m1-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .m2-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .m3-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .ma-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .mt0-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .mt1-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .mt2-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .mt3-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .mta-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .mr0-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .mr1-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .mr2-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .mr3-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .mra-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .mb0-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .mb1-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .mb2-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .mb3-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .mba-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .ml0-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .ml1-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .ml2-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .ml3-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .mla-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .p0-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .p1-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .p2-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .p3-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .pt0-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .pt1-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .pt2-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .pt3-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .pr0-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .pr1-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .pr2-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .pr3-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .pb0-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .pb1-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .pb2-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .pb3-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .pl0-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .pl1-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .pl2-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .pl3-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .m0-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .m1-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .m2-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .m3-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .ma-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .mt0-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .mt1-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .mt2-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .mt3-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .mta-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .mr0-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .mr1-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .mr2-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .mr3-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .mra-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .mb0-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .mb1-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .mb2-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .mb3-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .mba-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .ml0-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .ml1-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .ml2-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .ml3-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .mla-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .p0-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .p1-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .p2-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .p3-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .pt0-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .pt1-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .pt2-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .pt3-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .pr0-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .pr1-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .pr2-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .pr3-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .pb0-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .pb1-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .pb2-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .pb3-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .pl0-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .pl1-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .pl2-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .pl3-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
-
-, -

- Custom module -

-

- Usage -

-
- - - - - - - - - - - - - - - -
ClassDescription
- - .custom - - -
- Lorem Ipsum -
- - - [object Object] - -
-
-, -

- Position -

-

- Usage -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClassDescription
- - .poss - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .posa - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .posr - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .posf - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .posstky - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ta - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ra - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ba - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .la - - -
- Lorem Ipsum -
- - - [object Object] - -
-
-, -

- Z-index -

-

- Usage -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClassDescription
- - .z0 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .z1 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .z2 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .z3 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .z4 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .z5 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .z999 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .z9999 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .zmax - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .zinitial - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .zinherit - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .zunset - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .za - - -
- Lorem Ipsum -
- - - [object Object] - -
-
-, -

- Float -

-

- Usage -

-
- - - - - - - - - - - - - - - - - - - - - - - - - -
ClassDescription
- - .fln - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fll - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .flr - - -
- Lorem Ipsum -
- - - [object Object] - -
-
-, -

- Clear -

-

- Usage -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClassDescription
- - .cln - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .cll - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .clr - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .clb - - -
- Lorem Ipsum -
- - - [object Object] - -
-
-, -

- Display -

-

- Usage -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClassDescription
- - .dn - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .db - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .df - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .dif - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .di - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .dib - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .dtb - - -
- Lorem Ipsum -
- - - [object Object] - -
-
-, -

- Visibility -

-

- Usage -

-
- - - - - - - - - - - - - - - - - - - - - - - - - -
ClassDescription
- - .vv - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .vh - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .vc - - -
- Lorem Ipsum -
- - - [object Object] - -
-
-, -

- Overflow -

-

- Usage -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClassDescription
- - .ovv - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ovh - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ovs - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ova - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ovxv - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ovxh - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ovxs - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ovxa - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ovyv - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ovyh - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ovys - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ovya - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ovsa - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ovss - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ovsp - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ovsm - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ovsmq - - -
- Lorem Ipsum -
- - - [object Object] - -
-
-, -

- Resize -

-

- Usage -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClassDescription
- - .rszn - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .rszb - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .rszh - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .rszv - - -
- Lorem Ipsum -
- - - [object Object] - -
-
-, -

- Cursor -

-

- Usage -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClassDescription
- - .cura - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .curd - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .curc - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .curha - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .curhe - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .curm - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .curp - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .curt - - -
- Lorem Ipsum -
- - - [object Object] - -
-
-, -

- Box-sizing -

-

- Usage -

-
- - - - - - - - - - - - - - - - - - - - -
ClassDescription
- - .bxzcb - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .bxzbb - - -
- Lorem Ipsum -
- - - [object Object] - -
-
-, -

- Width -

-

- Usage -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClassDescription
- - .w25 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .w50 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .w75 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .w100 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .wa - - - - - - [object Object] - -
- - .maw100 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .mawn - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .w25-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .w50-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .w75-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .w100-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .wa-ns - - - - -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .maw100-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .mawn-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .w25-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .w50-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .w75-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .w100-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .wa-m - - - - -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .maw100-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .mawn-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .w25-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .w50-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .w75-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .w100-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .wa-l - - - - -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .maw100-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .mawn-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
-
-, -

- Height -

-

- Usage -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClassDescription
- - .h25 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .h50 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .h75 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .h100 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .wa - - - - - - [object Object] - -
- - .mah100 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .mahn - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .h25-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .h50-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .h75-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .h100-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .wa-ns - - - - -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .mah100-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .mahn-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .h25-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .h50-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .h75-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .h100-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .wa-m - - - - -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .mah100-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .mahn-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .h25-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .h50-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .h75-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .h100-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .wa-l - - - - -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .mah100-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .mahn-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
-
-, -

- Typography -

-

- Usage -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClassDescription
- - .fwn - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fwb - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fwbr - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fwlr - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fsn - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fsi - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fso - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fvn - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fvsc - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .f0 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .f1 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .f2 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .f3 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .f4 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fzan - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ffs - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ffss - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ffc - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fff - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ffm - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ffa - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fft - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ffv - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fefn - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fefeg - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fefeb - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fefo - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fstn - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fstuc - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fstec - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fstc - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fstsc - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fstse - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fste - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fstee - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fstue - - -
- Lorem Ipsum -
- - - [object Object] - -
-
-, -

- Vertical-align -

-

- Usage -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClassDescription
- - .vasup - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .vat - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .vatt - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .vam - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .vabl - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .vab - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .vatb - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .vasub - - -
- Lorem Ipsum -
- - - [object Object] - -
-
-, -

- Text-align -

-

- Usage -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClassDescription
- - .tal - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .tac - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .tar - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .taj - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .tala - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .tall - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .talc - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .talr - - -
- Lorem Ipsum -
- - - [object Object] - -
-
-, -

- Text-decoration -

-

- Usage -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClassDescription
- - .tdn - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .tdu - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .tdo - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .tdl - - -
- Lorem Ipsum -
- - - [object Object] - -
-
-, -

- Text-transform -

-

- Usage -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClassDescription
- - .ttn - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ttc - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ttu - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ttl - - -
- Lorem Ipsum -
- - - [object Object] - -
-
- -
-
-
- - - diff --git a/__tests__/default-with-json/transform.test.ts b/__tests__/default-with-json/transform.test.ts index aacdbdc..272c405 100644 --- a/__tests__/default-with-json/transform.test.ts +++ b/__tests__/default-with-json/transform.test.ts @@ -4,6 +4,8 @@ import prettier from "prettier"; import * as assert from "assert"; import postcss from "postcss"; +// eslint-disable-next-line @typescript-eslint/no-var-requires +const assertDiff = require("assert-diff"); // eslint-disable-next-line @typescript-eslint/no-var-requires const prettydiff = require("prettydiff"); @@ -14,7 +16,7 @@ const plugins = [ docs({ output: path.join(__dirname, "./dist/docs.html"), }), - docs({ + json({ output: path.join(__dirname, "./dist/modules.json"), }), ]; @@ -39,9 +41,11 @@ describe("Default with json", () => { "utf-8" ); /** Read the expected JSON file from fixtures */ - const expectedJSON = await fsAsync.readFile( - path.join(__dirname, "./fixtures/expected-modules.json"), - "utf-8" + const expectedJSON = JSON.parse( + await fsAsync.readFile( + path.join(__dirname, "./fixtures/expected-modules.json"), + "utf-8" + ) ); //* Read the input css file */ @@ -73,9 +77,11 @@ describe("Default with json", () => { "utf-8" ); - const generateJSON = await fsAsync.readFile( - path.join(__dirname, "./dist/modules.json"), - "utf-8" + const generateJSON = JSON.parse( + await fsAsync.readFile( + path.join(__dirname, "./dist/modules.json"), + "utf-8" + ) ); /** Get the diff of HTML */ @@ -85,19 +91,13 @@ describe("Default with json", () => { diff: generateHTML, lang: "html", }); - /** Get the diff of JSON */ - const jsonDiffOutput = prettydiff({ - source: expectedJSON, - mode: "diff", - diff: generateJSON, - lang: "json", - }); + /** Check the transformed file with the expected file */ assert.strictEqual(generatedCss, expectedCss); /** Check if the length of diff is zero */ assert.strictEqual(htmlDiffOutput.length, 0); /** Check if the length of diff is zero */ - assert.strictEqual(jsonDiffOutput.length, 0); + assertDiff.deepEqual(expectedJSON, generateJSON); }); }); diff --git a/package.json b/package.json index a096fde..88d4ed4 100644 --- a/package.json +++ b/package.json @@ -33,6 +33,7 @@ "@typescript-eslint/eslint-plugin": "^4.15.0", "@typescript-eslint/parser": "^4.15.0", "assert": "^2.0.0", + "assert-diff": "^3.0.2", "babel-eslint": "^10.1.0", "chalk": "^4.1.0", "copyfiles": "^2.4.1", diff --git a/yarn.lock b/yarn.lock index facd093..efc2010 100644 --- a/yarn.lock +++ b/yarn.lock @@ -410,6 +410,19 @@ array.prototype.flat@^1.2.3: define-properties "^1.1.3" es-abstract "^1.17.0-next.1" +assert-diff@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/assert-diff/-/assert-diff-3.0.2.tgz#3e92ae3f9663fdc46abe163e2aa209f371a318bc" + integrity sha512-3FaXH0uQeMcFpVTcFjOsd6GQdiGgDoy7BYu/HEj/YZ+bjgZLC/i8nSIgerlUbY+iyoCKdEdjzYyNO9BUPcwUmA== + dependencies: + assert-plus "1.0.0" + json-diff "0.5.4" + +assert-plus@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + assert@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/assert/-/assert-2.0.0.tgz#95fc1c616d48713510680f2eaf2d10dd22e02d32" @@ -549,6 +562,13 @@ clean-stack@^2.0.0: resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== +cli-color@~0.1.6: + version "0.1.7" + resolved "https://registry.yarnpkg.com/cli-color/-/cli-color-0.1.7.tgz#adc3200fa471cc211b0da7f566b71e98b9d67347" + integrity sha1-rcMgD6RxzCEbDaf1ZrcemLnWc0c= + dependencies: + es5-ext "0.8.x" + cli-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" @@ -817,6 +837,13 @@ diff@^4.0.1: resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== +difflib@~0.2.1: + version "0.2.4" + resolved "https://registry.yarnpkg.com/difflib/-/difflib-0.2.4.tgz#b5e30361a6db023176d562892db85940a718f47e" + integrity sha1-teMDYabbAjF21WKJLbhZQKcY9H4= + dependencies: + heap ">= 0.2.0" + dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -839,6 +866,13 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" +dreamopt@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/dreamopt/-/dreamopt-0.6.0.tgz#d813ccdac8d39d8ad526775514a13dda664d6b4b" + integrity sha1-2BPM2sjTnYrVJndVFKE92mZNa0s= + dependencies: + wordwrap ">=0.0.2" + duplexer@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" @@ -914,6 +948,11 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" +es5-ext@0.8.x: + version "0.8.2" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.8.2.tgz#aba8d9e1943a895ac96837a62a39b3f55ecd94ab" + integrity sha1-q6jZ4ZQ6iVrJaDemKjmz9V7NlKs= + es6-object-assign@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c" @@ -1475,6 +1514,11 @@ he@1.2.0: resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== +"heap@>= 0.2.0": + version "0.2.6" + resolved "https://registry.yarnpkg.com/heap/-/heap-0.2.6.tgz#087e1f10b046932fc8594dd9e6d378afc9d1e5ac" + integrity sha1-CH4fELBGky/IWU3Z5tN4r8nR5aw= + hex-color-regex@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" @@ -1824,6 +1868,15 @@ jsesc@^2.5.1: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== +json-diff@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/json-diff/-/json-diff-0.5.4.tgz#7bc8198c441756632aab66c7d9189d365a7a035a" + integrity sha512-q5Xmx9QXNOzOzIlMoYtLrLiu4Jl/Ce2bn0CNcv54PhyH89CI4GWlGVDye8ei2Ijt9R3U+vsWPsXpLUNob8bs8Q== + dependencies: + cli-color "~0.1.6" + difflib "~0.2.1" + dreamopt "~0.6.0" + json-parse-better-errors@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" @@ -3102,6 +3155,11 @@ word-wrap@^1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== +wordwrap@>=0.0.2: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= + workerpool@6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.1.0.tgz#a8e038b4c94569596852de7a8ea4228eefdeb37b" From a15812580d6b58f744035e00accf361bd83622af Mon Sep 17 00:00:00 2001 From: Sylvester Date: Sun, 14 Feb 2021 15:00:07 +0100 Subject: [PATCH 14/20] rename test folders --- .../fixtures/expected-docs.html | 0 .../fixtures/expected.css | 0 __tests__/{default-with-docs => all-defaults-with-docs}/main.css | 0 .../transform.test.ts | 0 .../fixtures/expected-docs.html | 0 .../fixtures/expected-modules.json | 0 .../fixtures/expected.css | 0 __tests__/{default-with-json => all-defaults-with-json}/main.css | 0 .../transform.test.ts | 0 9 files changed, 0 insertions(+), 0 deletions(-) rename __tests__/{default-with-docs => all-defaults-with-docs}/fixtures/expected-docs.html (100%) rename __tests__/{default-with-docs => all-defaults-with-docs}/fixtures/expected.css (100%) rename __tests__/{default-with-docs => all-defaults-with-docs}/main.css (100%) rename __tests__/{default-with-docs => all-defaults-with-docs}/transform.test.ts (100%) rename __tests__/{default-with-json => all-defaults-with-json}/fixtures/expected-docs.html (100%) rename __tests__/{default-with-json => all-defaults-with-json}/fixtures/expected-modules.json (100%) rename __tests__/{default-with-json => all-defaults-with-json}/fixtures/expected.css (100%) rename __tests__/{default-with-json => all-defaults-with-json}/main.css (100%) rename __tests__/{default-with-json => all-defaults-with-json}/transform.test.ts (100%) diff --git a/__tests__/default-with-docs/fixtures/expected-docs.html b/__tests__/all-defaults-with-docs/fixtures/expected-docs.html similarity index 100% rename from __tests__/default-with-docs/fixtures/expected-docs.html rename to __tests__/all-defaults-with-docs/fixtures/expected-docs.html diff --git a/__tests__/default-with-docs/fixtures/expected.css b/__tests__/all-defaults-with-docs/fixtures/expected.css similarity index 100% rename from __tests__/default-with-docs/fixtures/expected.css rename to __tests__/all-defaults-with-docs/fixtures/expected.css diff --git a/__tests__/default-with-docs/main.css b/__tests__/all-defaults-with-docs/main.css similarity index 100% rename from __tests__/default-with-docs/main.css rename to __tests__/all-defaults-with-docs/main.css diff --git a/__tests__/default-with-docs/transform.test.ts b/__tests__/all-defaults-with-docs/transform.test.ts similarity index 100% rename from __tests__/default-with-docs/transform.test.ts rename to __tests__/all-defaults-with-docs/transform.test.ts diff --git a/__tests__/default-with-json/fixtures/expected-docs.html b/__tests__/all-defaults-with-json/fixtures/expected-docs.html similarity index 100% rename from __tests__/default-with-json/fixtures/expected-docs.html rename to __tests__/all-defaults-with-json/fixtures/expected-docs.html diff --git a/__tests__/default-with-json/fixtures/expected-modules.json b/__tests__/all-defaults-with-json/fixtures/expected-modules.json similarity index 100% rename from __tests__/default-with-json/fixtures/expected-modules.json rename to __tests__/all-defaults-with-json/fixtures/expected-modules.json diff --git a/__tests__/default-with-json/fixtures/expected.css b/__tests__/all-defaults-with-json/fixtures/expected.css similarity index 100% rename from __tests__/default-with-json/fixtures/expected.css rename to __tests__/all-defaults-with-json/fixtures/expected.css diff --git a/__tests__/default-with-json/main.css b/__tests__/all-defaults-with-json/main.css similarity index 100% rename from __tests__/default-with-json/main.css rename to __tests__/all-defaults-with-json/main.css diff --git a/__tests__/default-with-json/transform.test.ts b/__tests__/all-defaults-with-json/transform.test.ts similarity index 100% rename from __tests__/default-with-json/transform.test.ts rename to __tests__/all-defaults-with-json/transform.test.ts From b3da46e757a9fe2fd10f21426e1e597abaf546fe Mon Sep 17 00:00:00 2001 From: Sylvester Date: Sun, 14 Feb 2021 20:49:57 +0100 Subject: [PATCH 15/20] add test for custom config --- __tests__/custom-config/config.ts | 125 + .../custom-config/fixtures/expected-docs.html | 14979 ++++++++++++++++ .../fixtures/expected-modules.json | 496 + __tests__/custom-config/fixtures/expected.css | 335 + __tests__/custom-config/main.css | 1 + __tests__/custom-config/transform.test.ts | 87 + src/types.ts | 2 +- 7 files changed, 16024 insertions(+), 1 deletion(-) create mode 100644 __tests__/custom-config/config.ts create mode 100644 __tests__/custom-config/fixtures/expected-docs.html create mode 100644 __tests__/custom-config/fixtures/expected-modules.json create mode 100644 __tests__/custom-config/fixtures/expected.css create mode 100644 __tests__/custom-config/main.css create mode 100644 __tests__/custom-config/transform.test.ts diff --git a/__tests__/custom-config/config.ts b/__tests__/custom-config/config.ts new file mode 100644 index 0000000..29a32f4 --- /dev/null +++ b/__tests__/custom-config/config.ts @@ -0,0 +1,125 @@ +import path from "path"; +import { plugins, modules } from "../../src/index"; +import { PluginConfig } from "../../src/types"; + +const { docs, json } = plugins; +const { font, colors, border, boxShadow } = modules; + +const breakPoints = { + s: "screen and (min-width: 48rem)", + m: "screen and (min-width: 48rem) and (max-width: 80rem)", + l: "screen and (min-width: 80rem)", +}; + +const configPlugins = [ + json({ + output: path.join(__dirname, "/dist/modules.json"), + }), + docs({ + output: path.join(__dirname, "/dist/docs.html"), + openFile: true, + }), +]; + +const configModules = [ + boxShadow({ + names: { + "bxsh:n": "boxShadowNone", + bxsh: "boxShadow", + }, + boxShadowValues: { + xs: "0 0 0 1px rgba(0, 0, 0, 0.05)", + inner: "inset 0 2px 4px 0 rgba(0, 0, 0, 0.06)", + }, + whitelist: ["bxsh:n", "bxsh"], + }), + border({ + names: { + "bd:w": "borderWidth", + "bd:s": "borderStyle", + "bd:n": "borderNone", + }, + whitelist: ["bd:w", "bd:s", "bd:n"], + borderStyleValues: ["solid", "dotted"], + borderWidthValues: ["1px", "2px"], + pseudoClasses: { "bd:n": [":hover"] }, + isResponsive: true, + responsiveWhiteList: ["bd:n"], + }), + font({ + names: { fz: "f" }, + whitelist: ["fw:b", "fz", "ff"], + fontSizeValues: [ + "0.875rem", + "1rem", + "1.125rem", + "1.25rem", + "1.375rem", + "1.5rem", + "1.625rem", + "1.75rem", + "1.875rem", + "2rem", + ], + isResponsive: true, + }), + colors({ + nestedRules: { + ".dark {}": { + whitelist: ["c"], + isResponsive: true, + colorValues: { + black: "#ffffff", + white: "#1a1a1a", + }, + }, + "@media foo": { + whitelist: ["c"], + colorValues: { + black: "#ffffff", + white: "#1a1a1a", + }, + }, + }, + whitelist: ["c", "bgc", "bdc"], + pseudoClasses: { c: [":hover"], bgc: [":hover", ":active"] }, + colorValues: { + orange: "#ff6900", + black: "#1a1a1a", + white: "#ffffff", + grey: "#777777", + grey2: "#a5a5a5", + grey3: "#dddddd", + red: "#ce3535", + green: "#0f7e4a", + blue: "#0062b4", + }, + backgroundColorValues: { + white: "#f3f3f3", + pink: "#fde5e5", + green: "#e0f3ea", + yellow: "#fffdc0", + }, + borderColorValues: { + orange: "#ff6900", + black: "#1a1a1a", + white: "#ffffff", + grey: "#a5a5a5", + green: "#0f7e4a", + red: "#ce3535", + }, + }), +]; + +const moduleConfig: PluginConfig = { + config: { + breakPoints, + seriesSeparator: "", + breakPointSeparator: "_", + pseudoClassesSeparator: "_", + }, + plugins: configPlugins, + modules: configModules, +}; + +export default moduleConfig; diff --git a/__tests__/custom-config/fixtures/expected-docs.html b/__tests__/custom-config/fixtures/expected-docs.html new file mode 100644 index 0000000..17a1892 --- /dev/null +++ b/__tests__/custom-config/fixtures/expected-docs.html @@ -0,0 +1,14979 @@ + + + + + + Utility + + + + + + + + + +
+
+ +
+
+ +
+

Overview

+ +

Documentation

+ +
+ +
+
+ +

+ Stats +

+

+ Overview +

+
+ + + + + + + + + + + + + + + + + + + +
SizeGzipped SizeRulesDeclarationsMedia queries
+

+ 5KB +

+
+

+ 813B +

+
+

+ 105 +

+
+

+ 105 +

+
+

+ 10 +

+
+
+ +

+ Selectors +

+
+ + + + + + + + + + + + + + + + + + + + + +
TotalClassidPseudo ClassPseudo ElementSpecificity
+

+ 105 +

+
+

+ 105 +

+
+

+ 0 +

+
+

+ 21 +

+
+

+ 0 +

+
+

+ 13 +

+
+
+ +

+ Declarations +

+
+ + + + + + + + + + + + + +
TotalUnique
+

+ 105 +

+
+

+ 38 +

+
+
+ + +

+ Box-shadow +

+

+ Usage +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ + .boxShadowNone + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .boxShadowxs + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .boxShadowinner + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+
+, +

+ Border +

+

+ Usage +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ + .borderNone + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .borderNone_hover:hover + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .borderWidth0 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .borderWidth1 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .borderStyle0 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .borderStyle1 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .borderNone_s + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 48rem) +

+ + + [object Object] + +
+ + .borderNone_hover_s:hover + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 48rem) +

+ + + [object Object] + +
+ + .borderNone_m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 48rem) and (max-width: 80rem) +

+ + + [object Object] + +
+ + .borderNone_hover_m:hover + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 48rem) and (max-width: 80rem) +

+ + + [object Object] + +
+ + .borderNone_l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 80rem) +

+ + + [object Object] + +
+ + .borderNone_hover_l:hover + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 80rem) +

+ + + [object Object] + +
+
+, +

+ Font +

+

+ Usage +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ + .fwb + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .f0 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .f1 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .f2 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .f3 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .f4 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .f5 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .f6 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .f7 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .f8 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .f9 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .fwb_s + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 48rem) +

+ + + [object Object] + +
+ + .f0_s + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 48rem) +

+ + + [object Object] + +
+ + .f1_s + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 48rem) +

+ + + [object Object] + +
+ + .f2_s + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 48rem) +

+ + + [object Object] + +
+ + .f3_s + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 48rem) +

+ + + [object Object] + +
+ + .f4_s + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 48rem) +

+ + + [object Object] + +
+ + .f5_s + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 48rem) +

+ + + [object Object] + +
+ + .f6_s + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 48rem) +

+ + + [object Object] + +
+ + .f7_s + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 48rem) +

+ + + [object Object] + +
+ + .f8_s + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 48rem) +

+ + + [object Object] + +
+ + .f9_s + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 48rem) +

+ + + [object Object] + +
+ + .fwb_m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 48rem) and (max-width: 80rem) +

+ + + [object Object] + +
+ + .f0_m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 48rem) and (max-width: 80rem) +

+ + + [object Object] + +
+ + .f1_m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 48rem) and (max-width: 80rem) +

+ + + [object Object] + +
+ + .f2_m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 48rem) and (max-width: 80rem) +

+ + + [object Object] + +
+ + .f3_m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 48rem) and (max-width: 80rem) +

+ + + [object Object] + +
+ + .f4_m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 48rem) and (max-width: 80rem) +

+ + + [object Object] + +
+ + .f5_m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 48rem) and (max-width: 80rem) +

+ + + [object Object] + +
+ + .f6_m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 48rem) and (max-width: 80rem) +

+ + + [object Object] + +
+ + .f7_m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 48rem) and (max-width: 80rem) +

+ + + [object Object] + +
+ + .f8_m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 48rem) and (max-width: 80rem) +

+ + + [object Object] + +
+ + .f9_m + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 48rem) and (max-width: 80rem) +

+ + + [object Object] + +
+ + .fwb_l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 80rem) +

+ + + [object Object] + +
+ + .f0_l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 80rem) +

+ + + [object Object] + +
+ + .f1_l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 80rem) +

+ + + [object Object] + +
+ + .f2_l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 80rem) +

+ + + [object Object] + +
+ + .f3_l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 80rem) +

+ + + [object Object] + +
+ + .f4_l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 80rem) +

+ + + [object Object] + +
+ + .f5_l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 80rem) +

+ + + [object Object] + +
+ + .f6_l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 80rem) +

+ + + [object Object] + +
+ + .f7_l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 80rem) +

+ + + [object Object] + +
+ + .f8_l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 80rem) +

+ + + [object Object] + +
+ + .f9_l + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + screen and (min-width: 80rem) +

+ + + [object Object] + +
+
+, +

+ Colors +

+

+ Usage +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ + .corange + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .cblack + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .cwhite + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .cgrey + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .cgrey2 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .cgrey3 + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .cred + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .cgreen + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .cblue + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .corange_hover:hover + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .cblack_hover:hover + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .cwhite_hover:hover + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .cgrey_hover:hover + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .cgrey2_hover:hover + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .cgrey3_hover:hover + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .cred_hover:hover + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .cgreen_hover:hover + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .cblue_hover:hover + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .bgcwhite + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .bgcpink + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .bgcgreen + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .bgcyellow + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .bgcwhite_hover:hover + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .bgcpink_hover:hover + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .bgcgreen_hover:hover + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .bgcyellow_hover:hover + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .bgcwhite_active:active + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .bgcpink_active:active + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .bgcgreen_active:active + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .bgcyellow_active:active + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .bdcorange + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .bdcblack + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .bdcwhite + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .bdcgrey + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .bdcgreen + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .bdcred + + +
+ Lorem Ipsum +
+ + + [object Object] + +
+ + .cblack + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + foo +

+ + + [object Object] + +
+ + .cwhite + + +
+ Lorem Ipsum +
+ +

+ + Breakpoint + + foo +

+ + + [object Object] + +
+
+ +
+
+
+ + + diff --git a/__tests__/custom-config/fixtures/expected-modules.json b/__tests__/custom-config/fixtures/expected-modules.json new file mode 100644 index 0000000..40871b3 --- /dev/null +++ b/__tests__/custom-config/fixtures/expected-modules.json @@ -0,0 +1,496 @@ +{ + "box-shadow": { + "meta": { "module": "box-shadow", "id": "bxsh:n" }, + "nodes": [ + { + "selector": ".boxShadowNone", + "nodes": [{ "prop": "box-shadow", "value": "none" }] + }, + { + "selector": ".boxShadowxs", + "nodes": [ + { "prop": "box-shadow", "value": "0 0 0 1px rgba(0, 0, 0, 0.05)" } + ] + }, + { + "selector": ".boxShadowinner", + "nodes": [ + { + "prop": "box-shadow", + "value": "inset 0 2px 4px 0 rgba(0, 0, 0, 0.06)" + } + ] + } + ] + }, + "border": { + "meta": { "module": "border", "id": "bd:n" }, + "nodes": [ + { + "selector": ".borderNone", + "nodes": [{ "prop": "border", "value": "none" }] + }, + { + "selector": ".borderNone_hover:hover", + "nodes": [{ "prop": "border", "value": "none" }] + }, + { + "selector": ".borderWidth0", + "nodes": [{ "prop": "border-width", "value": "1px" }] + }, + { + "selector": ".borderWidth1", + "nodes": [{ "prop": "border-width", "value": "2px" }] + }, + { + "selector": ".borderStyle0", + "nodes": [{ "prop": "border-style", "value": "solid" }] + }, + { + "selector": ".borderStyle1", + "nodes": [{ "prop": "border-style", "value": "dotted" }] + }, + { + "selector": ".borderNone_s", + "nodes": [{ "prop": "border", "value": "none" }], + "media": "screen and (min-width: 48rem)" + }, + { + "selector": ".borderNone_hover_s:hover", + "nodes": [{ "prop": "border", "value": "none" }], + "media": "screen and (min-width: 48rem)" + }, + { + "selector": ".borderNone_m", + "nodes": [{ "prop": "border", "value": "none" }], + "media": "screen and (min-width: 48rem) and (max-width: 80rem)" + }, + { + "selector": ".borderNone_hover_m:hover", + "nodes": [{ "prop": "border", "value": "none" }], + "media": "screen and (min-width: 48rem) and (max-width: 80rem)" + }, + { + "selector": ".borderNone_l", + "nodes": [{ "prop": "border", "value": "none" }], + "media": "screen and (min-width: 80rem)" + }, + { + "selector": ".borderNone_hover_l:hover", + "nodes": [{ "prop": "border", "value": "none" }], + "media": "screen and (min-width: 80rem)" + } + ] + }, + "font": { + "meta": { "module": "font", "id": "fw:b" }, + "nodes": [ + { + "selector": ".fwb", + "nodes": [{ "prop": "font-weight", "value": "bold" }] + }, + { + "selector": ".f0", + "nodes": [{ "prop": "font-size", "value": "0.875rem" }] + }, + { + "selector": ".f1", + "nodes": [{ "prop": "font-size", "value": "1rem" }] + }, + { + "selector": ".f2", + "nodes": [{ "prop": "font-size", "value": "1.125rem" }] + }, + { + "selector": ".f3", + "nodes": [{ "prop": "font-size", "value": "1.25rem" }] + }, + { + "selector": ".f4", + "nodes": [{ "prop": "font-size", "value": "1.375rem" }] + }, + { + "selector": ".f5", + "nodes": [{ "prop": "font-size", "value": "1.5rem" }] + }, + { + "selector": ".f6", + "nodes": [{ "prop": "font-size", "value": "1.625rem" }] + }, + { + "selector": ".f7", + "nodes": [{ "prop": "font-size", "value": "1.75rem" }] + }, + { + "selector": ".f8", + "nodes": [{ "prop": "font-size", "value": "1.875rem" }] + }, + { + "selector": ".f9", + "nodes": [{ "prop": "font-size", "value": "2rem" }] + }, + { + "selector": ".fwb_s", + "nodes": [{ "prop": "font-weight", "value": "bold" }], + "media": "screen and (min-width: 48rem)" + }, + { + "selector": ".f0_s", + "nodes": [{ "prop": "font-size", "value": "0.875rem" }], + "media": "screen and (min-width: 48rem)" + }, + { + "selector": ".f1_s", + "nodes": [{ "prop": "font-size", "value": "1rem" }], + "media": "screen and (min-width: 48rem)" + }, + { + "selector": ".f2_s", + "nodes": [{ "prop": "font-size", "value": "1.125rem" }], + "media": "screen and (min-width: 48rem)" + }, + { + "selector": ".f3_s", + "nodes": [{ "prop": "font-size", "value": "1.25rem" }], + "media": "screen and (min-width: 48rem)" + }, + { + "selector": ".f4_s", + "nodes": [{ "prop": "font-size", "value": "1.375rem" }], + "media": "screen and (min-width: 48rem)" + }, + { + "selector": ".f5_s", + "nodes": [{ "prop": "font-size", "value": "1.5rem" }], + "media": "screen and (min-width: 48rem)" + }, + { + "selector": ".f6_s", + "nodes": [{ "prop": "font-size", "value": "1.625rem" }], + "media": "screen and (min-width: 48rem)" + }, + { + "selector": ".f7_s", + "nodes": [{ "prop": "font-size", "value": "1.75rem" }], + "media": "screen and (min-width: 48rem)" + }, + { + "selector": ".f8_s", + "nodes": [{ "prop": "font-size", "value": "1.875rem" }], + "media": "screen and (min-width: 48rem)" + }, + { + "selector": ".f9_s", + "nodes": [{ "prop": "font-size", "value": "2rem" }], + "media": "screen and (min-width: 48rem)" + }, + { + "selector": ".fwb_m", + "nodes": [{ "prop": "font-weight", "value": "bold" }], + "media": "screen and (min-width: 48rem) and (max-width: 80rem)" + }, + { + "selector": ".f0_m", + "nodes": [{ "prop": "font-size", "value": "0.875rem" }], + "media": "screen and (min-width: 48rem) and (max-width: 80rem)" + }, + { + "selector": ".f1_m", + "nodes": [{ "prop": "font-size", "value": "1rem" }], + "media": "screen and (min-width: 48rem) and (max-width: 80rem)" + }, + { + "selector": ".f2_m", + "nodes": [{ "prop": "font-size", "value": "1.125rem" }], + "media": "screen and (min-width: 48rem) and (max-width: 80rem)" + }, + { + "selector": ".f3_m", + "nodes": [{ "prop": "font-size", "value": "1.25rem" }], + "media": "screen and (min-width: 48rem) and (max-width: 80rem)" + }, + { + "selector": ".f4_m", + "nodes": [{ "prop": "font-size", "value": "1.375rem" }], + "media": "screen and (min-width: 48rem) and (max-width: 80rem)" + }, + { + "selector": ".f5_m", + "nodes": [{ "prop": "font-size", "value": "1.5rem" }], + "media": "screen and (min-width: 48rem) and (max-width: 80rem)" + }, + { + "selector": ".f6_m", + "nodes": [{ "prop": "font-size", "value": "1.625rem" }], + "media": "screen and (min-width: 48rem) and (max-width: 80rem)" + }, + { + "selector": ".f7_m", + "nodes": [{ "prop": "font-size", "value": "1.75rem" }], + "media": "screen and (min-width: 48rem) and (max-width: 80rem)" + }, + { + "selector": ".f8_m", + "nodes": [{ "prop": "font-size", "value": "1.875rem" }], + "media": "screen and (min-width: 48rem) and (max-width: 80rem)" + }, + { + "selector": ".f9_m", + "nodes": [{ "prop": "font-size", "value": "2rem" }], + "media": "screen and (min-width: 48rem) and (max-width: 80rem)" + }, + { + "selector": ".fwb_l", + "nodes": [{ "prop": "font-weight", "value": "bold" }], + "media": "screen and (min-width: 80rem)" + }, + { + "selector": ".f0_l", + "nodes": [{ "prop": "font-size", "value": "0.875rem" }], + "media": "screen and (min-width: 80rem)" + }, + { + "selector": ".f1_l", + "nodes": [{ "prop": "font-size", "value": "1rem" }], + "media": "screen and (min-width: 80rem)" + }, + { + "selector": ".f2_l", + "nodes": [{ "prop": "font-size", "value": "1.125rem" }], + "media": "screen and (min-width: 80rem)" + }, + { + "selector": ".f3_l", + "nodes": [{ "prop": "font-size", "value": "1.25rem" }], + "media": "screen and (min-width: 80rem)" + }, + { + "selector": ".f4_l", + "nodes": [{ "prop": "font-size", "value": "1.375rem" }], + "media": "screen and (min-width: 80rem)" + }, + { + "selector": ".f5_l", + "nodes": [{ "prop": "font-size", "value": "1.5rem" }], + "media": "screen and (min-width: 80rem)" + }, + { + "selector": ".f6_l", + "nodes": [{ "prop": "font-size", "value": "1.625rem" }], + "media": "screen and (min-width: 80rem)" + }, + { + "selector": ".f7_l", + "nodes": [{ "prop": "font-size", "value": "1.75rem" }], + "media": "screen and (min-width: 80rem)" + }, + { + "selector": ".f8_l", + "nodes": [{ "prop": "font-size", "value": "1.875rem" }], + "media": "screen and (min-width: 80rem)" + }, + { + "selector": ".f9_l", + "nodes": [{ "prop": "font-size", "value": "2rem" }], + "media": "screen and (min-width: 80rem)" + } + ] + }, + "colors": { + "meta": { "module": "colors", "id": "c" }, + "nodes": [ + { + "selector": ".corange", + "nodes": [{ "prop": "color", "value": "#ff6900" }] + }, + { + "selector": ".cblack", + "nodes": [{ "prop": "color", "value": "#1a1a1a" }] + }, + { + "selector": ".cwhite", + "nodes": [{ "prop": "color", "value": "#ffffff" }] + }, + { + "selector": ".cgrey", + "nodes": [{ "prop": "color", "value": "#777777" }] + }, + { + "selector": ".cgrey2", + "nodes": [{ "prop": "color", "value": "#a5a5a5" }] + }, + { + "selector": ".cgrey3", + "nodes": [{ "prop": "color", "value": "#dddddd" }] + }, + { + "selector": ".cred", + "nodes": [{ "prop": "color", "value": "#ce3535" }] + }, + { + "selector": ".cgreen", + "nodes": [{ "prop": "color", "value": "#0f7e4a" }] + }, + { + "selector": ".cblue", + "nodes": [{ "prop": "color", "value": "#0062b4" }] + }, + { + "selector": ".corange_hover:hover", + "nodes": [{ "prop": "color", "value": "#ff6900" }] + }, + { + "selector": ".cblack_hover:hover", + "nodes": [{ "prop": "color", "value": "#1a1a1a" }] + }, + { + "selector": ".cwhite_hover:hover", + "nodes": [{ "prop": "color", "value": "#ffffff" }] + }, + { + "selector": ".cgrey_hover:hover", + "nodes": [{ "prop": "color", "value": "#777777" }] + }, + { + "selector": ".cgrey2_hover:hover", + "nodes": [{ "prop": "color", "value": "#a5a5a5" }] + }, + { + "selector": ".cgrey3_hover:hover", + "nodes": [{ "prop": "color", "value": "#dddddd" }] + }, + { + "selector": ".cred_hover:hover", + "nodes": [{ "prop": "color", "value": "#ce3535" }] + }, + { + "selector": ".cgreen_hover:hover", + "nodes": [{ "prop": "color", "value": "#0f7e4a" }] + }, + { + "selector": ".cblue_hover:hover", + "nodes": [{ "prop": "color", "value": "#0062b4" }] + }, + { + "selector": ".bgcwhite", + "nodes": [{ "prop": "background-color", "value": "#f3f3f3" }] + }, + { + "selector": ".bgcpink", + "nodes": [{ "prop": "background-color", "value": "#fde5e5" }] + }, + { + "selector": ".bgcgreen", + "nodes": [{ "prop": "background-color", "value": "#e0f3ea" }] + }, + { + "selector": ".bgcyellow", + "nodes": [{ "prop": "background-color", "value": "#fffdc0" }] + }, + { + "selector": ".bgcwhite_hover:hover", + "nodes": [{ "prop": "background-color", "value": "#f3f3f3" }] + }, + { + "selector": ".bgcpink_hover:hover", + "nodes": [{ "prop": "background-color", "value": "#fde5e5" }] + }, + { + "selector": ".bgcgreen_hover:hover", + "nodes": [{ "prop": "background-color", "value": "#e0f3ea" }] + }, + { + "selector": ".bgcyellow_hover:hover", + "nodes": [{ "prop": "background-color", "value": "#fffdc0" }] + }, + { + "selector": ".bgcwhite_active:active", + "nodes": [{ "prop": "background-color", "value": "#f3f3f3" }] + }, + { + "selector": ".bgcpink_active:active", + "nodes": [{ "prop": "background-color", "value": "#fde5e5" }] + }, + { + "selector": ".bgcgreen_active:active", + "nodes": [{ "prop": "background-color", "value": "#e0f3ea" }] + }, + { + "selector": ".bgcyellow_active:active", + "nodes": [{ "prop": "background-color", "value": "#fffdc0" }] + }, + { + "selector": ".bdcorange", + "nodes": [{ "prop": "border-color", "value": "#ff6900" }] + }, + { + "selector": ".bdcblack", + "nodes": [{ "prop": "border-color", "value": "#1a1a1a" }] + }, + { + "selector": ".bdcwhite", + "nodes": [{ "prop": "border-color", "value": "#ffffff" }] + }, + { + "selector": ".bdcgrey", + "nodes": [{ "prop": "border-color", "value": "#a5a5a5" }] + }, + { + "selector": ".bdcgreen", + "nodes": [{ "prop": "border-color", "value": "#0f7e4a" }] + }, + { + "selector": ".bdcred", + "nodes": [{ "prop": "border-color", "value": "#ce3535" }] + }, + { + "selector": ".dark .cblack", + "nodes": [{ "prop": "color", "value": "#ffffff" }] + }, + { + "selector": ".dark .cwhite", + "nodes": [{ "prop": "color", "value": "#1a1a1a" }] + }, + { + "selector": ".dark .cblack_s", + "nodes": [{ "prop": "color", "value": "#ffffff" }], + "media": "screen and (min-width: 48rem)" + }, + { + "selector": ".dark .cwhite_s", + "nodes": [{ "prop": "color", "value": "#1a1a1a" }], + "media": "screen and (min-width: 48rem)" + }, + { + "selector": ".dark .cblack_m", + "nodes": [{ "prop": "color", "value": "#ffffff" }], + "media": "screen and (min-width: 48rem) and (max-width: 80rem)" + }, + { + "selector": ".dark .cwhite_m", + "nodes": [{ "prop": "color", "value": "#1a1a1a" }], + "media": "screen and (min-width: 48rem) and (max-width: 80rem)" + }, + { + "selector": ".dark .cblack_l", + "nodes": [{ "prop": "color", "value": "#ffffff" }], + "media": "screen and (min-width: 80rem)" + }, + { + "selector": ".dark .cwhite_l", + "nodes": [{ "prop": "color", "value": "#1a1a1a" }], + "media": "screen and (min-width: 80rem)" + }, + { + "selector": ".cblack", + "nodes": [{ "prop": "color", "value": "#ffffff" }], + "media": "foo" + }, + { + "selector": ".cwhite", + "nodes": [{ "prop": "color", "value": "#1a1a1a" }], + "media": "foo" + } + ] + } +} diff --git a/__tests__/custom-config/fixtures/expected.css b/__tests__/custom-config/fixtures/expected.css new file mode 100644 index 0000000..93762c3 --- /dev/null +++ b/__tests__/custom-config/fixtures/expected.css @@ -0,0 +1,335 @@ +.boxShadowNone { + box-shadow: none; +} +.boxShadowxs { + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05); +} +.boxShadowinner { + box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.06); +} +.borderNone { + border: none; +} +.borderNone_hover:hover { + border: none; +} +.borderWidth0 { + border-width: 1px; +} +.borderWidth1 { + border-width: 2px; +} +.borderStyle0 { + border-style: solid; +} +.borderStyle1 { + border-style: dotted; +} +@media screen and (min-width: 48rem) { + .borderNone_s { + border: none; + } + .borderNone_hover_s:hover { + border: none; + } +} +@media screen and (min-width: 48rem) and (max-width: 80rem) { + .borderNone_m { + border: none; + } + .borderNone_hover_m:hover { + border: none; + } +} +@media screen and (min-width: 80rem) { + .borderNone_l { + border: none; + } + .borderNone_hover_l:hover { + border: none; + } +} +.fwb { + font-weight: bold; +} +.f0 { + font-size: 0.875rem; +} +.f1 { + font-size: 1rem; +} +.f2 { + font-size: 1.125rem; +} +.f3 { + font-size: 1.25rem; +} +.f4 { + font-size: 1.375rem; +} +.f5 { + font-size: 1.5rem; +} +.f6 { + font-size: 1.625rem; +} +.f7 { + font-size: 1.75rem; +} +.f8 { + font-size: 1.875rem; +} +.f9 { + font-size: 2rem; +} +@media screen and (min-width: 48rem) { + .fwb_s { + font-weight: bold; + } + .f0_s { + font-size: 0.875rem; + } + .f1_s { + font-size: 1rem; + } + .f2_s { + font-size: 1.125rem; + } + .f3_s { + font-size: 1.25rem; + } + .f4_s { + font-size: 1.375rem; + } + .f5_s { + font-size: 1.5rem; + } + .f6_s { + font-size: 1.625rem; + } + .f7_s { + font-size: 1.75rem; + } + .f8_s { + font-size: 1.875rem; + } + .f9_s { + font-size: 2rem; + } +} +@media screen and (min-width: 48rem) and (max-width: 80rem) { + .fwb_m { + font-weight: bold; + } + .f0_m { + font-size: 0.875rem; + } + .f1_m { + font-size: 1rem; + } + .f2_m { + font-size: 1.125rem; + } + .f3_m { + font-size: 1.25rem; + } + .f4_m { + font-size: 1.375rem; + } + .f5_m { + font-size: 1.5rem; + } + .f6_m { + font-size: 1.625rem; + } + .f7_m { + font-size: 1.75rem; + } + .f8_m { + font-size: 1.875rem; + } + .f9_m { + font-size: 2rem; + } +} +@media screen and (min-width: 80rem) { + .fwb_l { + font-weight: bold; + } + .f0_l { + font-size: 0.875rem; + } + .f1_l { + font-size: 1rem; + } + .f2_l { + font-size: 1.125rem; + } + .f3_l { + font-size: 1.25rem; + } + .f4_l { + font-size: 1.375rem; + } + .f5_l { + font-size: 1.5rem; + } + .f6_l { + font-size: 1.625rem; + } + .f7_l { + font-size: 1.75rem; + } + .f8_l { + font-size: 1.875rem; + } + .f9_l { + font-size: 2rem; + } +} +.corange { + color: #ff6900; +} +.cblack { + color: #1a1a1a; +} +.cwhite { + color: #ffffff; +} +.cgrey { + color: #777777; +} +.cgrey2 { + color: #a5a5a5; +} +.cgrey3 { + color: #dddddd; +} +.cred { + color: #ce3535; +} +.cgreen { + color: #0f7e4a; +} +.cblue { + color: #0062b4; +} +.corange_hover:hover { + color: #ff6900; +} +.cblack_hover:hover { + color: #1a1a1a; +} +.cwhite_hover:hover { + color: #ffffff; +} +.cgrey_hover:hover { + color: #777777; +} +.cgrey2_hover:hover { + color: #a5a5a5; +} +.cgrey3_hover:hover { + color: #dddddd; +} +.cred_hover:hover { + color: #ce3535; +} +.cgreen_hover:hover { + color: #0f7e4a; +} +.cblue_hover:hover { + color: #0062b4; +} +.bgcwhite { + background-color: #f3f3f3; +} +.bgcpink { + background-color: #fde5e5; +} +.bgcgreen { + background-color: #e0f3ea; +} +.bgcyellow { + background-color: #fffdc0; +} +.bgcwhite_hover:hover { + background-color: #f3f3f3; +} +.bgcpink_hover:hover { + background-color: #fde5e5; +} +.bgcgreen_hover:hover { + background-color: #e0f3ea; +} +.bgcyellow_hover:hover { + background-color: #fffdc0; +} +.bgcwhite_active:active { + background-color: #f3f3f3; +} +.bgcpink_active:active { + background-color: #fde5e5; +} +.bgcgreen_active:active { + background-color: #e0f3ea; +} +.bgcyellow_active:active { + background-color: #fffdc0; +} +.bdcorange { + border-color: #ff6900; +} +.bdcblack { + border-color: #1a1a1a; +} +.bdcwhite { + border-color: #ffffff; +} +.bdcgrey { + border-color: #a5a5a5; +} +.bdcgreen { + border-color: #0f7e4a; +} +.bdcred { + border-color: #ce3535; +} +.dark .cblack { + color: #ffffff; +} +.dark .cwhite { + color: #1a1a1a; +} +@media screen and (min-width: 48rem) { + .dark .cblack_s { + color: #ffffff; + } + .dark .cwhite_s { + color: #1a1a1a; + } +} +@media screen and (min-width: 48rem) and (max-width: 80rem) { + .dark .cblack_m { + color: #ffffff; + } + .dark .cwhite_m { + color: #1a1a1a; + } +} +@media screen and (min-width: 80rem) { + .dark .cblack_l { + color: #ffffff; + } + .dark .cwhite_l { + color: #1a1a1a; + } +} +@media foo { + .cblack { + color: #ffffff; + } + .cwhite { + color: #1a1a1a; + } +} diff --git a/__tests__/custom-config/main.css b/__tests__/custom-config/main.css new file mode 100644 index 0000000..b0e075d --- /dev/null +++ b/__tests__/custom-config/main.css @@ -0,0 +1 @@ +@utility; diff --git a/__tests__/custom-config/transform.test.ts b/__tests__/custom-config/transform.test.ts new file mode 100644 index 0000000..1833aad --- /dev/null +++ b/__tests__/custom-config/transform.test.ts @@ -0,0 +1,87 @@ +import path from "path"; +import { promises as fsAsync } from "fs"; +import prettier from "prettier"; +import * as assert from "assert"; +import postcss from "postcss"; + +// eslint-disable-next-line @typescript-eslint/no-var-requires +const assertDiff = require("assert-diff"); +// eslint-disable-next-line @typescript-eslint/no-var-requires +const prettydiff = require("prettydiff"); + +import utility from "../../src/index"; +import config from "./config"; + +describe("Custom config", () => { + it("should transform css for custom options", async () => { + /** Path to the input css file */ + const cssFilePath = path.join(__dirname, "./main.css"); + /** Dummy output file */ + const cssOutputFilePath = path.join(__dirname, "./main-out.css"); + /** Read the expected css file from fixtures */ + const expectedCss = await fsAsync + .readFile(path.join(__dirname, "./fixtures/expected.css"), "utf-8") + .then((data) => + prettier.format(data, { + parser: "css", + }) + ); + /** Read the expected HTML file from fixtures */ + const expectedHTML = await fsAsync.readFile( + path.join(__dirname, "./fixtures/expected-docs.html"), + "utf-8" + ); + /** Read the expected JSON file from fixtures */ + const expectedJSON = JSON.parse( + await fsAsync.readFile( + path.join(__dirname, "./fixtures/expected-modules.json"), + "utf-8" + ) + ); + + /* Read the input css file */ + const cssFile = await fsAsync.readFile( + path.join(__dirname, "./main.css"), + "utf-8" + ); + + /** Transform the css file */ + const generatedCss = await postcss([utility(config)]) + .process(cssFile, { + from: cssFilePath, + to: cssOutputFilePath, + }) + .then(({ css }) => + prettier.format(css, { + parser: "css", + }) + ); + + const generateHTML = await fsAsync.readFile( + path.join(__dirname, "./dist/docs.html"), + "utf-8" + ); + + const generateJSON = JSON.parse( + await fsAsync.readFile( + path.join(__dirname, "./dist/modules.json"), + "utf-8" + ) + ); + + /** Get the diff of HTML */ + const htmlDiffOutput = prettydiff({ + source: expectedHTML, + mode: "diff", + diff: generateHTML, + lang: "html", + }); + + /** Check the transformed file with the expected file */ + assert.strictEqual(generatedCss, expectedCss); + /** Check if the length of diff is zero */ + assert.strictEqual(htmlDiffOutput.length, 0); + /** Check if the length of diff is zero */ + assertDiff.deepEqual(expectedJSON, generateJSON); + }); +}); diff --git a/src/types.ts b/src/types.ts index 469e8b8..92a4d17 100644 --- a/src/types.ts +++ b/src/types.ts @@ -3,7 +3,7 @@ export type GenericObject = { [key in GenericObjectKeys]: string | number; }; -export type PseudoClass = ":hover" | ":focus"; +export type PseudoClass = ":hover" | ":focus" | ":active"; export type UtilityConfig = T & { names?: GenericObject; From 394dddad0f5399eec3aeb51b2391241cf22e6f1e Mon Sep 17 00:00:00 2001 From: Sylvester Date: Sun, 14 Feb 2021 21:21:00 +0100 Subject: [PATCH 16/20] add custom inline config test --- __tests__/custom-inline-config/config.ts | 125 + .../fixtures/expected-docs.html | 14024 ++++++++++++++++ .../fixtures/expected-modules.json | 216 + .../fixtures/expected.css | 138 + __tests__/custom-inline-config/main.css | 1 + .../custom-inline-config/module.config.js | 17 + .../custom-inline-config/transform.test.ts | 87 + example/example.css | 4 +- src/index.ts | 4 +- 9 files changed, 14613 insertions(+), 3 deletions(-) create mode 100644 __tests__/custom-inline-config/config.ts create mode 100644 __tests__/custom-inline-config/fixtures/expected-docs.html create mode 100644 __tests__/custom-inline-config/fixtures/expected-modules.json create mode 100644 __tests__/custom-inline-config/fixtures/expected.css create mode 100644 __tests__/custom-inline-config/main.css create mode 100644 __tests__/custom-inline-config/module.config.js create mode 100644 __tests__/custom-inline-config/transform.test.ts diff --git a/__tests__/custom-inline-config/config.ts b/__tests__/custom-inline-config/config.ts new file mode 100644 index 0000000..29a32f4 --- /dev/null +++ b/__tests__/custom-inline-config/config.ts @@ -0,0 +1,125 @@ +import path from "path"; +import { plugins, modules } from "../../src/index"; +import { PluginConfig } from "../../src/types"; + +const { docs, json } = plugins; +const { font, colors, border, boxShadow } = modules; + +const breakPoints = { + s: "screen and (min-width: 48rem)", + m: "screen and (min-width: 48rem) and (max-width: 80rem)", + l: "screen and (min-width: 80rem)", +}; + +const configPlugins = [ + json({ + output: path.join(__dirname, "/dist/modules.json"), + }), + docs({ + output: path.join(__dirname, "/dist/docs.html"), + openFile: true, + }), +]; + +const configModules = [ + boxShadow({ + names: { + "bxsh:n": "boxShadowNone", + bxsh: "boxShadow", + }, + boxShadowValues: { + xs: "0 0 0 1px rgba(0, 0, 0, 0.05)", + inner: "inset 0 2px 4px 0 rgba(0, 0, 0, 0.06)", + }, + whitelist: ["bxsh:n", "bxsh"], + }), + border({ + names: { + "bd:w": "borderWidth", + "bd:s": "borderStyle", + "bd:n": "borderNone", + }, + whitelist: ["bd:w", "bd:s", "bd:n"], + borderStyleValues: ["solid", "dotted"], + borderWidthValues: ["1px", "2px"], + pseudoClasses: { "bd:n": [":hover"] }, + isResponsive: true, + responsiveWhiteList: ["bd:n"], + }), + font({ + names: { fz: "f" }, + whitelist: ["fw:b", "fz", "ff"], + fontSizeValues: [ + "0.875rem", + "1rem", + "1.125rem", + "1.25rem", + "1.375rem", + "1.5rem", + "1.625rem", + "1.75rem", + "1.875rem", + "2rem", + ], + isResponsive: true, + }), + colors({ + nestedRules: { + ".dark {}": { + whitelist: ["c"], + isResponsive: true, + colorValues: { + black: "#ffffff", + white: "#1a1a1a", + }, + }, + "@media foo": { + whitelist: ["c"], + colorValues: { + black: "#ffffff", + white: "#1a1a1a", + }, + }, + }, + whitelist: ["c", "bgc", "bdc"], + pseudoClasses: { c: [":hover"], bgc: [":hover", ":active"] }, + colorValues: { + orange: "#ff6900", + black: "#1a1a1a", + white: "#ffffff", + grey: "#777777", + grey2: "#a5a5a5", + grey3: "#dddddd", + red: "#ce3535", + green: "#0f7e4a", + blue: "#0062b4", + }, + backgroundColorValues: { + white: "#f3f3f3", + pink: "#fde5e5", + green: "#e0f3ea", + yellow: "#fffdc0", + }, + borderColorValues: { + orange: "#ff6900", + black: "#1a1a1a", + white: "#ffffff", + grey: "#a5a5a5", + green: "#0f7e4a", + red: "#ce3535", + }, + }), +]; + +const moduleConfig: PluginConfig = { + config: { + breakPoints, + seriesSeparator: "", + breakPointSeparator: "_", + pseudoClassesSeparator: "_", + }, + plugins: configPlugins, + modules: configModules, +}; + +export default moduleConfig; diff --git a/__tests__/custom-inline-config/fixtures/expected-docs.html b/__tests__/custom-inline-config/fixtures/expected-docs.html new file mode 100644 index 0000000..78c5339 --- /dev/null +++ b/__tests__/custom-inline-config/fixtures/expected-docs.html @@ -0,0 +1,14024 @@ + + + + + Utility + + + + + + + +
+
+
+ +
+
+
+ +
+

Overview

+ +

Documentation

+ +
+ +
+
+ +

Stats

+

Overview

+
+ + + + + + + + + + + + + + + + + + + +
SizeGzipped SizeRulesDeclarationsMedia queries
+

2KB

+
+

305B

+
+

44

+
+

44

+
+

3

+
+
+ +

Selectors

+
+ + + + + + + + + + + + + + + + + + + + + +
TotalClassidPseudo ClassPseudo ElementSpecificity
+

44

+
+

44

+
+

0

+
+

0

+
+

0

+
+

10

+
+
+ +

Declarations

+
+ + + + + + + + + + + + + +
TotalUnique
+

44

+
+

11

+
+
+ + +

Font

+

Usage

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ClassDescription
+ .fwb + +
Lorem Ipsum
+ + [object Object] +
+ .f0 + +
Lorem Ipsum
+ + [object Object] +
+ .f1 + +
Lorem Ipsum
+ + [object Object] +
+ .f2 + +
Lorem Ipsum
+ + [object Object] +
+ .f3 + +
Lorem Ipsum
+ + [object Object] +
+ .f4 + +
Lorem Ipsum
+ + [object Object] +
+ .f5 + +
Lorem Ipsum
+ + [object Object] +
+ .f6 + +
Lorem Ipsum
+ + [object Object] +
+ .f7 + +
Lorem Ipsum
+ + [object Object] +
+ .f8 + +
Lorem Ipsum
+ + [object Object] +
+ .f9 + +
Lorem Ipsum
+ + [object Object] +
+ .fwb_s + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 48rem) +

+ + [object Object] +
+ .f0_s + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 48rem) +

+ + [object Object] +
+ .f1_s + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 48rem) +

+ + [object Object] +
+ .f2_s + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 48rem) +

+ + [object Object] +
+ .f3_s + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 48rem) +

+ + [object Object] +
+ .f4_s + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 48rem) +

+ + [object Object] +
+ .f5_s + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 48rem) +

+ + [object Object] +
+ .f6_s + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 48rem) +

+ + [object Object] +
+ .f7_s + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 48rem) +

+ + [object Object] +
+ .f8_s + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 48rem) +

+ + [object Object] +
+ .f9_s + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 48rem) +

+ + [object Object] +
+ .fwb_m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 48rem) and (max-width: 80rem) +

+ + [object Object] +
+ .f0_m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 48rem) and (max-width: 80rem) +

+ + [object Object] +
+ .f1_m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 48rem) and (max-width: 80rem) +

+ + [object Object] +
+ .f2_m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 48rem) and (max-width: 80rem) +

+ + [object Object] +
+ .f3_m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 48rem) and (max-width: 80rem) +

+ + [object Object] +
+ .f4_m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 48rem) and (max-width: 80rem) +

+ + [object Object] +
+ .f5_m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 48rem) and (max-width: 80rem) +

+ + [object Object] +
+ .f6_m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 48rem) and (max-width: 80rem) +

+ + [object Object] +
+ .f7_m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 48rem) and (max-width: 80rem) +

+ + [object Object] +
+ .f8_m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 48rem) and (max-width: 80rem) +

+ + [object Object] +
+ .f9_m + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 48rem) and (max-width: 80rem) +

+ + [object Object] +
+ .fwb_l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 80rem) +

+ + [object Object] +
+ .f0_l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 80rem) +

+ + [object Object] +
+ .f1_l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 80rem) +

+ + [object Object] +
+ .f2_l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 80rem) +

+ + [object Object] +
+ .f3_l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 80rem) +

+ + [object Object] +
+ .f4_l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 80rem) +

+ + [object Object] +
+ .f5_l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 80rem) +

+ + [object Object] +
+ .f6_l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 80rem) +

+ + [object Object] +
+ .f7_l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 80rem) +

+ + [object Object] +
+ .f8_l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 80rem) +

+ + [object Object] +
+ .f9_l + +
Lorem Ipsum
+ +

+ Breakpoint + screen and (min-width: 80rem) +

+ + [object Object] +
+
+
+
+
+ + diff --git a/__tests__/custom-inline-config/fixtures/expected-modules.json b/__tests__/custom-inline-config/fixtures/expected-modules.json new file mode 100644 index 0000000..e1cf623 --- /dev/null +++ b/__tests__/custom-inline-config/fixtures/expected-modules.json @@ -0,0 +1,216 @@ +{ + "font": { + "meta": { "module": "font", "id": "fw:b" }, + "nodes": [ + { + "selector": ".fwb", + "nodes": [{ "prop": "font-weight", "value": "bold" }] + }, + { + "selector": ".f0", + "nodes": [{ "prop": "font-size", "value": "0.875rem" }] + }, + { + "selector": ".f1", + "nodes": [{ "prop": "font-size", "value": "1rem" }] + }, + { + "selector": ".f2", + "nodes": [{ "prop": "font-size", "value": "1.125rem" }] + }, + { + "selector": ".f3", + "nodes": [{ "prop": "font-size", "value": "1.25rem" }] + }, + { + "selector": ".f4", + "nodes": [{ "prop": "font-size", "value": "1.375rem" }] + }, + { + "selector": ".f5", + "nodes": [{ "prop": "font-size", "value": "1.5rem" }] + }, + { + "selector": ".f6", + "nodes": [{ "prop": "font-size", "value": "1.625rem" }] + }, + { + "selector": ".f7", + "nodes": [{ "prop": "font-size", "value": "1.75rem" }] + }, + { + "selector": ".f8", + "nodes": [{ "prop": "font-size", "value": "1.875rem" }] + }, + { + "selector": ".f9", + "nodes": [{ "prop": "font-size", "value": "2rem" }] + }, + { + "selector": ".fwb_s", + "nodes": [{ "prop": "font-weight", "value": "bold" }], + "media": "screen and (min-width: 48rem)" + }, + { + "selector": ".f0_s", + "nodes": [{ "prop": "font-size", "value": "0.875rem" }], + "media": "screen and (min-width: 48rem)" + }, + { + "selector": ".f1_s", + "nodes": [{ "prop": "font-size", "value": "1rem" }], + "media": "screen and (min-width: 48rem)" + }, + { + "selector": ".f2_s", + "nodes": [{ "prop": "font-size", "value": "1.125rem" }], + "media": "screen and (min-width: 48rem)" + }, + { + "selector": ".f3_s", + "nodes": [{ "prop": "font-size", "value": "1.25rem" }], + "media": "screen and (min-width: 48rem)" + }, + { + "selector": ".f4_s", + "nodes": [{ "prop": "font-size", "value": "1.375rem" }], + "media": "screen and (min-width: 48rem)" + }, + { + "selector": ".f5_s", + "nodes": [{ "prop": "font-size", "value": "1.5rem" }], + "media": "screen and (min-width: 48rem)" + }, + { + "selector": ".f6_s", + "nodes": [{ "prop": "font-size", "value": "1.625rem" }], + "media": "screen and (min-width: 48rem)" + }, + { + "selector": ".f7_s", + "nodes": [{ "prop": "font-size", "value": "1.75rem" }], + "media": "screen and (min-width: 48rem)" + }, + { + "selector": ".f8_s", + "nodes": [{ "prop": "font-size", "value": "1.875rem" }], + "media": "screen and (min-width: 48rem)" + }, + { + "selector": ".f9_s", + "nodes": [{ "prop": "font-size", "value": "2rem" }], + "media": "screen and (min-width: 48rem)" + }, + { + "selector": ".fwb_m", + "nodes": [{ "prop": "font-weight", "value": "bold" }], + "media": "screen and (min-width: 48rem) and (max-width: 80rem)" + }, + { + "selector": ".f0_m", + "nodes": [{ "prop": "font-size", "value": "0.875rem" }], + "media": "screen and (min-width: 48rem) and (max-width: 80rem)" + }, + { + "selector": ".f1_m", + "nodes": [{ "prop": "font-size", "value": "1rem" }], + "media": "screen and (min-width: 48rem) and (max-width: 80rem)" + }, + { + "selector": ".f2_m", + "nodes": [{ "prop": "font-size", "value": "1.125rem" }], + "media": "screen and (min-width: 48rem) and (max-width: 80rem)" + }, + { + "selector": ".f3_m", + "nodes": [{ "prop": "font-size", "value": "1.25rem" }], + "media": "screen and (min-width: 48rem) and (max-width: 80rem)" + }, + { + "selector": ".f4_m", + "nodes": [{ "prop": "font-size", "value": "1.375rem" }], + "media": "screen and (min-width: 48rem) and (max-width: 80rem)" + }, + { + "selector": ".f5_m", + "nodes": [{ "prop": "font-size", "value": "1.5rem" }], + "media": "screen and (min-width: 48rem) and (max-width: 80rem)" + }, + { + "selector": ".f6_m", + "nodes": [{ "prop": "font-size", "value": "1.625rem" }], + "media": "screen and (min-width: 48rem) and (max-width: 80rem)" + }, + { + "selector": ".f7_m", + "nodes": [{ "prop": "font-size", "value": "1.75rem" }], + "media": "screen and (min-width: 48rem) and (max-width: 80rem)" + }, + { + "selector": ".f8_m", + "nodes": [{ "prop": "font-size", "value": "1.875rem" }], + "media": "screen and (min-width: 48rem) and (max-width: 80rem)" + }, + { + "selector": ".f9_m", + "nodes": [{ "prop": "font-size", "value": "2rem" }], + "media": "screen and (min-width: 48rem) and (max-width: 80rem)" + }, + { + "selector": ".fwb_l", + "nodes": [{ "prop": "font-weight", "value": "bold" }], + "media": "screen and (min-width: 80rem)" + }, + { + "selector": ".f0_l", + "nodes": [{ "prop": "font-size", "value": "0.875rem" }], + "media": "screen and (min-width: 80rem)" + }, + { + "selector": ".f1_l", + "nodes": [{ "prop": "font-size", "value": "1rem" }], + "media": "screen and (min-width: 80rem)" + }, + { + "selector": ".f2_l", + "nodes": [{ "prop": "font-size", "value": "1.125rem" }], + "media": "screen and (min-width: 80rem)" + }, + { + "selector": ".f3_l", + "nodes": [{ "prop": "font-size", "value": "1.25rem" }], + "media": "screen and (min-width: 80rem)" + }, + { + "selector": ".f4_l", + "nodes": [{ "prop": "font-size", "value": "1.375rem" }], + "media": "screen and (min-width: 80rem)" + }, + { + "selector": ".f5_l", + "nodes": [{ "prop": "font-size", "value": "1.5rem" }], + "media": "screen and (min-width: 80rem)" + }, + { + "selector": ".f6_l", + "nodes": [{ "prop": "font-size", "value": "1.625rem" }], + "media": "screen and (min-width: 80rem)" + }, + { + "selector": ".f7_l", + "nodes": [{ "prop": "font-size", "value": "1.75rem" }], + "media": "screen and (min-width: 80rem)" + }, + { + "selector": ".f8_l", + "nodes": [{ "prop": "font-size", "value": "1.875rem" }], + "media": "screen and (min-width: 80rem)" + }, + { + "selector": ".f9_l", + "nodes": [{ "prop": "font-size", "value": "2rem" }], + "media": "screen and (min-width: 80rem)" + } + ] + } +} diff --git a/__tests__/custom-inline-config/fixtures/expected.css b/__tests__/custom-inline-config/fixtures/expected.css new file mode 100644 index 0000000..a846211 --- /dev/null +++ b/__tests__/custom-inline-config/fixtures/expected.css @@ -0,0 +1,138 @@ +.fwb { + font-weight: bold; +} +.f0 { + font-size: 0.875rem; +} +.f1 { + font-size: 1rem; +} +.f2 { + font-size: 1.125rem; +} +.f3 { + font-size: 1.25rem; +} +.f4 { + font-size: 1.375rem; +} +.f5 { + font-size: 1.5rem; +} +.f6 { + font-size: 1.625rem; +} +.f7 { + font-size: 1.75rem; +} +.f8 { + font-size: 1.875rem; +} +.f9 { + font-size: 2rem; +} +@media screen and (min-width: 48rem) { + .fwb_s { + font-weight: bold; + } + .f0_s { + font-size: 0.875rem; + } + .f1_s { + font-size: 1rem; + } + .f2_s { + font-size: 1.125rem; + } + .f3_s { + font-size: 1.25rem; + } + .f4_s { + font-size: 1.375rem; + } + .f5_s { + font-size: 1.5rem; + } + .f6_s { + font-size: 1.625rem; + } + .f7_s { + font-size: 1.75rem; + } + .f8_s { + font-size: 1.875rem; + } + .f9_s { + font-size: 2rem; + } +} +@media screen and (min-width: 48rem) and (max-width: 80rem) { + .fwb_m { + font-weight: bold; + } + .f0_m { + font-size: 0.875rem; + } + .f1_m { + font-size: 1rem; + } + .f2_m { + font-size: 1.125rem; + } + .f3_m { + font-size: 1.25rem; + } + .f4_m { + font-size: 1.375rem; + } + .f5_m { + font-size: 1.5rem; + } + .f6_m { + font-size: 1.625rem; + } + .f7_m { + font-size: 1.75rem; + } + .f8_m { + font-size: 1.875rem; + } + .f9_m { + font-size: 2rem; + } +} +@media screen and (min-width: 80rem) { + .fwb_l { + font-weight: bold; + } + .f0_l { + font-size: 0.875rem; + } + .f1_l { + font-size: 1rem; + } + .f2_l { + font-size: 1.125rem; + } + .f3_l { + font-size: 1.25rem; + } + .f4_l { + font-size: 1.375rem; + } + .f5_l { + font-size: 1.5rem; + } + .f6_l { + font-size: 1.625rem; + } + .f7_l { + font-size: 1.75rem; + } + .f8_l { + font-size: 1.875rem; + } + .f9_l { + font-size: 2rem; + } +} diff --git a/__tests__/custom-inline-config/main.css b/__tests__/custom-inline-config/main.css new file mode 100644 index 0000000..0c5b869 --- /dev/null +++ b/__tests__/custom-inline-config/main.css @@ -0,0 +1 @@ +@utility font module.config.js; diff --git a/__tests__/custom-inline-config/module.config.js b/__tests__/custom-inline-config/module.config.js new file mode 100644 index 0000000..56a269e --- /dev/null +++ b/__tests__/custom-inline-config/module.config.js @@ -0,0 +1,17 @@ +module.exports = { + names: { fz: "f" }, + whitelist: ["fw:b", "fz", "ff"], + fontSizeValues: [ + "0.875rem", + "1rem", + "1.125rem", + "1.25rem", + "1.375rem", + "1.5rem", + "1.625rem", + "1.75rem", + "1.875rem", + "2rem", + ], + isResponsive: true, +}; diff --git a/__tests__/custom-inline-config/transform.test.ts b/__tests__/custom-inline-config/transform.test.ts new file mode 100644 index 0000000..34c663f --- /dev/null +++ b/__tests__/custom-inline-config/transform.test.ts @@ -0,0 +1,87 @@ +import path from "path"; +import { promises as fsAsync } from "fs"; +import prettier from "prettier"; +import * as assert from "assert"; +import postcss from "postcss"; + +// eslint-disable-next-line @typescript-eslint/no-var-requires +const assertDiff = require("assert-diff"); +// eslint-disable-next-line @typescript-eslint/no-var-requires +const prettydiff = require("prettydiff"); + +import utility from "../../src/index"; +import config from "./config"; + +describe("Custom inline config", () => { + it("should transform css for custom options", async () => { + /** Path to the input css file */ + const cssFilePath = path.join(__dirname, "./main.css"); + /** Dummy output file */ + const cssOutputFilePath = path.join(__dirname, "./main-out.css"); + /** Read the expected css file from fixtures */ + const expectedCss = await fsAsync + .readFile(path.join(__dirname, "./fixtures/expected.css"), "utf-8") + .then((data) => + prettier.format(data, { + parser: "css", + }) + ); + /** Read the expected HTML file from fixtures */ + const expectedHTML = await fsAsync.readFile( + path.join(__dirname, "./fixtures/expected-docs.html"), + "utf-8" + ); + /** Read the expected JSON file from fixtures */ + const expectedJSON = JSON.parse( + await fsAsync.readFile( + path.join(__dirname, "./fixtures/expected-modules.json"), + "utf-8" + ) + ); + + /* Read the input css file */ + const cssFile = await fsAsync.readFile( + path.join(__dirname, "./main.css"), + "utf-8" + ); + + /** Transform the css file */ + const generatedCss = await postcss([utility(config)]) + .process(cssFile, { + from: cssFilePath, + to: cssOutputFilePath, + }) + .then(({ css }) => + prettier.format(css, { + parser: "css", + }) + ); + + const generateHTML = await fsAsync.readFile( + path.join(__dirname, "./dist/docs.html"), + "utf-8" + ); + + const generateJSON = JSON.parse( + await fsAsync.readFile( + path.join(__dirname, "./dist/modules.json"), + "utf-8" + ) + ); + + /** Get the diff of HTML */ + const htmlDiffOutput = prettydiff({ + source: expectedHTML, + mode: "diff", + diff: generateHTML, + lang: "html", + }); + + /** Check the transformed file with the expected file */ + assert.strictEqual(generatedCss, expectedCss); + /** Check if the length of diff is zero */ + assert.strictEqual(htmlDiffOutput.length, 0); + /** Check if the length of diff is zero */ + assertDiff.deepEqual(expectedJSON, generateJSON); + }); +}); diff --git a/example/example.css b/example/example.css index f8647c0..b20015f 100644 --- a/example/example.css +++ b/example/example.css @@ -1,2 +1,2 @@ -/* @utility font module.config.js; */ -@utility; +@utility font module.config.js; +/* @utility; */ diff --git a/src/index.ts b/src/index.ts index 7f3ade0..75c4674 100644 --- a/src/index.ts +++ b/src/index.ts @@ -56,12 +56,14 @@ function utilityPlugin(config?: PluginConfig) { */ let moduleConfig = {}; const modulePath = moduleName - ? path.join(__dirname, `./modules/${moduleName}.js`) + ? require.resolve(path.join(__dirname, `./modules/${moduleName}`)) : ""; const moduleConfigPath = moduleConfigFile ? path.join(sourceDirname, moduleConfigFile) : ""; + console.log(modulePath, moduleName, path.resolve(modulePath)); + /** * Exit if the module name or * the provided module name is not supported From d377ac967b98eaf001aff6f22e0014d646e8aa7f Mon Sep 17 00:00:00 2001 From: Sylvester Date: Sun, 14 Feb 2021 21:34:20 +0100 Subject: [PATCH 17/20] update json file for alldefault with json --- .../fixtures/expected-docs.html | 22644 ---------------- .../fixtures/expected-modules.json | 1046 +- .../all-defaults-with-json/transform.test.ts | 24 - 3 files changed, 48 insertions(+), 23666 deletions(-) delete mode 100644 __tests__/all-defaults-with-json/fixtures/expected-docs.html diff --git a/__tests__/all-defaults-with-json/fixtures/expected-docs.html b/__tests__/all-defaults-with-json/fixtures/expected-docs.html deleted file mode 100644 index a858c3c..0000000 --- a/__tests__/all-defaults-with-json/fixtures/expected-docs.html +++ /dev/null @@ -1,22644 +0,0 @@ - - - - - - Utility - - - - - - - - - -
-
- -
-
- -
-

Overview

- -

Documentation

- -
- -
-
- -

- Stats -

-

- Overview -

-
- - - - - - - - - - - - - - - - - - - -
SizeGzipped SizeRulesDeclarationsMedia queries
-

- 16KB -

-
-

- 2KB -

-
-

- 403 -

-
-

- 407 -

-
-

- 18 -

-
-
- -

- Selectors -

-
- - - - - - - - - - - - - - - - - - - - - -
TotalClassidPseudo ClassPseudo ElementSpecificity
-

- 403 -

-
-

- 403 -

-
-

- 0 -

-
-

- 0 -

-
-

- 0 -

-
-

- 10 -

-
-
- -

- Declarations -

-
- - - - - - - - - - - - - -
TotalUnique
-

- 407 -

-
-

- 196 -

-
-
- - -

- Series -

-

- Usage -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClassDescription
- - .f0 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .f1 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .f2 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .f3 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .f0-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .f1-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .f2-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .f3-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .f0-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .f1-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .f2-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .f3-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .f0-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .f1-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .f2-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .f3-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .lh0 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .lh1 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .lh2 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .lh3 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .lh0-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .lh1-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .lh2-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .lh3-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .lh0-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .lh1-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .lh2-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .lh3-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .lh0-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .lh1-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .lh2-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .lh3-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
-
-, -

- Single -

-

- Usage -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClassDescription
- - .error - - -
- Lorem Ipsum -
- - - [object Object],[object Object] - -
- - .error-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object],[object Object] - -
- - .error-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object],[object Object] - -
- - .error-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object],[object Object] - -
-
-, -

- Spacing -

-

- Usage -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClassDescription
- - .m0 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .m1 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .m2 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .m3 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ma - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .mt0 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .mt1 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .mt2 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .mt3 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .mta - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .mr0 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .mr1 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .mr2 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .mr3 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .mra - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .mb0 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .mb1 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .mb2 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .mb3 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .mba - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ml0 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ml1 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ml2 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ml3 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .mla - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .p0 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .p1 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .p2 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .p3 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .pt0 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .pt1 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .pt2 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .pt3 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .pr0 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .pr1 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .pr2 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .pr3 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .pb0 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .pb1 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .pb2 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .pb3 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .pl0 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .pl1 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .pl2 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .pl3 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .m0-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .m1-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .m2-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .m3-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .ma-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .mt0-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .mt1-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .mt2-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .mt3-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .mta-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .mr0-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .mr1-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .mr2-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .mr3-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .mra-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .mb0-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .mb1-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .mb2-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .mb3-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .mba-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .ml0-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .ml1-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .ml2-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .ml3-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .mla-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .p0-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .p1-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .p2-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .p3-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .pt0-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .pt1-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .pt2-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .pt3-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .pr0-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .pr1-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .pr2-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .pr3-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .pb0-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .pb1-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .pb2-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .pb3-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .pl0-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .pl1-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .pl2-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .pl3-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .m0-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .m1-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .m2-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .m3-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .ma-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .mt0-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .mt1-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .mt2-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .mt3-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .mta-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .mr0-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .mr1-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .mr2-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .mr3-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .mra-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .mb0-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .mb1-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .mb2-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .mb3-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .mba-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .ml0-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .ml1-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .ml2-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .ml3-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .mla-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .p0-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .p1-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .p2-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .p3-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .pt0-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .pt1-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .pt2-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .pt3-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .pr0-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .pr1-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .pr2-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .pr3-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .pb0-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .pb1-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .pb2-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .pb3-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .pl0-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .pl1-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .pl2-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .pl3-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .m0-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .m1-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .m2-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .m3-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .ma-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .mt0-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .mt1-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .mt2-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .mt3-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .mta-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .mr0-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .mr1-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .mr2-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .mr3-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .mra-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .mb0-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .mb1-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .mb2-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .mb3-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .mba-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .ml0-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .ml1-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .ml2-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .ml3-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .mla-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .p0-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .p1-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .p2-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .p3-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .pt0-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .pt1-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .pt2-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .pt3-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .pr0-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .pr1-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .pr2-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .pr3-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .pb0-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .pb1-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .pb2-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .pb3-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .pl0-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .pl1-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .pl2-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .pl3-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
-
-, -

- Custom module -

-

- Usage -

-
- - - - - - - - - - - - - - - -
ClassDescription
- - .custom - - -
- Lorem Ipsum -
- - - [object Object] - -
-
-, -

- Position -

-

- Usage -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClassDescription
- - .poss - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .posa - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .posr - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .posf - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .posstky - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ta - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ra - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ba - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .la - - -
- Lorem Ipsum -
- - - [object Object] - -
-
-, -

- Z-index -

-

- Usage -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClassDescription
- - .z0 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .z1 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .z2 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .z3 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .z4 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .z5 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .z999 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .z9999 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .zmax - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .zinitial - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .zinherit - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .zunset - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .za - - -
- Lorem Ipsum -
- - - [object Object] - -
-
-, -

- Float -

-

- Usage -

-
- - - - - - - - - - - - - - - - - - - - - - - - - -
ClassDescription
- - .fln - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fll - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .flr - - -
- Lorem Ipsum -
- - - [object Object] - -
-
-, -

- Clear -

-

- Usage -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClassDescription
- - .cln - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .cll - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .clr - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .clb - - -
- Lorem Ipsum -
- - - [object Object] - -
-
-, -

- Display -

-

- Usage -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClassDescription
- - .dn - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .db - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .df - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .dif - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .di - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .dib - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .dtb - - -
- Lorem Ipsum -
- - - [object Object] - -
-
-, -

- Visibility -

-

- Usage -

-
- - - - - - - - - - - - - - - - - - - - - - - - - -
ClassDescription
- - .vv - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .vh - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .vc - - -
- Lorem Ipsum -
- - - [object Object] - -
-
-, -

- Overflow -

-

- Usage -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClassDescription
- - .ovv - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ovh - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ovs - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ova - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ovxv - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ovxh - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ovxs - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ovxa - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ovyv - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ovyh - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ovys - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ovya - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ovsa - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ovss - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ovsp - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ovsm - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ovsmq - - -
- Lorem Ipsum -
- - - [object Object] - -
-
-, -

- Resize -

-

- Usage -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClassDescription
- - .rszn - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .rszb - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .rszh - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .rszv - - -
- Lorem Ipsum -
- - - [object Object] - -
-
-, -

- Cursor -

-

- Usage -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClassDescription
- - .cura - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .curd - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .curc - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .curha - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .curhe - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .curm - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .curp - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .curt - - -
- Lorem Ipsum -
- - - [object Object] - -
-
-, -

- Box-sizing -

-

- Usage -

-
- - - - - - - - - - - - - - - - - - - - -
ClassDescription
- - .bxzcb - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .bxzbb - - -
- Lorem Ipsum -
- - - [object Object] - -
-
-, -

- Width -

-

- Usage -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClassDescription
- - .w25 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .w50 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .w75 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .w100 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .wa - - - - - - [object Object] - -
- - .maw100 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .mawn - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .w25-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .w50-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .w75-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .w100-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .wa-ns - - - - -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .maw100-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .mawn-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .w25-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .w50-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .w75-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .w100-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .wa-m - - - - -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .maw100-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .mawn-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .w25-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .w50-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .w75-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .w100-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .wa-l - - - - -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .maw100-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .mawn-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
-
-, -

- Height -

-

- Usage -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClassDescription
- - .h25 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .h50 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .h75 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .h100 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .wa - - - - - - [object Object] - -
- - .mah100 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .mahn - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .h25-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .h50-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .h75-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .h100-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .wa-ns - - - - -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .mah100-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .mahn-ns - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) -

- - - [object Object] - -
- - .h25-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .h50-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .h75-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .h100-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .wa-m - - - - -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .mah100-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .mahn-m - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 30em) and (max-width: 60em) -

- - - [object Object] - -
- - .h25-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .h50-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .h75-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .h100-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .wa-l - - - - -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .mah100-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
- - .mahn-l - - -
- Lorem Ipsum -
- -

- - Breakpoint - - screen and (min-width: 60em) -

- - - [object Object] - -
-
-, -

- Typography -

-

- Usage -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClassDescription
- - .fwn - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fwb - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fwbr - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fwlr - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fsn - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fsi - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fso - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fvn - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fvsc - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .f0 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .f1 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .f2 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .f3 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .f4 - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fzan - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ffs - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ffss - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ffc - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fff - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ffm - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ffa - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fft - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ffv - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fefn - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fefeg - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fefeb - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fefo - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fstn - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fstuc - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fstec - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fstc - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fstsc - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fstse - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fste - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fstee - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .fstue - - -
- Lorem Ipsum -
- - - [object Object] - -
-
-, -

- Vertical-align -

-

- Usage -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClassDescription
- - .vasup - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .vat - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .vatt - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .vam - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .vabl - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .vab - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .vatb - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .vasub - - -
- Lorem Ipsum -
- - - [object Object] - -
-
-, -

- Text-align -

-

- Usage -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClassDescription
- - .tal - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .tac - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .tar - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .taj - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .tala - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .tall - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .talc - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .talr - - -
- Lorem Ipsum -
- - - [object Object] - -
-
-, -

- Text-decoration -

-

- Usage -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClassDescription
- - .tdn - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .tdu - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .tdo - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .tdl - - -
- Lorem Ipsum -
- - - [object Object] - -
-
-, -

- Text-transform -

-

- Usage -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClassDescription
- - .ttn - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ttc - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ttu - - -
- Lorem Ipsum -
- - - [object Object] - -
- - .ttl - - -
- Lorem Ipsum -
- - - [object Object] - -
-
- -
-
-
- - - diff --git a/__tests__/all-defaults-with-json/fixtures/expected-modules.json b/__tests__/all-defaults-with-json/fixtures/expected-modules.json index c620eb8..1f1e07f 100644 --- a/__tests__/all-defaults-with-json/fixtures/expected-modules.json +++ b/__tests__/all-defaults-with-json/fixtures/expected-modules.json @@ -4,217 +4,153 @@ "nodes": [ { "selector": ".f0", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-size", "value": "1rem" }] }, { "selector": ".f1", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-size", "value": "2rem" }] }, { "selector": ".f2", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-size", "value": "3rem" }] }, { "selector": ".f3", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-size", "value": "4rem" }] }, { "selector": ".f0-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-size", "value": "1rem" }], "media": "screen and (min-width: 30em)" }, { "selector": ".f1-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-size", "value": "2rem" }], "media": "screen and (min-width: 30em)" }, { "selector": ".f2-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-size", "value": "3rem" }], "media": "screen and (min-width: 30em)" }, { "selector": ".f3-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-size", "value": "4rem" }], "media": "screen and (min-width: 30em)" }, { "selector": ".f0-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-size", "value": "1rem" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".f1-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-size", "value": "2rem" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".f2-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-size", "value": "3rem" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".f3-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-size", "value": "4rem" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".f0-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-size", "value": "1rem" }], "media": "screen and (min-width: 60em)" }, { "selector": ".f1-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-size", "value": "2rem" }], "media": "screen and (min-width: 60em)" }, { "selector": ".f2-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-size", "value": "3rem" }], "media": "screen and (min-width: 60em)" }, { "selector": ".f3-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-size", "value": "4rem" }], "media": "screen and (min-width: 60em)" }, { "selector": ".lh0", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "line-height", "value": "1" }] }, { "selector": ".lh1", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "line-height", "value": "2" }] }, { "selector": ".lh2", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "line-height", "value": "3" }] }, { "selector": ".lh3", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "line-height", "value": "4" }] }, { "selector": ".lh0-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "line-height", "value": "1" }], "media": "screen and (min-width: 30em)" }, { "selector": ".lh1-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "line-height", "value": "2" }], "media": "screen and (min-width: 30em)" }, { "selector": ".lh2-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "line-height", "value": "3" }], "media": "screen and (min-width: 30em)" }, { "selector": ".lh3-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "line-height", "value": "4" }], "media": "screen and (min-width: 30em)" }, { "selector": ".lh0-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "line-height", "value": "1" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".lh1-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "line-height", "value": "2" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".lh2-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "line-height", "value": "3" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".lh3-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "line-height", "value": "4" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".lh0-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "line-height", "value": "1" }], "media": "screen and (min-width: 60em)" }, { "selector": ".lh1-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "line-height", "value": "2" }], "media": "screen and (min-width: 60em)" }, { "selector": ".lh2-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "line-height", "value": "3" }], "media": "screen and (min-width: 60em)" }, { "selector": ".lh3-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "line-height", "value": "4" }], "media": "screen and (min-width: 60em)" } @@ -225,8 +161,6 @@ "nodes": [ { "selector": ".error", - "lastEach": 7, - "indexes": {}, "nodes": [ { "prop": "color", "value": "red" }, { "prop": "font-weight", "value": "bold" } @@ -234,8 +168,6 @@ }, { "selector": ".error-ns", - "lastEach": 7, - "indexes": {}, "nodes": [ { "prop": "color", "value": "red" }, { "prop": "font-weight", "value": "bold" } @@ -244,8 +176,6 @@ }, { "selector": ".error-m", - "lastEach": 7, - "indexes": {}, "nodes": [ { "prop": "color", "value": "red" }, { "prop": "font-weight", "value": "bold" } @@ -254,8 +184,6 @@ }, { "selector": ".error-l", - "lastEach": 7, - "indexes": {}, "nodes": [ { "prop": "color", "value": "red" }, { "prop": "font-weight", "value": "bold" } @@ -267,1218 +195,831 @@ "spacing": { "meta": { "module": "spacing", "id": "m" }, "nodes": [ - { - "selector": ".m0", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "margin", "value": "1rem" }] - }, - { - "selector": ".m1", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "margin", "value": "2rem" }] - }, - { - "selector": ".m2", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "margin", "value": "3rem" }] - }, - { - "selector": ".m3", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "margin", "value": "4rem" }] - }, - { - "selector": ".ma", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "margin", "value": "auto" }] - }, + { "selector": ".m0", "nodes": [{ "prop": "margin", "value": "1rem" }] }, + { "selector": ".m1", "nodes": [{ "prop": "margin", "value": "2rem" }] }, + { "selector": ".m2", "nodes": [{ "prop": "margin", "value": "3rem" }] }, + { "selector": ".m3", "nodes": [{ "prop": "margin", "value": "4rem" }] }, + { "selector": ".ma", "nodes": [{ "prop": "margin", "value": "auto" }] }, { "selector": ".mt0", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-top", "value": "1rem" }] }, { "selector": ".mt1", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-top", "value": "2rem" }] }, { "selector": ".mt2", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-top", "value": "3rem" }] }, { "selector": ".mt3", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-top", "value": "4rem" }] }, { "selector": ".mta", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-top", "value": "auto" }] }, { "selector": ".mr0", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-right", "value": "1rem" }] }, { "selector": ".mr1", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-right", "value": "2rem" }] }, { "selector": ".mr2", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-right", "value": "3rem" }] }, { "selector": ".mr3", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-right", "value": "4rem" }] }, { "selector": ".mra", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-right", "value": "auto" }] }, { "selector": ".mb0", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-bottom", "value": "1rem" }] }, { "selector": ".mb1", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-bottom", "value": "2rem" }] }, { "selector": ".mb2", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-bottom", "value": "3rem" }] }, { "selector": ".mb3", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-bottom", "value": "4rem" }] }, { "selector": ".mba", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-bottom", "value": "auto" }] }, { "selector": ".ml0", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-left", "value": "1rem" }] }, { "selector": ".ml1", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-left", "value": "2rem" }] }, { "selector": ".ml2", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-left", "value": "3rem" }] }, { "selector": ".ml3", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-left", "value": "4rem" }] }, { "selector": ".mla", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-left", "value": "auto" }] }, - { - "selector": ".p0", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "padding", "value": "1rem" }] - }, - { - "selector": ".p1", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "padding", "value": "2rem" }] - }, - { - "selector": ".p2", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "padding", "value": "3rem" }] - }, - { - "selector": ".p3", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "padding", "value": "4rem" }] - }, + { "selector": ".p0", "nodes": [{ "prop": "padding", "value": "1rem" }] }, + { "selector": ".p1", "nodes": [{ "prop": "padding", "value": "2rem" }] }, + { "selector": ".p2", "nodes": [{ "prop": "padding", "value": "3rem" }] }, + { "selector": ".p3", "nodes": [{ "prop": "padding", "value": "4rem" }] }, { "selector": ".pt0", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-top", "value": "1rem" }] }, { "selector": ".pt1", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-top", "value": "2rem" }] }, { "selector": ".pt2", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-top", "value": "3rem" }] }, { "selector": ".pt3", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-top", "value": "4rem" }] }, { "selector": ".pr0", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-right", "value": "1rem" }] }, { "selector": ".pr1", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-right", "value": "2rem" }] }, { "selector": ".pr2", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-right", "value": "3rem" }] }, { "selector": ".pr3", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-right", "value": "4rem" }] }, { "selector": ".pb0", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-bottom", "value": "1rem" }] }, { "selector": ".pb1", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-bottom", "value": "2rem" }] }, { "selector": ".pb2", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-bottom", "value": "3rem" }] }, { "selector": ".pb3", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-bottom", "value": "4rem" }] }, { "selector": ".pl0", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-left", "value": "1rem" }] }, { "selector": ".pl1", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-left", "value": "2rem" }] }, { "selector": ".pl2", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-left", "value": "3rem" }] }, { "selector": ".pl3", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-left", "value": "4rem" }] }, { "selector": ".m0-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin", "value": "1rem" }], "media": "screen and (min-width: 30em)" }, { "selector": ".m1-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin", "value": "2rem" }], "media": "screen and (min-width: 30em)" }, { "selector": ".m2-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin", "value": "3rem" }], "media": "screen and (min-width: 30em)" }, { "selector": ".m3-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin", "value": "4rem" }], "media": "screen and (min-width: 30em)" }, { "selector": ".ma-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin", "value": "auto" }], "media": "screen and (min-width: 30em)" }, { "selector": ".mt0-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-top", "value": "1rem" }], "media": "screen and (min-width: 30em)" }, { "selector": ".mt1-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-top", "value": "2rem" }], "media": "screen and (min-width: 30em)" }, { "selector": ".mt2-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-top", "value": "3rem" }], "media": "screen and (min-width: 30em)" }, { "selector": ".mt3-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-top", "value": "4rem" }], "media": "screen and (min-width: 30em)" }, { "selector": ".mta-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-top", "value": "auto" }], "media": "screen and (min-width: 30em)" }, { "selector": ".mr0-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-right", "value": "1rem" }], "media": "screen and (min-width: 30em)" }, { "selector": ".mr1-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-right", "value": "2rem" }], "media": "screen and (min-width: 30em)" }, { "selector": ".mr2-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-right", "value": "3rem" }], "media": "screen and (min-width: 30em)" }, { "selector": ".mr3-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-right", "value": "4rem" }], "media": "screen and (min-width: 30em)" }, { "selector": ".mra-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-right", "value": "auto" }], "media": "screen and (min-width: 30em)" }, { "selector": ".mb0-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-bottom", "value": "1rem" }], "media": "screen and (min-width: 30em)" }, { "selector": ".mb1-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-bottom", "value": "2rem" }], "media": "screen and (min-width: 30em)" }, { "selector": ".mb2-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-bottom", "value": "3rem" }], "media": "screen and (min-width: 30em)" }, { "selector": ".mb3-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-bottom", "value": "4rem" }], "media": "screen and (min-width: 30em)" }, { "selector": ".mba-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-bottom", "value": "auto" }], "media": "screen and (min-width: 30em)" }, { "selector": ".ml0-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-left", "value": "1rem" }], "media": "screen and (min-width: 30em)" }, { "selector": ".ml1-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-left", "value": "2rem" }], "media": "screen and (min-width: 30em)" }, { "selector": ".ml2-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-left", "value": "3rem" }], "media": "screen and (min-width: 30em)" }, { "selector": ".ml3-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-left", "value": "4rem" }], "media": "screen and (min-width: 30em)" }, { "selector": ".mla-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-left", "value": "auto" }], "media": "screen and (min-width: 30em)" }, { "selector": ".p0-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding", "value": "1rem" }], "media": "screen and (min-width: 30em)" }, { "selector": ".p1-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding", "value": "2rem" }], "media": "screen and (min-width: 30em)" }, { "selector": ".p2-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding", "value": "3rem" }], "media": "screen and (min-width: 30em)" }, { "selector": ".p3-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding", "value": "4rem" }], "media": "screen and (min-width: 30em)" }, { "selector": ".pt0-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-top", "value": "1rem" }], "media": "screen and (min-width: 30em)" }, { "selector": ".pt1-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-top", "value": "2rem" }], "media": "screen and (min-width: 30em)" }, { "selector": ".pt2-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-top", "value": "3rem" }], "media": "screen and (min-width: 30em)" }, { "selector": ".pt3-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-top", "value": "4rem" }], "media": "screen and (min-width: 30em)" }, { "selector": ".pr0-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-right", "value": "1rem" }], "media": "screen and (min-width: 30em)" }, { "selector": ".pr1-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-right", "value": "2rem" }], "media": "screen and (min-width: 30em)" }, { "selector": ".pr2-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-right", "value": "3rem" }], "media": "screen and (min-width: 30em)" }, { "selector": ".pr3-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-right", "value": "4rem" }], "media": "screen and (min-width: 30em)" }, { "selector": ".pb0-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-bottom", "value": "1rem" }], "media": "screen and (min-width: 30em)" }, { "selector": ".pb1-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-bottom", "value": "2rem" }], "media": "screen and (min-width: 30em)" }, { "selector": ".pb2-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-bottom", "value": "3rem" }], "media": "screen and (min-width: 30em)" }, { "selector": ".pb3-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-bottom", "value": "4rem" }], "media": "screen and (min-width: 30em)" }, { "selector": ".pl0-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-left", "value": "1rem" }], "media": "screen and (min-width: 30em)" }, { "selector": ".pl1-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-left", "value": "2rem" }], "media": "screen and (min-width: 30em)" }, { "selector": ".pl2-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-left", "value": "3rem" }], "media": "screen and (min-width: 30em)" }, { "selector": ".pl3-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-left", "value": "4rem" }], "media": "screen and (min-width: 30em)" }, { "selector": ".m0-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin", "value": "1rem" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".m1-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin", "value": "2rem" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".m2-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin", "value": "3rem" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".m3-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin", "value": "4rem" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".ma-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin", "value": "auto" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".mt0-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-top", "value": "1rem" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".mt1-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-top", "value": "2rem" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".mt2-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-top", "value": "3rem" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".mt3-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-top", "value": "4rem" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".mta-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-top", "value": "auto" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".mr0-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-right", "value": "1rem" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".mr1-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-right", "value": "2rem" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".mr2-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-right", "value": "3rem" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".mr3-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-right", "value": "4rem" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".mra-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-right", "value": "auto" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".mb0-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-bottom", "value": "1rem" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".mb1-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-bottom", "value": "2rem" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".mb2-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-bottom", "value": "3rem" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".mb3-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-bottom", "value": "4rem" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".mba-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-bottom", "value": "auto" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".ml0-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-left", "value": "1rem" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".ml1-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-left", "value": "2rem" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".ml2-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-left", "value": "3rem" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".ml3-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-left", "value": "4rem" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".mla-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-left", "value": "auto" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".p0-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding", "value": "1rem" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".p1-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding", "value": "2rem" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".p2-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding", "value": "3rem" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".p3-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding", "value": "4rem" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".pt0-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-top", "value": "1rem" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".pt1-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-top", "value": "2rem" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".pt2-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-top", "value": "3rem" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".pt3-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-top", "value": "4rem" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".pr0-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-right", "value": "1rem" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".pr1-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-right", "value": "2rem" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".pr2-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-right", "value": "3rem" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".pr3-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-right", "value": "4rem" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".pb0-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-bottom", "value": "1rem" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".pb1-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-bottom", "value": "2rem" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".pb2-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-bottom", "value": "3rem" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".pb3-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-bottom", "value": "4rem" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".pl0-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-left", "value": "1rem" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".pl1-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-left", "value": "2rem" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".pl2-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-left", "value": "3rem" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".pl3-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-left", "value": "4rem" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".m0-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin", "value": "1rem" }], "media": "screen and (min-width: 60em)" }, { "selector": ".m1-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin", "value": "2rem" }], "media": "screen and (min-width: 60em)" }, { "selector": ".m2-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin", "value": "3rem" }], "media": "screen and (min-width: 60em)" }, { "selector": ".m3-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin", "value": "4rem" }], "media": "screen and (min-width: 60em)" }, { "selector": ".ma-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin", "value": "auto" }], "media": "screen and (min-width: 60em)" }, { "selector": ".mt0-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-top", "value": "1rem" }], "media": "screen and (min-width: 60em)" }, { "selector": ".mt1-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-top", "value": "2rem" }], "media": "screen and (min-width: 60em)" }, { "selector": ".mt2-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-top", "value": "3rem" }], "media": "screen and (min-width: 60em)" }, { "selector": ".mt3-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-top", "value": "4rem" }], "media": "screen and (min-width: 60em)" }, { "selector": ".mta-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-top", "value": "auto" }], "media": "screen and (min-width: 60em)" }, { "selector": ".mr0-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-right", "value": "1rem" }], "media": "screen and (min-width: 60em)" }, { "selector": ".mr1-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-right", "value": "2rem" }], "media": "screen and (min-width: 60em)" }, { "selector": ".mr2-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-right", "value": "3rem" }], "media": "screen and (min-width: 60em)" }, { "selector": ".mr3-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-right", "value": "4rem" }], "media": "screen and (min-width: 60em)" }, { "selector": ".mra-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-right", "value": "auto" }], "media": "screen and (min-width: 60em)" }, { "selector": ".mb0-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-bottom", "value": "1rem" }], "media": "screen and (min-width: 60em)" }, { "selector": ".mb1-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-bottom", "value": "2rem" }], "media": "screen and (min-width: 60em)" }, { "selector": ".mb2-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-bottom", "value": "3rem" }], "media": "screen and (min-width: 60em)" }, { "selector": ".mb3-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-bottom", "value": "4rem" }], "media": "screen and (min-width: 60em)" }, { "selector": ".mba-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-bottom", "value": "auto" }], "media": "screen and (min-width: 60em)" }, { "selector": ".ml0-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-left", "value": "1rem" }], "media": "screen and (min-width: 60em)" }, { "selector": ".ml1-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-left", "value": "2rem" }], "media": "screen and (min-width: 60em)" }, { "selector": ".ml2-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-left", "value": "3rem" }], "media": "screen and (min-width: 60em)" }, { "selector": ".ml3-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-left", "value": "4rem" }], "media": "screen and (min-width: 60em)" }, { "selector": ".mla-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "margin-left", "value": "auto" }], "media": "screen and (min-width: 60em)" }, { "selector": ".p0-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding", "value": "1rem" }], "media": "screen and (min-width: 60em)" }, { "selector": ".p1-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding", "value": "2rem" }], "media": "screen and (min-width: 60em)" }, { "selector": ".p2-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding", "value": "3rem" }], "media": "screen and (min-width: 60em)" }, { "selector": ".p3-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding", "value": "4rem" }], "media": "screen and (min-width: 60em)" }, { "selector": ".pt0-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-top", "value": "1rem" }], "media": "screen and (min-width: 60em)" }, { "selector": ".pt1-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-top", "value": "2rem" }], "media": "screen and (min-width: 60em)" }, { "selector": ".pt2-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-top", "value": "3rem" }], "media": "screen and (min-width: 60em)" }, { "selector": ".pt3-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-top", "value": "4rem" }], "media": "screen and (min-width: 60em)" }, { "selector": ".pr0-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-right", "value": "1rem" }], "media": "screen and (min-width: 60em)" }, { "selector": ".pr1-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-right", "value": "2rem" }], "media": "screen and (min-width: 60em)" }, { "selector": ".pr2-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-right", "value": "3rem" }], "media": "screen and (min-width: 60em)" }, { "selector": ".pr3-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-right", "value": "4rem" }], "media": "screen and (min-width: 60em)" }, { "selector": ".pb0-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-bottom", "value": "1rem" }], "media": "screen and (min-width: 60em)" }, { "selector": ".pb1-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-bottom", "value": "2rem" }], "media": "screen and (min-width: 60em)" }, { "selector": ".pb2-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-bottom", "value": "3rem" }], "media": "screen and (min-width: 60em)" }, { "selector": ".pb3-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-bottom", "value": "4rem" }], "media": "screen and (min-width: 60em)" }, { "selector": ".pl0-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-left", "value": "1rem" }], "media": "screen and (min-width: 60em)" }, { "selector": ".pl1-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-left", "value": "2rem" }], "media": "screen and (min-width: 60em)" }, { "selector": ".pl2-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-left", "value": "3rem" }], "media": "screen and (min-width: 60em)" }, { "selector": ".pl3-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "padding-left", "value": "4rem" }], "media": "screen and (min-width: 60em)" } @@ -1487,12 +1028,7 @@ "custom module": { "meta": { "module": "custom module" }, "nodes": [ - { - "selector": ".custom", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "foo", "value": "bar" }] - } + { "selector": ".custom", "nodes": [{ "prop": "foo", "value": "bar" }] } ] }, "position": { @@ -1500,240 +1036,99 @@ "nodes": [ { "selector": ".poss", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "position", "value": "static" }] }, { "selector": ".posa", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "position", "value": "absolute" }] }, { "selector": ".posr", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "position", "value": "relative" }] }, { "selector": ".posf", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "position", "value": "fixed" }] }, { "selector": ".posstky", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "position", "value": "sticky" }] }, - { - "selector": ".ta", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "top", "value": "auto" }] - }, - { - "selector": ".ra", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "right", "value": "auto" }] - }, - { - "selector": ".ba", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "bottom", "value": "auto" }] - }, - { - "selector": ".la", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "left", "value": "auto" }] - } + { "selector": ".ta", "nodes": [{ "prop": "top", "value": "auto" }] }, + { "selector": ".ra", "nodes": [{ "prop": "right", "value": "auto" }] }, + { "selector": ".ba", "nodes": [{ "prop": "bottom", "value": "auto" }] }, + { "selector": ".la", "nodes": [{ "prop": "left", "value": "auto" }] } ] }, "z-index": { "meta": { "module": "z-index", "id": "z" }, "nodes": [ - { - "selector": ".z0", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "z-index", "value": "0" }] - }, - { - "selector": ".z1", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "z-index", "value": "1" }] - }, - { - "selector": ".z2", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "z-index", "value": "2" }] - }, - { - "selector": ".z3", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "z-index", "value": "3" }] - }, - { - "selector": ".z4", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "z-index", "value": "4" }] - }, - { - "selector": ".z5", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "z-index", "value": "5" }] - }, - { - "selector": ".z999", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "z-index", "value": "999" }] - }, + { "selector": ".z0", "nodes": [{ "prop": "z-index", "value": "0" }] }, + { "selector": ".z1", "nodes": [{ "prop": "z-index", "value": "1" }] }, + { "selector": ".z2", "nodes": [{ "prop": "z-index", "value": "2" }] }, + { "selector": ".z3", "nodes": [{ "prop": "z-index", "value": "3" }] }, + { "selector": ".z4", "nodes": [{ "prop": "z-index", "value": "4" }] }, + { "selector": ".z5", "nodes": [{ "prop": "z-index", "value": "5" }] }, + { "selector": ".z999", "nodes": [{ "prop": "z-index", "value": "999" }] }, { "selector": ".z9999", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "z-index", "value": "9999" }] }, { "selector": ".zmax", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "z-index", "value": "2147483647" }] }, { "selector": ".zinitial", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "z-index", "value": "initial" }] }, { "selector": ".zinherit", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "z-index", "value": "inherit" }] }, { "selector": ".zunset", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "z-index", "value": "unset" }] }, - { - "selector": ".za", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "z-index", "value": "auto" }] - } + { "selector": ".za", "nodes": [{ "prop": "z-index", "value": "auto" }] } ] }, "float": { "meta": { "module": "float", "id": "fl:n" }, "nodes": [ - { - "selector": ".fln", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "float", "value": "none" }] - }, - { - "selector": ".fll", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "float", "value": "left" }] - }, - { - "selector": ".flr", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "float", "value": "right" }] - } + { "selector": ".fln", "nodes": [{ "prop": "float", "value": "none" }] }, + { "selector": ".fll", "nodes": [{ "prop": "float", "value": "left" }] }, + { "selector": ".flr", "nodes": [{ "prop": "float", "value": "right" }] } ] }, "clear": { "meta": { "module": "clear", "id": "cl:n" }, "nodes": [ - { - "selector": ".cln", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "clear", "value": "none" }] - }, - { - "selector": ".cll", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "clear", "value": "left" }] - }, - { - "selector": ".clr", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "clear", "value": "right" }] - }, - { - "selector": ".clb", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "clear", "value": "both" }] - } + { "selector": ".cln", "nodes": [{ "prop": "clear", "value": "none" }] }, + { "selector": ".cll", "nodes": [{ "prop": "clear", "value": "left" }] }, + { "selector": ".clr", "nodes": [{ "prop": "clear", "value": "right" }] }, + { "selector": ".clb", "nodes": [{ "prop": "clear", "value": "both" }] } ] }, "display": { "meta": { "module": "display", "id": "d:n" }, "nodes": [ - { - "selector": ".dn", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "display", "value": "none" }] - }, - { - "selector": ".db", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "display", "value": "block" }] - }, - { - "selector": ".df", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "display", "value": "flex" }] - }, + { "selector": ".dn", "nodes": [{ "prop": "display", "value": "none" }] }, + { "selector": ".db", "nodes": [{ "prop": "display", "value": "block" }] }, + { "selector": ".df", "nodes": [{ "prop": "display", "value": "flex" }] }, { "selector": ".dif", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "display", "value": "inline-flex" }] }, { "selector": ".di", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "display", "value": "inline" }] }, { "selector": ".dib", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "display", "value": "inline-block" }] }, - { - "selector": ".dtb", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "display", "value": "table" }] - } + { "selector": ".dtb", "nodes": [{ "prop": "display", "value": "table" }] } ] }, "visibility": { @@ -1741,20 +1136,14 @@ "nodes": [ { "selector": ".vv", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "visibility", "value": "visible" }] }, { "selector": ".vh", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "visibility", "value": "hidden" }] }, { "selector": ".vc", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "visibility", "value": "collapse" }] } ] @@ -1764,104 +1153,70 @@ "nodes": [ { "selector": ".ovv", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "overflow", "value": "visible" }] }, { "selector": ".ovh", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "overflow", "value": "hidden" }] }, { "selector": ".ovs", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "overflow", "value": "scroll" }] }, { "selector": ".ova", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "overflow", "value": "auto" }] }, { "selector": ".ovxv", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "overflow-x", "value": "visible" }] }, { "selector": ".ovxh", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "overflow-x", "value": "hidden" }] }, { "selector": ".ovxs", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "overflow-x", "value": "scroll" }] }, { "selector": ".ovxa", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "overflow-x", "value": "auto" }] }, { "selector": ".ovyv", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "overflow-y", "value": "visible" }] }, { "selector": ".ovyh", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "overflow-y", "value": "hidden" }] }, { "selector": ".ovys", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "overflow-y", "value": "scroll" }] }, { "selector": ".ovya", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "overflow-y", "value": "auto" }] }, { "selector": ".ovsa", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "overflow-style", "value": "auto" }] }, { "selector": ".ovss", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "overflow-style", "value": "scrollbar" }] }, { "selector": ".ovsp", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "overflow-style", "value": "panner" }] }, { "selector": ".ovsm", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "overflow-style", "value": "move" }] }, { "selector": ".ovsmq", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "overflow-style", "value": "marquee" }] } ] @@ -1869,28 +1224,14 @@ "resize": { "meta": { "module": "resize", "id": "rsz:n" }, "nodes": [ - { - "selector": ".rszn", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "resize", "value": "none" }] - }, - { - "selector": ".rszb", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "resize", "value": "both" }] - }, + { "selector": ".rszn", "nodes": [{ "prop": "resize", "value": "none" }] }, + { "selector": ".rszb", "nodes": [{ "prop": "resize", "value": "both" }] }, { "selector": ".rszh", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "resize", "value": "horizontal" }] }, { "selector": ".rszv", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "resize", "value": "vertical" }] } ] @@ -1898,54 +1239,29 @@ "cursor": { "meta": { "module": "cursor", "id": "cur:a" }, "nodes": [ - { - "selector": ".cura", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "cursor", "value": "auto" }] - }, + { "selector": ".cura", "nodes": [{ "prop": "cursor", "value": "auto" }] }, { "selector": ".curd", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "cursor", "value": "default" }] }, { "selector": ".curc", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "cursor", "value": "crosshair" }] }, { "selector": ".curha", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "cursor", "value": "hand" }] }, { "selector": ".curhe", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "cursor", "value": "help" }] }, - { - "selector": ".curm", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "cursor", "value": "move" }] - }, + { "selector": ".curm", "nodes": [{ "prop": "cursor", "value": "move" }] }, { "selector": ".curp", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "cursor", "value": "pointer" }] }, - { - "selector": ".curt", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "cursor", "value": "text" }] - } + { "selector": ".curt", "nodes": [{ "prop": "cursor", "value": "text" }] } ] }, "box-sizing": { @@ -1953,14 +1269,10 @@ "nodes": [ { "selector": ".bxzcb", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "box-sizing", "value": "content-box" }] }, { "selector": ".bxzbb", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "box-sizing", "value": "border-box" }] } ] @@ -1968,192 +1280,121 @@ "width": { "meta": { "module": "width", "id": "w" }, "nodes": [ - { - "selector": ".w25", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "width", "value": "25%" }] - }, - { - "selector": ".w50", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "width", "value": "50%" }] - }, - { - "selector": ".w75", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "width", "value": "75%" }] - }, - { - "selector": ".w100", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "width", "value": "100%" }] - }, - { - "selector": ".wa", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "width", "value": "auto" }] - }, + { "selector": ".w25", "nodes": [{ "prop": "width", "value": "25%" }] }, + { "selector": ".w50", "nodes": [{ "prop": "width", "value": "50%" }] }, + { "selector": ".w75", "nodes": [{ "prop": "width", "value": "75%" }] }, + { "selector": ".w100", "nodes": [{ "prop": "width", "value": "100%" }] }, + { "selector": ".wa", "nodes": [{ "prop": "width", "value": "auto" }] }, { "selector": ".maw100", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "max-width", "value": "100%" }] }, { "selector": ".mawn", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "max-width", "value": "none" }] }, { "selector": ".w25-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "width", "value": "25%" }], "media": "screen and (min-width: 30em)" }, { "selector": ".w50-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "width", "value": "50%" }], "media": "screen and (min-width: 30em)" }, { "selector": ".w75-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "width", "value": "75%" }], "media": "screen and (min-width: 30em)" }, { "selector": ".w100-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "width", "value": "100%" }], "media": "screen and (min-width: 30em)" }, { "selector": ".wa-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "width", "value": "auto" }], "media": "screen and (min-width: 30em)" }, { "selector": ".maw100-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "max-width", "value": "100%" }], "media": "screen and (min-width: 30em)" }, { "selector": ".mawn-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "max-width", "value": "none" }], "media": "screen and (min-width: 30em)" }, { "selector": ".w25-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "width", "value": "25%" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".w50-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "width", "value": "50%" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".w75-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "width", "value": "75%" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".w100-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "width", "value": "100%" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".wa-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "width", "value": "auto" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".maw100-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "max-width", "value": "100%" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".mawn-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "max-width", "value": "none" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".w25-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "width", "value": "25%" }], "media": "screen and (min-width: 60em)" }, { "selector": ".w50-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "width", "value": "50%" }], "media": "screen and (min-width: 60em)" }, { "selector": ".w75-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "width", "value": "75%" }], "media": "screen and (min-width: 60em)" }, { "selector": ".w100-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "width", "value": "100%" }], "media": "screen and (min-width: 60em)" }, { "selector": ".wa-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "width", "value": "auto" }], "media": "screen and (min-width: 60em)" }, { "selector": ".maw100-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "max-width", "value": "100%" }], "media": "screen and (min-width: 60em)" }, { "selector": ".mawn-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "max-width", "value": "none" }], "media": "screen and (min-width: 60em)" } @@ -2162,192 +1403,121 @@ "height": { "meta": { "module": "height", "id": "h" }, "nodes": [ - { - "selector": ".h25", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "height", "value": "25%" }] - }, - { - "selector": ".h50", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "height", "value": "50%" }] - }, - { - "selector": ".h75", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "height", "value": "75%" }] - }, - { - "selector": ".h100", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "height", "value": "100%" }] - }, - { - "selector": ".wa", - "lastEach": 7, - "indexes": {}, - "nodes": [{ "prop": "height", "value": "auto" }] - }, + { "selector": ".h25", "nodes": [{ "prop": "height", "value": "25%" }] }, + { "selector": ".h50", "nodes": [{ "prop": "height", "value": "50%" }] }, + { "selector": ".h75", "nodes": [{ "prop": "height", "value": "75%" }] }, + { "selector": ".h100", "nodes": [{ "prop": "height", "value": "100%" }] }, + { "selector": ".wa", "nodes": [{ "prop": "height", "value": "auto" }] }, { "selector": ".mah100", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "max-height", "value": "100%" }] }, { "selector": ".mahn", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "max-height", "value": "none" }] }, { "selector": ".h25-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "height", "value": "25%" }], "media": "screen and (min-width: 30em)" }, { "selector": ".h50-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "height", "value": "50%" }], "media": "screen and (min-width: 30em)" }, { "selector": ".h75-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "height", "value": "75%" }], "media": "screen and (min-width: 30em)" }, { "selector": ".h100-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "height", "value": "100%" }], "media": "screen and (min-width: 30em)" }, { "selector": ".wa-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "height", "value": "auto" }], "media": "screen and (min-width: 30em)" }, { "selector": ".mah100-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "max-height", "value": "100%" }], "media": "screen and (min-width: 30em)" }, { "selector": ".mahn-ns", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "max-height", "value": "none" }], "media": "screen and (min-width: 30em)" }, { "selector": ".h25-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "height", "value": "25%" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".h50-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "height", "value": "50%" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".h75-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "height", "value": "75%" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".h100-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "height", "value": "100%" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".wa-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "height", "value": "auto" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".mah100-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "max-height", "value": "100%" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".mahn-m", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "max-height", "value": "none" }], "media": "screen and (min-width: 30em) and (max-width: 60em)" }, { "selector": ".h25-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "height", "value": "25%" }], "media": "screen and (min-width: 60em)" }, { "selector": ".h50-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "height", "value": "50%" }], "media": "screen and (min-width: 60em)" }, { "selector": ".h75-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "height", "value": "75%" }], "media": "screen and (min-width: 60em)" }, { "selector": ".h100-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "height", "value": "100%" }], "media": "screen and (min-width: 60em)" }, { "selector": ".wa-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "height", "value": "auto" }], "media": "screen and (min-width: 60em)" }, { "selector": ".mah100-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "max-height", "value": "100%" }], "media": "screen and (min-width: 60em)" }, { "selector": ".mahn-l", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "max-height", "value": "none" }], "media": "screen and (min-width: 60em)" } @@ -2358,128 +1528,86 @@ "nodes": [ { "selector": ".fwn", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-weight", "value": "normal" }] }, { "selector": ".fwb", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-weight", "value": "bold" }] }, { "selector": ".fwbr", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-weight", "value": "bolder" }] }, { "selector": ".fwlr", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-weight", "value": "lighter" }] }, { "selector": ".fsn", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-style", "value": "normal" }] }, { "selector": ".fsi", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-style", "value": "italic" }] }, { "selector": ".fso", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-style", "value": "oblique" }] }, { "selector": ".fvn", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-variant", "value": "normal" }] }, { "selector": ".fvsc", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-variant", "value": "small-caps" }] }, { "selector": ".f0", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-size", "value": "1rem" }] }, { "selector": ".f1", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-size", "value": "1.25rem" }] }, { "selector": ".f2", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-size", "value": "1.5rem" }] }, { "selector": ".f3", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-size", "value": "2rem" }] }, { "selector": ".f4", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-size", "value": "3rem" }] }, { "selector": ".fzan", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-size-adjust", "value": "none" }] }, { "selector": ".ffs", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-family", "value": "serif" }] }, { "selector": ".ffss", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-family", "value": "sans-serif" }] }, { "selector": ".ffc", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-family", "value": "cursive" }] }, { "selector": ".fff", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-family", "value": "fantasy" }] }, { "selector": ".ffm", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-family", "value": "monospace" }] }, { "selector": ".ffa", - "lastEach": 7, - "indexes": {}, "nodes": [ { "prop": "font-family", @@ -2489,8 +1617,6 @@ }, { "selector": ".fft", - "lastEach": 7, - "indexes": {}, "nodes": [ { "prop": "font-family", @@ -2500,88 +1626,60 @@ }, { "selector": ".ffv", - "lastEach": 7, - "indexes": {}, "nodes": [ { "prop": "font-family", "value": "Verdana, Geneva, sans-serif" } ] }, { "selector": ".fefn", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-effect", "value": "none" }] }, { "selector": ".fefeg", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-effect", "value": "engrave" }] }, { "selector": ".fefeb", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-effect", "value": "emboss" }] }, { "selector": ".fefo", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-effect", "value": "outline" }] }, { "selector": ".fstn", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-stretch", "value": "normal" }] }, { "selector": ".fstuc", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-stretch", "value": "ultra-condensed" }] }, { "selector": ".fstec", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-stretch", "value": "extra-condensed" }] }, { "selector": ".fstc", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-stretch", "value": "condensed" }] }, { "selector": ".fstsc", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-stretch", "value": "semi-condensed" }] }, { "selector": ".fstse", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-stretch", "value": "semi-expanded" }] }, { "selector": ".fste", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-stretch", "value": "expanded" }] }, { "selector": ".fstee", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-stretch", "value": "extra-expanded" }] }, { "selector": ".fstue", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "font-stretch", "value": "ultra-expanded" }] } ] @@ -2591,50 +1689,34 @@ "nodes": [ { "selector": ".vasup", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "vertical-align", "value": "super" }] }, { "selector": ".vat", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "vertical-align", "value": "top" }] }, { "selector": ".vatt", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "vertical-align", "value": "text-top" }] }, { "selector": ".vam", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "vertical-align", "value": "middle" }] }, { "selector": ".vabl", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "vertical-align", "value": "baseline" }] }, { "selector": ".vab", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "vertical-align", "value": "bottom" }] }, { "selector": ".vatb", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "vertical-align", "value": "text-bottom" }] }, { "selector": ".vasub", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "vertical-align", "value": "sub" }] } ] @@ -2644,50 +1726,34 @@ "nodes": [ { "selector": ".tal", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "text-align", "value": "left" }] }, { "selector": ".tac", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "text-align", "value": "center" }] }, { "selector": ".tar", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "text-align", "value": "right" }] }, { "selector": ".taj", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "text-align", "value": "justify" }] }, { "selector": ".tala", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "text-align-last", "value": "auto" }] }, { "selector": ".tall", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "text-align-last", "value": "left" }] }, { "selector": ".talc", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "text-align-last", "value": "center" }] }, { "selector": ".talr", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "text-align-last", "value": "right" }] } ] @@ -2697,26 +1763,18 @@ "nodes": [ { "selector": ".tdn", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "text-decoration", "value": "none" }] }, { "selector": ".tdu", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "text-decoration", "value": "underline" }] }, { "selector": ".tdo", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "text-decoration", "value": "overline" }] }, { "selector": ".tdl", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "text-decoration", "value": "line-through" }] } ] @@ -2726,26 +1784,18 @@ "nodes": [ { "selector": ".ttn", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "text-transform", "value": "none" }] }, { "selector": ".ttc", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "text-transform", "value": "capitalize" }] }, { "selector": ".ttu", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "text-transform", "value": "uppercase" }] }, { "selector": ".ttl", - "lastEach": 7, - "indexes": {}, "nodes": [{ "prop": "text-transform", "value": "lowercase" }] } ] diff --git a/__tests__/all-defaults-with-json/transform.test.ts b/__tests__/all-defaults-with-json/transform.test.ts index 272c405..de57751 100644 --- a/__tests__/all-defaults-with-json/transform.test.ts +++ b/__tests__/all-defaults-with-json/transform.test.ts @@ -13,9 +13,6 @@ import utility, { plugins as availablePlugins } from "../../src/index"; import defaultConfig from "../../src/utility.config.default"; const { docs, json } = availablePlugins; const plugins = [ - docs({ - output: path.join(__dirname, "./dist/docs.html"), - }), json({ output: path.join(__dirname, "./dist/modules.json"), }), @@ -35,11 +32,6 @@ describe("Default with json", () => { parser: "css", }) ); - /** Read the expected HTML file from fixtures */ - const expectedHTML = await fsAsync.readFile( - path.join(__dirname, "./fixtures/expected-docs.html"), - "utf-8" - ); /** Read the expected JSON file from fixtures */ const expectedJSON = JSON.parse( await fsAsync.readFile( @@ -72,11 +64,6 @@ describe("Default with json", () => { }) ); - const generateHTML = await fsAsync.readFile( - path.join(__dirname, "./dist/docs.html"), - "utf-8" - ); - const generateJSON = JSON.parse( await fsAsync.readFile( path.join(__dirname, "./dist/modules.json"), @@ -84,19 +71,8 @@ describe("Default with json", () => { ) ); - /** Get the diff of HTML */ - const htmlDiffOutput = prettydiff({ - source: expectedHTML, - mode: "diff", - diff: generateHTML, - lang: "html", - }); - /** Check the transformed file with the expected file */ assert.strictEqual(generatedCss, expectedCss); - - /** Check if the length of diff is zero */ - assert.strictEqual(htmlDiffOutput.length, 0); /** Check if the length of diff is zero */ assertDiff.deepEqual(expectedJSON, generateJSON); }); From 4ebbecf76ca4f87b1981decdec6169ab4c38a6bc Mon Sep 17 00:00:00 2001 From: Sylvester Date: Sun, 14 Feb 2021 21:39:58 +0100 Subject: [PATCH 18/20] add npmignore file --- .npmignore | 6 ++++++ tsconfig.json | 1 + 2 files changed, 7 insertions(+) create mode 100644 .npmignore diff --git a/.npmignore b/.npmignore new file mode 100644 index 0000000..d09b8ea --- /dev/null +++ b/.npmignore @@ -0,0 +1,6 @@ +src + +__tests__ +example +.travis.yml +tsconfig.json \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 36688a6..3f250ff 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -9,6 +9,7 @@ "moduleResolution": "node", "sourceMap": true, "outDir": "dist", + "declaration": true, "baseUrl": "./src", "resolveJsonModule": true, "types": ["node", "mocha"], From 40cdc3cffa81091cc7b9d3c36cf7426f98f39d65 Mon Sep 17 00:00:00 2001 From: Sylvester Date: Sun, 14 Feb 2021 21:57:07 +0100 Subject: [PATCH 19/20] add build script --- .travis.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index c270026..3f1503c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,10 @@ language: node_js node_js: -- '12' + - stable cache: yarn: true +script: + - yarn build deploy: edge: true provider: npm From 1c274611235292e04bba5072058db27c0e92c30c Mon Sep 17 00:00:00 2001 From: Sylvester Date: Sun, 14 Feb 2021 21:59:12 +0100 Subject: [PATCH 20/20] add test to pipeline --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 3f1503c..2d58479 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,6 +4,7 @@ node_js: cache: yarn: true script: + - yarn test - yarn build deploy: edge: true