From a131bb36525bf85eaee5cdb65542289cdfcff36e Mon Sep 17 00:00:00 2001 From: Amruth Pillai Date: Tue, 8 Mar 2022 22:57:47 +0100 Subject: [PATCH] feat(client): add language selector, language detector and privacy/tos pages --- .changeset/config.json | 11 - .env.example | 8 +- .github/workflows/docker-build-push.yml | 5 +- CHANGELOG.md | 7 - client/Dockerfile | 4 +- .../build/RightSidebar/sections/Settings.tsx | 19 +- client/config/languages.ts | 5 + client/next-i18next.config.js | 3 +- client/package.json | 9 +- client/pages/index.tsx | 2 +- client/pages/meta/privacy.tsx | 125 ++ client/pages/meta/service.tsx | 107 ++ client/public/locales/en/landing.json | 2 +- client/public/locales/kn/builder.json | 351 ------ client/public/locales/kn/common.json | 27 - client/public/locales/kn/dashboard.json | 25 - client/public/locales/kn/landing.json | 34 - client/public/locales/kn/modals.json | 134 --- client/public/locales/ta/builder.json | 351 ------ client/public/locales/ta/dashboard.json | 25 - client/public/locales/ta/landing.json | 34 - client/public/locales/ta/modals.json | 134 --- client/store/build/buildSlice.ts | 14 +- client/tailwind.config.js | 2 + client/wrappers/LocaleWrapper.tsx | 22 + client/wrappers/ThemeWrapper.tsx | 12 +- package.json | 1 - pnpm-lock.yaml | 1038 ++--------------- schema/src/metadata.ts | 1 - server/Dockerfile | 4 +- server/package.json | 6 +- server/src/resume/data/defaultState.ts | 1 - 32 files changed, 423 insertions(+), 2100 deletions(-) delete mode 100644 .changeset/config.json delete mode 100644 CHANGELOG.md create mode 100644 client/pages/meta/privacy.tsx create mode 100644 client/pages/meta/service.tsx delete mode 100644 client/public/locales/kn/builder.json delete mode 100644 client/public/locales/kn/common.json delete mode 100644 client/public/locales/kn/dashboard.json delete mode 100644 client/public/locales/kn/landing.json delete mode 100644 client/public/locales/kn/modals.json delete mode 100644 client/public/locales/ta/builder.json delete mode 100644 client/public/locales/ta/dashboard.json delete mode 100644 client/public/locales/ta/landing.json delete mode 100644 client/public/locales/ta/modals.json diff --git a/.changeset/config.json b/.changeset/config.json deleted file mode 100644 index 7602f50d..00000000 --- a/.changeset/config.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "$schema": "https://unpkg.com/@changesets/config@1.7.0/schema.json", - "changelog": "@changesets/cli/changelog", - "commit": false, - "fixed": [], - "linked": [], - "ignore": [], - "baseBranch": "v3", - "access": "restricted", - "updateInternalDependencies": "patch" -} diff --git a/.env.example b/.env.example index 9bef5511..57df0d2b 100644 --- a/.env.example +++ b/.env.example @@ -23,7 +23,7 @@ GOOGLE_CLIENT_SECRET=change-me GOOGLE_API_KEY=change-me # SendGrid (Optional) -SENDGRID_API_KEY=change-me -SENDGRID_FORGOT_PASSWORD_TEMPLATE_ID=change-me -SENDGRID_FROM_NAME="Reactive Resume" -SENDGRID_FROM_EMAIL="noreply@rxresu.me" \ No newline at end of file +SENDGRID_API_KEY= +SENDGRID_FORGOT_PASSWORD_TEMPLATE_ID= +SENDGRID_FROM_NAME= +SENDGRID_FROM_EMAIL= \ No newline at end of file diff --git a/.github/workflows/docker-build-push.yml b/.github/workflows/docker-build-push.yml index 4a602a95..80543701 100644 --- a/.github/workflows/docker-build-push.yml +++ b/.github/workflows/docker-build-push.yml @@ -1,9 +1,8 @@ name: Build and Push Docker Image on: - push: - branches: - - v3 + release: + types: [published] jobs: docker_client: diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index e4e074cf..00000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,7 +0,0 @@ -# Changelog | Reactive Resume - -## 3.0.0 - -### Major Changes - -- Initial Release of Reactive Resume v3 diff --git a/client/Dockerfile b/client/Dockerfile index 9d1de4ba..95db39b1 100644 --- a/client/Dockerfile +++ b/client/Dockerfile @@ -34,8 +34,8 @@ WORKDIR /app RUN apk add --no-cache curl \ && curl -f https://get.pnpm.io/v6.16.js | node - add --global pnpm -COPY --from=builder /app/pnpm-*.yaml . -COPY --from=builder /app/package.json . +COPY --from=builder /app/pnpm-*.yaml ./ +COPY --from=builder /app/package.json ./ COPY --from=builder /app/client/.next ./client/.next COPY --from=builder /app/client/public ./client/public COPY --from=builder /app/client/next.config.js ./client/next.config.js diff --git a/client/components/build/RightSidebar/sections/Settings.tsx b/client/components/build/RightSidebar/sections/Settings.tsx index 1403cb40..d1daedb1 100644 --- a/client/components/build/RightSidebar/sections/Settings.tsx +++ b/client/components/build/RightSidebar/sections/Settings.tsx @@ -19,11 +19,11 @@ import { useMutation } from 'react-query'; import Heading from '@/components/shared/Heading'; import ThemeSwitch from '@/components/shared/ThemeSwitch'; -import { Language, languageMap, languages } from '@/config/languages'; +import { Language, languages } from '@/config/languages'; import { ServerError } from '@/services/axios'; import queryClient from '@/services/react-query'; import { loadSampleData, LoadSampleDataParams, resetResume, ResetResumeParams } from '@/services/resume'; -import { setTheme, togglePageBreakLine, togglePageOrientation } from '@/store/build/buildSlice'; +import { setLanguage, setTheme, togglePageBreakLine, togglePageOrientation } from '@/store/build/buildSlice'; import { useAppDispatch, useAppSelector } from '@/store/hooks'; import { setResumeState } from '@/store/resume/resumeSlice'; import { dateFormatOptions } from '@/utils/date'; @@ -35,13 +35,13 @@ const Settings = () => { const resume = useAppSelector((state) => state.resume); const theme = useAppSelector((state) => state.build.theme); + const language = useAppSelector((state) => state.build.language); const breakLine = useAppSelector((state) => state.build.page.breakLine); const orientation = useAppSelector((state) => state.build.page.orientation); const id: number = useMemo(() => get(resume, 'id'), [resume]); const slug: string = useMemo(() => get(resume, 'slug'), [resume]); const username: string = useMemo(() => get(resume, 'user.username'), [resume]); - const language: string = useMemo(() => get(resume, 'metadata.language'), [resume]); const dateConfig: DateConfig = useMemo(() => get(resume, 'metadata.date'), [resume]); const isDarkMode = useMemo(() => theme === 'dark', [theme]); @@ -58,8 +58,9 @@ const Settings = () => { const handleChangeDateFormat = (value: string | null) => dispatch(setResumeState({ path: 'metadata.date.format', value })); - const handleChangeLanguage = (value: Language | null) => - dispatch(setResumeState({ path: 'metadata.language', value: value?.code })); + const handleChangeLanguage = (value: Language | null) => { + dispatch(setLanguage({ language: value?.code || 'en' })); + }; const handleLoadSampleData = async () => { await loadSampleDataMutation({ id }); @@ -121,7 +122,10 @@ const Settings = () => { disableClearable className="my-2 w-full" options={languages} - value={languageMap[language]} + value={language} + isOptionEqualToValue={(a, b) => a.code === b.code} + onChange={(_, value) => handleChangeLanguage(value)} + renderInput={(params) => } getOptionLabel={(language) => { if (language.localName) { return `${language.name} (${language.localName})`; @@ -129,9 +133,6 @@ const Settings = () => { return language.name; }} - isOptionEqualToValue={(a, b) => a.code === b.code} - onChange={(_, value) => handleChangeLanguage(value)} - renderInput={(params) => } /> diff --git a/client/config/languages.ts b/client/config/languages.ts index 258651ba..8bc92ec0 100644 --- a/client/config/languages.ts +++ b/client/config/languages.ts @@ -9,6 +9,11 @@ export const languages: Language[] = [ code: 'en', name: 'English', }, + { + code: 'ta', + name: 'Tamil', + localName: 'தமிழ்', + }, ]; export const languageMap: Record = languages.reduce( diff --git a/client/next-i18next.config.js b/client/next-i18next.config.js index 2b286074..707c1451 100644 --- a/client/next-i18next.config.js +++ b/client/next-i18next.config.js @@ -3,9 +3,8 @@ const path = require('path'); const i18nConfig = { i18n: { defaultLocale: 'en', - locales: ['en'], + locales: ['en', 'ta'], }, - debug: false, nsSeparator: '.', localePath: path.resolve('./public/locales'), ns: ['common', 'modals', 'landing', 'dashboard', 'builder'], diff --git a/client/package.json b/client/package.json index 6e00535a..2fbf04d5 100644 --- a/client/package.json +++ b/client/package.json @@ -13,9 +13,9 @@ "@emotion/styled": "^11.8.1", "@hookform/resolvers": "2.8.8", "@monaco-editor/react": "^4.3.1", - "@mui/icons-material": "^5.4.4", - "@mui/lab": "^5.0.0-alpha.71", - "@mui/material": "^5.4.4", + "@mui/icons-material": "^5.5.0", + "@mui/lab": "^5.0.0-alpha.72", + "@mui/material": "^5.5.0", "@reduxjs/toolkit": "^1.8.0", "axios": "^0.26.0", "clsx": "^1.1.1", @@ -54,6 +54,7 @@ "devDependencies": { "@babel/core": "^7.17.5", "@reactive-resume/schema": "workspace:*", + "@tailwindcss/typography": "^0.5.2", "@types/downloadjs": "^1.4.3", "@types/lodash": "^4.14.179", "@types/node": "17.0.21", @@ -66,7 +67,7 @@ "autoprefixer": "^10.4.2", "eslint": "^8.10.0", "eslint-config-next": "12.1.0", - "postcss": "^8.4.7", + "postcss": "^8.4.8", "prettier": "^2.5.1", "sass": "^1.49.9", "tailwindcss": "^3.0.23", diff --git a/client/pages/index.tsx b/client/pages/index.tsx index a6c31877..11e5d789 100644 --- a/client/pages/index.tsx +++ b/client/pages/index.tsx @@ -87,8 +87,8 @@ const Home: NextPage = () => {
  • {t('landing.features.list.free')}
  • -
  • {t('landing.features.list.ads')}
  • {t('landing.features.list.tracking')}
  • +
  • {t('landing.features.list.ads')}
  • {t('landing.features.list.languages')}
  • {t('landing.features.list.import')}
  • {t('landing.features.list.export')}
  • diff --git a/client/pages/meta/privacy.tsx b/client/pages/meta/privacy.tsx new file mode 100644 index 00000000..c5ea48da --- /dev/null +++ b/client/pages/meta/privacy.tsx @@ -0,0 +1,125 @@ +import { NextPage } from 'next'; + +const PrivacyPolicy: NextPage = () => ( +
    +

    Privacy Policy

    + +

    + Amruth Pillai built Reactive Resume as a free and open source app. This service is provided by Amruth Pillai at no + cost and is intended for use as is. +

    + +

    + This page is used to inform visitors regarding my policies with the collection, use, and disclosure of Personal + Information if anyone decided to use my Service. +

    + +

    + If you choose to use my Service, then you agree to the collection and use of information in relation to this + policy. The Personal Information that I collect is used for providing and improving the Service. I will not use or + share your information with anyone except as described in this Privacy Policy. +

    + +

    + The terms used in this Privacy Policy have the same meanings as in our Terms and Conditions, which are accessible + at Reactive Resume unless otherwise defined in this Privacy Policy. +

    + +

    Information Collection and Use

    + +

    + For a better experience, while using our Service, I may require you to provide us with certain personally + identifiable information, including but not limited to Name, Email Address, Resume Information. The information + that I request will be retained on your device and is not collected by me in any way. +

    + +

    Log Data

    + +

    + I want to inform you that whenever you use my Service, in a case of an error in the app I collect data and + information (through third-party products) on your phone called Log Data. This Log Data may include information + such as your device Internet Protocol (“IP”) address, device name, operating system version, the configuration of + the app when utilizing my Service, the time and date of your use of the Service, and other statistics. +

    + +

    Cookies

    + +

    + Cookies are files with a small amount of data that are commonly used as anonymous unique identifiers. These are + sent to your browser from the websites that you visit and are stored on your device's internal memory. +

    + +

    + This Service does not use these “cookies” explicitly. However, the app may use third-party code and libraries that + use “cookies” to collect information and improve their services. You have the option to either accept or refuse + these cookies and know when a cookie is being sent to your device. If you choose to refuse our cookies, you may + not be able to use some portions of this Service. +

    + +

    Service Providers

    + +

    I may employ third-party companies and individuals due to the following reasons:

    + +
      +
    • To facilitate our Service;
    • +
    • To provide the Service on our behalf;
    • +
    • To perform Service-related services; or
    • +
    • To assist us in analyzing how our Service is used.
    • +
    +

    + I want to inform users of this Service that these third parties have access to their Personal Information. The + reason is to perform the tasks assigned to them on our behalf. However, they are obligated not to disclose or use + the information for any other purpose. +

    + +

    Security

    + +

    + I value your trust in providing us your Personal Information, thus we are striving to use commercially acceptable + means of protecting it. But remember that no method of transmission over the internet, or method of electronic + storage is 100% secure and reliable, and I cannot guarantee its absolute security. +

    + +

    Links to Other Sites

    + +

    + This Service may contain links to other sites. If you click on a third-party link, you will be directed to that + site. Note that these external sites are not operated by me. Therefore, I strongly advise you to review the + Privacy Policy of these websites. I have no control over and assume no responsibility for the content, privacy + policies, or practices of any third-party sites or services. +

    + +

    Children’s Privacy

    + +
    +

    + I do not knowingly collect personally identifiable information from children. I encourage all children to never + submit any personally identifiable information through the Application and/or Services. I encourage parents and + legal guardians to monitor their children's Internet usage and to help enforce this Policy by instructing + their children never to provide personally identifiable information through the Application and/or Services + without their permission. If you have reason to believe that a child has provided personally identifiable + information to us through the Application and/or Services, please contact us. You must also be at least 16 years + of age to consent to the processing of your personally identifiable information in your country (in some + countries we may allow your parent or guardian to do so on your behalf). +

    +
    + +

    Changes to This Privacy Policy

    + +

    + I may update our Privacy Policy from time to time. Thus, you are advised to review this page periodically for any + changes. I will notify you of any changes by posting the new Privacy Policy on this page. +

    + +

    This policy is effective as of 2022-01-08

    + +

    Contact Us

    + +

    + If you have any questions or suggestions about my Privacy Policy, do not hesitate to contact me at + im.amruth@gmail.com. +

    +
    +); + +export default PrivacyPolicy; diff --git a/client/pages/meta/service.tsx b/client/pages/meta/service.tsx new file mode 100644 index 00000000..766d3b8b --- /dev/null +++ b/client/pages/meta/service.tsx @@ -0,0 +1,107 @@ +import { NextPage } from 'next'; + +const TermsOfService: NextPage = () => ( +
    +

    Terms of Service

    + +

    + + By downloading or using the app, these terms will automatically apply to you - you should make sure therefore + that you read them carefully before using the app. You're not allowed to copy or modify the app, any part + of the app, or our trademarks in any way. You're not allowed to attempt to extract the source code of the + app, and you also shouldn't try to translate the app into other languages or make derivative versions. The + app itself, and all the trademarks, copyright, database rights, and other intellectual property rights related + to it, still belong to Amruth Pillai. + +

    + +

    + + Do whatever you want, governed by the{' '} + + MIT license + + . + +

    + +

    + Amruth Pillai is committed to ensuring that the app is as useful and efficient as possible. For that reason, we + reserve the right to make changes to the app or to charge for its services, at any time and for any reason. We + will never charge you for the app or its services without making it very clear to you exactly what you're + paying for. +

    + +

    + The Reactive Resume app stores and processes personal data that you have provided to us, to provide my Service. + It's your responsibility to keep your phone and access to the app secure. We therefore recommend that you do + not jailbreak or root your phone, which is the process of removing software restrictions and limitations imposed + by the official operating system of your device. It could make your phone vulnerable to malware/viruses/malicious + programs, compromise your phone's security features and it could mean that the Reactive Resume app won't + work properly or at all. +

    + +

    + You should be aware that there are certain things that Amruth Pillai will not take responsibility for. Certain + functions of the app will require the app to have an active internet connection. The connection can be Wi-Fi or + provided by your mobile network provider, but Amruth Pillai cannot take responsibility for the app not working at + full functionality if you don't have access to Wi-Fi, and you don't have any of your data allowance + left. +

    + +

    + +

    + If you're using the app outside of an area with Wi-Fi, you should remember that the terms of the agreement + with your mobile network provider will still apply. As a result, you may be charged by your mobile provider for + the cost of data for the duration of the connection while accessing the app, or other third-party charges. In + using the app, you're accepting responsibility for any such charges, including roaming data charges if you + use the app outside of your home territory (i.e. region or country) without turning off data roaming. If you are + not the bill payer for the device on which you're using the app, please be aware that we assume that you have + received permission from the bill payer for using the app. +

    + +

    + Along the same lines, Amruth Pillai cannot always take responsibility for the way you use the app i.e. You need to + make sure that your device stays charged – if it runs out of battery and you can't turn it on to avail the + Service, Amruth Pillai cannot accept responsibility. +

    + +

    + With respect to Amruth Pillai's responsibility for your use of the app, when you're using the app, + it's important to bear in mind that although we endeavor to ensure that it is updated and correct at all + times, we do rely on third parties to provide information to us so that we can make it available to you. Amruth + Pillai accepts no liability for any loss, direct or indirect, you experience as a result of relying wholly on this + functionality of the app. +

    + +

    + At some point, we may wish to update the app. The app is currently available on Android – the requirements for the + system(and for any additional systems we decide to extend the availability of the app to) may change, and + you'll need to download the updates if you want to keep using the app. Amruth Pillai does not promise that it + will always update the app so that it is relevant to you and/or works with the Android version that you have + installed on your device. However, you promise to always accept updates to the application when offered to you, We + may also wish to stop providing the app, and may terminate use of it at any time without giving notice of + termination to you. Unless we tell you otherwise, upon any termination, (a) the rights and licenses granted to you + in these terms will end; (b) you must stop using the app, and (if needed) delete it from your device. +

    + +

    Changes to Terms of Service

    + +

    + I may update our Terms of Service from time to time. Thus, you are advised to review this page periodically for + any changes. I will notify you of any changes by posting the new Terms of Service on this page. +

    + +

    These terms of service are effective as of 2022-01-08

    + +

    Contact Us

    + +

    + If you have any questions or suggestions about the terms of service, do not hesitate to contact me at + im.amruth@gmail.com. +

    +
    +); + +export default TermsOfService; diff --git a/client/public/locales/en/landing.json b/client/public/locales/en/landing.json index 7b79d8da..b6412312 100644 --- a/client/public/locales/en/landing.json +++ b/client/public/locales/en/landing.json @@ -14,7 +14,7 @@ "import": "Import data from LinkedIn, JSON Resume", "languages": "Accessible in multiple languages", "more": "And much more exciting features, <1>read all about it here", - "tracking": "No Tracking (no 🍪s too)" + "tracking": "No Tracking" } }, "links": { diff --git a/client/public/locales/kn/builder.json b/client/public/locales/kn/builder.json deleted file mode 100644 index 6dc884cb..00000000 --- a/client/public/locales/kn/builder.json +++ /dev/null @@ -1,351 +0,0 @@ -{ - "common": { - "actions": { - "add": "Add New {{token}}", - "delete": "Delete {{token}}", - "edit": "Edit {{token}}" - }, - "columns": { - "heading": "Columns", - "tooltip": "Change number of columns" - }, - "form": { - "date": { - "label": "Date" - }, - "description": { - "label": "Description" - }, - "email": { - "label": "Email Address" - }, - "end-date": { - "help-text": "Leave this field blank, if still present", - "label": "End Date" - }, - "keywords": { - "label": "Keywords" - }, - "level": { - "label": "Level" - }, - "levelNum": { - "label": "Level (Number)" - }, - "name": { - "label": "Name" - }, - "phone": { - "label": "Phone Number" - }, - "position": { - "label": "Position" - }, - "start-date": { - "label": "Start Date" - }, - "subtitle": { - "label": "Subtitle" - }, - "summary": { - "label": "Summary" - }, - "title": { - "label": "Title" - }, - "url": { - "label": "Website" - } - }, - "glossary": { - "page": "Page" - }, - "list": { - "empty-text": "This list is empty." - }, - "tooltip": { - "delete-section": "Delete Section", - "rename-section": "Rename Section", - "toggle-visibility": "Toggle Visibility" - } - }, - "controller": { - "tooltip": { - "center-artboard": "Center Artboard", - "copy-link": "Copy Link to Resume", - "export-pdf": "Export PDF", - "toggle-orientation": "Toggle Page Orientation", - "toggle-page-break-line": "Toggle Page Break Line", - "toggle-sidebars": "Toggle Sidebars", - "zoom-in": "Zoom In", - "zoom-out": "Zoom Out" - } - }, - "header": { - "menu": { - "delete": "Delete", - "duplicate": "Duplicate", - "rename": "Rename", - "share-link": "Share Link", - "tooltips": { - "delete": "Are you sure you want to delete this resume? This is an irreversible action.", - "share-link": "You need to change the visibility of your resume to public to make it visible to others." - } - } - }, - "leftSidebar": { - "sections": { - "awards": { - "form": { - "awarder": { - "label": "Awarder" - } - } - }, - "basics": { - "actions": { - "photo-filters": "Photo Filters" - }, - "heading": "Basics", - "headline": { - "label": "Headline" - }, - "name": { - "label": "Full Name" - }, - "photo-filters": { - "effects": { - "border": { - "label": "Border" - }, - "grayscale": { - "label": "Grayscale" - }, - "heading": "Effects" - }, - "shape": { - "heading": "Shape" - }, - "size": { - "heading": "Size (in px)" - } - }, - "photo-upload": { - "tooltip": { - "remove": "Remove Photo", - "upload": "Upload Photo" - } - } - }, - "certifications": { - "form": { - "issuer": { - "label": "Issuer" - } - } - }, - "education": { - "form": { - "area-study": { - "label": "Area of Study" - }, - "courses": { - "label": "Courses" - }, - "degree": { - "label": "Degree" - }, - "grade": { - "label": "Grade" - }, - "institution": { - "label": "Institution" - } - } - }, - "location": { - "address": { - "label": "Address" - }, - "city": { - "label": "City" - }, - "country": { - "label": "Country" - }, - "heading": "Location", - "postal-code": { - "label": "Postal Code" - }, - "region": { - "label": "Region" - } - }, - "profiles": { - "form": { - "network": { - "label": "Network" - }, - "username": { - "label": "Username" - } - }, - "heading": "Profiles", - "heading_one": "Profile" - }, - "publications": { - "form": { - "publisher": { - "label": "Publisher" - } - } - }, - "references": { - "form": { - "relationship": { - "label": "Relationship" - } - } - }, - "section": { - "heading": "Section" - }, - "volunteer": { - "form": { - "organization": { - "label": "Organization" - } - } - } - } - }, - "rightSidebar": { - "sections": { - "css": { - "heading": "Custom CSS" - }, - "export": { - "heading": "Export", - "json": { - "primary": "JSON", - "secondary": "Download a JSON version of your resume that can be imported back into Reactive Resume." - }, - "pdf": { - "loading": { - "primary": "Generating PDF", - "secondary": "Please wait as your PDF gets generated, this may take upto 15 seconds." - }, - "normal": { - "primary": "PDF", - "secondary": "Download a PDF of your resume that you can print and send out to your dream job. This file cannot be imported back for further editing." - } - } - }, - "layout": { - "heading": "Layout", - "tooltip": { - "reset-layout": "Reset Layout" - } - }, - "links": { - "bugs-features": { - "body": "Something stopping you from making a resume? Or do you have an amazing idea to add? Raise an issue on GitHub to get started.", - "button": "GitHub Issues", - "heading": "Bugs? Feature Requests?" - }, - "donate": { - "body": "If you liked using Reactive Resume, please consider donating as much as you can to the cause of keeping the app up and running, without ads and free forever.", - "button": "Buy me a coffee", - "heading": "Donate to Reactive Resume" - }, - "github": "Source Code", - "heading": "Links" - }, - "settings": { - "global": { - "date": { - "primary": "Date", - "secondary": "Date format to use across the app" - }, - "heading": "Global", - "language": { - "primary": "Language", - "secondary": "Display language to use across the app" - }, - "theme": { - "primary": "Theme" - } - }, - "heading": "Settings", - "page": { - "break-line": { - "primary": "Break Line", - "secondary": "Show a line on all pages to mark the height of an A4 page" - }, - "heading": "Page", - "orientation": { - "primary": "Orientation", - "secondary": "Whether to display pages horizontally or vertically" - } - }, - "resume": { - "heading": "Resume", - "reset": { - "primary": "Reset Everything", - "secondary": "Made too many mistakes? Click here to reset all changes and start from scratch. Be careful, this action cannot be reversed." - }, - "sample": { - "primary": "Load Sample Data", - "secondary": "Not sure where to begin? Click here to load some sample data to see how a complete resume looks like." - } - } - }, - "sharing": { - "heading": "Sharing", - "short-url": { - "label": "Prefer Short URL" - }, - "visibility": { - "subtitle": "Allow anyone with a link to view your resume", - "title": "Public" - } - }, - "templates": { - "heading": "Templates" - }, - "theme": { - "form": { - "background": { - "label": "Background" - }, - "primary": { - "label": "Primary" - }, - "text": { - "label": "Text" - } - }, - "heading": "Theme" - }, - "typography": { - "form": { - "font-family": { - "label": "Font Family" - }, - "font-size": { - "label": "Font Size" - } - }, - "heading": "Typography", - "widgets": { - "body": { - "label": "Body" - }, - "headings": { - "label": "Headings" - } - } - } - } - } -} diff --git a/client/public/locales/kn/common.json b/client/public/locales/kn/common.json deleted file mode 100644 index fe911ca0..00000000 --- a/client/public/locales/kn/common.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "avatar": { - "menu": { - "greeting": "Hello", - "logout": "Logout" - } - }, - "description": "Reactive Resume is a free and open source resume builder that's built to make the mundane tasks of creating, updating and sharing your resume as easy as 1, 2, 3.", - "footer": { - "credit": "A passion project by <1>Amruth Pillai", - "license": "By the community, for the community." - }, - "markdown": { - "help-text": "This section supports <1>markdown formatting." - }, - "subtitle": "A free and open source resume builder.", - "title": "Reactive Resume", - "toast": { - "error": { - "upload-file-size": "Please upload only files under 2 megabytes.", - "upload-photo-size": "Please upload only photos under 2 megabytes, preferrably square." - }, - "success": { - "resume-link-copied": "A link to your resume has been copied to your clipboard." - } - } -} diff --git a/client/public/locales/kn/dashboard.json b/client/public/locales/kn/dashboard.json deleted file mode 100644 index c998e786..00000000 --- a/client/public/locales/kn/dashboard.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "create-resume": { - "subtitle": "Start from scratch", - "title": "Create New Resume" - }, - "import-external": { - "subtitle": "LinkedIn, JSON Resume, Reactive Resume", - "title": "Import from External Sources" - }, - "resume": { - "menu": { - "delete": "Delete", - "duplicate": "Duplicate", - "open": "Open", - "rename": "Rename", - "share-link": "Share Link", - "tooltips": { - "delete": "Are you sure you want to delete this resume? This is an irreversible action.", - "share-link": "You need to change the visibility of your resume to public to make it visible to others." - } - }, - "timestamp": "Last updated {{timestamp}} ago" - }, - "title": "Dashboard" -} diff --git a/client/public/locales/kn/landing.json b/client/public/locales/kn/landing.json deleted file mode 100644 index 7b79d8da..00000000 --- a/client/public/locales/kn/landing.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "actions": { - "app": "Go to App", - "login": "Login", - "logout": "Logout", - "register": "Register" - }, - "features": { - "heading": "Features", - "list": { - "ads": "No Advertising", - "export": "Export your resume to JSON or PDF format", - "free": "Free, forever", - "import": "Import data from LinkedIn, JSON Resume", - "languages": "Accessible in multiple languages", - "more": "And much more exciting features, <1>read all about it here", - "tracking": "No Tracking (no 🍪s too)" - } - }, - "links": { - "heading": "Links", - "links": { - "donate": "Donate to Reactive Resume", - "github": "Source Code on GitHub" - } - }, - "screenshots": { - "heading": "Screenshots" - }, - "summary": { - "body": "Reactive Resume is a free and open source resume builder that's built to make the mundane tasks of creating, updating and sharing your resume as easy as 1, 2, 3. With this app, you can create multiple resumes, share them with recruiters or friends through a unique link and print it as a PDF, all for free, no ads, no tracking, without losing the integrity and privacy of your data.", - "heading": "Summary" - } -} diff --git a/client/public/locales/kn/modals.json b/client/public/locales/kn/modals.json deleted file mode 100644 index 02d3721e..00000000 --- a/client/public/locales/kn/modals.json +++ /dev/null @@ -1,134 +0,0 @@ -{ - "auth": { - "forgot-password": { - "actions": { - "send-email": "Send Reset Password Email" - }, - "body": "Just enter the email address associated with the account you would like to recover.", - "form": { - "email": { - "label": "Email Address" - } - }, - "heading": "Forgot your password?", - "help-text": "If the account exists, you will receive an email with a link to reset your password." - }, - "login": { - "actions": { - "login": "Login", - "login-google": "Login with Google" - }, - "body": "Please enter your username and password associated with your account to login and access, manage and share your resumes.", - "form": { - "password": { - "label": "Password" - }, - "username": { - "help-text": "You can also enter your email address", - "label": "Username" - } - }, - "heading": "Login to your account", - "recover-text": "In case you have forgotten your password, you can <1>recover your account here.", - "register-text": "If you don't have one, you can <1>create an account here." - }, - "register": { - "actions": { - "register": "Register" - }, - "body": "Please enter your personal information to create an account.", - "form": { - "confirm-password": { - "label": "Confirm Password" - }, - "email": { - "label": "Email Address" - }, - "name": { - "label": "Full Name" - }, - "password": { - "label": "Password" - }, - "username": { - "label": "Username" - } - }, - "heading": "Create an account", - "loginText": "If you already have an account, you can <1>login here." - }, - "reset-password": { - "actions": { - "set-password": "Set New Password" - }, - "body": "Enter a new password for your account.", - "form": { - "confirm-password": { - "label": "Confirm Password" - }, - "password": { - "label": "Password" - } - }, - "heading": "Reset your password" - } - }, - "dashboard": { - "create-resume": { - "actions": { - "create-resume": "Create Resume" - }, - "body": "Start building your resume by giving it a name. It could be in reference to the role you are applying for, or just your favorite snack.", - "form": { - "name": { - "label": "Name" - }, - "public": { - "label": "Is Publicly Accessible?" - }, - "slug": { - "label": "Slug" - } - }, - "heading": "Create a new resume" - }, - "import-external": { - "heading": "Import from External Sources", - "json-resume": { - "actions": { - "upload-json": "Upload JSON" - }, - "body": "If you have a <1>validated JSON Resume ready to go, you can use it to fast-track your development on Reactive Resume. Click the button below and upload a valid JSON file to begin.", - "heading": "Import From JSON Resume" - }, - "linkedin": { - "actions": { - "upload-archive": "Upload ZIP Archive" - }, - "body": "You can save time by exporting your data from LinkedIn and using it to auto-fill fields on Reactive Resume. Head on over to the <1>Data Privacy section on LinkedIn and request an archive of your data. Once it is available, upload the ZIP archive below.", - "heading": "Import From LinkedIn" - }, - "reactive-resume": { - "actions": { - "upload-json": "Upload JSON" - }, - "body": "If you have a JSON that was exported with the current version of Reactive Resume, you can import it back here to get an editable version again.", - "heading": "Import From Reactive Resume" - } - }, - "rename-resume": { - "actions": { - "rename-resume": "Rename Resume" - }, - "form": { - "name": { - "label": "Name" - }, - "slug": { - "label": "Slug" - } - }, - "heading": "Rename your resume" - } - } -} diff --git a/client/public/locales/ta/builder.json b/client/public/locales/ta/builder.json deleted file mode 100644 index 6dc884cb..00000000 --- a/client/public/locales/ta/builder.json +++ /dev/null @@ -1,351 +0,0 @@ -{ - "common": { - "actions": { - "add": "Add New {{token}}", - "delete": "Delete {{token}}", - "edit": "Edit {{token}}" - }, - "columns": { - "heading": "Columns", - "tooltip": "Change number of columns" - }, - "form": { - "date": { - "label": "Date" - }, - "description": { - "label": "Description" - }, - "email": { - "label": "Email Address" - }, - "end-date": { - "help-text": "Leave this field blank, if still present", - "label": "End Date" - }, - "keywords": { - "label": "Keywords" - }, - "level": { - "label": "Level" - }, - "levelNum": { - "label": "Level (Number)" - }, - "name": { - "label": "Name" - }, - "phone": { - "label": "Phone Number" - }, - "position": { - "label": "Position" - }, - "start-date": { - "label": "Start Date" - }, - "subtitle": { - "label": "Subtitle" - }, - "summary": { - "label": "Summary" - }, - "title": { - "label": "Title" - }, - "url": { - "label": "Website" - } - }, - "glossary": { - "page": "Page" - }, - "list": { - "empty-text": "This list is empty." - }, - "tooltip": { - "delete-section": "Delete Section", - "rename-section": "Rename Section", - "toggle-visibility": "Toggle Visibility" - } - }, - "controller": { - "tooltip": { - "center-artboard": "Center Artboard", - "copy-link": "Copy Link to Resume", - "export-pdf": "Export PDF", - "toggle-orientation": "Toggle Page Orientation", - "toggle-page-break-line": "Toggle Page Break Line", - "toggle-sidebars": "Toggle Sidebars", - "zoom-in": "Zoom In", - "zoom-out": "Zoom Out" - } - }, - "header": { - "menu": { - "delete": "Delete", - "duplicate": "Duplicate", - "rename": "Rename", - "share-link": "Share Link", - "tooltips": { - "delete": "Are you sure you want to delete this resume? This is an irreversible action.", - "share-link": "You need to change the visibility of your resume to public to make it visible to others." - } - } - }, - "leftSidebar": { - "sections": { - "awards": { - "form": { - "awarder": { - "label": "Awarder" - } - } - }, - "basics": { - "actions": { - "photo-filters": "Photo Filters" - }, - "heading": "Basics", - "headline": { - "label": "Headline" - }, - "name": { - "label": "Full Name" - }, - "photo-filters": { - "effects": { - "border": { - "label": "Border" - }, - "grayscale": { - "label": "Grayscale" - }, - "heading": "Effects" - }, - "shape": { - "heading": "Shape" - }, - "size": { - "heading": "Size (in px)" - } - }, - "photo-upload": { - "tooltip": { - "remove": "Remove Photo", - "upload": "Upload Photo" - } - } - }, - "certifications": { - "form": { - "issuer": { - "label": "Issuer" - } - } - }, - "education": { - "form": { - "area-study": { - "label": "Area of Study" - }, - "courses": { - "label": "Courses" - }, - "degree": { - "label": "Degree" - }, - "grade": { - "label": "Grade" - }, - "institution": { - "label": "Institution" - } - } - }, - "location": { - "address": { - "label": "Address" - }, - "city": { - "label": "City" - }, - "country": { - "label": "Country" - }, - "heading": "Location", - "postal-code": { - "label": "Postal Code" - }, - "region": { - "label": "Region" - } - }, - "profiles": { - "form": { - "network": { - "label": "Network" - }, - "username": { - "label": "Username" - } - }, - "heading": "Profiles", - "heading_one": "Profile" - }, - "publications": { - "form": { - "publisher": { - "label": "Publisher" - } - } - }, - "references": { - "form": { - "relationship": { - "label": "Relationship" - } - } - }, - "section": { - "heading": "Section" - }, - "volunteer": { - "form": { - "organization": { - "label": "Organization" - } - } - } - } - }, - "rightSidebar": { - "sections": { - "css": { - "heading": "Custom CSS" - }, - "export": { - "heading": "Export", - "json": { - "primary": "JSON", - "secondary": "Download a JSON version of your resume that can be imported back into Reactive Resume." - }, - "pdf": { - "loading": { - "primary": "Generating PDF", - "secondary": "Please wait as your PDF gets generated, this may take upto 15 seconds." - }, - "normal": { - "primary": "PDF", - "secondary": "Download a PDF of your resume that you can print and send out to your dream job. This file cannot be imported back for further editing." - } - } - }, - "layout": { - "heading": "Layout", - "tooltip": { - "reset-layout": "Reset Layout" - } - }, - "links": { - "bugs-features": { - "body": "Something stopping you from making a resume? Or do you have an amazing idea to add? Raise an issue on GitHub to get started.", - "button": "GitHub Issues", - "heading": "Bugs? Feature Requests?" - }, - "donate": { - "body": "If you liked using Reactive Resume, please consider donating as much as you can to the cause of keeping the app up and running, without ads and free forever.", - "button": "Buy me a coffee", - "heading": "Donate to Reactive Resume" - }, - "github": "Source Code", - "heading": "Links" - }, - "settings": { - "global": { - "date": { - "primary": "Date", - "secondary": "Date format to use across the app" - }, - "heading": "Global", - "language": { - "primary": "Language", - "secondary": "Display language to use across the app" - }, - "theme": { - "primary": "Theme" - } - }, - "heading": "Settings", - "page": { - "break-line": { - "primary": "Break Line", - "secondary": "Show a line on all pages to mark the height of an A4 page" - }, - "heading": "Page", - "orientation": { - "primary": "Orientation", - "secondary": "Whether to display pages horizontally or vertically" - } - }, - "resume": { - "heading": "Resume", - "reset": { - "primary": "Reset Everything", - "secondary": "Made too many mistakes? Click here to reset all changes and start from scratch. Be careful, this action cannot be reversed." - }, - "sample": { - "primary": "Load Sample Data", - "secondary": "Not sure where to begin? Click here to load some sample data to see how a complete resume looks like." - } - } - }, - "sharing": { - "heading": "Sharing", - "short-url": { - "label": "Prefer Short URL" - }, - "visibility": { - "subtitle": "Allow anyone with a link to view your resume", - "title": "Public" - } - }, - "templates": { - "heading": "Templates" - }, - "theme": { - "form": { - "background": { - "label": "Background" - }, - "primary": { - "label": "Primary" - }, - "text": { - "label": "Text" - } - }, - "heading": "Theme" - }, - "typography": { - "form": { - "font-family": { - "label": "Font Family" - }, - "font-size": { - "label": "Font Size" - } - }, - "heading": "Typography", - "widgets": { - "body": { - "label": "Body" - }, - "headings": { - "label": "Headings" - } - } - } - } - } -} diff --git a/client/public/locales/ta/dashboard.json b/client/public/locales/ta/dashboard.json deleted file mode 100644 index c998e786..00000000 --- a/client/public/locales/ta/dashboard.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "create-resume": { - "subtitle": "Start from scratch", - "title": "Create New Resume" - }, - "import-external": { - "subtitle": "LinkedIn, JSON Resume, Reactive Resume", - "title": "Import from External Sources" - }, - "resume": { - "menu": { - "delete": "Delete", - "duplicate": "Duplicate", - "open": "Open", - "rename": "Rename", - "share-link": "Share Link", - "tooltips": { - "delete": "Are you sure you want to delete this resume? This is an irreversible action.", - "share-link": "You need to change the visibility of your resume to public to make it visible to others." - } - }, - "timestamp": "Last updated {{timestamp}} ago" - }, - "title": "Dashboard" -} diff --git a/client/public/locales/ta/landing.json b/client/public/locales/ta/landing.json deleted file mode 100644 index c9ebcfd5..00000000 --- a/client/public/locales/ta/landing.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "actions": { - "app": "Go to App", - "login": "Login", - "logout": "வெளியேறு", - "register": "Register" - }, - "features": { - "heading": "Features", - "list": { - "ads": "No Advertising", - "export": "Export your resume to JSON or PDF format", - "free": "Free, forever", - "import": "Import data from LinkedIn, JSON Resume", - "languages": "Accessible in multiple languages", - "more": "And much more exciting features, <1>read all about it here", - "tracking": "No Tracking (no 🍪s too)" - } - }, - "links": { - "heading": "Links", - "links": { - "donate": "Donate to Reactive Resume", - "github": "Source Code on GitHub" - } - }, - "screenshots": { - "heading": "Screenshots" - }, - "summary": { - "body": "Reactive Resume is a free and open source resume builder that's built to make the mundane tasks of creating, updating and sharing your resume as easy as 1, 2, 3. With this app, you can create multiple resumes, share them with recruiters or friends through a unique link and print it as a PDF, all for free, no ads, no tracking, without losing the integrity and privacy of your data.", - "heading": "Summary" - } -} diff --git a/client/public/locales/ta/modals.json b/client/public/locales/ta/modals.json deleted file mode 100644 index 02d3721e..00000000 --- a/client/public/locales/ta/modals.json +++ /dev/null @@ -1,134 +0,0 @@ -{ - "auth": { - "forgot-password": { - "actions": { - "send-email": "Send Reset Password Email" - }, - "body": "Just enter the email address associated with the account you would like to recover.", - "form": { - "email": { - "label": "Email Address" - } - }, - "heading": "Forgot your password?", - "help-text": "If the account exists, you will receive an email with a link to reset your password." - }, - "login": { - "actions": { - "login": "Login", - "login-google": "Login with Google" - }, - "body": "Please enter your username and password associated with your account to login and access, manage and share your resumes.", - "form": { - "password": { - "label": "Password" - }, - "username": { - "help-text": "You can also enter your email address", - "label": "Username" - } - }, - "heading": "Login to your account", - "recover-text": "In case you have forgotten your password, you can <1>recover your account here.", - "register-text": "If you don't have one, you can <1>create an account here." - }, - "register": { - "actions": { - "register": "Register" - }, - "body": "Please enter your personal information to create an account.", - "form": { - "confirm-password": { - "label": "Confirm Password" - }, - "email": { - "label": "Email Address" - }, - "name": { - "label": "Full Name" - }, - "password": { - "label": "Password" - }, - "username": { - "label": "Username" - } - }, - "heading": "Create an account", - "loginText": "If you already have an account, you can <1>login here." - }, - "reset-password": { - "actions": { - "set-password": "Set New Password" - }, - "body": "Enter a new password for your account.", - "form": { - "confirm-password": { - "label": "Confirm Password" - }, - "password": { - "label": "Password" - } - }, - "heading": "Reset your password" - } - }, - "dashboard": { - "create-resume": { - "actions": { - "create-resume": "Create Resume" - }, - "body": "Start building your resume by giving it a name. It could be in reference to the role you are applying for, or just your favorite snack.", - "form": { - "name": { - "label": "Name" - }, - "public": { - "label": "Is Publicly Accessible?" - }, - "slug": { - "label": "Slug" - } - }, - "heading": "Create a new resume" - }, - "import-external": { - "heading": "Import from External Sources", - "json-resume": { - "actions": { - "upload-json": "Upload JSON" - }, - "body": "If you have a <1>validated JSON Resume ready to go, you can use it to fast-track your development on Reactive Resume. Click the button below and upload a valid JSON file to begin.", - "heading": "Import From JSON Resume" - }, - "linkedin": { - "actions": { - "upload-archive": "Upload ZIP Archive" - }, - "body": "You can save time by exporting your data from LinkedIn and using it to auto-fill fields on Reactive Resume. Head on over to the <1>Data Privacy section on LinkedIn and request an archive of your data. Once it is available, upload the ZIP archive below.", - "heading": "Import From LinkedIn" - }, - "reactive-resume": { - "actions": { - "upload-json": "Upload JSON" - }, - "body": "If you have a JSON that was exported with the current version of Reactive Resume, you can import it back here to get an editable version again.", - "heading": "Import From Reactive Resume" - } - }, - "rename-resume": { - "actions": { - "rename-resume": "Rename Resume" - }, - "form": { - "name": { - "label": "Name" - }, - "slug": { - "label": "Slug" - } - }, - "heading": "Rename your resume" - } - } -} diff --git a/client/store/build/buildSlice.ts b/client/store/build/buildSlice.ts index 2a2fba21..671fd95d 100644 --- a/client/store/build/buildSlice.ts +++ b/client/store/build/buildSlice.ts @@ -1,5 +1,8 @@ import { createSlice, PayloadAction } from '@reduxjs/toolkit'; import merge from 'lodash/merge'; + +import { Language, languageMap } from '@/config/languages'; + export type Theme = 'light' | 'dark'; export type Sidebar = 'left' | 'right'; @@ -10,6 +13,7 @@ export type Orientation = 'horizontal' | 'vertical'; export type BuildState = { theme?: Theme; + language: Language; sidebar: Record; page: { breakLine: boolean; @@ -18,6 +22,7 @@ export type BuildState = { }; const initialState: BuildState = { + language: languageMap['en'], sidebar: { left: { open: false }, right: { open: false }, @@ -30,6 +35,8 @@ const initialState: BuildState = { type SetThemePayload = { theme: Theme }; +type SetLanguagePayload = { language: string }; + type ToggleSidebarPayload = { sidebar: Sidebar }; type SetSidebarStatePayload = { sidebar: Sidebar; state: SidebarState }; @@ -43,6 +50,11 @@ export const buildSlice = createSlice({ state.theme = theme; }, + setLanguage: (state, action: PayloadAction) => { + const { language } = action.payload; + + state.language = languageMap[language]; + }, toggleSidebar: (state, action: PayloadAction) => { const { sidebar } = action.payload; @@ -64,7 +76,7 @@ export const buildSlice = createSlice({ }, }); -export const { setTheme, toggleSidebar, setSidebarState, togglePageBreakLine, togglePageOrientation } = +export const { setTheme, setLanguage, toggleSidebar, setSidebarState, togglePageBreakLine, togglePageOrientation } = buildSlice.actions; export default buildSlice.reducer; diff --git a/client/tailwind.config.js b/client/tailwind.config.js index 4677d57a..7255316b 100644 --- a/client/tailwind.config.js +++ b/client/tailwind.config.js @@ -1,5 +1,6 @@ const { join } = require('path'); const colors = require('tailwindcss/colors'); +const typography = require('@tailwindcss/typography'); module.exports = { darkMode: 'class', @@ -20,4 +21,5 @@ module.exports = { }, }, }, + plugins: [typography], }; diff --git a/client/wrappers/LocaleWrapper.tsx b/client/wrappers/LocaleWrapper.tsx index 93892887..ad97cf81 100644 --- a/client/wrappers/LocaleWrapper.tsx +++ b/client/wrappers/LocaleWrapper.tsx @@ -1,4 +1,26 @@ +import { useRouter } from 'next/router'; +import { useEffect } from 'react'; + +import { useAppSelector } from '@/store/hooks'; + const LocaleWrapper: React.FC = ({ children }) => { + const router = useRouter(); + + const language = useAppSelector((state) => state.build.language); + + useEffect(() => { + if (!language) return; + + const { code } = language; + const { pathname, asPath, query, locale } = router; + + document.cookie = `NEXT_LOCALE=${code}; path=/; expires=2147483647`; + + if (locale !== code) { + router.push({ pathname, query }, asPath, { locale: code }); + } + }, [router, language]); + return <>{children}; }; diff --git a/client/wrappers/ThemeWrapper.tsx b/client/wrappers/ThemeWrapper.tsx index 4291d4a1..b8dea2ae 100644 --- a/client/wrappers/ThemeWrapper.tsx +++ b/client/wrappers/ThemeWrapper.tsx @@ -1,24 +1,24 @@ -import { ThemeProvider, useMediaQuery } from '@mui/material'; +import { ThemeProvider } from '@mui/material'; import { useEffect, useMemo } from 'react'; import { darkTheme, lightTheme } from '@/config/theme'; -import { setTheme, Theme } from '@/store/build/buildSlice'; +import { setTheme } from '@/store/build/buildSlice'; import { useAppDispatch, useAppSelector } from '@/store/hooks'; const ThemeWrapper: React.FC = ({ children }) => { const dispatch = useAppDispatch(); - const prefersDarkMode = useMediaQuery('(prefers-color-scheme: dark)'); - const theme: Theme | undefined = useAppSelector((state) => state.build.theme); + const theme = useAppSelector((state) => state.build.theme); + const isDarkMode = useMemo(() => theme === 'dark', [theme]); const muiTheme = useMemo(() => (isDarkMode ? darkTheme : lightTheme), [isDarkMode]); useEffect(() => { if (theme === undefined) { - dispatch(setTheme({ theme: prefersDarkMode ? 'dark' : 'light' })); + dispatch(setTheme({ theme: 'dark' })); } - }, [theme, dispatch, prefersDarkMode]); + }, [theme, dispatch]); useEffect(() => { if (isDarkMode) { diff --git a/package.json b/package.json index 2b018b3b..152f64d1 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,6 @@ "env-cmd": "^10.1.0" }, "devDependencies": { - "@changesets/cli": "^2.21.1", "@typescript-eslint/eslint-plugin": "^5.13.0", "@typescript-eslint/parser": "^5.13.0", "cz-conventional-changelog": "^3.3.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 570caa80..abb288a7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,7 +4,6 @@ importers: .: specifiers: - '@changesets/cli': ^2.21.1 '@typescript-eslint/eslint-plugin': ^5.13.0 '@typescript-eslint/parser': ^5.13.0 concurrently: ^7.0.0 @@ -23,7 +22,6 @@ importers: concurrently: 7.0.0 env-cmd: 10.1.0 devDependencies: - '@changesets/cli': 2.21.1 '@typescript-eslint/eslint-plugin': 5.13.0_1e08a597a4fb107867dcbe827a94038a '@typescript-eslint/parser': 5.13.0_eslint@8.10.0+typescript@4.5.5 cz-conventional-changelog: 3.3.0 @@ -46,11 +44,12 @@ importers: '@emotion/styled': ^11.8.1 '@hookform/resolvers': 2.8.8 '@monaco-editor/react': ^4.3.1 - '@mui/icons-material': ^5.4.4 - '@mui/lab': ^5.0.0-alpha.71 - '@mui/material': ^5.4.4 + '@mui/icons-material': ^5.5.0 + '@mui/lab': ^5.0.0-alpha.72 + '@mui/material': ^5.5.0 '@reactive-resume/schema': workspace:* '@reduxjs/toolkit': ^1.8.0 + '@tailwindcss/typography': ^0.5.2 '@types/downloadjs': ^1.4.3 '@types/lodash': ^4.14.179 '@types/node': 17.0.21 @@ -74,7 +73,7 @@ importers: nanoid: ^3.3.1 next: 12.1.0 next-i18next: ^10.5.0 - postcss: ^8.4.7 + postcss: ^8.4.8 prettier: ^2.5.1 react: '>=17' react-beautiful-dnd: ^13.1.0 @@ -108,9 +107,9 @@ importers: '@emotion/styled': 11.8.1_c697ad3c4ddb0545c7a1d619984abba5 '@hookform/resolvers': 2.8.8_react-hook-form@7.27.1 '@monaco-editor/react': 4.3.1_e62f1489d5efe674a41c3f8d6971effe - '@mui/icons-material': 5.4.4_dcbd3996b57a9fdc9dc26f211d7c87b5 - '@mui/lab': 5.0.0-alpha.71_5b6d988b6072fb9391c09edac80acc5a - '@mui/material': 5.4.4_a557939b8cd577a0014b488227bec235 + '@mui/icons-material': 5.5.0_0d6831e705e18b34563b7cf6aa378955 + '@mui/lab': 5.0.0-alpha.72_731c389fa606f1ef4c49be73ac8fc4b7 + '@mui/material': 5.5.0_a557939b8cd577a0014b488227bec235 '@reduxjs/toolkit': 1.8.0_react-redux@7.2.6+react@17.0.2 axios: 0.26.0 clsx: 1.1.1 @@ -148,6 +147,7 @@ importers: devDependencies: '@babel/core': 7.17.5 '@reactive-resume/schema': link:../schema + '@tailwindcss/typography': 0.5.2_tailwindcss@3.0.23 '@types/downloadjs': 1.4.3 '@types/lodash': 4.14.179 '@types/node': 17.0.21 @@ -157,10 +157,10 @@ importers: '@types/tailwindcss': 3.0.9 '@types/uuid': 8.3.4 '@types/webfontloader': 1.6.34 - autoprefixer: 10.4.2_postcss@8.4.7 + autoprefixer: 10.4.2_postcss@8.4.8 eslint: 8.10.0 eslint-config-next: 12.1.0_4c2038871e8233f2b143838d68f90b16 - postcss: 8.4.7 + postcss: 8.4.8 prettier: 2.5.1 sass: 1.49.9 tailwindcss: 3.0.23_autoprefixer@10.4.2 @@ -176,7 +176,7 @@ importers: server: specifiers: - '@nestjs/axios': ^0.0.6 + '@nestjs/axios': ^0.0.7 '@nestjs/cli': ^8.2.2 '@nestjs/common': ^8.4.0 '@nestjs/config': ^1.2.0 @@ -186,7 +186,7 @@ importers: '@nestjs/passport': ^8.2.1 '@nestjs/platform-express': ^8.4.0 '@nestjs/schedule': ^1.0.2 - '@nestjs/schematics': ^8.0.7 + '@nestjs/schematics': ^8.0.8 '@nestjs/serve-static': ^2.2.2 '@nestjs/typeorm': ^8.0.3 '@reactive-resume/schema': workspace:* @@ -220,7 +220,7 @@ importers: prettier: ^2.5.1 reflect-metadata: ^0.1.13 rimraf: ^3.0.2 - rxjs: ^7.5.4 + rxjs: ^7.5.5 source-map-support: ^0.5.21 ts-loader: ^9.2.7 ts-node: ^10.7.0 @@ -230,17 +230,17 @@ importers: uuid: ^8.3.2 webpack: ^5.70.0 dependencies: - '@nestjs/axios': 0.0.6_8b36610a93f76db1b35891575c63ff52 - '@nestjs/common': 8.4.0_6686f1d73a399753b561a58a608807ad - '@nestjs/config': 1.2.0_8b36610a93f76db1b35891575c63ff52 - '@nestjs/core': 8.4.0_2e10c1a16efb48b2968dca34c1adcfc4 + '@nestjs/axios': 0.0.7_fa5d7eac25d9989be5b1db3b5778139c + '@nestjs/common': 8.4.0_add13df2cdecb4b62cd3f7664ea82e18 + '@nestjs/config': 1.2.0_fa5d7eac25d9989be5b1db3b5778139c + '@nestjs/core': 8.4.0_ded80713f50ec1c99e9ba95af1765d72 '@nestjs/jwt': 8.0.0_@nestjs+common@8.4.0 '@nestjs/mapped-types': 1.0.1_7c37dec5f311cf2dfddc0f9a032e50d3 '@nestjs/passport': 8.2.1_7279ab1fdcd161f1ce2d9179e8fa21f7 '@nestjs/platform-express': 8.4.0_31e7036b193d6d3c9cadab18cbb4af84 '@nestjs/schedule': 1.0.2_1ce925e2290a1cea9e3700e8a60baeb5 '@nestjs/serve-static': 2.2.2_31e7036b193d6d3c9cadab18cbb4af84 - '@nestjs/typeorm': 8.0.3_a8e966c473b8cac7d0f44522ae3cdd56 + '@nestjs/typeorm': 8.0.3_d17aee4fbe284d59b832be708c000fe0 '@sendgrid/mail': 7.6.1 '@types/passport': 1.0.7 bcrypt: 5.0.1 @@ -264,12 +264,12 @@ importers: playwright-chromium: 1.19.2 reflect-metadata: 0.1.13 rimraf: 3.0.2 - rxjs: 7.5.4 + rxjs: 7.5.5 typeorm: 0.2.45_pg@8.7.3 uuid: 8.3.2 devDependencies: '@nestjs/cli': 8.2.2 - '@nestjs/schematics': 8.0.7_typescript@4.5.5 + '@nestjs/schematics': 8.0.8_typescript@4.5.5 '@reactive-resume/schema': link:../schema '@types/bcrypt': 5.0.0 '@types/cookie-parser': 1.4.2 @@ -294,8 +294,8 @@ packages: '@jridgewell/trace-mapping': 0.3.4 dev: true - /@angular-devkit/core/13.2.4: - resolution: {integrity: sha512-hSw1JWA/6dDAF/xleQRXGtzHphfU49TMUhvAoAmsmmz3NAn03xLy1dtqdIXIf+TkFXVvZDaAB2mW8KfRV67GFg==} + /@angular-devkit/core/13.2.5: + resolution: {integrity: sha512-WuWp/1R0FtCHPBcJLF13lTLHETtDGFUX0ULfGPRaYB5OVCSQcovVp5UbZTTy/Ss3ub3EOEmJlU8kMJfBrWuq+A==} engines: {node: ^12.20.0 || ^14.15.0 || >=16.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^3.5.2 @@ -311,24 +311,6 @@ packages: source-map: 0.7.3 dev: true - /@angular-devkit/core/13.2.4_chokidar@3.5.3: - resolution: {integrity: sha512-hSw1JWA/6dDAF/xleQRXGtzHphfU49TMUhvAoAmsmmz3NAn03xLy1dtqdIXIf+TkFXVvZDaAB2mW8KfRV67GFg==} - engines: {node: ^12.20.0 || ^14.15.0 || >=16.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - peerDependencies: - chokidar: ^3.5.2 - peerDependenciesMeta: - chokidar: - optional: true - dependencies: - ajv: 8.9.0 - ajv-formats: 2.1.1 - chokidar: 3.5.3 - fast-json-stable-stringify: 2.1.0 - magic-string: 0.25.7 - rxjs: 6.6.7 - source-map: 0.7.3 - dev: true - /@angular-devkit/core/13.2.5_chokidar@3.5.3: resolution: {integrity: sha512-WuWp/1R0FtCHPBcJLF13lTLHETtDGFUX0ULfGPRaYB5OVCSQcovVp5UbZTTy/Ss3ub3EOEmJlU8kMJfBrWuq+A==} engines: {node: ^12.20.0 || ^14.15.0 || >=16.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} @@ -362,24 +344,11 @@ packages: - chokidar dev: true - /@angular-devkit/schematics/13.2.4: - resolution: {integrity: sha512-VMhYa4cDu5yE31OvHncAd15Rmlchih/Sr6sxFsIwkg4xzRNIIZCtwqxVXgf0TiTN9zrvlvzK7nhPqTGNqqYb2A==} + /@angular-devkit/schematics/13.2.5: + resolution: {integrity: sha512-kAye6VYiF9JQAoeO+BYhy8eT2QOmhB+WLziRjXoFCBxh5+yXTygTVfs9fD5jmIpHmeu4hd2ErSh69yT5xWcD9g==} engines: {node: ^12.20.0 || ^14.15.0 || >=16.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} dependencies: - '@angular-devkit/core': 13.2.4 - jsonc-parser: 3.0.0 - magic-string: 0.25.7 - ora: 5.4.1 - rxjs: 6.6.7 - transitivePeerDependencies: - - chokidar - dev: true - - /@angular-devkit/schematics/13.2.4_chokidar@3.5.3: - resolution: {integrity: sha512-VMhYa4cDu5yE31OvHncAd15Rmlchih/Sr6sxFsIwkg4xzRNIIZCtwqxVXgf0TiTN9zrvlvzK7nhPqTGNqqYb2A==} - engines: {node: ^12.20.0 || ^14.15.0 || >=16.10.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - dependencies: - '@angular-devkit/core': 13.2.4_chokidar@3.5.3 + '@angular-devkit/core': 13.2.5 jsonc-parser: 3.0.0 magic-string: 0.25.7 ora: 5.4.1 @@ -630,183 +599,6 @@ packages: minimist: 1.2.5 dev: false - /@changesets/apply-release-plan/5.0.5: - resolution: {integrity: sha512-CxL9dkhzjHiVmXCyHgsLCQj7i/coFTMv/Yy0v6BC5cIWZkQml+lf7zvQqAcFXwY7b54HxRWZPku02XFB53Q0Uw==} - dependencies: - '@babel/runtime': 7.17.2 - '@changesets/config': 1.7.0 - '@changesets/get-version-range-type': 0.3.2 - '@changesets/git': 1.3.1 - '@changesets/types': 4.1.0 - '@manypkg/get-packages': 1.1.3 - detect-indent: 6.1.0 - fs-extra: 7.0.1 - lodash.startcase: 4.4.0 - outdent: 0.5.0 - prettier: 1.19.1 - resolve-from: 5.0.0 - semver: 5.7.1 - dev: true - - /@changesets/assemble-release-plan/5.1.1: - resolution: {integrity: sha512-TQRZnK1sqYuoibJdSwpqE81rfDh0Xrkkr/M6bCQZ1ogGoRJNVbNYDWvNfkNvR4rEdRylri8cfKzffo/ruoy8QA==} - dependencies: - '@babel/runtime': 7.17.2 - '@changesets/errors': 0.1.4 - '@changesets/get-dependents-graph': 1.3.1 - '@changesets/types': 4.1.0 - '@manypkg/get-packages': 1.1.3 - semver: 5.7.1 - dev: true - - /@changesets/changelog-git/0.1.10: - resolution: {integrity: sha512-4t7zqPOv3aDZp4Y+AyDhiOG2ypaUXDpOz+MT1wOk3uSZNv78AaDByam0hdk5kfYuH1RlMecWU4/U5lO1ZL5eaA==} - dependencies: - '@changesets/types': 4.1.0 - dev: true - - /@changesets/cli/2.21.1: - resolution: {integrity: sha512-4AJKo/UW0P217m2VHjiuhZy+CstLw54eu9I1fsY7tst76GeEN7mX0mVrTNEisR6CvOH7wLav3ITqvDcKVPbKsw==} - hasBin: true - dependencies: - '@babel/runtime': 7.17.2 - '@changesets/apply-release-plan': 5.0.5 - '@changesets/assemble-release-plan': 5.1.1 - '@changesets/changelog-git': 0.1.10 - '@changesets/config': 1.7.0 - '@changesets/errors': 0.1.4 - '@changesets/get-dependents-graph': 1.3.1 - '@changesets/get-release-plan': 3.0.7 - '@changesets/git': 1.3.1 - '@changesets/logger': 0.0.5 - '@changesets/pre': 1.0.10 - '@changesets/read': 0.5.4 - '@changesets/types': 4.1.0 - '@changesets/write': 0.1.7 - '@manypkg/get-packages': 1.1.3 - '@types/is-ci': 3.0.0 - '@types/semver': 6.2.3 - chalk: 2.4.2 - enquirer: 2.3.6 - external-editor: 3.1.0 - fs-extra: 7.0.1 - human-id: 1.0.2 - is-ci: 3.0.1 - meow: 6.1.1 - outdent: 0.5.0 - p-limit: 2.3.0 - preferred-pm: 3.0.3 - semver: 5.7.1 - spawndamnit: 2.0.0 - term-size: 2.2.1 - tty-table: 2.8.13 - dev: true - - /@changesets/config/1.7.0: - resolution: {integrity: sha512-Ctk6ZO5Ay6oZ95bbKXyA2a1QG0jQUePaGCY6BKkZtUG4PgysesfmiQOPgOY5OsRMt8exJeo6l+DJ75YiKmh0rQ==} - dependencies: - '@changesets/errors': 0.1.4 - '@changesets/get-dependents-graph': 1.3.1 - '@changesets/logger': 0.0.5 - '@changesets/types': 4.1.0 - '@manypkg/get-packages': 1.1.3 - fs-extra: 7.0.1 - micromatch: 4.0.4 - dev: true - - /@changesets/errors/0.1.4: - resolution: {integrity: sha512-HAcqPF7snsUJ/QzkWoKfRfXushHTu+K5KZLJWPb34s4eCZShIf8BFO3fwq6KU8+G7L5KdtN2BzQAXOSXEyiY9Q==} - dependencies: - extendable-error: 0.1.7 - dev: true - - /@changesets/get-dependents-graph/1.3.1: - resolution: {integrity: sha512-HwUs8U0XK/ZqCQon1/80jJEyswS8JVmTiHTZslrTpuavyhhhxrSpO1eVCdKgaVHBRalOw3gRzdS3uzkmqYsQSQ==} - dependencies: - '@changesets/types': 4.1.0 - '@manypkg/get-packages': 1.1.3 - chalk: 2.4.2 - fs-extra: 7.0.1 - semver: 5.7.1 - dev: true - - /@changesets/get-release-plan/3.0.7: - resolution: {integrity: sha512-zDp6RIEKvERIF4Osy8sJ5BzqTiiLMhPWBO02y6w3nzTQJ0VBMaTs4hhwImQ/54O9I34eUHR3D0DwmwGQ27ifaw==} - dependencies: - '@babel/runtime': 7.17.2 - '@changesets/assemble-release-plan': 5.1.1 - '@changesets/config': 1.7.0 - '@changesets/pre': 1.0.10 - '@changesets/read': 0.5.4 - '@changesets/types': 4.1.0 - '@manypkg/get-packages': 1.1.3 - dev: true - - /@changesets/get-version-range-type/0.3.2: - resolution: {integrity: sha512-SVqwYs5pULYjYT4op21F2pVbcrca4qA/bAA3FmFXKMN7Y+HcO8sbZUTx3TAy2VXulP2FACd1aC7f2nTuqSPbqg==} - dev: true - - /@changesets/git/1.3.1: - resolution: {integrity: sha512-yg60QUi38VA0XGXdBy9SRYJhs8xJHE97Z1CaB/hFyByBlh5k1i+avFNBvvw66MsoT/aiml6y9scIG6sC8R5mfg==} - dependencies: - '@babel/runtime': 7.17.2 - '@changesets/errors': 0.1.4 - '@changesets/types': 4.1.0 - '@manypkg/get-packages': 1.1.3 - is-subdir: 1.2.0 - spawndamnit: 2.0.0 - dev: true - - /@changesets/logger/0.0.5: - resolution: {integrity: sha512-gJyZHomu8nASHpaANzc6bkQMO9gU/ib20lqew1rVx753FOxffnCrJlGIeQVxNWCqM+o6OOleCo/ivL8UAO5iFw==} - dependencies: - chalk: 2.4.2 - dev: true - - /@changesets/parse/0.3.12: - resolution: {integrity: sha512-FOBz2L1dT9PcvyQU1Qp2sQ0B4Jw7EgRDAKFVzAQwhzXqCq03TcE7vgKU6VSksCJAioMYDowdVVHNnv/Uak6yZQ==} - dependencies: - '@changesets/types': 4.1.0 - js-yaml: 3.14.1 - dev: true - - /@changesets/pre/1.0.10: - resolution: {integrity: sha512-cZC1C1wTSC17/TcTWivAQ4LAXz5jEYDuy3UeZiBz1wnTTzMHyTHLLwJi60juhl4hawXunDLw0mwZkcpS8Ivitg==} - dependencies: - '@babel/runtime': 7.17.2 - '@changesets/errors': 0.1.4 - '@changesets/types': 4.1.0 - '@manypkg/get-packages': 1.1.3 - fs-extra: 7.0.1 - dev: true - - /@changesets/read/0.5.4: - resolution: {integrity: sha512-12dTx+p5ztFs9QgJDGHRHR6HzTIbHct9S4lK2I/i6Qkz1cNfAPVIbdoMCdbPIWeLank9muMUjiiFmCWJD7tQIg==} - dependencies: - '@babel/runtime': 7.17.2 - '@changesets/git': 1.3.1 - '@changesets/logger': 0.0.5 - '@changesets/parse': 0.3.12 - '@changesets/types': 4.1.0 - chalk: 2.4.2 - fs-extra: 7.0.1 - p-filter: 2.1.0 - dev: true - - /@changesets/types/4.1.0: - resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} - dev: true - - /@changesets/write/0.1.7: - resolution: {integrity: sha512-6r+tc6u2l5BBIwEAh7ivRYWFir+XKiw0q/6Hx6NJA4dSN5fNu9uyWRQ+IMHCllD9dBcsh+e79sOepc+xT8l28g==} - dependencies: - '@babel/runtime': 7.17.2 - '@changesets/types': 4.1.0 - fs-extra: 7.0.1 - human-id: 1.0.2 - prettier: 1.19.1 - dev: true - /@commitlint/config-validator/16.2.1: resolution: {integrity: sha512-hogSe0WGg7CKmp4IfNbdNES3Rq3UEI4XRPB8JL4EPgo/ORq5nrGTVzxJh78omibNuB8Ho4501Czb1Er1MoDWpw==} engines: {node: '>=v12'} @@ -1127,26 +919,6 @@ packages: '@jridgewell/sourcemap-codec': 1.4.11 dev: true - /@manypkg/find-root/1.1.0: - resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} - dependencies: - '@babel/runtime': 7.17.2 - '@types/node': 12.20.46 - find-up: 4.1.0 - fs-extra: 8.1.0 - dev: true - - /@manypkg/get-packages/1.1.3: - resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} - dependencies: - '@babel/runtime': 7.17.2 - '@changesets/types': 4.1.0 - '@manypkg/find-root': 1.1.0 - fs-extra: 8.1.0 - globby: 11.1.0 - read-yaml-file: 1.1.0 - dev: true - /@mapbox/node-pre-gyp/1.0.8: resolution: {integrity: sha512-CMGKi28CF+qlbXh26hDe6NxCd7amqeAzEqnS6IHeO6LoaKyM/n+Xw3HT1COdq8cuioOdlKdqn/hCmqPUOMOywg==} hasBin: true @@ -1188,8 +960,8 @@ packages: react-dom: 17.0.2_react@17.0.2 dev: false - /@mui/base/5.0.0-alpha.70_b8fdba992ce7d797017dc07106486496: - resolution: {integrity: sha512-8UZWhz1JYuQnPkAbC37cl4aL1JyNWZ08wDXlp57W7fYQp5xFpBP/7p56AcWg2qG9CNJP0IlFg2Wp4md1v2l4iA==} + /@mui/base/5.0.0-alpha.71_b8fdba992ce7d797017dc07106486496: + resolution: {integrity: sha512-LinacyjmZOS+roUqCyhrcbNIW7TlRf1U+15ETGwMn6biNXI9YEVgcc1Kak08CRtjM0yczxxzLWetiAjHMCVSjQ==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^16.8.6 || ^17.0.0 @@ -1211,8 +983,8 @@ packages: react-is: 17.0.2 dev: false - /@mui/icons-material/5.4.4_dcbd3996b57a9fdc9dc26f211d7c87b5: - resolution: {integrity: sha512-7zoRpjO8vsd+bPvXq6rtXu0V8Saj70X09dtTQogZmxQKabrYW3g7+Yym7SCRA7IYVF3ysz2AvdQrGD1P/sGepg==} + /@mui/icons-material/5.5.0_0d6831e705e18b34563b7cf6aa378955: + resolution: {integrity: sha512-rMs5flT3INyd/m1A/x8DDlNTfHmCartX8stCuSDDMmaMV123oSwg8werJ/Hg4j1FWuVk5rE5HRY45gBf12BCGw==} engines: {node: '>=12.0.0'} peerDependencies: '@mui/material': ^5.0.0 @@ -1223,13 +995,13 @@ packages: optional: true dependencies: '@babel/runtime': 7.17.2 - '@mui/material': 5.4.4_a557939b8cd577a0014b488227bec235 + '@mui/material': 5.5.0_a557939b8cd577a0014b488227bec235 '@types/react': 17.0.39 react: 17.0.2 dev: false - /@mui/lab/5.0.0-alpha.71_5b6d988b6072fb9391c09edac80acc5a: - resolution: {integrity: sha512-ScGfSsiYa2XZl+TYEgDFoCv1DoXoWNQwyJBbDlapacEw10wGmY6sgMkCjsPhpuabgC5FVOaV5k30OxG7cZKXJQ==} + /@mui/lab/5.0.0-alpha.72_731c389fa606f1ef4c49be73ac8fc4b7: + resolution: {integrity: sha512-opml6yNpDvJzrCM9XzbckZMtfah+jFrYB8nB6kzORaQ3ixcMt+7RbFTPXG7NvQxW8VdxlGgfeBAMSWLDiFVMWA==} engines: {node: '>=12.0.0'} peerDependencies: '@mui/material': ^5.0.0 @@ -1257,9 +1029,9 @@ packages: '@date-io/dayjs': 2.13.1_dayjs@1.10.8 '@date-io/luxon': 2.13.1 '@date-io/moment': 2.13.1 - '@mui/base': 5.0.0-alpha.70_b8fdba992ce7d797017dc07106486496 - '@mui/material': 5.4.4_a557939b8cd577a0014b488227bec235 - '@mui/system': 5.4.4_c6213411fad5ab06c1404c7945e6b2f5 + '@mui/base': 5.0.0-alpha.71_b8fdba992ce7d797017dc07106486496 + '@mui/material': 5.5.0_a557939b8cd577a0014b488227bec235 + '@mui/system': 5.5.0_c6213411fad5ab06c1404c7945e6b2f5 '@mui/utils': 5.4.4_react@17.0.2 '@types/react': 17.0.39 clsx: 1.1.1 @@ -1275,8 +1047,8 @@ packages: - '@emotion/styled' dev: false - /@mui/material/5.4.4_a557939b8cd577a0014b488227bec235: - resolution: {integrity: sha512-VDJC7GzO1HTFqfMe2zwvaW/sRhABBJXFkKEv5gO3uXx7x9fdwJHQr4udU7NWZCUdOcx9Y0h3BsAILLefYq+WPw==} + /@mui/material/5.5.0_a557939b8cd577a0014b488227bec235: + resolution: {integrity: sha512-E12rxqLaWBrebJCxKxBtyRrzJgpPIQSCt4MUHns2Yl9gxOx4c7vDDKuks7Qc6S36wTQf+FP4aiey72Z2WKdYgQ==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -1295,8 +1067,8 @@ packages: '@babel/runtime': 7.17.2 '@emotion/react': 11.8.1_7c3ecd89bd75b61b41f2029715ea2305 '@emotion/styled': 11.8.1_c697ad3c4ddb0545c7a1d619984abba5 - '@mui/base': 5.0.0-alpha.70_b8fdba992ce7d797017dc07106486496 - '@mui/system': 5.4.4_c6213411fad5ab06c1404c7945e6b2f5 + '@mui/base': 5.0.0-alpha.71_b8fdba992ce7d797017dc07106486496 + '@mui/system': 5.5.0_c6213411fad5ab06c1404c7945e6b2f5 '@mui/types': 7.1.2_@types+react@17.0.39 '@mui/utils': 5.4.4_react@17.0.2 '@types/react': 17.0.39 @@ -1349,8 +1121,8 @@ packages: react: 17.0.2 dev: false - /@mui/system/5.4.4_c6213411fad5ab06c1404c7945e6b2f5: - resolution: {integrity: sha512-Zjbztq2o/VRuRRCWjG44juRrPKYLQMqtQpMHmMttGu5BnvK6PAPW3WOY0r1JCAwLhbd8Kug9nyhGQYKETjo+tQ==} + /@mui/system/5.5.0_c6213411fad5ab06c1404c7945e6b2f5: + resolution: {integrity: sha512-zFOfERv3Y4m5ehwTRR9cGaPuMvlD2qVXmFKC60P0Gte3aD6vYObyNriZv+mDVGlhDxZTZhxBrNPH3ns25xSFtQ==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -1404,17 +1176,17 @@ packages: react-is: 17.0.2 dev: false - /@nestjs/axios/0.0.6_8b36610a93f76db1b35891575c63ff52: - resolution: {integrity: sha512-RgtKUziiEPRtWS3KJNDqq0Epw9ffFdIKAtcj6cXnWeJvgHLwnDkw2rUsmHpDYrhszG+8bc4H8sDygRKwNPPAQA==} + /@nestjs/axios/0.0.7_fa5d7eac25d9989be5b1db3b5778139c: + resolution: {integrity: sha512-at8nj+1Nb8UleHcIN5QqZYeWX54m4m9s9gxzVE1qWy00neX2rg0+h2TfbWsnDi2tc23zIxqexanxMOJZbzO0CA==} peerDependencies: '@nestjs/common': ^7.0.0 || ^8.0.0 reflect-metadata: ^0.1.12 rxjs: ^6.0.0 || ^7.0.0 dependencies: - '@nestjs/common': 8.4.0_6686f1d73a399753b561a58a608807ad + '@nestjs/common': 8.4.0_add13df2cdecb4b62cd3f7664ea82e18 axios: 0.26.0 reflect-metadata: 0.1.13 - rxjs: 7.5.4 + rxjs: 7.5.5 transitivePeerDependencies: - debug dev: false @@ -1427,7 +1199,7 @@ packages: '@angular-devkit/core': 13.2.5_chokidar@3.5.3 '@angular-devkit/schematics': 13.2.5_chokidar@3.5.3 '@angular-devkit/schematics-cli': 13.2.5_chokidar@3.5.3 - '@nestjs/schematics': 8.0.7_chokidar@3.5.3+typescript@4.6.2 + '@nestjs/schematics': 8.0.8_chokidar@3.5.3+typescript@4.6.2 chalk: 3.0.0 chokidar: 3.5.3 cli-table3: 0.6.1 @@ -1454,7 +1226,7 @@ packages: - webpack-cli dev: true - /@nestjs/common/8.4.0_6686f1d73a399753b561a58a608807ad: + /@nestjs/common/8.4.0_add13df2cdecb4b62cd3f7664ea82e18: resolution: {integrity: sha512-uvm1Ccw0qRka/Gd5Mo5A2MQo9ItwewPes1fE2SBboennPojoiJ4A3iKirtlPuxsL+HQ4oD5eO02OsDyLYL2z6w==} peerDependencies: cache-manager: '*' @@ -1476,30 +1248,30 @@ packages: class-validator: 0.13.2 iterare: 1.2.1 reflect-metadata: 0.1.13 - rxjs: 7.5.4 + rxjs: 7.5.5 tslib: 2.3.1 uuid: 8.3.2 transitivePeerDependencies: - debug dev: false - /@nestjs/config/1.2.0_8b36610a93f76db1b35891575c63ff52: + /@nestjs/config/1.2.0_fa5d7eac25d9989be5b1db3b5778139c: resolution: {integrity: sha512-GGZOj2g6EMZ23orsQqeD2Vs5E2ZrmAiB0qCGvERv+5nQmZjY4nKkisG4awQsym1uotmmzgtsd9lOiKqTIFONhA==} peerDependencies: '@nestjs/common': ^7.0.0 || ^8.0.0 reflect-metadata: ^0.1.13 rxjs: ^6.0.0 || ^7.2.0 dependencies: - '@nestjs/common': 8.4.0_6686f1d73a399753b561a58a608807ad + '@nestjs/common': 8.4.0_add13df2cdecb4b62cd3f7664ea82e18 dotenv: 16.0.0 dotenv-expand: 8.0.1 lodash: 4.17.21 reflect-metadata: 0.1.13 - rxjs: 7.5.4 + rxjs: 7.5.5 uuid: 8.3.2 dev: false - /@nestjs/core/8.4.0_2e10c1a16efb48b2968dca34c1adcfc4: + /@nestjs/core/8.4.0_ded80713f50ec1c99e9ba95af1765d72: resolution: {integrity: sha512-aur62kcyQz81D0GvM038t2JFelxPm9ABt11o5qO5ovTJ5mismZheckwyPA3WHg9wec6skr9v8kBVdZUbjFQJQQ==} requiresBuild: true peerDependencies: @@ -1517,7 +1289,7 @@ packages: '@nestjs/websockets': optional: true dependencies: - '@nestjs/common': 8.4.0_6686f1d73a399753b561a58a608807ad + '@nestjs/common': 8.4.0_add13df2cdecb4b62cd3f7664ea82e18 '@nestjs/platform-express': 8.4.0_31e7036b193d6d3c9cadab18cbb4af84 '@nuxtjs/opencollective': 0.3.2 fast-safe-stringify: 2.1.1 @@ -1525,7 +1297,7 @@ packages: object-hash: 3.0.0 path-to-regexp: 3.2.0 reflect-metadata: 0.1.13 - rxjs: 7.5.4 + rxjs: 7.5.5 tslib: 2.3.1 uuid: 8.3.2 transitivePeerDependencies: @@ -1537,7 +1309,7 @@ packages: peerDependencies: '@nestjs/common': ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@nestjs/common': 8.4.0_6686f1d73a399753b561a58a608807ad + '@nestjs/common': 8.4.0_add13df2cdecb4b62cd3f7664ea82e18 '@types/jsonwebtoken': 8.5.4 jsonwebtoken: 8.5.1 dev: false @@ -1555,7 +1327,7 @@ packages: class-validator: optional: true dependencies: - '@nestjs/common': 8.4.0_6686f1d73a399753b561a58a608807ad + '@nestjs/common': 8.4.0_add13df2cdecb4b62cd3f7664ea82e18 class-transformer: 0.5.1 class-validator: 0.13.2 reflect-metadata: 0.1.13 @@ -1567,7 +1339,7 @@ packages: '@nestjs/common': ^6.0.0 || ^7.0.0 || ^8.0.0 passport: ^0.4.0 || ^0.5.0 dependencies: - '@nestjs/common': 8.4.0_6686f1d73a399753b561a58a608807ad + '@nestjs/common': 8.4.0_add13df2cdecb4b62cd3f7664ea82e18 passport: 0.5.2 dev: false @@ -1577,8 +1349,8 @@ packages: '@nestjs/common': ^8.0.0 '@nestjs/core': ^8.0.0 dependencies: - '@nestjs/common': 8.4.0_6686f1d73a399753b561a58a608807ad - '@nestjs/core': 8.4.0_2e10c1a16efb48b2968dca34c1adcfc4 + '@nestjs/common': 8.4.0_add13df2cdecb4b62cd3f7664ea82e18 + '@nestjs/core': 8.4.0_ded80713f50ec1c99e9ba95af1765d72 body-parser: 1.19.2 cors: 2.8.5 express: 4.17.3 @@ -1593,20 +1365,20 @@ packages: '@nestjs/core': ^7.0.0 || ^8.0.0 reflect-metadata: ^0.1.12 dependencies: - '@nestjs/common': 8.4.0_6686f1d73a399753b561a58a608807ad - '@nestjs/core': 8.4.0_2e10c1a16efb48b2968dca34c1adcfc4 + '@nestjs/common': 8.4.0_add13df2cdecb4b62cd3f7664ea82e18 + '@nestjs/core': 8.4.0_ded80713f50ec1c99e9ba95af1765d72 cron: 1.7.2 reflect-metadata: 0.1.13 uuid: 8.3.2 dev: false - /@nestjs/schematics/8.0.7_chokidar@3.5.3+typescript@4.6.2: - resolution: {integrity: sha512-7k+eMMBUwvXFp6vwZ5byiLBEQKzjMyIJwO46ginoFugt2AXrOt0iUhR3BKFuWDBZaYQ1l4az86UGw5ohgH3wow==} + /@nestjs/schematics/8.0.8_chokidar@3.5.3+typescript@4.6.2: + resolution: {integrity: sha512-xIIb5YnMQN/OJQ68+MCapy2bXvTxSWgINoqQbyZWkLL/yTIuROvZCdtV850NPGyr7f7l93VBP0ZPitbFIexy3Q==} peerDependencies: typescript: ^3.4.5 || ^4.3.5 dependencies: - '@angular-devkit/core': 13.2.4_chokidar@3.5.3 - '@angular-devkit/schematics': 13.2.4_chokidar@3.5.3 + '@angular-devkit/core': 13.2.5_chokidar@3.5.3 + '@angular-devkit/schematics': 13.2.5_chokidar@3.5.3 fs-extra: 10.0.1 jsonc-parser: 3.0.0 pluralize: 8.0.0 @@ -1615,13 +1387,13 @@ packages: - chokidar dev: true - /@nestjs/schematics/8.0.7_typescript@4.5.5: - resolution: {integrity: sha512-7k+eMMBUwvXFp6vwZ5byiLBEQKzjMyIJwO46ginoFugt2AXrOt0iUhR3BKFuWDBZaYQ1l4az86UGw5ohgH3wow==} + /@nestjs/schematics/8.0.8_typescript@4.5.5: + resolution: {integrity: sha512-xIIb5YnMQN/OJQ68+MCapy2bXvTxSWgINoqQbyZWkLL/yTIuROvZCdtV850NPGyr7f7l93VBP0ZPitbFIexy3Q==} peerDependencies: typescript: ^3.4.5 || ^4.3.5 dependencies: - '@angular-devkit/core': 13.2.4 - '@angular-devkit/schematics': 13.2.4 + '@angular-devkit/core': 13.2.5 + '@angular-devkit/schematics': 13.2.5 fs-extra: 10.0.1 jsonc-parser: 3.0.0 pluralize: 8.0.0 @@ -1636,12 +1408,12 @@ packages: '@nestjs/common': ^6.0.0 || ^7.0.0 || ^8.0.0 '@nestjs/core': ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@nestjs/common': 8.4.0_6686f1d73a399753b561a58a608807ad - '@nestjs/core': 8.4.0_2e10c1a16efb48b2968dca34c1adcfc4 + '@nestjs/common': 8.4.0_add13df2cdecb4b62cd3f7664ea82e18 + '@nestjs/core': 8.4.0_ded80713f50ec1c99e9ba95af1765d72 path-to-regexp: 0.1.7 dev: false - /@nestjs/typeorm/8.0.3_a8e966c473b8cac7d0f44522ae3cdd56: + /@nestjs/typeorm/8.0.3_d17aee4fbe284d59b832be708c000fe0: resolution: {integrity: sha512-tf9rTXP6LeFInkwd+tktQhtLRsKp4RRYImprqT8gcHcJDx+xMP1IygnXELOKwF5vo2/mnhrGtBlRQ/iiS6170g==} peerDependencies: '@nestjs/common': ^8.0.0 @@ -1650,10 +1422,10 @@ packages: rxjs: ^7.2.0 typeorm: ^0.2.34 dependencies: - '@nestjs/common': 8.4.0_6686f1d73a399753b561a58a608807ad - '@nestjs/core': 8.4.0_2e10c1a16efb48b2968dca34c1adcfc4 + '@nestjs/common': 8.4.0_add13df2cdecb4b62cd3f7664ea82e18 + '@nestjs/core': 8.4.0_ded80713f50ec1c99e9ba95af1765d72 reflect-metadata: 0.1.13 - rxjs: 7.5.4 + rxjs: 7.5.5 typeorm: 0.2.45_pg@8.7.3 uuid: 8.3.2 dev: false @@ -1934,6 +1706,17 @@ packages: resolution: {integrity: sha512-O3uyB/JbkAEMZaP3YqyHH7TMnex7tWyCbCI4EfJdOCoN6HIhqdJBWTM6aCCiWQ/5f5wxjgU735QAIpJbjDvmzg==} dev: false + /@tailwindcss/typography/0.5.2_tailwindcss@3.0.23: + resolution: {integrity: sha512-coq8DBABRPFcVhVIk6IbKyyHUt7YTEC/C992tatFB+yEx5WGBQrCgsSFjxHUr8AWXphWckadVJbominEduYBqw==} + peerDependencies: + tailwindcss: '>=3.0.0 || >= 3.0.0-alpha.1 || insiders' + dependencies: + lodash.castarray: 4.4.0 + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + tailwindcss: 3.0.23_autoprefixer@10.4.2 + dev: true + /@tsconfig/node10/1.0.8: resolution: {integrity: sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==} dev: true @@ -2032,12 +1815,6 @@ packages: '@types/react': 17.0.39 hoist-non-react-statics: 3.3.2 - /@types/is-ci/3.0.0: - resolution: {integrity: sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==} - dependencies: - ci-info: 3.3.0 - dev: true - /@types/json-schema/7.0.9: resolution: {integrity: sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==} dev: true @@ -2069,10 +1846,6 @@ packages: /@types/mime/1.3.2: resolution: {integrity: sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==} - /@types/minimist/1.2.2: - resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} - dev: true - /@types/ms/0.7.31: resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} dev: false @@ -2083,17 +1856,9 @@ packages: '@types/express': 4.17.13 dev: true - /@types/node/12.20.46: - resolution: {integrity: sha512-cPjLXj8d6anFPzFvOPxS3fvly3Shm5nTfl6g8X5smexixbuGUf7hfr21J5tX9JW+UPStp/5P5R8qrKL5IyVJ+A==} - dev: true - /@types/node/17.0.21: resolution: {integrity: sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==} - /@types/normalize-package-data/2.4.1: - resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} - dev: true - /@types/parse-json/4.0.0: resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} @@ -2148,10 +1913,6 @@ packages: /@types/scheduler/0.16.2: resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} - /@types/semver/6.2.3: - resolution: {integrity: sha512-KQf+QAMWKMrtBMsB8/24w53tEsxllMj6TuA80TT/5igJalLI/zm0L3oXRbIAl4Ohfc85gyHX/jhMwsVkmhLU4A==} - dev: true - /@types/serve-static/1.13.10: resolution: {integrity: sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==} dependencies: @@ -2506,7 +2267,7 @@ packages: ajv: optional: true dependencies: - ajv: 8.9.0 + ajv: 8.10.0 dev: true /ajv-keywords/3.5.2_ajv@6.12.6: @@ -2653,12 +2414,6 @@ packages: resolution: {integrity: sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA==} dev: true - /argparse/1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - dependencies: - sprintf-js: 1.0.3 - dev: true - /argparse/2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -2708,11 +2463,6 @@ packages: es-abstract: 1.19.1 dev: true - /arrify/1.0.1: - resolution: {integrity: sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=} - engines: {node: '>=0.10.0'} - dev: true - /arrify/2.0.1: resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} engines: {node: '>=8'} @@ -2726,7 +2476,7 @@ packages: resolution: {integrity: sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==} dev: false - /autoprefixer/10.4.2_postcss@8.4.7: + /autoprefixer/10.4.2_postcss@8.4.8: resolution: {integrity: sha512-9fOPpHKuDW1w/0EKfRmVnxTDt8166MAnLI3mgZ1JCnhNtYWxcJ6Ud5CO/AVOZi/AvFa8DY9RTy3h3+tFBlrrdQ==} engines: {node: ^10 || ^12 || >=14} hasBin: true @@ -2738,7 +2488,7 @@ packages: fraction.js: 4.2.0 normalize-range: 0.1.2 picocolors: 1.0.0 - postcss: 8.4.7 + postcss: 8.4.8 postcss-value-parser: 4.2.0 dev: true @@ -2797,13 +2547,6 @@ packages: - supports-color dev: false - /better-path-resolve/1.0.0: - resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} - engines: {node: '>=4'} - dependencies: - is-windows: 1.0.2 - dev: true - /big-integer/1.6.51: resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} engines: {node: '>=0.6'} @@ -2862,12 +2605,6 @@ packages: fill-range: 7.0.1 dev: true - /breakword/1.0.5: - resolution: {integrity: sha512-ex5W9DoOQ/LUEU3PMdLs9ua/CYZl1678NUkKOdUSi8Aw5F1idieaiRURCBFJCwVcrD1J8Iy3vfWSloaMwO2qFg==} - dependencies: - wcwidth: 1.0.1 - dev: true - /broadcast-channel/3.7.0: resolution: {integrity: sha512-cIAKJXAxGJceNZGTZSBzMxzyOn72cVgPnKx4dc6LRjQgbaJUQqhy5rzL3zbMxkMWsGKkv2hSFkPRMEXfoMZ2Mg==} dependencies: @@ -2963,20 +2700,6 @@ packages: engines: {node: '>= 6'} dev: true - /camelcase-keys/6.2.2: - resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} - engines: {node: '>=8'} - dependencies: - camelcase: 5.3.1 - map-obj: 4.3.0 - quick-lru: 4.0.1 - dev: true - - /camelcase/5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - dev: true - /caniuse-lite/1.0.30001313: resolution: {integrity: sha512-rI1UN0koZUiKINjysQDuRi2VeSCce3bYJNmDcj3PIKREiAmjakugBul1QSkg/fPrlULYl6oWfGg3PbgOSY9X4Q==} @@ -3044,10 +2767,6 @@ packages: engines: {node: '>=6.0'} dev: true - /ci-info/3.3.0: - resolution: {integrity: sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==} - dev: true - /class-transformer/0.5.1: resolution: {integrity: sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==} dev: false @@ -3109,14 +2828,6 @@ packages: engines: {node: '>= 10'} dev: true - /cliui/6.0.0: - resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 6.2.0 - dev: true - /cliui/7.0.4: resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} dependencies: @@ -3375,14 +3086,6 @@ packages: moment-timezone: 0.5.34 dev: false - /cross-spawn/5.1.0: - resolution: {integrity: sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=} - dependencies: - lru-cache: 4.1.5 - shebang-command: 1.2.0 - which: 1.3.1 - dev: true - /cross-spawn/6.0.5: resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} engines: {node: '>=4.8'} @@ -3417,28 +3120,6 @@ packages: /csstype/3.0.11: resolution: {integrity: sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==} - /csv-generate/3.4.3: - resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} - dev: true - - /csv-parse/4.16.3: - resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==} - dev: true - - /csv-stringify/5.6.5: - resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==} - dev: true - - /csv/5.5.3: - resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==} - engines: {node: '>= 0.1.90'} - dependencies: - csv-generate: 3.4.3 - csv-parse: 4.16.3 - csv-stringify: 5.6.5 - stream-transform: 2.1.3 - dev: true - /csvtojson/2.0.10: resolution: {integrity: sha512-lUWFxGKyhraKCW8Qghz6Z0f2l/PqB1W3AO0HKJzGIQ5JRSlR651ekJDiGJbBT4sRNNv5ddnSGVEnsxP9XRCVpQ==} engines: {node: '>=4.0.0'} @@ -3518,19 +3199,6 @@ packages: dependencies: ms: 2.1.2 - /decamelize-keys/1.1.0: - resolution: {integrity: sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=} - engines: {node: '>=0.10.0'} - dependencies: - decamelize: 1.2.0 - map-obj: 1.0.1 - dev: true - - /decamelize/1.2.0: - resolution: {integrity: sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=} - engines: {node: '>=0.10.0'} - dev: true - /decode-named-character-reference/1.0.1: resolution: {integrity: sha512-YV/0HQHreRwKb7uBopyIkLG17jG6Sv2qUchk9qSoVJ2f+flwRsPNBO0hAnjt6mTNYUT+vw9Gy2ihXg4sUWPi2w==} dependencies: @@ -3606,11 +3274,6 @@ packages: engines: {node: '>=8'} dev: true - /detect-indent/6.1.0: - resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} - engines: {node: '>=8'} - dev: true - /detect-libc/1.0.3: resolution: {integrity: sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=} engines: {node: '>=0.10'} @@ -3760,13 +3423,6 @@ packages: tapable: 2.2.1 dev: true - /enquirer/2.3.6: - resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} - engines: {node: '>=8.6'} - dependencies: - ansi-colors: 4.1.1 - dev: true - /env-cmd/10.1.0: resolution: {integrity: sha512-mMdWTT9XKN7yNth/6N6g2GuKuJTsKMDHlQFUDacb/heQRRWOTIZ42t1rMHnQu4jYxU1ajdTeJM+9eEETlqToMA==} engines: {node: '>=8.0.0'} @@ -4123,12 +3779,6 @@ packages: eslint-visitor-keys: 3.3.0 dev: true - /esprima/4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - dev: true - /esquery/1.4.0: resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} engines: {node: '>=0.10'} @@ -4240,10 +3890,6 @@ packages: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} dev: false - /extendable-error/0.1.7: - resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} - dev: true - /external-editor/3.1.0: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} @@ -4371,29 +4017,6 @@ packages: locate-path: 2.0.0 dev: true - /find-up/4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - dev: true - - /find-up/5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - dev: true - - /find-yarn-workspace-root2/1.2.16: - resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} - dependencies: - micromatch: 4.0.4 - pkg-dir: 4.2.0 - dev: true - /findup-sync/4.0.0: resolution: {integrity: sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==} engines: {node: '>= 8'} @@ -4479,15 +4102,6 @@ packages: universalify: 2.0.0 dev: true - /fs-extra/7.0.1: - resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} - engines: {node: '>=6 <7 || >=8'} - dependencies: - graceful-fs: 4.2.9 - jsonfile: 4.0.0 - universalify: 0.1.2 - dev: true - /fs-extra/8.1.0: resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} engines: {node: '>=6 <7 || >=8'} @@ -4587,6 +4201,7 @@ packages: /get-caller-file/2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} + dev: false /get-intrinsic/1.1.1: resolution: {integrity: sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==} @@ -4776,10 +4391,6 @@ packages: /graceful-fs/4.2.9: resolution: {integrity: sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==} - /grapheme-splitter/1.0.4: - resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} - dev: true - /gtoken/5.3.2: resolution: {integrity: sha512-gkvEKREW7dXWF8NV8pVrKfW7WqReAmjjkMBh6lNCCGOM4ucS0r0YyXXl0r/9Yj8wcW/32ISkfc8h5mPTDbtifQ==} engines: {node: '>=10'} @@ -4792,11 +4403,6 @@ packages: - supports-color dev: false - /hard-rejection/2.1.0: - resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} - engines: {node: '>=6'} - dev: true - /has-bigints/1.0.1: resolution: {integrity: sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==} dev: true @@ -4850,10 +4456,6 @@ packages: parse-passwd: 1.0.0 dev: true - /hosted-git-info/2.8.9: - resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - dev: true - /hotkeys-js/3.8.7: resolution: {integrity: sha512-ckAx3EkUr5XjDwjEHDorHxRO2Kb7z6Z2Sxul4MbBkN8Nho7XDslQsgMJT+CiJ5Z4TgRxxvKHEpuLE3imzqy4Lg==} dev: false @@ -4889,10 +4491,6 @@ packages: - supports-color dev: false - /human-id/1.0.2: - resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} - dev: true - /human-signals/1.1.1: resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} engines: {node: '>=8.12.0'} @@ -4953,11 +4551,6 @@ packages: engines: {node: '>=0.8.19'} dev: true - /indent-string/4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - dev: true - /inflight/1.0.6: resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=} dependencies: @@ -5026,7 +4619,7 @@ packages: mute-stream: 0.0.8 ora: 5.4.1 run-async: 2.4.1 - rxjs: 7.5.4 + rxjs: 7.5.5 string-width: 4.2.3 strip-ansi: 6.0.1 through: 2.3.8 @@ -5093,13 +4686,6 @@ packages: engines: {node: '>= 0.4'} dev: true - /is-ci/3.0.1: - resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} - hasBin: true - dependencies: - ci-info: 3.3.0 - dev: true - /is-core-module/2.8.1: resolution: {integrity: sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==} dependencies: @@ -5162,11 +4748,6 @@ packages: engines: {node: '>=0.12.0'} dev: true - /is-plain-obj/1.1.0: - resolution: {integrity: sha1-caUMhCnfync8kqOQpKA7OfzVHT4=} - engines: {node: '>=0.10.0'} - dev: true - /is-plain-obj/4.0.0: resolution: {integrity: sha512-NXRbBtUdBioI73y/HmOhogw/U5msYPC9DAtGkJXeFcFWSFZw0mCUsPxk/snTuJHzNKA8kLBK4rH97RMB1BfCXw==} engines: {node: '>=12'} @@ -5195,13 +4776,6 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-subdir/1.2.0: - resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} - engines: {node: '>=4'} - dependencies: - better-path-resolve: 1.0.0 - dev: true - /is-symbol/1.0.4: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} engines: {node: '>= 0.4'} @@ -5274,14 +4848,6 @@ packages: /js-tokens/4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - /js-yaml/3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - dev: true - /js-yaml/4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true @@ -5406,11 +4972,6 @@ packages: safe-buffer: 5.2.1 dev: false - /kind-of/6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - dev: true - /kleur/4.1.4: resolution: {integrity: sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==} engines: {node: '>=6'} @@ -5446,16 +5007,6 @@ packages: /lines-and-columns/1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - /load-yaml-file/0.2.0: - resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} - engines: {node: '>=6'} - dependencies: - graceful-fs: 4.2.9 - js-yaml: 3.14.1 - pify: 4.0.1 - strip-bom: 3.0.0 - dev: true - /loader-runner/4.2.0: resolution: {integrity: sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==} engines: {node: '>=6.11.5'} @@ -5469,18 +5020,8 @@ packages: path-exists: 3.0.0 dev: true - /locate-path/5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - dependencies: - p-locate: 4.1.0 - dev: true - - /locate-path/6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - dependencies: - p-locate: 5.0.0 + /lodash.castarray/4.4.0: + resolution: {integrity: sha1-wCUTUV4wna3dTCTGDP3c9ZdtkRU=} dev: true /lodash.includes/4.3.0: @@ -5501,7 +5042,6 @@ packages: /lodash.isplainobject/4.0.6: resolution: {integrity: sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=} - dev: false /lodash.isstring/4.0.1: resolution: {integrity: sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=} @@ -5519,10 +5059,6 @@ packages: resolution: {integrity: sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=} dev: false - /lodash.startcase/4.4.0: - resolution: {integrity: sha1-lDbjTtJgk+1/+uGTYUQ1CRXZrdg=} - dev: true - /lodash/4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} @@ -5549,13 +5085,6 @@ packages: dependencies: js-tokens: 4.0.0 - /lru-cache/4.1.5: - resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} - dependencies: - pseudomap: 1.0.2 - yallist: 2.1.2 - dev: true - /lru-cache/6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} @@ -5584,16 +5113,6 @@ packages: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} dev: true - /map-obj/1.0.1: - resolution: {integrity: sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=} - engines: {node: '>=0.10.0'} - dev: true - - /map-obj/4.3.0: - resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} - engines: {node: '>=8'} - dev: true - /markdown-table/3.0.2: resolution: {integrity: sha512-y8j3a5/DkJCmS5x4dMCQL+OR0+2EAq3DOtio1COSHsmW2BGXnNCK3v12hJt1LrUz5iZH5g0LmuYOjDdI+czghA==} dev: false @@ -5746,23 +5265,6 @@ packages: resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} dev: false - /meow/6.1.1: - resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} - engines: {node: '>=8'} - dependencies: - '@types/minimist': 1.2.2 - camelcase-keys: 6.2.2 - decamelize-keys: 1.1.0 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 2.5.0 - read-pkg-up: 7.0.1 - redent: 3.0.0 - trim-newlines: 3.0.1 - type-fest: 0.13.1 - yargs-parser: 18.1.3 - dev: true - /merge-descriptors/1.0.1: resolution: {integrity: sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=} dev: false @@ -6082,25 +5584,11 @@ packages: engines: {node: '>=10'} dev: false - /min-indent/1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} - dev: true - /minimatch/3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 - /minimist-options/4.1.0: - resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} - engines: {node: '>= 6'} - dependencies: - arrify: 1.0.1 - is-plain-obj: 1.1.0 - kind-of: 6.0.3 - dev: true - /minimist/1.2.5: resolution: {integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==} @@ -6119,11 +5607,6 @@ packages: yallist: 4.0.0 dev: false - /mixme/0.5.4: - resolution: {integrity: sha512-3KYa4m4Vlqx98GPdOHghxSdNtTvcP8E0kkaJ5Dlh+h2DRzF7zpuVVcA8B0QpKd11YJeP9QQ7ASkKzOeu195Wzw==} - engines: {node: '>= 8.0.0'} - dev: true - /mkdirp-classic/0.5.3: resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} dev: false @@ -6350,15 +5833,6 @@ packages: abbrev: 1.1.1 dev: false - /normalize-package-data/2.5.0: - resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} - dependencies: - hosted-git-info: 2.8.9 - resolve: 1.22.0 - semver: 5.7.1 - validate-npm-package-license: 3.0.4 - dev: true - /normalize-path/3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -6542,17 +6016,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /outdent/0.5.0: - resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} - dev: true - - /p-filter/2.1.0: - resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} - engines: {node: '>=8'} - dependencies: - p-map: 2.1.0 - dev: true - /p-limit/1.3.0: resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} engines: {node: '>=4'} @@ -6560,20 +6023,6 @@ packages: p-try: 1.0.0 dev: true - /p-limit/2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - dependencies: - p-try: 2.2.0 - dev: true - - /p-limit/3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - dependencies: - yocto-queue: 0.1.0 - dev: true - /p-locate/2.0.0: resolution: {integrity: sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=} engines: {node: '>=4'} @@ -6581,35 +6030,11 @@ packages: p-limit: 1.3.0 dev: true - /p-locate/4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - dependencies: - p-limit: 2.3.0 - dev: true - - /p-locate/5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - dependencies: - p-limit: 3.1.0 - dev: true - - /p-map/2.1.0: - resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} - engines: {node: '>=6'} - dev: true - /p-try/1.0.0: resolution: {integrity: sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=} engines: {node: '>=4'} dev: true - /p-try/2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - dev: true - /packet-reader/1.0.0: resolution: {integrity: sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==} dev: false @@ -6689,11 +6114,6 @@ packages: engines: {node: '>=4'} dev: true - /path-exists/4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - dev: true - /path-is-absolute/1.0.1: resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=} engines: {node: '>=0.10.0'} @@ -6803,18 +6223,6 @@ packages: engines: {node: '>=8.6'} dev: true - /pify/4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} - dev: true - - /pkg-dir/4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} - dependencies: - find-up: 4.1.0 - dev: true - /playwright-chromium/1.19.2: resolution: {integrity: sha512-4S6KiJgR6PCQmlm4IzArgt9aDkzijYXxVG1j3vRqdugXQ1mPA2QIFUmXmRJeDczVkbIR5N8opJSNMnNDFg4qVw==} engines: {node: '>=12'} @@ -6865,14 +6273,14 @@ packages: engines: {node: '>=12.13.0'} dev: false - /postcss-js/4.0.0_postcss@8.4.7: + /postcss-js/4.0.0_postcss@8.4.8: resolution: {integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==} engines: {node: ^12 || ^14 || >= 16} peerDependencies: postcss: ^8.3.3 dependencies: camelcase-css: 2.0.1 - postcss: 8.4.7 + postcss: 8.4.8 dev: true /postcss-load-config/3.1.3: @@ -6888,13 +6296,13 @@ packages: yaml: 1.10.2 dev: true - /postcss-nested/5.0.6_postcss@8.4.7: + /postcss-nested/5.0.6_postcss@8.4.8: resolution: {integrity: sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.2.14 dependencies: - postcss: 8.4.7 + postcss: 8.4.8 postcss-selector-parser: 6.0.9 dev: true @@ -6919,8 +6327,8 @@ packages: source-map-js: 1.0.2 dev: false - /postcss/8.4.7: - resolution: {integrity: sha512-L9Ye3r6hkkCeOETQX6iOaWZgjp3LL6Lpqm6EtgbKrgqGGteRMNb9vzBfRL96YOSu8o7x3MfIH9Mo5cPJFGrW6A==} + /postcss/8.4.8: + resolution: {integrity: sha512-2tXEqGxrjvAO6U+CJzDL2Fk2kPHTv1jQsYkSoMeOis2SsYaXRO2COxTdQp99cYvif9JTXaAk9lYGc3VhJt7JPQ==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.1 @@ -6970,16 +6378,6 @@ packages: tunnel-agent: 0.6.0 dev: false - /preferred-pm/3.0.3: - resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} - engines: {node: '>=10'} - dependencies: - find-up: 5.0.0 - find-yarn-workspace-root2: 1.2.16 - path-exists: 4.0.0 - which-pm: 2.0.0 - dev: true - /prelude-ls/1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -6992,12 +6390,6 @@ packages: fast-diff: 1.2.0 dev: true - /prettier/1.19.1: - resolution: {integrity: sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==} - engines: {node: '>=4'} - hasBin: true - dev: true - /prettier/2.5.1: resolution: {integrity: sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==} engines: {node: '>=10.13.0'} @@ -7044,10 +6436,6 @@ packages: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} dev: false - /pseudomap/1.0.2: - resolution: {integrity: sha1-8FKijacOYYkX7wqKw0wa5aaChrM=} - dev: true - /pump/3.0.0: resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} dependencies: @@ -7075,11 +6463,6 @@ packages: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true - /quick-lru/4.0.1: - resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} - engines: {node: '>=8'} - dev: true - /quick-lru/5.1.1: resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} engines: {node: '>=10'} @@ -7373,35 +6756,6 @@ packages: object-assign: 4.1.1 dev: false - /read-pkg-up/7.0.1: - resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} - engines: {node: '>=8'} - dependencies: - find-up: 4.1.0 - read-pkg: 5.2.0 - type-fest: 0.8.1 - dev: true - - /read-pkg/5.2.0: - resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} - engines: {node: '>=8'} - dependencies: - '@types/normalize-package-data': 2.4.1 - normalize-package-data: 2.5.0 - parse-json: 5.2.0 - type-fest: 0.6.0 - dev: true - - /read-yaml-file/1.1.0: - resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} - engines: {node: '>=6'} - dependencies: - graceful-fs: 4.2.9 - js-yaml: 3.14.1 - pify: 4.0.1 - strip-bom: 3.0.0 - dev: true - /readable-stream/1.1.14: resolution: {integrity: sha1-fPTFTvZI44EwhMY23SB54WbAgdk=} dependencies: @@ -7445,14 +6799,6 @@ packages: resolve: 1.22.0 dev: true - /redent/3.0.0: - resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} - engines: {node: '>=8'} - dependencies: - indent-string: 4.0.0 - strip-indent: 3.0.0 - dev: true - /redux-persist/6.0.0_redux@4.1.2: resolution: {integrity: sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ==} peerDependencies: @@ -7535,16 +6881,13 @@ packages: /require-directory/2.1.1: resolution: {integrity: sha1-jGStX9MNqxyXbiNE/+f3kqam30I=} engines: {node: '>=0.10.0'} + dev: false /require-from-string/2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} dev: true - /require-main-filename/2.0.0: - resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - dev: true - /reselect/4.1.5: resolution: {integrity: sha512-uVdlz8J7OO+ASpBYoz1Zypgx0KasCY20H+N8JD13oUMtPvSHQuscrHop4KbXrbsBcdB9Ds7lVK7eRkBIfO43vQ==} dev: false @@ -7565,6 +6908,7 @@ packages: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} dev: true + optional: true /resolve-global/1.0.0: resolution: {integrity: sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==} @@ -7646,8 +6990,8 @@ packages: dependencies: tslib: 1.14.1 - /rxjs/7.5.4: - resolution: {integrity: sha512-h5M3Hk78r6wAheJF0a5YahB1yRQKCsZ4MsGdZ5O9ETbVtjPcScGfrMmoOq7EBsCRzd4BDkvDJ7ogP8Sz5tTFiQ==} + /rxjs/7.5.5: + resolution: {integrity: sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==} dependencies: tslib: 2.3.1 @@ -7710,6 +7054,7 @@ packages: /semver/5.7.1: resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} hasBin: true + dev: false /semver/6.3.0: resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} @@ -7759,6 +7104,7 @@ packages: /set-blocking/2.0.0: resolution: {integrity: sha1-BF+XgtARrppoA93TgrJDkrPYkPc=} + dev: false /setprototypeof/1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} @@ -7792,6 +7138,7 @@ packages: engines: {node: '>=0.10.0'} dependencies: shebang-regex: 1.0.0 + dev: false /shebang-command/2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} @@ -7802,6 +7149,7 @@ packages: /shebang-regex/1.0.0: resolution: {integrity: sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=} engines: {node: '>=0.10.0'} + dev: false /shebang-regex/3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} @@ -7855,18 +7203,6 @@ packages: engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} dev: false - /smartwrap/1.2.5: - resolution: {integrity: sha512-bzWRwHwu0RnWjwU7dFy7tF68pDAx/zMSu3g7xr9Nx5J0iSImYInglwEVExyHLxXljy6PWMjkSAbwF7t2mPnRmg==} - deprecated: Backported compatibility to node > 6 - hasBin: true - dependencies: - breakword: 1.0.5 - grapheme-splitter: 1.0.4 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - yargs: 15.4.1 - dev: true - /socks-proxy-agent/6.1.1: resolution: {integrity: sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==} engines: {node: '>= 10'} @@ -7923,44 +7259,11 @@ packages: resolution: {integrity: sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=} dev: false - /spawndamnit/2.0.0: - resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} - dependencies: - cross-spawn: 5.1.0 - signal-exit: 3.0.7 - dev: true - - /spdx-correct/3.1.1: - resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} - dependencies: - spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.11 - dev: true - - /spdx-exceptions/2.3.0: - resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} - dev: true - - /spdx-expression-parse/3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - dependencies: - spdx-exceptions: 2.3.0 - spdx-license-ids: 3.0.11 - dev: true - - /spdx-license-ids/3.0.11: - resolution: {integrity: sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==} - dev: true - /split2/4.1.0: resolution: {integrity: sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==} engines: {node: '>= 10.x'} dev: false - /sprintf-js/1.0.3: - resolution: {integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=} - dev: true - /stack-utils/2.0.5: resolution: {integrity: sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==} engines: {node: '>=10'} @@ -7977,12 +7280,6 @@ packages: engines: {node: '>= 0.6'} dev: false - /stream-transform/2.1.3: - resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} - dependencies: - mixme: 0.5.4 - dev: true - /streamsearch/0.1.2: resolution: {integrity: sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=} engines: {node: '>=0.8.0'} @@ -8104,13 +7401,6 @@ packages: engines: {node: '>=6'} dev: true - /strip-indent/3.0.0: - resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} - engines: {node: '>=8'} - dependencies: - min-indent: 1.0.1 - dev: true - /strip-json-comments/2.0.1: resolution: {integrity: sha1-PFMZQukIwml8DsNEhYwobHygpgo=} engines: {node: '>=0.10.0'} @@ -8188,7 +7478,7 @@ packages: autoprefixer: ^10.0.2 dependencies: arg: 5.0.1 - autoprefixer: 10.4.2_postcss@8.4.7 + autoprefixer: 10.4.2_postcss@8.4.8 chalk: 4.1.2 chokidar: 3.5.3 color-name: 1.1.4 @@ -8201,10 +7491,10 @@ packages: is-glob: 4.0.3 normalize-path: 3.0.0 object-hash: 2.2.0 - postcss: 8.4.7 - postcss-js: 4.0.0_postcss@8.4.7 + postcss: 8.4.8 + postcss-js: 4.0.0_postcss@8.4.8 postcss-load-config: 3.1.3 - postcss-nested: 5.0.6_postcss@8.4.7 + postcss-nested: 5.0.6_postcss@8.4.8 postcss-selector-parser: 6.0.9 postcss-value-parser: 4.2.0 quick-lru: 5.1.1 @@ -8250,11 +7540,6 @@ packages: yallist: 4.0.0 dev: false - /term-size/2.2.1: - resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} - engines: {node: '>=8'} - dev: true - /terser-webpack-plugin/5.3.1_webpack@5.66.0: resolution: {integrity: sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==} engines: {node: '>= 10.13.0'} @@ -8370,11 +7655,6 @@ packages: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true - /trim-newlines/3.0.1: - resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} - engines: {node: '>=8'} - dev: true - /trough/2.1.0: resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} dev: false @@ -8499,19 +7779,6 @@ packages: typescript: 4.5.5 dev: true - /tty-table/2.8.13: - resolution: {integrity: sha512-eVV/+kB6fIIdx+iUImhXrO22gl7f6VmmYh0Zbu6C196fe1elcHXd7U6LcLXu0YoVPc2kNesWiukYcdK8ZmJ6aQ==} - engines: {node: '>=8.16.0'} - hasBin: true - dependencies: - chalk: 3.0.0 - csv: 5.5.3 - smartwrap: 1.2.5 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - yargs: 15.4.1 - dev: true - /tunnel-agent/0.6.0: resolution: {integrity: sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=} dependencies: @@ -8525,11 +7792,6 @@ packages: prelude-ls: 1.2.1 dev: true - /type-fest/0.13.1: - resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} - engines: {node: '>=10'} - dev: true - /type-fest/0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} @@ -8540,16 +7802,6 @@ packages: engines: {node: '>=10'} dev: true - /type-fest/0.6.0: - resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} - engines: {node: '>=8'} - dev: true - - /type-fest/0.8.1: - resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} - engines: {node: '>=8'} - dev: true - /type-is/1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} @@ -8819,13 +8071,6 @@ packages: resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} dev: true - /validate-npm-package-license/3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - dependencies: - spdx-correct: 3.1.1 - spdx-expression-parse: 3.0.1 - dev: true - /validator/13.7.0: resolution: {integrity: sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==} engines: {node: '>= 0.10'} @@ -8986,18 +8231,6 @@ packages: is-symbol: 1.0.4 dev: true - /which-module/2.0.0: - resolution: {integrity: sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=} - dev: true - - /which-pm/2.0.0: - resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} - engines: {node: '>=8.15'} - dependencies: - load-yaml-file: 0.2.0 - path-exists: 4.0.0 - dev: true - /which/1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} hasBin: true @@ -9029,15 +8262,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /wrap-ansi/6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - dev: true - /wrap-ansi/7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -9080,19 +8304,11 @@ packages: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} - /y18n/4.0.3: - resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - dev: true - /y18n/5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} dev: false - /yallist/2.1.2: - resolution: {integrity: sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=} - dev: true - /yallist/4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} @@ -9100,14 +8316,6 @@ packages: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} - /yargs-parser/18.1.3: - resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} - engines: {node: '>=6'} - dependencies: - camelcase: 5.3.1 - decamelize: 1.2.0 - dev: true - /yargs-parser/20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} @@ -9118,23 +8326,6 @@ packages: engines: {node: '>=12'} dev: false - /yargs/15.4.1: - resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} - engines: {node: '>=8'} - dependencies: - cliui: 6.0.0 - decamelize: 1.2.0 - find-up: 4.1.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - require-main-filename: 2.0.0 - set-blocking: 2.0.0 - string-width: 4.2.3 - which-module: 2.0.0 - y18n: 4.0.3 - yargs-parser: 18.1.3 - dev: true - /yargs/16.2.0: resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} engines: {node: '>=10'} @@ -9179,11 +8370,6 @@ packages: engines: {node: '>=6'} dev: true - /yocto-queue/0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - dev: true - /zen-observable-ts/1.1.0: resolution: {integrity: sha512-1h4zlLSqI2cRLPJUHJFL8bCWHhkpuXkF+dbGkRaWjgDIG26DmzyshUMrdV/rL3UnR+mhaX4fRq8LPouq0MYYIA==} dependencies: diff --git a/schema/src/metadata.ts b/schema/src/metadata.ts index 7a5fb256..1264a381 100644 --- a/schema/src/metadata.ts +++ b/schema/src/metadata.ts @@ -28,5 +28,4 @@ export type Metadata = { template: string; typography: Typography; date: DateConfig; - language: string; }; diff --git a/server/Dockerfile b/server/Dockerfile index 51fff336..69b61fe8 100644 --- a/server/Dockerfile +++ b/server/Dockerfile @@ -33,8 +33,8 @@ WORKDIR /app RUN curl -f https://get.pnpm.io/v6.16.js | node - add --global pnpm -COPY --from=builder /app/pnpm-*.yaml . -COPY --from=builder /app/package.json . +COPY --from=builder /app/pnpm-*.yaml ./ +COPY --from=builder /app/package.json ./ COPY --from=builder /app/server/dist ./server/dist COPY --from=builder /app/server/package.json ./server/package.json diff --git a/server/package.json b/server/package.json index c83deca0..8b078c65 100644 --- a/server/package.json +++ b/server/package.json @@ -10,7 +10,7 @@ "lint": "eslint --fix --ext .ts ./src" }, "dependencies": { - "@nestjs/axios": "^0.0.6", + "@nestjs/axios": "^0.0.7", "@nestjs/common": "^8.4.0", "@nestjs/config": "^1.2.0", "@nestjs/core": "^8.4.0", @@ -44,13 +44,13 @@ "playwright-chromium": "^1.19.2", "reflect-metadata": "^0.1.13", "rimraf": "^3.0.2", - "rxjs": "^7.5.4", + "rxjs": "^7.5.5", "typeorm": "^0.2.45", "uuid": "^8.3.2" }, "devDependencies": { "@nestjs/cli": "^8.2.2", - "@nestjs/schematics": "^8.0.7", + "@nestjs/schematics": "^8.0.8", "@reactive-resume/schema": "workspace:*", "@types/bcrypt": "^5.0.0", "@types/cookie-parser": "^1.4.2", diff --git a/server/src/resume/data/defaultState.ts b/server/src/resume/data/defaultState.ts index 778e94d2..839d8ebf 100644 --- a/server/src/resume/data/defaultState.ts +++ b/server/src/resume/data/defaultState.ts @@ -142,7 +142,6 @@ const defaultState: Partial = { ['skills', 'interests', 'languages', 'awards', 'certifications', 'publications'], ], ], - language: 'en', template: 'kakuna', typography: { family: {