mirror of
https://github.com/jakejarvis/jarv.is.git
synced 2025-04-26 08:25:21 -04:00
playing with typescript (probably all wrong)
This commit is contained in:
parent
23debefee2
commit
0a9e0d789e
@ -17,7 +17,16 @@
|
||||
},
|
||||
"rules": {},
|
||||
"overrides": [{
|
||||
"files": ["api/**/*.js"],
|
||||
"files": [
|
||||
"api/**/*.ts"
|
||||
],
|
||||
"extends": [
|
||||
"plugin:@typescript-eslint/recommended"
|
||||
],
|
||||
"plugins": [
|
||||
"@typescript-eslint"
|
||||
],
|
||||
"parser": "@typescript-eslint/parser",
|
||||
"parserOptions": {
|
||||
"ecmaVersion": 2018,
|
||||
"sourceType": "module"
|
||||
|
@ -14,6 +14,7 @@ _vendor/
|
||||
.*
|
||||
postcss.config.js
|
||||
babel.config.json
|
||||
tsconfig.json
|
||||
|
||||
# miscellaneous
|
||||
vercel.json
|
||||
|
@ -1,12 +1,14 @@
|
||||
"use strict";
|
||||
|
||||
const faunadb = require("faunadb"),
|
||||
q = faunadb.query;
|
||||
const numeral = require("numeral");
|
||||
const pluralize = require("pluralize");
|
||||
require("dotenv").config();
|
||||
import { VercelRequest, VercelResponse } from "@vercel/node";
|
||||
import { Client, query as q } from "faunadb";
|
||||
import numeral from "numeral";
|
||||
import pluralize from "pluralize";
|
||||
import dotenv from "dotenv";
|
||||
|
||||
module.exports = async (req, res) => {
|
||||
dotenv.config();
|
||||
|
||||
module.exports = async (req: VercelRequest, res: VercelResponse) => {
|
||||
const { slug } = req.query;
|
||||
|
||||
try {
|
||||
@ -21,12 +23,13 @@ module.exports = async (req, res) => {
|
||||
throw new Error("Parameter `slug` is required.");
|
||||
}
|
||||
|
||||
const client = new faunadb.Client({
|
||||
const client = new Client({
|
||||
secret: process.env.FAUNADB_SERVER_SECRET,
|
||||
});
|
||||
|
||||
// refer to snippet below for the `hit` function defined in the Fauna cloud
|
||||
const result = await client.query(q.Call(q.Function("hit"), slug));
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
const result = await client.query<any>(q.Call(q.Function("hit"), slug));
|
||||
|
||||
// send client the new hit count
|
||||
res.setHeader("Cache-Control", "private, no-cache, no-store, must-revalidate");
|
@ -1,14 +1,18 @@
|
||||
"use strict";
|
||||
|
||||
const { GraphQLClient, gql } = require("graphql-request");
|
||||
const { escape } = require("html-escaper");
|
||||
const numeral = require("numeral");
|
||||
const { DateTime } = require("luxon");
|
||||
import { VercelRequest, VercelResponse } from "@vercel/node";
|
||||
import { GraphQLClient, gql } from "graphql-request";
|
||||
import { escape } from "html-escaper";
|
||||
import numeral from "numeral";
|
||||
import { DateTime } from "luxon";
|
||||
import dotenv from "dotenv";
|
||||
|
||||
dotenv.config();
|
||||
|
||||
const username = "jakejarvis";
|
||||
const endpoint = "https://api.github.com/graphql";
|
||||
|
||||
async function fetchRepos(sort, limit) {
|
||||
async function fetchRepos(sort: string, limit: number) {
|
||||
// https://docs.github.com/en/graphql/guides/forming-calls-with-graphql
|
||||
const client = new GraphQLClient(endpoint, {
|
||||
headers: {
|
||||
@ -64,7 +68,7 @@ async function fetchRepos(sort, limit) {
|
||||
return currentRepos;
|
||||
}
|
||||
|
||||
module.exports = async (req, res) => {
|
||||
module.exports = async (req: VercelRequest, res: VercelResponse) => {
|
||||
try {
|
||||
// some rudimentary error handling
|
||||
if (req.method !== "GET") {
|
86
api/stats.js
86
api/stats.js
@ -1,86 +0,0 @@
|
||||
"use strict";
|
||||
|
||||
const faunadb = require("faunadb"),
|
||||
q = faunadb.query;
|
||||
const numeral = require("numeral");
|
||||
const pluralize = require("pluralize");
|
||||
const rssParser = require("rss-parser");
|
||||
require("dotenv").config();
|
||||
|
||||
const baseUrl = "https://jarv.is/";
|
||||
|
||||
module.exports = async (req, res) => {
|
||||
try {
|
||||
// some rudimentary error handling
|
||||
if (!process.env.FAUNADB_SERVER_SECRET) {
|
||||
throw new Error("Database credentials aren't set.");
|
||||
}
|
||||
if (req.method !== "GET") {
|
||||
throw new Error(`Method ${req.method} not allowed.`);
|
||||
}
|
||||
|
||||
const parser = new rssParser({
|
||||
timeout: 3000,
|
||||
});
|
||||
const client = new faunadb.Client({
|
||||
secret: process.env.FAUNADB_SERVER_SECRET,
|
||||
});
|
||||
|
||||
// get database and RSS results asynchronously
|
||||
const [feed, result] = await Promise.all([
|
||||
parser.parseURL(baseUrl + "feed.xml"),
|
||||
client.query(
|
||||
q.Map(
|
||||
q.Paginate(q.Documents(q.Collection("hits"))),
|
||||
q.Lambda((x) => q.Select("data", q.Get(x)))
|
||||
)
|
||||
),
|
||||
]);
|
||||
|
||||
let stats = {
|
||||
total: {
|
||||
hits: 0,
|
||||
},
|
||||
pages: result.data,
|
||||
};
|
||||
|
||||
stats.pages.map((p) => {
|
||||
// match URLs from RSS feed with db to populate some metadata
|
||||
let match = feed.items.find((x) => x.link === baseUrl + p.slug + "/");
|
||||
if (match) {
|
||||
p.title = match.title;
|
||||
p.url = match.link;
|
||||
p.date = match.isoDate;
|
||||
delete p.slug;
|
||||
}
|
||||
|
||||
// it's easier to add comma-separated numbers and proper pluralization here on the backend
|
||||
p.pretty_hits = numeral(p.hits).format("0,0");
|
||||
p.pretty_unit = pluralize("hit", p.hits);
|
||||
|
||||
// add these hits to running tally
|
||||
stats.total.hits += p.hits;
|
||||
|
||||
return p;
|
||||
});
|
||||
|
||||
// sort by hits (descending)
|
||||
stats.pages.sort((a, b) => {
|
||||
return a.hits > b.hits ? -1 : 1;
|
||||
});
|
||||
|
||||
// do same prettification as above to totals
|
||||
stats.total.pretty_hits = numeral(stats.total.hits).format("0,0");
|
||||
stats.total.pretty_unit = pluralize("hit", stats.total.hits);
|
||||
|
||||
// let Vercel edge cache results for 15 mins
|
||||
res.setHeader("Cache-Control", "s-maxage=900, stale-while-revalidate");
|
||||
res.setHeader("Access-Control-Allow-Methods", "GET");
|
||||
res.setHeader("Access-Control-Allow-Origin", "*");
|
||||
return res.json(stats);
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
|
||||
return res.status(400).json({ message: error.message });
|
||||
}
|
||||
};
|
102
api/stats.ts
Normal file
102
api/stats.ts
Normal file
@ -0,0 +1,102 @@
|
||||
"use strict";
|
||||
|
||||
import { VercelRequest, VercelResponse } from "@vercel/node";
|
||||
import { Client, query as q } from "faunadb";
|
||||
import numeral from "numeral";
|
||||
import pluralize from "pluralize";
|
||||
import rssParser from "rss-parser";
|
||||
import dotenv from "dotenv";
|
||||
|
||||
dotenv.config();
|
||||
|
||||
const baseUrl = "https://jarv.is/";
|
||||
|
||||
module.exports = async (req: VercelRequest, res: VercelResponse) => {
|
||||
try {
|
||||
// some rudimentary error handling
|
||||
if (!process.env.FAUNADB_SERVER_SECRET) {
|
||||
throw new Error("Database credentials aren't set.");
|
||||
}
|
||||
if (req.method !== "GET") {
|
||||
throw new Error(`Method ${req.method} not allowed.`);
|
||||
}
|
||||
|
||||
const parser = new rssParser({
|
||||
timeout: 3000,
|
||||
});
|
||||
const client = new Client({
|
||||
secret: process.env.FAUNADB_SERVER_SECRET,
|
||||
});
|
||||
|
||||
// get database and RSS results asynchronously
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
const [feed, result] = await Promise.all<{ [key: string]: any }, any>([
|
||||
parser.parseURL(baseUrl + "feed.xml"),
|
||||
client.query(
|
||||
q.Map(
|
||||
q.Paginate(q.Documents(q.Collection("hits"))),
|
||||
q.Lambda((x) => q.Select("data", q.Get(x)))
|
||||
)
|
||||
),
|
||||
]);
|
||||
|
||||
// TODO: make typescript interface/type
|
||||
const stats = {
|
||||
total: {
|
||||
hits: 0,
|
||||
pretty_hits: "",
|
||||
pretty_unit: "",
|
||||
},
|
||||
pages: result.data,
|
||||
};
|
||||
|
||||
stats.pages.map(
|
||||
(p: {
|
||||
title: string;
|
||||
url: string;
|
||||
date: string;
|
||||
slug?: string;
|
||||
hits: number;
|
||||
pretty_hits: string;
|
||||
pretty_unit: string;
|
||||
}) => {
|
||||
// match URLs from RSS feed with db to populate some metadata
|
||||
const match = feed.items.find((x: { link: string }) => x.link === baseUrl + p.slug + "/");
|
||||
if (match) {
|
||||
p.title = match.title;
|
||||
p.url = match.link;
|
||||
p.date = match.isoDate;
|
||||
delete p.slug;
|
||||
}
|
||||
|
||||
// it's easier to add comma-separated numbers and proper pluralization here on the backend
|
||||
p.pretty_hits = numeral(p.hits).format("0,0");
|
||||
p.pretty_unit = pluralize("hit", p.hits);
|
||||
|
||||
// add these hits to running tally
|
||||
stats.total.hits += p.hits;
|
||||
|
||||
return p;
|
||||
}
|
||||
);
|
||||
|
||||
// sort by hits (descending)
|
||||
stats.pages.sort((a: { hits: number }, b: { hits: number }) => {
|
||||
return a.hits > b.hits ? -1 : 1;
|
||||
});
|
||||
|
||||
// do same prettification as above to totals
|
||||
stats.total.pretty_hits = numeral(stats.total.hits).format("0,0");
|
||||
stats.total.pretty_unit = pluralize("hit", stats.total.hits);
|
||||
|
||||
// let Vercel edge cache results for 15 mins
|
||||
res.setHeader("Cache-Control", "s-maxage=900, stale-while-revalidate");
|
||||
res.setHeader("Access-Control-Allow-Methods", "GET");
|
||||
res.setHeader("Access-Control-Allow-Origin", "*");
|
||||
return res.json(stats);
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
|
||||
return res.status(400).json({ message: error.message });
|
||||
}
|
||||
};
|
25
package.json
25
package.json
@ -22,16 +22,17 @@
|
||||
"minify:img": "glob-exec --parallel --foreach 'public/**/{img,images}/' -- imagemin '{{file.path}}*' --plugin=mozjpeg --plugin.mozjpeg.progressive --plugin.mozjpeg.quality=85 --plugin=pngquant --plugin.pngquant.quality={0.1,0.3} --plugin.pngquant.speed=1 --plugin.pngquant.strip --plugin=gifsicle --plugin=svgo --out-dir='{{file.path}}'",
|
||||
"lint": "run-s lint:**",
|
||||
"lint:scss": "stylelint 'assets/sass/**/*.scss' --syntax scss",
|
||||
"lint:js": "eslint '**/*.js'",
|
||||
"lint:js": "eslint --ext .js,.ts '**/*.{js,ts}'",
|
||||
"lint:ts": "tsc --noEmit --esModuleInterop **/*.ts",
|
||||
"lint:md": "markdownlint 'content/**/*.md'",
|
||||
"lint:prettier": "prettier --check .",
|
||||
"docker": "docker run --rm -v $(pwd):/src:ro -p 1337:1337 $(docker build -q .)",
|
||||
"percy": "npx percy snapshot"
|
||||
},
|
||||
"dependencies": {
|
||||
"@fontsource/comic-neue": "4.4.2",
|
||||
"@fontsource/inter": "4.4.2",
|
||||
"@fontsource/roboto-mono": "4.4.2",
|
||||
"@fontsource/comic-neue": "4.4.5",
|
||||
"@fontsource/inter": "4.4.5",
|
||||
"@fontsource/roboto-mono": "4.4.5",
|
||||
"dotenv": "^10.0.0",
|
||||
"faunadb": "fauna/faunadb-js#master",
|
||||
"graphql": "^15.5.0",
|
||||
@ -51,6 +52,14 @@
|
||||
"@babel/core": "^7.14.3",
|
||||
"@babel/eslint-parser": "^7.14.4",
|
||||
"@babel/preset-env": "^7.14.4",
|
||||
"@types/html-escaper": "^3.0.0",
|
||||
"@types/luxon": "^1.26.5",
|
||||
"@types/numeral": "^2.0.1",
|
||||
"@types/pluralize": "^0.0.29",
|
||||
"@types/xml2js": "^0.4.8",
|
||||
"@typescript-eslint/eslint-plugin": "^4.26.0",
|
||||
"@typescript-eslint/parser": "^4.26.0",
|
||||
"@vercel/node": "^1.11.0",
|
||||
"autoprefixer": "^10.2.6",
|
||||
"babel-minify": "^0.5.1",
|
||||
"cross-env": "^7.0.3",
|
||||
@ -83,7 +92,9 @@
|
||||
"stylelint-config-sass-guidelines": "~8.0.0",
|
||||
"stylelint-no-unsupported-browser-features": "~5.0.1",
|
||||
"stylelint-prettier": "~1.2.0",
|
||||
"stylelint-scss": "~3.19.0"
|
||||
"stylelint-scss": "~3.19.0",
|
||||
"typescript": "^4.3.2",
|
||||
"web-vitals": "^2.0.1"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"imagemin-gifsicle": "^7.0.0",
|
||||
@ -99,6 +110,10 @@
|
||||
"stylelint --syntax scss",
|
||||
"prettier --write"
|
||||
],
|
||||
"*.ts": [
|
||||
"tsc --noEmit --esModuleInterop",
|
||||
"prettier --write"
|
||||
],
|
||||
"*.js": [
|
||||
"eslint",
|
||||
"prettier --write"
|
||||
|
20
tsconfig.json
Normal file
20
tsconfig.json
Normal file
@ -0,0 +1,20 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"target": "es2015",
|
||||
"lib": [
|
||||
"esnext"
|
||||
],
|
||||
"module": "commonjs",
|
||||
"moduleResolution": "node",
|
||||
"strict": false,
|
||||
"allowJs": true,
|
||||
"noEmit": true,
|
||||
"esModuleInterop": true
|
||||
},
|
||||
"exclude": [
|
||||
"node_modules"
|
||||
],
|
||||
"include": [
|
||||
"**/*.ts"
|
||||
]
|
||||
}
|
45
vercel.json
45
vercel.json
@ -4,48 +4,31 @@
|
||||
"public": false,
|
||||
"trailingSlash": true,
|
||||
"cleanUrls": false,
|
||||
"functions": {
|
||||
"api/**/*.js": {
|
||||
"runtime": "@vercel/node@1.11.0"
|
||||
}
|
||||
},
|
||||
"rewrites": [
|
||||
{ "source": "/favicon.ico", "destination": "/img/favicon.ico" },
|
||||
{ "source": "/favicon-(.*).png", "destination": "/img/favicon-$1.png" },
|
||||
{ "source": "/favicon-([0-9]+).png", "destination": "/img/favicon-$1.png" },
|
||||
{ "source": "/apple-touch-icon.png", "destination": "/img/apple-touch-icon.png" },
|
||||
{ "source": "/apple-touch-icon-precomposed.png", "destination": "/img/apple-touch-icon.png" },
|
||||
{
|
||||
"source": "/api/csp_wizard/",
|
||||
"destination": "https://jarvis.report-uri.com/r/d/csp/enforce"
|
||||
},
|
||||
{
|
||||
"source": "/api/report/",
|
||||
"destination": "https://jarvis.report-uri.com/a/d/g"
|
||||
},
|
||||
{
|
||||
"source": "/api/mention/",
|
||||
"destination": "https://webmention.io/jarv.is/webmention"
|
||||
},
|
||||
{
|
||||
"source": "/api/ping/",
|
||||
"destination": "https://webmention.io/jarv.is/xmlrpc"
|
||||
}
|
||||
{ "source": "/api/csp_wizard/", "destination": "https://jarvis.report-uri.com/r/d/csp/enforce" },
|
||||
{ "source": "/api/report/", "destination": "https://jarvis.report-uri.com/a/d/g" },
|
||||
{ "source": "/api/mention/", "destination": "https://webmention.io/jarv.is/webmention" },
|
||||
{ "source": "/api/ping/", "destination": "https://webmention.io/jarv.is/xmlrpc" }
|
||||
],
|
||||
"redirects": [
|
||||
{ "source": "/notes/:slug/amp.html", "destination": "/notes/:slug/", "statusCode": 301 },
|
||||
{ "source": "/blog/(.*)", "destination": "/notes/" },
|
||||
{ "source": "/archives/(.*)", "destination": "/notes/" },
|
||||
{ "source": "/feed", "destination": "/feed.xml" },
|
||||
{ "source": "/rss", "destination": "/feed.xml" },
|
||||
{ "source": "/index.xml", "destination": "/feed.xml" },
|
||||
{ "source": "/blog/(.*)", "destination": "/notes/", "permanent": true },
|
||||
{ "source": "/archives/(.*)", "destination": "/notes/", "permanent": true },
|
||||
{ "source": "/feed", "destination": "/feed.xml", "permanent": true },
|
||||
{ "source": "/rss", "destination": "/feed.xml", "permanent": true },
|
||||
{ "source": "/index.xml", "destination": "/feed.xml", "permanent": true },
|
||||
{ "source": "/resume/", "destination": "/resume.pdf" },
|
||||
{ "source": "/keybase.txt", "destination": "/.well-known/keybase.txt" },
|
||||
{ "source": "/jarvis.asc", "destination": "/pubkey.asc" },
|
||||
{ "source": "/me.jpg", "destination": "/img/me.jpg", "permanent": true },
|
||||
{ "source": "/me_large.jpg", "destination": "/img/me.jpg", "permanent": true },
|
||||
{ "source": "/img/me_large.jpg", "destination": "/img/me.jpg", "permanent": true },
|
||||
{ "source": "/img/me_hu1c1a997e30e234e83718deb8b3f52283_130509_320x320_resize_q90_lanczos.jpg", "destination": "/img/me.jpg", "permanent": true },
|
||||
{ "source": "/img/logo.svg", "destination": "/img/favicon.svg" },
|
||||
{ "source": "/img/me_large.jpg", "destination": "/img/me.jpg" },
|
||||
{ "source": "/me.jpg", "destination": "/img/me.jpg" },
|
||||
{ "source": "/me_large.jpg", "destination": "/img/me.jpg" },
|
||||
{ "source": "/img/me_hu1c1a997e30e234e83718deb8b3f52283_130509_320x320_resize_q90_lanczos.jpg", "destination": "/img/me.jpg" },
|
||||
{ "source": "/y2k/(.*)", "destination": "https://jakejarvis.github.io/my-first-website/$1" },
|
||||
{ "source": "/ios-trackers/(.*)", "destination": "https://jakejarvis.github.io/ios-trackers/$1" },
|
||||
{ "source": "/awesome/(.*)", "destination": "https://synonymsforawesome.com/" },
|
||||
|
216
yarn.lock
216
yarn.lock
@ -915,20 +915,20 @@
|
||||
minimatch "^3.0.4"
|
||||
strip-json-comments "^3.1.1"
|
||||
|
||||
"@fontsource/comic-neue@4.4.2":
|
||||
version "4.4.2"
|
||||
resolved "https://registry.yarnpkg.com/@fontsource/comic-neue/-/comic-neue-4.4.2.tgz#c38f2aedc505adb7b60f07780edd3633be6f270e"
|
||||
integrity sha512-tyeFzj0XGvDHuEYqH36hG75PCP/4Ut10kKHOEvaqCU6FRIYbCVCDacIOLayVOvefIMtFquH0s8/N+U3HBjePug==
|
||||
"@fontsource/comic-neue@4.4.5":
|
||||
version "4.4.5"
|
||||
resolved "https://registry.yarnpkg.com/@fontsource/comic-neue/-/comic-neue-4.4.5.tgz#00cb5546ca2a9fe9cc2e0fa73349e9202c7b28d5"
|
||||
integrity sha512-0oTyJMmWxiJaf1ZTyyK10RRHBqhYgatAqE0SJPCdithDTzETkHWINEi51lkd95evo418pqmjmjNHGYBgO5CN9w==
|
||||
|
||||
"@fontsource/inter@4.4.2":
|
||||
version "4.4.2"
|
||||
resolved "https://registry.yarnpkg.com/@fontsource/inter/-/inter-4.4.2.tgz#77146e63fe31973360607be46dc664951c3bf1a5"
|
||||
integrity sha512-+KOkPAfUwGKL6UlCPWfRB3nGvitXGPBWYDTSnV6jTf3oTz3B4Z9tDqQ2aH8T9WXGZXYbftlGVXb++f2srlrLdw==
|
||||
"@fontsource/inter@4.4.5":
|
||||
version "4.4.5"
|
||||
resolved "https://registry.yarnpkg.com/@fontsource/inter/-/inter-4.4.5.tgz#bce26ff9dd83898bd610924cff1342cc30d0e89a"
|
||||
integrity sha512-eRUmB54CbyC3MhAuw2VvTPEc3wy8sFi0/1mVHaC7ZXglXcrSWXY+p8Xad/Zy8AcmS9BuqCCEH2qJbOt9XdX65Q==
|
||||
|
||||
"@fontsource/roboto-mono@4.4.2":
|
||||
version "4.4.2"
|
||||
resolved "https://registry.yarnpkg.com/@fontsource/roboto-mono/-/roboto-mono-4.4.2.tgz#f6d60edda979469f87e825f768774eb4cb968edd"
|
||||
integrity sha512-9BVfHVAxSw6jo3CA3o3JODC5okG7Lx3w1qMoMelvm4QA3YUi3QkDKuRBTjNdYSvsJUiuwrCcbYETIFsdBMVC7A==
|
||||
"@fontsource/roboto-mono@4.4.5":
|
||||
version "4.4.5"
|
||||
resolved "https://registry.yarnpkg.com/@fontsource/roboto-mono/-/roboto-mono-4.4.5.tgz#63c54719a8d592d793632501a56d570572c17065"
|
||||
integrity sha512-y9fbKH1eCCkcqtRGhevFlmR5schCRz1GiTT/VYz6z8Ij0WHW0tS26BhMyXhmSgEIiFt+254yS8teqP+cc7Xq0w==
|
||||
|
||||
"@mdn/browser-compat-data@^2.0.7":
|
||||
version "2.0.7"
|
||||
@ -1008,6 +1008,21 @@
|
||||
"@types/minimatch" "*"
|
||||
"@types/node" "*"
|
||||
|
||||
"@types/html-escaper@^3.0.0":
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@types/html-escaper/-/html-escaper-3.0.0.tgz#97d7df443c0fc86e3abdd0971f4814a58e3ca762"
|
||||
integrity sha512-OcJcvP3Yk8mjYwf/IdXZtTE1tb/u0WF0qa29ER07ZHCYUBZXSN29Z1mBS+/96+kNMGTFUAbSz9X+pHmHpZrTCw==
|
||||
|
||||
"@types/json-schema@^7.0.7":
|
||||
version "7.0.7"
|
||||
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad"
|
||||
integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==
|
||||
|
||||
"@types/luxon@^1.26.5":
|
||||
version "1.26.5"
|
||||
resolved "https://registry.yarnpkg.com/@types/luxon/-/luxon-1.26.5.tgz#843fb705e16e4d2a90847a351b799ea9d879859e"
|
||||
integrity sha512-XeQxxRMyJi1znfzHw4CGDLyup/raj84SnjjkI2fDootZPGlB0yqtvlvEIAmzHDa5wiEI5JJevZOWxpcofsaV+A==
|
||||
|
||||
"@types/mdast@^3.0.0":
|
||||
version "3.0.3"
|
||||
resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.3.tgz#2d7d671b1cd1ea3deb306ea75036c2a0407d2deb"
|
||||
@ -1035,11 +1050,21 @@
|
||||
resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e"
|
||||
integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==
|
||||
|
||||
"@types/numeral@^2.0.1":
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/numeral/-/numeral-2.0.1.tgz#f7270a16c643d5796199b2a03d1f28595d38f687"
|
||||
integrity sha512-f0LSiBOMnSGILpylIZzYXtnHbhosjPI916W9AkB171MnY+7IVuXHfb7Ohv3AkaDeOieiq74f6vy9ROMxRhfZ1Q==
|
||||
|
||||
"@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==
|
||||
|
||||
"@types/pluralize@^0.0.29":
|
||||
version "0.0.29"
|
||||
resolved "https://registry.yarnpkg.com/@types/pluralize/-/pluralize-0.0.29.tgz#6ffa33ed1fc8813c469b859681d09707eb40d03c"
|
||||
integrity sha512-BYOID+l2Aco2nBik+iYS4SZX0Lf20KPILP5RGmM1IgzdwNdTs0eebiFriOPcej1sX9mLnSoiNte5zcFxssgpGA==
|
||||
|
||||
"@types/q@^1.5.1":
|
||||
version "1.5.4"
|
||||
resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24"
|
||||
@ -1050,6 +1075,92 @@
|
||||
resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e"
|
||||
integrity sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ==
|
||||
|
||||
"@types/xml2js@^0.4.8":
|
||||
version "0.4.8"
|
||||
resolved "https://registry.yarnpkg.com/@types/xml2js/-/xml2js-0.4.8.tgz#84c120c864a5976d0b5cf2f930a75d850fc2b03a"
|
||||
integrity sha512-EyvT83ezOdec7BhDaEcsklWy7RSIdi6CNe95tmOAK0yx/Lm30C9K75snT3fYayK59ApC2oyW+rcHErdG05FHJA==
|
||||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
"@typescript-eslint/eslint-plugin@^4.26.0":
|
||||
version "4.26.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.26.0.tgz#12bbd6ebd5e7fabd32e48e1e60efa1f3554a3242"
|
||||
integrity sha512-yA7IWp+5Qqf+TLbd8b35ySFOFzUfL7i+4If50EqvjT6w35X8Lv0eBHb6rATeWmucks37w+zV+tWnOXI9JlG6Eg==
|
||||
dependencies:
|
||||
"@typescript-eslint/experimental-utils" "4.26.0"
|
||||
"@typescript-eslint/scope-manager" "4.26.0"
|
||||
debug "^4.3.1"
|
||||
functional-red-black-tree "^1.0.1"
|
||||
lodash "^4.17.21"
|
||||
regexpp "^3.1.0"
|
||||
semver "^7.3.5"
|
||||
tsutils "^3.21.0"
|
||||
|
||||
"@typescript-eslint/experimental-utils@4.26.0":
|
||||
version "4.26.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.26.0.tgz#ba7848b3f088659cdf71bce22454795fc55be99a"
|
||||
integrity sha512-TH2FO2rdDm7AWfAVRB5RSlbUhWxGVuxPNzGT7W65zVfl8H/WeXTk1e69IrcEVsBslrQSTDKQSaJD89hwKrhdkw==
|
||||
dependencies:
|
||||
"@types/json-schema" "^7.0.7"
|
||||
"@typescript-eslint/scope-manager" "4.26.0"
|
||||
"@typescript-eslint/types" "4.26.0"
|
||||
"@typescript-eslint/typescript-estree" "4.26.0"
|
||||
eslint-scope "^5.1.1"
|
||||
eslint-utils "^3.0.0"
|
||||
|
||||
"@typescript-eslint/parser@^4.26.0":
|
||||
version "4.26.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.26.0.tgz#31b6b732c9454f757b020dab9b6754112aa5eeaf"
|
||||
integrity sha512-b4jekVJG9FfmjUfmM4VoOItQhPlnt6MPOBUL0AQbiTmm+SSpSdhHYlwayOm4IW9KLI/4/cRKtQCmDl1oE2OlPg==
|
||||
dependencies:
|
||||
"@typescript-eslint/scope-manager" "4.26.0"
|
||||
"@typescript-eslint/types" "4.26.0"
|
||||
"@typescript-eslint/typescript-estree" "4.26.0"
|
||||
debug "^4.3.1"
|
||||
|
||||
"@typescript-eslint/scope-manager@4.26.0":
|
||||
version "4.26.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.26.0.tgz#60d1a71df162404e954b9d1c6343ff3bee496194"
|
||||
integrity sha512-G6xB6mMo4xVxwMt5lEsNTz3x4qGDt0NSGmTBNBPJxNsrTXJSm21c6raeYroS2OwQsOyIXqKZv266L/Gln1BWqg==
|
||||
dependencies:
|
||||
"@typescript-eslint/types" "4.26.0"
|
||||
"@typescript-eslint/visitor-keys" "4.26.0"
|
||||
|
||||
"@typescript-eslint/types@4.26.0":
|
||||
version "4.26.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.26.0.tgz#7c6732c0414f0a69595f4f846ebe12616243d546"
|
||||
integrity sha512-rADNgXl1kS/EKnDr3G+m7fB9yeJNnR9kF7xMiXL6mSIWpr3Wg5MhxyfEXy/IlYthsqwBqHOr22boFbf/u6O88A==
|
||||
|
||||
"@typescript-eslint/typescript-estree@4.26.0":
|
||||
version "4.26.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.26.0.tgz#aea17a40e62dc31c63d5b1bbe9a75783f2ce7109"
|
||||
integrity sha512-GHUgahPcm9GfBuy3TzdsizCcPjKOAauG9xkz9TR8kOdssz2Iz9jRCSQm6+aVFa23d5NcSpo1GdHGSQKe0tlcbg==
|
||||
dependencies:
|
||||
"@typescript-eslint/types" "4.26.0"
|
||||
"@typescript-eslint/visitor-keys" "4.26.0"
|
||||
debug "^4.3.1"
|
||||
globby "^11.0.3"
|
||||
is-glob "^4.0.1"
|
||||
semver "^7.3.5"
|
||||
tsutils "^3.21.0"
|
||||
|
||||
"@typescript-eslint/visitor-keys@4.26.0":
|
||||
version "4.26.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.26.0.tgz#26d2583169222815be4dcd1da4fe5459bc3bcc23"
|
||||
integrity sha512-cw4j8lH38V1ycGBbF+aFiLUls9Z0Bw8QschP3mkth50BbWzgFS33ISIgBzUMuQ2IdahoEv/rXstr8Zhlz4B1Zg==
|
||||
dependencies:
|
||||
"@typescript-eslint/types" "4.26.0"
|
||||
eslint-visitor-keys "^2.0.0"
|
||||
|
||||
"@vercel/node@^1.11.0":
|
||||
version "1.11.0"
|
||||
resolved "https://registry.yarnpkg.com/@vercel/node/-/node-1.11.0.tgz#2c34e4cab9dfaf8a796a0b590b20d2f6cf222749"
|
||||
integrity sha512-GmEUuOloy6Pdy5Qj5Zm7HmxcO/5VRLG99WUg15V7GD0fKq3sJtnCnzy4f1+9fpVbQGMefjy+pY1dWUhkB6YEGA==
|
||||
dependencies:
|
||||
"@types/node" "*"
|
||||
ts-node "8.9.1"
|
||||
typescript "3.9.3"
|
||||
|
||||
abort-controller@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392"
|
||||
@ -1176,6 +1287,11 @@ archive-type@^4.0.0:
|
||||
dependencies:
|
||||
file-type "^4.2.0"
|
||||
|
||||
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"
|
||||
resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
|
||||
@ -1724,6 +1840,11 @@ buffer-fill@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c"
|
||||
integrity sha1-+PeLdniYiO858gXNY39o5wISKyw=
|
||||
|
||||
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==
|
||||
|
||||
buffer@^5.2.1:
|
||||
version "5.7.1"
|
||||
resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
|
||||
@ -2447,6 +2568,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@^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"
|
||||
resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
|
||||
@ -2738,6 +2864,13 @@ eslint-utils@^2.1.0:
|
||||
dependencies:
|
||||
eslint-visitor-keys "^1.1.0"
|
||||
|
||||
eslint-utils@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672"
|
||||
integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==
|
||||
dependencies:
|
||||
eslint-visitor-keys "^2.0.0"
|
||||
|
||||
eslint-visitor-keys@^1.1.0, 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"
|
||||
@ -3673,7 +3806,7 @@ hugo-extended@jakejarvis/hugo-extended#9f615221831632cb3b8879ab3fc420fff921e1fd:
|
||||
dependencies:
|
||||
chalk "^4.1.1"
|
||||
decompress "^4.2.1"
|
||||
execa "^5.1.1"
|
||||
execa "^5.0.1"
|
||||
follow-redirects "^1.14.1"
|
||||
sumchecker "^3.0.1"
|
||||
|
||||
@ -4699,6 +4832,11 @@ make-dir@^3.0.0:
|
||||
dependencies:
|
||||
semver "^6.0.0"
|
||||
|
||||
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-cache@^0.2.2:
|
||||
version "0.2.2"
|
||||
resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
|
||||
@ -6298,7 +6436,7 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0:
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
|
||||
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
|
||||
|
||||
semver@^7.2.1, semver@^7.3.4:
|
||||
semver@^7.2.1, semver@^7.3.4, semver@^7.3.5:
|
||||
version "7.3.5"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7"
|
||||
integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==
|
||||
@ -6449,6 +6587,14 @@ source-map-resolve@^0.5.0:
|
||||
source-map-url "^0.4.0"
|
||||
urix "^0.1.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-url@^0.4.0:
|
||||
version "0.4.1"
|
||||
resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56"
|
||||
@ -6459,7 +6605,7 @@ source-map@^0.5.0, source-map@^0.5.6:
|
||||
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.0, source-map@^0.6.1, source-map@~0.6.0:
|
||||
version "0.6.1"
|
||||
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
|
||||
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
|
||||
@ -7027,11 +7173,29 @@ trough@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406"
|
||||
integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==
|
||||
|
||||
tslib@^1.9.0:
|
||||
ts-node@8.9.1:
|
||||
version "8.9.1"
|
||||
resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.9.1.tgz#2f857f46c47e91dcd28a14e052482eb14cfd65a5"
|
||||
integrity sha512-yrq6ODsxEFTLz0R3BX2myf0WBCSQh9A+py8PBo1dCzWIOcvisbyH6akNKqDHMgXePF2kir5mm5JXJTH3OUJYOQ==
|
||||
dependencies:
|
||||
arg "^4.1.0"
|
||||
diff "^4.0.1"
|
||||
make-error "^1.1.1"
|
||||
source-map-support "^0.5.17"
|
||||
yn "3.1.1"
|
||||
|
||||
tslib@^1.8.1, tslib@^1.9.0:
|
||||
version "1.14.1"
|
||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
|
||||
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
|
||||
|
||||
tsutils@^3.21.0:
|
||||
version "3.21.0"
|
||||
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"
|
||||
integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==
|
||||
dependencies:
|
||||
tslib "^1.8.1"
|
||||
|
||||
tunnel-agent@^0.6.0:
|
||||
version "0.6.0"
|
||||
resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
|
||||
@ -7111,6 +7275,16 @@ typedarray-to-buffer@^3.1.5:
|
||||
dependencies:
|
||||
is-typedarray "^1.0.0"
|
||||
|
||||
typescript@3.9.3:
|
||||
version "3.9.3"
|
||||
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.3.tgz#d3ac8883a97c26139e42df5e93eeece33d610b8a"
|
||||
integrity sha512-D/wqnB2xzNFIcoBG9FG8cXRDjiqSTbG2wd8DMZeQyJlP1vfTkIxH4GKveWaEBYySKIg+USu+E+EDIR47SqnaMQ==
|
||||
|
||||
typescript@^4.3.2:
|
||||
version "4.3.2"
|
||||
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.2.tgz#399ab18aac45802d6f2498de5054fcbbe716a805"
|
||||
integrity sha512-zZ4hShnmnoVnAHpVHWpTcxdv7dWP60S2FsydQLV8V5PbS3FifjWFFRiHSWpDJahly88PRyV5teTSLoq4eG7mKw==
|
||||
|
||||
uc.micro@^1.0.1, uc.micro@^1.0.5:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac"
|
||||
@ -7346,6 +7520,11 @@ wcwidth@^1.0.1:
|
||||
dependencies:
|
||||
defaults "^1.0.3"
|
||||
|
||||
web-vitals@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-2.0.1.tgz#d122720bd9c8dd69792b19c0f6ab0346861a880f"
|
||||
integrity sha512-niqKyp2T6xF9EzSi+xx+V6qitE0YfagzfUmDAa9qeCrIVeyfzQQ85Uy0ykeRlEVDCCqkhYccoUunNf9ZIQcvtA==
|
||||
|
||||
which-boxed-primitive@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6"
|
||||
@ -7495,6 +7674,11 @@ yauzl@^2.4.2:
|
||||
buffer-crc32 "~0.2.3"
|
||||
fd-slicer "~1.1.0"
|
||||
|
||||
yn@3.1.1:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"
|
||||
integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==
|
||||
|
||||
zwitch@^1.0.0:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-1.0.5.tgz#d11d7381ffed16b742f6af7b3f223d5cd9fe9920"
|
||||
|
Loading…
x
Reference in New Issue
Block a user