solving bugs reported in GH issues

This commit is contained in:
Amruth Pillai
2020-07-24 21:54:48 +05:30
parent 586f2b1eca
commit f2a0b612d0
21 changed files with 827 additions and 979 deletions

1
.nvmrc
View File

@ -1 +0,0 @@
14.5.0

View File

@ -1,12 +1,49 @@
const admin = require('firebase-admin');
const functions = require('firebase-functions'); const functions = require('firebase-functions');
const puppeteer = require('puppeteer'); const puppeteer = require('puppeteer');
admin.initializeApp();
const BASE_URL = 'https://rxresu.me/r/'; const BASE_URL = 'https://rxresu.me/r/';
function timeout(ms) { function timeout(ms) {
return new Promise((resolve) => setTimeout(resolve, ms)); return new Promise((resolve) => setTimeout(resolve, ms));
} }
async function asyncForEach(array, callback) {
for (let index = 0; index < array.length; index++) {
// eslint-disable-next-line no-await-in-loop
await callback(array[index], index, array);
}
}
exports.deleteUser = functions.https.onCall((_, { auth }) => {
if (!auth) {
throw new functions.https.HttpsError(
'failed-precondition',
'The function must be called while authenticated.',
);
}
return new Promise((resolve) => {
const resumesRef = admin.database().ref('resumes');
resumesRef.once('value', async (snapshot) => {
const data = snapshot.val();
const resumes = Object.keys(data).filter(
(x) => data[x].user === auth.uid,
);
await asyncForEach(resumes, async (id) => {
await admin.database().ref(`resumes/${id}`).remove();
});
resolve();
});
});
});
exports.printResume = functions.https.onCall(async ({ id, type }, { auth }) => { exports.printResume = functions.https.onCall(async ({ id, type }, { auth }) => {
if (!id) { if (!id) {
throw new functions.https.HttpsError( throw new functions.https.HttpsError(

File diff suppressed because it is too large Load Diff

View File

@ -12,9 +12,9 @@
"node": "10" "node": "10"
}, },
"dependencies": { "dependencies": {
"firebase-admin": "^8.13.0", "firebase-admin": "^9.0.0",
"firebase-functions": "^3.7.0", "firebase-functions": "^3.8.0",
"puppeteer": "2.1.1" "puppeteer": "5.2.1"
}, },
"devDependencies": { "devDependencies": {
"firebase-functions-test": "^0.2.1" "firebase-functions-test": "^0.2.1"

View File

@ -5,7 +5,7 @@ module.exports = {
title: 'Reactive Resume', title: 'Reactive Resume',
siteUrl: 'https://rxresu.me', siteUrl: 'https://rxresu.me',
description: 'A free and open source resume builder.', description: 'A free and open source resume builder.',
version: '2.0.4', version: '2.1.0',
}, },
plugins: [ plugins: [
'gatsby-plugin-react-helmet', 'gatsby-plugin-react-helmet',
@ -13,7 +13,7 @@ module.exports = {
resolve: 'gatsby-plugin-eslint', resolve: 'gatsby-plugin-eslint',
options: { options: {
test: /\.js$|\.jsx$/, test: /\.js$|\.jsx$/,
exclude: /(node_modules|.cache|public)/, exclude: /(node_modules|.cache|public|_this_is_virtual_fs_path_)/,
stages: ['develop'], stages: ['develop'],
options: { options: {
emitWarning: true, emitWarning: true,

435
package-lock.json generated
View File

@ -1087,15 +1087,15 @@
"integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow=="
}, },
"@firebase/analytics": { "@firebase/analytics": {
"version": "0.3.9", "version": "0.4.1",
"resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.3.9.tgz", "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.4.1.tgz",
"integrity": "sha512-l4dNskm8uQ+UqO6Lw+fuyO1enZBXUV6xNMxeVABEnVrp3wOP90KKb/ZwYgleAxF1It52lorcTtkA1YFpv3iEIQ==", "integrity": "sha512-y5ZuhqX/PwLi0t7AKxNAi3NnlEwXe0rpknulUWUg3/1dALqtd2RrAOATQoV5FNnKK6YUH5UmK0Jb9KcSjsFeNw==",
"requires": { "requires": {
"@firebase/analytics-types": "0.3.1", "@firebase/analytics-types": "0.3.1",
"@firebase/component": "0.1.16", "@firebase/component": "0.1.17",
"@firebase/installations": "0.4.14", "@firebase/installations": "0.4.15",
"@firebase/logger": "0.2.6", "@firebase/logger": "0.2.6",
"@firebase/util": "0.2.50", "@firebase/util": "0.3.0",
"tslib": "^1.11.1" "tslib": "^1.11.1"
} }
}, },
@ -1105,14 +1105,14 @@
"integrity": "sha512-63vVJ5NIBh/JF8l9LuPrQYSzFimk7zYHySQB4Dk9rVdJ8kV/vGQoVTvRu1UW05sEc2Ug5PqtEChtTHU+9hvPcA==" "integrity": "sha512-63vVJ5NIBh/JF8l9LuPrQYSzFimk7zYHySQB4Dk9rVdJ8kV/vGQoVTvRu1UW05sEc2Ug5PqtEChtTHU+9hvPcA=="
}, },
"@firebase/app": { "@firebase/app": {
"version": "0.6.8", "version": "0.6.9",
"resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.6.8.tgz", "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.6.9.tgz",
"integrity": "sha512-Tm7Pi6Dtpx4FFKcpm0jcrZ/qI9oREBxmP3pWlw1jgDW4syRJHmN9/5DYvfFk6FAhj3FrY8E/6F+ngWJfqONotQ==", "integrity": "sha512-X2riRgK49IK8LCQ3j7BKLu3zqHDTJSaT6YgcLewtHuOVwtpHfGODiS1cL5VMvKm3ogxP84GA70tN3sdoL/vTog==",
"requires": { "requires": {
"@firebase/app-types": "0.6.1", "@firebase/app-types": "0.6.1",
"@firebase/component": "0.1.16", "@firebase/component": "0.1.17",
"@firebase/logger": "0.2.6", "@firebase/logger": "0.2.6",
"@firebase/util": "0.2.50", "@firebase/util": "0.3.0",
"dom-storage": "2.1.0", "dom-storage": "2.1.0",
"tslib": "^1.11.1", "tslib": "^1.11.1",
"xmlhttprequest": "1.8.0" "xmlhttprequest": "1.8.0"
@ -1142,24 +1142,24 @@
"integrity": "sha512-/+gBHb1O9x/YlG7inXfxff/6X3BPZt4zgBv4kql6HEmdzNQCodIRlEYnI+/da+lN+dha7PjaFH7C7ewMmfV7rw==" "integrity": "sha512-/+gBHb1O9x/YlG7inXfxff/6X3BPZt4zgBv4kql6HEmdzNQCodIRlEYnI+/da+lN+dha7PjaFH7C7ewMmfV7rw=="
}, },
"@firebase/component": { "@firebase/component": {
"version": "0.1.16", "version": "0.1.17",
"resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.1.16.tgz", "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.1.17.tgz",
"integrity": "sha512-FvffvFN0LWgv1H/FIyruTECOL69Dhy+JfwoTq+mV39V8Mz9lNpo41etonL5AOr7KmXxYJVbNwkx0L9Ei88i7JA==", "integrity": "sha512-/tN5iLcFp9rdpTfCJPfQ/o2ziGHlDxOzNx6XD2FoHlu4pG/PPGu+59iRfQXIowBGhxcTGD/l7oJhZEY/PVg0KQ==",
"requires": { "requires": {
"@firebase/util": "0.2.50", "@firebase/util": "0.3.0",
"tslib": "^1.11.1" "tslib": "^1.11.1"
} }
}, },
"@firebase/database": { "@firebase/database": {
"version": "0.6.8", "version": "0.6.9",
"resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.6.8.tgz", "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.6.9.tgz",
"integrity": "sha512-Psibz/LD9WBvZRS7A/kkYd5i5l6tBw49adSFmCM2ZJlKE9fxZhxay02AerwfXHiq3gPKVeqXUjBIRuHOWdEXmw==", "integrity": "sha512-+X2dNFDpcLEcDRdXp2Hgkf0RnNz3AOIC+Y7UFMQYadm9buB+snXomlnlkMzOj6o+Cp3V7GnpBrKKeeFqzF6wGQ==",
"requires": { "requires": {
"@firebase/auth-interop-types": "0.1.5", "@firebase/auth-interop-types": "0.1.5",
"@firebase/component": "0.1.16", "@firebase/component": "0.1.17",
"@firebase/database-types": "0.5.1", "@firebase/database-types": "0.5.1",
"@firebase/logger": "0.2.6", "@firebase/logger": "0.2.6",
"@firebase/util": "0.2.50", "@firebase/util": "0.3.0",
"faye-websocket": "0.11.3", "faye-websocket": "0.11.3",
"tslib": "^1.11.1" "tslib": "^1.11.1"
} }
@ -1173,14 +1173,14 @@
} }
}, },
"@firebase/firestore": { "@firebase/firestore": {
"version": "1.16.1", "version": "1.16.2",
"resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-1.16.1.tgz", "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-1.16.2.tgz",
"integrity": "sha512-TGtvNIGHMEFFEuOSsRswou576GPZY39vXIsenn0B1Dqz9ACpyDtvAT9YdbG38srlPq7ZKwsP5x04LB43zZ6eAg==", "integrity": "sha512-iIkAL860oD/QA1uYI9JBbWqBYFWd+DnuSj//BIbOGn3DNAruDFy07g8re1vn+0MMas9bMk6CZATJNCFPeH8AsQ==",
"requires": { "requires": {
"@firebase/component": "0.1.16", "@firebase/component": "0.1.17",
"@firebase/firestore-types": "1.12.0", "@firebase/firestore-types": "1.12.0",
"@firebase/logger": "0.2.6", "@firebase/logger": "0.2.6",
"@firebase/util": "0.2.50", "@firebase/util": "0.3.0",
"@firebase/webchannel-wrapper": "0.2.41", "@firebase/webchannel-wrapper": "0.2.41",
"@grpc/grpc-js": "^1.0.0", "@grpc/grpc-js": "^1.0.0",
"@grpc/proto-loader": "^0.5.0", "@grpc/proto-loader": "^0.5.0",
@ -1193,11 +1193,11 @@
"integrity": "sha512-OqNxVb63wPZdUc7YnpacAW1WNIMSKERSewCRi+unCQ0YI0KNfrDSypyGCyel+S3GdOtKMk9KnvDknaGbnaFX4g==" "integrity": "sha512-OqNxVb63wPZdUc7YnpacAW1WNIMSKERSewCRi+unCQ0YI0KNfrDSypyGCyel+S3GdOtKMk9KnvDknaGbnaFX4g=="
}, },
"@firebase/functions": { "@firebase/functions": {
"version": "0.4.48", "version": "0.4.49",
"resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.4.48.tgz", "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.4.49.tgz",
"integrity": "sha512-BwI/JzO/f/nquKG1IS3VqmwMaKEhvM58/08vTnp46krHBsOYqsdD9T2amz+HXGT9fe2HhDsUhgFE8D00S0vqbg==", "integrity": "sha512-ma3+z1wMKervmEJCLWxwIjbSV+n3/BTfFPSZdTjt18Wgiso5q4BzEObFkorxaXZiyT3KpZ0qOO97lgcoth2hIA==",
"requires": { "requires": {
"@firebase/component": "0.1.16", "@firebase/component": "0.1.17",
"@firebase/functions-types": "0.3.17", "@firebase/functions-types": "0.3.17",
"@firebase/messaging-types": "0.4.5", "@firebase/messaging-types": "0.4.5",
"isomorphic-fetch": "2.2.1", "isomorphic-fetch": "2.2.1",
@ -1210,13 +1210,13 @@
"integrity": "sha512-DGR4i3VI55KnYk4IxrIw7+VG7Q3gA65azHnZxo98Il8IvYLr2UTBlSh72dTLlDf25NW51HqvJgYJDKvSaAeyHQ==" "integrity": "sha512-DGR4i3VI55KnYk4IxrIw7+VG7Q3gA65azHnZxo98Il8IvYLr2UTBlSh72dTLlDf25NW51HqvJgYJDKvSaAeyHQ=="
}, },
"@firebase/installations": { "@firebase/installations": {
"version": "0.4.14", "version": "0.4.15",
"resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.4.14.tgz", "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.4.15.tgz",
"integrity": "sha512-hQPsaU7wdTq3CFMtFQwZy6LgdXZAkXoUToV4O+ekPbjM65QzaGVogJVU8O2H6ADXoq37SarcUXKe86pcUWdFLA==", "integrity": "sha512-6uGgDocDGu5gI7FeDBDcLaH4npz0cm2f0kctOFK+5N1CyK8Tv2YGv5/uGqlrTtSwDW+8tgKNo/5XXJJOPr9Jsw==",
"requires": { "requires": {
"@firebase/component": "0.1.16", "@firebase/component": "0.1.17",
"@firebase/installations-types": "0.3.4", "@firebase/installations-types": "0.3.4",
"@firebase/util": "0.2.50", "@firebase/util": "0.3.0",
"idb": "3.0.2", "idb": "3.0.2",
"tslib": "^1.11.1" "tslib": "^1.11.1"
} }
@ -1232,14 +1232,14 @@
"integrity": "sha512-KIxcUvW/cRGWlzK9Vd2KB864HlUnCfdTH0taHE0sXW5Xl7+W68suaeau1oKNEqmc3l45azkd4NzXTCWZRZdXrw==" "integrity": "sha512-KIxcUvW/cRGWlzK9Vd2KB864HlUnCfdTH0taHE0sXW5Xl7+W68suaeau1oKNEqmc3l45azkd4NzXTCWZRZdXrw=="
}, },
"@firebase/messaging": { "@firebase/messaging": {
"version": "0.6.20", "version": "0.6.21",
"resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.6.20.tgz", "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.6.21.tgz",
"integrity": "sha512-1MqyljXnbFBeHYhL6QInVM9aO5MW820yhNmOIVxk58wNXq4tOQLzqnKuvlgZ+ttgqlDzrIYiVf3EOHh5DptttQ==", "integrity": "sha512-cunbFNCtUy25Zp4/jn5lenYUPqgHpjKNUwRjKc7vIzYb4IT2Vu/7kaEptO3K0KQBC6O0QV3ZtqQxKrI9aLiSHg==",
"requires": { "requires": {
"@firebase/component": "0.1.16", "@firebase/component": "0.1.17",
"@firebase/installations": "0.4.14", "@firebase/installations": "0.4.15",
"@firebase/messaging-types": "0.4.5", "@firebase/messaging-types": "0.4.5",
"@firebase/util": "0.2.50", "@firebase/util": "0.3.0",
"idb": "3.0.2", "idb": "3.0.2",
"tslib": "^1.11.1" "tslib": "^1.11.1"
} }
@ -1250,15 +1250,15 @@
"integrity": "sha512-sux4fgqr/0KyIxqzHlatI04Ajs5rc3WM+WmtCpxrKP1E5Bke8xu/0M+2oy4lK/sQ7nov9z15n3iltAHCgTRU3Q==" "integrity": "sha512-sux4fgqr/0KyIxqzHlatI04Ajs5rc3WM+WmtCpxrKP1E5Bke8xu/0M+2oy4lK/sQ7nov9z15n3iltAHCgTRU3Q=="
}, },
"@firebase/performance": { "@firebase/performance": {
"version": "0.3.9", "version": "0.3.10",
"resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.3.9.tgz", "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.3.10.tgz",
"integrity": "sha512-Fj22DZXRhhKv1OSUzDxX7AqpJUcDld6tzXK1yxOC8e3v1DFPQMQdM9FoG1m1b/Vrqa6pCCqnqG6gh6VPnEcAzQ==", "integrity": "sha512-j/hsx2xfOO1hZulmz7KxemoTIVXxrv94rt79x8qO1HzysT7ziViNvQ9cQGjDZWwVSO29TpLH31GOWLVnwmnxWQ==",
"requires": { "requires": {
"@firebase/component": "0.1.16", "@firebase/component": "0.1.17",
"@firebase/installations": "0.4.14", "@firebase/installations": "0.4.15",
"@firebase/logger": "0.2.6", "@firebase/logger": "0.2.6",
"@firebase/performance-types": "0.0.13", "@firebase/performance-types": "0.0.13",
"@firebase/util": "0.2.50", "@firebase/util": "0.3.0",
"tslib": "^1.11.1" "tslib": "^1.11.1"
} }
}, },
@ -1285,15 +1285,15 @@
} }
}, },
"@firebase/remote-config": { "@firebase/remote-config": {
"version": "0.1.25", "version": "0.1.26",
"resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.1.25.tgz", "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.1.26.tgz",
"integrity": "sha512-8YWefBhy77HMbWXWdbenalx+IDY/XkS+iURQ9qRYvSIFYx6RL04DzlakZNOY9CQAcxTA+cTSt4NNlhjopBjf2Q==", "integrity": "sha512-B6+nARVNcswysd6C16nK5tdGECgEpr1wdH6LyqylEQ8hUxYWN18qe49b9uPu+ktaHq0gFLg03gayZvQs7fxJOg==",
"requires": { "requires": {
"@firebase/component": "0.1.16", "@firebase/component": "0.1.17",
"@firebase/installations": "0.4.14", "@firebase/installations": "0.4.15",
"@firebase/logger": "0.2.6", "@firebase/logger": "0.2.6",
"@firebase/remote-config-types": "0.1.9", "@firebase/remote-config-types": "0.1.9",
"@firebase/util": "0.2.50", "@firebase/util": "0.3.0",
"tslib": "^1.11.1" "tslib": "^1.11.1"
} }
}, },
@ -1303,13 +1303,13 @@
"integrity": "sha512-G96qnF3RYGbZsTRut7NBX0sxyczxt1uyCgXQuH/eAfUCngxjEGcZQnBdy6mvSdqdJh5mC31rWPO4v9/s7HwtzA==" "integrity": "sha512-G96qnF3RYGbZsTRut7NBX0sxyczxt1uyCgXQuH/eAfUCngxjEGcZQnBdy6mvSdqdJh5mC31rWPO4v9/s7HwtzA=="
}, },
"@firebase/storage": { "@firebase/storage": {
"version": "0.3.39", "version": "0.3.41",
"resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.3.39.tgz", "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.3.41.tgz",
"integrity": "sha512-uTE8kROU/NMas+0i2oK0U9LuAlDzt+Cis0ErmYPlbCvmFqpFdyu3TtlO5MYNoxGLaBjEyxb18NJZai9lNMXFlQ==", "integrity": "sha512-2imzI78HcB7FjUqXMRHsGLlZnTYkaCHBjJflSbypwLrEty0hreR6vx3ThOO5y0MFH93WwifqUFJAa+Twkx6CIA==",
"requires": { "requires": {
"@firebase/component": "0.1.16", "@firebase/component": "0.1.17",
"@firebase/storage-types": "0.3.13", "@firebase/storage-types": "0.3.13",
"@firebase/util": "0.2.50", "@firebase/util": "0.3.0",
"tslib": "^1.11.1" "tslib": "^1.11.1"
} }
}, },
@ -1319,9 +1319,9 @@
"integrity": "sha512-pL7b8d5kMNCCL0w9hF7pr16POyKkb3imOW7w0qYrhBnbyJTdVxMWZhb0HxCFyQWC0w3EiIFFmxoz8NTFZDEFog==" "integrity": "sha512-pL7b8d5kMNCCL0w9hF7pr16POyKkb3imOW7w0qYrhBnbyJTdVxMWZhb0HxCFyQWC0w3EiIFFmxoz8NTFZDEFog=="
}, },
"@firebase/util": { "@firebase/util": {
"version": "0.2.50", "version": "0.3.0",
"resolved": "https://registry.npmjs.org/@firebase/util/-/util-0.2.50.tgz", "resolved": "https://registry.npmjs.org/@firebase/util/-/util-0.3.0.tgz",
"integrity": "sha512-vFE6+Jfc25u0ViSpFxxq0q5s+XmuJ/y7CL3ud79RQe+WLFFg+j0eH1t23k0yNSG9vZNM7h3uHRIXbV97sYLAyw==", "integrity": "sha512-GTwC+FSLeCPc44/TXCDReNQ5FPRIS5cb8Gr1XcD1TgiNBOvmyx61Om2YLwHp2GnN++6m6xmwmXARm06HOukATA==",
"requires": { "requires": {
"tslib": "^1.11.1" "tslib": "^1.11.1"
} }
@ -1342,11 +1342,11 @@
} }
}, },
"@graphql-tools/schema": { "@graphql-tools/schema": {
"version": "6.0.14", "version": "6.0.15",
"resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-6.0.14.tgz", "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-6.0.15.tgz",
"integrity": "sha512-vXRme8I8r3Ps2xTGrs614L+PRvNMxW0PW1EEtkV7CHdFWl1w5qkVeWWriZuqdj9r/AxHj950ilAf6V/k+2oAZw==", "integrity": "sha512-Wo+d6/OPjeXjwB1pcqsWmqLdweGH+BVhvKe/YPQA/uiWr8ikgShvNLNiuF03gc/1AMR487A09XcPEyabRKJLew==",
"requires": { "requires": {
"@graphql-tools/utils": "6.0.14", "@graphql-tools/utils": "6.0.15",
"tslib": "~2.0.0" "tslib": "~2.0.0"
}, },
"dependencies": { "dependencies": {
@ -1358,18 +1358,18 @@
} }
}, },
"@graphql-tools/utils": { "@graphql-tools/utils": {
"version": "6.0.14", "version": "6.0.15",
"resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-6.0.14.tgz", "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-6.0.15.tgz",
"integrity": "sha512-2VCOJtbVOde5m553JJE8NhP/eYR63Zqo/YdSlhZkpTGmWXg0sJKIIJ0c1eozCm+JSVMu3P08BatgnEC7DIl92A==", "integrity": "sha512-VG5cMLPgh9RDLGHamGpXVnBrNw7bZGT46LrxK7IIqDZI9H0GPsRCo8+p+CfDkw0IlDiEECb624WVCpm9IYNecA==",
"requires": { "requires": {
"@ardatan/aggregate-error": "0.0.1", "@ardatan/aggregate-error": "0.0.1",
"camel-case": "4.1.1" "camel-case": "4.1.1"
} }
}, },
"@grpc/grpc-js": { "@grpc/grpc-js": {
"version": "1.1.2", "version": "1.1.3",
"resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.1.2.tgz", "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.1.3.tgz",
"integrity": "sha512-k2u86Bkm/3xrjUaSWeIyzXScBt/cC8uE7BznR0cpueQi11R33W6qfJdMrkrsmSHirp5likR55JSXUrcWG6ybHA==", "integrity": "sha512-HtOsk2YUofBcm1GkPqGzb6pwHhv+74eC2CUO229USIDKRtg30ycbZmqC+HdNtY3nHqoc9IgcRlntFgopyQoYCA==",
"requires": { "requires": {
"semver": "^6.2.0" "semver": "^6.2.0"
} }
@ -1901,24 +1901,24 @@
} }
}, },
"@mdx-js/mdx": { "@mdx-js/mdx": {
"version": "1.6.13", "version": "1.6.14",
"resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.6.13.tgz", "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.6.14.tgz",
"integrity": "sha512-xVZnzSQ/QsP6LnYnV5CC9sc92dzm0VsnFEbpDhB3ahbrCc0j/p4O5+q+OIic9H3AAYLIzoKah3Mj+wTnDpAeWg==", "integrity": "sha512-VLGd52mFL091mkFTNZkGPMJxLvb382DqYDZfiZcqYBnbZPpFIbW3GnjXiHjLxT2v9zEKWD11+wcZLKNaWt8WPQ==",
"requires": { "requires": {
"@babel/core": "7.10.5", "@babel/core": "7.10.5",
"@babel/plugin-syntax-jsx": "7.10.4", "@babel/plugin-syntax-jsx": "7.10.4",
"@babel/plugin-syntax-object-rest-spread": "7.8.3", "@babel/plugin-syntax-object-rest-spread": "7.8.3",
"@mdx-js/util": "1.6.13", "@mdx-js/util": "1.6.14",
"babel-plugin-apply-mdx-type-prop": "1.6.13", "babel-plugin-apply-mdx-type-prop": "1.6.14",
"babel-plugin-extract-import-names": "1.6.13", "babel-plugin-extract-import-names": "1.6.14",
"camelcase-css": "2.0.1", "camelcase-css": "2.0.1",
"detab": "2.0.3", "detab": "2.0.3",
"hast-util-raw": "6.0.0", "hast-util-raw": "6.0.0",
"lodash.uniq": "4.5.0", "lodash.uniq": "4.5.0",
"mdast-util-to-hast": "9.1.0", "mdast-util-to-hast": "9.1.0",
"remark-footnotes": "1.0.0", "remark-footnotes": "1.0.0",
"remark-mdx": "1.6.13", "remark-mdx": "1.6.14",
"remark-parse": "8.0.2", "remark-parse": "8.0.3",
"remark-squeeze-paragraphs": "4.0.0", "remark-squeeze-paragraphs": "4.0.0",
"style-to-object": "0.3.0", "style-to-object": "0.3.0",
"unified": "9.0.0", "unified": "9.0.0",
@ -1932,9 +1932,9 @@
"integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==" "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A=="
}, },
"remark-parse": { "remark-parse": {
"version": "8.0.2", "version": "8.0.3",
"resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.2.tgz", "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.3.tgz",
"integrity": "sha512-eMI6kMRjsAGpMXXBAywJwiwAse+KNpmt+BK55Oofy4KvBZEqUDj6mWbGLJZrujoPIPPxDXzn3T9baRlpsm2jnQ==", "integrity": "sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==",
"requires": { "requires": {
"ccount": "^1.0.0", "ccount": "^1.0.0",
"collapse-white-space": "^1.0.2", "collapse-white-space": "^1.0.2",
@ -1970,24 +1970,24 @@
} }
}, },
"@mdx-js/react": { "@mdx-js/react": {
"version": "1.6.13", "version": "1.6.14",
"resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-1.6.13.tgz", "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-1.6.14.tgz",
"integrity": "sha512-k8UfufP+eZbxHsprAvGvQB/vmiXpbhMYnM0c6xov5xEg3dYdtzrpjnf2kYsTIwyr3RG2SeZXGjE9tG9vzli53Q==" "integrity": "sha512-WN4OWXiSTN5x1Ee0ZeYQ9bjjSSgH3Mfx/ezcSV3T691C/PcHTNWwJa5qhcuq8V/NrVAeMc26aXuSdOAq6sRb1g=="
}, },
"@mdx-js/runtime": { "@mdx-js/runtime": {
"version": "1.6.13", "version": "1.6.14",
"resolved": "https://registry.npmjs.org/@mdx-js/runtime/-/runtime-1.6.13.tgz", "resolved": "https://registry.npmjs.org/@mdx-js/runtime/-/runtime-1.6.14.tgz",
"integrity": "sha512-SmepgIAD4OaTUzbngxiljc7NzSzFvKw5SBdn9JCWZ1BFJaDjrl/j3IevIWVip24fSlm75wCEUm40LNvn/m7Kfw==", "integrity": "sha512-oP8UA4pH3zaS0jtkDMHujVzZvl24Tnn4NPcJkstsvqJNlqRu6h93NWWrKa3TKb+/XbsuIF7oXce7t3Iuy1LWnQ==",
"requires": { "requires": {
"@mdx-js/mdx": "1.6.13", "@mdx-js/mdx": "1.6.14",
"@mdx-js/react": "1.6.13", "@mdx-js/react": "1.6.14",
"buble-jsx-only": "^0.19.8" "buble-jsx-only": "^0.19.8"
} }
}, },
"@mdx-js/util": { "@mdx-js/util": {
"version": "1.6.13", "version": "1.6.14",
"resolved": "https://registry.npmjs.org/@mdx-js/util/-/util-1.6.13.tgz", "resolved": "https://registry.npmjs.org/@mdx-js/util/-/util-1.6.14.tgz",
"integrity": "sha512-IZP3UDGDaaaw0AchbXDofC//f+08w8FzW8EfTL/ZJNy6nKROe5xFwxnfRo5nL06l0CRCwNDmoReAerLuFMl1jA==" "integrity": "sha512-JyhjH3ffP4KQuqnUSBSSF28mToGGSc2jFI0XIXSEqiN+FaPlgzOSd3U350gXi8FYQxXzEygHCOtzOIfTjFf+4w=="
}, },
"@mikaelkristiansson/domready": { "@mikaelkristiansson/domready": {
"version": "1.0.10", "version": "1.0.10",
@ -2226,9 +2226,9 @@
"integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=" "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4="
}, },
"@types/lodash": { "@types/lodash": {
"version": "4.14.157", "version": "4.14.158",
"resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.157.tgz", "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.158.tgz",
"integrity": "sha512-Ft5BNFmv2pHDgxV5JDsndOWTRJ+56zte0ZpYLowp03tW+K+t8u8YMOzAnpuqPgzX6WO1XpDIUm7u04M8vdDiVQ==" "integrity": "sha512-InCEXJNTv/59yO4VSfuvNrZHt7eeNtWQEgnieIA+mIC+MOWM9arOWG2eQ8Vhk6NbOre6/BidiXhkZYeDY9U35w=="
}, },
"@types/long": { "@types/long": {
"version": "4.0.1", "version": "4.0.1",
@ -2257,9 +2257,9 @@
} }
}, },
"@types/node": { "@types/node": {
"version": "13.13.14", "version": "13.13.15",
"resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.14.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.15.tgz",
"integrity": "sha512-Az3QsOt1U/K1pbCQ0TXGELTuTkPLOiFIQf3ILzbOyo0FqgV9SxRnxbxM5QlAveERZMHpZY+7u3Jz2tKyl+yg6g==" "integrity": "sha512-kwbcs0jySLxzLsa2nWUAGOd/s21WU1jebrEdtzhsj1D4Yps1EOuyI1Qcu+FD56dL7NRNIJtDDjcqIG22NwkgLw=="
}, },
"@types/parse-json": { "@types/parse-json": {
"version": "4.0.0", "version": "4.0.0",
@ -3203,12 +3203,12 @@
} }
}, },
"babel-plugin-apply-mdx-type-prop": { "babel-plugin-apply-mdx-type-prop": {
"version": "1.6.13", "version": "1.6.14",
"resolved": "https://registry.npmjs.org/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.6.13.tgz", "resolved": "https://registry.npmjs.org/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.6.14.tgz",
"integrity": "sha512-G+vyur4OM+2iZih+vUeMzL/Aa0/4s/YZlDo6L0pfslgoX6eNGYT/NmjDZe99VxiaTaODX/bF/kt6oxZJYt8mJw==", "integrity": "sha512-qOnIfczK7yxDpBUeT21WIVmGPpSyzPv61FS9/Ql5J/PIEVw0c6aS2a53/tL5rQWKlJwNdb2RkhG+fpT5WGvYaQ==",
"requires": { "requires": {
"@babel/helper-plugin-utils": "7.10.4", "@babel/helper-plugin-utils": "7.10.4",
"@mdx-js/util": "1.6.13" "@mdx-js/util": "1.6.14"
} }
}, },
"babel-plugin-dynamic-import-node": { "babel-plugin-dynamic-import-node": {
@ -3220,9 +3220,9 @@
} }
}, },
"babel-plugin-extract-import-names": { "babel-plugin-extract-import-names": {
"version": "1.6.13", "version": "1.6.14",
"resolved": "https://registry.npmjs.org/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.13.tgz", "resolved": "https://registry.npmjs.org/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.14.tgz",
"integrity": "sha512-EKqKcGLmbegJji7qB7VRYQ6pJp74MGCjfCu1H6VOYr+ODqVMIsnxixYSvkuYTvwYaO1dWjSho85T4ctGMWpr+A==", "integrity": "sha512-pCyalU0WzbFPEb3E/ALerXzL/OMGH9M1mbWPR4QuSRo6BAfLL/j0QcLRRYojYQpCCS7pys9JpN/HI2+GcsbEhg==",
"requires": { "requires": {
"@babel/helper-plugin-utils": "7.10.4" "@babel/helper-plugin-utils": "7.10.4"
} }
@ -3262,9 +3262,9 @@
"integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==" "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA=="
}, },
"babel-preset-gatsby": { "babel-preset-gatsby": {
"version": "0.5.2", "version": "0.5.4",
"resolved": "https://registry.npmjs.org/babel-preset-gatsby/-/babel-preset-gatsby-0.5.2.tgz", "resolved": "https://registry.npmjs.org/babel-preset-gatsby/-/babel-preset-gatsby-0.5.4.tgz",
"integrity": "sha512-0pHaIm0Aqy6b+OpywL5Fu5vpAFzjHqGFx3YKhbb//2s6qC7/tplwWs5MmQ8ZrfHlxUIw/+c+CWUERfgihWRaBQ==", "integrity": "sha512-9n2qPnqiwpnkTM588uidovrf9k86353zEJ4hWCUyD/e2Up8zNSExA27BNp3sAq4KcNl3c8tDpuwWQQQf4aNn2g==",
"requires": { "requires": {
"@babel/plugin-proposal-class-properties": "^7.10.1", "@babel/plugin-proposal-class-properties": "^7.10.1",
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.1", "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.1",
@ -3278,7 +3278,7 @@
"babel-plugin-dynamic-import-node": "^2.3.3", "babel-plugin-dynamic-import-node": "^2.3.3",
"babel-plugin-macros": "^2.8.0", "babel-plugin-macros": "^2.8.0",
"babel-plugin-transform-react-remove-prop-types": "^0.4.24", "babel-plugin-transform-react-remove-prop-types": "^0.4.24",
"gatsby-core-utils": "^1.3.12", "gatsby-core-utils": "^1.3.14",
"gatsby-legacy-polyfills": "^0.0.2" "gatsby-legacy-polyfills": "^0.0.2"
} }
}, },
@ -5388,13 +5388,12 @@
"integrity": "sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g==" "integrity": "sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g=="
}, },
"css-selector-tokenizer": { "css-selector-tokenizer": {
"version": "0.7.2", "version": "0.7.3",
"resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.2.tgz", "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz",
"integrity": "sha512-yj856NGuAymN6r8bn8/Jl46pR+OC3eEvAhfGYDUe7YPtTPAYrSSw4oAniZ9Y8T5B92hjhwTBLUen0/vKPxf6pw==", "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==",
"requires": { "requires": {
"cssesc": "^3.0.0", "cssesc": "^3.0.0",
"fastparse": "^1.1.2", "fastparse": "^1.1.2"
"regexpu-core": "^4.6.0"
} }
}, },
"css-tree": { "css-tree": {
@ -5616,9 +5615,9 @@
"integrity": "sha512-ZCPzAMJZn3rNUvvQIMlXhDr4A+Ar07eLeGsGREoWU19a3Pqf5oYa+ccd+B3F6XVtQY6HANMFdOQ8A+ipFnvJdQ==" "integrity": "sha512-ZCPzAMJZn3rNUvvQIMlXhDr4A+Ar07eLeGsGREoWU19a3Pqf5oYa+ccd+B3F6XVtQY6HANMFdOQ8A+ipFnvJdQ=="
}, },
"dayjs": { "dayjs": {
"version": "1.8.29", "version": "1.8.30",
"resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.8.29.tgz", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.8.30.tgz",
"integrity": "sha512-Vm6teig8ZWK7rH/lxzVGxZJCljPdmUr6q/3f4fr5F0VWNGVkZEjZOQJsAN8hUHUqn+NK4XHNEpJZS1MwLyDcLw==" "integrity": "sha512-5s5IGuP5bVvIbOWkEDcfmXsUj24fZW1NMHVVSdSFF/kW8d+alZcI9SpBKC+baEyBe+z3fUp17y75ulstv5swUw=="
}, },
"debug": { "debug": {
"version": "3.2.6", "version": "3.2.6",
@ -6029,9 +6028,9 @@
} }
}, },
"@types/node": { "@types/node": {
"version": "8.10.61", "version": "8.10.62",
"resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.61.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.62.tgz",
"integrity": "sha512-l+zSbvT8TPRaCxL1l9cwHCb0tSqGAGcjPJFItGGYat5oCTiq1uQQKYg5m7AF1mgnEBzFXGLJ2LRmNjtreRX76Q==" "integrity": "sha512-76fupxOYVxk36kb7O/6KtrAPZ9jnSK3+qisAX4tQMEuGNdlvl7ycwatlHqjoE6jHfVtXFM3pCrCixZOidc5cuw=="
}, },
"configstore": { "configstore": {
"version": "3.1.2", "version": "3.1.2",
@ -6517,9 +6516,9 @@
"integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==" "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ=="
}, },
"envinfo": { "envinfo": {
"version": "7.5.1", "version": "7.7.2",
"resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.5.1.tgz", "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.2.tgz",
"integrity": "sha512-hQBkDf2iO4Nv0CNHpCuSBeaSrveU6nThVxFGTrq/eDlV716UQk09zChaJae4mZRsos1x4YLY2TaH3LHUae3ZmQ==" "integrity": "sha512-k3Eh5bKuQnZjm49/L7H4cHzs2FlL5QjbTB3JrPxoTI8aJG7hVMe4uKyJxSYH4ahseby2waUwk5OaKX/nAsaYgg=="
}, },
"eol": { "eol": {
"version": "0.9.1", "version": "0.9.1",
@ -7290,9 +7289,9 @@
"integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==" "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q=="
}, },
"events": { "events": {
"version": "3.1.0", "version": "3.2.0",
"resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz", "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz",
"integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==" "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg=="
}, },
"eventsource": { "eventsource": {
"version": "0.1.6", "version": "0.1.6",
@ -7998,24 +7997,24 @@
} }
}, },
"firebase": { "firebase": {
"version": "7.16.1", "version": "7.17.1",
"resolved": "https://registry.npmjs.org/firebase/-/firebase-7.16.1.tgz", "resolved": "https://registry.npmjs.org/firebase/-/firebase-7.17.1.tgz",
"integrity": "sha512-mcvFh617lWPYnx6SmwgtwmliY8P3XBi8pm0LDY4a8WPD049goCMgmIEpKkX4R3gZ2noz2rVrxSUfodENPpttLg==", "integrity": "sha512-g2Wkk2fz8VoeSrxv2PIQizm2j74EtbpxQ+wd2AvH2iEF5LRaJOsk3zVBtIlyJIQ3vGTmlutIxtyyoDAQcPO9TA==",
"requires": { "requires": {
"@firebase/analytics": "0.3.9", "@firebase/analytics": "0.4.1",
"@firebase/app": "0.6.8", "@firebase/app": "0.6.9",
"@firebase/app-types": "0.6.1", "@firebase/app-types": "0.6.1",
"@firebase/auth": "0.14.9", "@firebase/auth": "0.14.9",
"@firebase/database": "0.6.8", "@firebase/database": "0.6.9",
"@firebase/firestore": "1.16.1", "@firebase/firestore": "1.16.2",
"@firebase/functions": "0.4.48", "@firebase/functions": "0.4.49",
"@firebase/installations": "0.4.14", "@firebase/installations": "0.4.15",
"@firebase/messaging": "0.6.20", "@firebase/messaging": "0.6.21",
"@firebase/performance": "0.3.9", "@firebase/performance": "0.3.10",
"@firebase/polyfill": "0.3.36", "@firebase/polyfill": "0.3.36",
"@firebase/remote-config": "0.1.25", "@firebase/remote-config": "0.1.26",
"@firebase/storage": "0.3.39", "@firebase/storage": "0.3.41",
"@firebase/util": "0.2.50" "@firebase/util": "0.3.0"
} }
}, },
"flat-cache": { "flat-cache": {
@ -8207,9 +8206,9 @@
"integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc="
}, },
"gatsby": { "gatsby": {
"version": "2.24.7", "version": "2.24.11",
"resolved": "https://registry.npmjs.org/gatsby/-/gatsby-2.24.7.tgz", "resolved": "https://registry.npmjs.org/gatsby/-/gatsby-2.24.11.tgz",
"integrity": "sha512-H9qEG5cRnHU/lRFaX2hS++6FZbCINavL38wz+UWD95qJ3GmpVHxnob2eQYZzy32CFvprCK9469kGcN9j0jTf0g==", "integrity": "sha512-rmkFGJaFVPrVoyUXvYoex9+a7w501y6vyaesVpsJZdBBgtMnWFEIGvJ9uDLPLVPoOXFtTNzN9MmDNGI+0r85lw==",
"requires": { "requires": {
"@babel/code-frame": "^7.10.3", "@babel/code-frame": "^7.10.3",
"@babel/core": "^7.10.3", "@babel/core": "^7.10.3",
@ -8233,7 +8232,7 @@
"babel-plugin-add-module-exports": "^0.3.3", "babel-plugin-add-module-exports": "^0.3.3",
"babel-plugin-dynamic-import-node": "^2.3.3", "babel-plugin-dynamic-import-node": "^2.3.3",
"babel-plugin-remove-graphql-queries": "^2.9.15", "babel-plugin-remove-graphql-queries": "^2.9.15",
"babel-preset-gatsby": "^0.5.2", "babel-preset-gatsby": "^0.5.4",
"better-opn": "1.0.0", "better-opn": "1.0.0",
"better-queue": "^3.8.10", "better-queue": "^3.8.10",
"bluebird": "^3.7.2", "bluebird": "^3.7.2",
@ -8271,15 +8270,15 @@
"file-loader": "^1.1.11", "file-loader": "^1.1.11",
"fs-exists-cached": "1.0.0", "fs-exists-cached": "1.0.0",
"fs-extra": "^8.1.0", "fs-extra": "^8.1.0",
"gatsby-cli": "^2.12.63", "gatsby-cli": "^2.12.66",
"gatsby-core-utils": "^1.3.12", "gatsby-core-utils": "^1.3.14",
"gatsby-graphiql-explorer": "^0.4.11", "gatsby-graphiql-explorer": "^0.4.11",
"gatsby-legacy-polyfills": "^0.0.2", "gatsby-legacy-polyfills": "^0.0.2",
"gatsby-link": "^2.4.13", "gatsby-link": "^2.4.13",
"gatsby-plugin-page-creator": "^2.3.17", "gatsby-plugin-page-creator": "^2.3.19",
"gatsby-plugin-typescript": "^2.4.16", "gatsby-plugin-typescript": "^2.4.16",
"gatsby-react-router-scroll": "^3.0.12", "gatsby-react-router-scroll": "^3.0.12",
"gatsby-telemetry": "^1.3.20", "gatsby-telemetry": "^1.3.23",
"glob": "^7.1.6", "glob": "^7.1.6",
"got": "8.3.2", "got": "8.3.2",
"graphql": "^14.6.0", "graphql": "^14.6.0",
@ -8444,9 +8443,9 @@
} }
}, },
"gatsby-cli": { "gatsby-cli": {
"version": "2.12.63", "version": "2.12.66",
"resolved": "https://registry.npmjs.org/gatsby-cli/-/gatsby-cli-2.12.63.tgz", "resolved": "https://registry.npmjs.org/gatsby-cli/-/gatsby-cli-2.12.66.tgz",
"integrity": "sha512-vBIgP/5c+3wfw36YUr2wld1PYRktZWxAX8wDjMjrkj8i1xqkZDc24cxGX+yNAXx5UJ6lCNuRRXSaRiqFErqa2A==", "integrity": "sha512-rc7yj3+8yFLYwYOXlX2w46UjILEUlRRaLFH01AxtEYUTbGvfdLyUmi0bqvS5JmhkS7e6K9HjKgedYzPHUqWGdQ==",
"requires": { "requires": {
"@babel/code-frame": "^7.10.3", "@babel/code-frame": "^7.10.3",
"@hapi/joi": "^15.1.1", "@hapi/joi": "^15.1.1",
@ -8461,9 +8460,9 @@
"execa": "^3.4.0", "execa": "^3.4.0",
"fs-exists-cached": "^1.0.0", "fs-exists-cached": "^1.0.0",
"fs-extra": "^8.1.0", "fs-extra": "^8.1.0",
"gatsby-core-utils": "^1.3.12", "gatsby-core-utils": "^1.3.14",
"gatsby-recipes": "^0.1.53", "gatsby-recipes": "^0.1.56",
"gatsby-telemetry": "^1.3.20", "gatsby-telemetry": "^1.3.23",
"hosted-git-info": "^3.0.4", "hosted-git-info": "^3.0.4",
"ink": "^2.7.1", "ink": "^2.7.1",
"ink-spinner": "^3.1.0", "ink-spinner": "^3.1.0",
@ -8582,9 +8581,9 @@
} }
}, },
"gatsby-core-utils": { "gatsby-core-utils": {
"version": "1.3.12", "version": "1.3.14",
"resolved": "https://registry.npmjs.org/gatsby-core-utils/-/gatsby-core-utils-1.3.12.tgz", "resolved": "https://registry.npmjs.org/gatsby-core-utils/-/gatsby-core-utils-1.3.14.tgz",
"integrity": "sha512-58pysrsfe2abWl7TOqeyHgyXSm9UIjYZ7UclGTvczWDYnxl8L/0kPSaFOX+bMmNBZmAB0YEtJZ3gHhM978OvqQ==", "integrity": "sha512-jfC+x5rrYUfl70MHRLsOtsXqdlqIbQGVDKXrvp6IPIUP8TKU6XIpYktF0Yd4ldJIWmGZTa062RWUOd2DFBHVSw==",
"requires": { "requires": {
"ci-info": "2.0.0", "ci-info": "2.0.0",
"configstore": "^5.0.1", "configstore": "^5.0.1",
@ -8631,15 +8630,15 @@
} }
}, },
"gatsby-page-utils": { "gatsby-page-utils": {
"version": "0.2.17", "version": "0.2.19",
"resolved": "https://registry.npmjs.org/gatsby-page-utils/-/gatsby-page-utils-0.2.17.tgz", "resolved": "https://registry.npmjs.org/gatsby-page-utils/-/gatsby-page-utils-0.2.19.tgz",
"integrity": "sha512-Ery8ePfJiFwY5LcOhePIPmie7B/V2Yf5QREmo8sULx3mr00gWrqNwmIgaNYVIAxH87Fdy50CUScxeqQc4Hsl0g==", "integrity": "sha512-aGF6OVXpQy0odwn4kwiSXhdOcFlLl2Vx5mWYupjEkGzcZjwUjloOj800DIoH4yZmuGNQVrfpBag5ta50VKrtiQ==",
"requires": { "requires": {
"@babel/runtime": "^7.10.3", "@babel/runtime": "^7.10.3",
"bluebird": "^3.7.2", "bluebird": "^3.7.2",
"chokidar": "3.4.0", "chokidar": "3.4.0",
"fs-exists-cached": "^1.0.0", "fs-exists-cached": "^1.0.0",
"gatsby-core-utils": "^1.3.12", "gatsby-core-utils": "^1.3.14",
"glob": "^7.1.6", "glob": "^7.1.6",
"lodash": "^4.17.15", "lodash": "^4.17.15",
"micromatch": "^3.1.10" "micromatch": "^3.1.10"
@ -8665,12 +8664,12 @@
"integrity": "sha512-F1uh9T5dY38aeNvKzqj+3K655dce1QS70wuG4bhV9L3cnTJR2vitTWyIoCvRJJfPs7Xq7LgjUDmHDrEos4S3gQ==" "integrity": "sha512-F1uh9T5dY38aeNvKzqj+3K655dce1QS70wuG4bhV9L3cnTJR2vitTWyIoCvRJJfPs7Xq7LgjUDmHDrEos4S3gQ=="
}, },
"gatsby-plugin-manifest": { "gatsby-plugin-manifest": {
"version": "2.4.19", "version": "2.4.21",
"resolved": "https://registry.npmjs.org/gatsby-plugin-manifest/-/gatsby-plugin-manifest-2.4.19.tgz", "resolved": "https://registry.npmjs.org/gatsby-plugin-manifest/-/gatsby-plugin-manifest-2.4.21.tgz",
"integrity": "sha512-lVLP1m4aBQNC4lhsE3N7VZ6olk5Zb5A2T4jBEus0zxF8RCnfGoCD7Wg0cCMKbKR1n5ZXwHQgZfZI3BSp1/H7sw==", "integrity": "sha512-f+yx8Jnz9rPtzrPLmcesyCUUe91MhvPvlkRkZF3g4/DAQW9fbtUzutICNSlY+JjLzMkYF5x0NJFvX5sSkC9m3A==",
"requires": { "requires": {
"@babel/runtime": "^7.10.3", "@babel/runtime": "^7.10.3",
"gatsby-core-utils": "^1.3.12", "gatsby-core-utils": "^1.3.14",
"semver": "^5.7.1", "semver": "^5.7.1",
"sharp": "^0.25.1" "sharp": "^0.25.1"
}, },
@ -8693,13 +8692,13 @@
} }
}, },
"gatsby-plugin-offline": { "gatsby-plugin-offline": {
"version": "3.2.19", "version": "3.2.21",
"resolved": "https://registry.npmjs.org/gatsby-plugin-offline/-/gatsby-plugin-offline-3.2.19.tgz", "resolved": "https://registry.npmjs.org/gatsby-plugin-offline/-/gatsby-plugin-offline-3.2.21.tgz",
"integrity": "sha512-cVjNTmmTgb7/n0ghkrOM61vrAcdPz07FvkCx2sAThPqZ5zxDe5LDLS+DYSRn8k/KVihdAQKx/RGrdlGuuLwEIA==", "integrity": "sha512-MvkWmieiXIlm70xawJgIQFUnGlMUWhrRk6jGoVCiiZ8xrViiluZONttCm/tiDdiZTFOwvOPN7RQj/zB+50grMg==",
"requires": { "requires": {
"@babel/runtime": "^7.10.3", "@babel/runtime": "^7.10.3",
"cheerio": "^1.0.0-rc.3", "cheerio": "^1.0.0-rc.3",
"gatsby-core-utils": "^1.3.12", "gatsby-core-utils": "^1.3.14",
"glob": "^7.1.6", "glob": "^7.1.6",
"idb-keyval": "^3.2.0", "idb-keyval": "^3.2.0",
"lodash": "^4.17.15", "lodash": "^4.17.15",
@ -8707,14 +8706,14 @@
} }
}, },
"gatsby-plugin-page-creator": { "gatsby-plugin-page-creator": {
"version": "2.3.17", "version": "2.3.19",
"resolved": "https://registry.npmjs.org/gatsby-plugin-page-creator/-/gatsby-plugin-page-creator-2.3.17.tgz", "resolved": "https://registry.npmjs.org/gatsby-plugin-page-creator/-/gatsby-plugin-page-creator-2.3.19.tgz",
"integrity": "sha512-mIIotda+tR59tb3gk5qW3CUVSsdA608hchuX/+bKUCyuqyqZKjPffOdGUgy92Aa+mmIKgJTiGDUnIJoVsHSdtg==", "integrity": "sha512-BMEIjg+B05eWeZutgV3bP2o7WZyC3lmZzAhGwWfEi0IYy0zRtH3jRNPCv1qrcyXKI6n5GFUhas4NGiRHmc7vLg==",
"requires": { "requires": {
"@babel/runtime": "^7.10.3", "@babel/runtime": "^7.10.3",
"bluebird": "^3.7.2", "bluebird": "^3.7.2",
"fs-exists-cached": "^1.0.0", "fs-exists-cached": "^1.0.0",
"gatsby-page-utils": "^0.2.17", "gatsby-page-utils": "^0.2.19",
"glob": "^7.1.6", "glob": "^7.1.6",
"lodash": "^4.17.15", "lodash": "^4.17.15",
"micromatch": "^3.1.10" "micromatch": "^3.1.10"
@ -8842,15 +8841,15 @@
} }
}, },
"gatsby-plugin-sharp": { "gatsby-plugin-sharp": {
"version": "2.6.20", "version": "2.6.22",
"resolved": "https://registry.npmjs.org/gatsby-plugin-sharp/-/gatsby-plugin-sharp-2.6.20.tgz", "resolved": "https://registry.npmjs.org/gatsby-plugin-sharp/-/gatsby-plugin-sharp-2.6.22.tgz",
"integrity": "sha512-5M6wYzxer+yWEIhq+eE7XwcDWpJqm2Nr6V14UCfbR5KYmYpkEbDVm2dw1raBFonf/XUQ15idYjPp3U0mY6xfAg==", "integrity": "sha512-yXIghEbpziqSZw+yqh+W2SpNTZpUkZX98+2YZNctc6CH9ToaMIGuYMwxf/90pStNjkwnlHcmnZ6o6Bk0jrjSFg==",
"requires": { "requires": {
"@babel/runtime": "^7.10.3", "@babel/runtime": "^7.10.3",
"async": "^2.6.3", "async": "^2.6.3",
"bluebird": "^3.7.2", "bluebird": "^3.7.2",
"fs-extra": "^8.1.0", "fs-extra": "^8.1.0",
"gatsby-core-utils": "^1.3.12", "gatsby-core-utils": "^1.3.14",
"got": "^8.3.2", "got": "^8.3.2",
"imagemin": "^6.1.0", "imagemin": "^6.1.0",
"imagemin-mozjpeg": "^8.0.0", "imagemin-mozjpeg": "^8.0.0",
@ -8927,9 +8926,9 @@
} }
}, },
"gatsby-recipes": { "gatsby-recipes": {
"version": "0.1.53", "version": "0.1.56",
"resolved": "https://registry.npmjs.org/gatsby-recipes/-/gatsby-recipes-0.1.53.tgz", "resolved": "https://registry.npmjs.org/gatsby-recipes/-/gatsby-recipes-0.1.56.tgz",
"integrity": "sha512-q1dfVLUysncIOtOj9S1EQCL8TDUf3aM8Y4dEfvVYjmMMG58ad7sECSZOEQRjHKz3nJhxBCkJb9rEBKo62DvYYQ==", "integrity": "sha512-lEd57MLQyBpO3+aoxssnUbwnqFVv8jKIBCclIQONNpLzBl3zml1VAaRx12tnsREn8YEtfYZayM2t3QLiGi9Yzw==",
"requires": { "requires": {
"@babel/core": "^7.10.3", "@babel/core": "^7.10.3",
"@babel/generator": "^7.10.3", "@babel/generator": "^7.10.3",
@ -8954,8 +8953,8 @@
"express": "^4.17.1", "express": "^4.17.1",
"express-graphql": "^0.9.0", "express-graphql": "^0.9.0",
"fs-extra": "^8.1.0", "fs-extra": "^8.1.0",
"gatsby-core-utils": "^1.3.12", "gatsby-core-utils": "^1.3.14",
"gatsby-telemetry": "^1.3.20", "gatsby-telemetry": "^1.3.23",
"glob": "^7.1.6", "glob": "^7.1.6",
"graphql": "^14.6.0", "graphql": "^14.6.0",
"graphql-compose": "^6.3.8", "graphql-compose": "^6.3.8",
@ -9152,9 +9151,9 @@
} }
}, },
"gatsby-source-filesystem": { "gatsby-source-filesystem": {
"version": "2.3.20", "version": "2.3.23",
"resolved": "https://registry.npmjs.org/gatsby-source-filesystem/-/gatsby-source-filesystem-2.3.20.tgz", "resolved": "https://registry.npmjs.org/gatsby-source-filesystem/-/gatsby-source-filesystem-2.3.23.tgz",
"integrity": "sha512-zwHsOe3BipnGeHvCNz4JSzz9bWbQEFgbpkjCpmOSsPtbNaKKbk7bK8TCLGj268K24x7E5fGuXPTLqXcRfYgEOA==", "integrity": "sha512-OkSefJZscSlf7tjJQIMHpzsf3evDcqf4T1iunMEwL1Qj1iZVD/6UbRIf1kJLt5SS8tGtvsqDNyaQ8Al7rsuJ1g==",
"requires": { "requires": {
"@babel/runtime": "^7.10.3", "@babel/runtime": "^7.10.3",
"better-queue": "^3.8.10", "better-queue": "^3.8.10",
@ -9162,7 +9161,7 @@
"chokidar": "3.4.0", "chokidar": "3.4.0",
"file-type": "^12.4.2", "file-type": "^12.4.2",
"fs-extra": "^8.1.0", "fs-extra": "^8.1.0",
"gatsby-core-utils": "^1.3.12", "gatsby-core-utils": "^1.3.14",
"got": "^9.6.0", "got": "^9.6.0",
"md5-file": "^3.2.3", "md5-file": "^3.2.3",
"mime": "^2.4.6", "mime": "^2.4.6",
@ -9204,9 +9203,9 @@
"integrity": "sha512-pN48dBm1oinhhrtypdOOgRu0nO3ZPARdZYKdTwIm8Pyfql1BbHUHwLfYf8E14SFkthHkUnXLh63q/qiQIGvqbw==" "integrity": "sha512-pN48dBm1oinhhrtypdOOgRu0nO3ZPARdZYKdTwIm8Pyfql1BbHUHwLfYf8E14SFkthHkUnXLh63q/qiQIGvqbw=="
}, },
"gatsby-telemetry": { "gatsby-telemetry": {
"version": "1.3.20", "version": "1.3.23",
"resolved": "https://registry.npmjs.org/gatsby-telemetry/-/gatsby-telemetry-1.3.20.tgz", "resolved": "https://registry.npmjs.org/gatsby-telemetry/-/gatsby-telemetry-1.3.23.tgz",
"integrity": "sha512-0aeEL1O8tPgBgiOh/5lH18z9w8i3vGs8EWDQiOeGYz4Ka78wTcxyDUsO/90yt8jkqQuUo78s2vkDeqh1LWqPxg==", "integrity": "sha512-Zhfgo2WCsSR7aWS7L9/WWmHJcEMhBhJa/eIt9BtU5rp9vCBQOgu7jbf8EweVnpYMH7JFQTsOhW51CEVd13HY1Q==",
"requires": { "requires": {
"@babel/code-frame": "^7.10.3", "@babel/code-frame": "^7.10.3",
"@babel/runtime": "^7.10.3", "@babel/runtime": "^7.10.3",
@ -9214,7 +9213,7 @@
"configstore": "^5.0.1", "configstore": "^5.0.1",
"envinfo": "^7.5.1", "envinfo": "^7.5.1",
"fs-extra": "^8.1.0", "fs-extra": "^8.1.0",
"gatsby-core-utils": "^1.3.12", "gatsby-core-utils": "^1.3.14",
"git-up": "4.0.1", "git-up": "4.0.1",
"is-docker": "2.0.0", "is-docker": "2.0.0",
"lodash": "^4.17.15", "lodash": "^4.17.15",
@ -9235,13 +9234,13 @@
} }
}, },
"gatsby-transformer-remark": { "gatsby-transformer-remark": {
"version": "2.8.25", "version": "2.8.27",
"resolved": "https://registry.npmjs.org/gatsby-transformer-remark/-/gatsby-transformer-remark-2.8.25.tgz", "resolved": "https://registry.npmjs.org/gatsby-transformer-remark/-/gatsby-transformer-remark-2.8.27.tgz",
"integrity": "sha512-RTO741t6eG4lw0WWmZRjN55SLBx225fJr+t+QkqUNTbBdTxRuUfHyAK6gRzVDtIC9Jtr1fQZxK0Hx2M6nj72RQ==", "integrity": "sha512-pbXz5gglYOmpFP0sxGgzkiu05UiUhlACdJ4M15vEGHe+MFuz8kD58qJSLi0QJX0ba5Ri50uNXgw7SXh2r7msEA==",
"requires": { "requires": {
"@babel/runtime": "^7.10.3", "@babel/runtime": "^7.10.3",
"bluebird": "^3.7.2", "bluebird": "^3.7.2",
"gatsby-core-utils": "^1.3.12", "gatsby-core-utils": "^1.3.14",
"gray-matter": "^4.0.2", "gray-matter": "^4.0.2",
"hast-util-raw": "^4.0.0", "hast-util-raw": "^4.0.0",
"hast-util-to-html": "^4.0.1", "hast-util-to-html": "^4.0.1",
@ -10573,9 +10572,9 @@
"integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==" "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ=="
}, },
"i18next": { "i18next": {
"version": "19.6.2", "version": "19.6.3",
"resolved": "https://registry.npmjs.org/i18next/-/i18next-19.6.2.tgz", "resolved": "https://registry.npmjs.org/i18next/-/i18next-19.6.3.tgz",
"integrity": "sha512-Zyd/Z32FY+sD+Eg6sLj5DeDSlrIN3WZ4onuOBRGcjDx/rvodsyUZ9TJ2Y+3aD9Vu8MPbiMU2WesIER/rs1ioyw==", "integrity": "sha512-eYr98kw/C5z6kY21ti745p4IvbOJwY8F2T9tf/Lvy5lFnYRqE45+bppSgMPmcZZqYNT+xO0N0x6rexVR2wtZZQ==",
"requires": { "requires": {
"@babel/runtime": "^7.10.1" "@babel/runtime": "^7.10.1"
} }
@ -11224,9 +11223,9 @@
"integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q=="
}, },
"inquirer": { "inquirer": {
"version": "7.3.2", "version": "7.3.3",
"resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.2.tgz", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz",
"integrity": "sha512-DF4osh1FM6l0RJc5YWYhSDB6TawiBRlbV9Cox8MWlidU218Tb7fm3lQTULyUJDfJ0tjbzl0W4q651mrCCEM55w==", "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==",
"requires": { "requires": {
"ansi-escapes": "^4.2.1", "ansi-escapes": "^4.2.1",
"chalk": "^4.1.0", "chalk": "^4.1.0",
@ -11234,7 +11233,7 @@
"cli-width": "^3.0.0", "cli-width": "^3.0.0",
"external-editor": "^3.0.3", "external-editor": "^3.0.3",
"figures": "^3.0.0", "figures": "^3.0.0",
"lodash": "^4.17.16", "lodash": "^4.17.19",
"mute-stream": "0.0.8", "mute-stream": "0.0.8",
"run-async": "^2.4.0", "run-async": "^2.4.0",
"rxjs": "^6.6.0", "rxjs": "^6.6.0",
@ -14122,9 +14121,9 @@
"integrity": "sha512-QhhZ+DCCit2Coi2vmAKbq5RGTRcQUOE2+REgv8vdyu7MnYx2eZztegqtTx99TZ86GTIwqiy3+4nQTWZ2tgmdCA==" "integrity": "sha512-QhhZ+DCCit2Coi2vmAKbq5RGTRcQUOE2+REgv8vdyu7MnYx2eZztegqtTx99TZ86GTIwqiy3+4nQTWZ2tgmdCA=="
}, },
"parse-json": { "parse-json": {
"version": "5.0.0", "version": "5.0.1",
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.1.tgz",
"integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", "integrity": "sha512-ztoZ4/DYeXQq4E21v169sC8qWINGpcosGv9XhTDvg9/hWvx/zrFkc9BiWxR58OJLHGk28j5BL0SDLeV2WmFZlQ==",
"requires": { "requires": {
"@babel/code-frame": "^7.0.0", "@babel/code-frame": "^7.0.0",
"error-ex": "^1.3.1", "error-ex": "^1.3.1",
@ -14168,9 +14167,9 @@
} }
}, },
"parse5": { "parse5": {
"version": "6.0.0", "version": "6.0.1",
"resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.0.tgz", "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
"integrity": "sha512-lC0A+4DefTdRr+DLQlEwwZqndL9VzEjiuegI5bj3hp4bnzzwQldSqCpHv7+msRpSOHGJyJvkcCa4q15LMUJ8rg==" "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw=="
}, },
"parseqs": { "parseqs": {
"version": "0.0.5", "version": "0.0.5",
@ -16598,17 +16597,17 @@
"integrity": "sha512-X9Ncj4cj3/CIvLI2Z9IobHtVi8FVdUrdJkCNaL9kdX8ohfsi18DXHsCVd/A7ssARBdccdDb5ODnt62WuEWaM/g==" "integrity": "sha512-X9Ncj4cj3/CIvLI2Z9IobHtVi8FVdUrdJkCNaL9kdX8ohfsi18DXHsCVd/A7ssARBdccdDb5ODnt62WuEWaM/g=="
}, },
"remark-mdx": { "remark-mdx": {
"version": "1.6.13", "version": "1.6.14",
"resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-1.6.13.tgz", "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-1.6.14.tgz",
"integrity": "sha512-LlaW2PpGl13THFHajl0EEpAnMkrZO2vmn4PPGJzy7vKfKf2UMioKa7zszfV3cEwKu1aHqqnjH5ZwuZj1hexHJw==", "integrity": "sha512-90nKwpyhrTPD9tJoOFYhspcG3jinNp5Gwck14jcNuAzqS8e2cyOkIt11+KIsbC9M4KJQ/n3wTtb6xMh3dFgKuA==",
"requires": { "requires": {
"@babel/core": "7.10.5", "@babel/core": "7.10.5",
"@babel/helper-plugin-utils": "7.10.4", "@babel/helper-plugin-utils": "7.10.4",
"@babel/plugin-proposal-object-rest-spread": "7.10.4", "@babel/plugin-proposal-object-rest-spread": "7.10.4",
"@babel/plugin-syntax-jsx": "7.10.4", "@babel/plugin-syntax-jsx": "7.10.4",
"@mdx-js/util": "1.6.13", "@mdx-js/util": "1.6.14",
"is-alphabetical": "1.0.4", "is-alphabetical": "1.0.4",
"remark-parse": "8.0.2", "remark-parse": "8.0.3",
"unified": "9.0.0" "unified": "9.0.0"
}, },
"dependencies": { "dependencies": {
@ -16618,9 +16617,9 @@
"integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==" "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A=="
}, },
"remark-parse": { "remark-parse": {
"version": "8.0.2", "version": "8.0.3",
"resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.2.tgz", "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.3.tgz",
"integrity": "sha512-eMI6kMRjsAGpMXXBAywJwiwAse+KNpmt+BK55Oofy4KvBZEqUDj6mWbGLJZrujoPIPPxDXzn3T9baRlpsm2jnQ==", "integrity": "sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==",
"requires": { "requires": {
"ccount": "^1.0.0", "ccount": "^1.0.0",
"collapse-white-space": "^1.0.2", "collapse-white-space": "^1.0.2",
@ -18596,9 +18595,9 @@
} }
}, },
"tailwindcss": { "tailwindcss": {
"version": "1.5.1", "version": "1.5.2",
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-1.5.1.tgz", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-1.5.2.tgz",
"integrity": "sha512-mBOxIk+U+9xECC6wllWiupPVfLuwTDvHb4d+8XTdZ8oYrZEH+NpFSlbATF5xWuCJQxDOZ1Dz7C0KN5tylcFhFg==", "integrity": "sha512-OR7wxFetvHruLkQABeQac7jFdTOs+MwXzsuccOuMItva9GBANPd2VX8NgJ3pdvuGSL23c5cVId9jsvuKgulBiQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"@fullhuman/postcss-purgecss": "^2.1.2", "@fullhuman/postcss-purgecss": "^2.1.2",

View File

@ -22,28 +22,28 @@
"animate.css": "^4.1.0", "animate.css": "^4.1.0",
"array-move": "^3.0.0", "array-move": "^3.0.0",
"classnames": "^2.2.6", "classnames": "^2.2.6",
"dayjs": "^1.8.29", "dayjs": "^1.8.30",
"dotenv": "^8.2.0", "dotenv": "^8.2.0",
"downloadjs": "^1.4.7", "downloadjs": "^1.4.7",
"firebase": "^7.16.1", "firebase": "^7.17.1",
"formik": "^2.1.5", "formik": "^2.1.5",
"gatsby": "^2.24.7", "gatsby": "^2.24.11",
"gatsby-image": "^2.4.13", "gatsby-image": "^2.4.13",
"gatsby-plugin-create-client-paths": "^2.3.10", "gatsby-plugin-create-client-paths": "^2.3.10",
"gatsby-plugin-firebase": "^0.2.0-beta.4", "gatsby-plugin-firebase": "^0.2.0-beta.4",
"gatsby-plugin-manifest": "^2.4.19", "gatsby-plugin-manifest": "^2.4.21",
"gatsby-plugin-material-ui": "^2.1.9", "gatsby-plugin-material-ui": "^2.1.9",
"gatsby-plugin-offline": "^3.2.19", "gatsby-plugin-offline": "^3.2.21",
"gatsby-plugin-postcss": "^2.3.11", "gatsby-plugin-postcss": "^2.3.11",
"gatsby-plugin-prefetch-google-fonts": "^1.4.3", "gatsby-plugin-prefetch-google-fonts": "^1.4.3",
"gatsby-plugin-react-helmet": "^3.3.10", "gatsby-plugin-react-helmet": "^3.3.10",
"gatsby-plugin-sharp": "^2.6.20", "gatsby-plugin-sharp": "^2.6.22",
"gatsby-plugin-sitemap": "^2.4.11", "gatsby-plugin-sitemap": "^2.4.11",
"gatsby-source-filesystem": "^2.3.20", "gatsby-source-filesystem": "^2.3.23",
"gatsby-source-gravatar": "^1.0.0", "gatsby-source-gravatar": "^1.0.0",
"gatsby-transformer-remark": "^2.8.25", "gatsby-transformer-remark": "^2.8.27",
"gatsby-transformer-sharp": "^2.5.11", "gatsby-transformer-sharp": "^2.5.11",
"i18next": "^19.6.2", "i18next": "^19.6.3",
"lodash": "^4.17.19", "lodash": "^4.17.19",
"nanoevents": "^5.1.8", "nanoevents": "^5.1.8",
"react": "^16.13.1", "react": "^16.13.1",
@ -70,7 +70,7 @@
"eslint-plugin-react": "^7.20.3", "eslint-plugin-react": "^7.20.3",
"gatsby-plugin-eslint": "^2.0.8", "gatsby-plugin-eslint": "^2.0.8",
"prettier": "2.0.5", "prettier": "2.0.5",
"tailwindcss": "^1.5.1" "tailwindcss": "^1.5.2"
}, },
"repository": { "repository": {
"type": "git", "type": "git",

View File

@ -1,5 +1,6 @@
import { get, isEmpty } from 'lodash'; import { get, isEmpty } from 'lodash';
import React, { memo, useContext } from 'react'; import React, { memo, useContext } from 'react';
import { useTranslation } from 'react-i18next';
import { MdAdd } from 'react-icons/md'; import { MdAdd } from 'react-icons/md';
import ModalContext from '../../../contexts/ModalContext'; import ModalContext from '../../../contexts/ModalContext';
import { useSelector } from '../../../contexts/ResumeContext'; import { useSelector } from '../../../contexts/ResumeContext';
@ -20,6 +21,7 @@ const List = ({
hasDate, hasDate,
event, event,
}) => { }) => {
const { i18n } = useTranslation();
const items = useSelector(path, []); const items = useSelector(path, []);
const { emitter } = useContext(ModalContext); const { emitter } = useContext(ModalContext);
@ -46,6 +48,7 @@ const List = ({
formatDateRange({ formatDateRange({
startDate: x.startDate, startDate: x.startDate,
endDate: x.endDate, endDate: x.endDate,
language: i18n.language,
})) }))
} }
text={text || get(x, textPath, '')} text={text || get(x, textPath, '')}

View File

@ -75,12 +75,17 @@ const UserProvider = ({ children }) => {
const deleteAccount = async () => { const deleteAccount = async () => {
const { currentUser } = firebase.auth(); const { currentUser } = firebase.auth();
const deleteUser = firebase.functions().httpsCallable('deleteUser');
deleteUser();
try { try {
deleteUser();
await currentUser.delete(); await currentUser.delete();
} catch (e) { } catch (e) {
toast.error(e.message); if (e.code === 'auth/requires-recent-login') {
await loginWithGoogle(); await loginWithGoogle();
await currentUser.delete(); await currentUser.delete();
}
} finally { } finally {
logout(); logout();
toast( toast(

View File

@ -98,7 +98,7 @@
"line1": "Address Line 1", "line1": "Address Line 1",
"line2": "Address Line 2", "line2": "Address Line 2",
"city": "City", "city": "City",
"pincode": "Pincode" "pincode": "Zip Code"
} }
}, },
"social": { "social": {

View File

@ -25,7 +25,7 @@ const EducationModal = () => {
field: Yup.string().required(t('shared.forms.validation.required')), field: Yup.string().required(t('shared.forms.validation.required')),
degree: Yup.string(), degree: Yup.string(),
gpa: Yup.string(), gpa: Yup.string(),
startDate: Yup.date().required(t('shared.forms.validation.required')), startDate: Yup.date(),
endDate: Yup.date().when( endDate: Yup.date().when(
'startDate', 'startDate',
(startDate, yupSchema) => (startDate, yupSchema) =>

View File

@ -41,7 +41,7 @@ const SkillModal = () => {
<Input <Input
label={t('builder.skills.level')} label={t('builder.skills.level')}
placeholder="Fundamental Awareness" placeholder="Novice"
{...getFieldProps(formik, schema, 'level')} {...getFieldProps(formik, schema, 'level')}
/> />
</div> </div>

View File

@ -8,7 +8,7 @@ import { getFieldProps } from '../../utils';
import DataModal from '../DataModal'; import DataModal from '../DataModal';
const initialValues = { const initialValues = {
url: 'https://', url: '',
network: '', network: '',
username: '', username: '',
}; };
@ -55,7 +55,7 @@ const SocialModal = () => {
<Input <Input
label={t('builder.social.url')} label={t('builder.social.url')}
className="col-span-2" className="col-span-2"
placeholder="https://twitter.com/KingOKings" placeholder="https://"
{...getFieldProps(formik, schema, 'url')} {...getFieldProps(formik, schema, 'url')}
/> />
</div> </div>

View File

@ -10,7 +10,7 @@ import DataModal from '../DataModal';
const initialValues = { const initialValues = {
company: '', company: '',
position: '', position: '',
website: 'https://', website: '',
startDate: '', startDate: '',
endDate: '', endDate: '',
summary: '', summary: '',
@ -23,7 +23,7 @@ const WorkModal = () => {
company: Yup.string().required(t('shared.forms.validation.required')), company: Yup.string().required(t('shared.forms.validation.required')),
position: Yup.string().required(t('shared.forms.validation.required')), position: Yup.string().required(t('shared.forms.validation.required')),
website: Yup.string().url(t('shared.forms.validation.url')), website: Yup.string().url(t('shared.forms.validation.url')),
startDate: Yup.date().required(t('shared.forms.validation.required')), startDate: Yup.date(),
endDate: Yup.date().when( endDate: Yup.date().when(
'startDate', 'startDate',
(startDate, yupSchema) => (startDate, yupSchema) =>
@ -64,7 +64,7 @@ const WorkModal = () => {
<Input <Input
label={t('shared.forms.website')} label={t('shared.forms.website')}
placeholder="https://example.com/" placeholder="https://"
{...getFieldProps(formik, schema, 'website')} {...getFieldProps(formik, schema, 'website')}
/> />

View File

@ -57,6 +57,7 @@ const Castform = ({ data }) => {
id="page" id="page"
className="rounded" className="rounded"
style={{ style={{
fontSize: 14,
fontFamily: data.metadata.font, fontFamily: data.metadata.font,
color: data.metadata.colors.text, color: data.metadata.colors.text,
backgroundColor: data.metadata.colors.background, backgroundColor: data.metadata.colors.background,

View File

@ -5,38 +5,39 @@ import ReactMarkdown from 'react-markdown';
import PageContext from '../../../contexts/PageContext'; import PageContext from '../../../contexts/PageContext';
import { safetyCheck } from '../../../utils'; import { safetyCheck } from '../../../utils';
const AwardItem = (x) => { const AwardItem = ({ item, i18n }) => (
const { i18n } = useTranslation(); <div>
<div className="flex justify-between items-center">
return ( <div className="flex flex-col text-left mr-2">
<div key={x.id}> <h6 className="font-semibold">{item.title}</h6>
<div className="flex justify-between items-center"> <span className="text-xs">{item.awarder}</span>
<div className="flex flex-col text-left mr-2">
<h6 className="font-semibold">{x.title}</h6>
<span className="text-xs">{x.awarder}</span>
</div>
{x.date && (
<h6 className="text-xs font-medium text-right">
{dayjs(x.date)
.locale(i18n.language.substr(0, 2))
.format('MMMM YYYY')}
</h6>
)}
</div> </div>
{x.summary && ( {item.date && (
<ReactMarkdown className="markdown mt-2 text-sm" source={x.summary} /> <h6 className="text-xs font-medium text-right">
{dayjs(item.date)
.locale(i18n.language.substr(0, 2))
.format('MMMM YYYY')}
</h6>
)} )}
</div> </div>
); {item.summary && (
}; <ReactMarkdown className="markdown mt-2 text-sm" source={item.summary} />
)}
</div>
);
const AwardsA = () => { const AwardsA = () => {
const { i18n } = useTranslation();
const { data, heading: Heading } = useContext(PageContext); const { data, heading: Heading } = useContext(PageContext);
return safetyCheck(data.awards) ? ( return safetyCheck(data.awards) ? (
<div> <div>
<Heading>{data.awards.heading}</Heading> <Heading>{data.awards.heading}</Heading>
<div className="grid gap-4">{data.awards.items.map(AwardItem)}</div> <div className="grid gap-4">
{data.awards.items.map((x) => (
<AwardItem key={x.id} item={x} i18n={i18n} />
))}
</div>
</div> </div>
) : null; ) : null;
}; };

View File

@ -5,39 +5,38 @@ import ReactMarkdown from 'react-markdown';
import PageContext from '../../../contexts/PageContext'; import PageContext from '../../../contexts/PageContext';
import { safetyCheck } from '../../../utils'; import { safetyCheck } from '../../../utils';
const CertificationItem = (x) => { const CertificationItem = ({ item, i18n }) => (
const { i18n } = useTranslation(); <div>
<div className="flex justify-between items-center">
return ( <div className="flex flex-col text-left mr-2">
<div key={x.id}> <h6 className="font-semibold">{item.title}</h6>
<div className="flex justify-between items-center"> <span className="text-xs">{item.issuer}</span>
<div className="flex flex-col text-left mr-2">
<h6 className="font-semibold">{x.title}</h6>
<span className="text-xs">{x.issuer}</span>
</div>
{x.date && (
<h6 className="text-xs font-medium text-right">
{dayjs(x.date)
.locale(i18n.language.substr(0, 2))
.format('MMMM YYYY')}
</h6>
)}
</div> </div>
{x.summary && ( {item.date && (
<ReactMarkdown className="markdown mt-2 text-sm" source={x.summary} /> <h6 className="text-xs font-medium text-right">
{dayjs(item.date)
.locale(i18n.language.substr(0, 2))
.format('MMMM YYYY')}
</h6>
)} )}
</div> </div>
); {item.summary && (
}; <ReactMarkdown className="markdown mt-2 text-sm" source={item.summary} />
)}
</div>
);
const CertificationsA = () => { const CertificationsA = () => {
const { i18n } = useTranslation();
const { data, heading: Heading } = useContext(PageContext); const { data, heading: Heading } = useContext(PageContext);
return safetyCheck(data.certifications) ? ( return safetyCheck(data.certifications) ? (
<div> <div>
<Heading>{data.certifications.heading}</Heading> <Heading>{data.certifications.heading}</Heading>
<div className="grid gap-4"> <div className="grid gap-4">
{data.certifications.items.map(CertificationItem)} {data.certifications.items.map((x) => (
<CertificationItem key={x.id} item={x} i18n={i18n} />
))}
</div> </div>
</div> </div>
) : null; ) : null;

View File

@ -1,40 +1,50 @@
import React, { memo, useContext } from 'react'; import React, { memo, useContext } from 'react';
import { useTranslation } from 'react-i18next';
import ReactMarkdown from 'react-markdown'; import ReactMarkdown from 'react-markdown';
import PageContext from '../../../contexts/PageContext'; import PageContext from '../../../contexts/PageContext';
import { formatDateRange, safetyCheck } from '../../../utils'; import { formatDateRange, safetyCheck } from '../../../utils';
const EducationItem = (x) => ( const EducationItem = ({ item, i18n }) => (
<div key={x.id}> <div>
<div className="flex justify-between items-center"> <div className="flex justify-between items-center">
<div className="flex flex-col text-left mr-2"> <div className="flex flex-col text-left mr-2">
<h6 className="font-semibold">{x.institution}</h6> <h6 className="font-semibold">{item.institution}</h6>
<span className="text-xs"> <span className="text-xs">
<strong>{x.degree}</strong> {x.field} <strong>{item.degree}</strong> {item.field}
</span> </span>
</div> </div>
<div className="flex flex-col items-end text-right"> <div className="flex flex-col items-end text-right">
{x.startDate && ( {item.startDate && (
<h6 className="text-xs font-medium mb-1"> <h6 className="text-xs font-medium mb-1">
({formatDateRange({ startDate: x.startDate, endDate: x.endDate })}) (
{formatDateRange({
startDate: item.startDate,
endDate: item.endDate,
language: i18n.language,
})}
)
</h6> </h6>
)} )}
<span className="text-sm font-medium">{x.gpa}</span> <span className="text-sm font-medium">{item.gpa}</span>
</div> </div>
</div> </div>
{x.summary && ( {item.summary && (
<ReactMarkdown className="markdown mt-2 text-sm" source={x.summary} /> <ReactMarkdown className="markdown mt-2 text-sm" source={item.summary} />
)} )}
</div> </div>
); );
const EducationA = () => { const EducationA = () => {
const { i18n } = useTranslation();
const { data, heading: Heading } = useContext(PageContext); const { data, heading: Heading } = useContext(PageContext);
return safetyCheck(data.education) ? ( return safetyCheck(data.education) ? (
<div> <div>
<Heading>{data.education.heading}</Heading> <Heading>{data.education.heading}</Heading>
<div className="grid gap-4"> <div className="grid gap-4">
{data.education.items.map(EducationItem)} {data.education.items.map((x) => (
<EducationItem key={x.id} item={x} i18n={i18n} />
))}
</div> </div>
</div> </div>
) : null; ) : null;

View File

@ -5,42 +5,43 @@ import ReactMarkdown from 'react-markdown';
import PageContext from '../../../contexts/PageContext'; import PageContext from '../../../contexts/PageContext';
import { safetyCheck } from '../../../utils'; import { safetyCheck } from '../../../utils';
const ProjectItem = (x) => { const ProjectItem = ({ item, i18n }) => (
const { i18n } = useTranslation(); <div>
<div className="flex justify-between items-center">
return ( <div className="flex flex-col text-left mr-2">
<div key={x.id}> <h6 className="font-semibold">{item.title}</h6>
<div className="flex justify-between items-center"> {item.link && (
<div className="flex flex-col text-left mr-2"> <a href={item.link} className="text-xs">
<h6 className="font-semibold">{x.title}</h6> {item.link}
{x.link && ( </a>
<a href={x.link} className="text-xs">
{x.link}
</a>
)}
</div>
{x.date && (
<h6 className="text-xs font-medium text-right">
{dayjs(x.date)
.locale(i18n.language.substr(0, 2))
.format('MMMM YYYY')}
</h6>
)} )}
</div> </div>
{x.summary && ( {item.date && (
<ReactMarkdown className="markdown mt-2 text-sm" source={x.summary} /> <h6 className="text-xs font-medium text-right">
{dayjs(item.date)
.locale(i18n.language.substr(0, 2))
.format('MMMM YYYY')}
</h6>
)} )}
</div> </div>
); {item.summary && (
}; <ReactMarkdown className="markdown mt-2 text-sm" source={item.summary} />
)}
</div>
);
const ProjectsA = () => { const ProjectsA = () => {
const { i18n } = useTranslation();
const { data, heading: Heading } = useContext(PageContext); const { data, heading: Heading } = useContext(PageContext);
return safetyCheck(data.projects) ? ( return safetyCheck(data.projects) ? (
<div> <div>
<Heading>{data.projects.heading}</Heading> <Heading>{data.projects.heading}</Heading>
<div className="grid gap-4">{data.projects.items.map(ProjectItem)}</div> <div className="grid gap-4">
{data.projects.items.map((x) => (
<ProjectItem key={x.id} item={x} i18n={i18n} />
))}
</div>
</div> </div>
) : null; ) : null;
}; };

View File

@ -1,34 +1,46 @@
import React, { memo, useContext } from 'react'; import React, { memo, useContext } from 'react';
import { useTranslation } from 'react-i18next';
import ReactMarkdown from 'react-markdown'; import ReactMarkdown from 'react-markdown';
import PageContext from '../../../contexts/PageContext'; import PageContext from '../../../contexts/PageContext';
import { formatDateRange, safetyCheck } from '../../../utils'; import { formatDateRange, safetyCheck } from '../../../utils';
const WorkItem = (x) => ( const WorkItem = ({ item, i18n }) => (
<div key={x.id}> <div>
<div className="flex justify-between items-center"> <div className="flex justify-between items-center">
<div className="flex flex-col text-left mr-2"> <div className="flex flex-col text-left mr-2">
<h6 className="font-semibold">{x.company}</h6> <h6 className="font-semibold">{item.company}</h6>
<span className="text-xs">{x.position}</span> <span className="text-xs">{item.position}</span>
</div> </div>
{x.startDate && ( {item.startDate && (
<h6 className="text-xs font-medium text-right"> <h6 className="text-xs font-medium text-right">
({formatDateRange({ startDate: x.startDate, endDate: x.endDate })}) (
{formatDateRange({
startDate: item.startDate,
endDate: item.endDate,
language: i18n.language,
})}
)
</h6> </h6>
)} )}
</div> </div>
{x.summary && ( {item.summary && (
<ReactMarkdown className="markdown mt-2 text-sm" source={x.summary} /> <ReactMarkdown className="markdown mt-2 text-sm" source={item.summary} />
)} )}
</div> </div>
); );
const WorkA = () => { const WorkA = () => {
const { i18n } = useTranslation();
const { data, heading: Heading } = useContext(PageContext); const { data, heading: Heading } = useContext(PageContext);
return safetyCheck(data.work) ? ( return safetyCheck(data.work) ? (
<div> <div>
<Heading>{data.work.heading}</Heading> <Heading>{data.work.heading}</Heading>
<div className="grid gap-4">{data.work.items.map(WorkItem)}</div> <div className="grid gap-4">
{data.work.items.map((x) => (
<WorkItem key={x.id} item={x} i18n={i18n} />
))}
</div>
</div> </div>
) : null; ) : null;
}; };

View File

@ -22,15 +22,13 @@ export const isFileImage = (file) => {
return file && acceptedImageTypes.includes(file.type); return file && acceptedImageTypes.includes(file.type);
}; };
export const formatDateRange = ({ startDate, endDate }) => { export const formatDateRange = ({ startDate, endDate, language }) => {
const { i18n } = useTranslation();
const start = `${dayjs(startDate) const start = `${dayjs(startDate)
.locale(i18n.language.substr(0, 2)) .locale(language.substr(0, 2))
.format('MMMM YYYY')}`; .format('MMMM YYYY')}`;
const end = dayjs(endDate).isValid() const end = dayjs(endDate).isValid()
? `${dayjs(endDate).locale(i18n.language.substr(0, 2)).format('MMMM YYYY')}` ? `${dayjs(endDate).locale(language.substr(0, 2)).format('MMMM YYYY')}`
: 'Present'; : 'Present';
return `${start} - ${end}`; return `${start} - ${end}`;