Browse Source

much stricter eslint'ing (adapted from eslint-config-google and some airbnb)

pull/508/head
Jake Jarvis 2 months ago
parent
commit
4a7c9d4d96
Signed by: jake GPG Key ID: 2B0C9CF251E69A39
  1. 104
      .eslintrc.json
  2. 2
      .prettierrc
  3. 6
      api/hits.ts
  4. 2
      api/projects.ts
  5. 15
      api/tracks.ts
  6. 5
      assets/js/src/clipboard.js
  7. 8
      assets/js/src/counter.js
  8. 12
      assets/js/src/projects.js
  9. 11
      assets/sass/abstracts/_functions.scss
  10. 7
      assets/sass/abstracts/_settings.scss
  11. 2
      assets/sass/abstracts/_themes.scss
  12. 11
      assets/sass/components/_typography.scss
  13. 4
      assets/sass/pages/_home.scss
  14. 2
      package.json
  15. 20
      yarn.lock

104
.eslintrc.json

@ -12,7 +12,7 @@
],
"parser": "@babel/eslint-parser",
"parserOptions": {
"ecmaVersion": 2015,
"ecmaVersion": 2018,
"sourceType": "module",
"allowImportExportEverywhere": false,
"requireConfigFile": false,
@ -24,14 +24,95 @@
]
}
},
"rules": {
"curly": "error",
"quotes": ["error", "double"]
},
"env": {
"browser": true,
"es6": true
},
"rules": {
// Stylistic:
"brace-style": "error",
"camelcase": ["error", {
"properties": "never",
"ignoreDestructuring": true
}],
"comma-dangle": ["error", "always-multiline"],
"comma-spacing": "error",
"comma-style": "error",
"curly": ["error", "multi-or-nest", "consistent"],
"func-call-spacing": "error",
// "indent": ["error", 2, {
// "ignoredNodes": ["JSXElement", "JSXElement > *", "JSXAttribute", "JSXIdentifier", "JSXNamespacedName", "JSXMemberExpression", "JSXSpreadAttribute", "JSXExpressionContainer", "JSXOpeningElement", "JSXClosingElement", "JSXFragment", "JSXOpeningFragment", "JSXClosingFragment", "JSXText", "JSXEmptyExpression", "JSXSpreadChild"]
// }],
"max-len": ["error", {
"code": 100,
"tabWidth": 2,
"ignoreUrls": true,
"ignoreComments": false,
"ignoreStrings": true,
"ignoreRegExpLiterals": true,
"ignoreTemplateLiterals": true
}],
"no-multiple-empty-lines": ["error", { "max": 1 }],
"no-tabs": "error",
"no-trailing-spaces": "error",
"object-curly-spacing": ["error", "always"],
"one-var": ["error", {
"var": "never",
"let": "never",
"const": "never"
}],
"operator-linebreak": ["error", "after"],
"padded-blocks": ["error", "never"],
"quote-props": ["error", "consistent"],
"quotes": ["error", "double", {
"avoidEscape": true,
"allowTemplateLiterals": true
}],
"semi": "error",
"semi-spacing": "error",
"space-before-blocks": "error",
"space-before-function-paren": ["error", {
"named": "never",
"anonymous": "always",
"asyncArrow": "always"
}],
"spaced-comment": ["error", "always", {
"line": {
"markers": ["/"],
"exceptions": ["-", "+"]
},
"block": {
"markers": ["!"],
"exceptions": ["*"],
"balanced": true
}
}],
"template-tag-spacing": ["error", "never"],
// ES6:
"arrow-body-style": ["error", "as-needed", { "requireReturnForObjectLiteral": false }],
"arrow-parens": ["error", "always"],
"arrow-spacing": ["error", { "before": true, "after": true }],
"no-confusing-arrow": ["error", { "allowParens": true }],
"no-var": "error",
"prefer-const": ["error", {
"destructuring": "any",
"ignoreReadBeforeAssign": true
}],
"prefer-destructuring": ["error", {
"VariableDeclarator": {
"array": false,
"object": true
},
"AssignmentExpression": {
"array": true,
"object": false
}
}],
"prefer-rest-params": "error",
"prefer-spread": "error",
"template-curly-spacing": "error"
},
"overrides": [{
"files": [
"api/**/*.ts"
@ -50,8 +131,6 @@
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": 2020,
"sourceType": "module",
"project": ["./tsconfig.json"]
},
"rules": {
@ -59,9 +138,14 @@
},
"env": {
"browser": false,
"node": true,
"es6": true
"node": true
}
}],
"ignorePatterns": ["public/**", "static/assets/**", "postcss.config.js", "gulpfile.js", "webpack.config.js"]
"ignorePatterns": [
"public/**",
"static/assets/**",
"*.d.ts",
"gulpfile.js",
"webpack.config.js"
]
}

2
.prettierrc

@ -1,5 +1,5 @@
{
"printWidth": 120,
"printWidth": 100,
"tabWidth": 2,
"singleQuote": false
}

6
api/hits.ts

@ -11,7 +11,7 @@ const baseUrl = "https://jarv.is/";
Sentry.init({
dsn: process.env.SENTRY_DSN || "",
environment: process.env.NODE_ENV || process.env.VERCEL_ENV || process.env.SENTRY_ENVIRONMENT || "",
environment: process.env.NODE_ENV || process.env.VERCEL_ENV || "",
});
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
@ -111,7 +111,9 @@ const getSiteStats = async (client: Client): Promise<OverallStats> => {
pages.map((p: PageStats) => {
// match URLs from RSS feed with db to populate some metadata
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call
const match = feed.rss.channel.item.find((x: { link: string }) => x.link === baseUrl + p.slug + "/");
const match = feed.rss.channel.item.find(
(x: { link: string }) => x.link === baseUrl + p.slug + "/"
);
if (match) {
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
p.title = decode(match.title);

2
api/projects.ts

@ -6,7 +6,7 @@ import type { Repository, GHRepoSchema } from "./types/projects";
Sentry.init({
dsn: process.env.SENTRY_DSN || "",
environment: process.env.NODE_ENV || process.env.VERCEL_ENV || process.env.SENTRY_ENVIRONMENT || "",
environment: process.env.NODE_ENV || process.env.VERCEL_ENV || "",
});
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types

15
api/tracks.ts

@ -21,7 +21,7 @@ const TOP_TRACKS_ENDPOINT = `https://api.spotify.com/v1/me/top/tracks?time_range
Sentry.init({
dsn: process.env.SENTRY_DSN || "",
environment: process.env.NODE_ENV || process.env.VERCEL_ENV || process.env.SENTRY_ENVIRONMENT || "",
environment: process.env.NODE_ENV || process.env.VERCEL_ENV || "",
});
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
@ -31,7 +31,11 @@ export default async (req: VercelRequest, res: VercelResponse) => {
if (req.method !== "GET") {
throw new Error(`Method ${req.method} not allowed.`);
}
if (!process.env.SPOTIFY_CLIENT_ID || !process.env.SPOTIFY_CLIENT_SECRET || !process.env.SPOTIFY_REFRESH_TOKEN) {
if (
!process.env.SPOTIFY_CLIENT_ID ||
!process.env.SPOTIFY_CLIENT_SECRET ||
!process.env.SPOTIFY_REFRESH_TOKEN
) {
throw new Error("Spotify API credentials aren't set.");
}
@ -47,7 +51,10 @@ export default async (req: VercelRequest, res: VercelResponse) => {
response = await getTopTracks();
// let Vercel edge and browser cache results for 3 hours
res.setHeader("Cache-Control", "public, max-age=10800, s-maxage=10800, stale-while-revalidate");
res.setHeader(
"Cache-Control",
"public, max-age=10800, s-maxage=10800, stale-while-revalidate"
);
}
res.setHeader("Access-Control-Allow-Methods", "GET");
@ -88,6 +95,7 @@ const getNowPlaying = async (): Promise<Track> => {
const response = await fetch(NOW_PLAYING_ENDPOINT, {
headers: {
// eslint-disable-next-line camelcase
Authorization: `Bearer ${access_token}`,
Accept: "application/json",
"Content-Type": "application/json",
@ -121,6 +129,7 @@ const getTopTracks = async (): Promise<Track[]> => {
const response = await fetch(TOP_TRACKS_ENDPOINT, {
headers: {
// eslint-disable-next-line camelcase
Authorization: `Bearer ${access_token}`,
Accept: "application/json",
"Content-Type": "application/json",

5
assets/js/src/clipboard.js

@ -24,8 +24,9 @@ if (ClipboardJS.isSupported()) {
new ClipboardJS("button.copy-button", {
// actual code element will (should) have class "language-*", even if plaintext
// eslint-disable-next-line quotes
text: (trigger) => trimNewlines(trigger.parentElement.querySelector('code[class^="language-"]').innerText),
text: (trigger) =>
// eslint-disable-next-line quotes
trimNewlines(trigger.parentElement.querySelector('code[class^="language-"]').innerText),
}).on("success", (e) => {
// show a subtle indication of success
e.trigger.innerText = successTerm;

8
assets/js/src/counter.js

@ -27,15 +27,11 @@ if (wrapper && canonical) {
// finally inject the hits...
const counter = document.getElementById("hit-counter");
if (counter) {
counter.appendChild(document.createTextNode(hitsComma));
}
if (counter) counter.appendChild(document.createTextNode(hitsComma));
// ...and hide the loading spinner
const spinner = document.getElementById("hit-spinner");
if (spinner) {
spinner.style.display = "none";
}
if (spinner) spinner.style.display = "none";
} else {
// something went horribly wrong, initiate coverup
wrapper.style.display = "none";

12
assets/js/src/projects.js

@ -14,9 +14,7 @@ if (wrapper) {
<a class="repo-name" href="${repo.url}" target="_blank" rel="noopener">${repo.name}</a>
${(() => {
if (repo.description) {
return html`<p class="repo-description">${repo.description}</p>`;
}
if (repo.description) return html`<p class="repo-description">${repo.description}</p>`;
})()}
${(() => {
if (repo.language) {
@ -60,7 +58,9 @@ if (wrapper) {
})()}
<div class="repo-meta" title="${format(parseJSON(repo.updatedAt), "MMM d, yyyy, h:mm aa z")}">
<span>Updated ${formatDistanceToNowStrict(parseJSON(repo.updatedAt), { addSuffix: true })}</span>
<span>
Updated ${formatDistanceToNowStrict(parseJSON(repo.updatedAt), { addSuffix: true })}
</span>
</div>
`;
@ -75,9 +75,7 @@ if (wrapper) {
});
// we're done, hide the loading spinner
if (spinner) {
spinner.style.display = "none";
}
if (spinner) spinner.style.display = "none";
// the repo descriptions were added after the first twemoji parsing
twemoji.parse(wrapper, {

11
assets/sass/abstracts/_functions.scss

@ -33,9 +33,16 @@
@while string.index("#{$str}", "#{$separator}") != null {
@if (string.index("#{$str}", "#{$separator}") > 1) {
$str-list: list.append($str-list, string.slice("#{$str}", 1, string.index("#{$str}", "#{$separator}") - 1));
$str-list: list.append(
$str-list,
string.slice("#{$str}", 1, string.index("#{$str}", "#{$separator}") - 1)
);
}
$str: string.slice("#{$str}", string.index("#{$str}", "#{$separator}") + 1, string.length("#{$str}"));
$str: string.slice(
"#{$str}",
string.index("#{$str}", "#{$separator}") + 1,
string.length("#{$str}")
);
}
@if (string.slice("#{$str}", 1, string.length("#{$str}")) != "") {

7
assets/sass/abstracts/_settings.scss

@ -8,9 +8,10 @@ $webfont-mono-variable: "Roboto Mono var";
// System fonts
// https://markdotto.com/2018/02/07/github-system-fonts/
$system-fonts-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji",
"Segoe UI Emoji", "Segoe UI Symbol";
$system-fonts-monospace: "SFMono-Regular", "Consolas", "Liberation Mono", "Menlo", "Courier", monospace;
$system-fonts-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif,
"Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
$system-fonts-monospace: "SFMono-Regular", "Consolas", "Liberation Mono", "Menlo", "Courier",
monospace;
$font-stack-sans: list.join($webfont-sans, $system-fonts-sans);
$font-stack-variable: list.join($webfont-sans-variable, $system-fonts-sans);

2
assets/sass/abstracts/_themes.scss

@ -53,5 +53,3 @@ $themes: (
// Icons (modified twemojis)
$icon-bulb-on: 'data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 35"><g fill="none"><path d="M22 11.06c0 6.44-5 7.44-5 13.44 0 3.1-3.12 3.36-5.5 3.36-2.05 0-6.59-.78-6.59-3.36 0-6-4.91-7-4.91-13.44C0 5.03 5.29.14 11.08.14 16.88.14 22 5.03 22 11.06z" fill="#FFD983"/><path d="M15.17 32.5c0 .83-2.24 2.5-4.17 2.5-1.93 0-4.17-1.67-4.17-2.5 0-.83 2.24-.5 4.17-.5 1.93 0 4.17-.33 4.17.5z" fill="#CCD6DD"/><path d="M15.7 10.3a1 1 0 00-1.4 0L11 13.58l-3.3-3.3a1 1 0 10-1.4 1.42l3.7 3.7V26a1 1 0 102 0V15.41l3.7-3.7a1 1 0 000-1.42z" fill="#FFCC4D"/><path d="M17 31a2 2 0 01-2 2H7a2 2 0 01-2-2v-6h12v6z" fill="#99AAB5"/><path d="M5 32a1 1 0 01-.16-1.99l12-2a1 1 0 11.33 1.97l-12 2A.93.93 0 015 32zm0-4a1 1 0 01-.16-1.99l12-2a1 1 0 11.33 1.97l-12 2A.93.93 0 015 28z" fill="#CCD6DD"/></g></svg>';
$icon-bulb-off: 'data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 35"><g fill-rule="nonzero" fill="none"><path d="M22 11.06c0 6.44-5 7.44-5 13.44 0 3.1-3.12 3.36-5.5 3.36-2.05 0-6.59-.78-6.59-3.36 0-6-4.91-7-4.91-13.44C0 5.03 5.29.14 11.08.14 16.88.14 22 5.03 22 11.06z" fill="#CCCBCB"/><path d="M15.17 32.5c0 .83-2.24 2.5-4.17 2.5-1.93 0-4.17-1.67-4.17-2.5 0-.83 2.24-.5 4.17-.5 1.93 0 4.17-.33 4.17.5z" fill="#CCD6DD"/><path d="M15.7 10.3a1 1 0 00-1.4 0L11 13.58l-3.3-3.3a1 1 0 10-1.4 1.42l3.7 3.7V26a1 1 0 102 0V15.41l3.7-3.7a1 1 0 000-1.42z" fill="#7D7A72"/><path d="M17 31a2 2 0 01-2 2H7a2 2 0 01-2-2v-6h12v6z" fill="#99AAB5"/><path d="M5 32a1 1 0 01-.16-1.99l12-2a1 1 0 11.33 1.97l-12 2A.93.93 0 015 32zm0-4a1 1 0 01-.16-1.99l12-2a1 1 0 11.33 1.97l-12 2A.93.93 0 015 28z" fill="#CCD6DD"/></g></svg>';
$icon-wand: 'data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36" width="20" height="20"><g fill="none"><path fill="#292F33" d="M2.651 6.073l26.275 26.276c.391.391 2.888-2.107 2.497-2.497L5.148 3.576c-.39-.391-2.888 2.107-2.497 2.497z"/><path fill="#66757F" d="M29.442 31.23L3.146 4.934l.883-.883 26.296 26.296z"/><path fill="#E1E8ED" d="M33.546 33.483l-.412.412-.671.671a.967.967 0 01-.255.169.988.988 0 01-1.159-.169l-2.102-2.102.495-.495.883-.883 1.119-1.119 2.102 2.102a.999.999 0 010 1.414zM4.029 4.79l-.883.883-.495.495L.442 3.96a.988.988 0 01-.169-1.159.967.967 0 01.169-.255l.671-.671.412-.412a.999.999 0 011.414 0l2.208 2.208L4.029 4.79z"/><path fill="#F5F8FA" d="M30.325 30.497l2.809 2.809-.671.671a.967.967 0 01-.255.169l-2.767-2.767.884-.882zM3.146 5.084L.273 2.211a.967.967 0 01.169-.255l.671-.671 2.916 2.916-.883.883z"/><path fill="#FFAC33" d="M27.897 10.219l1.542.571.6 2.2a.667.667 0 001.287 0l.6-2.2 1.542-.571a.665.665 0 000-1.25l-1.534-.568-.605-2.415a.667.667 0 00-1.293 0l-.605 2.415-1.534.568a.665.665 0 000 1.25m-16.936 9.628l2.61.966.966 2.61a1.103 1.103 0 002.07 0l.966-2.61 2.609-.966a1.103 1.103 0 000-2.07l-2.609-.966-.966-2.61a1.105 1.105 0 00-2.07 0l-.966 2.61-2.61.966a1.104 1.104 0 000 2.07M23.13 4.36l1.383.512.512 1.382a.585.585 0 001.096 0l.512-1.382 1.382-.512a.584.584 0 000-1.096l-1.382-.512-.512-1.382a.585.585 0 00-1.096 0l-.512 1.382-1.383.512a.585.585 0 000 1.096"/></g></svg>';

11
assets/sass/components/_typography.scss

@ -31,7 +31,8 @@ $unicode-subset: U+0000-00FF, U+2000-206F, U+2200-22FF, U+2122;
src: url($base-path + $src + ".woff2") format("woff2-variations"),
url($base-path + $src + ".woff2") format("woff2");
} @else {
src: url($base-path + $src + ".woff2") format("woff2"), url($base-path + $src + ".woff") format("woff");
src: url($base-path + $src + ".woff2") format("woff2"),
url($base-path + $src + ".woff") format("woff");
}
// Allow additional rules to be passed in:
@ -89,7 +90,13 @@ $unicode-subset: U+0000-00FF, U+2000-206F, U+2200-22FF, U+2122;
// Variable
@include font-face("Roboto Mono var", "roboto-mono-subset.var", 100 700, $variable: true);
@include font-face("Roboto Mono var", "roboto-mono-italic-subset.var", 100 700, italic, $variable: true);
@include font-face(
"Roboto Mono var",
"roboto-mono-italic-subset.var",
100 700,
italic,
$variable: true
);
// Legacy
@include font-face("Roboto Mono", "roboto-mono-regular-subset", 400);

4
assets/sass/pages/_home.scss

@ -122,6 +122,8 @@ $colors-home: (
);
$color-serverless: #87cef7;
$icon-wand: 'data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36" width="20" height="20"><g fill="none"><path fill="#292F33" d="M2.651 6.073l26.275 26.276c.391.391 2.888-2.107 2.497-2.497L5.148 3.576c-.39-.391-2.888 2.107-2.497 2.497z"/><path fill="#66757F" d="M29.442 31.23L3.146 4.934l.883-.883 26.296 26.296z"/><path fill="#E1E8ED" d="M33.546 33.483l-.412.412-.671.671a.967.967 0 01-.255.169.988.988 0 01-1.159-.169l-2.102-2.102.495-.495.883-.883 1.119-1.119 2.102 2.102a.999.999 0 010 1.414zM4.029 4.79l-.883.883-.495.495L.442 3.96a.988.988 0 01-.169-1.159.967.967 0 01.169-.255l.671-.671.412-.412a.999.999 0 011.414 0l2.208 2.208L4.029 4.79z"/><path fill="#F5F8FA" d="M30.325 30.497l2.809 2.809-.671.671a.967.967 0 01-.255.169l-2.767-2.767.884-.882zM3.146 5.084L.273 2.211a.967.967 0 01.169-.255l.671-.671 2.916 2.916-.883.883z"/><path fill="#FFAC33" d="M27.897 10.219l1.542.571.6 2.2a.667.667 0 001.287 0l.6-2.2 1.542-.571a.665.665 0 000-1.25l-1.534-.568-.605-2.415a.667.667 0 00-1.293 0l-.605 2.415-1.534.568a.665.665 0 000 1.25m-16.936 9.628l2.61.966.966 2.61a1.103 1.103 0 002.07 0l.966-2.61 2.609-.966a1.103 1.103 0 000-2.07l-2.609-.966-.966-2.61a1.105 1.105 0 00-2.07 0l-.966 2.61-2.61.966a1.104 1.104 0 000 2.07M23.13 4.36l1.383.512.512 1.382a.585.585 0 001.096 0l.512-1.382 1.382-.512a.584.584 0 000-1.096l-1.382-.512-.512-1.382a.585.585 0 00-1.096 0l-.512 1.382-1.383.512a.585.585 0 000 1.096"/></g></svg>';
// ----------------
// Home Styles
@ -176,7 +178,7 @@ div.layout-home {
// easter egg emoji cursor
a#birthday {
&:hover {
cursor: url(themes.$icon-wand) 0 0, auto;
cursor: url($icon-wand) 0 0, auto;
}
}

2
package.json

@ -34,7 +34,7 @@
"@fontsource/roboto-mono": "4.5.0",
"@jakejarvis/dark-mode": "^0.6.3",
"@octokit/graphql": "^4.6.4",
"@octokit/graphql-schema": "^10.60.1",
"@octokit/graphql-schema": "^10.62.0",
"@sentry/node": "^6.11.0",
"clipboard": "^2.0.8",
"cross-fetch": "^3.1.4",

20
yarn.lock

@ -1083,10 +1083,10 @@
is-plain-object "^5.0.0"
universal-user-agent "^6.0.0"
"@octokit/graphql-schema@^10.60.1":
version "10.60.1"
resolved "https://registry.yarnpkg.com/@octokit/graphql-schema/-/graphql-schema-10.60.1.tgz#749b6a7b9d4a790069dd142c76276b3ff721e648"
integrity sha512-izWe3N3F6lSZN9kxGQQw2NgGbfEUZWY6jk78NjzsN7dIVUV/xzLJXFAkREBu+M5IRbKtQfiuD/Y3vjvftWeGNA==
"@octokit/graphql-schema@^10.62.0":
version "10.62.0"
resolved "https://registry.yarnpkg.com/@octokit/graphql-schema/-/graphql-schema-10.62.0.tgz#98b6a4d5577d80ff59ee6d595b017695abb84663"
integrity sha512-AXVF3OkX5cPozz623uDuJuF+o4cSJJEDxQYz4jY/a0aW/O56rowSQw2kxIo9u9dJseXrBx86y3ZMXGv58wQkpw==
dependencies:
graphql "^15.0.0"
graphql-tag "^2.10.3"
@ -3874,9 +3874,9 @@ ee-first@1.1.1:
integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
electron-to-chromium@^1.3.793:
version "1.3.807"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.807.tgz#c2eb803f4f094869b1a24151184ffbbdbf688b1f"
integrity sha512-p8uxxg2a23zRsvQ2uwA/OOI+O4BQxzaR7YKMIGGGQCpYmkFX2CVF5f0/hxLMV7yCr7nnJViCwHLhPfs52rIYCA==
version "1.3.809"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.809.tgz#86db795c41c97f252ee1c849a2f70d0739710776"
integrity sha512-bZoXTEhEe8o10dHX2gNY9KkCSwz1AFk4c0GbmzlTD5WAkUpDb/zY7JjvLvJ/y1wUsURiVmlGdnIeU+gFyTeaXA==
emoji-regex@^7.0.1:
version "7.0.3"
@ -5959,9 +5959,9 @@ is-color-stop@^1.1.0:
rgba-regex "^1.0.0"
is-core-module@^2.2.0, is-core-module@^2.4.0:
version "2.5.0"
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.5.0.tgz#f754843617c70bfd29b7bd87327400cda5c18491"
integrity sha512-TXCMSDsEHMEEZ6eCA8rwRDbLu55MRGmrctljsBX/2v1d9/GzqHOxW5c5oPSgrUt2vBFXebu9rGqckXGPWOlYpg==
version "2.6.0"
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.6.0.tgz#d7553b2526fe59b92ba3e40c8df757ec8a709e19"
integrity sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==
dependencies:
has "^1.0.3"

Loading…
Cancel
Save