on master help sign in
Merge pull request #1744 from urbit/mp/og-cards

pages: update opengraph cards

commit544ab202820b2103b19b1cae3848595a787469c1 authorGordon <gordon.cieplak@urbit.org> dateWed 17 Aug 2022, 18:38 (4 years ago) parentfbd04ff7c91d97
44 files changed+1038−119
components/BasicPage.js+1−1 components/GrantProgramOverview.js+1−1 components/Meta.js+8−6 components/ecosystem/BasicPage.js+11−9 content/marketplaces/azimuth-shop.md+1 content/marketplaces/lanlyd.md+1 content/marketplaces/mocbel-house.md+1 content/marketplaces/networked-subject.md+1 content/marketplaces/opensea.md+1 content/marketplaces/planet-market.md+1 content/marketplaces/urbit-live.md+1 content/marketplaces/urbitex.md+1 content/marketplaces/urbitme.md+1 content/marketplaces/wexpert-systems.md+1 content/organizations/dalten.md+1 content/organizations/holium.md+1 content/organizations/mars-review-of-books.md+1 content/organizations/quartus.md+1 content/organizations/reciprocal.md+1 content/organizations/third-earth.md+1 content/organizations/tirrel.md+1 content/organizations/tlon.md+1 content/organizations/uqbar.md+1 content/organizations/urbit-foundation.md+1 content/overview/_index.md+1 package-lock.json+876−22 package.json+3−1 pages/api/sigil.js+60 pages/applications/[[...application]].js+4−15 pages/blog/[slug].js+1−2 pages/community/[[...slug]].js+1−1 pages/ecosystem/index.js+1−1 pages/ecosystem/spotlight/[slug].js+1−1 pages/events/[slug].js+1−1 pages/getting-started/[[...slug]].js+1−1 pages/grants/[slug].js+4−2 pages/groups/[[...group]].js+4−22 pages/ids/[id].js+16−22 pages/index.js+7−1 pages/marketplaces/[slug].js+2−2 pages/organizations/[slug].js+11−5 pages/overview/[[...slug]].js+1−1 pages/podcasts/[slug].js+1−1 pages/updates/[slug].js+1−1
components/BasicPage.js+1−1
@@ -22,7 +22,7 @@ export default function BasicPage({ post, markdown, search, index = false }) {
2222 return (
2323 <Container>
2424 <Head>
25− <title>Urbit • {post.title}</title>
25+ <title>{post.title}</title>
2626 {Meta(post)}
2727 </Head>
2828 <IntraNav ourSite="https://urbit.org" search={search} />
components/GrantProgramOverview.js+1−1
@@ -32,7 +32,7 @@ export default function GrantProgramOverview({
3232 return (
3333 <Container>
3434 <Head>
35− <title>{title} • Grants • urbit.org</title>
35+ <title>{title} • Grants</title>
3636 {Meta(post)}
3737 </Head>
3838 <IntraNav ourSite="https://urbit.org" search={search} />
components/Meta.js+8−6
@@ -1,21 +1,23 @@
1−export default function Meta(post, disableImage) {
2− const author = post?.extra?.author || "Urbit";
3− const title = post?.title ? `${post.title} - ` : "";
1+export default function Meta(post, disableImage, large = false) {
2+ const author = post?.extra?.author || "urbit.org";
3+ const title = post?.title ? post.title : "";
44 const description =
55 post?.description || "Urbit is a personal server built from scratch.";
66 const image =
7− post?.extra?.image || post?.image || "https://media.urbit.org/logo/urbit-logo-card.png";
7+ post?.extra?.image ||
8+ post?.image ||
9+ "https://media.urbit.org/logo/urbit-logo-card.png";
810 return (
911 <>
1012 <link rel="icon" type="image/png" href="/images/favicon.ico" />
1113 <meta
1214 name="twitter:card"
13− content="summary_large_image"
15+ content={large ? "summary_large_image" : "summary"}
1416 key="twitter-card"
1517 />
1618 <meta name="twitter:site" content="@urbit" key="twitter-site" />
1719 <meta name="twitter:creator" content="@urbit" key="twitter-creator" />
18− <meta name="og:title" content={`${title}urbit.org`} key="title" />
20+ <meta name="og:title" content={title} key="title" />
1921 <meta name="og:description" content={description} key="description" />
2022 <meta name="description" content={description} />
2123 <meta name="author" content={author} key="author" />
components/ecosystem/BasicPage.js+11−9
@@ -25,13 +25,17 @@ export default function BasicPage({
2525 if (!router.isFallback && !post?.slug) {
2626 return <ErrorPage />;
2727 }
28+ const metaPost = Object.assign({}, post);
29+ metaPost.title = `${post.title} - ${section}`;
30+ metaPost.description =
31+ section === "Podcast" ? `${post.podcast} - ${post.date}` : post.description;
2832 return (
2933 <Container>
3034 <Head>
3135 <title>
32− {post.title} • {section} • Urbit
36+ {post.title} • {section}
3337 </title>
34− {Meta(post)}
38+ {Meta(metaPost)}
3539 </Head>
3640 <IntraNav ourSite="https://urbit.org" search={search} />
3741 <SingleColumn>
@@ -40,12 +44,10 @@ export default function BasicPage({
4044 <div className="flex items-center space-x-4">
4145 <img src={post.image} className="w-36" />
4246 <div className="flex flex-col pl-2">
43− <h1
44− className={classnames({ "text-3xl": section === "Podcasts" })}
45− >
47+ <h1 className={classnames({ "text-3xl": section === "Podcast" })}>
4648 {post.title}
4749 </h1>
48− <p>{section.slice(0, -1)}</p>
50+ <p>{section}</p>
4951 </div>
5052 </div>
5153 {/* General purpose metadata bar -- podcast listen button is special-cased URL, flexed at the end of the row */}
@@ -63,7 +65,7 @@ export default function BasicPage({
6365 <p className="shrink-0">{post.date}</p>
6466 </div>
6567 )}
66− {post?.URL && section !== "Podcasts" && (
68+ {post?.URL && section !== "Podcast" && (
6769 <div className="flex flex-col">
6870 <p className="font-bold text-wall-400">Website</p>
6971 <a
@@ -74,7 +76,7 @@ export default function BasicPage({
7476 </a>
7577 </div>
7678 )}
77− {post?.URL && section === "Marketplaces" && (
79+ {post?.URL && section === "Urbit Marketplace" && (
7880 <div className="flex flex-col">
7981 <p className="font-bold text-wall-400">Accepts</p>
8082 <p className="text-sm font-semibold font-mono">
@@ -83,7 +85,7 @@ export default function BasicPage({
8385 </div>
8486 )}
8587 </div>
86− {post?.URL && section === "Podcasts" && (
88+ {post?.URL && section === "Podcast" && (
8789 <a
8890 href={post.URL}
8991 className="button-lg bg-green-400 text-white cursor-pointer flex space-x-2"
content/marketplaces/azimuth-shop.md+1
@@ -1,5 +1,6 @@
11+++
22title = "Azimuth Shop"
3+description = "Azimuth.shop is a Layer 2 planet marketplace offering planets for sale at extremely competitive prices, accepting ETH for payment."
34image = "https://storage.googleapis.com/media.urbit.org/site/ecosystem/marketplaces/azimuthshop.png"
45URL = "https://azimuth.shop/"
56payment = ["ETH"]
content/marketplaces/lanlyd.md+1
@@ -1,5 +1,6 @@
11+++
22title = "~lanlyd"
3+description = "~lanlyd is a star on the Urbit network."
34image = "https://storage.googleapis.com/media.urbit.org/site/ecosystem/marketplaces/lanlyd.png"
45URL = "https://lanlyd.net"
56payment = ["USD"]
content/marketplaces/mocbel-house.md+1
@@ -1,5 +1,6 @@
11+++
22title = "~mocbel house"
3+description = "~mocbel house is a layer 2 planet marketplace, accepting BTC, ETH, and ADA."
34image = "https://storage.googleapis.com/media.urbit.org/site/ecosystem/marketplaces/mocbelhouse.png"
45URL = "https://mocbel.house/"
56payment = ["ETH","BTC","ADA"]
content/marketplaces/networked-subject.md+1
@@ -1,5 +1,6 @@
11+++
22title = "networked subject_"
3+description = "Networked Subject is an independent, boutique Urbit star service, planet market and a collection of Urbit information and tutorials."
34image = "https://storage.googleapis.com/media.urbit.org/site/ecosystem/marketplaces/subject.network.png"
45URL = "https://subject.network/buy/"
56payment = ["BTC"]
content/marketplaces/opensea.md+1
@@ -1,5 +1,6 @@
11+++
22title = "OpenSea"
3+description = "Opensea is the world's largest market for NFTs."
34image = "https://storage.googleapis.com/media.urbit.org/site/ecosystem/organizations/opensea.png"
45URL = "https://opensea.io/category/urbit-id"
56payment = ["ETH"]
content/marketplaces/planet-market.md+1
@@ -1,5 +1,6 @@
11+++
22title = "Planet Market"
3+description = "The easiest way to get on Urbit."
34image = "https://storage.googleapis.com/media.urbit.org/site/ecosystem/marketplaces/planet.market.png"
45URL = "https://planet.market"
56payment = ["USD"]
content/marketplaces/urbit-live.md+1
@@ -1,5 +1,6 @@
11+++
22title = "Urbit.live"
3+description = "Urbit.live is Urbit’s largest planet exchange and first network explorer, selling Layer 1 planets and stars for ETH."
34image = "https://urbit.live/static/media/urbit-live-logo-png-400.6ec9a92b.png"
45URL = "https://urbit.live"
56payment = ["ETH"]
content/marketplaces/urbitex.md+1
@@ -1,5 +1,6 @@
11+++
22title = "Urbitex"
3+description = "Urbitex is an automated marketplace and network explorer for Urbit address space."
34image = "https://storage.googleapis.com/media.urbit.org/site/ecosystem/marketplaces/urbitex-logo.png"
45URL = "https://urbitex.io"
56payment = ["ETH"]
content/marketplaces/urbitme.md+1
@@ -1,5 +1,6 @@
11+++
22title = "Urbit.me"
3+description = "Urbit.me offers planets with rare sigils."
34image = "https://storage.googleapis.com/media.urbit.org/site/ecosystem/marketplaces/urbitme.png"
45URL = "https://urbit.me"
56payment = ["ETH"]
content/marketplaces/wexpert-systems.md+1
@@ -1,5 +1,6 @@
11+++
22title = "Wexpert.systems"
3+description = "Wexpert Systems is an Urbit software and services company which offers full-service premium Urbit hosting on physical servers, with minimal dependence on Big Tech cloud services."
34image = "https://storage.googleapis.com/media.urbit.org/site/ecosystem/marketplaces/wexpertsystems.png"
45URL = "https://wexpert.systems"
56payment = ["BTC"]
content/organizations/dalten.md+1
@@ -1,5 +1,6 @@
11+++
22title = "Dalten Collective"
3+description = "Dalten is a distributed fellowship of like minded individuals."
34image = "https://storage.googleapis.com/media.urbit.org/site/ecosystem/organizations/dalten.jpg"
45URL = "https://dalten.org"
56ships = ["~dalten", "~magped-magped-rabsef-bicrym", "~mirler-dozzod-talwet"]
content/organizations/holium.md+1
@@ -1,5 +1,6 @@
11+++
22title = "Holium"
3+description = "Holium's mission is to enable the networked state."
34image = "https://storage.googleapis.com/media.urbit.org/site/ecosystem/organizations/holium.png"
45URL = "https://holium.com"
56ships = ["~livdel-binmun-lomder-librun", "~lomder-librun"]
content/organizations/mars-review-of-books.md+1
@@ -1,5 +1,6 @@
11+++
22title = "The Mars Review of Books"
3+description = "The Mars Review of Books is a magazine in print and on Urbit which combines ruthlessly intelligent and fearless sense-making on subjects of global importance with today’s most stylish belletristic writing on contemporary arts and culture."
34image = "https://storage.googleapis.com/media.urbit.org/site/ecosystem/organizations/marsreview.jpg"
45URL = "https://store.marsreview.org"
56ships = []
content/organizations/quartus.md+1
@@ -1,5 +1,6 @@
11+++
22title = "Quartus by Dalten"
3+description = "We build software using the novel affordances of Urbit."
34image = "https://freedom-club.sfo2.digitaloceanspaces.com/ab_Quartus-03.jpg"
45URL = "https://www.quartus.co/"
56ships = ["~mister-dozzod-dalten", "~laddys-dozzod-dalten", "~magped-magped-rabsef-bicrym", "~doller-doller-rabsef-bicrym"]
content/organizations/reciprocal.md+1
@@ -1,5 +1,6 @@
11+++
22title = "Reciprocal Ltd."
3+description = "Reciprocal Ltd. is an interactive design and development studio."
34image = "https://s3.us-east-1.amazonaws.com/haddefsigwen1/reciprocal/2022.5.20..19.52.50-B137D4AA-DA9E-4B07-98CE-C001C576C7CA_1_201_a.jpeg"
45URL = "https://reciprocal.ltd"
56ships = ["~sitden-sonnet", "~haddef-sigwen"]
content/organizations/third-earth.md+1
@@ -1,5 +1,6 @@
11+++
22title = "Third.Earth"
3+description = "Third.Earth is an Urbit hosting and development company focused on bridging Web2 capabilities to the Urbit ecosystem."
34image = "https://storage.googleapis.com/media.urbit.org/site/ecosystem/organizations/thirdearth.png"
45URL = "https://third.earth"
56ships = ["~botwet"]
content/organizations/tirrel.md+1
@@ -1,5 +1,6 @@
11+++
22title = "Tirrel Corporation"
3+description = "Tirrel Corporation is an Urbit product studio."
34image = "https://storage.googleapis.com/media.urbit.org/site/ecosystem/organizations/Tirrel%20Corp%20Logo.png"
45URL = "https://tirrel.io"
56ships = ["~tirrel"]
content/organizations/tlon.md+1
@@ -1,5 +1,6 @@
11+++
22title = "Tlon"
3+description = "The first developer of Urbit. Their work continues to maintain core infrastructure development in addition to designing products for communities on the network."
34image = "https://storage.googleapis.com/media.urbit.org/site/ecosystem/organizations/tlon.png"
45URL = "https://tlon.io"
56ships = ["~mister-dister-dozzod-dozzod", "~lander-dister-dozzod-dozzod"]
content/organizations/uqbar.md+1
@@ -1,5 +1,6 @@
11+++
22title = "Uqbar"
3+description = "Uqbar is a one-stop coding environment that makes writing and deploying smart contracts simple, efficient, and secure."
34image = "https://storage.googleapis.com/media.urbit.org/site/ecosystem/organizations/uqbar.png"
45URL = "https://uqbar.network"
56ships = ["~dister-fabnev-hinmur", "~hocwyn-tipwex"]
content/organizations/urbit-foundation.md+1
@@ -1,5 +1,6 @@
11+++
22title = "Urbit Foundation"
3+description = "Urbit Foundation is a non-profit organization whose mission is to ensure Urbit's success as a technology."
34image = "https://storage.googleapis.com/media.urbit.org/site/ecosystem/organizations/urbit-foundation.png"
45URL = "https://urbit.org"
56ships = ["~lapdeg"]
content/overview/_index.md+1
@@ -1,5 +1,6 @@
11+++
22title = "Introduction"
3+description = "We think the internet can’t be saved."
34sort_by = "weight"
45+++
56
package-lock.json+876−22
@@ -16,6 +16,7 @@
1616 "@urbit/markdoc": "^0.1.4",
1717 "axios": "^0.26.1",
1818 "buffer": "^6.0.3",
19+ "canvas": "^2.9.3",
1920 "classnames": "^2.3.1",
2021 "deepmerge": "^4.2.2",
2122 "downshift": "^6.1.5",
@@ -62,6 +63,25 @@
6263 "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz",
6364 "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg=="
6465 },
66+ "node_modules/@mapbox/node-pre-gyp": {
67+ "version": "1.0.9",
68+ "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.9.tgz",
69+ "integrity": "sha512-aDF3S3rK9Q2gey/WAttUlISduDItz5BU3306M9Eyv6/oS40aMprnopshtlKTykxRNIBEZuRMaZAnbrQ4QtKGyw==",
70+ "dependencies": {
71+ "detect-libc": "^2.0.0",
72+ "https-proxy-agent": "^5.0.0",
73+ "make-dir": "^3.1.0",
74+ "node-fetch": "^2.6.7",
75+ "nopt": "^5.0.0",
76+ "npmlog": "^5.0.1",
77+ "rimraf": "^3.0.2",
78+ "semver": "^7.3.5",
79+ "tar": "^6.1.11"
80+ },
81+ "bin": {
82+ "node-pre-gyp": "bin/node-pre-gyp"
83+ }
84+ },
6585 "node_modules/@next/env": {
6686 "version": "12.2.4",
6787 "resolved": "https://registry.npmjs.org/@next/env/-/env-12.2.4.tgz",
@@ -368,6 +388,11 @@
368388 "node": ">=14.7.0"
369389 }
370390 },
391+ "node_modules/abbrev": {
392+ "version": "1.1.1",
393+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
394+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
395+ },
371396 "node_modules/acorn": {
372397 "version": "7.4.1",
373398 "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
@@ -397,6 +422,25 @@
397422 "node": ">=0.4.0"
398423 }
399424 },
425+ "node_modules/agent-base": {
426+ "version": "6.0.2",
427+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
428+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
429+ "dependencies": {
430+ "debug": "4"
431+ },
432+ "engines": {
433+ "node": ">= 6.0.0"
434+ }
435+ },
436+ "node_modules/ansi-regex": {
437+ "version": "5.0.1",
438+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
439+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
440+ "engines": {
441+ "node": ">=8"
442+ }
443+ },
400444 "node_modules/ansi-styles": {
401445 "version": "4.3.0",
402446 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
@@ -424,6 +468,23 @@
424468 "node": ">= 8"
425469 }
426470 },
471+ "node_modules/aproba": {
472+ "version": "2.0.0",
473+ "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz",
474+ "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ=="
475+ },
476+ "node_modules/are-we-there-yet": {
477+ "version": "2.0.0",
478+ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz",
479+ "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==",
480+ "dependencies": {
481+ "delegates": "^1.0.0",
482+ "readable-stream": "^3.6.0"
483+ },
484+ "engines": {
485+ "node": ">=10"
486+ }
487+ },
427488 "node_modules/arg": {
428489 "version": "5.0.2",
429490 "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
@@ -507,8 +568,7 @@
507568 "node_modules/balanced-match": {
508569 "version": "1.0.2",
509570 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
510− "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
511− "dev": true
571+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
512572 },
513573 "node_modules/base64-js": {
514574 "version": "1.5.1",
@@ -546,7 +606,6 @@
546606 "version": "1.1.11",
547607 "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
548608 "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
549− "dev": true,
550609 "dependencies": {
551610 "balanced-match": "^1.0.0",
552611 "concat-map": "0.0.1"
@@ -636,6 +695,20 @@
636695 }
637696 ]
638697 },
698+ "node_modules/canvas": {
699+ "version": "2.9.3",
700+ "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.9.3.tgz",
701+ "integrity": "sha512-WOUM7ghii5TV2rbhaZkh1youv/vW1/Canev6Yx6BG2W+1S07w8jKZqKkPnbiPpQEDsnJdN8ouDd7OvQEGXDcUw==",
702+ "hasInstallScript": true,
703+ "dependencies": {
704+ "@mapbox/node-pre-gyp": "^1.0.0",
705+ "nan": "^2.15.0",
706+ "simple-get": "^3.0.3"
707+ },
708+ "engines": {
709+ "node": ">=6"
710+ }
711+ },
639712 "node_modules/chalk": {
640713 "version": "3.0.0",
641714 "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
@@ -686,6 +759,14 @@
686759 "node": ">= 6"
687760 }
688761 },
762+ "node_modules/chownr": {
763+ "version": "2.0.0",
764+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
765+ "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
766+ "engines": {
767+ "node": ">=10"
768+ }
769+ },
689770 "node_modules/classnames": {
690771 "version": "2.3.1",
691772 "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz",
@@ -728,6 +809,14 @@
728809 "simple-swizzle": "^0.2.2"
729810 }
730811 },
812+ "node_modules/color-support": {
813+ "version": "1.1.3",
814+ "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
815+ "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
816+ "bin": {
817+ "color-support": "bin.js"
818+ }
819+ },
731820 "node_modules/compute-scroll-into-view": {
732821 "version": "1.0.17",
733822 "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz",
@@ -736,8 +825,12 @@
736825 "node_modules/concat-map": {
737826 "version": "0.0.1",
738827 "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
739− "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
740− "dev": true
828+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
829+ },
830+ "node_modules/console-control-strings": {
831+ "version": "1.1.0",
832+ "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
833+ "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ=="
741834 },
742835 "node_modules/core-js": {
743836 "version": "3.24.1",
@@ -774,6 +867,33 @@
774867 "node": ">=4"
775868 }
776869 },
870+ "node_modules/debug": {
871+ "version": "4.3.4",
872+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
873+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
874+ "dependencies": {
875+ "ms": "2.1.2"
876+ },
877+ "engines": {
878+ "node": ">=6.0"
879+ },
880+ "peerDependenciesMeta": {
881+ "supports-color": {
882+ "optional": true
883+ }
884+ }
885+ },
886+ "node_modules/decompress-response": {
887+ "version": "4.2.1",
888+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz",
889+ "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==",
890+ "dependencies": {
891+ "mimic-response": "^2.0.0"
892+ },
893+ "engines": {
894+ "node": ">=8"
895+ }
896+ },
777897 "node_modules/deep-rename-keys": {
778898 "version": "0.2.1",
779899 "resolved": "https://registry.npmjs.org/deep-rename-keys/-/deep-rename-keys-0.2.1.tgz",
@@ -810,6 +930,19 @@
810930 "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
811931 "integrity": "sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ=="
812932 },
933+ "node_modules/delegates": {
934+ "version": "1.0.0",
935+ "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
936+ "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ=="
937+ },
938+ "node_modules/detect-libc": {
939+ "version": "2.0.1",
940+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz",
941+ "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==",
942+ "engines": {
943+ "node": ">=8"
944+ }
945+ },
813946 "node_modules/detective": {
814947 "version": "5.2.1",
815948 "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz",
@@ -915,6 +1048,11 @@
9151048 "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.211.tgz",
9161049 "integrity": "sha512-BZSbMpyFQU0KBJ1JG26XGeFI3i4op+qOYGxftmZXFZoHkhLgsSv4DHDJfl8ogII3hIuzGt51PaZ195OVu0yJ9A=="
9171050 },
1051+ "node_modules/emoji-regex": {
1052+ "version": "8.0.0",
1053+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
1054+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
1055+ },
9181056 "node_modules/end-of-stream": {
9191057 "version": "1.4.4",
9201058 "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
@@ -1094,6 +1232,22 @@
10941232 "url": "https://www.patreon.com/infusion"
10951233 }
10961234 },
1235+ "node_modules/fs-minipass": {
1236+ "version": "2.1.0",
1237+ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
1238+ "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
1239+ "dependencies": {
1240+ "minipass": "^3.0.0"
1241+ },
1242+ "engines": {
1243+ "node": ">= 8"
1244+ }
1245+ },
1246+ "node_modules/fs.realpath": {
1247+ "version": "1.0.0",
1248+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
1249+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
1250+ },
10971251 "node_modules/fsevents": {
10981252 "version": "2.3.2",
10991253 "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
@@ -1112,6 +1266,25 @@
11121266 "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
11131267 "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
11141268 },
1269+ "node_modules/gauge": {
1270+ "version": "3.0.2",
1271+ "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz",
1272+ "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==",
1273+ "dependencies": {
1274+ "aproba": "^1.0.3 || ^2.0.0",
1275+ "color-support": "^1.1.2",
1276+ "console-control-strings": "^1.0.0",
1277+ "has-unicode": "^2.0.1",
1278+ "object-assign": "^4.1.1",
1279+ "signal-exit": "^3.0.0",
1280+ "string-width": "^4.2.3",
1281+ "strip-ansi": "^6.0.1",
1282+ "wide-align": "^1.1.2"
1283+ },
1284+ "engines": {
1285+ "node": ">=10"
1286+ }
1287+ },
11151288 "node_modules/get-stream": {
11161289 "version": "5.2.0",
11171290 "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
@@ -1135,6 +1308,25 @@
11351308 "node": ">=0.10.0"
11361309 }
11371310 },
1311+ "node_modules/glob": {
1312+ "version": "7.2.3",
1313+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
1314+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
1315+ "dependencies": {
1316+ "fs.realpath": "^1.0.0",
1317+ "inflight": "^1.0.4",
1318+ "inherits": "2",
1319+ "minimatch": "^3.1.1",
1320+ "once": "^1.3.0",
1321+ "path-is-absolute": "^1.0.0"
1322+ },
1323+ "engines": {
1324+ "node": "*"
1325+ },
1326+ "funding": {
1327+ "url": "https://github.com/sponsors/isaacs"
1328+ }
1329+ },
11381330 "node_modules/glob-parent": {
11391331 "version": "6.0.2",
11401332 "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
@@ -1180,6 +1372,11 @@
11801372 "node": ">=8"
11811373 }
11821374 },
1375+ "node_modules/has-unicode": {
1376+ "version": "2.0.1",
1377+ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
1378+ "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ=="
1379+ },
11831380 "node_modules/has-value": {
11841381 "version": "0.3.1",
11851382 "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
@@ -1253,6 +1450,18 @@
12531450 "entities": "^3.0.1"
12541451 }
12551452 },
1453+ "node_modules/https-proxy-agent": {
1454+ "version": "5.0.1",
1455+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
1456+ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
1457+ "dependencies": {
1458+ "agent-base": "6",
1459+ "debug": "4"
1460+ },
1461+ "engines": {
1462+ "node": ">= 6"
1463+ }
1464+ },
12561465 "node_modules/human-signals": {
12571466 "version": "1.1.1",
12581467 "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz",
@@ -1290,6 +1499,15 @@
12901499 "node": ">= 4"
12911500 }
12921501 },
1502+ "node_modules/inflight": {
1503+ "version": "1.0.6",
1504+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
1505+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
1506+ "dependencies": {
1507+ "once": "^1.3.0",
1508+ "wrappy": "1"
1509+ }
1510+ },
12931511 "node_modules/inherits": {
12941512 "version": "2.0.4",
12951513 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
@@ -1356,6 +1574,14 @@
13561574 "node": ">=0.10.0"
13571575 }
13581576 },
1577+ "node_modules/is-fullwidth-code-point": {
1578+ "version": "3.0.0",
1579+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
1580+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
1581+ "engines": {
1582+ "node": ">=8"
1583+ }
1584+ },
13591585 "node_modules/is-glob": {
13601586 "version": "4.0.3",
13611587 "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
@@ -1509,6 +1735,17 @@
15091735 "loose-envify": "cli.js"
15101736 }
15111737 },
1738+ "node_modules/lru-cache": {
1739+ "version": "6.0.0",
1740+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
1741+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
1742+ "dependencies": {
1743+ "yallist": "^4.0.0"
1744+ },
1745+ "engines": {
1746+ "node": ">=10"
1747+ }
1748+ },
15121749 "node_modules/luxon": {
15131750 "version": "2.5.0",
15141751 "resolved": "https://registry.npmjs.org/luxon/-/luxon-2.5.0.tgz",
@@ -1517,6 +1754,28 @@
15171754 "node": ">=12"
15181755 }
15191756 },
1757+ "node_modules/make-dir": {
1758+ "version": "3.1.0",
1759+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
1760+ "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
1761+ "dependencies": {
1762+ "semver": "^6.0.0"
1763+ },
1764+ "engines": {
1765+ "node": ">=8"
1766+ },
1767+ "funding": {
1768+ "url": "https://github.com/sponsors/sindresorhus"
1769+ }
1770+ },
1771+ "node_modules/make-dir/node_modules/semver": {
1772+ "version": "6.3.0",
1773+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
1774+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
1775+ "bin": {
1776+ "semver": "bin/semver.js"
1777+ }
1778+ },
15201779 "node_modules/merge-stream": {
15211780 "version": "2.0.0",
15221781 "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
@@ -1552,11 +1811,21 @@
15521811 "node": ">=6"
15531812 }
15541813 },
1814+ "node_modules/mimic-response": {
1815+ "version": "2.1.0",
1816+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz",
1817+ "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==",
1818+ "engines": {
1819+ "node": ">=8"
1820+ },
1821+ "funding": {
1822+ "url": "https://github.com/sponsors/sindresorhus"
1823+ }
1824+ },
15551825 "node_modules/minimatch": {
15561826 "version": "3.1.2",
15571827 "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
15581828 "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
1559− "dev": true,
15601829 "dependencies": {
15611830 "brace-expansion": "^1.1.7"
15621831 },
@@ -1569,6 +1838,40 @@
15691838 "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
15701839 "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q=="
15711840 },
1841+ "node_modules/minipass": {
1842+ "version": "3.3.4",
1843+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz",
1844+ "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==",
1845+ "dependencies": {
1846+ "yallist": "^4.0.0"
1847+ },
1848+ "engines": {
1849+ "node": ">=8"
1850+ }
1851+ },
1852+ "node_modules/minizlib": {
1853+ "version": "2.1.2",
1854+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
1855+ "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
1856+ "dependencies": {
1857+ "minipass": "^3.0.0",
1858+ "yallist": "^4.0.0"
1859+ },
1860+ "engines": {
1861+ "node": ">= 8"
1862+ }
1863+ },
1864+ "node_modules/mkdirp": {
1865+ "version": "1.0.4",
1866+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
1867+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
1868+ "bin": {
1869+ "mkdirp": "bin/cmd.js"
1870+ },
1871+ "engines": {
1872+ "node": ">=10"
1873+ }
1874+ },
15721875 "node_modules/mri": {
15731876 "version": "1.2.0",
15741877 "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
@@ -1578,6 +1881,11 @@
15781881 "node": ">=4"
15791882 }
15801883 },
1884+ "node_modules/ms": {
1885+ "version": "2.1.2",
1886+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
1887+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
1888+ },
15811889 "node_modules/multimatch": {
15821890 "version": "4.0.0",
15831891 "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz",
@@ -1594,6 +1902,11 @@
15941902 "node": ">=8"
15951903 }
15961904 },
1905+ "node_modules/nan": {
1906+ "version": "2.16.0",
1907+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.16.0.tgz",
1908+ "integrity": "sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA=="
1909+ },
15971910 "node_modules/nanoid": {
15981911 "version": "3.3.4",
15991912 "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
@@ -1657,11 +1970,44 @@
16571970 }
16581971 }
16591972 },
1973+ "node_modules/node-fetch": {
1974+ "version": "2.6.7",
1975+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
1976+ "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
1977+ "dependencies": {
1978+ "whatwg-url": "^5.0.0"
1979+ },
1980+ "engines": {
1981+ "node": "4.x || >=6.0.0"
1982+ },
1983+ "peerDependencies": {
1984+ "encoding": "^0.1.0"
1985+ },
1986+ "peerDependenciesMeta": {
1987+ "encoding": {
1988+ "optional": true
1989+ }
1990+ }
1991+ },
16601992 "node_modules/node-releases": {
16611993 "version": "2.0.6",
16621994 "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz",
16631995 "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg=="
16641996 },
1997+ "node_modules/nopt": {
1998+ "version": "5.0.0",
1999+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
2000+ "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==",
2001+ "dependencies": {
2002+ "abbrev": "1"
2003+ },
2004+ "bin": {
2005+ "nopt": "bin/nopt.js"
2006+ },
2007+ "engines": {
2008+ "node": ">=6"
2009+ }
2010+ },
16652011 "node_modules/normalize-path": {
16662012 "version": "3.0.0",
16672013 "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
@@ -1690,6 +2036,17 @@
16902036 "node": ">=8"
16912037 }
16922038 },
2039+ "node_modules/npmlog": {
2040+ "version": "5.0.1",
2041+ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz",
2042+ "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==",
2043+ "dependencies": {
2044+ "are-we-there-yet": "^2.0.0",
2045+ "console-control-strings": "^1.1.0",
2046+ "gauge": "^3.0.0",
2047+ "set-blocking": "^2.0.0"
2048+ }
2049+ },
16932050 "node_modules/object-assign": {
16942051 "version": "4.1.1",
16952052 "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
@@ -1722,7 +2079,6 @@
17222079 "version": "1.4.0",
17232080 "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
17242081 "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
1725− "dev": true,
17262082 "dependencies": {
17272083 "wrappy": "1"
17282084 }
@@ -1792,6 +2148,14 @@
17922148 "node": ">=8"
17932149 }
17942150 },
2151+ "node_modules/path-is-absolute": {
2152+ "version": "1.0.1",
2153+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
2154+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
2155+ "engines": {
2156+ "node": ">=0.10.0"
2157+ }
2158+ },
17952159 "node_modules/path-key": {
17962160 "version": "3.1.1",
17972161 "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
@@ -2199,6 +2563,20 @@
21992563 "node": ">=0.10.0"
22002564 }
22012565 },
2566+ "node_modules/rimraf": {
2567+ "version": "3.0.2",
2568+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
2569+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
2570+ "dependencies": {
2571+ "glob": "^7.1.3"
2572+ },
2573+ "bin": {
2574+ "rimraf": "bin.js"
2575+ },
2576+ "funding": {
2577+ "url": "https://github.com/sponsors/isaacs"
2578+ }
2579+ },
22022580 "node_modules/run-parallel": {
22032581 "version": "1.2.0",
22042582 "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
@@ -2266,6 +2644,25 @@
22662644 "node": ">=4"
22672645 }
22682646 },
2647+ "node_modules/semver": {
2648+ "version": "7.3.7",
2649+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
2650+ "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
2651+ "dependencies": {
2652+ "lru-cache": "^6.0.0"
2653+ },
2654+ "bin": {
2655+ "semver": "bin/semver.js"
2656+ },
2657+ "engines": {
2658+ "node": ">=10"
2659+ }
2660+ },
2661+ "node_modules/set-blocking": {
2662+ "version": "2.0.0",
2663+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
2664+ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
2665+ },
22692666 "node_modules/shebang-command": {
22702667 "version": "2.0.0",
22712668 "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
@@ -2290,8 +2687,36 @@
22902687 "node_modules/signal-exit": {
22912688 "version": "3.0.7",
22922689 "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
2293− "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
2294− "dev": true
2690+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
2691+ },
2692+ "node_modules/simple-concat": {
2693+ "version": "1.0.1",
2694+ "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
2695+ "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
2696+ "funding": [
2697+ {
2698+ "type": "github",
2699+ "url": "https://github.com/sponsors/feross"
2700+ },
2701+ {
2702+ "type": "patreon",
2703+ "url": "https://www.patreon.com/feross"
2704+ },
2705+ {
2706+ "type": "consulting",
2707+ "url": "https://feross.org/support"
2708+ }
2709+ ]
2710+ },
2711+ "node_modules/simple-get": {
2712+ "version": "3.1.1",
2713+ "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz",
2714+ "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==",
2715+ "dependencies": {
2716+ "decompress-response": "^4.2.0",
2717+ "once": "^1.3.1",
2718+ "simple-concat": "^1.0.0"
2719+ }
22952720 },
22962721 "node_modules/simple-swizzle": {
22972722 "version": "0.2.2",
@@ -2331,6 +2756,30 @@
23312756 "safe-buffer": "~5.2.0"
23322757 }
23332758 },
2759+ "node_modules/string-width": {
2760+ "version": "4.2.3",
2761+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
2762+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
2763+ "dependencies": {
2764+ "emoji-regex": "^8.0.0",
2765+ "is-fullwidth-code-point": "^3.0.0",
2766+ "strip-ansi": "^6.0.1"
2767+ },
2768+ "engines": {
2769+ "node": ">=8"
2770+ }
2771+ },
2772+ "node_modules/strip-ansi": {
2773+ "version": "6.0.1",
2774+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
2775+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
2776+ "dependencies": {
2777+ "ansi-regex": "^5.0.1"
2778+ },
2779+ "engines": {
2780+ "node": ">=8"
2781+ }
2782+ },
23342783 "node_modules/strip-bom-string": {
23352784 "version": "1.0.0",
23362785 "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz",
@@ -2465,6 +2914,22 @@
24652914 "tailwindcss": "^3.0.23"
24662915 }
24672916 },
2917+ "node_modules/tar": {
2918+ "version": "6.1.11",
2919+ "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz",
2920+ "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==",
2921+ "dependencies": {
2922+ "chownr": "^2.0.0",
2923+ "fs-minipass": "^2.0.0",
2924+ "minipass": "^3.0.0",
2925+ "minizlib": "^2.1.1",
2926+ "mkdirp": "^1.0.3",
2927+ "yallist": "^4.0.0"
2928+ },
2929+ "engines": {
2930+ "node": ">= 10"
2931+ }
2932+ },
24682933 "node_modules/to-regex-range": {
24692934 "version": "5.0.1",
24702935 "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
@@ -2476,6 +2941,11 @@
24762941 "node": ">=8.0"
24772942 }
24782943 },
2944+ "node_modules/tr46": {
2945+ "version": "0.0.3",
2946+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
2947+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
2948+ },
24792949 "node_modules/transformation-matrix": {
24802950 "version": "2.1.1",
24812951 "resolved": "https://registry.npmjs.org/transformation-matrix/-/transformation-matrix-2.1.1.tgz",
@@ -2546,6 +3016,20 @@
25463016 "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
25473017 "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
25483018 },
3019+ "node_modules/webidl-conversions": {
3020+ "version": "3.0.1",
3021+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
3022+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
3023+ },
3024+ "node_modules/whatwg-url": {
3025+ "version": "5.0.0",
3026+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
3027+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
3028+ "dependencies": {
3029+ "tr46": "~0.0.3",
3030+ "webidl-conversions": "^3.0.0"
3031+ }
3032+ },
25493033 "node_modules/which": {
25503034 "version": "2.0.2",
25513035 "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
@@ -2561,11 +3045,18 @@
25613045 "node": ">= 8"
25623046 }
25633047 },
3048+ "node_modules/wide-align": {
3049+ "version": "1.1.5",
3050+ "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
3051+ "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==",
3052+ "dependencies": {
3053+ "string-width": "^1.0.2 || 2 || 3 || 4"
3054+ }
3055+ },
25643056 "node_modules/wrappy": {
25653057 "version": "1.0.2",
25663058 "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
2567− "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
2568− "dev": true
3059+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
25693060 },
25703061 "node_modules/xml-js": {
25713062 "version": "1.6.11",
@@ -2603,6 +3094,11 @@
26033094 "node": ">=0.4"
26043095 }
26053096 },
3097+ "node_modules/yallist": {
3098+ "version": "4.0.0",
3099+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
3100+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
3101+ },
26063102 "node_modules/yaml": {
26073103 "version": "1.10.2",
26083104 "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
@@ -2626,6 +3122,22 @@
26263122 "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz",
26273123 "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg=="
26283124 },
3125+ "@mapbox/node-pre-gyp": {
3126+ "version": "1.0.9",
3127+ "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.9.tgz",
3128+ "integrity": "sha512-aDF3S3rK9Q2gey/WAttUlISduDItz5BU3306M9Eyv6/oS40aMprnopshtlKTykxRNIBEZuRMaZAnbrQ4QtKGyw==",
3129+ "requires": {
3130+ "detect-libc": "^2.0.0",
3131+ "https-proxy-agent": "^5.0.0",
3132+ "make-dir": "^3.1.0",
3133+ "node-fetch": "^2.6.7",
3134+ "nopt": "^5.0.0",
3135+ "npmlog": "^5.0.1",
3136+ "rimraf": "^3.0.2",
3137+ "semver": "^7.3.5",
3138+ "tar": "^6.1.11"
3139+ }
3140+ },
26293141 "@next/env": {
26303142 "version": "12.2.4",
26313143 "resolved": "https://registry.npmjs.org/@next/env/-/env-12.2.4.tgz",
@@ -2783,6 +3295,11 @@
27833295 "resolved": "https://registry.npmjs.org/@urbit/markdoc/-/markdoc-0.1.6.tgz",
27843296 "integrity": "sha512-ocFGlhmleGkX53+kYLzN4UYjyndppEqHKIG2XVKZNkHsLvAeZRy0o13qCE9dfmZli/vSw11cUinOpxuXOBYxSQ=="
27853297 },
3298+ "abbrev": {
3299+ "version": "1.1.1",
3300+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
3301+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
3302+ },
27863303 "acorn": {
27873304 "version": "7.4.1",
27883305 "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
@@ -2803,6 +3320,19 @@
28033320 "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
28043321 "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA=="
28053322 },
3323+ "agent-base": {
3324+ "version": "6.0.2",
3325+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
3326+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
3327+ "requires": {
3328+ "debug": "4"
3329+ }
3330+ },
3331+ "ansi-regex": {
3332+ "version": "5.0.1",
3333+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
3334+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
3335+ },
28063336 "ansi-styles": {
28073337 "version": "4.3.0",
28083338 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
@@ -2821,6 +3351,20 @@
28213351 "picomatch": "^2.0.4"
28223352 }
28233353 },
3354+ "aproba": {
3355+ "version": "2.0.0",
3356+ "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz",
3357+ "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ=="
3358+ },
3359+ "are-we-there-yet": {
3360+ "version": "2.0.0",
3361+ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz",
3362+ "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==",
3363+ "requires": {
3364+ "delegates": "^1.0.0",
3365+ "readable-stream": "^3.6.0"
3366+ }
3367+ },
28243368 "arg": {
28253369 "version": "5.0.2",
28263370 "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
@@ -2876,8 +3420,7 @@
28763420 "balanced-match": {
28773421 "version": "1.0.2",
28783422 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
2879− "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
2880− "dev": true
3423+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
28813424 },
28823425 "base64-js": {
28833426 "version": "1.5.1",
@@ -2898,7 +3441,6 @@
28983441 "version": "1.1.11",
28993442 "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
29003443 "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
2901− "dev": true,
29023444 "requires": {
29033445 "balanced-match": "^1.0.0",
29043446 "concat-map": "0.0.1"
@@ -2942,6 +3484,16 @@
29423484 "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001374.tgz",
29433485 "integrity": "sha512-mWvzatRx3w+j5wx/mpFN5v5twlPrabG8NqX2c6e45LCpymdoGqNvRkRutFUqpRTXKFQFNQJasvK0YT7suW6/Hw=="
29443486 },
3487+ "canvas": {
3488+ "version": "2.9.3",
3489+ "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.9.3.tgz",
3490+ "integrity": "sha512-WOUM7ghii5TV2rbhaZkh1youv/vW1/Canev6Yx6BG2W+1S07w8jKZqKkPnbiPpQEDsnJdN8ouDd7OvQEGXDcUw==",
3491+ "requires": {
3492+ "@mapbox/node-pre-gyp": "^1.0.0",
3493+ "nan": "^2.15.0",
3494+ "simple-get": "^3.0.3"
3495+ }
3496+ },
29453497 "chalk": {
29463498 "version": "3.0.0",
29473499 "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
@@ -2977,6 +3529,11 @@
29773529 }
29783530 }
29793531 },
3532+ "chownr": {
3533+ "version": "2.0.0",
3534+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
3535+ "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ=="
3536+ },
29803537 "classnames": {
29813538 "version": "2.3.1",
29823539 "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz",
@@ -3013,6 +3570,11 @@
30133570 "simple-swizzle": "^0.2.2"
30143571 }
30153572 },
3573+ "color-support": {
3574+ "version": "1.1.3",
3575+ "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
3576+ "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg=="
3577+ },
30163578 "compute-scroll-into-view": {
30173579 "version": "1.0.17",
30183580 "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz",
@@ -3021,8 +3583,12 @@
30213583 "concat-map": {
30223584 "version": "0.0.1",
30233585 "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
3024− "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
3025− "dev": true
3586+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
3587+ },
3588+ "console-control-strings": {
3589+ "version": "1.1.0",
3590+ "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
3591+ "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ=="
30263592 },
30273593 "core-js": {
30283594 "version": "3.24.1",
@@ -3045,6 +3611,22 @@
30453611 "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
30463612 "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="
30473613 },
3614+ "debug": {
3615+ "version": "4.3.4",
3616+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
3617+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
3618+ "requires": {
3619+ "ms": "2.1.2"
3620+ }
3621+ },
3622+ "decompress-response": {
3623+ "version": "4.2.1",
3624+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz",
3625+ "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==",
3626+ "requires": {
3627+ "mimic-response": "^2.0.0"
3628+ }
3629+ },
30483630 "deep-rename-keys": {
30493631 "version": "0.2.1",
30503632 "resolved": "https://registry.npmjs.org/deep-rename-keys/-/deep-rename-keys-0.2.1.tgz",
@@ -3074,6 +3656,16 @@
30743656 "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
30753657 "integrity": "sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ=="
30763658 },
3659+ "delegates": {
3660+ "version": "1.0.0",
3661+ "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
3662+ "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ=="
3663+ },
3664+ "detect-libc": {
3665+ "version": "2.0.1",
3666+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz",
3667+ "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w=="
3668+ },
30773669 "detective": {
30783670 "version": "5.2.1",
30793671 "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz",
@@ -3151,6 +3743,11 @@
31513743 "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.211.tgz",
31523744 "integrity": "sha512-BZSbMpyFQU0KBJ1JG26XGeFI3i4op+qOYGxftmZXFZoHkhLgsSv4DHDJfl8ogII3hIuzGt51PaZ195OVu0yJ9A=="
31533745 },
3746+ "emoji-regex": {
3747+ "version": "8.0.0",
3748+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
3749+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
3750+ },
31543751 "end-of-stream": {
31553752 "version": "1.4.4",
31563753 "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
@@ -3271,6 +3868,19 @@
32713868 "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz",
32723869 "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA=="
32733870 },
3871+ "fs-minipass": {
3872+ "version": "2.1.0",
3873+ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
3874+ "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
3875+ "requires": {
3876+ "minipass": "^3.0.0"
3877+ }
3878+ },
3879+ "fs.realpath": {
3880+ "version": "1.0.0",
3881+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
3882+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
3883+ },
32743884 "fsevents": {
32753885 "version": "2.3.2",
32763886 "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
@@ -3282,6 +3892,22 @@
32823892 "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
32833893 "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
32843894 },
3895+ "gauge": {
3896+ "version": "3.0.2",
3897+ "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz",
3898+ "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==",
3899+ "requires": {
3900+ "aproba": "^1.0.3 || ^2.0.0",
3901+ "color-support": "^1.1.2",
3902+ "console-control-strings": "^1.0.0",
3903+ "has-unicode": "^2.0.1",
3904+ "object-assign": "^4.1.1",
3905+ "signal-exit": "^3.0.0",
3906+ "string-width": "^4.2.3",
3907+ "strip-ansi": "^6.0.1",
3908+ "wide-align": "^1.1.2"
3909+ }
3910+ },
32853911 "get-stream": {
32863912 "version": "5.2.0",
32873913 "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
@@ -3296,6 +3922,19 @@
32963922 "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
32973923 "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA=="
32983924 },
3925+ "glob": {
3926+ "version": "7.2.3",
3927+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
3928+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
3929+ "requires": {
3930+ "fs.realpath": "^1.0.0",
3931+ "inflight": "^1.0.4",
3932+ "inherits": "2",
3933+ "minimatch": "^3.1.1",
3934+ "once": "^1.3.0",
3935+ "path-is-absolute": "^1.0.0"
3936+ }
3937+ },
32993938 "glob-parent": {
33003939 "version": "6.0.2",
33013940 "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
@@ -3329,6 +3968,11 @@
33293968 "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
33303969 "dev": true
33313970 },
3971+ "has-unicode": {
3972+ "version": "2.0.1",
3973+ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
3974+ "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ=="
3975+ },
33323976 "has-value": {
33333977 "version": "0.3.1",
33343978 "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
@@ -3385,6 +4029,15 @@
33854029 "entities": "^3.0.1"
33864030 }
33874031 },
4032+ "https-proxy-agent": {
4033+ "version": "5.0.1",
4034+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
4035+ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
4036+ "requires": {
4037+ "agent-base": "6",
4038+ "debug": "4"
4039+ }
4040+ },
33884041 "human-signals": {
33894042 "version": "1.1.1",
33904043 "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz",
@@ -3402,6 +4055,15 @@
34024055 "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==",
34034056 "dev": true
34044057 },
4058+ "inflight": {
4059+ "version": "1.0.6",
4060+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
4061+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
4062+ "requires": {
4063+ "once": "^1.3.0",
4064+ "wrappy": "1"
4065+ }
4066+ },
34054067 "inherits": {
34064068 "version": "2.0.4",
34074069 "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
@@ -3456,6 +4118,11 @@
34564118 "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
34574119 "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="
34584120 },
4121+ "is-fullwidth-code-point": {
4122+ "version": "3.0.0",
4123+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
4124+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
4125+ },
34594126 "is-glob": {
34604127 "version": "4.0.3",
34614128 "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
@@ -3573,11 +4240,34 @@
35734240 "js-tokens": "^3.0.0 || ^4.0.0"
35744241 }
35754242 },
4243+ "lru-cache": {
4244+ "version": "6.0.0",
4245+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
4246+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
4247+ "requires": {
4248+ "yallist": "^4.0.0"
4249+ }
4250+ },
35764251 "luxon": {
35774252 "version": "2.5.0",
35784253 "resolved": "https://registry.npmjs.org/luxon/-/luxon-2.5.0.tgz",
35794254 "integrity": "sha512-IDkEPB80Rb6gCAU+FEib0t4FeJ4uVOuX1CQ9GsvU3O+JAGIgu0J7sf1OarXKaKDygTZIoJyU6YdZzTFRu+YR0A=="
35804255 },
4256+ "make-dir": {
4257+ "version": "3.1.0",
4258+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
4259+ "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
4260+ "requires": {
4261+ "semver": "^6.0.0"
4262+ },
4263+ "dependencies": {
4264+ "semver": {
4265+ "version": "6.3.0",
4266+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
4267+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
4268+ }
4269+ }
4270+ },
35814271 "merge-stream": {
35824272 "version": "2.0.0",
35834273 "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
@@ -3604,11 +4294,15 @@
36044294 "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
36054295 "dev": true
36064296 },
4297+ "mimic-response": {
4298+ "version": "2.1.0",
4299+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz",
4300+ "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA=="
4301+ },
36074302 "minimatch": {
36084303 "version": "3.1.2",
36094304 "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
36104305 "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
3611− "dev": true,
36124306 "requires": {
36134307 "brace-expansion": "^1.1.7"
36144308 }
@@ -3618,12 +4312,39 @@
36184312 "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
36194313 "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q=="
36204314 },
4315+ "minipass": {
4316+ "version": "3.3.4",
4317+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz",
4318+ "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==",
4319+ "requires": {
4320+ "yallist": "^4.0.0"
4321+ }
4322+ },
4323+ "minizlib": {
4324+ "version": "2.1.2",
4325+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
4326+ "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
4327+ "requires": {
4328+ "minipass": "^3.0.0",
4329+ "yallist": "^4.0.0"
4330+ }
4331+ },
4332+ "mkdirp": {
4333+ "version": "1.0.4",
4334+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
4335+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="
4336+ },
36214337 "mri": {
36224338 "version": "1.2.0",
36234339 "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
36244340 "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==",
36254341 "dev": true
36264342 },
4343+ "ms": {
4344+ "version": "2.1.2",
4345+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
4346+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
4347+ },
36274348 "multimatch": {
36284349 "version": "4.0.0",
36294350 "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz",
@@ -3637,6 +4358,11 @@
36374358 "minimatch": "^3.0.4"
36384359 }
36394360 },
4361+ "nan": {
4362+ "version": "2.16.0",
4363+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.16.0.tgz",
4364+ "integrity": "sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA=="
4365+ },
36404366 "nanoid": {
36414367 "version": "3.3.4",
36424368 "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
@@ -3668,11 +4394,27 @@
36684394 "use-sync-external-store": "1.2.0"
36694395 }
36704396 },
4397+ "node-fetch": {
4398+ "version": "2.6.7",
4399+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
4400+ "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
4401+ "requires": {
4402+ "whatwg-url": "^5.0.0"
4403+ }
4404+ },
36714405 "node-releases": {
36724406 "version": "2.0.6",
36734407 "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz",
36744408 "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg=="
36754409 },
4410+ "nopt": {
4411+ "version": "5.0.0",
4412+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
4413+ "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==",
4414+ "requires": {
4415+ "abbrev": "1"
4416+ }
4417+ },
36764418 "normalize-path": {
36774419 "version": "3.0.0",
36784420 "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
@@ -3692,6 +4434,17 @@
36924434 "path-key": "^3.0.0"
36934435 }
36944436 },
4437+ "npmlog": {
4438+ "version": "5.0.1",
4439+ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz",
4440+ "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==",
4441+ "requires": {
4442+ "are-we-there-yet": "^2.0.0",
4443+ "console-control-strings": "^1.1.0",
4444+ "gauge": "^3.0.0",
4445+ "set-blocking": "^2.0.0"
4446+ }
4447+ },
36954448 "object-assign": {
36964449 "version": "4.1.1",
36974450 "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
@@ -3715,7 +4468,6 @@
37154468 "version": "1.4.0",
37164469 "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
37174470 "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
3718− "dev": true,
37194471 "requires": {
37204472 "wrappy": "1"
37214473 }
@@ -3764,6 +4516,11 @@
37644516 "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
37654517 "dev": true
37664518 },
4519+ "path-is-absolute": {
4520+ "version": "1.0.1",
4521+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
4522+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="
4523+ },
37674524 "path-key": {
37684525 "version": "3.1.1",
37694526 "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
@@ -4022,6 +4779,14 @@
40224779 "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
40234780 "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw=="
40244781 },
4782+ "rimraf": {
4783+ "version": "3.0.2",
4784+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
4785+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
4786+ "requires": {
4787+ "glob": "^7.1.3"
4788+ }
4789+ },
40254790 "run-parallel": {
40264791 "version": "1.2.0",
40274792 "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
@@ -4058,6 +4823,19 @@
40584823 "kind-of": "^6.0.0"
40594824 }
40604825 },
4826+ "semver": {
4827+ "version": "7.3.7",
4828+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
4829+ "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
4830+ "requires": {
4831+ "lru-cache": "^6.0.0"
4832+ }
4833+ },
4834+ "set-blocking": {
4835+ "version": "2.0.0",
4836+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
4837+ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
4838+ },
40614839 "shebang-command": {
40624840 "version": "2.0.0",
40634841 "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
@@ -4076,8 +4854,22 @@
40764854 "signal-exit": {
40774855 "version": "3.0.7",
40784856 "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
4079− "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
4080− "dev": true
4857+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
4858+ },
4859+ "simple-concat": {
4860+ "version": "1.0.1",
4861+ "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
4862+ "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q=="
4863+ },
4864+ "simple-get": {
4865+ "version": "3.1.1",
4866+ "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz",
4867+ "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==",
4868+ "requires": {
4869+ "decompress-response": "^4.2.0",
4870+ "once": "^1.3.1",
4871+ "simple-concat": "^1.0.0"
4872+ }
40814873 },
40824874 "simple-swizzle": {
40834875 "version": "0.2.2",
@@ -4114,6 +4906,24 @@
41144906 "safe-buffer": "~5.2.0"
41154907 }
41164908 },
4909+ "string-width": {
4910+ "version": "4.2.3",
4911+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
4912+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
4913+ "requires": {
4914+ "emoji-regex": "^8.0.0",
4915+ "is-fullwidth-code-point": "^3.0.0",
4916+ "strip-ansi": "^6.0.1"
4917+ }
4918+ },
4919+ "strip-ansi": {
4920+ "version": "6.0.1",
4921+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
4922+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
4923+ "requires": {
4924+ "ansi-regex": "^5.0.1"
4925+ }
4926+ },
41174927 "strip-bom-string": {
41184928 "version": "1.0.0",
41194929 "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz",
@@ -4210,6 +5020,19 @@
42105020 "tailwindcss": "^3.0.23"
42115021 }
42125022 },
5023+ "tar": {
5024+ "version": "6.1.11",
5025+ "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz",
5026+ "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==",
5027+ "requires": {
5028+ "chownr": "^2.0.0",
5029+ "fs-minipass": "^2.0.0",
5030+ "minipass": "^3.0.0",
5031+ "minizlib": "^2.1.1",
5032+ "mkdirp": "^1.0.3",
5033+ "yallist": "^4.0.0"
5034+ }
5035+ },
42135036 "to-regex-range": {
42145037 "version": "5.0.1",
42155038 "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
@@ -4218,6 +5041,11 @@
42185041 "is-number": "^7.0.0"
42195042 }
42205043 },
5044+ "tr46": {
5045+ "version": "0.0.3",
5046+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
5047+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
5048+ },
42215049 "transformation-matrix": {
42225050 "version": "2.1.1",
42235051 "resolved": "https://registry.npmjs.org/transformation-matrix/-/transformation-matrix-2.1.1.tgz",
@@ -4267,6 +5095,20 @@
42675095 "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
42685096 "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
42695097 },
5098+ "webidl-conversions": {
5099+ "version": "3.0.1",
5100+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
5101+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
5102+ },
5103+ "whatwg-url": {
5104+ "version": "5.0.0",
5105+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
5106+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
5107+ "requires": {
5108+ "tr46": "~0.0.3",
5109+ "webidl-conversions": "^3.0.0"
5110+ }
5111+ },
42705112 "which": {
42715113 "version": "2.0.2",
42725114 "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
@@ -4276,11 +5118,18 @@
42765118 "isexe": "^2.0.0"
42775119 }
42785120 },
5121+ "wide-align": {
5122+ "version": "1.1.5",
5123+ "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
5124+ "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==",
5125+ "requires": {
5126+ "string-width": "^1.0.2 || 2 || 3 || 4"
5127+ }
5128+ },
42795129 "wrappy": {
42805130 "version": "1.0.2",
42815131 "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
4282− "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
4283− "dev": true
5132+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
42845133 },
42855134 "xml-js": {
42865135 "version": "1.6.11",
@@ -4312,6 +5161,11 @@
43125161 "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
43135162 "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
43145163 },
5164+ "yallist": {
5165+ "version": "4.0.0",
5166+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
5167+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
5168+ },
43155169 "yaml": {
43165170 "version": "1.10.2",
43175171 "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
package.json+3−1
@@ -12,7 +12,8 @@
1212 "getting-started-tree": "node lib/buildPageTree getting-started weight",
1313 "overview-tree": "node lib/buildPageTree overview weight",
1414 "cache-posts": "node lib/cache.js",
15− "rss": "node lib/rss.js"
15+ "rss": "node lib/rss.js",
16+ "vercel-build": "yum install libuuid-devel libmount-devel && cp /lib64/{libuuid,libmount,libblkid}.so.1 node_modules/canvas/build/Release/ && npm run build"
1617 },
1718 "dependencies": {
1819 "@iarna/toml": "^2.2.5",
@@ -23,6 +24,7 @@
2324 "@urbit/markdoc": "^0.1.4",
2425 "axios": "^0.26.1",
2526 "buffer": "^6.0.3",
27+ "canvas": "^2.9.3",
2628 "classnames": "^2.3.1",
2729 "deepmerge": "^4.2.2",
2830 "downshift": "^6.1.5",
pages/api/sigil.jsnew file+60
@@ -0,0 +1,60 @@
1+const { sigil, stringRenderer } = require("@tlon/sigil-js");
2+const { createCanvas, loadImage, Image } = require("canvas");
3+
4+const foregroundFromBackground = (background) => {
5+ const rgb = {
6+ r: parseInt(background.slice(1, 3), 16),
7+ g: parseInt(background.slice(3, 5), 16),
8+ b: parseInt(background.slice(5, 7), 16),
9+ };
10+ const brightness = (299 * rgb.r + 587 * rgb.g + 114 * rgb.b) / 1000;
11+ const whiteBrightness = 255;
12+
13+ return whiteBrightness - brightness < 50 ? "black" : "white";
14+};
15+
16+const Sigil = ({ patp, size, color = "#24201E", icon }) => {
17+ if (patp.length > 14) {
18+ return <div />;
19+ }
20+ const foreground = foregroundFromBackground(color);
21+ return (
22+ <div
23+ className={icon ? "p-1" : ""}
24+ style={{ backgroundColor: icon ? color || "black" : "transparent" }}
25+ >
26+ {sigil({
27+ patp: patp,
28+ renderer: stringRenderer,
29+ size: icon ? size / 2 : size,
30+ colors: [color, foreground],
31+ icon: icon || false,
32+ })}
33+ </div>
34+ );
35+};
36+
37+export default (req, res) => {
38+ const foreground = foregroundFromBackground(
39+ `#${req.query.color || "24201E"}`
40+ );
41+ const svg = sigil({
42+ patp: req.query.patp,
43+ renderer: stringRenderer,
44+ size: 1024,
45+ colors: [`#${req.query.color || "24201E"}`, foreground],
46+ icon: false,
47+ });
48+ const svgDataString = "data:image/svg+xml," + svg;
49+ const canvas = createCanvas(1024, 1024);
50+ const ctx = canvas.getContext("2d");
51+ const canvasImage = new Image();
52+ canvasImage.src = svgDataString;
53+ ctx.drawImage(canvasImage, 0, 0);
54+ const buffer = canvas.toBuffer();
55+ res.writeHead(200, {
56+ "Content-Type": "image/png",
57+ "Content-Length": buffer.length,
58+ });
59+ res.end(buffer, "binary");
60+};
pages/applications/[[...application]].js+4−15
@@ -24,13 +24,6 @@ const ApplicationPage = ({ data, markdown, organisation, search, params }) => {
2424 if (!ob.isValidPatp(application[0])) {
2525 return <Gateway404 type="application" />;
2626 }
27− const reqParams = [
28− data?.bgColor ? `color=${encodeURIComponent(data?.bgColor)}` : "",
29− data?.image ? `images=${encodeURIComponent(data?.image)}` : "",
30− ].filter((e) => e !== "");
31− const image = `https://urbit-id-og-cards-78ieodof2-urbit.vercel.app/${
32− data.title
33− }.png?${reqParams.join("&")}`;
3427
3528 let devLink;
3629
@@ -60,16 +53,12 @@ const ApplicationPage = ({ data, markdown, organisation, search, params }) => {
6053 return (
6154 <Container>
6255 <Head>
63− <title>{data.title} • Applications • urbit.org</title>
56+ <title>{data.title} • Urbit Application</title>
6457 <link rel="icon" type="image/png" href="/images/favicon.ico" />
65− <meta
66− name="twitter:card"
67− content="summary_large_image"
68− key="twitter-card"
69− />
58+ <meta name="twitter:card" content="summary" key="twitter-card" />
7059 <meta
7160 name="og:title"
72− content={`${data.title} • Applications • urbit.org`}
61+ content={`${data.title} • Urbit Application`}
7362 key="title"
7463 />
7564 <meta
@@ -80,7 +69,7 @@ const ApplicationPage = ({ data, markdown, organisation, search, params }) => {
8069 }
8170 key="description"
8271 />
83− <meta property="twitter:image" content={image} key="image" />
72+ <meta property="twitter:image" content={data.image} key="image" />
8473 </Head>
8574 <IntraNav ourSite="https://urbit.org" search={search} />
8675 <SingleColumn>
pages/blog/[slug].js+1−2
@@ -21,7 +21,6 @@ import {
2121} from "@urbit/foundation-design-system";
2222import Header from "../../components/Header";
2323import Footer from "../../components/Footer";
24−import Contact from "../../components/Contact";
2524import PostPreview from "../../components/PostPreview";
2625import TwoUp from "../../components/TwoUp";
2726
@@ -41,7 +40,7 @@ export default function Post({
4140 <Container>
4241 <Head>
4342 <title>{post.title} • Blog • urbit.org</title>
44− {Meta(post)}
43+ {Meta(post, false, true)}
4544 </Head>
4645 <IntraNav ourSite="https://urbit.org" search={search} />
4746 <SingleColumn>
pages/community/[[...slug]].js+1−1
@@ -62,7 +62,7 @@ export default function UsingLayout({ posts, data, markdown, params, search }) {
6262 return (
6363 <>
6464 <Head>
65− <title>{data.title} • Community • urbit.org</title>
65+ <title>{data.title} • Community</title>
6666 {Meta(data)}
6767 </Head>
6868 <div className="flex h-screen min-h-screen w-screen sidebar">
pages/ecosystem/index.js+1−1
@@ -67,7 +67,7 @@ export default function Ecosystem({
6767 return (
6868 <Container>
6969 <Head>
70− <title>{title} • Urbit</title>
70+ <title>{title}</title>
7171 {Meta(data)}
7272 </Head>
7373 <IntraNav ourSite="https://urbit.org" search={search} />
pages/ecosystem/spotlight/[slug].js+1−1
@@ -24,7 +24,7 @@ export default function BasicPage({ post, markdown, search, index = false }) {
2424 return (
2525 <Container>
2626 <Head>
27− <title>Urbit • {post.title}</title>
27+ <title>Ecosystem Spotlight - {post.title}</title>
2828 {Meta(post)}
2929 </Head>
3030 <IntraNav ourSite="https://urbit.org" search={search} />
pages/events/[slug].js+1−1
@@ -49,7 +49,7 @@ export default function Event({
4949 <Container>
5050 <Head>
5151 <title>{event.title} • Events • urbit.org</title>
52− {Meta(event)}
52+ {Meta(event, false, true)}
5353 </Head>
5454 <IntraNav ourSite="https://urbit.org" search={search} />
5555 <SingleColumn>
pages/getting-started/[[...slug]].js+1−1
@@ -42,7 +42,7 @@ export default function UsingLayout({ posts, data, params, search, markdown }) {
4242 return (
4343 <>
4444 <Head>
45− <title>{data.title} • Getting Started • urbit.org</title>
45+ <title>{data.title} • Getting Started</title>
4646 {Meta(data)}
4747 </Head>
4848 <div className="flex h-screen min-h-screen w-screen sidebar">
pages/grants/[slug].js+4−2
@@ -51,12 +51,14 @@ export default function Grant({ post, markdown, search }) {
5151 ) : (
5252 mentor
5353 );
54+ const metaPost = Object.assign({}, post);
55+ metaPost.title = `${post.title} - Grant`;
5456
5557 return (
5658 <Container>
5759 <Head>
58− <title>{post.title} • Grants • urbit.org</title>
59− {Meta(post)}
60+ <title>{post.title} - Grant</title>
61+ {Meta(metaPost)}
6062 </Head>
6163 <IntraNav ourSite="https://urbit.org" search={search} />
6264 <SingleColumn>
pages/groups/[[...group]].js+4−22
@@ -24,33 +24,15 @@ const GroupPage = ({ data, markdown, params, search }) => {
2424 return <Gateway404 type="group" />;
2525 }
2626
27− const color = data?.tile && data?.tile.startsWith("#");
28− const reqParams = [
29− color ? `color=${encodeURIComponent(data.tile)}` : "",
30− !color
31− ? `images=${encodeURIComponent(
32− data?.tile ||
33− "https://media.urbit.org/public-links/placeholder-image.png"
34− )}`
35− : "",
36− ].filter((e) => e !== "");
37− const image = `https://urbit-id-og-cards-667veow91-urbit.vercel.app/${
38− data.title
39− }.png?${reqParams.join("&")}`;
40−
4127 return (
4228 <Container>
4329 <Head>
44− <title>{data.title} • Groups • urbit.org</title>
30+ <title>{data.title} - Urbit Group</title>
4531 <link rel="icon" type="image/png" href="/images/favicon.ico" />
46− <meta
47− name="twitter:card"
48− content="summary_large_image"
49− key="twitter-card"
50− />
32+ <meta name="twitter:card" content="summary" key="twitter-card" />
5133 <meta
5234 name="og:title"
53− content={`${data.title} • Groups • urbit.org`}
35+ content={`${data.title} - Urbit Group`}
5436 key="title"
5537 />
5638 <meta
@@ -60,7 +42,7 @@ const GroupPage = ({ data, markdown, params, search }) => {
6042 }
6143 key="description"
6244 />
63− <meta property="twitter:image" content={image} key="image" />
45+ <meta property="twitter:image" content={data.tile} key="image" />
6446 </Head>
6547 <SingleColumn>
6648 <Header search={search} />
pages/ids/[id].js+16−22
@@ -24,15 +24,6 @@ const IdPage = ({ data, markdown, applications, groups, network, params }) => {
2424 return <Gateway404 type="ID" />;
2525 }
2626
27− const reqParams = [
28− data?.bgColor ? `color=${encodeURIComponent(data?.bgColor)}` : "",
29− data?.nickname ? `nickname=${encodeURIComponent(data?.nickname)}` : "",
30− data?.image ? `images=${encodeURIComponent(data?.image)}` : "",
31− ].filter((e) => e !== "");
32− const image = `https://urbit-id-og-cards-kappa.vercel.app/${deSig(
33− id
34− )}.png?${reqParams.join("&")}`;
35−
3627 // Galaxies shouldn't show parents, so store it as boolean here for reference.
3728 const isGalaxy = ob.clan(id) === "galaxy";
3829
@@ -48,24 +39,27 @@ const IdPage = ({ data, markdown, applications, groups, network, params }) => {
4839 return (
4940 <Container>
5041 <Head>
51− <title>{id} • Urbit ID • urbit.org</title>
42+ <title>{id} • Urbit ID</title>
5243 <link rel="icon" type="image/png" href="/images/favicon.ico" />
53− <meta
54− name="twitter:card"
55− content="summary_large_image"
56− key="twitter-card"
57− />
58− <meta
59− name="og:title"
60− content={`${id} • Urbit ID • urbit.org`}
61− key="title"
62− />
44+ <meta name="twitter:card" content="summary" key="twitter-card" />
45+ <meta name="og:title" content={`${id} • Urbit ID`} key="title" />
6346 <meta
6447 name="og:description"
65− content="View more about this Urbit ID on urbit.org."
48+ content={`ID Type: ${
49+ ob.clan(id).slice(0, 1).toUpperCase() + ob.clan(id).slice(1)
50+ }`}
6651 key="description"
6752 />
68− <meta property="twitter:image" content={image} key="image" />
53+ <meta
54+ property="twitter:image"
55+ content={
56+ data?.image ||
57+ `https://urbit.org/api/sigil?patp=${id}&color=${
58+ data?.bgColor?.slice(1) || "24201E"
59+ }`
60+ }
61+ key="image"
62+ />
6963 </Head>
7064 <SingleColumn>
7165 <Section className="space-y-12 w-full" narrow>
pages/index.js+7−1
@@ -19,6 +19,7 @@ import { eventKeys } from "../lib/constants";
1919import IndexCard from "../components/ecosystem/IndexCard";
2020import fs from "fs";
2121import path from "path";
22+import Meta from "../components/Meta";
2223
2324export default function Home({
2425 posts,
@@ -27,10 +28,15 @@ export default function Home({
2728 grantNumbers,
2829 search,
2930}) {
31+ const post = {
32+ title: "Urbit",
33+ description: "A clean-slate OS and network for the 21st century.",
34+ };
3035 return (
3136 <Container>
3237 <Head>
33− <title>urbit.org</title>
38+ <title>Urbit</title>
39+ {Meta(post)}
3440 </Head>
3541 <IntraNav ourSite="https://urbit.org" search={search} />
3642 <SingleColumn>
pages/marketplaces/[slug].js+2−2
@@ -12,7 +12,7 @@ export default function Marketplace({
1212}) {
1313 return (
1414 <BasicPage
15− section="Marketplaces"
15+ section="Urbit Marketplace"
1616 post={post}
1717 markdown={markdown}
1818 search={search}
@@ -36,7 +36,7 @@ export default function Marketplace({
3636export async function getStaticProps({ params }) {
3737 const post = getPostBySlug(
3838 params.slug,
39− ["title", "slug", "URL", "image", "payment", "content"],
39+ ["title", "slug", "description", "URL", "image", "payment", "content"],
4040 "marketplaces"
4141 );
4242
pages/organizations/[slug].js+11−5
@@ -1,6 +1,3 @@
1−// Single page per organisation
2−// Needs to have *associated ships* by which it polls content/applications for applications it "owns"
3−// Needs to look for its title in ecosystem/spotlight
41import { getAllPosts, getPostBySlug, getPostSlugs } from "../../lib/lib";
52import BasicPage from "../../components/ecosystem/BasicPage";
63import { Markdown } from "@urbit/foundation-design-system";
@@ -19,7 +16,7 @@ export default function Organization({
1916}) {
2017 return (
2118 <BasicPage
22− section="Organizations"
19+ section="Organization"
2320 post={post}
2421 markdown={markdown}
2522 search={search}
@@ -97,7 +94,16 @@ export default function Organization({
9794export async function getStaticProps({ params }) {
9895 const post = getPostBySlug(
9996 params.slug,
100− ["title", "slug", "URL", "image", "ships", "group", "content"],
97+ [
98+ "title",
99+ "slug",
100+ "description",
101+ "URL",
102+ "image",
103+ "ships",
104+ "group",
105+ "content",
106+ ],
101107 "organizations"
102108 );
103109
pages/overview/[[...slug]].js+1−1
@@ -21,7 +21,7 @@ export default function Overview({ posts, data, markdown, search }) {
2121 return (
2222 <Container>
2323 <Head>
24− <title>{data.title} • Overview • Urbit</title>
24+ <title>{data.title} • Overview</title>
2525 {Meta(data)}
2626 </Head>
2727 <IntraNav ourSite="https://urbit.org" search={search} />
pages/podcasts/[slug].js+1−1
@@ -12,7 +12,7 @@ export default function Podcast({
1212}) {
1313 return (
1414 <BasicPage
15− section="Podcasts"
15+ section="Podcast"
1616 post={post}
1717 markdown={markdown}
1818 search={search}
pages/updates/[slug].js+1−1
@@ -30,7 +30,7 @@ export default function Post({ post, markdown, search }) {
3030 return (
3131 <Container>
3232 <Head>
33− <title>{post.title} • Updates • urbit.org</title>
33+ <title>{post.title} • Updates</title>
3434 {Meta(post)}
3535 </Head>
3636 <IntraNav ourSite="https://urbit.org" search={search} />