diff --git a/components/ChannelReferenceRenderer.tsx b/components/ChannelReferenceRenderer.tsx index adf2127..0a1ec22 100644 --- a/components/ChannelReferenceRenderer.tsx +++ b/components/ChannelReferenceRenderer.tsx @@ -25,8 +25,10 @@ function renderStringWithChannelRefs(value: string) { export const ChannelReferenceRenderer = ({ children, }: React.PropsWithChildren<{}>) => { - // TODO: this should probably walk the tree - if (typeof children[0] === "string") - return renderStringWithChannelRefs(children[0]); + // TODO: this must be made sound + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + const c0 = children[0]; + if (typeof c0 === "string") return renderStringWithChannelRefs(c0); return <>{children}; }; diff --git a/components/Fader.tsx b/components/Fader.tsx index b0cb508..e3fae89 100644 --- a/components/Fader.tsx +++ b/components/Fader.tsx @@ -4,7 +4,7 @@ type Props = { threshold: number; }; -function clamp(min, max, value) { +function clamp(min: number, max: number, value: number) { return Math.min(Math.max(value, min), max); } diff --git a/components/Feed.tsx b/components/Feed.tsx index bd0a5bc..985fc57 100644 --- a/components/Feed.tsx +++ b/components/Feed.tsx @@ -1,17 +1,28 @@ -import flatMap from "lodash/flatMap"; import sortBy from "lodash/sortBy"; import React from "react"; import request from "axios"; import api from "./api"; -import transformers from "./feed-transformers"; import ReactTimeAgo from "react-time-ago"; import JavascriptTimeAgo from "javascript-time-ago"; -import timeagoFi from "javascript-time-ago/locale/fi"; +import timeagoFi from "javascript-time-ago/locale/fi.json"; +import { convertTwitterItems, TwitterItem } from "./feed-transformers/twitter"; +import { GithubApi } from "parse-github-event/lib/types"; +import { convertGithubItems } from "./feed-transformers/github"; +import { KKEvent } from "../data/events"; JavascriptTimeAgo.addLocale(timeagoFi); +interface FeedsResult { + twitter?: TwitterItem[]; + github?: GithubApi.GithubEvent[]; +} + +interface FeedState { + messages: KKEvent[]; +} + export default class Feed extends React.Component { - state = { + public state: FeedState = { messages: [], }; @@ -20,9 +31,13 @@ export default class Feed extends React.Component { } async updateFeed() { - const res = await request.get(api("feeds")); + const res = await request.get(api("feeds")); + const { github, twitter } = res.data; const messages = sortBy( - flatMap(res.data, (messages, type) => transformers[type](messages)), + [ + ...convertTwitterItems(twitter ?? []), + ...convertGithubItems(github ?? []), + ].flat(), "timestamp" ); messages.reverse(); // In-place @@ -68,7 +83,7 @@ export default class Feed extends React.Component { - {message.meta} + {/*{message.meta}*/} diff --git a/components/InviteForm.tsx b/components/InviteForm.tsx index 4d36538..1d136cb 100644 --- a/components/InviteForm.tsx +++ b/components/InviteForm.tsx @@ -4,15 +4,21 @@ import classSet from "classnames"; import api from "./api"; import Loader from "./Loader"; +type InviteFormState = { + submitted: boolean; + sending: boolean; + error: any | null; + email: string; +}; export default class InviteForm extends React.Component { - state = { + public state: InviteFormState = { email: "", submitted: false, sending: false, error: null, }; - onSubmit = async (e) => { + onSubmit = async (e: React.FormEvent) => { e.preventDefault(); this.setState({ @@ -35,11 +41,11 @@ export default class InviteForm extends React.Component { this.setState({ submitted: true, sending: false }); }; - handleError = (err) => { - this.setState({ error: err, sending: false }); + handleError = (error: any) => { + this.setState({ error, sending: false }); }; - onChange = (e) => { + onChange = (e: React.ChangeEvent) => { if (e.target.value === this.state.email) { return; } diff --git a/components/Members.tsx b/components/Members.tsx index 8112fc4..ffb3bd1 100644 --- a/components/Members.tsx +++ b/components/Members.tsx @@ -3,8 +3,16 @@ import request from "axios"; import shuffle from "lodash/shuffle"; import api from "./api"; +interface Member { + avatar_url: string; +} + +interface MembersState { + members: Member[]; +} + export default class Members extends React.Component { - state = { + public state: MembersState = { members: [], }; diff --git a/components/api.ts b/components/api.ts index 8b7ee5b..4bad9e9 100644 --- a/components/api.ts +++ b/components/api.ts @@ -1,5 +1,5 @@ const host = process.env.SERVER || "https://koodiklinikka-api.herokuapp.com/"; -export default function getApiURL(path) { +export default function getApiURL(path: string) { return host + path; } diff --git a/components/feed-transformers.ts b/components/feed-transformers.ts deleted file mode 100644 index c2916b0..0000000 --- a/components/feed-transformers.ts +++ /dev/null @@ -1,70 +0,0 @@ -import lodashTemplate from "lodash/template"; -import defaultTemplateSettings from "lodash/templateSettings"; -import githubEvent from "parse-github-event"; -import twitterText from "twitter-text"; - -const isVisibleGithubEvent = ({ type }) => - type !== "PushEvent" && type !== "DeleteEvent"; - -const templateSettings = { - ...defaultTemplateSettings, - interpolate: /{{([\s\S]+?)}}/g, -}; - -export default { - github(items) { - return items.filter(isVisibleGithubEvent).map((item) => { - const template = lodashTemplate( - githubEvent.parse(item).text, - templateSettings, - false - ); - - const repository = `https://github.com/${item.repo.name}`; - let branch; - if (item.payload.ref) { - branch = item.payload.ref.replace("refs/heads/", ""); - } - - const message = template({ - repository: `${item.repo.name}`, - branch: branch, - number: item.payload.number, - ref_type: item.payload.ref_type, - ref: item.payload.ref, - }); - - const url = `https://github.com/${item.actor.login}`; - - return { - user: item.actor.login, - userLink: url, - image: item.actor.avatar_url, - imageLink: url, - body: message, - timestamp: new Date(item.created_at), - url: message.url, - type: "github", - }; - }); - }, - twitter(items) { - return items.map((item) => { - if (item.retweeted) { - item = item.retweeted_status; - } - - const url = `https://twitter.com/${item.user.screen_name}`; - - return { - user: `@${item.user.screen_name}`, - userLink: url, - image: item.user.profile_image_url_https, - imageLink: url, - body: twitterText.autoLink(item.text), - timestamp: new Date(item.created_at), - type: "twitter", - }; - }); - }, -}; diff --git a/components/feed-transformers/github.ts b/components/feed-transformers/github.ts new file mode 100644 index 0000000..ed40ae1 --- /dev/null +++ b/components/feed-transformers/github.ts @@ -0,0 +1,47 @@ +import { GithubApi } from "parse-github-event/lib/types"; +import { KKEvent } from "../../data/events"; +import githubEvent from "parse-github-event"; +import lodashTemplate from "lodash/template"; +import defaultTemplateSettings from "lodash/templateSettings"; + +const isVisibleGithubEvent = ({ type }: GithubApi.GithubEvent) => + type !== "PushEvent" && type !== "DeleteEvent"; +const templateSettings = { + ...defaultTemplateSettings, + interpolate: /{{([\s\S]+?)}}/g, +}; + +function convertGithubEvent(item: GithubApi.GithubEvent): KKEvent { + const parsedEvent = githubEvent.parse(item); + const template = lodashTemplate(parsedEvent?.text, templateSettings, false); + + const repository = `https://github.com/${item.repo.name}`; + let branch; + if (item.payload.ref) { + branch = item.payload.ref.replace("refs/heads/", ""); + } + + const message = template({ + repository: `${item.repo.name}`, + branch: branch, + number: item.payload.number, + ref_type: item.payload.ref_type, + ref: item.payload.ref, + }); + + const url = `https://github.com/${item.actor.login}`; + + return { + user: item.actor.login, + userLink: url, + image: item.actor.avatar_url, + imageLink: url, + body: message, + timestamp: new Date(item.created_at), + type: "github", + }; +} + +export function convertGithubItems(items: readonly GithubApi.GithubEvent[]) { + return items.filter(isVisibleGithubEvent).map(convertGithubEvent); +} diff --git a/components/feed-transformers/twitter.ts b/components/feed-transformers/twitter.ts new file mode 100644 index 0000000..f0e2433 --- /dev/null +++ b/components/feed-transformers/twitter.ts @@ -0,0 +1,35 @@ +import { KKEvent } from "../../data/events"; +import twitterText from "twitter-text"; + +export interface TwitterItem { + retweeted?: boolean; + retweeted_status?: TwitterItem; + user: { + screen_name: string; + profile_image_url_https: string; + }; + text: string; + created_at: number | string; // TODO: type? +} + +function convertTwitterItem(item: TwitterItem): KKEvent { + if (item.retweeted && item.retweeted_status) { + item = item.retweeted_status; + } + + const url = `https://twitter.com/${item.user.screen_name}`; + + return { + user: `@${item.user.screen_name}`, + userLink: url, + image: item.user.profile_image_url_https, + imageLink: url, + body: twitterText.autoLink(item.text), + timestamp: new Date(item.created_at), + type: "twitter", + }; +} + +export function convertTwitterItems(items: readonly TwitterItem[]) { + return items.map(convertTwitterItem); +} diff --git a/data/events.ts b/data/events.ts new file mode 100644 index 0000000..6ed10e9 --- /dev/null +++ b/data/events.ts @@ -0,0 +1,9 @@ +export interface KKEvent { + image: string; + imageLink: string; + body: string; + type: "github" | "twitter"; + user: string; + userLink: string; + timestamp: Date; +} diff --git a/package.json b/package.json index c75a8fc..b5aa61f 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,6 @@ "axios": "^0.25.0", "classnames": "^2.3.1", "javascript-time-ago": "^2.3.13", - "less": "^4.1.2", "lodash": "^4.17.21", "next": "^12.0.10", "parse-github-event": "^1.1.3", @@ -31,8 +30,12 @@ }, "devDependencies": { "@next/eslint-plugin-next": "^12.0.10", + "@types/lodash": "^4.14.178", "@types/node": "17.0.17", "@types/react": "17.0.39", + "@types/react-dom": "^17.0.11", + "@types/sass": "^1.43.1", + "@types/twitter-text": "^3.1.1", "@typescript-eslint/eslint-plugin": "^5.11.0", "@typescript-eslint/parser": "^5.11.0", "eslint": "^8.8.0", diff --git a/pages/_app.tsx b/pages/_app.tsx index 4d19aa5..0b844c2 100644 --- a/pages/_app.tsx +++ b/pages/_app.tsx @@ -2,6 +2,7 @@ import React from "react"; import Head from "next/head"; import "../styles/style.scss"; +import { AppProps } from "next/app"; const metaImage = "/static/images/meta.jpg"; const metaDescription = @@ -13,7 +14,7 @@ const metaKeywords = "ohjelmointi,frontend,open source,devaus,suomi,javascript,clojure,go,java,node.js,io.js,angular.js,web"; const metaUrl = "https://koodiklinikka.fi/"; -function MyApp({ Component, pageProps }) { +function MyApp({ Component, pageProps }: AppProps) { return ( <> diff --git a/pages/_document.tsx b/pages/_document.tsx index 262ff40..c86f1c9 100644 --- a/pages/_document.tsx +++ b/pages/_document.tsx @@ -17,11 +17,6 @@ function trackPageView() { } class MyDocument extends Document { - static async getInitialProps(ctx) { - const initialProps = await Document.getInitialProps(ctx); - return { ...initialProps }; - } - componentDidMount() { trackPageView(); } diff --git a/yarn.lock b/yarn.lock index 6ca3234..eceb2d9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -153,6 +153,11 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== +"@types/lodash@^4.14.178": + version "4.14.178" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.178.tgz#341f6d2247db528d4a13ddbb374bcdc80406f4f8" + integrity sha512-0d5Wd09ItQWH1qFbEyQ7oTQ3GZrMfth5JkbN3EvTKLXcHLRDSXeLnlvlOn0wvxVIwK5o2M8JzP/OWz7T3NRsbw== + "@types/mdast@^3.0.0": version "3.0.10" resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.10.tgz#4724244a82a4598884cbbe9bcfd73dff927ee8af" @@ -170,7 +175,7 @@ resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197" integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== -"@types/node@17.0.17": +"@types/node@*", "@types/node@17.0.17": version "17.0.17" resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.17.tgz#a8ddf6e0c2341718d74ee3dc413a13a042c45a0c" integrity sha512-e8PUNQy1HgJGV3iU/Bp2+D/DXh3PYeyli8LgIwsQcs1Ar1LoaWHSIT6Rw+H2rNJmiq6SNWiDytfx8+gYj7wDHw== @@ -180,7 +185,14 @@ resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11" integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ== -"@types/react@17.0.39": +"@types/react-dom@^17.0.11": + version "17.0.11" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.11.tgz#e1eadc3c5e86bdb5f7684e00274ae228e7bcc466" + integrity sha512-f96K3k+24RaLGVu/Y2Ng3e1EbZ8/cVJvypZWd7cy0ofCBaf2lcM46xNhycMZ2xGwbBjRql7hOlZ+e2WlJ5MH3Q== + dependencies: + "@types/react" "*" + +"@types/react@*", "@types/react@17.0.39": version "17.0.39" resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.39.tgz#d0f4cde092502a6db00a1cded6e6bf2abb7633ce" integrity sha512-UVavlfAxDd/AgAacMa60Azl7ygyQNRwC/DsHZmKgNvPmRR5p70AJ5Q9EAmL2NWOJmeV+vVUI4IAP7GZrN8h8Ug== @@ -189,11 +201,23 @@ "@types/scheduler" "*" csstype "^3.0.2" +"@types/sass@^1.43.1": + version "1.43.1" + resolved "https://registry.yarnpkg.com/@types/sass/-/sass-1.43.1.tgz#86bb0168e9e881d7dade6eba16c9ed6d25dc2f68" + integrity sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g== + dependencies: + "@types/node" "*" + "@types/scheduler@*": version "0.16.2" resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== +"@types/twitter-text@^3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@types/twitter-text/-/twitter-text-3.1.1.tgz#c23334522ca252659e432635eec2f439706737d0" + integrity sha512-TqUdwZOdCi3pB4kmCyOS6sjLfzRjbqcwFuVKGQ9Gq9J37GBnF7mf6cIw/zN2GgDbvXYEEfoiuPGFw+TK5ZU0EA== + "@types/unist@*", "@types/unist@^2.0.0": version "2.0.6" resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d" @@ -482,13 +506,6 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -copy-anything@^2.0.1: - version "2.0.6" - resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-2.0.6.tgz#092454ea9584a7b7ad5573062b2a87f5900fc480" - integrity sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw== - dependencies: - is-what "^3.14.1" - core-js-pure@^3.20.2: version "3.21.0" resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.21.0.tgz#819adc8dfb808205ce25b51d50591becd615db7e" @@ -518,13 +535,6 @@ damerau-levenshtein@^1.0.7: resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== -debug@^3.2.6: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - debug@^4.0.0, debug@^4.1.1, debug@^4.3.2: version "4.3.3" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" @@ -587,13 +597,6 @@ emoji-regex@^9.2.2: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== -errno@^0.1.1: - version "0.1.8" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" - integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== - dependencies: - prr "~1.0.1" - es-abstract@^1.19.0, es-abstract@^1.19.1: version "1.19.1" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" @@ -958,11 +961,6 @@ globby@^11.0.4: merge2 "^1.4.1" slash "^3.0.0" -graceful-fs@^4.1.2: - version "4.2.9" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" - integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== - has-bigints@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" @@ -997,13 +995,6 @@ hast-util-whitespace@^2.0.0: resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-2.0.0.tgz#4fc1086467cc1ef5ba20673cb6b03cec3a970f1c" integrity sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg== -iconv-lite@^0.4.4: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" @@ -1014,11 +1005,6 @@ ignore@^5.1.8, ignore@^5.2.0: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== -image-size@~0.5.0: - version "0.5.5" - resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" - integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w= - immutable@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0.tgz#b86f78de6adef3608395efb269a91462797e2c23" @@ -1178,11 +1164,6 @@ is-weakref@^1.0.1: dependencies: call-bind "^1.0.2" -is-what@^3.14.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1" - integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA== - isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -1242,23 +1223,6 @@ language-tags@^1.0.5: dependencies: language-subtag-registry "~0.3.2" -less@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/less/-/less-4.1.2.tgz#6099ee584999750c2624b65f80145f8674e4b4b0" - integrity sha512-EoQp/Et7OSOVu0aJknJOtlXZsnr8XE8KwuzTHOLeVSEx8pVWUICc8Q0VYRHgzyjX78nMEyC/oztWFbgyhtNfDA== - dependencies: - copy-anything "^2.0.1" - parse-node-version "^1.0.1" - tslib "^2.3.0" - optionalDependencies: - errno "^0.1.1" - graceful-fs "^4.1.2" - image-size "~0.5.0" - make-dir "^2.1.0" - mime "^1.4.1" - needle "^2.5.2" - source-map "~0.6.0" - levn@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" @@ -1291,14 +1255,6 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -make-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - mdast-util-definitions@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-5.1.0.tgz#b6d10ef00a3c4cf191e8d9a5fa58d7f4a366f817" @@ -1565,11 +1521,6 @@ micromatch@^4.0.4: braces "^3.0.1" picomatch "^2.2.3" -mime@^1.4.1: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - minimatch@^3.0.4: version "3.0.5" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.5.tgz#4da8f1290ee0f0f8e83d60ca69f8f134068604a3" @@ -1587,11 +1538,6 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - nanoid@^3.1.30: version "3.2.0" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.2.0.tgz#62667522da6673971cca916a6d3eff3f415ff80c" @@ -1602,15 +1548,6 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -needle@^2.5.2: - version "2.9.1" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.9.1.tgz#22d1dffbe3490c2b83e301f7709b6736cd8f2684" - integrity sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ== - dependencies: - debug "^3.2.6" - iconv-lite "^0.4.4" - sax "^1.2.4" - next@^12.0.10: version "12.0.10" resolved "https://registry.yarnpkg.com/next/-/next-12.0.10.tgz#fcc4584177418bd777ce157f3165b7ba5e7708f7" @@ -1730,11 +1667,6 @@ parse-github-event@^1.1.3: resolved "https://registry.yarnpkg.com/parse-github-event/-/parse-github-event-1.1.3.tgz#82f0ac15acc07fc021cdd1b6dd1f8489a42b6592" integrity sha512-/fhQveRhaAov5vTwIQb5dpnjCO206hsng5YfycU7UoR1Od1jmgZCCkmKZPwp/Tw6U9IDfDbf4Xh6vGd+OPcNRw== -parse-node-version@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" - integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== - path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -1770,11 +1702,6 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - postcss@8.4.5: version "8.4.5" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.5.tgz#bae665764dfd4c6fcc24dc0fdf7e7aa00cc77f95" @@ -1808,11 +1735,6 @@ property-information@^6.0.0: resolved "https://registry.yarnpkg.com/property-information/-/property-information-6.1.1.tgz#5ca85510a3019726cb9afed4197b7b8ac5926a22" integrity sha512-hrzC564QIl0r0vy4l6MvRLhafmUowhO/O3KgVSoXIbbA2Sz4j8HGpJc6T2cubRVwMwpdiG/vKGfhT4IixmKN9w== -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= - punycode@1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" @@ -1984,11 +1906,6 @@ sade@^1.7.3: dependencies: mri "^1.1.0" -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - sass@^1.49.7: version "1.49.7" resolved "https://registry.yarnpkg.com/sass/-/sass-1.49.7.tgz#22a86a50552b9b11f71404dfad1b9ff44c6b0c49" @@ -1998,11 +1915,6 @@ sass@^1.49.7: immutable "^4.0.0" source-map-js ">=0.6.2 <2.0.0" -sax@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - scheduler@^0.20.2: version "0.20.2" resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" @@ -2011,11 +1923,6 @@ scheduler@^0.20.2: loose-envify "^1.1.0" object-assign "^4.1.1" -semver@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" @@ -2059,11 +1966,6 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== -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== - space-separated-tokens@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-2.0.1.tgz#43193cec4fb858a2ce934b7f98b7f2c18107098b" @@ -2152,11 +2054,6 @@ tslib@^1.8.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" - integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== - tsutils@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"