From 1b30ba9d65e191583c107bd94e7ece940a74000f Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 31 Jul 2024 01:39:51 +1200 Subject: [PATCH 01/27] :lipstick: align subtitle under projects header --- next/app/projects/page.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/next/app/projects/page.tsx b/next/app/projects/page.tsx index 8b8c793..394820c 100644 --- a/next/app/projects/page.tsx +++ b/next/app/projects/page.tsx @@ -29,7 +29,7 @@ export default async function ProjectsPage() {

Projects

-

{projectsPage.Subtitle}

+

{projectsPage.Subtitle}

{projects.map((p) => ( From 4f358aa3a9ea054570a44469055fe47d2a5c52f0 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 31 Jul 2024 01:59:18 +1200 Subject: [PATCH 02/27] :lipstick: fix project page background position --- next/app/projects/page.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/next/app/projects/page.tsx b/next/app/projects/page.tsx index 394820c..06d0eb6 100644 --- a/next/app/projects/page.tsx +++ b/next/app/projects/page.tsx @@ -21,11 +21,13 @@ export default async function ProjectsPage() {
+




Projects

From 98a33e4534a8c0801747f2cf9cd39860018f6e58 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 7 Aug 2024 00:58:10 +1200 Subject: [PATCH 03/27] :lipstick: fix headline to be centered and removed comments --- next/app/projects/page.tsx | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/next/app/projects/page.tsx b/next/app/projects/page.tsx index 06d0eb6..0c4c4ac 100644 --- a/next/app/projects/page.tsx +++ b/next/app/projects/page.tsx @@ -23,15 +23,13 @@ export default async function ProjectsPage() { src={getLargestImageUrl(projectsPage.BackgroundImage)} alt="Projects page background image" className="absolute inset-0 -z-10 object-cover object-[center_bottom] w-full h-full brightness-50" - // changed background image to crop the top - on my screen the height in general looks cropped though width={1920} height={1080} /> -




-

+

Projects

-

{projectsPage.Subtitle}

+

{projectsPage.Subtitle}

{projects.map((p) => ( From 124b05816197c74731816e2f286ae288163867de Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 14 Aug 2024 13:16:57 +1200 Subject: [PATCH 04/27] :sparkles: add minor styling changes --- next/app/projects/page.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/next/app/projects/page.tsx b/next/app/projects/page.tsx index 0c4c4ac..91a47c7 100644 --- a/next/app/projects/page.tsx +++ b/next/app/projects/page.tsx @@ -26,7 +26,7 @@ export default async function ProjectsPage() { width={1920} height={1080} /> -

+

Projects

{projectsPage.Subtitle}

@@ -53,7 +53,7 @@ export default async function ProjectsPage() { year: "numeric", })} -
+

{p.Description}

- Read More - + */}
))} From 884fc3bd89267f268956e5f91f36e11a70fbc296 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 20 Aug 2024 23:48:09 +1200 Subject: [PATCH 05/27] :lipstick: remove bg image align change --- next/app/projects/page.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/next/app/projects/page.tsx b/next/app/projects/page.tsx index 91a47c7..9c748db 100644 --- a/next/app/projects/page.tsx +++ b/next/app/projects/page.tsx @@ -22,7 +22,7 @@ export default async function ProjectsPage() { Projects page background image From 22e6c4fbb54799c8e405e0a3b6e0af9e3c89bd2a Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 21 Aug 2024 13:39:05 +1200 Subject: [PATCH 06/27] :lipstick: fix history timeline styling --- next/app/about/page.tsx | 138 +- next/components/history/HistoryContent.tsx | 20 + package-lock.json | 2038 ++++++++++---------- 3 files changed, 1147 insertions(+), 1049 deletions(-) create mode 100644 next/components/history/HistoryContent.tsx diff --git a/next/app/about/page.tsx b/next/app/about/page.tsx index 68b749c..a84ee25 100644 --- a/next/app/about/page.tsx +++ b/next/app/about/page.tsx @@ -2,6 +2,7 @@ import flair from "@/assets/about/flair.png"; import valueFlair1 from "@/assets/about/value1.png"; import valueFlair2 from "@/assets/about/value2.png"; import Header from "@/components/header/header"; +import HistoryContent from "@/components/history/HistoryContent"; import { aboutPageSchema, TimelineElement } from "@/schemas/single/AboutPage"; import fetchStrapi from "@/util/strapi"; import Image from "next/image"; @@ -10,6 +11,7 @@ import styles from "./styles.module.css"; export default async function AboutPage() { const data = await fetchStrapi("about-page", aboutPageSchema); + const timeline: TimelineElement[] = data.Timeline.map((e) => { const date = new Date(e.Date); return { @@ -18,6 +20,9 @@ export default async function AboutPage() { }; }).sort((a, b) => a.Date.getTime() - b.Date.getTime()); + console.log(timeline); + + return (
Our History -
-
    - {timeline.map((e, i) => { - const isImage = "Image" in e; - - return ( -
  1. -
    - - {isImage ? ( - - ) : ( -
    -

    {e.Title}

    -

    - {e.Description} -

    -
    - )} -
  2. - ); - })} +
    + + {/* the 2005 */} + {/*
    2005
    */} + +
      + {timeline.map((e, i) => { + const isImage = "Image" in e; + const isEven = i % 2 === 0; + + if (isEven) { + return null; + } + + return ( +
    1. + {/*
    2. */} + + {/* circle */} + {/*
      */} + +
      + + + + {/* style below line if even */} + {/* {isEven ? () : ()} */} + + {isImage ? ( + + ) : ( + //
      + //

      {e.Title}

      + //

      + // {e.Description} + //

      + //
      + // + + )} +
    3. + ); + })} +
    +
    + {/*
    */} + +
    +
    + +
      + + {timeline.map((e, i) => { + const isImage = "Image" in e; + const isOdd = i % 2 != 0; + + if (isOdd) { + return null; + } + + return ( +
    1. + +
      + + + + {isImage ? ( + + ) : ( + + )} +
    2. + ); + })}
); } + + +//notes +// first, change orientation of timeline -- DONE :D +// then alternate elements --> with i%2 ?? +// then, style them +// image component, content component?? + +// to do +// fix alternation of elements +// align vertical line with middle of elements +// fix overflow in text boxes \ No newline at end of file diff --git a/next/components/history/HistoryContent.tsx b/next/components/history/HistoryContent.tsx new file mode 100644 index 0000000..4ea1b9b --- /dev/null +++ b/next/components/history/HistoryContent.tsx @@ -0,0 +1,20 @@ +type HistoryContentProps = { + title: string; + description: string; +} + +export default function HistoryContent({ title, description }: HistoryContentProps) { + + return ( +
+
+

{title}

+

+ {description} +

+
+ {/* const width = document.getElementById("content").offsetWidth; */} +
+ + ) +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index ad5b6a5..482382b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,1020 +1,1020 @@ { - "name": "younite-web", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "younite-web", - "version": "1.0.0", - "dependencies": { - "@strapi-community/strapi-provider-upload-google-cloud-storage": "^4.10.5" - }, - "devDependencies": { - "concurrently": "^8.2.2", - "prettier": "^3.3.3" - } - }, - "node_modules/@babel/runtime": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.6.tgz", - "integrity": "sha512-Ja18XcETdEl5mzzACGd+DKgaGJzPTCow7EglgwTmHdwokzDFYh/MHua6lU6DV/hjF2IaOJ4oX2nqnjG7RElKOw==", - "dev": true, - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@google-cloud/paginator": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-3.0.7.tgz", - "integrity": "sha512-jJNutk0arIQhmpUUQJPJErsojqo834KcyB6X7a1mxuic8i1tKXxde8E69IZxNZawRIlZdIK2QY4WALvlK5MzYQ==", - "dependencies": { - "arrify": "^2.0.0", - "extend": "^3.0.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@google-cloud/projectify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-3.0.0.tgz", - "integrity": "sha512-HRkZsNmjScY6Li8/kb70wjGlDDyLkVk3KvoEo9uIoxSjYLJasGiCch9+PqRVDOCGUFvEIqyogl+BeqILL4OJHA==", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@google-cloud/promisify": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-3.0.1.tgz", - "integrity": "sha512-z1CjRjtQyBOYL+5Qr9DdYIfrdLBe746jRTYfaYU6MeXkqp7UfYs/jX16lFFVzZ7PGEJvqZNqYUEtb1mvDww4pA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/@google-cloud/storage": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-6.12.0.tgz", - "integrity": "sha512-78nNAY7iiZ4O/BouWMWTD/oSF2YtYgYB3GZirn0To6eBOugjXVoK+GXgUXOl+HlqbAOyHxAVXOlsj3snfbQ1dw==", - "dependencies": { - "@google-cloud/paginator": "^3.0.7", - "@google-cloud/projectify": "^3.0.0", - "@google-cloud/promisify": "^3.0.0", - "abort-controller": "^3.0.0", - "async-retry": "^1.3.3", - "compressible": "^2.0.12", - "duplexify": "^4.0.0", - "ent": "^2.2.0", - "extend": "^3.0.2", - "fast-xml-parser": "^4.2.2", - "gaxios": "^5.0.0", - "google-auth-library": "^8.0.1", - "mime": "^3.0.0", - "mime-types": "^2.0.8", - "p-limit": "^3.0.1", - "retry-request": "^5.0.0", - "teeny-request": "^8.0.0", - "uuid": "^8.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@strapi-community/strapi-provider-upload-google-cloud-storage": { - "version": "4.10.5", - "resolved": "https://registry.npmjs.org/@strapi-community/strapi-provider-upload-google-cloud-storage/-/strapi-provider-upload-google-cloud-storage-4.10.5.tgz", - "integrity": "sha512-hak99DHdPQCM9U/CfkPiojDgUM/sZ+lRZs+aO7NEdkZGJOw+fdcSHqAFRHgCifQGmDHAoMEFJDw2b9urKJLdvQ==", - "dependencies": { - "@google-cloud/storage": "^6.10.0", - "slugify": "^1.6.6" - }, - "engines": { - "node": "^16 || ^18", - "npm": ">=8" - } - }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "engines": { - "node": ">= 10" - } - }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", - "engines": { - "node": ">=8" - } - }, - "node_modules/async-retry": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", - "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", - "dependencies": { - "retry": "0.13.1" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/bignumber.js": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", - "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", - "engines": { - "node": "*" - } - }, - "node_modules/buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chalk/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dependencies": { - "mime-db": ">= 1.43.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/concurrently": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-8.2.2.tgz", - "integrity": "sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.2", - "date-fns": "^2.30.0", - "lodash": "^4.17.21", - "rxjs": "^7.8.1", - "shell-quote": "^1.8.1", - "spawn-command": "0.0.2", - "supports-color": "^8.1.1", - "tree-kill": "^1.2.2", - "yargs": "^17.7.2" - }, - "bin": { - "conc": "dist/bin/concurrently.js", - "concurrently": "dist/bin/concurrently.js" - }, - "engines": { - "node": "^14.13.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" - } - }, - "node_modules/date-fns": { - "version": "2.30.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", - "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.21.0" - }, - "engines": { - "node": ">=0.11" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/date-fns" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/duplexify": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz", - "integrity": "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==", - "dependencies": { - "end-of-stream": "^1.4.1", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1", - "stream-shift": "^1.0.2" - } - }, - "node_modules/ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/ent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==" - }, - "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "node_modules/fast-text-encoding": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz", - "integrity": "sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==" - }, - "node_modules/fast-xml-parser": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.0.tgz", - "integrity": "sha512-kLY3jFlwIYwBNDojclKsNAC12sfD6NwW74QB2CoNGPvtVxjliYehVunB3HYyNi+n4Tt1dAcgwYvmKF/Z18flqg==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - }, - { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" - } - ], - "dependencies": { - "strnum": "^1.0.5" - }, - "bin": { - "fxparser": "src/cli/cli.js" - } - }, - "node_modules/gaxios": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-5.1.3.tgz", - "integrity": "sha512-95hVgBRgEIRQQQHIbnxBXeHbW4TqFk4ZDJW7wmVtvYar72FdhRIo1UGOLS2eRAKCPEdPBWu+M7+A33D9CdX9rA==", - "dependencies": { - "extend": "^3.0.2", - "https-proxy-agent": "^5.0.0", - "is-stream": "^2.0.0", - "node-fetch": "^2.6.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/gcp-metadata": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.3.0.tgz", - "integrity": "sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w==", - "dependencies": { - "gaxios": "^5.0.0", - "json-bigint": "^1.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/google-auth-library": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-8.9.0.tgz", - "integrity": "sha512-f7aQCJODJFmYWN6PeNKzgvy9LI2tYmXnzpNDHEjG5sDNPgGb2FXQyTBnXeSH+PAtpKESFD+LmHw3Ox3mN7e1Fg==", - "dependencies": { - "arrify": "^2.0.0", - "base64-js": "^1.3.0", - "ecdsa-sig-formatter": "^1.0.11", - "fast-text-encoding": "^1.0.0", - "gaxios": "^5.0.0", - "gcp-metadata": "^5.3.0", - "gtoken": "^6.1.0", - "jws": "^4.0.0", - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/google-p12-pem": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-4.0.1.tgz", - "integrity": "sha512-WPkN4yGtz05WZ5EhtlxNDWPhC4JIic6G8ePitwUWy4l+XPVYec+a0j0Ts47PDtW59y3RwAhUd9/h9ZZ63px6RQ==", - "dependencies": { - "node-forge": "^1.3.1" - }, - "bin": { - "gp12-pem": "build/src/bin/gp12-pem.js" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/gtoken": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-6.1.2.tgz", - "integrity": "sha512-4ccGpzz7YAr7lxrT2neugmXQ3hP9ho2gcaityLVkiUecAiwiy60Ii8gRbZeOsXV19fYaRjgBSshs8kXw+NKCPQ==", - "dependencies": { - "gaxios": "^5.0.1", - "google-p12-pem": "^4.0.0", - "jws": "^4.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/json-bigint": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", - "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", - "dependencies": { - "bignumber.js": "^9.0.0" - } - }, - "node_modules/jwa": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", - "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", - "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/jws": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", - "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", - "dependencies": { - "jwa": "^2.0.0", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", - "engines": { - "node": ">= 6.13.0" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/prettier": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", - "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", - "dev": true, - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "dev": true - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/retry-request": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-5.0.2.tgz", - "integrity": "sha512-wfI3pk7EE80lCIXprqh7ym48IHYdwmAAzESdbU8Q9l7pnRCk9LEhpbOTNKjz6FARLm/Bl5m+4F0ABxOkYUujSQ==", - "dependencies": { - "debug": "^4.1.1", - "extend": "^3.0.2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/shell-quote": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", - "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/slugify": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.6.tgz", - "integrity": "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/spawn-command": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz", - "integrity": "sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==", - "dev": true - }, - "node_modules/stream-events": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", - "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==", - "dependencies": { - "stubs": "^3.0.0" - } - }, - "node_modules/stream-shift": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", - "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==" - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strnum": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", - "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==" - }, - "node_modules/stubs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", - "integrity": "sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==" - }, - "node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/teeny-request": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-8.0.3.tgz", - "integrity": "sha512-jJZpA5He2y52yUhA7pyAGZlgQpcB+xLjcN0eUFxr9c8hP/H7uOXbBNVo/O0C/xVfJLJs680jvkFgVJEEvk9+ww==", - "dependencies": { - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "node-fetch": "^2.6.1", - "stream-events": "^1.0.5", - "uuid": "^9.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/teeny-request/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true, - "bin": { - "tree-kill": "cli.js" - } - }, - "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} + "name": "younite-web", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "younite-web", + "version": "1.0.0", + "dependencies": { + "@strapi-community/strapi-provider-upload-google-cloud-storage": "^4.10.5" + }, + "devDependencies": { + "concurrently": "^8.2.2", + "prettier": "^3.3.3" + } + }, + "node_modules/@babel/runtime": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.6.tgz", + "integrity": "sha512-Ja18XcETdEl5mzzACGd+DKgaGJzPTCow7EglgwTmHdwokzDFYh/MHua6lU6DV/hjF2IaOJ4oX2nqnjG7RElKOw==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@google-cloud/paginator": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-3.0.7.tgz", + "integrity": "sha512-jJNutk0arIQhmpUUQJPJErsojqo834KcyB6X7a1mxuic8i1tKXxde8E69IZxNZawRIlZdIK2QY4WALvlK5MzYQ==", + "dependencies": { + "arrify": "^2.0.0", + "extend": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@google-cloud/projectify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-3.0.0.tgz", + "integrity": "sha512-HRkZsNmjScY6Li8/kb70wjGlDDyLkVk3KvoEo9uIoxSjYLJasGiCch9+PqRVDOCGUFvEIqyogl+BeqILL4OJHA==", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@google-cloud/promisify": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-3.0.1.tgz", + "integrity": "sha512-z1CjRjtQyBOYL+5Qr9DdYIfrdLBe746jRTYfaYU6MeXkqp7UfYs/jX16lFFVzZ7PGEJvqZNqYUEtb1mvDww4pA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/@google-cloud/storage": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-6.12.0.tgz", + "integrity": "sha512-78nNAY7iiZ4O/BouWMWTD/oSF2YtYgYB3GZirn0To6eBOugjXVoK+GXgUXOl+HlqbAOyHxAVXOlsj3snfbQ1dw==", + "dependencies": { + "@google-cloud/paginator": "^3.0.7", + "@google-cloud/projectify": "^3.0.0", + "@google-cloud/promisify": "^3.0.0", + "abort-controller": "^3.0.0", + "async-retry": "^1.3.3", + "compressible": "^2.0.12", + "duplexify": "^4.0.0", + "ent": "^2.2.0", + "extend": "^3.0.2", + "fast-xml-parser": "^4.2.2", + "gaxios": "^5.0.0", + "google-auth-library": "^8.0.1", + "mime": "^3.0.0", + "mime-types": "^2.0.8", + "p-limit": "^3.0.1", + "retry-request": "^5.0.0", + "teeny-request": "^8.0.0", + "uuid": "^8.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@strapi-community/strapi-provider-upload-google-cloud-storage": { + "version": "4.10.5", + "resolved": "https://registry.npmjs.org/@strapi-community/strapi-provider-upload-google-cloud-storage/-/strapi-provider-upload-google-cloud-storage-4.10.5.tgz", + "integrity": "sha512-hak99DHdPQCM9U/CfkPiojDgUM/sZ+lRZs+aO7NEdkZGJOw+fdcSHqAFRHgCifQGmDHAoMEFJDw2b9urKJLdvQ==", + "dependencies": { + "@google-cloud/storage": "^6.10.0", + "slugify": "^1.6.6" + }, + "engines": { + "node": "^16 || ^18", + "npm": ">=8" + } + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "engines": { + "node": ">=8" + } + }, + "node_modules/async-retry": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", + "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", + "dependencies": { + "retry": "0.13.1" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bignumber.js": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", + "engines": { + "node": "*" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/concurrently": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-8.2.2.tgz", + "integrity": "sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.2", + "date-fns": "^2.30.0", + "lodash": "^4.17.21", + "rxjs": "^7.8.1", + "shell-quote": "^1.8.1", + "spawn-command": "0.0.2", + "supports-color": "^8.1.1", + "tree-kill": "^1.2.2", + "yargs": "^17.7.2" + }, + "bin": { + "conc": "dist/bin/concurrently.js", + "concurrently": "dist/bin/concurrently.js" + }, + "engines": { + "node": "^14.13.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" + } + }, + "node_modules/date-fns": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.21.0" + }, + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/duplexify": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz", + "integrity": "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==", + "dependencies": { + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.2" + } + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==" + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/fast-text-encoding": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz", + "integrity": "sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==" + }, + "node_modules/fast-xml-parser": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.0.tgz", + "integrity": "sha512-kLY3jFlwIYwBNDojclKsNAC12sfD6NwW74QB2CoNGPvtVxjliYehVunB3HYyNi+n4Tt1dAcgwYvmKF/Z18flqg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + }, + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + } + ], + "dependencies": { + "strnum": "^1.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/gaxios": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-5.1.3.tgz", + "integrity": "sha512-95hVgBRgEIRQQQHIbnxBXeHbW4TqFk4ZDJW7wmVtvYar72FdhRIo1UGOLS2eRAKCPEdPBWu+M7+A33D9CdX9rA==", + "dependencies": { + "extend": "^3.0.2", + "https-proxy-agent": "^5.0.0", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/gcp-metadata": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.3.0.tgz", + "integrity": "sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w==", + "dependencies": { + "gaxios": "^5.0.0", + "json-bigint": "^1.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/google-auth-library": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-8.9.0.tgz", + "integrity": "sha512-f7aQCJODJFmYWN6PeNKzgvy9LI2tYmXnzpNDHEjG5sDNPgGb2FXQyTBnXeSH+PAtpKESFD+LmHw3Ox3mN7e1Fg==", + "dependencies": { + "arrify": "^2.0.0", + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "fast-text-encoding": "^1.0.0", + "gaxios": "^5.0.0", + "gcp-metadata": "^5.3.0", + "gtoken": "^6.1.0", + "jws": "^4.0.0", + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/google-p12-pem": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-4.0.1.tgz", + "integrity": "sha512-WPkN4yGtz05WZ5EhtlxNDWPhC4JIic6G8ePitwUWy4l+XPVYec+a0j0Ts47PDtW59y3RwAhUd9/h9ZZ63px6RQ==", + "dependencies": { + "node-forge": "^1.3.1" + }, + "bin": { + "gp12-pem": "build/src/bin/gp12-pem.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/gtoken": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-6.1.2.tgz", + "integrity": "sha512-4ccGpzz7YAr7lxrT2neugmXQ3hP9ho2gcaityLVkiUecAiwiy60Ii8gRbZeOsXV19fYaRjgBSshs8kXw+NKCPQ==", + "dependencies": { + "gaxios": "^5.0.1", + "google-p12-pem": "^4.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/json-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", + "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", + "dependencies": { + "bignumber.js": "^9.0.0" + } + }, + "node_modules/jwa": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", + "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", + "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "dependencies": { + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/prettier": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dev": true + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/retry-request": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-5.0.2.tgz", + "integrity": "sha512-wfI3pk7EE80lCIXprqh7ym48IHYdwmAAzESdbU8Q9l7pnRCk9LEhpbOTNKjz6FARLm/Bl5m+4F0ABxOkYUujSQ==", + "dependencies": { + "debug": "^4.1.1", + "extend": "^3.0.2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/slugify": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.6.tgz", + "integrity": "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/spawn-command": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz", + "integrity": "sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==", + "dev": true + }, + "node_modules/stream-events": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", + "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==", + "dependencies": { + "stubs": "^3.0.0" + } + }, + "node_modules/stream-shift": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==" + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strnum": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==" + }, + "node_modules/stubs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", + "integrity": "sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==" + }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/teeny-request": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-8.0.3.tgz", + "integrity": "sha512-jJZpA5He2y52yUhA7pyAGZlgQpcB+xLjcN0eUFxr9c8hP/H7uOXbBNVo/O0C/xVfJLJs680jvkFgVJEEvk9+ww==", + "dependencies": { + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "node-fetch": "^2.6.1", + "stream-events": "^1.0.5", + "uuid": "^9.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/teeny-request/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} \ No newline at end of file From 6c568a6e10b33ff3c8ff364f043f5dc8a50be4c6 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 21 Aug 2024 14:21:07 +1200 Subject: [PATCH 07/27] :lipstick: fix styling --- next/components/history/HistoryContent.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/next/components/history/HistoryContent.tsx b/next/components/history/HistoryContent.tsx index 4ea1b9b..3e3a9fa 100644 --- a/next/components/history/HistoryContent.tsx +++ b/next/components/history/HistoryContent.tsx @@ -3,12 +3,13 @@ type HistoryContentProps = { description: string; } + + export default function HistoryContent({ title, description }: HistoryContentProps) { return (
-
-

{title}

+

{title}

{description}

From 8a338f2dff1b2efd7cd5a9740f640d5f1966138d Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 21 Aug 2024 14:45:05 +1200 Subject: [PATCH 08/27] made minor code changes --- next/app/about/page.tsx | 159 ++++++++++++++++++++-------------------- package-lock.json | 2 +- 2 files changed, 82 insertions(+), 79 deletions(-) diff --git a/next/app/about/page.tsx b/next/app/about/page.tsx index a84ee25..5b0f525 100644 --- a/next/app/about/page.tsx +++ b/next/app/about/page.tsx @@ -63,57 +63,59 @@ export default async function AboutPage() { Our History
+ {/* the 2005 */} + {/*
2005
*/} - {/* the 2005 */} - {/*
2005
*/} - -
    - {timeline.map((e, i) => { - const isImage = "Image" in e; - const isEven = i % 2 === 0; +
      + {timeline.map((e, i) => { + const isImage = "Image" in e; + const isEven = i % 2 === 0; - if (isEven) { - return null; - } + if (isEven) { + return null; + } - return ( -
    1. + return ( +
    2. {/*
    3. */} - {/* circle */} - {/*
      */} - -
      - - - - {/* style below line if even */} - {/* {isEven ? () : ()} */} - - {isImage ? ( - - ) : ( - //
      - //

      {e.Title}

      - //

      - // {e.Description} - //

      - //
      - // - - )} -
    4. - ); - })} -
    + {/* circle */} + {/*
    */} + +
    + + + + {/* style below line if even */} + {/* {isEven ? () : ()} */} + + {isImage ? ( + + ) : ( + //
    + //

    {e.Title}

    + //

    + // {e.Description} + //

    + //
    + // + + )} + + ); + })} +
{/*
*/} @@ -121,38 +123,39 @@ export default async function AboutPage() {
    - - {timeline.map((e, i) => { - const isImage = "Image" in e; - const isOdd = i % 2 != 0; - - if (isOdd) { - return null; - } - - return ( -
  1. - -
    - - - - {isImage ? ( - - ) : ( - - )} -
  2. - ); - })} + {timeline.map((e, i) => { + const isImage = "Image" in e; + const isOdd = i % 2 != 0; + + if (isOdd) { + return null; + } + + return ( +
  3. +
    + + + + {isImage ? ( + + ) : ( + + )} +
  4. + ); + })}
diff --git a/package-lock.json b/package-lock.json index 482382b..6973e5d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1017,4 +1017,4 @@ } } } -} \ No newline at end of file +} From e8a5f49f93bcb3b7a37c1860c8769970275bfd5b Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 22 Aug 2024 17:31:26 +1200 Subject: [PATCH 09/27] :memo: add to notes --- next/app/about/page.tsx | 6 +++--- strapi/.tmp/data.db | Bin 1056768 -> 1056768 bytes 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/next/app/about/page.tsx b/next/app/about/page.tsx index be7b06d..f44e463 100644 --- a/next/app/about/page.tsx +++ b/next/app/about/page.tsx @@ -121,7 +121,7 @@ export default async function AboutPage() { } return ( -
  • +
  • ); @@ -137,10 +134,7 @@ export default async function AboutPage() { height={200} /> ) : ( - + )} ); diff --git a/next/app/test/deiza/historytest/page.tsx b/next/app/test/deiza/historytest/page.tsx index 86c63e7..de620c7 100644 --- a/next/app/test/deiza/historytest/page.tsx +++ b/next/app/test/deiza/historytest/page.tsx @@ -1,32 +1,31 @@ import HistoryComponent from "@/components/history/HistoryComponent"; -import { TimelineElement } from "@/schemas/single/AboutPage"; - +import { aboutPageSchema, TimelineElement } from "@/schemas/single/AboutPage"; +import fetchStrapi from "@/util/strapi"; export default async function HistoryTest() { // return HistoryImage({src: "/uploads/istockphoto_1413873774_612x612_27a467169b.jpg"}); // return // return - // const data = await fetchStrapi("about-page", aboutPageSchema); + const data = await fetchStrapi("about-page", aboutPageSchema); - // const timeline: TimelineElement[] = data.Timeline.map((e) => { - // const date = new Date(e.Date); - // return { - // ...e, - // Date: date, - // }; - // }).sort((a, b) => a.Date.getTime() - b.Date.getTime()); + const timeline: TimelineElement[] = data.Timeline.map((e) => { + const date = new Date(e.Date); + return { + ...e, + Date: date, + }; + }).sort((a, b) => a.Date.getTime() - b.Date.getTime()); - const timeline: TimelineElement[] = [ - ] + // console.log(timeline); + // const timeline: TimelineElement[] = []; // ({ Date: Date; Image: string; Date: Date; Title: string; Description: string; }) return ( - // -
    - Hi -
    - ) - + + //
    + // Hi + //
    + ); } \ No newline at end of file diff --git a/next/components/history/HistoryComponent.tsx b/next/components/history/HistoryComponent.tsx index 50dfe57..4ac55e9 100644 --- a/next/components/history/HistoryComponent.tsx +++ b/next/components/history/HistoryComponent.tsx @@ -1,23 +1,30 @@ -import { TimelineElement } from "@/schemas/single/AboutPage" +import { + ImageTimelineElement, + TextTimelineElement, + TimelineElement, +} from "@/schemas/single/AboutPage"; +import HistoryImage from "./HistoryImage"; +import HistoryText from "./HistoryText"; type HistoryComponentProps = { - timelineElements: [TimelineElement] -} - - - -export default function HistoryComponent({timelineElements}: HistoryComponentProps) { + timelineElements: TimelineElement[]; +}; - const fullTimeline: TimelineElement[] = timelineElements.map((element) => { - const date = new Date(element.Date); - return { - ...element, - Date: date, - }; - }).sort((a, b) => a.Date.getTime() - b.Date.getTime()); +export default function HistoryComponent({ + timelineElements, +}: HistoryComponentProps) { + const fullTimeline: TimelineElement[] = timelineElements + .map((element) => { + const date = new Date(element.Date); + return { + ...element, + Date: date, + }; + }) + .sort((a, b) => a.Date.getTime() - b.Date.getTime()); - const topTimeline: TimelineElement[] = [] - const bottomTimeline: TimelineElement[] = [] + const topTimeline: TimelineElement[] = []; + const bottomTimeline: TimelineElement[] = []; for (let i = 0; i < fullTimeline.length; i++) { if (i % 2 == 0) { @@ -27,14 +34,46 @@ export default function HistoryComponent({timelineElements}: HistoryComponentPro } } + // console.log("top timeline", topTimeline); + // console.log(bottomTimeline); - return ( - - - - -
    + const topReactNodes = topTimeline.map((element) => { + if (element.__component == "project-timeline.text-timeline-item") { + const textElement = element as TextTimelineElement; + return ( + + ); + } else { + const imageElement = element as ImageTimelineElement; + return ; + } + }); + const bottomReactNodes = bottomTimeline.map((element) => { + if (element.__component == "project-timeline.text-timeline-item") { + const textElement = element as TextTimelineElement; + return ( + + ); + } else { + const imageElement = element as ImageTimelineElement; + return ; + } + }); - ) -} \ No newline at end of file + return ( +
    +
    {topReactNodes}
    +
    ; +
    {bottomReactNodes}
    +
    + ); +} diff --git a/next/components/history/HistoryContent.tsx b/next/components/history/HistoryContent.tsx deleted file mode 100644 index 3e3a9fa..0000000 --- a/next/components/history/HistoryContent.tsx +++ /dev/null @@ -1,21 +0,0 @@ -type HistoryContentProps = { - title: string; - description: string; -} - - - -export default function HistoryContent({ title, description }: HistoryContentProps) { - - return ( -
    -

    {title}

    -

    - {description} -

    -
    - {/* const width = document.getElementById("content").offsetWidth; */} -
    - - ) -} \ No newline at end of file diff --git a/next/components/history/HistoryImage.tsx b/next/components/history/HistoryImage.tsx index 28188a9..7d04cf2 100644 --- a/next/components/history/HistoryImage.tsx +++ b/next/components/history/HistoryImage.tsx @@ -12,13 +12,6 @@ export default function HistoryImage({ src, hasLineAbove }: HistoryImageProps) { {!hasLineAbove && line}
    - - //
    - // - //
    - // {/* fill, background */} - //
    - //
    ); } diff --git a/next/components/history/HistoryText.tsx b/next/components/history/HistoryText.tsx new file mode 100644 index 0000000..4c01747 --- /dev/null +++ b/next/components/history/HistoryText.tsx @@ -0,0 +1,27 @@ +type HistoryTextProps = { + title: string; + description: string; + hasLineAbove: boolean; +}; + +export default function HistoryText({ + title, + description, + hasLineAbove, +}: HistoryTextProps) { + const line = ( +
    {/* fill, background */}
    + ); + + return ( +
    + {hasLineAbove && line} +
    + {" "} +

    {title}

    +

    {description}

    +
    + {!hasLineAbove && line} +
    + ); +} diff --git a/next/schemas/single/AboutPage.ts b/next/schemas/single/AboutPage.ts index b2f6fc9..7cf5f84 100644 --- a/next/schemas/single/AboutPage.ts +++ b/next/schemas/single/AboutPage.ts @@ -1,14 +1,16 @@ import { z } from "zod"; -const imageTimelineSchema = z.object({ +export const imageTimelineSchema = z.object({ Date: z.date(), Image: z.string(), + __component: z.string(), }); -const textTimelineSchema = z.object({ +export const textTimelineSchema = z.object({ Date: z.date(), Title: z.string(), Description: z.string(), + __component: z.string(), }); export const timelineElementSchema = z.union([ @@ -16,6 +18,8 @@ export const timelineElementSchema = z.union([ textTimelineSchema, ]); +export type ImageTimelineElement = z.infer; +export type TextTimelineElement = z.infer; export type TimelineElement = z.infer; export const aboutPageSchema = z.object({ diff --git a/strapi/.tmp/data.db b/strapi/.tmp/data.db index 16c88900a8fa4a9c4962224325ef52b7e7d07787..0d98d626b6c8ce644561e00310ccef0a004e84fe 100644 GIT binary patch delta 172 zcmZoT;LvcuVS*Hstn)+}Cm`9Fur+~kg1x|YPv_f=6AnbRX)#U&vD+LN+Z>qM9GKf2 zSlS#|+Z@>19N60&INBUI+Z?#s9Jt#Yc(yt4@;We1-_F;-YsAeMwcW9sH=Kn{nS;T+ zQFQwJeqJ4YLj^-q1tS9mEg&>f(oxDuEG`L8P0h}!3@u1WEJ;Gs delta 172 zcmZoT;LvcuVS*HsOvOYQCm`9Fur+~kg1x{bj^jrdCme`s(_)+mVz)UkwmC4hIWV_5 zu(Ua_wmGo1Ik2}maI`sawmERMIdHc*@N9G7<#k}3v7N7h*NB@jdb?vcZ#WBknlcB2 zd86?3dHuXPdPWKs3WlZ%T0m&5q@$FRSX>gGnwp(c8CsB%Sdyw_WoT|>Vq|DwXl7_; TX3_q$pBISvw*TzsXP*E7W}r2^ From eb68a2bfa24d668d7b408592543499d635f2fd06 Mon Sep 17 00:00:00 2001 From: Oculux Date: Wed, 4 Sep 2024 01:56:21 +1200 Subject: [PATCH 15/27] :memo: comment HistoryComponent --- next/app/test/deiza/historytest/page.tsx | 21 ++----- next/components/history/HistoryComponent.tsx | 57 ++++++------------- strapi/.tmp/data.db | Bin 1056768 -> 1056768 bytes 3 files changed, 22 insertions(+), 56 deletions(-) diff --git a/next/app/test/deiza/historytest/page.tsx b/next/app/test/deiza/historytest/page.tsx index de620c7..7cddf24 100644 --- a/next/app/test/deiza/historytest/page.tsx +++ b/next/app/test/deiza/historytest/page.tsx @@ -3,29 +3,16 @@ import { aboutPageSchema, TimelineElement } from "@/schemas/single/AboutPage"; import fetchStrapi from "@/util/strapi"; export default async function HistoryTest() { - // return HistoryImage({src: "/uploads/istockphoto_1413873774_612x612_27a467169b.jpg"}); - // return - // return - const data = await fetchStrapi("about-page", aboutPageSchema); - const timeline: TimelineElement[] = data.Timeline.map((e) => { + // Get Timeline part of About Page (with Date objects) + const timelineElements: TimelineElement[] = data.Timeline.map((e) => { const date = new Date(e.Date); return { ...e, Date: date, }; - }).sort((a, b) => a.Date.getTime() - b.Date.getTime()); - - // console.log(timeline); - // const timeline: TimelineElement[] = []; - - // ({ Date: Date; Image: string; Date: Date; Title: string; Description: string; }) + }); - return ( - - //
    - // Hi - //
    - ); + return ; } \ No newline at end of file diff --git a/next/components/history/HistoryComponent.tsx b/next/components/history/HistoryComponent.tsx index 4ac55e9..b74aa58 100644 --- a/next/components/history/HistoryComponent.tsx +++ b/next/components/history/HistoryComponent.tsx @@ -13,32 +13,15 @@ type HistoryComponentProps = { export default function HistoryComponent({ timelineElements, }: HistoryComponentProps) { - const fullTimeline: TimelineElement[] = timelineElements - .map((element) => { - const date = new Date(element.Date); - return { - ...element, - Date: date, - }; - }) - .sort((a, b) => a.Date.getTime() - b.Date.getTime()); - - const topTimeline: TimelineElement[] = []; - const bottomTimeline: TimelineElement[] = []; - - for (let i = 0; i < fullTimeline.length; i++) { - if (i % 2 == 0) { - topTimeline.push(fullTimeline[i]); - } else { - bottomTimeline.push(fullTimeline[i]); - } - } - - // console.log("top timeline", topTimeline); - // console.log(bottomTimeline); + // Sort timeline by date + const sortedTimelineElements: TimelineElement[] = timelineElements.sort( + (a, b) => a.Date.getTime() - b.Date.getTime(), + ); - const topReactNodes = topTimeline.map((element) => { + // Map timeline elements to components + const timelineCcomponents = sortedTimelineElements.map((element) => { if (element.__component == "project-timeline.text-timeline-item") { + // Text components const textElement = element as TextTimelineElement; return ( ); } else { + // Image components const imageElement = element as ImageTimelineElement; return ; } }); - const bottomReactNodes = bottomTimeline.map((element) => { - if (element.__component == "project-timeline.text-timeline-item") { - const textElement = element as TextTimelineElement; - return ( - - ); + // Split components into top and bottom + const topTimeline: React.ReactNode[] = []; + const bottomTimeline: React.ReactNode[] = []; + for (let i = 0; i < timelineCcomponents.length; i++) { + if (i % 2 == 0) { + topTimeline.push(timelineCcomponents[i]); } else { - const imageElement = element as ImageTimelineElement; - return ; + bottomTimeline.push(timelineCcomponents[i]); } - }); + } return (
    -
    {topReactNodes}
    +
    {topTimeline}
    ; -
    {bottomReactNodes}
    +
    {bottomTimeline}
    ); } diff --git a/strapi/.tmp/data.db b/strapi/.tmp/data.db index 0d98d626b6c8ce644561e00310ccef0a004e84fe..72c06863a31e46c21e3ad875ee756082cb0b8a29 100644 GIT binary patch delta 15281 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 delta 15167 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 Z=13o+8> Date: Wed, 4 Sep 2024 02:05:00 +1200 Subject: [PATCH 16/27] :art: refactor elementToComponent into its own function --- next/components/history/HistoryComponent.tsx | 57 ++++++++++++-------- 1 file changed, 34 insertions(+), 23 deletions(-) diff --git a/next/components/history/HistoryComponent.tsx b/next/components/history/HistoryComponent.tsx index b74aa58..c39b6f9 100644 --- a/next/components/history/HistoryComponent.tsx +++ b/next/components/history/HistoryComponent.tsx @@ -18,33 +18,18 @@ export default function HistoryComponent({ (a, b) => a.Date.getTime() - b.Date.getTime(), ); - // Map timeline elements to components - const timelineCcomponents = sortedTimelineElements.map((element) => { - if (element.__component == "project-timeline.text-timeline-item") { - // Text components - const textElement = element as TextTimelineElement; - return ( - - ); - } else { - // Image components - const imageElement = element as ImageTimelineElement; - return ; - } - }); - - // Split components into top and bottom + // Split timeline + map TimelineElements -> components const topTimeline: React.ReactNode[] = []; const bottomTimeline: React.ReactNode[] = []; - for (let i = 0; i < timelineCcomponents.length; i++) { + for (let i = 0; i < sortedTimelineElements.length; i++) { if (i % 2 == 0) { - topTimeline.push(timelineCcomponents[i]); + // Even elements go on top + topTimeline.push(elementToComponent(sortedTimelineElements[i], "top")); } else { - bottomTimeline.push(timelineCcomponents[i]); + // Odd elements go on bottom + bottomTimeline.push( + elementToComponent(sortedTimelineElements[i], "bottom"), + ); } } @@ -56,3 +41,29 @@ export default function HistoryComponent({
    ); } + +function elementToComponent( + element: TimelineElement, + position: "top" | "bottom", +): React.ReactNode { + if (element.__component == "project-timeline.text-timeline-item") { + // Text components + const textElement = element as TextTimelineElement; + return ( + + ); + } else { + // Image components + const imageElement = element as ImageTimelineElement; + return ( + + ); + } +} \ No newline at end of file From e52bba7666a56ec44404f72b30fab8dc4d40c465 Mon Sep 17 00:00:00 2001 From: Oculux Date: Wed, 4 Sep 2024 02:10:43 +1200 Subject: [PATCH 17/27] :lipstick: stick history components together --- next/app/test/deiza/historytest/page.tsx | 6 +++++- next/components/history/HistoryComponent.tsx | 6 +++--- next/components/history/HistoryImage.tsx | 4 ++-- next/components/history/HistoryText.tsx | 2 +- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/next/app/test/deiza/historytest/page.tsx b/next/app/test/deiza/historytest/page.tsx index 7cddf24..8246ec5 100644 --- a/next/app/test/deiza/historytest/page.tsx +++ b/next/app/test/deiza/historytest/page.tsx @@ -14,5 +14,9 @@ export default async function HistoryTest() { }; }); - return ; + return ( +
    + ; +
    + ); } \ No newline at end of file diff --git a/next/components/history/HistoryComponent.tsx b/next/components/history/HistoryComponent.tsx index c39b6f9..f45e105 100644 --- a/next/components/history/HistoryComponent.tsx +++ b/next/components/history/HistoryComponent.tsx @@ -35,9 +35,9 @@ export default function HistoryComponent({ return (
    -
    {topTimeline}
    -
    ; -
    {bottomTimeline}
    +
    {topTimeline}
    +
    +
    {bottomTimeline}
    ); } diff --git a/next/components/history/HistoryImage.tsx b/next/components/history/HistoryImage.tsx index 7d04cf2..94d7bcd 100644 --- a/next/components/history/HistoryImage.tsx +++ b/next/components/history/HistoryImage.tsx @@ -4,10 +4,10 @@ type HistoryImageProps = { }; export default function HistoryImage({ src, hasLineAbove }: HistoryImageProps) { - const line =
    {/* fill, background */}
    ; + const line =
    {/* fill, background */}
    ; return ( -
    +
    {hasLineAbove && line} {!hasLineAbove && line} diff --git a/next/components/history/HistoryText.tsx b/next/components/history/HistoryText.tsx index 4c01747..6ca6bbc 100644 --- a/next/components/history/HistoryText.tsx +++ b/next/components/history/HistoryText.tsx @@ -10,7 +10,7 @@ export default function HistoryText({ hasLineAbove, }: HistoryTextProps) { const line = ( -
    {/* fill, background */}
    +
    {/* fill, background */}
    ); return ( From d29b1bf8de167090053769b13b67b9f18ceabb8e Mon Sep 17 00:00:00 2001 From: Oculux Date: Wed, 4 Sep 2024 02:16:40 +1200 Subject: [PATCH 18/27] :sparkles: create LineWrapper component --- next/app/test/deiza/historytest/page.tsx | 6 +++--- .../{HistoryComponent.tsx => History.tsx} | 2 +- next/components/history/HistoryImage.tsx | 11 ++++------- next/components/history/HistoryText.tsx | 12 ++++-------- next/components/history/LineWrapper.tsx | 17 +++++++++++++++++ 5 files changed, 29 insertions(+), 19 deletions(-) rename next/components/history/{HistoryComponent.tsx => History.tsx} (99%) create mode 100644 next/components/history/LineWrapper.tsx diff --git a/next/app/test/deiza/historytest/page.tsx b/next/app/test/deiza/historytest/page.tsx index 8246ec5..185e639 100644 --- a/next/app/test/deiza/historytest/page.tsx +++ b/next/app/test/deiza/historytest/page.tsx @@ -1,4 +1,4 @@ -import HistoryComponent from "@/components/history/HistoryComponent"; +import HistoryComponent from "@/components/history/History"; import { aboutPageSchema, TimelineElement } from "@/schemas/single/AboutPage"; import fetchStrapi from "@/util/strapi"; @@ -16,7 +16,7 @@ export default async function HistoryTest() { return (
    - ; +
    ); -} \ No newline at end of file +} diff --git a/next/components/history/HistoryComponent.tsx b/next/components/history/History.tsx similarity index 99% rename from next/components/history/HistoryComponent.tsx rename to next/components/history/History.tsx index f45e105..e3bbc0f 100644 --- a/next/components/history/HistoryComponent.tsx +++ b/next/components/history/History.tsx @@ -66,4 +66,4 @@ function elementToComponent( /> ); } -} \ No newline at end of file +} diff --git a/next/components/history/HistoryImage.tsx b/next/components/history/HistoryImage.tsx index 94d7bcd..5c967ca 100644 --- a/next/components/history/HistoryImage.tsx +++ b/next/components/history/HistoryImage.tsx @@ -1,17 +1,14 @@ +import LineWrapper from "./LineWrapper"; + type HistoryImageProps = { src: string; hasLineAbove: boolean; }; export default function HistoryImage({ src, hasLineAbove }: HistoryImageProps) { - const line =
    {/* fill, background */}
    ; - return ( -
    - {hasLineAbove && line} + - {!hasLineAbove && line} -
    + ); } - diff --git a/next/components/history/HistoryText.tsx b/next/components/history/HistoryText.tsx index 6ca6bbc..98f9967 100644 --- a/next/components/history/HistoryText.tsx +++ b/next/components/history/HistoryText.tsx @@ -1,3 +1,5 @@ +import LineWrapper from "./LineWrapper"; + type HistoryTextProps = { title: string; description: string; @@ -9,19 +11,13 @@ export default function HistoryText({ description, hasLineAbove, }: HistoryTextProps) { - const line = ( -
    {/* fill, background */}
    - ); - return ( -
    - {hasLineAbove && line} +
    {" "}

    {title}

    {description}

    - {!hasLineAbove && line} -
    + ); } diff --git a/next/components/history/LineWrapper.tsx b/next/components/history/LineWrapper.tsx new file mode 100644 index 0000000..5cddf12 --- /dev/null +++ b/next/components/history/LineWrapper.tsx @@ -0,0 +1,17 @@ +export default function LineWrapper({ + children, + hasLineAbove, +}: { + children: React.ReactNode; + hasLineAbove: boolean; +}) { + const line =
    ; + + return ( +
    + {hasLineAbove && line} + {children} + {!hasLineAbove && line} +
    + ); +} From d209ddf49acba9e6ec359905698def9c894a6234 Mon Sep 17 00:00:00 2001 From: Oculux Date: Wed, 4 Sep 2024 02:26:29 +1200 Subject: [PATCH 19/27] :bug: render history images properly --- next/components/history/History.tsx | 3 ++- next/schemas/single/AboutPage.ts | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/next/components/history/History.tsx b/next/components/history/History.tsx index e3bbc0f..2116187 100644 --- a/next/components/history/History.tsx +++ b/next/components/history/History.tsx @@ -3,6 +3,7 @@ import { TextTimelineElement, TimelineElement, } from "@/schemas/single/AboutPage"; +import { getLargestImageUrl } from "@/util/image"; import HistoryImage from "./HistoryImage"; import HistoryText from "./HistoryText"; @@ -61,7 +62,7 @@ function elementToComponent( const imageElement = element as ImageTimelineElement; return ( ); diff --git a/next/schemas/single/AboutPage.ts b/next/schemas/single/AboutPage.ts index 7cf5f84..aa9b2c4 100644 --- a/next/schemas/single/AboutPage.ts +++ b/next/schemas/single/AboutPage.ts @@ -1,8 +1,9 @@ import { z } from "zod"; +import { imageSchema } from "../Image"; export const imageTimelineSchema = z.object({ Date: z.date(), - Image: z.string(), + Image: imageSchema, __component: z.string(), }); From 1a468702376aebfb9ff5cf51dbfdae78f4842c47 Mon Sep 17 00:00:00 2001 From: Oculux Date: Wed, 4 Sep 2024 02:55:35 +1200 Subject: [PATCH 20/27] :lipstick: ensure all history components have the correct proportions --- next/app/test/deiza/historytest/page.tsx | 2 +- next/components/history/History.tsx | 4 ++-- next/components/history/HistoryImage.tsx | 3 ++- next/components/history/HistoryText.tsx | 4 ++-- next/components/history/LineWrapper.tsx | 4 ++-- strapi/.tmp/data.db | Bin 1056768 -> 1056768 bytes 6 files changed, 9 insertions(+), 8 deletions(-) diff --git a/next/app/test/deiza/historytest/page.tsx b/next/app/test/deiza/historytest/page.tsx index 185e639..ce01b1d 100644 --- a/next/app/test/deiza/historytest/page.tsx +++ b/next/app/test/deiza/historytest/page.tsx @@ -15,7 +15,7 @@ export default async function HistoryTest() { }); return ( -
    +
    ); diff --git a/next/components/history/History.tsx b/next/components/history/History.tsx index 2116187..727580d 100644 --- a/next/components/history/History.tsx +++ b/next/components/history/History.tsx @@ -35,9 +35,9 @@ export default function HistoryComponent({ } return ( -
    +
    {topTimeline}
    -
    +
    {bottomTimeline}
    ); diff --git a/next/components/history/HistoryImage.tsx b/next/components/history/HistoryImage.tsx index 5c967ca..262211a 100644 --- a/next/components/history/HistoryImage.tsx +++ b/next/components/history/HistoryImage.tsx @@ -1,3 +1,4 @@ +import Image from "next/image"; import LineWrapper from "./LineWrapper"; type HistoryImageProps = { @@ -8,7 +9,7 @@ type HistoryImageProps = { export default function HistoryImage({ src, hasLineAbove }: HistoryImageProps) { return ( - + ); } diff --git a/next/components/history/HistoryText.tsx b/next/components/history/HistoryText.tsx index 98f9967..1ff9c71 100644 --- a/next/components/history/HistoryText.tsx +++ b/next/components/history/HistoryText.tsx @@ -13,9 +13,9 @@ export default function HistoryText({ }: HistoryTextProps) { return ( -
    +
    {" "} -

    {title}

    +

    {title}

    {description}

    diff --git a/next/components/history/LineWrapper.tsx b/next/components/history/LineWrapper.tsx index 5cddf12..ed699d1 100644 --- a/next/components/history/LineWrapper.tsx +++ b/next/components/history/LineWrapper.tsx @@ -5,10 +5,10 @@ export default function LineWrapper({ children: React.ReactNode; hasLineAbove: boolean; }) { - const line =
    ; + const line =
    ; return ( -
    +
    {hasLineAbove && line} {children} {!hasLineAbove && line} diff --git a/strapi/.tmp/data.db b/strapi/.tmp/data.db index 72c06863a31e46c21e3ad875ee756082cb0b8a29..ae21bff65b06699f9879facbb0ba35455f80291e 100644 GIT binary patch delta 84 zcmZoT;LvcuVS+Sc$wV1v#*)T_tqF`1?fJw1i7`$%5Y?u|IB`e#Kk+sP#x@70HV5W5 o2bMMm);0&WHV5`L2aYxe&Nc_GHV5uD2c9+u-ZlrmWe)rg0P#2*>Hq)$ delta 84 zcmZoT;LvcuVS+Sc@kAMC#^T0=tqF`1?fDhDlo=-+h-%YfoVY`wOQp?$vCV<0&4Ibi ofu+rXwatO8&4InmfuqfVv(164&4Ihkfv3%Zx6OfXnFId=0Ihc#tN;K2 From c823d0b8c10ca3622a738a2ebdafbf687f171b6e Mon Sep 17 00:00:00 2001 From: Oculux Date: Wed, 4 Sep 2024 03:16:35 +1200 Subject: [PATCH 21/27] :lipstick: position boxes alternating --- next/components/history/History.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/next/components/history/History.tsx b/next/components/history/History.tsx index 727580d..5110e57 100644 --- a/next/components/history/History.tsx +++ b/next/components/history/History.tsx @@ -38,7 +38,7 @@ export default function HistoryComponent({
    {topTimeline}
    -
    {bottomTimeline}
    +
    {bottomTimeline}
    ); } From 59b1d4c4e01f981272f974a21a9e193ae01a0c7e Mon Sep 17 00:00:00 2001 From: Oculux Date: Wed, 4 Sep 2024 03:28:42 +1200 Subject: [PATCH 22/27] :art: make HistoryComponent handle element -> component conversion --- next/app/test/deiza/historytest/page.tsx | 4 +- next/components/history/History.tsx | 62 ++++++-------------- next/components/history/HistoryComponent.tsx | 47 +++++++++++++++ next/components/history/HistoryImage.tsx | 14 +++-- next/components/history/HistoryText.tsx | 21 ++----- next/components/history/LineWrapper.tsx | 17 ------ 6 files changed, 80 insertions(+), 85 deletions(-) create mode 100644 next/components/history/HistoryComponent.tsx delete mode 100644 next/components/history/LineWrapper.tsx diff --git a/next/app/test/deiza/historytest/page.tsx b/next/app/test/deiza/historytest/page.tsx index ce01b1d..de797af 100644 --- a/next/app/test/deiza/historytest/page.tsx +++ b/next/app/test/deiza/historytest/page.tsx @@ -1,4 +1,4 @@ -import HistoryComponent from "@/components/history/History"; +import History from "@/components/history/History"; import { aboutPageSchema, TimelineElement } from "@/schemas/single/AboutPage"; import fetchStrapi from "@/util/strapi"; @@ -16,7 +16,7 @@ export default async function HistoryTest() { return (
    - +
    ); } diff --git a/next/components/history/History.tsx b/next/components/history/History.tsx index 5110e57..bc763c9 100644 --- a/next/components/history/History.tsx +++ b/next/components/history/History.tsx @@ -1,70 +1,42 @@ -import { - ImageTimelineElement, - TextTimelineElement, - TimelineElement, -} from "@/schemas/single/AboutPage"; -import { getLargestImageUrl } from "@/util/image"; -import HistoryImage from "./HistoryImage"; -import HistoryText from "./HistoryText"; +import { TimelineElement } from "@/schemas/single/AboutPage"; +import HistoryComponent from "./HistoryComponent"; type HistoryComponentProps = { timelineElements: TimelineElement[]; }; -export default function HistoryComponent({ - timelineElements, -}: HistoryComponentProps) { +export default function History({ timelineElements }: HistoryComponentProps) { // Sort timeline by date const sortedTimelineElements: TimelineElement[] = timelineElements.sort( (a, b) => a.Date.getTime() - b.Date.getTime(), ); // Split timeline + map TimelineElements -> components - const topTimeline: React.ReactNode[] = []; - const bottomTimeline: React.ReactNode[] = []; + const topTimeline: TimelineElement[] = []; + const bottomTimeline: TimelineElement[] = []; for (let i = 0; i < sortedTimelineElements.length; i++) { if (i % 2 == 0) { // Even elements go on top - topTimeline.push(elementToComponent(sortedTimelineElements[i], "top")); + topTimeline.push(sortedTimelineElements[i]); } else { // Odd elements go on bottom - bottomTimeline.push( - elementToComponent(sortedTimelineElements[i], "bottom"), - ); + bottomTimeline.push(sortedTimelineElements[i]); } } return (
    -
    {topTimeline}
    +
    + {topTimeline.map((element) => ( + + ))} +
    -
    {bottomTimeline}
    +
    + {bottomTimeline.map((element) => ( + + ))} +
    ); } - -function elementToComponent( - element: TimelineElement, - position: "top" | "bottom", -): React.ReactNode { - if (element.__component == "project-timeline.text-timeline-item") { - // Text components - const textElement = element as TextTimelineElement; - return ( - - ); - } else { - // Image components - const imageElement = element as ImageTimelineElement; - return ( - - ); - } -} diff --git a/next/components/history/HistoryComponent.tsx b/next/components/history/HistoryComponent.tsx new file mode 100644 index 0000000..a6dc51c --- /dev/null +++ b/next/components/history/HistoryComponent.tsx @@ -0,0 +1,47 @@ +import { + ImageTimelineElement, + TextTimelineElement, + TimelineElement, +} from "@/schemas/single/AboutPage"; +import { getLargestImageUrl } from "@/util/image"; +import HistoryImage from "./HistoryImage"; +import HistoryText from "./HistoryText"; + +type HistoryComponentProps = { + element: TimelineElement; + position: "top" | "bottom"; +}; + +export default function HistoryComponent({ + element, + position, +}: HistoryComponentProps) { + const line =
    ; + const hasLineAbove = position === "bottom"; + + return ( +
    + {hasLineAbove && line} + {elementToComponent(element)} + {!hasLineAbove && line} +
    + ); +} + +// TimelineElement -> React component +function elementToComponent(element: TimelineElement): React.ReactNode { + if (element.__component == "project-timeline.text-timeline-item") { + // Text components + const textElement = element as TextTimelineElement; + return ( + + ); + } else { + // Image components + const imageElement = element as ImageTimelineElement; + return ; + } +} diff --git a/next/components/history/HistoryImage.tsx b/next/components/history/HistoryImage.tsx index 262211a..282ef79 100644 --- a/next/components/history/HistoryImage.tsx +++ b/next/components/history/HistoryImage.tsx @@ -1,15 +1,17 @@ import Image from "next/image"; -import LineWrapper from "./LineWrapper"; type HistoryImageProps = { src: string; - hasLineAbove: boolean; }; -export default function HistoryImage({ src, hasLineAbove }: HistoryImageProps) { +export default function HistoryImage({ src }: HistoryImageProps) { return ( - - - + ); } diff --git a/next/components/history/HistoryText.tsx b/next/components/history/HistoryText.tsx index 1ff9c71..b038810 100644 --- a/next/components/history/HistoryText.tsx +++ b/next/components/history/HistoryText.tsx @@ -1,23 +1,14 @@ -import LineWrapper from "./LineWrapper"; - type HistoryTextProps = { title: string; description: string; - hasLineAbove: boolean; }; -export default function HistoryText({ - title, - description, - hasLineAbove, -}: HistoryTextProps) { +export default function HistoryText({ title, description }: HistoryTextProps) { return ( - -
    - {" "} -

    {title}

    -

    {description}

    -
    -
    +
    + {" "} +

    {title}

    +

    {description}

    +
    ); } diff --git a/next/components/history/LineWrapper.tsx b/next/components/history/LineWrapper.tsx deleted file mode 100644 index ed699d1..0000000 --- a/next/components/history/LineWrapper.tsx +++ /dev/null @@ -1,17 +0,0 @@ -export default function LineWrapper({ - children, - hasLineAbove, -}: { - children: React.ReactNode; - hasLineAbove: boolean; -}) { - const line =
    ; - - return ( -
    - {hasLineAbove && line} - {children} - {!hasLineAbove && line} -
    - ); -} From f06e72cea8cd463d2f67ef11e04024f2571a7627 Mon Sep 17 00:00:00 2001 From: Oculux Date: Wed, 4 Sep 2024 03:41:38 +1200 Subject: [PATCH 23/27] :sparkles: implement history dates --- next/components/history/FloatingDate.tsx | 16 ++++++++++++++++ next/components/history/History.tsx | 2 +- next/components/history/HistoryComponent.tsx | 6 ++++-- strapi/.tmp/data.db | Bin 1056768 -> 1056768 bytes 4 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 next/components/history/FloatingDate.tsx diff --git a/next/components/history/FloatingDate.tsx b/next/components/history/FloatingDate.tsx new file mode 100644 index 0000000..204df44 --- /dev/null +++ b/next/components/history/FloatingDate.tsx @@ -0,0 +1,16 @@ +type FloatingDateProps = { + date: Date; + position: "top" | "bottom"; // Position of the main component +}; + +export default function FloatingDate({ date, position }: FloatingDateProps) { + const positionStyle = position === "top" ? "-bottom-10" : "-top-10"; + + return ( +
    + {date.toLocaleDateString()} +
    + ); +} diff --git a/next/components/history/History.tsx b/next/components/history/History.tsx index bc763c9..cf848a5 100644 --- a/next/components/history/History.tsx +++ b/next/components/history/History.tsx @@ -32,7 +32,7 @@ export default function History({ timelineElements }: HistoryComponentProps) { ))}
    -
    +
    {bottomTimeline.map((element) => ( ))} diff --git a/next/components/history/HistoryComponent.tsx b/next/components/history/HistoryComponent.tsx index a6dc51c..af78b47 100644 --- a/next/components/history/HistoryComponent.tsx +++ b/next/components/history/HistoryComponent.tsx @@ -6,6 +6,7 @@ import { import { getLargestImageUrl } from "@/util/image"; import HistoryImage from "./HistoryImage"; import HistoryText from "./HistoryText"; +import FloatingDate from "./FloatingDate"; type HistoryComponentProps = { element: TimelineElement; @@ -16,14 +17,15 @@ export default function HistoryComponent({ element, position, }: HistoryComponentProps) { - const line =
    ; + const line =
    ; const hasLineAbove = position === "bottom"; return ( -
    +
    {hasLineAbove && line} {elementToComponent(element)} {!hasLineAbove && line} +
    ); } diff --git a/strapi/.tmp/data.db b/strapi/.tmp/data.db index ae21bff65b06699f9879facbb0ba35455f80291e..fac794ed380e9a9ea6d805b031d8267a0b3a8a12 100644 GIT binary patch delta 84 zcmZoT;LvcuVS+Sc=|mZ4#?r=wtqF`1?fECP3ouSN5Y?u|IB~~>cEL6W#x@70HV5W5 o2bMMm);0&WHV5`L2aYxe&Nc_GHV5uD2c9+u-ZlrmWe)rg0M(ZpWB>pF delta 84 zcmZoT;LvcuVS+Sc$wV1v#*)T_tqF`1?fJw1i7`$%5Y?u|IB`e#Kk+sP#x@70HV5W5 o2bMMm);0&WHV5`L2aYxe&Nc_GHV5uD2c9+u-ZlrmWe)rg0P#2*>Hq)$ From 8d7a95b1960c19743229e9f0216163ccc3738d58 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 4 Sep 2024 12:30:27 +1200 Subject: [PATCH 24/27] commit data.db changes --- strapi/.tmp/data.db | Bin 1056768 -> 1056768 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/strapi/.tmp/data.db b/strapi/.tmp/data.db index 0d98d626b6c8ce644561e00310ccef0a004e84fe..65be3f22ab503c7534d5d8c3fe7456c35b2781fb 100644 GIT binary patch delta 85 zcmZoT;LvcuVS+TH|3n#QM*qfytqF`1>;-n^{q13#a3HEpi*X{5-P`8C*yh00=D^(M oz|!Wx+UCI4=D^;<-aI^SlTa3HEpi*X`|-R8j9=D^hEz})7* n(&oV0=D^nGz~1J-(dNL}=D^kFz}@D+)8@e2=D@eif&T#j1{oYR From 003ca6930564ba2b514f1636aa14ec2032502789 Mon Sep 17 00:00:00 2001 From: Oculux Date: Fri, 20 Sep 2024 00:35:38 +1200 Subject: [PATCH 25/27] :wrench: delete data.db --- strapi/.tmp/data.db | Bin 1056768 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 strapi/.tmp/data.db diff --git a/strapi/.tmp/data.db b/strapi/.tmp/data.db deleted file mode 100644 index 65be3f22ab503c7534d5d8c3fe7456c35b2781fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1056768 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 Dm`g(v From 2962747195c987c395aa8d52acb8a6eb1f8da587 Mon Sep 17 00:00:00 2001 From: Oculux Date: Fri, 20 Sep 2024 01:07:51 +1200 Subject: [PATCH 26/27] :sparkles: integrate new History component into about page --- next/app/about/page.tsx | 103 +--------------------------------------- 1 file changed, 2 insertions(+), 101 deletions(-) diff --git a/next/app/about/page.tsx b/next/app/about/page.tsx index 34b346d..2aa6ed4 100644 --- a/next/app/about/page.tsx +++ b/next/app/about/page.tsx @@ -6,6 +6,7 @@ import { aboutPageSchema, TimelineElement } from "@/schemas/single/AboutPage"; import fetchStrapi from "@/util/strapi"; import Image from "next/image"; import styles from "./styles.module.css"; +import History from "@/components/history/History"; export default async function AboutPage() { const data = await fetchStrapi("about-page", aboutPageSchema); @@ -51,108 +52,8 @@ export default async function AboutPage() {

    Our History

    -
    - {/* the 2005 */} - {/*
    2005
    */} - -
      - {timeline.map((e, i) => { - const isImage = "Image" in e; - const isEven = i % 2 === 0; - - if (isEven) { - return null; - } - - return ( -
    1. - {/*
    2. */} - - {/* circle */} - {/*
      */} - -
      - - - - {/* style below line if even */} - {/* {isEven ? () : ()} */} - - {isImage ? ( - - ) : ( - //
      - //

      {e.Title}

      - //

      - // {e.Description} - //

      - //
      - // - - )} -
    3. - ); - })} -
    -
    - {/*
    */} - -
    -
    - -
      - {timeline.map((e, i) => { - const isImage = "Image" in e; - const isOdd = i % 2 != 0; - - if (isOdd) { - return null; - } - - return ( -
    1. -
      - - - - {isImage ? ( - - ) : ( - - )} -
    2. - ); - })} -
    -
    + ); } - -//notes -// first, change orientation of timeline -- DONE :D -// then alternate elements --> with i%2 ?? -// then, style them -// image component, content component?? - -// to do -// fix alternation of elements -// align vertical line with middle of elements - make the line part of the box element -// fix overflow in text boxes - if text is more than max width, show ... From 7074114e148cc33f711b50f1b2af69405c64b982 Mon Sep 17 00:00:00 2001 From: Oculux Date: Fri, 20 Sep 2024 01:09:00 +1200 Subject: [PATCH 27/27] :wrench: permanently make .tmp visible At least until we stop having issues with data.db now that's it's gitignored again. --- .vscode/settings.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 4109ade..16e5839 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -21,7 +21,7 @@ "**/node_modules": true, "**/.next": true, "**/.cache": true, - "**/.tmp": true, + // "**/.tmp": true, "**/build": true },