mirror of
				https://github.com/theoludwig/theoludwig.git
				synced 2025-11-04 00:19:01 +01:00 
			
		
		
		
	feat(posts): add git-ultimate-guide
				
					
				
			This commit is contained in:
		
							
								
								
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -49,3 +49,7 @@ npm-debug.log*
 | 
				
			|||||||
.DS_Store
 | 
					.DS_Store
 | 
				
			||||||
.lighthouseci
 | 
					.lighthouseci
 | 
				
			||||||
.vercel
 | 
					.vercel
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# typescript
 | 
				
			||||||
 | 
					*.tsbuildinfo
 | 
				
			||||||
 | 
					next-env.d.ts
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,7 +14,9 @@ export const Language: React.FC = () => {
 | 
				
			|||||||
  const languageClickRef = useRef<HTMLDivElement | null>(null)
 | 
					  const languageClickRef = useRef<HTMLDivElement | null>(null)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  const handleHiddenMenu = useCallback(() => {
 | 
					  const handleHiddenMenu = useCallback(() => {
 | 
				
			||||||
    setHiddenMenu((oldHiddenMenu) => !oldHiddenMenu)
 | 
					    setHiddenMenu((oldHiddenMenu) => {
 | 
				
			||||||
 | 
					      return !oldHiddenMenu
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
  }, [])
 | 
					  }, [])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  useEffect(() => {
 | 
					  useEffect(() => {
 | 
				
			||||||
@@ -65,7 +67,9 @@ export const Language: React.FC = () => {
 | 
				
			|||||||
            <li
 | 
					            <li
 | 
				
			||||||
              key={index}
 | 
					              key={index}
 | 
				
			||||||
              className='flex h-12 w-full items-center justify-center pl-2 hover:bg-[#4f545c] hover:bg-opacity-20'
 | 
					              className='flex h-12 w-full items-center justify-center pl-2 hover:bg-[#4f545c] hover:bg-opacity-20'
 | 
				
			||||||
              onClick={async () => await handleLanguage(language)}
 | 
					              onClick={async () => {
 | 
				
			||||||
 | 
					                return await handleLanguage(language)
 | 
				
			||||||
 | 
					              }}
 | 
				
			||||||
            >
 | 
					            >
 | 
				
			||||||
              <LanguageFlag language={language} />
 | 
					              <LanguageFlag language={language} />
 | 
				
			||||||
            </li>
 | 
					            </li>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,5 @@
 | 
				
			|||||||
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
 | 
					import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
 | 
				
			||||||
import { IconDefinition } from '@fortawesome/free-solid-svg-icons'
 | 
					import type { IconDefinition } from '@fortawesome/free-solid-svg-icons'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
interface InterestItemProps {
 | 
					interface InterestItemProps {
 | 
				
			||||||
  title: string
 | 
					  title: string
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,7 @@
 | 
				
			|||||||
import useTranslation from 'next-translate/useTranslation'
 | 
					import useTranslation from 'next-translate/useTranslation'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import { InterestParagraph, InterestParagraphProps } from './InterestParagraph'
 | 
					import type { InterestParagraphProps } from './InterestParagraph'
 | 
				
			||||||
 | 
					import { InterestParagraph } from './InterestParagraph'
 | 
				
			||||||
import { InterestsList } from './InterestsList'
 | 
					import { InterestsList } from './InterestsList'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const Interests: React.FC = () => {
 | 
					export const Interests: React.FC = () => {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,7 @@
 | 
				
			|||||||
import useTranslation from 'next-translate/useTranslation'
 | 
					import useTranslation from 'next-translate/useTranslation'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import { PortfolioItem, PortfolioItemProps } from './PortfolioItem'
 | 
					import type { PortfolioItemProps } from './PortfolioItem'
 | 
				
			||||||
 | 
					import { PortfolioItem } from './PortfolioItem'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const Portfolio: React.FC = () => {
 | 
					export const Portfolio: React.FC = () => {
 | 
				
			||||||
  const { t } = useTranslation('home')
 | 
					  const { t } = useTranslation('home')
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,7 @@
 | 
				
			|||||||
describe('Common > Header', () => {
 | 
					describe('Common > Header', () => {
 | 
				
			||||||
  beforeEach(() => cy.visit('/'))
 | 
					  beforeEach(() => {
 | 
				
			||||||
 | 
					    return cy.visit('/')
 | 
				
			||||||
 | 
					  })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  it('should redirect to /blog on click of the blog link', () => {
 | 
					  it('should redirect to /blog on click of the blog link', () => {
 | 
				
			||||||
    cy.get('[data-cy=header-blog-link]')
 | 
					    cy.get('[data-cy=header-blog-link]')
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,7 @@
 | 
				
			|||||||
describe('Page /404', () => {
 | 
					describe('Page /404', () => {
 | 
				
			||||||
  beforeEach(() => cy.visit('/404', { failOnStatusCode: false }))
 | 
					  beforeEach(() => {
 | 
				
			||||||
 | 
					    return cy.visit('/404', { failOnStatusCode: false })
 | 
				
			||||||
 | 
					  })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  it('should display the statusCode of 404', () => {
 | 
					  it('should display the statusCode of 404', () => {
 | 
				
			||||||
    cy.get('[data-cy=status-code]').contains('404')
 | 
					    cy.get('[data-cy=status-code]').contains('404')
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,7 @@
 | 
				
			|||||||
describe('Page /500', () => {
 | 
					describe('Page /500', () => {
 | 
				
			||||||
  beforeEach(() => cy.visit('/500', { failOnStatusCode: false }))
 | 
					  beforeEach(() => {
 | 
				
			||||||
 | 
					    return cy.visit('/500', { failOnStatusCode: false })
 | 
				
			||||||
 | 
					  })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  it('should display the statusCode of 500', () => {
 | 
					  it('should display the statusCode of 500', () => {
 | 
				
			||||||
    cy.get('[data-cy=status-code]').contains('500')
 | 
					    cy.get('[data-cy=status-code]').contains('500')
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,7 @@
 | 
				
			|||||||
describe('Page /', () => {
 | 
					describe('Page /', () => {
 | 
				
			||||||
  beforeEach(() => cy.visit('/'))
 | 
					  beforeEach(() => {
 | 
				
			||||||
 | 
					    return cy.visit('/')
 | 
				
			||||||
 | 
					  })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  it('should reveals the sections while scrolling except the about section', () => {
 | 
					  it('should reveals the sections while scrolling except the about section', () => {
 | 
				
			||||||
    const sectionsReveals = [
 | 
					    const sectionsReveals = [
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										469
									
								
								jsonresume-theme-custom/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										469
									
								
								jsonresume-theme-custom/package-lock.json
									
									
									
										generated
									
									
									
								
							@@ -11,16 +11,32 @@
 | 
				
			|||||||
        "modern-normalize": "1.1.0"
 | 
					        "modern-normalize": "1.1.0"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "devDependencies": {
 | 
					      "devDependencies": {
 | 
				
			||||||
        "@types/node": "18.7.11",
 | 
					        "@types/node": "18.7.23",
 | 
				
			||||||
        "date-and-time": "2.4.1",
 | 
					        "date-and-time": "2.4.1",
 | 
				
			||||||
        "vite": "3.0.9",
 | 
					        "vite": "3.1.4",
 | 
				
			||||||
        "vite-plugin-html": "3.2.0"
 | 
					        "vite-plugin-html": "3.2.0"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    "node_modules/@esbuild/android-arm": {
 | 
				
			||||||
 | 
					      "version": "0.15.10",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.10.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-FNONeQPy/ox+5NBkcSbYJxoXj9GWu8gVGJTVmUyoOCKQFDTrHVKgNSzChdNt0I8Aj/iKcsDf2r9BFwv+FSNUXg==",
 | 
				
			||||||
 | 
					      "cpu": [
 | 
				
			||||||
 | 
					        "arm"
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "dev": true,
 | 
				
			||||||
 | 
					      "optional": true,
 | 
				
			||||||
 | 
					      "os": [
 | 
				
			||||||
 | 
					        "android"
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "engines": {
 | 
				
			||||||
 | 
					        "node": ">=12"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "node_modules/@esbuild/linux-loong64": {
 | 
					    "node_modules/@esbuild/linux-loong64": {
 | 
				
			||||||
      "version": "0.14.54",
 | 
					      "version": "0.15.10",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.10.tgz",
 | 
				
			||||||
      "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==",
 | 
					      "integrity": "sha512-w0Ou3Z83LOYEkwaui2M8VwIp+nLi/NA60lBLMvaJ+vXVMcsARYdEzLNE7RSm4+lSg4zq4d7fAVuzk7PNQ5JFgg==",
 | 
				
			||||||
      "cpu": [
 | 
					      "cpu": [
 | 
				
			||||||
        "loong64"
 | 
					        "loong64"
 | 
				
			||||||
      ],
 | 
					      ],
 | 
				
			||||||
@@ -140,9 +156,9 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/@types/node": {
 | 
					    "node_modules/@types/node": {
 | 
				
			||||||
      "version": "18.7.11",
 | 
					      "version": "18.7.23",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.11.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.23.tgz",
 | 
				
			||||||
      "integrity": "sha512-KZhFpSLlmK/sdocfSAjqPETTMd0ug6HIMIAwkwUpU79olnZdQtMxpQP+G1wDzCH7na+FltSIhbaZuKdwZ8RDrw==",
 | 
					      "integrity": "sha512-DWNcCHolDq0ZKGizjx2DZjR/PqsYwAcYUJmfMWqtVU2MBMG5Mo+xFZrhGId5r/O5HOuMPyQEcM6KUBp5lBZZBg==",
 | 
				
			||||||
      "dev": true
 | 
					      "dev": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/acorn": {
 | 
					    "node_modules/acorn": {
 | 
				
			||||||
@@ -410,9 +426,9 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/dotenv": {
 | 
					    "node_modules/dotenv": {
 | 
				
			||||||
      "version": "16.0.1",
 | 
					      "version": "16.0.2",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.1.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.2.tgz",
 | 
				
			||||||
      "integrity": "sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ==",
 | 
					      "integrity": "sha512-JvpYKUmzQhYoIFgK2MOnF3bciIZoItIIoryihy0rIA+H4Jy0FmgyKYAHCTN98P5ybGSJcIFbh6QKeJdtZd1qhA==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "engines": {
 | 
					      "engines": {
 | 
				
			||||||
        "node": ">=12"
 | 
					        "node": ">=12"
 | 
				
			||||||
@@ -452,9 +468,9 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/esbuild": {
 | 
					    "node_modules/esbuild": {
 | 
				
			||||||
      "version": "0.14.54",
 | 
					      "version": "0.15.10",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.10.tgz",
 | 
				
			||||||
      "integrity": "sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==",
 | 
					      "integrity": "sha512-N7wBhfJ/E5fzn/SpNgX+oW2RLRjwaL8Y0ezqNqhjD6w0H2p0rDuEz2FKZqpqLnO8DCaWumKe8dsC/ljvVSSxng==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "hasInstallScript": true,
 | 
					      "hasInstallScript": true,
 | 
				
			||||||
      "bin": {
 | 
					      "bin": {
 | 
				
			||||||
@@ -464,33 +480,34 @@
 | 
				
			|||||||
        "node": ">=12"
 | 
					        "node": ">=12"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "optionalDependencies": {
 | 
					      "optionalDependencies": {
 | 
				
			||||||
        "@esbuild/linux-loong64": "0.14.54",
 | 
					        "@esbuild/android-arm": "0.15.10",
 | 
				
			||||||
        "esbuild-android-64": "0.14.54",
 | 
					        "@esbuild/linux-loong64": "0.15.10",
 | 
				
			||||||
        "esbuild-android-arm64": "0.14.54",
 | 
					        "esbuild-android-64": "0.15.10",
 | 
				
			||||||
        "esbuild-darwin-64": "0.14.54",
 | 
					        "esbuild-android-arm64": "0.15.10",
 | 
				
			||||||
        "esbuild-darwin-arm64": "0.14.54",
 | 
					        "esbuild-darwin-64": "0.15.10",
 | 
				
			||||||
        "esbuild-freebsd-64": "0.14.54",
 | 
					        "esbuild-darwin-arm64": "0.15.10",
 | 
				
			||||||
        "esbuild-freebsd-arm64": "0.14.54",
 | 
					        "esbuild-freebsd-64": "0.15.10",
 | 
				
			||||||
        "esbuild-linux-32": "0.14.54",
 | 
					        "esbuild-freebsd-arm64": "0.15.10",
 | 
				
			||||||
        "esbuild-linux-64": "0.14.54",
 | 
					        "esbuild-linux-32": "0.15.10",
 | 
				
			||||||
        "esbuild-linux-arm": "0.14.54",
 | 
					        "esbuild-linux-64": "0.15.10",
 | 
				
			||||||
        "esbuild-linux-arm64": "0.14.54",
 | 
					        "esbuild-linux-arm": "0.15.10",
 | 
				
			||||||
        "esbuild-linux-mips64le": "0.14.54",
 | 
					        "esbuild-linux-arm64": "0.15.10",
 | 
				
			||||||
        "esbuild-linux-ppc64le": "0.14.54",
 | 
					        "esbuild-linux-mips64le": "0.15.10",
 | 
				
			||||||
        "esbuild-linux-riscv64": "0.14.54",
 | 
					        "esbuild-linux-ppc64le": "0.15.10",
 | 
				
			||||||
        "esbuild-linux-s390x": "0.14.54",
 | 
					        "esbuild-linux-riscv64": "0.15.10",
 | 
				
			||||||
        "esbuild-netbsd-64": "0.14.54",
 | 
					        "esbuild-linux-s390x": "0.15.10",
 | 
				
			||||||
        "esbuild-openbsd-64": "0.14.54",
 | 
					        "esbuild-netbsd-64": "0.15.10",
 | 
				
			||||||
        "esbuild-sunos-64": "0.14.54",
 | 
					        "esbuild-openbsd-64": "0.15.10",
 | 
				
			||||||
        "esbuild-windows-32": "0.14.54",
 | 
					        "esbuild-sunos-64": "0.15.10",
 | 
				
			||||||
        "esbuild-windows-64": "0.14.54",
 | 
					        "esbuild-windows-32": "0.15.10",
 | 
				
			||||||
        "esbuild-windows-arm64": "0.14.54"
 | 
					        "esbuild-windows-64": "0.15.10",
 | 
				
			||||||
 | 
					        "esbuild-windows-arm64": "0.15.10"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/esbuild-android-64": {
 | 
					    "node_modules/esbuild-android-64": {
 | 
				
			||||||
      "version": "0.14.54",
 | 
					      "version": "0.15.10",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.10.tgz",
 | 
				
			||||||
      "integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==",
 | 
					      "integrity": "sha512-UI7krF8OYO1N7JYTgLT9ML5j4+45ra3amLZKx7LO3lmLt1Ibn8t3aZbX5Pu4BjWiqDuJ3m/hsvhPhK/5Y/YpnA==",
 | 
				
			||||||
      "cpu": [
 | 
					      "cpu": [
 | 
				
			||||||
        "x64"
 | 
					        "x64"
 | 
				
			||||||
      ],
 | 
					      ],
 | 
				
			||||||
@@ -504,9 +521,9 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/esbuild-android-arm64": {
 | 
					    "node_modules/esbuild-android-arm64": {
 | 
				
			||||||
      "version": "0.14.54",
 | 
					      "version": "0.15.10",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.10.tgz",
 | 
				
			||||||
      "integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==",
 | 
					      "integrity": "sha512-EOt55D6xBk5O05AK8brXUbZmoFj4chM8u3riGflLa6ziEoVvNjRdD7Cnp82NHQGfSHgYR06XsPI8/sMuA/cUwg==",
 | 
				
			||||||
      "cpu": [
 | 
					      "cpu": [
 | 
				
			||||||
        "arm64"
 | 
					        "arm64"
 | 
				
			||||||
      ],
 | 
					      ],
 | 
				
			||||||
@@ -520,9 +537,9 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/esbuild-darwin-64": {
 | 
					    "node_modules/esbuild-darwin-64": {
 | 
				
			||||||
      "version": "0.14.54",
 | 
					      "version": "0.15.10",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.10.tgz",
 | 
				
			||||||
      "integrity": "sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==",
 | 
					      "integrity": "sha512-hbDJugTicqIm+WKZgp208d7FcXcaK8j2c0l+fqSJ3d2AzQAfjEYDRM3Z2oMeqSJ9uFxyj/muSACLdix7oTstRA==",
 | 
				
			||||||
      "cpu": [
 | 
					      "cpu": [
 | 
				
			||||||
        "x64"
 | 
					        "x64"
 | 
				
			||||||
      ],
 | 
					      ],
 | 
				
			||||||
@@ -536,9 +553,9 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/esbuild-darwin-arm64": {
 | 
					    "node_modules/esbuild-darwin-arm64": {
 | 
				
			||||||
      "version": "0.14.54",
 | 
					      "version": "0.15.10",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.10.tgz",
 | 
				
			||||||
      "integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==",
 | 
					      "integrity": "sha512-M1t5+Kj4IgSbYmunf2BB6EKLkWUq+XlqaFRiGOk8bmBapu9bCDrxjf4kUnWn59Dka3I27EiuHBKd1rSO4osLFQ==",
 | 
				
			||||||
      "cpu": [
 | 
					      "cpu": [
 | 
				
			||||||
        "arm64"
 | 
					        "arm64"
 | 
				
			||||||
      ],
 | 
					      ],
 | 
				
			||||||
@@ -552,9 +569,9 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/esbuild-freebsd-64": {
 | 
					    "node_modules/esbuild-freebsd-64": {
 | 
				
			||||||
      "version": "0.14.54",
 | 
					      "version": "0.15.10",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.10.tgz",
 | 
				
			||||||
      "integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==",
 | 
					      "integrity": "sha512-KMBFMa7C8oc97nqDdoZwtDBX7gfpolkk6Bcmj6YFMrtCMVgoU/x2DI1p74DmYl7CSS6Ppa3xgemrLrr5IjIn0w==",
 | 
				
			||||||
      "cpu": [
 | 
					      "cpu": [
 | 
				
			||||||
        "x64"
 | 
					        "x64"
 | 
				
			||||||
      ],
 | 
					      ],
 | 
				
			||||||
@@ -568,9 +585,9 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/esbuild-freebsd-arm64": {
 | 
					    "node_modules/esbuild-freebsd-arm64": {
 | 
				
			||||||
      "version": "0.14.54",
 | 
					      "version": "0.15.10",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.10.tgz",
 | 
				
			||||||
      "integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==",
 | 
					      "integrity": "sha512-m2KNbuCX13yQqLlbSojFMHpewbn8wW5uDS6DxRpmaZKzyq8Dbsku6hHvh2U+BcLwWY4mpgXzFUoENEf7IcioGg==",
 | 
				
			||||||
      "cpu": [
 | 
					      "cpu": [
 | 
				
			||||||
        "arm64"
 | 
					        "arm64"
 | 
				
			||||||
      ],
 | 
					      ],
 | 
				
			||||||
@@ -584,9 +601,9 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/esbuild-linux-32": {
 | 
					    "node_modules/esbuild-linux-32": {
 | 
				
			||||||
      "version": "0.14.54",
 | 
					      "version": "0.15.10",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.10.tgz",
 | 
				
			||||||
      "integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==",
 | 
					      "integrity": "sha512-guXrwSYFAvNkuQ39FNeV4sNkNms1bLlA5vF1H0cazZBOLdLFIny6BhT+TUbK/hdByMQhtWQ5jI9VAmPKbVPu1w==",
 | 
				
			||||||
      "cpu": [
 | 
					      "cpu": [
 | 
				
			||||||
        "ia32"
 | 
					        "ia32"
 | 
				
			||||||
      ],
 | 
					      ],
 | 
				
			||||||
@@ -600,9 +617,9 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/esbuild-linux-64": {
 | 
					    "node_modules/esbuild-linux-64": {
 | 
				
			||||||
      "version": "0.14.54",
 | 
					      "version": "0.15.10",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.10.tgz",
 | 
				
			||||||
      "integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==",
 | 
					      "integrity": "sha512-jd8XfaSJeucMpD63YNMO1JCrdJhckHWcMv6O233bL4l6ogQKQOxBYSRP/XLWP+6kVTu0obXovuckJDcA0DKtQA==",
 | 
				
			||||||
      "cpu": [
 | 
					      "cpu": [
 | 
				
			||||||
        "x64"
 | 
					        "x64"
 | 
				
			||||||
      ],
 | 
					      ],
 | 
				
			||||||
@@ -616,9 +633,9 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/esbuild-linux-arm": {
 | 
					    "node_modules/esbuild-linux-arm": {
 | 
				
			||||||
      "version": "0.14.54",
 | 
					      "version": "0.15.10",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.10.tgz",
 | 
				
			||||||
      "integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==",
 | 
					      "integrity": "sha512-6N8vThLL/Lysy9y4Ex8XoLQAlbZKUyExCWyayGi2KgTBelKpPgj6RZnUaKri0dHNPGgReJriKVU6+KDGQwn10A==",
 | 
				
			||||||
      "cpu": [
 | 
					      "cpu": [
 | 
				
			||||||
        "arm"
 | 
					        "arm"
 | 
				
			||||||
      ],
 | 
					      ],
 | 
				
			||||||
@@ -632,9 +649,9 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/esbuild-linux-arm64": {
 | 
					    "node_modules/esbuild-linux-arm64": {
 | 
				
			||||||
      "version": "0.14.54",
 | 
					      "version": "0.15.10",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.10.tgz",
 | 
				
			||||||
      "integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==",
 | 
					      "integrity": "sha512-GByBi4fgkvZFTHFDYNftu1DQ1GzR23jws0oWyCfhnI7eMOe+wgwWrc78dbNk709Ivdr/evefm2PJiUBMiusS1A==",
 | 
				
			||||||
      "cpu": [
 | 
					      "cpu": [
 | 
				
			||||||
        "arm64"
 | 
					        "arm64"
 | 
				
			||||||
      ],
 | 
					      ],
 | 
				
			||||||
@@ -648,9 +665,9 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/esbuild-linux-mips64le": {
 | 
					    "node_modules/esbuild-linux-mips64le": {
 | 
				
			||||||
      "version": "0.14.54",
 | 
					      "version": "0.15.10",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.10.tgz",
 | 
				
			||||||
      "integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==",
 | 
					      "integrity": "sha512-BxP+LbaGVGIdQNJUNF7qpYjEGWb0YyHVSKqYKrn+pTwH/SiHUxFyJYSP3pqkku61olQiSBnSmWZ+YUpj78Tw7Q==",
 | 
				
			||||||
      "cpu": [
 | 
					      "cpu": [
 | 
				
			||||||
        "mips64el"
 | 
					        "mips64el"
 | 
				
			||||||
      ],
 | 
					      ],
 | 
				
			||||||
@@ -664,9 +681,9 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/esbuild-linux-ppc64le": {
 | 
					    "node_modules/esbuild-linux-ppc64le": {
 | 
				
			||||||
      "version": "0.14.54",
 | 
					      "version": "0.15.10",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.10.tgz",
 | 
				
			||||||
      "integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==",
 | 
					      "integrity": "sha512-LoSQCd6498PmninNgqd/BR7z3Bsk/mabImBWuQ4wQgmQEeanzWd5BQU2aNi9mBURCLgyheuZS6Xhrw5luw3OkQ==",
 | 
				
			||||||
      "cpu": [
 | 
					      "cpu": [
 | 
				
			||||||
        "ppc64"
 | 
					        "ppc64"
 | 
				
			||||||
      ],
 | 
					      ],
 | 
				
			||||||
@@ -680,9 +697,9 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/esbuild-linux-riscv64": {
 | 
					    "node_modules/esbuild-linux-riscv64": {
 | 
				
			||||||
      "version": "0.14.54",
 | 
					      "version": "0.15.10",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.10.tgz",
 | 
				
			||||||
      "integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==",
 | 
					      "integrity": "sha512-Lrl9Cr2YROvPV4wmZ1/g48httE8z/5SCiXIyebiB5N8VT7pX3t6meI7TQVHw/wQpqP/AF4SksDuFImPTM7Z32Q==",
 | 
				
			||||||
      "cpu": [
 | 
					      "cpu": [
 | 
				
			||||||
        "riscv64"
 | 
					        "riscv64"
 | 
				
			||||||
      ],
 | 
					      ],
 | 
				
			||||||
@@ -696,9 +713,9 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/esbuild-linux-s390x": {
 | 
					    "node_modules/esbuild-linux-s390x": {
 | 
				
			||||||
      "version": "0.14.54",
 | 
					      "version": "0.15.10",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.10.tgz",
 | 
				
			||||||
      "integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==",
 | 
					      "integrity": "sha512-ReP+6q3eLVVP2lpRrvl5EodKX7EZ1bS1/z5j6hsluAlZP5aHhk6ghT6Cq3IANvvDdscMMCB4QEbI+AjtvoOFpA==",
 | 
				
			||||||
      "cpu": [
 | 
					      "cpu": [
 | 
				
			||||||
        "s390x"
 | 
					        "s390x"
 | 
				
			||||||
      ],
 | 
					      ],
 | 
				
			||||||
@@ -712,9 +729,9 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/esbuild-netbsd-64": {
 | 
					    "node_modules/esbuild-netbsd-64": {
 | 
				
			||||||
      "version": "0.14.54",
 | 
					      "version": "0.15.10",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.10.tgz",
 | 
				
			||||||
      "integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==",
 | 
					      "integrity": "sha512-iGDYtJCMCqldMskQ4eIV+QSS/CuT7xyy9i2/FjpKvxAuCzrESZXiA1L64YNj6/afuzfBe9i8m/uDkFHy257hTw==",
 | 
				
			||||||
      "cpu": [
 | 
					      "cpu": [
 | 
				
			||||||
        "x64"
 | 
					        "x64"
 | 
				
			||||||
      ],
 | 
					      ],
 | 
				
			||||||
@@ -728,9 +745,9 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/esbuild-openbsd-64": {
 | 
					    "node_modules/esbuild-openbsd-64": {
 | 
				
			||||||
      "version": "0.14.54",
 | 
					      "version": "0.15.10",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.10.tgz",
 | 
				
			||||||
      "integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==",
 | 
					      "integrity": "sha512-ftMMIwHWrnrYnvuJQRJs/Smlcb28F9ICGde/P3FUTCgDDM0N7WA0o9uOR38f5Xe2/OhNCgkjNeb7QeaE3cyWkQ==",
 | 
				
			||||||
      "cpu": [
 | 
					      "cpu": [
 | 
				
			||||||
        "x64"
 | 
					        "x64"
 | 
				
			||||||
      ],
 | 
					      ],
 | 
				
			||||||
@@ -744,9 +761,9 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/esbuild-sunos-64": {
 | 
					    "node_modules/esbuild-sunos-64": {
 | 
				
			||||||
      "version": "0.14.54",
 | 
					      "version": "0.15.10",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.10.tgz",
 | 
				
			||||||
      "integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==",
 | 
					      "integrity": "sha512-mf7hBL9Uo2gcy2r3rUFMjVpTaGpFJJE5QTDDqUFf1632FxteYANffDZmKbqX0PfeQ2XjUDE604IcE7OJeoHiyg==",
 | 
				
			||||||
      "cpu": [
 | 
					      "cpu": [
 | 
				
			||||||
        "x64"
 | 
					        "x64"
 | 
				
			||||||
      ],
 | 
					      ],
 | 
				
			||||||
@@ -760,9 +777,9 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/esbuild-windows-32": {
 | 
					    "node_modules/esbuild-windows-32": {
 | 
				
			||||||
      "version": "0.14.54",
 | 
					      "version": "0.15.10",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.10.tgz",
 | 
				
			||||||
      "integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==",
 | 
					      "integrity": "sha512-ttFVo+Cg8b5+qHmZHbEc8Vl17kCleHhLzgT8X04y8zudEApo0PxPg9Mz8Z2cKH1bCYlve1XL8LkyXGFjtUYeGg==",
 | 
				
			||||||
      "cpu": [
 | 
					      "cpu": [
 | 
				
			||||||
        "ia32"
 | 
					        "ia32"
 | 
				
			||||||
      ],
 | 
					      ],
 | 
				
			||||||
@@ -776,9 +793,9 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/esbuild-windows-64": {
 | 
					    "node_modules/esbuild-windows-64": {
 | 
				
			||||||
      "version": "0.14.54",
 | 
					      "version": "0.15.10",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.10.tgz",
 | 
				
			||||||
      "integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==",
 | 
					      "integrity": "sha512-2H0gdsyHi5x+8lbng3hLbxDWR7mKHWh5BXZGKVG830KUmXOOWFE2YKJ4tHRkejRduOGDrBvHBriYsGtmTv3ntA==",
 | 
				
			||||||
      "cpu": [
 | 
					      "cpu": [
 | 
				
			||||||
        "x64"
 | 
					        "x64"
 | 
				
			||||||
      ],
 | 
					      ],
 | 
				
			||||||
@@ -792,9 +809,9 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/esbuild-windows-arm64": {
 | 
					    "node_modules/esbuild-windows-arm64": {
 | 
				
			||||||
      "version": "0.14.54",
 | 
					      "version": "0.15.10",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.10.tgz",
 | 
				
			||||||
      "integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==",
 | 
					      "integrity": "sha512-S+th4F+F8VLsHLR0zrUcG+Et4hx0RKgK1eyHc08kztmLOES8BWwMiaGdoW9hiXuzznXQ0I/Fg904MNbr11Nktw==",
 | 
				
			||||||
      "cpu": [
 | 
					      "cpu": [
 | 
				
			||||||
        "arm64"
 | 
					        "arm64"
 | 
				
			||||||
      ],
 | 
					      ],
 | 
				
			||||||
@@ -814,9 +831,9 @@
 | 
				
			|||||||
      "dev": true
 | 
					      "dev": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/fast-glob": {
 | 
					    "node_modules/fast-glob": {
 | 
				
			||||||
      "version": "3.2.11",
 | 
					      "version": "3.2.12",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
 | 
				
			||||||
      "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==",
 | 
					      "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "@nodelib/fs.stat": "^2.0.2",
 | 
					        "@nodelib/fs.stat": "^2.0.2",
 | 
				
			||||||
@@ -1132,9 +1149,9 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/node-html-parser": {
 | 
					    "node_modules/node-html-parser": {
 | 
				
			||||||
      "version": "5.4.1",
 | 
					      "version": "5.4.2",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-5.4.1.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-5.4.2.tgz",
 | 
				
			||||||
      "integrity": "sha512-xy/O2wOEBJsIRLs4avwa1lVY7tIpXXOoHHUJLa0GvnoPPqMG1hgBVl1tNI3GHOwRktTVZy+Y6rjghk4B9/NLyg==",
 | 
					      "integrity": "sha512-RaBPP3+51hPne/OolXxcz89iYvQvKOydaqoePpOgXcrOKZhjVIzmpKZz+Hd/RBO2/zN2q6CNJhQzucVz+u3Jyw==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "css-select": "^4.2.1",
 | 
					        "css-select": "^4.2.1",
 | 
				
			||||||
@@ -1284,9 +1301,9 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/rollup": {
 | 
					    "node_modules/rollup": {
 | 
				
			||||||
      "version": "2.77.3",
 | 
					      "version": "2.78.1",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.77.3.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.78.1.tgz",
 | 
				
			||||||
      "integrity": "sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g==",
 | 
					      "integrity": "sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "bin": {
 | 
					      "bin": {
 | 
				
			||||||
        "rollup": "dist/bin/rollup"
 | 
					        "rollup": "dist/bin/rollup"
 | 
				
			||||||
@@ -1374,9 +1391,9 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/terser": {
 | 
					    "node_modules/terser": {
 | 
				
			||||||
      "version": "5.14.2",
 | 
					      "version": "5.15.0",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.0.tgz",
 | 
				
			||||||
      "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==",
 | 
					      "integrity": "sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "@jridgewell/source-map": "^0.3.2",
 | 
					        "@jridgewell/source-map": "^0.3.2",
 | 
				
			||||||
@@ -1425,15 +1442,15 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/vite": {
 | 
					    "node_modules/vite": {
 | 
				
			||||||
      "version": "3.0.9",
 | 
					      "version": "3.1.4",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/vite/-/vite-3.0.9.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/vite/-/vite-3.1.4.tgz",
 | 
				
			||||||
      "integrity": "sha512-waYABTM+G6DBTCpYAxvevpG50UOlZuynR0ckTK5PawNVt7ebX6X7wNXHaGIO6wYYFXSM7/WcuFuO2QzhBB6aMw==",
 | 
					      "integrity": "sha512-JoQI08aBjY9lycL7jcEq4p9o1xUjq5aRvdH4KWaXtkSx7e7RpAh9D3IjzDWRD4Fg44LS3oDAIOG/Kq1L+82psA==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "esbuild": "^0.14.47",
 | 
					        "esbuild": "^0.15.6",
 | 
				
			||||||
        "postcss": "^8.4.16",
 | 
					        "postcss": "^8.4.16",
 | 
				
			||||||
        "resolve": "^1.22.1",
 | 
					        "resolve": "^1.22.1",
 | 
				
			||||||
        "rollup": ">=2.75.6 <2.77.0 || ~2.77.0"
 | 
					        "rollup": "~2.78.0"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "bin": {
 | 
					      "bin": {
 | 
				
			||||||
        "vite": "bin/vite.js"
 | 
					        "vite": "bin/vite.js"
 | 
				
			||||||
@@ -1490,10 +1507,17 @@
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "dependencies": {
 | 
					  "dependencies": {
 | 
				
			||||||
 | 
					    "@esbuild/android-arm": {
 | 
				
			||||||
 | 
					      "version": "0.15.10",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.10.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-FNONeQPy/ox+5NBkcSbYJxoXj9GWu8gVGJTVmUyoOCKQFDTrHVKgNSzChdNt0I8Aj/iKcsDf2r9BFwv+FSNUXg==",
 | 
				
			||||||
 | 
					      "dev": true,
 | 
				
			||||||
 | 
					      "optional": true
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "@esbuild/linux-loong64": {
 | 
					    "@esbuild/linux-loong64": {
 | 
				
			||||||
      "version": "0.14.54",
 | 
					      "version": "0.15.10",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.10.tgz",
 | 
				
			||||||
      "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==",
 | 
					      "integrity": "sha512-w0Ou3Z83LOYEkwaui2M8VwIp+nLi/NA60lBLMvaJ+vXVMcsARYdEzLNE7RSm4+lSg4zq4d7fAVuzk7PNQ5JFgg==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "optional": true
 | 
					      "optional": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
@@ -1583,9 +1607,9 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "@types/node": {
 | 
					    "@types/node": {
 | 
				
			||||||
      "version": "18.7.11",
 | 
					      "version": "18.7.23",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.11.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.23.tgz",
 | 
				
			||||||
      "integrity": "sha512-KZhFpSLlmK/sdocfSAjqPETTMd0ug6HIMIAwkwUpU79olnZdQtMxpQP+G1wDzCH7na+FltSIhbaZuKdwZ8RDrw==",
 | 
					      "integrity": "sha512-DWNcCHolDq0ZKGizjx2DZjR/PqsYwAcYUJmfMWqtVU2MBMG5Mo+xFZrhGId5r/O5HOuMPyQEcM6KUBp5lBZZBg==",
 | 
				
			||||||
      "dev": true
 | 
					      "dev": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "acorn": {
 | 
					    "acorn": {
 | 
				
			||||||
@@ -1793,9 +1817,9 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "dotenv": {
 | 
					    "dotenv": {
 | 
				
			||||||
      "version": "16.0.1",
 | 
					      "version": "16.0.2",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.1.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.2.tgz",
 | 
				
			||||||
      "integrity": "sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ==",
 | 
					      "integrity": "sha512-JvpYKUmzQhYoIFgK2MOnF3bciIZoItIIoryihy0rIA+H4Jy0FmgyKYAHCTN98P5ybGSJcIFbh6QKeJdtZd1qhA==",
 | 
				
			||||||
      "dev": true
 | 
					      "dev": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "dotenv-expand": {
 | 
					    "dotenv-expand": {
 | 
				
			||||||
@@ -1820,171 +1844,172 @@
 | 
				
			|||||||
      "dev": true
 | 
					      "dev": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "esbuild": {
 | 
					    "esbuild": {
 | 
				
			||||||
      "version": "0.14.54",
 | 
					      "version": "0.15.10",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.10.tgz",
 | 
				
			||||||
      "integrity": "sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==",
 | 
					      "integrity": "sha512-N7wBhfJ/E5fzn/SpNgX+oW2RLRjwaL8Y0ezqNqhjD6w0H2p0rDuEz2FKZqpqLnO8DCaWumKe8dsC/ljvVSSxng==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "requires": {
 | 
					      "requires": {
 | 
				
			||||||
        "@esbuild/linux-loong64": "0.14.54",
 | 
					        "@esbuild/android-arm": "0.15.10",
 | 
				
			||||||
        "esbuild-android-64": "0.14.54",
 | 
					        "@esbuild/linux-loong64": "0.15.10",
 | 
				
			||||||
        "esbuild-android-arm64": "0.14.54",
 | 
					        "esbuild-android-64": "0.15.10",
 | 
				
			||||||
        "esbuild-darwin-64": "0.14.54",
 | 
					        "esbuild-android-arm64": "0.15.10",
 | 
				
			||||||
        "esbuild-darwin-arm64": "0.14.54",
 | 
					        "esbuild-darwin-64": "0.15.10",
 | 
				
			||||||
        "esbuild-freebsd-64": "0.14.54",
 | 
					        "esbuild-darwin-arm64": "0.15.10",
 | 
				
			||||||
        "esbuild-freebsd-arm64": "0.14.54",
 | 
					        "esbuild-freebsd-64": "0.15.10",
 | 
				
			||||||
        "esbuild-linux-32": "0.14.54",
 | 
					        "esbuild-freebsd-arm64": "0.15.10",
 | 
				
			||||||
        "esbuild-linux-64": "0.14.54",
 | 
					        "esbuild-linux-32": "0.15.10",
 | 
				
			||||||
        "esbuild-linux-arm": "0.14.54",
 | 
					        "esbuild-linux-64": "0.15.10",
 | 
				
			||||||
        "esbuild-linux-arm64": "0.14.54",
 | 
					        "esbuild-linux-arm": "0.15.10",
 | 
				
			||||||
        "esbuild-linux-mips64le": "0.14.54",
 | 
					        "esbuild-linux-arm64": "0.15.10",
 | 
				
			||||||
        "esbuild-linux-ppc64le": "0.14.54",
 | 
					        "esbuild-linux-mips64le": "0.15.10",
 | 
				
			||||||
        "esbuild-linux-riscv64": "0.14.54",
 | 
					        "esbuild-linux-ppc64le": "0.15.10",
 | 
				
			||||||
        "esbuild-linux-s390x": "0.14.54",
 | 
					        "esbuild-linux-riscv64": "0.15.10",
 | 
				
			||||||
        "esbuild-netbsd-64": "0.14.54",
 | 
					        "esbuild-linux-s390x": "0.15.10",
 | 
				
			||||||
        "esbuild-openbsd-64": "0.14.54",
 | 
					        "esbuild-netbsd-64": "0.15.10",
 | 
				
			||||||
        "esbuild-sunos-64": "0.14.54",
 | 
					        "esbuild-openbsd-64": "0.15.10",
 | 
				
			||||||
        "esbuild-windows-32": "0.14.54",
 | 
					        "esbuild-sunos-64": "0.15.10",
 | 
				
			||||||
        "esbuild-windows-64": "0.14.54",
 | 
					        "esbuild-windows-32": "0.15.10",
 | 
				
			||||||
        "esbuild-windows-arm64": "0.14.54"
 | 
					        "esbuild-windows-64": "0.15.10",
 | 
				
			||||||
 | 
					        "esbuild-windows-arm64": "0.15.10"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "esbuild-android-64": {
 | 
					    "esbuild-android-64": {
 | 
				
			||||||
      "version": "0.14.54",
 | 
					      "version": "0.15.10",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.10.tgz",
 | 
				
			||||||
      "integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==",
 | 
					      "integrity": "sha512-UI7krF8OYO1N7JYTgLT9ML5j4+45ra3amLZKx7LO3lmLt1Ibn8t3aZbX5Pu4BjWiqDuJ3m/hsvhPhK/5Y/YpnA==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "optional": true
 | 
					      "optional": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "esbuild-android-arm64": {
 | 
					    "esbuild-android-arm64": {
 | 
				
			||||||
      "version": "0.14.54",
 | 
					      "version": "0.15.10",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.10.tgz",
 | 
				
			||||||
      "integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==",
 | 
					      "integrity": "sha512-EOt55D6xBk5O05AK8brXUbZmoFj4chM8u3riGflLa6ziEoVvNjRdD7Cnp82NHQGfSHgYR06XsPI8/sMuA/cUwg==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "optional": true
 | 
					      "optional": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "esbuild-darwin-64": {
 | 
					    "esbuild-darwin-64": {
 | 
				
			||||||
      "version": "0.14.54",
 | 
					      "version": "0.15.10",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.10.tgz",
 | 
				
			||||||
      "integrity": "sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==",
 | 
					      "integrity": "sha512-hbDJugTicqIm+WKZgp208d7FcXcaK8j2c0l+fqSJ3d2AzQAfjEYDRM3Z2oMeqSJ9uFxyj/muSACLdix7oTstRA==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "optional": true
 | 
					      "optional": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "esbuild-darwin-arm64": {
 | 
					    "esbuild-darwin-arm64": {
 | 
				
			||||||
      "version": "0.14.54",
 | 
					      "version": "0.15.10",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.10.tgz",
 | 
				
			||||||
      "integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==",
 | 
					      "integrity": "sha512-M1t5+Kj4IgSbYmunf2BB6EKLkWUq+XlqaFRiGOk8bmBapu9bCDrxjf4kUnWn59Dka3I27EiuHBKd1rSO4osLFQ==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "optional": true
 | 
					      "optional": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "esbuild-freebsd-64": {
 | 
					    "esbuild-freebsd-64": {
 | 
				
			||||||
      "version": "0.14.54",
 | 
					      "version": "0.15.10",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.10.tgz",
 | 
				
			||||||
      "integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==",
 | 
					      "integrity": "sha512-KMBFMa7C8oc97nqDdoZwtDBX7gfpolkk6Bcmj6YFMrtCMVgoU/x2DI1p74DmYl7CSS6Ppa3xgemrLrr5IjIn0w==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "optional": true
 | 
					      "optional": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "esbuild-freebsd-arm64": {
 | 
					    "esbuild-freebsd-arm64": {
 | 
				
			||||||
      "version": "0.14.54",
 | 
					      "version": "0.15.10",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.10.tgz",
 | 
				
			||||||
      "integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==",
 | 
					      "integrity": "sha512-m2KNbuCX13yQqLlbSojFMHpewbn8wW5uDS6DxRpmaZKzyq8Dbsku6hHvh2U+BcLwWY4mpgXzFUoENEf7IcioGg==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "optional": true
 | 
					      "optional": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "esbuild-linux-32": {
 | 
					    "esbuild-linux-32": {
 | 
				
			||||||
      "version": "0.14.54",
 | 
					      "version": "0.15.10",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.10.tgz",
 | 
				
			||||||
      "integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==",
 | 
					      "integrity": "sha512-guXrwSYFAvNkuQ39FNeV4sNkNms1bLlA5vF1H0cazZBOLdLFIny6BhT+TUbK/hdByMQhtWQ5jI9VAmPKbVPu1w==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "optional": true
 | 
					      "optional": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "esbuild-linux-64": {
 | 
					    "esbuild-linux-64": {
 | 
				
			||||||
      "version": "0.14.54",
 | 
					      "version": "0.15.10",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.10.tgz",
 | 
				
			||||||
      "integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==",
 | 
					      "integrity": "sha512-jd8XfaSJeucMpD63YNMO1JCrdJhckHWcMv6O233bL4l6ogQKQOxBYSRP/XLWP+6kVTu0obXovuckJDcA0DKtQA==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "optional": true
 | 
					      "optional": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "esbuild-linux-arm": {
 | 
					    "esbuild-linux-arm": {
 | 
				
			||||||
      "version": "0.14.54",
 | 
					      "version": "0.15.10",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.10.tgz",
 | 
				
			||||||
      "integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==",
 | 
					      "integrity": "sha512-6N8vThLL/Lysy9y4Ex8XoLQAlbZKUyExCWyayGi2KgTBelKpPgj6RZnUaKri0dHNPGgReJriKVU6+KDGQwn10A==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "optional": true
 | 
					      "optional": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "esbuild-linux-arm64": {
 | 
					    "esbuild-linux-arm64": {
 | 
				
			||||||
      "version": "0.14.54",
 | 
					      "version": "0.15.10",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.10.tgz",
 | 
				
			||||||
      "integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==",
 | 
					      "integrity": "sha512-GByBi4fgkvZFTHFDYNftu1DQ1GzR23jws0oWyCfhnI7eMOe+wgwWrc78dbNk709Ivdr/evefm2PJiUBMiusS1A==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "optional": true
 | 
					      "optional": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "esbuild-linux-mips64le": {
 | 
					    "esbuild-linux-mips64le": {
 | 
				
			||||||
      "version": "0.14.54",
 | 
					      "version": "0.15.10",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.10.tgz",
 | 
				
			||||||
      "integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==",
 | 
					      "integrity": "sha512-BxP+LbaGVGIdQNJUNF7qpYjEGWb0YyHVSKqYKrn+pTwH/SiHUxFyJYSP3pqkku61olQiSBnSmWZ+YUpj78Tw7Q==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "optional": true
 | 
					      "optional": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "esbuild-linux-ppc64le": {
 | 
					    "esbuild-linux-ppc64le": {
 | 
				
			||||||
      "version": "0.14.54",
 | 
					      "version": "0.15.10",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.10.tgz",
 | 
				
			||||||
      "integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==",
 | 
					      "integrity": "sha512-LoSQCd6498PmninNgqd/BR7z3Bsk/mabImBWuQ4wQgmQEeanzWd5BQU2aNi9mBURCLgyheuZS6Xhrw5luw3OkQ==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "optional": true
 | 
					      "optional": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "esbuild-linux-riscv64": {
 | 
					    "esbuild-linux-riscv64": {
 | 
				
			||||||
      "version": "0.14.54",
 | 
					      "version": "0.15.10",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.10.tgz",
 | 
				
			||||||
      "integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==",
 | 
					      "integrity": "sha512-Lrl9Cr2YROvPV4wmZ1/g48httE8z/5SCiXIyebiB5N8VT7pX3t6meI7TQVHw/wQpqP/AF4SksDuFImPTM7Z32Q==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "optional": true
 | 
					      "optional": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "esbuild-linux-s390x": {
 | 
					    "esbuild-linux-s390x": {
 | 
				
			||||||
      "version": "0.14.54",
 | 
					      "version": "0.15.10",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.10.tgz",
 | 
				
			||||||
      "integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==",
 | 
					      "integrity": "sha512-ReP+6q3eLVVP2lpRrvl5EodKX7EZ1bS1/z5j6hsluAlZP5aHhk6ghT6Cq3IANvvDdscMMCB4QEbI+AjtvoOFpA==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "optional": true
 | 
					      "optional": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "esbuild-netbsd-64": {
 | 
					    "esbuild-netbsd-64": {
 | 
				
			||||||
      "version": "0.14.54",
 | 
					      "version": "0.15.10",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.10.tgz",
 | 
				
			||||||
      "integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==",
 | 
					      "integrity": "sha512-iGDYtJCMCqldMskQ4eIV+QSS/CuT7xyy9i2/FjpKvxAuCzrESZXiA1L64YNj6/afuzfBe9i8m/uDkFHy257hTw==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "optional": true
 | 
					      "optional": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "esbuild-openbsd-64": {
 | 
					    "esbuild-openbsd-64": {
 | 
				
			||||||
      "version": "0.14.54",
 | 
					      "version": "0.15.10",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.10.tgz",
 | 
				
			||||||
      "integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==",
 | 
					      "integrity": "sha512-ftMMIwHWrnrYnvuJQRJs/Smlcb28F9ICGde/P3FUTCgDDM0N7WA0o9uOR38f5Xe2/OhNCgkjNeb7QeaE3cyWkQ==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "optional": true
 | 
					      "optional": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "esbuild-sunos-64": {
 | 
					    "esbuild-sunos-64": {
 | 
				
			||||||
      "version": "0.14.54",
 | 
					      "version": "0.15.10",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.10.tgz",
 | 
				
			||||||
      "integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==",
 | 
					      "integrity": "sha512-mf7hBL9Uo2gcy2r3rUFMjVpTaGpFJJE5QTDDqUFf1632FxteYANffDZmKbqX0PfeQ2XjUDE604IcE7OJeoHiyg==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "optional": true
 | 
					      "optional": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "esbuild-windows-32": {
 | 
					    "esbuild-windows-32": {
 | 
				
			||||||
      "version": "0.14.54",
 | 
					      "version": "0.15.10",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.10.tgz",
 | 
				
			||||||
      "integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==",
 | 
					      "integrity": "sha512-ttFVo+Cg8b5+qHmZHbEc8Vl17kCleHhLzgT8X04y8zudEApo0PxPg9Mz8Z2cKH1bCYlve1XL8LkyXGFjtUYeGg==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "optional": true
 | 
					      "optional": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "esbuild-windows-64": {
 | 
					    "esbuild-windows-64": {
 | 
				
			||||||
      "version": "0.14.54",
 | 
					      "version": "0.15.10",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.10.tgz",
 | 
				
			||||||
      "integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==",
 | 
					      "integrity": "sha512-2H0gdsyHi5x+8lbng3hLbxDWR7mKHWh5BXZGKVG830KUmXOOWFE2YKJ4tHRkejRduOGDrBvHBriYsGtmTv3ntA==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "optional": true
 | 
					      "optional": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "esbuild-windows-arm64": {
 | 
					    "esbuild-windows-arm64": {
 | 
				
			||||||
      "version": "0.14.54",
 | 
					      "version": "0.15.10",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.10.tgz",
 | 
				
			||||||
      "integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==",
 | 
					      "integrity": "sha512-S+th4F+F8VLsHLR0zrUcG+Et4hx0RKgK1eyHc08kztmLOES8BWwMiaGdoW9hiXuzznXQ0I/Fg904MNbr11Nktw==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "optional": true
 | 
					      "optional": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
@@ -1995,9 +2020,9 @@
 | 
				
			|||||||
      "dev": true
 | 
					      "dev": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "fast-glob": {
 | 
					    "fast-glob": {
 | 
				
			||||||
      "version": "3.2.11",
 | 
					      "version": "3.2.12",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
 | 
				
			||||||
      "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==",
 | 
					      "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "requires": {
 | 
					      "requires": {
 | 
				
			||||||
        "@nodelib/fs.stat": "^2.0.2",
 | 
					        "@nodelib/fs.stat": "^2.0.2",
 | 
				
			||||||
@@ -2237,9 +2262,9 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node-html-parser": {
 | 
					    "node-html-parser": {
 | 
				
			||||||
      "version": "5.4.1",
 | 
					      "version": "5.4.2",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-5.4.1.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-5.4.2.tgz",
 | 
				
			||||||
      "integrity": "sha512-xy/O2wOEBJsIRLs4avwa1lVY7tIpXXOoHHUJLa0GvnoPPqMG1hgBVl1tNI3GHOwRktTVZy+Y6rjghk4B9/NLyg==",
 | 
					      "integrity": "sha512-RaBPP3+51hPne/OolXxcz89iYvQvKOydaqoePpOgXcrOKZhjVIzmpKZz+Hd/RBO2/zN2q6CNJhQzucVz+u3Jyw==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "requires": {
 | 
					      "requires": {
 | 
				
			||||||
        "css-select": "^4.2.1",
 | 
					        "css-select": "^4.2.1",
 | 
				
			||||||
@@ -2340,9 +2365,9 @@
 | 
				
			|||||||
      "dev": true
 | 
					      "dev": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "rollup": {
 | 
					    "rollup": {
 | 
				
			||||||
      "version": "2.77.3",
 | 
					      "version": "2.78.1",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.77.3.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.78.1.tgz",
 | 
				
			||||||
      "integrity": "sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g==",
 | 
					      "integrity": "sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "requires": {
 | 
					      "requires": {
 | 
				
			||||||
        "fsevents": "~2.3.2"
 | 
					        "fsevents": "~2.3.2"
 | 
				
			||||||
@@ -2395,9 +2420,9 @@
 | 
				
			|||||||
      "dev": true
 | 
					      "dev": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "terser": {
 | 
					    "terser": {
 | 
				
			||||||
      "version": "5.14.2",
 | 
					      "version": "5.15.0",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.0.tgz",
 | 
				
			||||||
      "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==",
 | 
					      "integrity": "sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "requires": {
 | 
					      "requires": {
 | 
				
			||||||
        "@jridgewell/source-map": "^0.3.2",
 | 
					        "@jridgewell/source-map": "^0.3.2",
 | 
				
			||||||
@@ -2436,16 +2461,16 @@
 | 
				
			|||||||
      "dev": true
 | 
					      "dev": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "vite": {
 | 
					    "vite": {
 | 
				
			||||||
      "version": "3.0.9",
 | 
					      "version": "3.1.4",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/vite/-/vite-3.0.9.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/vite/-/vite-3.1.4.tgz",
 | 
				
			||||||
      "integrity": "sha512-waYABTM+G6DBTCpYAxvevpG50UOlZuynR0ckTK5PawNVt7ebX6X7wNXHaGIO6wYYFXSM7/WcuFuO2QzhBB6aMw==",
 | 
					      "integrity": "sha512-JoQI08aBjY9lycL7jcEq4p9o1xUjq5aRvdH4KWaXtkSx7e7RpAh9D3IjzDWRD4Fg44LS3oDAIOG/Kq1L+82psA==",
 | 
				
			||||||
      "dev": true,
 | 
					      "dev": true,
 | 
				
			||||||
      "requires": {
 | 
					      "requires": {
 | 
				
			||||||
        "esbuild": "^0.14.47",
 | 
					        "esbuild": "^0.15.6",
 | 
				
			||||||
        "fsevents": "~2.3.2",
 | 
					        "fsevents": "~2.3.2",
 | 
				
			||||||
        "postcss": "^8.4.16",
 | 
					        "postcss": "^8.4.16",
 | 
				
			||||||
        "resolve": "^1.22.1",
 | 
					        "resolve": "^1.22.1",
 | 
				
			||||||
        "rollup": ">=2.75.6 <2.77.0 || ~2.77.0"
 | 
					        "rollup": "~2.78.0"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "vite-plugin-html": {
 | 
					    "vite-plugin-html": {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,9 +12,9 @@
 | 
				
			|||||||
    "modern-normalize": "1.1.0"
 | 
					    "modern-normalize": "1.1.0"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "devDependencies": {
 | 
					  "devDependencies": {
 | 
				
			||||||
    "@types/node": "18.7.11",
 | 
					    "@types/node": "18.7.23",
 | 
				
			||||||
    "date-and-time": "2.4.1",
 | 
					    "date-and-time": "2.4.1",
 | 
				
			||||||
    "vite": "3.0.9",
 | 
					    "vite": "3.1.4",
 | 
				
			||||||
    "vite-plugin-html": "3.2.0"
 | 
					    "vite-plugin-html": "3.2.0"
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										5
									
								
								next-env.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								next-env.d.ts
									
									
									
									
										vendored
									
									
								
							@@ -1,5 +0,0 @@
 | 
				
			|||||||
/// <reference types="next" />
 | 
					 | 
				
			||||||
/// <reference types="next/image-types/global" />
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// NOTE: This file should not be edited
 | 
					 | 
				
			||||||
// see https://nextjs.org/docs/basic-features/typescript for more information.
 | 
					 | 
				
			||||||
							
								
								
									
										14054
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										14054
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										40
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										40
									
								
								package.json
									
									
									
									
									
								
							@@ -33,49 +33,49 @@
 | 
				
			|||||||
  },
 | 
					  },
 | 
				
			||||||
  "dependencies": {
 | 
					  "dependencies": {
 | 
				
			||||||
    "@fontsource/montserrat": "4.5.12",
 | 
					    "@fontsource/montserrat": "4.5.12",
 | 
				
			||||||
    "@fortawesome/fontawesome-svg-core": "6.1.2",
 | 
					    "@fortawesome/fontawesome-svg-core": "6.2.0",
 | 
				
			||||||
    "@fortawesome/free-brands-svg-icons": "6.1.2",
 | 
					    "@fortawesome/free-brands-svg-icons": "6.2.0",
 | 
				
			||||||
    "@fortawesome/free-solid-svg-icons": "6.1.2",
 | 
					    "@fortawesome/free-solid-svg-icons": "6.2.0",
 | 
				
			||||||
    "@fortawesome/react-fontawesome": "0.2.0",
 | 
					    "@fortawesome/react-fontawesome": "0.2.0",
 | 
				
			||||||
    "@giscus/react": "2.2.0",
 | 
					    "@giscus/react": "2.2.0",
 | 
				
			||||||
    "clsx": "1.2.1",
 | 
					    "clsx": "1.2.1",
 | 
				
			||||||
    "date-and-time": "2.4.1",
 | 
					    "date-and-time": "2.4.1",
 | 
				
			||||||
    "gray-matter": "4.0.3",
 | 
					    "gray-matter": "4.0.3",
 | 
				
			||||||
    "html-react-parser": "3.0.4",
 | 
					    "html-react-parser": "3.0.4",
 | 
				
			||||||
    "next": "12.2.5",
 | 
					    "next": "12.3.1",
 | 
				
			||||||
    "next-mdx-remote": "4.1.0",
 | 
					    "next-mdx-remote": "4.1.0",
 | 
				
			||||||
    "next-pwa": "5.6.0",
 | 
					    "next-pwa": "5.6.0",
 | 
				
			||||||
    "next-themes": "0.2.0",
 | 
					    "next-themes": "0.2.1",
 | 
				
			||||||
    "next-translate": "1.5.0",
 | 
					    "next-translate": "1.6.0",
 | 
				
			||||||
    "react": "18.2.0",
 | 
					    "react": "18.2.0",
 | 
				
			||||||
    "react-dom": "18.2.0",
 | 
					    "react-dom": "18.2.0",
 | 
				
			||||||
    "read-pkg": "7.1.0",
 | 
					    "read-pkg": "7.1.0",
 | 
				
			||||||
    "rehype-raw": "6.1.1",
 | 
					    "rehype-raw": "6.1.1",
 | 
				
			||||||
    "rehype-slug": "5.0.1",
 | 
					    "rehype-slug": "5.0.1",
 | 
				
			||||||
    "remark-gfm": "3.0.1",
 | 
					    "remark-gfm": "3.0.1",
 | 
				
			||||||
    "sharp": "0.30.7",
 | 
					    "sharp": "0.31.1",
 | 
				
			||||||
    "shiki": "0.11.1",
 | 
					    "shiki": "0.11.1",
 | 
				
			||||||
    "unified": "10.1.2",
 | 
					    "unified": "10.1.2",
 | 
				
			||||||
    "unist-util-visit": "4.1.1",
 | 
					    "unist-util-visit": "4.1.1",
 | 
				
			||||||
    "universal-cookie": "4.0.4"
 | 
					    "universal-cookie": "4.0.4"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "devDependencies": {
 | 
					  "devDependencies": {
 | 
				
			||||||
    "@commitlint/cli": "17.0.3",
 | 
					    "@commitlint/cli": "17.1.2",
 | 
				
			||||||
    "@commitlint/config-conventional": "17.0.3",
 | 
					    "@commitlint/config-conventional": "17.1.0",
 | 
				
			||||||
    "@lhci/cli": "0.9.0",
 | 
					    "@lhci/cli": "0.9.0",
 | 
				
			||||||
    "@saithodev/semantic-release-backmerge": "2.1.2",
 | 
					    "@saithodev/semantic-release-backmerge": "2.1.2",
 | 
				
			||||||
    "@semantic-release/git": "10.0.1",
 | 
					    "@semantic-release/git": "10.0.1",
 | 
				
			||||||
    "@tailwindcss/typography": "0.5.4",
 | 
					    "@tailwindcss/typography": "0.5.7",
 | 
				
			||||||
    "@types/node": "18.7.13",
 | 
					    "@types/node": "18.7.23",
 | 
				
			||||||
    "@types/react": "18.0.17",
 | 
					    "@types/react": "18.0.21",
 | 
				
			||||||
    "@types/unist": "2.0.6",
 | 
					    "@types/unist": "2.0.6",
 | 
				
			||||||
    "@typescript-eslint/eslint-plugin": "5.35.1",
 | 
					    "@typescript-eslint/eslint-plugin": "5.38.1",
 | 
				
			||||||
    "autoprefixer": "10.4.8",
 | 
					    "autoprefixer": "10.4.12",
 | 
				
			||||||
    "cypress": "10.6.0",
 | 
					    "cypress": "10.9.0",
 | 
				
			||||||
    "editorconfig-checker": "4.0.2",
 | 
					    "editorconfig-checker": "4.0.2",
 | 
				
			||||||
    "eslint": "8.23.0",
 | 
					    "eslint": "8.24.0",
 | 
				
			||||||
    "eslint-config-conventions": "3.0.0",
 | 
					    "eslint-config-conventions": "4.0.1",
 | 
				
			||||||
    "eslint-config-next": "12.2.5",
 | 
					    "eslint-config-next": "12.3.1",
 | 
				
			||||||
    "eslint-config-prettier": "8.5.0",
 | 
					    "eslint-config-prettier": "8.5.0",
 | 
				
			||||||
    "eslint-plugin-import": "2.26.0",
 | 
					    "eslint-plugin-import": "2.26.0",
 | 
				
			||||||
    "eslint-plugin-prettier": "4.2.1",
 | 
					    "eslint-plugin-prettier": "4.2.1",
 | 
				
			||||||
@@ -92,7 +92,7 @@
 | 
				
			|||||||
    "semantic-release": "19.0.5",
 | 
					    "semantic-release": "19.0.5",
 | 
				
			||||||
    "start-server-and-test": "1.14.0",
 | 
					    "start-server-and-test": "1.14.0",
 | 
				
			||||||
    "tailwindcss": "3.1.8",
 | 
					    "tailwindcss": "3.1.8",
 | 
				
			||||||
    "typescript": "4.8.2",
 | 
					    "typescript": "4.8.4",
 | 
				
			||||||
    "vercel": "28.2.0"
 | 
					    "vercel": "28.4.5"
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,10 +1,11 @@
 | 
				
			|||||||
import { GetStaticProps, NextPage } from 'next'
 | 
					import type { GetStaticProps, NextPage } from 'next'
 | 
				
			||||||
import useTranslation from 'next-translate/useTranslation'
 | 
					import useTranslation from 'next-translate/useTranslation'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import { ErrorPage } from 'components/ErrorPage'
 | 
					import { ErrorPage } from 'components/ErrorPage'
 | 
				
			||||||
import { Head } from 'components/Head'
 | 
					import { Head } from 'components/Head'
 | 
				
			||||||
import { Header } from 'components/Header'
 | 
					import { Header } from 'components/Header'
 | 
				
			||||||
import { Footer, FooterProps } from 'components/Footer'
 | 
					import type { FooterProps } from 'components/Footer'
 | 
				
			||||||
 | 
					import { Footer } from 'components/Footer'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
interface Error404Props extends FooterProps {}
 | 
					interface Error404Props extends FooterProps {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,10 +1,11 @@
 | 
				
			|||||||
import { GetStaticProps, NextPage } from 'next'
 | 
					import type { GetStaticProps, NextPage } from 'next'
 | 
				
			||||||
import useTranslation from 'next-translate/useTranslation'
 | 
					import useTranslation from 'next-translate/useTranslation'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import { ErrorPage } from 'components/ErrorPage'
 | 
					import { ErrorPage } from 'components/ErrorPage'
 | 
				
			||||||
import { Head } from 'components/Head'
 | 
					import { Head } from 'components/Head'
 | 
				
			||||||
import { Header } from 'components/Header'
 | 
					import { Header } from 'components/Header'
 | 
				
			||||||
import { Footer, FooterProps } from 'components/Footer'
 | 
					import type { FooterProps } from 'components/Footer'
 | 
				
			||||||
 | 
					import { Footer } from 'components/Footer'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
interface Error500Props extends FooterProps {}
 | 
					interface Error500Props extends FooterProps {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,5 @@
 | 
				
			|||||||
import { useEffect } from 'react'
 | 
					import { useEffect } from 'react'
 | 
				
			||||||
import { AppProps } from 'next/app'
 | 
					import type { AppType } from 'next/app'
 | 
				
			||||||
import { ThemeProvider } from 'next-themes'
 | 
					import { ThemeProvider } from 'next-themes'
 | 
				
			||||||
import useTranslation from 'next-translate/useTranslation'
 | 
					import useTranslation from 'next-translate/useTranslation'
 | 
				
			||||||
import UniversalCookie from 'universal-cookie'
 | 
					import UniversalCookie from 'universal-cookie'
 | 
				
			||||||
@@ -13,7 +13,7 @@ const universalCookie = new UniversalCookie()
 | 
				
			|||||||
/** how long in seconds, until the cookie expires (10 years) */
 | 
					/** how long in seconds, until the cookie expires (10 years) */
 | 
				
			||||||
const COOKIE_MAX_AGE = 10 * 365.25 * 24 * 60 * 60
 | 
					const COOKIE_MAX_AGE = 10 * 365.25 * 24 * 60 * 60
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const Application = ({ Component, pageProps }: AppProps): JSX.Element => {
 | 
					const Application: AppType = ({ Component, pageProps }) => {
 | 
				
			||||||
  const { lang } = useTranslation()
 | 
					  const { lang } = useTranslation()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  useEffect(() => {
 | 
					  useEffect(() => {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
import { GetStaticProps, GetStaticPaths, NextPage } from 'next'
 | 
					import type { GetStaticProps, GetStaticPaths, NextPage } from 'next'
 | 
				
			||||||
import { MDXRemote } from 'next-mdx-remote'
 | 
					import { MDXRemote } from 'next-mdx-remote'
 | 
				
			||||||
import date from 'date-and-time'
 | 
					import date from 'date-and-time'
 | 
				
			||||||
import Giscus from '@giscus/react'
 | 
					import Giscus from '@giscus/react'
 | 
				
			||||||
@@ -6,7 +6,8 @@ import { useTheme } from 'next-themes'
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import { Head } from 'components/Head'
 | 
					import { Head } from 'components/Head'
 | 
				
			||||||
import { Header } from 'components/Header'
 | 
					import { Header } from 'components/Header'
 | 
				
			||||||
import { Footer, FooterProps } from 'components/Footer'
 | 
					import type { FooterProps } from 'components/Footer'
 | 
				
			||||||
 | 
					import { Footer } from 'components/Footer'
 | 
				
			||||||
import type { Post } from 'utils/blog'
 | 
					import type { Post } from 'utils/blog'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
interface BlogPostPageProps extends FooterProps {
 | 
					interface BlogPostPageProps extends FooterProps {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,10 +1,11 @@
 | 
				
			|||||||
import { GetStaticProps, NextPage } from 'next'
 | 
					import type { GetStaticProps, NextPage } from 'next'
 | 
				
			||||||
import Link from 'next/link'
 | 
					import Link from 'next/link'
 | 
				
			||||||
import date from 'date-and-time'
 | 
					import date from 'date-and-time'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import { Head } from 'components/Head'
 | 
					import { Head } from 'components/Head'
 | 
				
			||||||
import { Header } from 'components/Header'
 | 
					import { Header } from 'components/Header'
 | 
				
			||||||
import { Footer, FooterProps } from 'components/Footer'
 | 
					import type { FooterProps } from 'components/Footer'
 | 
				
			||||||
 | 
					import { Footer } from 'components/Footer'
 | 
				
			||||||
import { ShadowContainer } from 'components/design/ShadowContainer'
 | 
					import { ShadowContainer } from 'components/design/ShadowContainer'
 | 
				
			||||||
import type { PostMetadata } from 'utils/blog'
 | 
					import type { PostMetadata } from 'utils/blog'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
import { GetStaticProps, NextPage } from 'next'
 | 
					import type { GetStaticProps, NextPage } from 'next'
 | 
				
			||||||
import useTranslation from 'next-translate/useTranslation'
 | 
					import useTranslation from 'next-translate/useTranslation'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import { RevealFade } from 'components/design/RevealFade'
 | 
					import { RevealFade } from 'components/design/RevealFade'
 | 
				
			||||||
@@ -11,7 +11,8 @@ import { SocialMediaList } from 'components/Profile/SocialMediaList'
 | 
				
			|||||||
import { Skills } from 'components/Skills'
 | 
					import { Skills } from 'components/Skills'
 | 
				
			||||||
import { OpenSource } from 'components/OpenSource'
 | 
					import { OpenSource } from 'components/OpenSource'
 | 
				
			||||||
import { Header } from 'components/Header'
 | 
					import { Header } from 'components/Header'
 | 
				
			||||||
import { Footer, FooterProps } from 'components/Footer'
 | 
					import type { FooterProps } from 'components/Footer'
 | 
				
			||||||
 | 
					import { Footer } from 'components/Footer'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
interface HomeProps extends FooterProps {}
 | 
					interface HomeProps extends FooterProps {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										193
									
								
								posts/git-ultimate-guide.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										193
									
								
								posts/git-ultimate-guide.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,193 @@
 | 
				
			|||||||
 | 
					---
 | 
				
			||||||
 | 
					title: '🗓️ Git version control: Ultimate Guide'
 | 
				
			||||||
 | 
					description: 'What is `git`, what are the most used commands, best practices, and tips and tricks. The Ultimate guide to master `git` in your daily workflow.'
 | 
				
			||||||
 | 
					isPublished: true
 | 
				
			||||||
 | 
					publishedOn: '2022-09-04T14:33:07.465Z'
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Hello! 👋
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Welcome to the Ultimate Guide to master `git` in your daily workflow, we will see what are the most used commands, what are the best practices, and tips and tricks.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**Note:** Sources used to write this blog post are available at the [end of this post](#sources).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Introduction
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**Git** is a free and open source distributed **version control system** for keeping track of changes across a set of files.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Git was originally authored by [Linus Torvalds](https://en.wikipedia.org/wiki/Linus_Torvalds) in 2005 for development of the [Linux kernel](https://kernel.org/).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Git allows:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- to be able to work with several people on the same codebase.
 | 
				
			||||||
 | 
					- track changes to know who did what and when.
 | 
				
			||||||
 | 
					- revert changes.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Git is **decentralized**, which means that every developer has a full copy of the repository and the complete history of the project.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Get started with `git` and `.gitconfig` config file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The first thing you should do when you install Git is to set your user name and email address.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```sh
 | 
				
			||||||
 | 
					git config --global user.name "Username"
 | 
				
			||||||
 | 
					git config --global user.email "email@example.com"
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					These configurations are stored in the `.gitconfig` file in your home directory (e.g: `~/.gitconfig`) with this format:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```sh
 | 
				
			||||||
 | 
					[user]
 | 
				
			||||||
 | 
					  name = Username
 | 
				
			||||||
 | 
					  email = email@example.com
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					You can find more information and useful `git` configurations in the official documentation: [git-scm.com/docs/git-config](https://git-scm.com/docs/git-config).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## How `git` works?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Each `git` project is called a **repository** (or **repo** for short) and it contains all the files and folders for a project, as well as each file's revision history (**commits**) stored in the `.git` folder.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The history of a repository is represented by a graph.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Each node is called commit and contains:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- an instantaneous view (snapshot) of the state of the repository at a specific moment
 | 
				
			||||||
 | 
					- metadata: message, author, creation date, etc.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Commands cheatsheet
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```sh
 | 
				
			||||||
 | 
					# Initialize a new git repository
 | 
				
			||||||
 | 
					git init
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Clone a repository
 | 
				
			||||||
 | 
					git clone <url>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Add all the files to staging area
 | 
				
			||||||
 | 
					git add .
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Add specific file to staging area
 | 
				
			||||||
 | 
					git add <file>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Commit changes
 | 
				
			||||||
 | 
					git commit -m "chore: initial commit"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Add remote repository
 | 
				
			||||||
 | 
					git remote add origin <url>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Add forked repository
 | 
				
			||||||
 | 
					git remote add upstream <url>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Sync forked repository
 | 
				
			||||||
 | 
					git fetch upstream
 | 
				
			||||||
 | 
					git merge upstream/<branch>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Push changes to remote repository
 | 
				
			||||||
 | 
					git push
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Pull changes from remote repository
 | 
				
			||||||
 | 
					git pull
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Show the status of the working tree
 | 
				
			||||||
 | 
					git status
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Show the commit history
 | 
				
			||||||
 | 
					git log
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Create a new branch
 | 
				
			||||||
 | 
					git checkout -b <branch>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Switch to a branch (or tag or commit)
 | 
				
			||||||
 | 
					git checkout <branch>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Merge a branch into the current branch
 | 
				
			||||||
 | 
					git merge <branch>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Delete a branch
 | 
				
			||||||
 | 
					git branch -d <branch>
 | 
				
			||||||
 | 
					git push origin --delete <branch>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Fetch branches from remote repository and prune
 | 
				
			||||||
 | 
					git fetch --prune
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Revert a commit
 | 
				
			||||||
 | 
					git revert <commit>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Change several past commits (interactive rebase)
 | 
				
			||||||
 | 
					# HEAD points to the current consulted commit.
 | 
				
			||||||
 | 
					git rebase -i HEAD~<number-of-commits>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Reset the current branch, delete all commits since <branch> (without removing the changes)
 | 
				
			||||||
 | 
					git reset --soft <branch>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Apply the changes introduced by some existing commits
 | 
				
			||||||
 | 
					git cherry-pick <commit>
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## `.gitignore` file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The `.gitignore` file is a text file that tells `git` which files (or patterns) it should ignore.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The `.gitignore` file is usually placed in the root directory of the repository.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					We usually ignore files that are generated by the build process or files that contain sensitive information.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Example of `.gitignore` file:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```sh
 | 
				
			||||||
 | 
					.env
 | 
				
			||||||
 | 
					build
 | 
				
			||||||
 | 
					*.exe
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## `.gitkeep` file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The `.gitkeep` file is a file that is used to keep an empty directory in a Git repository.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This is useful when you want to keep an empty directory in your repository but you don't want to commit any file inside it.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Git remote repositories (GitHub/GitLab)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Explain what are the differences, how it works, + basic vocabulary...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### SSH vs HTTPS authentication
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Explain the differences + quickly setup a SSH key...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Sign `git` commits with `gpg`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Explain, how and why to sign `git` commits...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Continous Integration/Continuous Delivery
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GitHub Actions, Vercel, why is it so important...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Best practices and `git` workflows
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Commit messages and semver
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### GitFlow
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### GitHub Flow
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Trunk-based
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Conclusion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					`git` is the tool that every programmer should know to do collaborative work and keeping track of changes across a set of files.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Sources
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- [Git official website and documentation](https://git-scm.com/)
 | 
				
			||||||
 | 
					- [Git Explained in 100 Seconds](https://www.youtube.com/watch?v=hwP7WQkmECE)
 | 
				
			||||||
 | 
					- [Understand Git in 7 minutes](https://www.jesuisundev.com/en/understand-git-in-7-minutes/)
 | 
				
			||||||
 | 
					- [How (and why) to sign Git commits | With Blue Ink](https://withblue.ink/2020/05/17/how-and-why-to-sign-git-commits.html?utm_source=tiktok&utm_campaign=codetok-sign)
 | 
				
			||||||
 | 
					- [Creator of Gitflow blog post](https://nvie.com/posts/a-successful-git-branching-model/)
 | 
				
			||||||
 | 
					- [What Are the Best Git Branching Strategies](https://www.flagship.io/git-branching-strategies/)
 | 
				
			||||||
@@ -53,8 +53,12 @@ export const getPosts = async (): Promise<PostMetadata[]> => {
 | 
				
			|||||||
    })
 | 
					    })
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
  const postsWithTimeSorted = postsWithTime
 | 
					  const postsWithTimeSorted = postsWithTime
 | 
				
			||||||
    .filter((post) => post.frontmatter.isPublished)
 | 
					    .filter((post) => {
 | 
				
			||||||
    .sort((a, b) => b.time - a.time)
 | 
					      return post.frontmatter.isPublished
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					    .sort((a, b) => {
 | 
				
			||||||
 | 
					      return b.time - a.time
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
  return postsWithTimeSorted
 | 
					  return postsWithTimeSorted
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -62,7 +66,9 @@ export const getPostBySlug = async (
 | 
				
			|||||||
  slug?: string | string[]
 | 
					  slug?: string | string[]
 | 
				
			||||||
): Promise<Post | undefined> => {
 | 
					): Promise<Post | undefined> => {
 | 
				
			||||||
  const posts = await getPosts()
 | 
					  const posts = await getPosts()
 | 
				
			||||||
  const post = posts.find((post) => post.slug === slug)
 | 
					  const post = posts.find((post) => {
 | 
				
			||||||
 | 
					    return post.slug === slug
 | 
				
			||||||
 | 
					  })
 | 
				
			||||||
  if (post == null) {
 | 
					  if (post == null) {
 | 
				
			||||||
    return undefined
 | 
					    return undefined
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
import { Plugin, Transformer } from 'unified'
 | 
					import type { Plugin, Transformer } from 'unified'
 | 
				
			||||||
import { Literal } from 'unist'
 | 
					import type { Literal } from 'unist'
 | 
				
			||||||
import { visit } from 'unist-util-visit'
 | 
					import { visit } from 'unist-util-visit'
 | 
				
			||||||
import { Highlighter } from 'shiki'
 | 
					import type { Highlighter } from 'shiki'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export interface RemarkSyntaxHighlightingPluginOptions {
 | 
					export interface RemarkSyntaxHighlightingPluginOptions {
 | 
				
			||||||
  highlighter: Highlighter
 | 
					  highlighter: Highlighter
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user