From f90aa69349bdb2961737ce9abc6de3d3cc67eaea Mon Sep 17 00:00:00 2001 From: chigoKawa Date: Mon, 7 Feb 2022 21:10:43 +0100 Subject: [PATCH] init --- .gitignore | 1 + .penv | 5 + README.md | 41 +- components/ImageComponent.jsx | 31 + components/ProductCardComponent.jsx | 66 + components/ProductSection.jsx | 38 + layouts/MainLayout.jsx | 33 + lib/helpers.js | 64 + lib/richtextRenderOptions.js | 65 + next.config.js | 7 +- package-lock.json | 1985 ++++++++++++++++++++++- package.json | 47 +- pages/_app.js | 11 +- pages/index.js | 69 - pages/index.jsx | 55 + pages/products/[slug].jsx | 62 + postcss.config.js | 6 + setup.mjs | 157 ++ space-export/space.json | 2336 +++++++++++++++++++++++++++ styles/globals.css | 18 +- tailwind.config.js | 46 + 21 files changed, 4979 insertions(+), 164 deletions(-) create mode 100644 .penv create mode 100644 components/ImageComponent.jsx create mode 100644 components/ProductCardComponent.jsx create mode 100644 components/ProductSection.jsx create mode 100644 layouts/MainLayout.jsx create mode 100644 lib/helpers.js create mode 100644 lib/richtextRenderOptions.js delete mode 100644 pages/index.js create mode 100644 pages/index.jsx create mode 100644 pages/products/[slug].jsx create mode 100644 postcss.config.js create mode 100644 setup.mjs create mode 100644 space-export/space.json create mode 100644 tailwind.config.js diff --git a/.gitignore b/.gitignore index 1437c53..cb33574 100644 --- a/.gitignore +++ b/.gitignore @@ -29,6 +29,7 @@ yarn-error.log* .env.development.local .env.test.local .env.production.local +.env # vercel .vercel diff --git a/.penv b/.penv new file mode 100644 index 0000000..b32dc22 --- /dev/null +++ b/.penv @@ -0,0 +1,5 @@ +NEXT_PUBLIC_SPACE_ID='hg94h980vf1n +NEXT_PUBLIC_DELIVERY_TOKEN='12123123123213' +NEXT_PUBLIC_PREVIEW_TOKEN='123123123213213' +NEXT_PUBLIC_PREVIEW_SECRET='testing' +NEXT_PUBLIC_ENVIRONMENT='slave' diff --git a/README.md b/README.md index b12f3e3..527b0eb 100644 --- a/README.md +++ b/README.md @@ -1,34 +1,21 @@ -This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app). +# Jumpstart shop demo -## Getting Started +# Requirements -First, run the development server: + - Node.js + - Contentful API keys -```bash -npm run dev -# or -yarn dev -``` +# Step 1 -Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. +Create an empty space in Contentful and note the API keys (delivery, preview and management). +From the Contentful web app go to SPACE SETTINGS --> API keys.... -You can start editing the page by modifying `pages/index.js`. The page auto-updates as you edit the file. +# Step 2 +After downloading/cloning this repo, open the project's location on your computer and run "npm install" from your terminal window to install the dependencies. -[API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.js`. +# Step 3 +After installing the dependencies run the "npm run setup" command to configure the app. +type in the keys at the prompt. The script will connect to the provided space, please use a demo space as the script will DELETE all entries and content types. I repeat the script will WIPE! the space clean before importing new content. -The `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages. - -## Learn More - -To learn more about Next.js, take a look at the following resources: - -- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. -- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. - -You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome! - -## Deploy on Vercel - -The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. - -Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. +# Step 4 +Run the app with "npm run dev". \ No newline at end of file diff --git a/components/ImageComponent.jsx b/components/ImageComponent.jsx new file mode 100644 index 0000000..2ff6c04 --- /dev/null +++ b/components/ImageComponent.jsx @@ -0,0 +1,31 @@ +import _ from "lodash"; +import Image from "next/image"; +const ImageComponent = (props) => { + const id = _.get(props, "id"); + const image = _.get(props, "image"); + const imgUrl = _.get(image, "fields.file.url"); + const imgAltText = _.get(image, "fields.title"); + + if (!image) { + return ""; + } + return ( + <> +
+ {imgAltText} +
+ +
{/* {""} */}
+ + ); +}; + +export default ImageComponent; diff --git a/components/ProductCardComponent.jsx b/components/ProductCardComponent.jsx new file mode 100644 index 0000000..1a0fe7d --- /dev/null +++ b/components/ProductCardComponent.jsx @@ -0,0 +1,66 @@ +import { documentToReactComponents } from "@contentful/rich-text-react-renderer"; +import _ from "lodash"; +import { useRouter } from "next/router"; +import { useEffect, useState } from "react"; +import richtextRenderOptions from "../lib/richtextRenderOptions"; +import ImageComponent from "./ImageComponent"; + +const ProductCardComponent = (props) => { + const router = useRouter(); + const id = _.get(props, "id"); + const productIndex = _.get(props, "productIndex"); + const fields = _.get(props, "fields"); + + const [indexIsOdd, setIndexIsOdd] = useState(false); + + useEffect(() => { + if (!productIndex % 2 == 0) { + setIndexIsOdd(true); + } + return () => {}; + }, []); + + console.log("description field", fields.description); + + if (!fields) { + return ""; + } + return ( +
+
+
+ +
+
+
+
+

{fields.title}

+ +
+ {documentToReactComponents( + fields.description, + richtextRenderOptions + )} +
+

${fields.price}

+ +
+ +
+
+
+ {/* {JSON.stringify(fields)} */} +
+ ); +}; + +export default ProductCardComponent; diff --git a/components/ProductSection.jsx b/components/ProductSection.jsx new file mode 100644 index 0000000..918312d --- /dev/null +++ b/components/ProductSection.jsx @@ -0,0 +1,38 @@ +import _ from "lodash"; +import ProductCardComponent from "./ProductCardComponent"; +const ProductSection = (props) => { + const id = _.get(props, "id"); + const fields = _.get(props, "fields"); + const title = _.get(fields, "title"); + const products = _.get(fields, "products"); + + if (!fields) { + return ""; + } + return ( +
+ {/* {JSON.stringify(products)} */} +
+

{title}

+ + {Array.isArray(products) + ? products.map((product, productIndex) => { + const contentType = _.get(product, "sys.contentType.sys.id"); + const productId = _.get(product, "sys.id"); + const fields = _.get(product, "fields"); + return ( + + ); + }) + : ""} +
+
+ ); +}; + +export default ProductSection; diff --git a/layouts/MainLayout.jsx b/layouts/MainLayout.jsx new file mode 100644 index 0000000..ad15a55 --- /dev/null +++ b/layouts/MainLayout.jsx @@ -0,0 +1,33 @@ +import Head from "next/head"; +import Link from "next/link"; + +const MainLayout = (props) => { + return ( + <> + + Jumpstart Shop + + +
+ + Nav + +
+ +
+
{props.children}
+
+
+ + Contentful Learning Services + +
+ + ); +}; + +export default MainLayout; diff --git a/lib/helpers.js b/lib/helpers.js new file mode 100644 index 0000000..f9ece4a --- /dev/null +++ b/lib/helpers.js @@ -0,0 +1,64 @@ +import * as contentful from "contentful"; +import _ from "lodash"; + +const space_id = process.env.NEXT_PUBLIC_SPACE_ID; +const access_token = process.env.NEXT_PUBLIC_DELIVERY_TOKEN; +const preview_token = process.env.NEXT_PUBLIC_PREVIEW_TOKEN; +const environment = process.env.NEXT_PUBLIC_ENVIRONMENT; + +const getOptions = (is_preview) => { + let options = {}; + options.space = space_id; + options.host = is_preview ? "preview.contentful.com" : undefined; + options.accessToken = is_preview ? preview_token : access_token; + options.environment = environment ? environment : "master"; + options.resolveLinks = true; + + return options; +}; + +export const getAllLocales = async() => { + const options = getOptions(false); + const contentfulClient = contentful.createClient(options); + try { + let allLocales = await contentfulClient.getLocales(); + let dataType = _.get(allLocales, "sys.type"); + let items = _.get(allLocales, "items"); + if (dataType === "Array") { + return items; + } else { + return false; + } + } catch (error) { + console.log("getAllLocales error ", error); + } +}; + +export const getEntriesByContentType = async(content_type, slug = null) => { + const options = getOptions(false); + + console.log(options); + + const contentfulClient = contentful.createClient(options); + + if (contentfulClient) { + try { + let params = { content_type: content_type, include: 3 }; //include -> to retrieve related data(linked entries) in same request, number of levels is 3 + + if (slug) { + params["fields.slug"] = slug; + } + + let entries = await contentfulClient.getEntries(params); + + const items = _.get(entries, "items"); + + return { items }; + } catch (error) { + console.log("getChartEntries error ->", error); + return false; + } + } else { + return false; + } +}; \ No newline at end of file diff --git a/lib/richtextRenderOptions.js b/lib/richtextRenderOptions.js new file mode 100644 index 0000000..4e1c3dd --- /dev/null +++ b/lib/richtextRenderOptions.js @@ -0,0 +1,65 @@ +import { BLOCKS, INLINES, MARKS } from "@contentful/rich-text-types"; + +const Bold = ({ children }) => ( + [this is bold]{children} +); +const Heading1 = ({ children }) => ( +
+ + {" "} + {children}{" "} + {" "} +
+); + +const Heading2 = ({ children }) => ( +
+ + {" "} + {children}{" "} + {" "} +
+); +const Parag = ({ children }) => ( +
+

{children}

{" "} +
+); + +const HyperLNK = ({ node, children }) => { + const URI = _.get(node, "data.uri"); + return ( + + {" "} + + {" "} + {/* {URI} */} {children}{" "} + {" "} + + ); +}; +const CustomView = () => { + return <>; +}; + +const richtextRenderOptions = { + renderMark: { + [MARKS.BOLD]: (text) => {text} , + }, + renderNode: { + [BLOCKS.HEADING_1]: (node, children) => { + return {children} ; + }, + [BLOCKS.HEADING_2]: (node, children) => { + return {children} ; + }, + [BLOCKS.PARAGRAPH]: (node, children) => { + return {children} ; + }, + [INLINES.HYPERLINK]: (node, children) => { + return {children} ; + }, + }, +}; + +export default richtextRenderOptions; diff --git a/next.config.js b/next.config.js index 0d60710..f520585 100644 --- a/next.config.js +++ b/next.config.js @@ -1,3 +1,6 @@ module.exports = { - reactStrictMode: true, -} + reactStrictMode: true, + images: { + domains: ["images.ctfassets.net"], + }, +}; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 9c05fb3..0780db5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3,6 +3,15 @@ "requires": true, "lockfileVersion": 1, "dependencies": { + "@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.16.7" + } + }, "@babel/helper-plugin-utils": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", @@ -13,6 +22,75 @@ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==" }, + "@babel/highlight": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", + "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "@babel/plugin-syntax-jsx": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz", @@ -49,6 +127,19 @@ "to-fast-properties": "^2.0.0" } }, + "@contentful/rich-text-react-renderer": { + "version": "15.11.1", + "resolved": "https://registry.npmjs.org/@contentful/rich-text-react-renderer/-/rich-text-react-renderer-15.11.1.tgz", + "integrity": "sha512-u1dSlUDSDR19/RGVbmwkbhEOTwRerIaMbea92vchd2mM6lk6X+qp6BS6HTABROcXGVAwhIHtarZ8fX5Zu7uiYA==", + "requires": { + "@contentful/rich-text-types": "^15.11.1" + } + }, + "@contentful/rich-text-types": { + "version": "15.11.1", + "resolved": "https://registry.npmjs.org/@contentful/rich-text-types/-/rich-text-types-15.11.1.tgz", + "integrity": "sha512-seO8Nl9cp894v7an6R8isX+HqYwVUesviGULTh/rIj2DCv2tXUU1GCqzSkt84XN6c6nbFYow9+Wzezkxx/IdIA==" + }, "@eslint/eslintrc": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.5.tgz", @@ -74,6 +165,21 @@ } } }, + "@hapi/hoek": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.1.tgz", + "integrity": "sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw==", + "dev": true + }, + "@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dev": true, + "requires": { + "@hapi/hoek": "^9.0.0" + } + }, "@humanwhocodes/config-array": { "version": "0.9.2", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.2.tgz", @@ -224,6 +330,42 @@ "integrity": "sha512-JLo+Y592QzIE+q7Dl2pMUtt4q8SKYI5jDrZxrozEQxnGVOyYE+GWK9eLkwTaeN9DDctlaRAQ3TBmzZ1qdLE30A==", "dev": true }, + "@samverschueren/stream-to-observable": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz", + "integrity": "sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ==", + "dev": true, + "requires": { + "any-observable": "^0.3.0" + } + }, + "@sideway/address": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.3.tgz", + "integrity": "sha512-8ncEUtmnTsMmL7z1YPB47kPUq7LpKWJNFPsRzHiIajGC5uXlWGn+AmkYPcHNl8S4tcEGx+cnORnNYaw2wvL+LQ==", + "dev": true, + "requires": { + "@hapi/hoek": "^9.0.0" + } + }, + "@sideway/formula": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", + "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==", + "dev": true + }, + "@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "dev": true + }, + "@types/json-patch": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/json-patch/-/json-patch-0.0.30.tgz", + "integrity": "sha512-MhCUjojzDhVLnZnxwPwa+rETFRDQ0ffjxYdrqOP6TBO2O0/Z64PV5tNeYApo4bc4y4frbWOrRwv/eEkXlI13Rw==", + "dev": true + }, "@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", @@ -235,6 +377,12 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.10.tgz", "integrity": "sha512-S/3xB4KzyFxYGCppyDt68yzBU9ysL88lSdIah4D6cptdcltc4NCPCAMc0+PCpg/lLIyC7IPvj2Z52OJWeIUkog==" }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, "@typescript-eslint/parser": { "version": "5.10.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.10.0.tgz", @@ -300,6 +448,40 @@ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true }, + "acorn-node": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", + "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", + "dev": true, + "requires": { + "acorn": "^7.0.0", + "acorn-walk": "^7.0.0", + "xtend": "^4.0.2" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + } + } + }, + "acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true + }, + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -312,6 +494,12 @@ "uri-js": "^4.2.2" } }, + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -319,14 +507,33 @@ "dev": true }, "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "any-observable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz", + "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==", + "dev": true + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dev": true, "requires": { - "color-convert": "^2.0.1" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" } }, + "arg": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.1.tgz", + "integrity": "sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA==", + "dev": true + }, "argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -390,12 +597,34 @@ "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", "dev": true }, + "autoprefixer": { + "version": "10.4.2", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.2.tgz", + "integrity": "sha512-9fOPpHKuDW1w/0EKfRmVnxTDt8166MAnLI3mgZ1JCnhNtYWxcJ6Ud5CO/AVOZi/AvFa8DY9RTy3h3+tFBlrrdQ==", + "dev": true, + "requires": { + "browserslist": "^4.19.1", + "caniuse-lite": "^1.0.30001297", + "fraction.js": "^4.1.2", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + } + }, "axe-core": { "version": "4.3.5", "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.3.5.tgz", "integrity": "sha512-WKTW1+xAzhMS5dJsxWkliixlO/PqC4VhmO9T4juNYcaTg9jzWiJsou6m5pxWYGfigWbwzJWeFY6z47a+4neRXA==", "dev": true }, + "axios": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", + "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", + "requires": { + "follow-redirects": "^1.14.4" + } + }, "axobject-query": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", @@ -408,11 +637,52 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "bfj": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/bfj/-/bfj-7.0.2.tgz", + "integrity": "sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "check-types": "^11.1.1", + "hoopy": "^0.1.4", + "tryer": "^1.0.1" + } + }, "big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -432,11 +702,33 @@ "fill-range": "^7.0.1" } }, + "browserslist": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", + "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001286", + "electron-to-chromium": "^1.4.17", + "escalade": "^3.1.1", + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, "requires": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" @@ -448,39 +740,209 @@ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, + "camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true + }, "caniuse-lite": { "version": "1.0.30001300", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001300.tgz", "integrity": "sha512-cVjiJHWGcNlJi8TZVKNMnvMid3Z3TTdDHmLDzlOdIiZq138Exvo0G+G0wTdVYolxKb4AYwC+38pxodiInVtJSA==" }, "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.0.0.tgz", + "integrity": "sha512-/duVOqst+luxCQRKEo4bNxinsOQtMP80ZYm7mMqzuh5PociNL0PvmHFvREJ9ueYL2TxlHjBcmLCdmocx9Vg+IQ==", + "dev": true + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "check-types": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/check-types/-/check-types-11.1.2.tgz", + "integrity": "sha512-tzWzvgePgLORb9/3a0YenggReLKAIb2owL03H2Xdoe5pKcUyWRSEQ8xfCar8t2SIAuEDwtmx2da1YB52YuHQMQ==", + "dev": true + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" }, "dependencies": { - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "requires": { - "has-flag": "^4.0.0" + "is-glob": "^4.0.1" + } + } + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-spinners": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "dev": true + }, + "cli-table3": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.1.tgz", + "integrity": "sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA==", + "dev": true, + "requires": { + "colors": "1.4.0", + "string-width": "^4.2.0" + } + }, + "cli-truncate": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", + "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", + "dev": true, + "requires": { + "slice-ansi": "0.0.4", + "string-width": "^1.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" } } } }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "requires": { - "color-name": "~1.1.4" + "color-name": "1.1.3" + }, + "dependencies": { + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + } } }, "color-name": { @@ -494,12 +956,116 @@ "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==" }, + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true, + "optional": true + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, + "contentful": { + "version": "9.1.5", + "resolved": "https://registry.npmjs.org/contentful/-/contentful-9.1.5.tgz", + "integrity": "sha512-F6Ar1hyLIkndASPlf53d8BWa7xx36mLctPOFD+lmUUlSkH/idi+Sqc3z7+atO/H4mDnT8e/98atZsSN9eVvppQ==", + "requires": { + "axios": "^0.24.0", + "contentful-resolve-response": "^1.3.0", + "contentful-sdk-core": "^6.10.4", + "fast-copy": "^2.1.0", + "json-stringify-safe": "^5.0.1" + } + }, + "contentful-batch-libs": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/contentful-batch-libs/-/contentful-batch-libs-9.2.1.tgz", + "integrity": "sha512-FgCHRYQJMvxz2xDPWOrAmYBD0mrHFunv9OA/0aL/NC4/CMXau1l0j2TmJMy/w49QBLsFNQmwLJZ905wEYOHglg==", + "dev": true, + "requires": { + "bfj": "^7.0.2", + "figures": "^3.2.0", + "https-proxy-agent": "^3.0.0", + "lodash": "^4.17.21", + "moment": "^2.29.1", + "uuid": "^8.3.2" + } + }, + "contentful-import": { + "version": "8.2.28", + "resolved": "https://registry.npmjs.org/contentful-import/-/contentful-import-8.2.28.tgz", + "integrity": "sha512-uLgvJWLPz7uGpdhXN/Hd4syz1HD45/Jp2D/8I6kbAD6iZpDdSCRwqT6HQo4PWgUiV/xhLS/uqgz5iE+q1vtvZQ==", + "dev": true, + "requires": { + "bluebird": "^3.5.1", + "cli-table3": "^0.6.0", + "contentful-batch-libs": "^9.2.1", + "contentful-management": "^7.45.5", + "joi": "^17.5.0", + "listr": "^0.14.1", + "listr-update-renderer": "^0.5.0", + "listr-verbose-renderer": "^0.6.0", + "lodash": "^4.17.10", + "moment": "^2.22.2", + "p-queue": "^6.6.2", + "yargs": "^17.3.0" + } + }, + "contentful-management": { + "version": "7.53.0", + "resolved": "https://registry.npmjs.org/contentful-management/-/contentful-management-7.53.0.tgz", + "integrity": "sha512-enAP2lYr85DWcQAFV9N2KMUVhwRukfsWNM3I/o6q+rT977+yDMXt/1zrTwAVRibOD6BfmxzoU2LmZU6gsMw5Sw==", + "dev": true, + "requires": { + "@types/json-patch": "0.0.30", + "axios": "^0.21.4", + "contentful-sdk-core": "^6.10.4", + "fast-copy": "^2.1.0", + "lodash.isplainobject": "^4.0.6", + "type-fest": "^2.5.3" + }, + "dependencies": { + "axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "dev": true, + "requires": { + "follow-redirects": "^1.14.0" + } + }, + "type-fest": { + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.11.1.tgz", + "integrity": "sha512-fPcV5KLAqFfmhHobtAUwEpbpfYhVF7wSLVgbG/7mIGe/Pete7ky/bPAPRkzbWdrj0/EkswFAAR2feJCgigkUKg==", + "dev": true + } + } + }, + "contentful-resolve-response": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/contentful-resolve-response/-/contentful-resolve-response-1.3.0.tgz", + "integrity": "sha512-FFa4it5VXW1YGyim5rhPbnwmN4c8OcmkpLrsylTL2Y1YpoC+6qnZSSU/QZyvHomLdEgwXaSXhGVJkWjpdz5IMg==", + "requires": { + "fast-copy": "^2.1.0" + } + }, + "contentful-sdk-core": { + "version": "6.10.4", + "resolved": "https://registry.npmjs.org/contentful-sdk-core/-/contentful-sdk-core-6.10.4.tgz", + "integrity": "sha512-vnivU13pKqFzs/eEugqOaDkKce6ZljBkpp6l25MsG8LA1HPCQNBnIkqP5VUbwk/ub7tkHteV9HtoTnmpdvB+Zg==", + "requires": { + "fast-copy": "^2.1.0", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "p-throttle": "^4.1.1", + "qs": "^6.9.4" + } + }, "convert-source-map": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", @@ -521,6 +1087,19 @@ "integrity": "sha512-Q2H6tQ5MtPtcC7f3HxJ48i4Q7T9ybPKgvWyuH7JXIoNa2pm0KuBnycsET/qw1SLLZYfbsbrZQNMeIOClb+6WIA==", "dev": true }, + "cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -532,12 +1111,24 @@ "which": "^2.0.1" } }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, "damerau-levenshtein": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", "dev": true }, + "date-fns": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", + "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", + "dev": true + }, "debug": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", @@ -553,15 +1144,47 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", "dev": true, "requires": { "object-keys": "^1.0.12" } }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "detective": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz", + "integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==", + "dev": true, + "requires": { + "acorn-node": "^1.6.1", + "defined": "^1.0.0", + "minimist": "^1.1.1" + } + }, + "didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true + }, "dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -571,6 +1194,12 @@ "path-type": "^4.0.0" } }, + "dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, "doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -580,6 +1209,18 @@ "esutils": "^2.0.2" } }, + "electron-to-chromium": { + "version": "1.4.49", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.49.tgz", + "integrity": "sha512-k/0t1TRfonHIp8TJKfjBu2cKj8MqYTiEpOhci+q7CVEE5xnCQnx1pTa+V8b/sdhe4S3PR4p4iceEQWhGrKQORQ==", + "dev": true + }, + "elegant-spinner": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", + "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=", + "dev": true + }, "emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", @@ -591,6 +1232,15 @@ "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, "es-abstract": { "version": "1.19.1", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", @@ -630,6 +1280,27 @@ "is-symbol": "^1.0.2" } }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "dev": true + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "dev": true, + "requires": { + "es6-promise": "^4.0.3" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, "escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -677,6 +1348,45 @@ "strip-json-comments": "^3.1.0", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "eslint-config-next": { @@ -947,6 +1657,28 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "fast-copy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-2.1.1.tgz", + "integrity": "sha512-Qod3DdRgFZ8GUIM6ygeoZYpQ0QLW9cf/FS9KhhjlYggcSZXWAemAw8BOCO5LuYCrR3Uj3qXDVTUzOUwG8C7beQ==" + }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -998,6 +1730,23 @@ "reusify": "^1.0.4" } }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + }, + "dependencies": { + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + } + } + }, "file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -1041,17 +1790,34 @@ "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==", "dev": true }, + "follow-redirects": { + "version": "1.14.7", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz", + "integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==" + }, + "fraction.js": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.2.tgz", + "integrity": "sha512-o2RiJQ6DZaR/5+Si0qJUIy637QMRudSi9kU/FFzx9EZazrIdnBgpU+3sEWCxAVhH2RtxW2Oz+T4p2o8uOPVcgA==", + "dev": true + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "functional-red-black-tree": { "version": "1.0.1", @@ -1059,11 +1825,16 @@ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, "get-intrinsic": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dev": true, "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -1130,11 +1901,27 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, "requires": { "function-bind": "^1.1.1" } }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + } + } + }, "has-bigints": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", @@ -1149,8 +1936,7 @@ "has-symbols": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" }, "has-tostringtag": { "version": "1.0.0", @@ -1161,6 +1947,48 @@ "has-symbols": "^1.0.2" } }, + "hoopy": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", + "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==", + "dev": true + }, + "https-proxy-agent": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-3.0.1.tgz", + "integrity": "sha512-+ML2Rbh6DAuee7d07tYGEKOEi2voWPUGan+ExdPbPW6Z3svq+JCqr0v8WmKPOkz1vOVykPCBSuobe7G8GJUtVg==", + "dev": true, + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, "ignore": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", @@ -1183,6 +2011,12 @@ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -1198,6 +2032,131 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, + "inquirer": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.0.tgz", + "integrity": "sha512-0crLweprevJ02tTuA6ThpoAERAGyVILC4sS74uib58Xf/zSr1/ZWtmm7D5CI+bSQEaA04f0K7idaHpQbSWgiVQ==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.2.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "rxjs": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.2.tgz", + "integrity": "sha512-PwDt186XaL3QN5qXj/H9DGyHhP3/RYYgZZwqBv9Tv8rsAaiwFH1IsJJlcgD37J7UW5a6O67qX0KWKS3/pu0m4w==", + "dev": true, + "requires": { + "tslib": "^2.1.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true + }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + } + } + }, "internal-slot": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", @@ -1209,6 +2168,12 @@ "side-channel": "^1.0.4" } }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, "is-bigint": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", @@ -1218,6 +2183,15 @@ "has-bigints": "^1.0.1" } }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, "is-boolean-object": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", @@ -1258,6 +2232,12 @@ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, "is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -1267,6 +2247,12 @@ "is-extglob": "^2.1.1" } }, + "is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true + }, "is-negative-zero": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", @@ -1288,6 +2274,21 @@ "has-tostringtag": "^1.0.0" } }, + "is-observable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", + "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", + "dev": true, + "requires": { + "symbol-observable": "^1.1.0" + } + }, + "is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true + }, "is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", @@ -1304,6 +2305,12 @@ "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", "dev": true }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, "is-string": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", @@ -1322,6 +2329,12 @@ "has-symbols": "^1.0.2" } }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true + }, "is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -1347,6 +2360,19 @@ "supports-color": "^8.0.0" } }, + "joi": { + "version": "17.6.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.6.0.tgz", + "integrity": "sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw==", + "dev": true, + "requires": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.3", + "@sideway/formula": "^3.0.0", + "@sideway/pinpoint": "^2.0.0" + } + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -1361,6 +2387,12 @@ "argparse": "^2.0.1" } }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -1373,6 +2405,11 @@ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", "dev": true }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, "json5": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", @@ -1416,6 +2453,243 @@ "type-check": "~0.4.0" } }, + "lilconfig": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz", + "integrity": "sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==", + "dev": true + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "listr": { + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz", + "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==", + "dev": true, + "requires": { + "@samverschueren/stream-to-observable": "^0.3.0", + "is-observable": "^1.1.0", + "is-promise": "^2.1.0", + "is-stream": "^1.1.0", + "listr-silent-renderer": "^1.1.1", + "listr-update-renderer": "^0.5.0", + "listr-verbose-renderer": "^0.5.0", + "p-map": "^2.0.0", + "rxjs": "^6.3.3" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "listr-verbose-renderer": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz", + "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "cli-cursor": "^2.1.0", + "date-fns": "^1.27.2", + "figures": "^2.0.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "listr-silent-renderer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", + "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=", + "dev": true + }, + "listr-update-renderer": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz", + "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "cli-truncate": "^0.2.1", + "elegant-spinner": "^1.0.1", + "figures": "^1.7.0", + "indent-string": "^3.0.0", + "log-symbols": "^1.0.2", + "log-update": "^2.3.0", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "listr-verbose-renderer": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.6.0.tgz", + "integrity": "sha512-P3bA/giMu432bs3gHiKXKOIHlWanCIlRhbhCfgKNgCoyvTvZsdbfkgX1BvThYXhm36cS8pOX3Z5vxXBFZC+NQw==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "cli-cursor": "^2.1.0", + "date-fns": "^2.0.1", + "figures": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "date-fns": { + "version": "2.28.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.28.0.tgz", + "integrity": "sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "loader-utils": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", @@ -1436,12 +2710,89 @@ "path-exists": "^3.0.0" } }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" + }, "lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "dev": true, + "requires": { + "chalk": "^1.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "log-update": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", + "integrity": "sha1-iDKP19HOeTiykoN0bwsbwSayRwg=", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "cli-cursor": "^2.0.0", + "wrap-ansi": "^3.0.1" + } + }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -1480,6 +2831,12 @@ "picomatch": "^2.2.3" } }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -1494,12 +2851,24 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, + "moment": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", + "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==", + "dev": true + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, "nanoid": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", @@ -1538,6 +2907,18 @@ "stream-browserify": "3.0.0", "styled-jsx": "5.0.0-beta.6", "use-subscription": "1.5.1" + }, + "dependencies": { + "postcss": { + "version": "8.2.15", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.15.tgz", + "integrity": "sha512-2zO3b26eJD/8rb106Qu2o7Qgg52ND5HPjcyQiK2B98O388h43A448LCslC0dI2P97wCAQRJsFvwTRcXxTKds+Q==", + "requires": { + "colorette": "^1.2.2", + "nanoid": "^3.1.23", + "source-map": "^0.6.1" + } + } } }, "node-fetch": { @@ -1545,16 +2926,45 @@ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" }, + "node-releases": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, + "object-hash": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", + "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==", + "dev": true + }, "object-inspect": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", - "dev": true + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==" }, "object-keys": { "version": "1.1.1", @@ -1626,6 +3036,15 @@ "wrappy": "1" } }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, "optionator": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", @@ -1640,6 +3059,118 @@ "word-wrap": "^1.2.3" } }, + "ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "requires": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, "p-limit": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", @@ -1658,6 +3189,36 @@ "p-limit": "^1.1.0" } }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true + }, + "p-queue": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.4", + "p-timeout": "^3.2.0" + } + }, + "p-throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/p-throttle/-/p-throttle-4.1.1.tgz", + "integrity": "sha512-TuU8Ato+pRTPJoDzYD4s7ocJYcNSEZRvlxoq3hcPI2kZDZ49IQ1Wkj7/gDJc3X7XiEAAvRGtDzdXJI0tC3IL1g==" + }, + "p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "dev": true, + "requires": { + "p-finally": "^1.0.0" + } + }, "p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", @@ -1673,6 +3234,18 @@ "callsites": "^3.0.0" } }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", @@ -1703,6 +3276,12 @@ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, "picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -1710,15 +3289,60 @@ "dev": true }, "postcss": { - "version": "8.2.15", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.15.tgz", - "integrity": "sha512-2zO3b26eJD/8rb106Qu2o7Qgg52ND5HPjcyQiK2B98O388h43A448LCslC0dI2P97wCAQRJsFvwTRcXxTKds+Q==", + "version": "8.4.5", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", + "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==", + "dev": true, + "requires": { + "nanoid": "^3.1.30", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.1" + } + }, + "postcss-js": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz", + "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==", + "dev": true, + "requires": { + "camelcase-css": "^2.0.1" + } + }, + "postcss-load-config": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.1.tgz", + "integrity": "sha512-c/9XYboIbSEUZpiD1UQD0IKiUe8n9WHYV7YFe7X7J+ZwCsEKkUJSFWjS9hBU1RR9THR7jMXst8sxiqP0jjo2mg==", + "dev": true, + "requires": { + "lilconfig": "^2.0.4", + "yaml": "^1.10.2" + } + }, + "postcss-nested": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz", + "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.6" + } + }, + "postcss-selector-parser": { + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz", + "integrity": "sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ==", + "dev": true, "requires": { - "colorette": "^1.2.2", - "nanoid": "^3.1.23", - "source-map": "^0.6.1" + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" } }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -1750,12 +3374,26 @@ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, + "qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "requires": { + "side-channel": "^1.0.4" + } + }, "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true }, + "quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true + }, "react": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", @@ -1795,6 +3433,15 @@ "util-deprecate": "^1.0.1" } }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, "regenerator-runtime": { "version": "0.13.9", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", @@ -1817,6 +3464,12 @@ "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, "resolve": { "version": "1.21.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.21.0.tgz", @@ -1834,6 +3487,16 @@ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -1849,6 +3512,12 @@ "glob": "^7.1.3" } }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, "run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -1858,11 +3527,26 @@ "queue-microtask": "^1.2.2" } }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, "scheduler": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", @@ -1900,24 +3584,41 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, "requires": { "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", "object-inspect": "^1.9.0" } }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, + "slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "dev": true + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true + }, "stream-browserify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", @@ -1932,6 +3633,25 @@ "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=" }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + } + } + }, "string.prototype.matchall": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz", @@ -2043,12 +3763,100 @@ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "dev": true + }, + "tailwindcss": { + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.0.15.tgz", + "integrity": "sha512-bT2iy7FtjwgsXik4ZoJnHXR+SRCiGR1W95fVqpLZebr64m4ahwUwRbIAc5w5+2fzr1YF4Ct2eI7dojMRRl8sVQ==", + "dev": true, + "requires": { + "arg": "^5.0.1", + "chalk": "^4.1.2", + "chokidar": "^3.5.2", + "color-name": "^1.1.4", + "cosmiconfig": "^7.0.1", + "detective": "^5.2.0", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.2.7", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "normalize-path": "^3.0.0", + "object-hash": "^2.2.0", + "postcss-js": "^4.0.0", + "postcss-load-config": "^3.1.0", + "postcss-nested": "5.0.6", + "postcss-selector-parser": "^6.0.8", + "postcss-value-parser": "^4.2.0", + "quick-lru": "^5.1.1", + "resolve": "^1.21.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -2063,6 +3871,12 @@ "is-number": "^7.0.0" } }, + "tryer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", + "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", + "dev": true + }, "tsconfig-paths": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz", @@ -2139,12 +3953,27 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + }, "v8-compile-cache": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "dev": true }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -2173,17 +4002,99 @@ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true }, + "wrap-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", + "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + }, + "yargs": { + "version": "17.3.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz", + "integrity": "sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + } + }, + "yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA==", + "dev": true } } } diff --git a/package.json b/package.json index aa5a946..01c6a60 100644 --- a/package.json +++ b/package.json @@ -1,19 +1,30 @@ { - "name": "jumpstart-shop-nextjs", - "private": true, - "scripts": { - "dev": "next dev", - "build": "next build", - "start": "next start", - "lint": "next lint" - }, - "dependencies": { - "next": "12.0.8", - "react": "17.0.2", - "react-dom": "17.0.2" - }, - "devDependencies": { - "eslint": "8.7.0", - "eslint-config-next": "12.0.8" - } -} + "name": "jumpstart-shop-nextjs", + "private": true, + "scripts": { + "setup": "node setup.mjs", + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint" + }, + "dependencies": { + "@contentful/rich-text-react-renderer": "^15.11.1", + "contentful": "^9.1.5", + "lodash": "^4.17.21", + "next": "12.0.8", + "react": "17.0.2", + "react-dom": "17.0.2" + }, + "devDependencies": { + "autoprefixer": "^10.4.2", + "chalk": "^5.0.0", + "contentful-import": "^8.2.28", + "contentful-management": "^7.53.0", + "eslint": "8.7.0", + "eslint-config-next": "12.0.8", + "inquirer": "^8.2.0", + "postcss": "^8.4.5", + "tailwindcss": "^3.0.15" + } +} \ No newline at end of file diff --git a/pages/_app.js b/pages/_app.js index 1e1cec9..1567f0f 100644 --- a/pages/_app.js +++ b/pages/_app.js @@ -1,7 +1,12 @@ -import '../styles/globals.css' +import MainLayout from "../layouts/MainLayout"; +import "../styles/globals.css"; function MyApp({ Component, pageProps }) { - return + return ( + + + + ); } -export default MyApp +export default MyApp; diff --git a/pages/index.js b/pages/index.js deleted file mode 100644 index dc4b640..0000000 --- a/pages/index.js +++ /dev/null @@ -1,69 +0,0 @@ -import Head from 'next/head' -import Image from 'next/image' -import styles from '../styles/Home.module.css' - -export default function Home() { - return ( -
- - Create Next App - - - - -
-

- Welcome to Next.js! -

- -

- Get started by editing{' '} - pages/index.js -

- -
- -

Documentation →

-

Find in-depth information about Next.js features and API.

-
- - -

Learn →

-

Learn about Next.js in an interactive course with quizzes!

-
- - -

Examples →

-

Discover and deploy boilerplate example Next.js projects.

-
- - -

Deploy →

-

- Instantly deploy your Next.js site to a public URL with Vercel. -

-
-
-
- - -
- ) -} diff --git a/pages/index.jsx b/pages/index.jsx new file mode 100644 index 0000000..7e71a41 --- /dev/null +++ b/pages/index.jsx @@ -0,0 +1,55 @@ +// import Head from "next/head"; +// import Image from "next/image"; +import _ from "lodash"; +import ProductSection from "../components/ProductSection"; +import { getEntriesByContentType } from "../lib/helpers"; + +// styles + +export default function Home(props) { + const page = _.get(props, "page"); + const sections = _.get(page, "fields.sections"); + const headline = _.get(page, "fields.headline"); + + console.log(page); + return ( + <> +

{headline}

+
+ {Array.isArray(sections) + ? sections.map((section, sectionIndex) => { + const contentType = _.get(section, "sys.contentType.sys.id"); + const sectionId = _.get(section, "sys.id"); + const fields = _.get(section, "fields"); + if (contentType === "productSection") { + return ( + + ); + } + + if (contentType === "product") { + return <>{contentType}; + } + + return ""; + }) + : ""} +
+ + ); +} + +export async function getStaticProps() { + const pageEntries = await getEntriesByContentType("landingPage", "home-page"); + let homepageEntry = _.get(pageEntries, "items[0]"); + + return { + props: { + page: homepageEntry ? homepageEntry : {}, + }, + }; +} diff --git a/pages/products/[slug].jsx b/pages/products/[slug].jsx new file mode 100644 index 0000000..7c7e288 --- /dev/null +++ b/pages/products/[slug].jsx @@ -0,0 +1,62 @@ +import { documentToReactComponents } from "@contentful/rich-text-react-renderer"; +import _ from "lodash"; +import Head from "next/head"; +import ImageComponent from "../../components/ImageComponent"; +import { getEntriesByContentType } from "../../lib/helpers"; +import richtextRenderOptions from "../../lib/richtextRenderOptions"; + +const ProductPage = (props) => { + console.log("static props", props); + const product = _.get(props, "product.items[0]"); + const contentType = _.get(product, "sys.contentType.sys.id"); + const productId = _.get(product, "sys.id"); + const fields = _.get(product, "fields"); + const title = _.get(product, "fields.title"); + return ( + <> + + {title} + +
+
+ +
+

{title}

+

${fields.price}

+
+ {documentToReactComponents(fields.description, richtextRenderOptions)} +
+
+ + ); +}; + +export async function getStaticPaths() { + const productEntries = await getEntriesByContentType("product"); + + let paths = []; + if (productEntries) { + try { + paths = productEntries.items.map((entry) => { + const slugVal = _.get(entry, "fields.slug"); + return { params: { slug: slugVal } }; + }); + } catch (error) {} + } + + return { + paths: paths, + fallback: false, + }; +} + +export async function getStaticProps(context) { + const slug = _.get(context, "params.slug"); + const product = await getEntriesByContentType("product", slug); + + return { + props: { product }, + }; +} + +export default ProductPage; diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..33ad091 --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/setup.mjs b/setup.mjs new file mode 100644 index 0000000..3e75e38 --- /dev/null +++ b/setup.mjs @@ -0,0 +1,157 @@ +"use strict"; +import chalk from "chalk"; +import { createRequire } from "module"; +const require = createRequire( + import.meta.url); +const contentful = require("contentful-management"); +const spaceImport = require("contentful-import"); +const exportFile = require("./space-export/space.json"); +const inquirer = require("inquirer"); + +// const chalk = require("chalk"); +const path = require("path"); +const { writeFileSync } = require("fs"); + +console.log(` + To set up this project you need to provide your Space ID + and the belonging API access tokens. + + You can find all the needed information in your Contentful space under: + + ${chalk.yellow( + `app.contentful.com ${chalk.red("->")} Space Settings ${chalk.red( + "->" + )} API keys` + )} + + The ${chalk.green("Content Management API Token")} + will be used to import and write data to your space. + + The ${chalk.green("Content Delivery API Token")} + will be used to retrieve published content items. + + The ${chalk.green("Content Preview API Token")} + will be used to retrieve published and unpublished content items. + + Ready? Let's do it! 🎉 +`); + +const questions = [ + { + name: "spaceId", + message: "Your Space ID", + validate: (input) => + /^[a-z0-9]{12}$/.test(input) || + "Space ID must be 12 lowercase characters", + }, + { + name: "accessToken", + message: "Your Content Delivery API access token", + }, + { + name: "previewToken", + message: "Your Content Preview API access token", + }, + { + name: "managementToken", + message: "Your Content Management API access token", + }, +]; + +inquirer + .prompt(questions) + .then((answers) => { + console.log("Writing config file..."); + const spaceId = answers.spaceId ? answers.spaceId : ""; + const accessToken = answers.accessToken ? answers.accessToken : ""; + const previewToken = answers.previewToken ? answers.previewToken : ""; + const previewSecret = answers.previewSecret ? answers.previewSecret : ""; + const env = "master"; + const managementToken = answers.managementToken + ? answers.managementToken + : "" + ? answers.managementToken + : ""; + + const fileContents = + [ + `NEXT_PUBLIC_SPACE_ID='${spaceId}'`, + `NEXT_PUBLIC_DELIVERY_TOKEN='${accessToken}'`, + `NEXT_PUBLIC_PREVIEW_TOKEN='${previewToken}'`, + `NEXT_PUBLIC_PREVIEW_SECRET='testing'`, + `NEXT_PUBLIC_ENVIRONMENT='${env}'`, + ].join("\n") + "\n"; + + writeFileSync(".env", fileContents, "utf8"); + + return { spaceId, managementToken, accessToken, env }; + }) + .then((managementConfig) => { + const spaceId = managementConfig.spaceId ? managementConfig.spaceId : ""; + const managementToken = managementConfig.managementToken + ? managementConfig.managementToken + : ""; + const accessToken = managementConfig.accessToken + ? managementConfig.accessToken + : ""; + + const envId = managementConfig.env ? managementConfig.env : "master"; + + // console.log(managementConfig); + if (spaceId && managementToken) { + const client = contentful.createClient({ + // This is the access token for this space. Normally you get the token in the Contentful web app + accessToken: managementToken, + }); + + (async () => { + try { + const contentfulSpace = await client.getSpace(spaceId); + const environment = await contentfulSpace.getEnvironment(envId); + const entries = await environment.getEntries(); + + // delete entries + console.log(chalk.red(`Deleting! entries`)); + for (const entry of entries.items) { + if (entry.isPublished()) { + console.log(`Unpublishing entry "${entry.sys.id}"`); + await entry.unpublish(); + } + await entry.delete(); + } + + // delete content types + const contentTypes = await environment.getContentTypes(); + let totalContentTypes = contentTypes.total; + console.log( + chalk.red(`Deleting! ${totalContentTypes} content types`) + ); + console.log(contentTypes); + for (const contentType of contentTypes.items) { + if (contentType.isPublished()) { + console.log(`Unpublishing content type "${contentType.sys.id}"`); + await contentType.unpublish(); + } + await contentType.delete(); + } + + // import to space + await spaceImport({ + spaceId: spaceId, + managementToken: managementToken, + environmentId: envId, + content: exportFile, + }); + } catch (error) { + console.log(chalk.red(`An error occured!`), error); + } + + // end + })(); + } else { + console.log( + `Missing Management token! ' + )} Please Try Again ${chalk.red("ERROR")} .` + ); + } + }); \ No newline at end of file diff --git a/space-export/space.json b/space-export/space.json new file mode 100644 index 0000000..9567ce2 --- /dev/null +++ b/space-export/space.json @@ -0,0 +1,2336 @@ +{ + "contentTypes": [ + { + "sys": { + "space": { + "sys": { + "type": "Link", + "linkType": "Space", + "id": "hg94h980vf1n" + } + }, + "id": "product", + "type": "ContentType", + "createdAt": "2022-02-07T10:41:31.912Z", + "updatedAt": "2022-02-07T10:41:33.268Z", + "environment": { + "sys": { + "id": "master", + "type": "Link", + "linkType": "Environment" + } + }, + "publishedVersion": 3, + "publishedAt": "2022-02-07T10:41:33.268Z", + "firstPublishedAt": "2022-02-07T10:41:32.254Z", + "createdBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "updatedBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "publishedCounter": 2, + "version": 4, + "publishedBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + } + }, + "displayField": "title", + "name": "Product", + "description": "for adding products", + "fields": [ + { + "id": "internalName", + "name": "Internal Name", + "type": "Symbol", + "localized": false, + "required": false, + "validations": [ + ], + "disabled": false, + "omitted": false + }, + { + "id": "title", + "name": "Title", + "type": "Symbol", + "localized": false, + "required": true, + "validations": [ + ], + "disabled": false, + "omitted": false + }, + { + "id": "slug", + "name": "Slug", + "type": "Symbol", + "localized": false, + "required": true, + "validations": [ + ], + "disabled": false, + "omitted": false + }, + { + "id": "categories", + "name": "Categories", + "type": "Array", + "localized": false, + "required": false, + "validations": [ + ], + "disabled": false, + "omitted": false, + "items": { + "type": "Link", + "validations": [ + { + "linkContentType": [ + "category" + ] + } + ], + "linkType": "Entry" + } + }, + { + "id": "description", + "name": "Description", + "type": "RichText", + "localized": false, + "required": false, + "validations": [ + { + "enabledNodeTypes": [ + "heading-1", + "heading-2", + "heading-3", + "heading-4", + "heading-5", + "heading-6", + "ordered-list", + "unordered-list", + "hr", + "blockquote", + "embedded-entry-block", + "embedded-asset-block", + "hyperlink", + "entry-hyperlink", + "asset-hyperlink", + "embedded-entry-inline" + ] + }, + { + "enabledMarks": [ + "bold", + "italic", + "underline", + "code" + ] + } + ], + "disabled": false, + "omitted": false + }, + { + "id": "price", + "name": "Price", + "type": "Number", + "localized": false, + "required": true, + "validations": [ + ], + "disabled": false, + "omitted": false + }, + { + "id": "image", + "name": "Image", + "type": "Link", + "localized": false, + "required": true, + "validations": [ + ], + "disabled": false, + "omitted": false, + "linkType": "Asset" + } + ] + }, + { + "sys": { + "space": { + "sys": { + "type": "Link", + "linkType": "Space", + "id": "hg94h980vf1n" + } + }, + "id": "productSection", + "type": "ContentType", + "createdAt": "2022-02-07T10:41:44.469Z", + "updatedAt": "2022-02-07T10:41:44.825Z", + "environment": { + "sys": { + "id": "master", + "type": "Link", + "linkType": "Environment" + } + }, + "publishedVersion": 1, + "publishedAt": "2022-02-07T10:41:44.825Z", + "firstPublishedAt": "2022-02-07T10:41:44.825Z", + "createdBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "updatedBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "publishedCounter": 1, + "version": 2, + "publishedBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + } + }, + "displayField": "title", + "name": "Product Section", + "description": null, + "fields": [ + { + "id": "internalName", + "name": "Internal Name", + "type": "Symbol", + "localized": false, + "required": false, + "validations": [ + ], + "disabled": false, + "omitted": false + }, + { + "id": "title", + "name": "Title", + "type": "Symbol", + "localized": false, + "required": true, + "validations": [ + ], + "disabled": false, + "omitted": false + }, + { + "id": "products", + "name": "Products", + "type": "Array", + "localized": false, + "required": false, + "validations": [ + ], + "disabled": false, + "omitted": false, + "items": { + "type": "Link", + "validations": [ + { + "linkContentType": [ + "product" + ] + } + ], + "linkType": "Entry" + } + } + ] + }, + { + "sys": { + "space": { + "sys": { + "type": "Link", + "linkType": "Space", + "id": "hg94h980vf1n" + } + }, + "id": "category", + "type": "ContentType", + "createdAt": "2022-02-07T10:41:57.682Z", + "updatedAt": "2022-02-07T10:41:58.010Z", + "environment": { + "sys": { + "id": "master", + "type": "Link", + "linkType": "Environment" + } + }, + "publishedVersion": 1, + "publishedAt": "2022-02-07T10:41:58.010Z", + "firstPublishedAt": "2022-02-07T10:41:58.010Z", + "createdBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "updatedBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "publishedCounter": 1, + "version": 2, + "publishedBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + } + }, + "displayField": "title", + "name": "Category", + "description": null, + "fields": [ + { + "id": "title", + "name": "Title", + "type": "Symbol", + "localized": false, + "required": true, + "validations": [ + ], + "disabled": false, + "omitted": false + }, + { + "id": "description", + "name": "Description", + "type": "Symbol", + "localized": false, + "required": false, + "validations": [ + ], + "disabled": false, + "omitted": false + }, + { + "id": "image", + "name": "Image", + "type": "Link", + "localized": false, + "required": false, + "validations": [ + ], + "disabled": false, + "omitted": false, + "linkType": "Asset" + } + ] + }, + { + "sys": { + "space": { + "sys": { + "type": "Link", + "linkType": "Space", + "id": "hg94h980vf1n" + } + }, + "id": "landingPage", + "type": "ContentType", + "createdAt": "2022-02-07T10:42:08.959Z", + "updatedAt": "2022-02-07T10:42:10.281Z", + "environment": { + "sys": { + "id": "master", + "type": "Link", + "linkType": "Environment" + } + }, + "publishedVersion": 3, + "publishedAt": "2022-02-07T10:42:10.281Z", + "firstPublishedAt": "2022-02-07T10:42:09.289Z", + "createdBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "updatedBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "publishedCounter": 2, + "version": 4, + "publishedBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + } + }, + "displayField": "title", + "name": "Landing Page", + "description": null, + "fields": [ + { + "id": "title", + "name": "Title", + "type": "Symbol", + "localized": false, + "required": true, + "validations": [ + ], + "disabled": false, + "omitted": false + }, + { + "id": "slug", + "name": "Slug", + "type": "Symbol", + "localized": false, + "required": true, + "validations": [ + ], + "disabled": false, + "omitted": false + }, + { + "id": "headline", + "name": "Headline", + "type": "Symbol", + "localized": false, + "required": true, + "validations": [ + ], + "disabled": false, + "omitted": false + }, + { + "id": "sections", + "name": "Sections", + "type": "Array", + "localized": false, + "required": false, + "validations": [ + ], + "disabled": false, + "omitted": false, + "items": { + "type": "Link", + "validations": [ + { + "linkContentType": [ + "productSection" + ] + } + ], + "linkType": "Entry" + } + } + ] + } + ], + "tags": [ + ], + "editorInterfaces": [ + { + "sys": { + "id": "default", + "type": "EditorInterface", + "space": { + "sys": { + "id": "hg94h980vf1n", + "type": "Link", + "linkType": "Space" + } + }, + "version": 3, + "createdAt": "2022-02-07T10:41:32.307Z", + "createdBy": { + "sys": { + "id": "0LxJB4LBv007oHgJD7WvJN", + "type": "Link", + "linkType": "User" + } + }, + "updatedAt": "2022-02-07T10:41:33.330Z", + "updatedBy": { + "sys": { + "id": "0LxJB4LBv007oHgJD7WvJN", + "type": "Link", + "linkType": "User" + } + }, + "contentType": { + "sys": { + "id": "product", + "type": "Link", + "linkType": "ContentType" + } + }, + "environment": { + "sys": { + "id": "master", + "type": "Link", + "linkType": "Environment" + } + } + }, + "controls": [ + { + "fieldId": "slug", + "widgetId": "slugEditor", + "widgetNamespace": "builtin" + }, + { + "fieldId": "categories" + }, + { + "fieldId": "description" + }, + { + "fieldId": "price" + }, + { + "fieldId": "image" + } + ] + }, + { + "sys": { + "id": "default", + "type": "EditorInterface", + "space": { + "sys": { + "id": "hg94h980vf1n", + "type": "Link", + "linkType": "Space" + } + }, + "version": 1, + "createdAt": "2022-02-07T10:41:44.894Z", + "createdBy": { + "sys": { + "id": "0LxJB4LBv007oHgJD7WvJN", + "type": "Link", + "linkType": "User" + } + }, + "updatedAt": "2022-02-07T10:41:44.894Z", + "updatedBy": { + "sys": { + "id": "0LxJB4LBv007oHgJD7WvJN", + "type": "Link", + "linkType": "User" + } + }, + "contentType": { + "sys": { + "id": "productSection", + "type": "Link", + "linkType": "ContentType" + } + }, + "environment": { + "sys": { + "id": "master", + "type": "Link", + "linkType": "Environment" + } + } + }, + "controls": [ + { + "fieldId": "internalName" + }, + { + "fieldId": "title" + }, + { + "fieldId": "products" + } + ] + }, + { + "sys": { + "id": "default", + "type": "EditorInterface", + "space": { + "sys": { + "id": "hg94h980vf1n", + "type": "Link", + "linkType": "Space" + } + }, + "version": 1, + "createdAt": "2022-02-07T10:41:58.096Z", + "createdBy": { + "sys": { + "id": "0LxJB4LBv007oHgJD7WvJN", + "type": "Link", + "linkType": "User" + } + }, + "updatedAt": "2022-02-07T10:41:58.096Z", + "updatedBy": { + "sys": { + "id": "0LxJB4LBv007oHgJD7WvJN", + "type": "Link", + "linkType": "User" + } + }, + "contentType": { + "sys": { + "id": "category", + "type": "Link", + "linkType": "ContentType" + } + }, + "environment": { + "sys": { + "id": "master", + "type": "Link", + "linkType": "Environment" + } + } + }, + "controls": [ + { + "fieldId": "title" + }, + { + "fieldId": "description" + }, + { + "fieldId": "image" + } + ] + }, + { + "sys": { + "id": "default", + "type": "EditorInterface", + "space": { + "sys": { + "id": "hg94h980vf1n", + "type": "Link", + "linkType": "Space" + } + }, + "version": 3, + "createdAt": "2022-02-07T10:42:09.350Z", + "createdBy": { + "sys": { + "id": "0LxJB4LBv007oHgJD7WvJN", + "type": "Link", + "linkType": "User" + } + }, + "updatedAt": "2022-02-07T10:42:10.339Z", + "updatedBy": { + "sys": { + "id": "0LxJB4LBv007oHgJD7WvJN", + "type": "Link", + "linkType": "User" + } + }, + "contentType": { + "sys": { + "id": "landingPage", + "type": "Link", + "linkType": "ContentType" + } + }, + "environment": { + "sys": { + "id": "master", + "type": "Link", + "linkType": "Environment" + } + } + }, + "controls": [ + { + "fieldId": "slug", + "widgetId": "slugEditor", + "widgetNamespace": "builtin" + }, + { + "fieldId": "headline" + }, + { + "fieldId": "sections" + } + ] + } + ], + "entries": [ + { + "metadata": { + "tags": [ + ] + }, + "sys": { + "space": { + "sys": { + "type": "Link", + "linkType": "Space", + "id": "hg94h980vf1n" + } + }, + "id": "590aUv4nfxndZlavSpU4rP", + "type": "Entry", + "createdAt": "2022-02-07T10:43:25.373Z", + "updatedAt": "2022-02-07T10:43:48.046Z", + "environment": { + "sys": { + "id": "master", + "type": "Link", + "linkType": "Environment" + } + }, + "publishedVersion": 3, + "publishedAt": "2022-02-07T10:43:48.046Z", + "firstPublishedAt": "2022-02-07T10:43:48.046Z", + "createdBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "updatedBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "publishedCounter": 1, + "version": 4, + "publishedBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "contentType": { + "sys": { + "type": "Link", + "linkType": "ContentType", + "id": "category" + } + } + }, + "fields": { + "title": { + "en-US": "clothing" + }, + "description": { + "en-US": "clothing items" + } + } + }, + { + "metadata": { + "tags": [ + ] + }, + "sys": { + "space": { + "sys": { + "type": "Link", + "linkType": "Space", + "id": "hg94h980vf1n" + } + }, + "id": "7hVI3sE8aS7ViIwheli3fy", + "type": "Entry", + "createdAt": "2022-02-07T10:43:57.126Z", + "updatedAt": "2022-02-07T10:44:27.005Z", + "environment": { + "sys": { + "id": "master", + "type": "Link", + "linkType": "Environment" + } + }, + "publishedVersion": 4, + "publishedAt": "2022-02-07T10:44:27.005Z", + "firstPublishedAt": "2022-02-07T10:44:27.005Z", + "createdBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "updatedBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "publishedCounter": 1, + "version": 5, + "publishedBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "contentType": { + "sys": { + "type": "Link", + "linkType": "ContentType", + "id": "category" + } + } + }, + "fields": { + "title": { + "en-US": "gift items" + }, + "description": { + "en-US": "Gift items" + } + } + }, + { + "metadata": { + "tags": [ + ] + }, + "sys": { + "space": { + "sys": { + "type": "Link", + "linkType": "Space", + "id": "hg94h980vf1n" + } + }, + "id": "5M8yfs7rRfZ8KVpkepfeHe", + "type": "Entry", + "createdAt": "2022-02-07T10:44:39.659Z", + "updatedAt": "2022-02-07T10:44:49.395Z", + "environment": { + "sys": { + "id": "master", + "type": "Link", + "linkType": "Environment" + } + }, + "publishedVersion": 2, + "publishedAt": "2022-02-07T10:44:49.395Z", + "firstPublishedAt": "2022-02-07T10:44:49.395Z", + "createdBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "updatedBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "publishedCounter": 1, + "version": 3, + "publishedBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "contentType": { + "sys": { + "type": "Link", + "linkType": "ContentType", + "id": "category" + } + } + }, + "fields": { + "title": { + "en-US": "merchandise" + } + } + }, + { + "metadata": { + "tags": [ + ] + }, + "sys": { + "space": { + "sys": { + "type": "Link", + "linkType": "Space", + "id": "hg94h980vf1n" + } + }, + "id": "Rvc3xwFIw5xvMfHxhT8uG", + "type": "Entry", + "createdAt": "2022-02-07T10:47:40.570Z", + "updatedAt": "2022-02-07T10:49:11.703Z", + "environment": { + "sys": { + "id": "master", + "type": "Link", + "linkType": "Environment" + } + }, + "publishedVersion": 8, + "publishedAt": "2022-02-07T10:49:11.703Z", + "firstPublishedAt": "2022-02-07T10:49:11.703Z", + "createdBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "updatedBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "publishedCounter": 1, + "version": 9, + "publishedBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "contentType": { + "sys": { + "type": "Link", + "linkType": "ContentType", + "id": "product" + } + } + }, + "fields": { + "internalName": { + "en-US": "Jim's legendary coffee mug" + }, + "title": { + "en-US": "Jim's legendary coffee mug" + }, + "slug": { + "en-US": "jims-legendary-coffee-mug" + }, + "categories": { + "en-US": [ + { + "sys": { + "type": "Link", + "linkType": "Entry", + "id": "7hVI3sE8aS7ViIwheli3fy" + } + }, + { + "sys": { + "type": "Link", + "linkType": "Entry", + "id": "5M8yfs7rRfZ8KVpkepfeHe" + } + } + ] + }, + "description": { + "en-US": { + "data": { + }, + "content": [ + { + "data": { + }, + "content": [ + { + "data": { + }, + "marks": [ + ], + "value": "Shall we spill the secret? ", + "nodeType": "text" + }, + { + "data": { + }, + "marks": [ + { + "type": "bold" + } + ], + "value": "Rumor", + "nodeType": "text" + }, + { + "data": { + }, + "marks": [ + ], + "value": " has it that Jim’s mug is magical. Pour in any type of coffee and it will transform it into the most flavorsome and aromatic cup of joe you’ll ever experience. There is one word to describe it - legendary! From ordinary into extraordinary, get Jim’s legendary coffee mug while supplies last!", + "nodeType": "text" + } + ], + "nodeType": "paragraph" + } + ], + "nodeType": "document" + } + }, + "price": { + "en-US": 99.99 + }, + "image": { + "en-US": { + "sys": { + "type": "Link", + "linkType": "Asset", + "id": "4KLpxtqb8Lv4WIVjPF3JVS" + } + } + } + } + }, + { + "metadata": { + "tags": [ + ] + }, + "sys": { + "space": { + "sys": { + "type": "Link", + "linkType": "Space", + "id": "hg94h980vf1n" + } + }, + "id": "3yjqD0zdDFUwNH629GCItz", + "type": "Entry", + "createdAt": "2022-02-07T10:49:19.101Z", + "updatedAt": "2022-02-07T10:50:34.574Z", + "environment": { + "sys": { + "id": "master", + "type": "Link", + "linkType": "Environment" + } + }, + "publishedVersion": 7, + "publishedAt": "2022-02-07T10:50:34.574Z", + "firstPublishedAt": "2022-02-07T10:50:34.574Z", + "createdBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "updatedBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "publishedCounter": 1, + "version": 8, + "publishedBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "contentType": { + "sys": { + "type": "Link", + "linkType": "ContentType", + "id": "product" + } + } + }, + "fields": { + "internalName": { + "en-US": "Amelia's CORE Concept Hoodie" + }, + "title": { + "en-US": "Amelia's CORE Concept Hoodie" + }, + "slug": { + "en-US": "amelias-core-concept-hoodie" + }, + "categories": { + "en-US": [ + { + "sys": { + "type": "Link", + "linkType": "Entry", + "id": "590aUv4nfxndZlavSpU4rP" + } + }, + { + "sys": { + "type": "Link", + "linkType": "Entry", + "id": "5M8yfs7rRfZ8KVpkepfeHe" + } + } + ] + }, + "description": { + "en-US": { + "data": { + }, + "content": [ + { + "data": { + }, + "content": [ + { + "data": { + }, + "marks": [ + { + "type": "bold" + } + ], + "value": "C.O.R.E", + "nodeType": "text" + }, + { + "data": { + }, + "marks": [ + ], + "value": " - Create once reuse everywhere! you can definitely wear this hoodie with all your favorite pants.", + "nodeType": "text" + } + ], + "nodeType": "paragraph" + } + ], + "nodeType": "document" + } + }, + "price": { + "en-US": 120 + }, + "image": { + "en-US": { + "sys": { + "type": "Link", + "linkType": "Asset", + "id": "28DkOvL9MKuYpDObbXNtPT" + } + } + } + } + }, + { + "metadata": { + "tags": [ + ] + }, + "sys": { + "space": { + "sys": { + "type": "Link", + "linkType": "Space", + "id": "hg94h980vf1n" + } + }, + "id": "setlRNA7yYQQ1COtVvQYH", + "type": "Entry", + "createdAt": "2022-02-07T10:50:49.850Z", + "updatedAt": "2022-02-07T10:51:20.211Z", + "environment": { + "sys": { + "id": "master", + "type": "Link", + "linkType": "Environment" + } + }, + "publishedVersion": 3, + "publishedAt": "2022-02-07T10:51:20.211Z", + "firstPublishedAt": "2022-02-07T10:51:20.211Z", + "createdBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "updatedBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "publishedCounter": 1, + "version": 4, + "publishedBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "contentType": { + "sys": { + "type": "Link", + "linkType": "ContentType", + "id": "productSection" + } + } + }, + "fields": { + "internalName": { + "en-US": "Special Offer" + }, + "title": { + "en-US": "Special Offer" + }, + "products": { + "en-US": [ + { + "sys": { + "type": "Link", + "linkType": "Entry", + "id": "Rvc3xwFIw5xvMfHxhT8uG" + } + }, + { + "sys": { + "type": "Link", + "linkType": "Entry", + "id": "3yjqD0zdDFUwNH629GCItz" + } + } + ] + } + } + }, + { + "metadata": { + "tags": [ + ] + }, + "sys": { + "space": { + "sys": { + "type": "Link", + "linkType": "Space", + "id": "hg94h980vf1n" + } + }, + "id": "7Dic3an7QMyPet2PIErkwI", + "type": "Entry", + "createdAt": "2022-02-07T10:51:25.005Z", + "updatedAt": "2022-02-07T10:51:46.271Z", + "environment": { + "sys": { + "id": "master", + "type": "Link", + "linkType": "Environment" + } + }, + "publishedVersion": 3, + "publishedAt": "2022-02-07T10:51:46.271Z", + "firstPublishedAt": "2022-02-07T10:51:46.271Z", + "createdBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "updatedBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "publishedCounter": 1, + "version": 4, + "publishedBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "contentType": { + "sys": { + "type": "Link", + "linkType": "ContentType", + "id": "productSection" + } + } + }, + "fields": { + "internalName": { + "en-US": "LS Collection" + }, + "title": { + "en-US": "LS Collection" + }, + "products": { + "en-US": [ + { + "sys": { + "type": "Link", + "linkType": "Entry", + "id": "3yjqD0zdDFUwNH629GCItz" + } + }, + { + "sys": { + "type": "Link", + "linkType": "Entry", + "id": "Rvc3xwFIw5xvMfHxhT8uG" + } + } + ] + } + } + }, + { + "metadata": { + "tags": [ + ] + }, + "sys": { + "space": { + "sys": { + "type": "Link", + "linkType": "Space", + "id": "hg94h980vf1n" + } + }, + "id": "7crGJXefF4mDkLckuTKmHd", + "type": "Entry", + "createdAt": "2022-02-07T10:52:09.979Z", + "updatedAt": "2022-02-07T10:52:44.156Z", + "environment": { + "sys": { + "id": "master", + "type": "Link", + "linkType": "Environment" + } + }, + "publishedVersion": 5, + "publishedAt": "2022-02-07T10:52:44.156Z", + "firstPublishedAt": "2022-02-07T10:52:44.156Z", + "createdBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "updatedBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "publishedCounter": 1, + "version": 6, + "publishedBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "contentType": { + "sys": { + "type": "Link", + "linkType": "ContentType", + "id": "landingPage" + } + } + }, + "fields": { + "title": { + "en-US": "Home Page" + }, + "slug": { + "en-US": "home-page" + }, + "headline": { + "en-US": "Welcome to the Jumpstart Shop" + }, + "sections": { + "en-US": [ + { + "sys": { + "type": "Link", + "linkType": "Entry", + "id": "setlRNA7yYQQ1COtVvQYH" + } + }, + { + "sys": { + "type": "Link", + "linkType": "Entry", + "id": "7Dic3an7QMyPet2PIErkwI" + } + } + ] + } + } + } + ], + "assets": [ + { + "metadata": { + "tags": [ + ] + }, + "sys": { + "space": { + "sys": { + "type": "Link", + "linkType": "Space", + "id": "hg94h980vf1n" + } + }, + "id": "4KLpxtqb8Lv4WIVjPF3JVS", + "type": "Asset", + "createdAt": "2022-01-05T13:58:51.243Z", + "updatedAt": "2022-01-21T12:23:35.070Z", + "environment": { + "sys": { + "id": "master", + "type": "Link", + "linkType": "Environment" + } + }, + "publishedVersion": 8, + "publishedAt": "2022-01-21T12:23:35.070Z", + "firstPublishedAt": "2022-01-05T14:02:05.685Z", + "createdBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "updatedBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "publishedCounter": 2, + "version": 9, + "publishedBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + } + }, + "fields": { + "title": { + "en-US": "Jim's legendary coffee mug" + }, + "description": { + "en-US": "" + }, + "file": { + "en-US": { + "url": "//images.ctfassets.net/hg94h980vf1n/4KLpxtqb8Lv4WIVjPF3JVS/8fd4899872e6b11bce9954aebcec63a8/jim-s_mug_1920_1080.png", + "details": { + "size": 413953, + "image": { + "width": 1920, + "height": 1080 + } + }, + "fileName": "jim-s mug_1920_1080.png", + "contentType": "image/png" + } + } + } + }, + { + "metadata": { + "tags": [ + ] + }, + "sys": { + "space": { + "sys": { + "type": "Link", + "linkType": "Space", + "id": "hg94h980vf1n" + } + }, + "id": "73OYdjzfQ0XMkJQDanmbON", + "type": "Asset", + "createdAt": "2022-01-21T12:13:43.328Z", + "updatedAt": "2022-01-21T12:14:49.915Z", + "environment": { + "sys": { + "id": "master", + "type": "Link", + "linkType": "Environment" + } + }, + "publishedVersion": 4, + "publishedAt": "2022-01-21T12:14:49.915Z", + "firstPublishedAt": "2022-01-21T12:14:49.915Z", + "createdBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "updatedBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "publishedCounter": 1, + "version": 5, + "publishedBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + } + }, + "fields": { + "title": { + "en-US": "Amelia's CORE Concept Hoodie" + }, + "description": { + "en-US": "" + }, + "file": { + "en-US": { + "url": "//images.ctfassets.net/hg94h980vf1n/73OYdjzfQ0XMkJQDanmbON/8077ee9fc4f1ba20bed4f11d6fa57dcd/7.png", + "details": { + "size": 710898, + "image": { + "width": 1920, + "height": 1080 + } + }, + "fileName": "7.png", + "contentType": "image/png" + } + } + } + }, + { + "metadata": { + "tags": [ + ] + }, + "sys": { + "space": { + "sys": { + "type": "Link", + "linkType": "Space", + "id": "hg94h980vf1n" + } + }, + "id": "28DkOvL9MKuYpDObbXNtPT", + "type": "Asset", + "createdAt": "2022-01-21T12:15:07.078Z", + "updatedAt": "2022-01-21T12:15:28.263Z", + "environment": { + "sys": { + "id": "master", + "type": "Link", + "linkType": "Environment" + } + }, + "publishedVersion": 4, + "publishedAt": "2022-01-21T12:15:28.263Z", + "firstPublishedAt": "2022-01-21T12:15:28.263Z", + "createdBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "updatedBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "publishedCounter": 1, + "version": 5, + "publishedBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + } + }, + "fields": { + "title": { + "en-US": "Amelia's CORE Concept Hoodie" + }, + "file": { + "en-US": { + "url": "//images.ctfassets.net/hg94h980vf1n/28DkOvL9MKuYpDObbXNtPT/db105dada1a1a7b0c52a29b52b7db827/6.png", + "details": { + "size": 2264973, + "image": { + "width": 1920, + "height": 1080 + } + }, + "fileName": "6.png", + "contentType": "image/png" + } + } + } + } + ], + "locales": [ + { + "name": "English (United States)", + "code": "en-US", + "fallbackCode": null, + "default": true, + "contentManagementApi": true, + "contentDeliveryApi": true, + "optional": false, + "sys": { + "type": "Locale", + "id": "6F9lm58KPyXKiUorUQZ17a", + "version": 1, + "space": { + "sys": { + "type": "Link", + "linkType": "Space", + "id": "hg94h980vf1n" + } + }, + "environment": { + "sys": { + "type": "Link", + "linkType": "Environment", + "id": "master", + "uuid": "a65e75ad-a9f0-4dfc-a750-847ec86d5af2" + } + }, + "createdBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "createdAt": "2022-01-05T11:52:17Z", + "updatedBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "updatedAt": "2022-01-05T11:52:17Z" + } + } + ], + "webhooks": [ + ], + "roles": [ + { + "name": "Author", + "description": "Allows editing of content", + "policies": [ + { + "effect": "allow", + "actions": [ + "create" + ], + "constraint": { + "and": [ + { + "equals": [ + { + "doc": "sys.type" + }, + "Entry" + ] + } + ] + } + }, + { + "effect": "allow", + "actions": [ + "read" + ], + "constraint": { + "and": [ + { + "equals": [ + { + "doc": "sys.type" + }, + "Entry" + ] + } + ] + } + }, + { + "effect": "allow", + "actions": [ + "update" + ], + "constraint": { + "and": [ + { + "equals": [ + { + "doc": "sys.type" + }, + "Entry" + ] + } + ] + } + }, + { + "effect": "allow", + "actions": [ + "create" + ], + "constraint": { + "and": [ + { + "equals": [ + { + "doc": "sys.type" + }, + "Asset" + ] + } + ] + } + }, + { + "effect": "allow", + "actions": [ + "read" + ], + "constraint": { + "and": [ + { + "equals": [ + { + "doc": "sys.type" + }, + "Asset" + ] + } + ] + } + }, + { + "effect": "allow", + "actions": [ + "update" + ], + "constraint": { + "and": [ + { + "equals": [ + { + "doc": "sys.type" + }, + "Asset" + ] + } + ] + } + } + ], + "permissions": { + "ContentModel": [ + "read" + ], + "Settings": [ + ], + "ContentDelivery": [ + ], + "Environments": [ + ], + "EnvironmentAliases": [ + ], + "Tags": [ + ] + }, + "sys": { + "type": "Role", + "id": "6L56a2cBXYzggRXa5jtDaE", + "version": 0, + "space": { + "sys": { + "type": "Link", + "linkType": "Space", + "id": "hg94h980vf1n" + } + }, + "createdBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "createdAt": "2022-01-05T11:52:22Z", + "updatedBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "updatedAt": "2022-01-05T11:52:22Z" + } + }, + { + "name": "Editor", + "description": "Allows editing, publishing and archiving of content", + "policies": [ + { + "effect": "allow", + "actions": "all", + "constraint": { + "and": [ + { + "equals": [ + { + "doc": "sys.type" + }, + "Entry" + ] + } + ] + } + }, + { + "effect": "allow", + "actions": "all", + "constraint": { + "and": [ + { + "equals": [ + { + "doc": "sys.type" + }, + "Asset" + ] + } + ] + } + } + ], + "permissions": { + "ContentModel": [ + "read" + ], + "Settings": [ + ], + "ContentDelivery": [ + ], + "Environments": [ + ], + "EnvironmentAliases": [ + ], + "Tags": [ + ] + }, + "sys": { + "type": "Role", + "id": "6L5FckXhnLvpHAspQ2FEaQ", + "version": 0, + "space": { + "sys": { + "type": "Link", + "linkType": "Space", + "id": "hg94h980vf1n" + } + }, + "createdBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "createdAt": "2022-01-05T11:52:22Z", + "updatedBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "updatedAt": "2022-01-05T11:52:22Z" + } + }, + { + "name": "Freelancer", + "description": "Allows only editing of content they created themselves", + "policies": [ + { + "effect": "allow", + "actions": [ + "create" + ], + "constraint": { + "and": [ + { + "equals": [ + { + "doc": "sys.type" + }, + "Entry" + ] + } + ] + } + }, + { + "effect": "allow", + "actions": [ + "create" + ], + "constraint": { + "and": [ + { + "equals": [ + { + "doc": "sys.type" + }, + "Asset" + ] + } + ] + } + }, + { + "effect": "allow", + "actions": [ + "read" + ], + "constraint": { + "and": [ + { + "equals": [ + { + "doc": "sys.type" + }, + "Entry" + ] + }, + { + "equals": [ + { + "doc": "sys.createdBy.sys.id" + }, + "User.current()" + ] + } + ] + } + }, + { + "effect": "allow", + "actions": [ + "update" + ], + "constraint": { + "and": [ + { + "equals": [ + { + "doc": "sys.type" + }, + "Entry" + ] + }, + { + "equals": [ + { + "doc": "sys.createdBy.sys.id" + }, + "User.current()" + ] + }, + { + "paths": [ + { + "doc": "fields.%.%" + } + ] + } + ] + } + }, + { + "effect": "allow", + "actions": [ + "delete" + ], + "constraint": { + "and": [ + { + "equals": [ + { + "doc": "sys.type" + }, + "Entry" + ] + }, + { + "equals": [ + { + "doc": "sys.createdBy.sys.id" + }, + "User.current()" + ] + } + ] + } + }, + { + "effect": "allow", + "actions": [ + "read" + ], + "constraint": { + "and": [ + { + "equals": [ + { + "doc": "sys.type" + }, + "Asset" + ] + }, + { + "equals": [ + { + "doc": "sys.createdBy.sys.id" + }, + "User.current()" + ] + } + ] + } + }, + { + "effect": "allow", + "actions": [ + "update" + ], + "constraint": { + "and": [ + { + "equals": [ + { + "doc": "sys.type" + }, + "Asset" + ] + }, + { + "equals": [ + { + "doc": "sys.createdBy.sys.id" + }, + "User.current()" + ] + }, + { + "paths": [ + { + "doc": "fields.%.%" + } + ] + } + ] + } + }, + { + "effect": "allow", + "actions": [ + "delete" + ], + "constraint": { + "and": [ + { + "equals": [ + { + "doc": "sys.type" + }, + "Asset" + ] + }, + { + "equals": [ + { + "doc": "sys.createdBy.sys.id" + }, + "User.current()" + ] + } + ] + } + } + ], + "permissions": { + "ContentModel": [ + "read" + ], + "Settings": [ + ], + "ContentDelivery": [ + ], + "Environments": [ + ], + "EnvironmentAliases": [ + ], + "Tags": [ + ] + }, + "sys": { + "type": "Role", + "id": "6L6hPEXzvzNo6A13URYpbq", + "version": 0, + "space": { + "sys": { + "type": "Link", + "linkType": "Space", + "id": "hg94h980vf1n" + } + }, + "createdBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "createdAt": "2022-01-05T11:52:22Z", + "updatedBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "updatedAt": "2022-01-05T11:52:22Z" + } + }, + { + "name": "Translator", + "description": "Allows editing of localized fields in the specified language", + "policies": [ + { + "effect": "allow", + "actions": [ + "read" + ], + "constraint": { + "and": [ + { + "equals": [ + { + "doc": "sys.type" + }, + "Entry" + ] + } + ] + } + }, + { + "effect": "allow", + "actions": [ + "read" + ], + "constraint": { + "and": [ + { + "equals": [ + { + "doc": "sys.type" + }, + "Asset" + ] + } + ] + } + }, + { + "effect": "allow", + "actions": [ + "update" + ], + "constraint": { + "and": [ + { + "equals": [ + { + "doc": "sys.type" + }, + "Entry" + ] + }, + { + "paths": [ + { + "doc": "fields.%.%" + } + ] + } + ] + } + }, + { + "effect": "allow", + "actions": [ + "update" + ], + "constraint": { + "and": [ + { + "equals": [ + { + "doc": "sys.type" + }, + "Asset" + ] + }, + { + "paths": [ + { + "doc": "fields.%.%" + } + ] + } + ] + } + } + ], + "permissions": { + "ContentModel": [ + "read" + ], + "Settings": [ + ], + "ContentDelivery": [ + ], + "Environments": [ + ], + "EnvironmentAliases": [ + ], + "Tags": [ + ] + }, + "sys": { + "type": "Role", + "id": "6L76n5QNhGohXQr1zscwYg", + "version": 0, + "space": { + "sys": { + "type": "Link", + "linkType": "Space", + "id": "hg94h980vf1n" + } + }, + "createdBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "createdAt": "2022-01-05T11:52:22Z", + "updatedBy": { + "sys": { + "type": "Link", + "linkType": "User", + "id": "0LxJB4LBv007oHgJD7WvJN" + } + }, + "updatedAt": "2022-01-05T11:52:22Z" + } + } + ] +} \ No newline at end of file diff --git a/styles/globals.css b/styles/globals.css index e5e2dcc..33d77fb 100644 --- a/styles/globals.css +++ b/styles/globals.css @@ -1,16 +1,18 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; html, body { - padding: 0; - margin: 0; - font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, - Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; + padding: 0; + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; } a { - color: inherit; - text-decoration: none; + color: inherit; + text-decoration: none; } * { - box-sizing: border-box; -} + box-sizing: border-box; +} \ No newline at end of file diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 0000000..e89aa41 --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,46 @@ +const colors = require("tailwindcss/colors"); +module.exports = { + content: [ + "./pages/**/*.{js,ts,jsx,tsx}", + "./components/**/*.{js,ts,jsx,tsx}", + "./layouts/**/*.{js,ts,jsx,tsx}", + "./HOC/**/*.{js,ts,jsx,tsx}", + ], + theme: { + colors: { + transparent: "transparent", + current: "currentColor", + black: colors.black, + white: colors.white, + gray: colors.trueGray, + indigo: colors.indigo, + red: colors.rose, + yellow: colors.amber, + blau: "#0033A3", + blau2: "#003CBE", + blau3: "#0050D5", + blau4: "#0065EB", + blau5: "#007CFF", + blau6: "#1A8CFF", + blau7: "#47A1FF", + blau8: "#67B3FF", + blau9: "#8BCBFF", + blau10: "#0065EB", + blau11: "#E9F7FF", + gelb: "#FCBB00", + gelb2: "#FFDA00", + gelb3: "#FFF575", + rot: "#EB5A68", + neuter: "#2A3039", + }, + extend: { + fontFamily: { + AvenirNextLTW02: ["AvenirNextLTW02-Regular", "sans-serif"], + AvenirNextLTitalic: ["AvenirNextLTW02-It", "sans-serif"], + AvenirNextLTDemi: ["AvenirNextLTW02-Demi", "sans-serif"], + AvenirNextLTBold: ["AvenirNextLTW02-Bold", "sans-serif"], + }, + }, + }, + plugins: [], +}; \ No newline at end of file