From 7df4592a47ab5a0f24854b50a3b894bd81b92214 Mon Sep 17 00:00:00 2001 From: asepharyana Date: Tue, 4 Aug 2026 17:55:59 +0700 Subject: [PATCH] feat(dimentorin): integrate mentors API - service layer + public list/detail pages --- .../[id]/_components/sections/profile.tsx | 18 +- .../src/app/(public)/mentoring/[id]/page.tsx | 66 +- .../mentoring/_components/mentor-card.tsx | 68 +- .../src/app/(public)/mentoring/page.tsx | 53 +- libs/service/src/api/dimentorin/index.ts | 97 +++ libs/service/src/api/index.ts | 25 +- libs/service/src/hooks/dimentorin/index.ts | 108 +++ libs/service/src/hooks/index.ts | 1 + libs/service/src/types/dimentorin/index.ts | 99 +++ libs/service/src/types/index.ts | 1 + package-lock.json | 655 ++---------------- package.json | 2 +- 12 files changed, 542 insertions(+), 651 deletions(-) create mode 100644 libs/service/src/api/dimentorin/index.ts create mode 100644 libs/service/src/hooks/dimentorin/index.ts create mode 100644 libs/service/src/types/dimentorin/index.ts diff --git a/apps/dimentorin/src/app/(public)/mentoring/[id]/_components/sections/profile.tsx b/apps/dimentorin/src/app/(public)/mentoring/[id]/_components/sections/profile.tsx index ec05fce..30f5e3e 100644 --- a/apps/dimentorin/src/app/(public)/mentoring/[id]/_components/sections/profile.tsx +++ b/apps/dimentorin/src/app/(public)/mentoring/[id]/_components/sections/profile.tsx @@ -1,12 +1,20 @@ import { StarFilled } from "@ant-design/icons" import { Button } from "@imphnen-frontend-service/ui/atoms" import { cn, For } from "@imphnen-frontend-service/utils" +import { TMentorDetail } from "@imphnen-frontend-service/service" type Props = { onBook: () => void + mentor?: TMentorDetail } -export const ProfileSection: React.FC = ({ onBook }) => { +export const ProfileSection: React.FC = ({ onBook, mentor }) => { + const name = mentor?.fullname || mentor?.legal_name || "Mentor" + const role = mentor?.current_role || "Mentor" + const company = mentor?.current_company || "IMPHNEN" + const expertise = mentor?.expertise ?? [] + const softSkills = mentor?.languages ?? [] + return (
= ({ onBook }) => { "md:text-[19px] md:mb-2 md:text-start xl:text-[23px]", )} > - Muhammad Firdaus Oi Oi Oi, S.H., M.H. + {name}

- UI Designer at Oray orayan Studios + {role} at {company}

= ({ onBook }) => {

Expertise

- + {(item) => (
{item} @@ -68,7 +76,7 @@ export const ProfileSection: React.FC = ({ onBook }) => {

Soft Skills

- + {(item) => (
{item} diff --git a/apps/dimentorin/src/app/(public)/mentoring/[id]/page.tsx b/apps/dimentorin/src/app/(public)/mentoring/[id]/page.tsx index ad6934c..55ef39f 100644 --- a/apps/dimentorin/src/app/(public)/mentoring/[id]/page.tsx +++ b/apps/dimentorin/src/app/(public)/mentoring/[id]/page.tsx @@ -1,4 +1,5 @@ import { FC, useState } from 'react' +import { useParams } from 'react-router-dom' import { ProfileSection } from './_components/sections/profile' import { StatisticsSection } from './_components/sections/senpai-statistics' import { TopicsSection } from './_components/sections/topics' @@ -7,44 +8,61 @@ import { EducationSection } from './_components/sections/education' import { SenpaiScheduleSection } from './_components/sections/senpai-schedule' import { Button } from '@imphnen-frontend-service/ui/atoms' import { AppointmentModal } from './_components/modals/appointment' +import { useGetMentorDetail } from '@imphnen-frontend-service/service' +import { Show } from '@imphnen-frontend-service/utils' export const Components: FC = () => { const [open, setOpen] = useState(false) + const { id } = useParams() + const { data: mentor, isLoading, isError } = useGetMentorDetail(id ?? '') + + const resume = mentor?.bio ?? '' return (
-
-
- setOpen(true)} /> + +
+ {isError ? 'Mentor tidak ditemukan' : 'Memuat profil mentor...'} +
+
+ } + > +
+
+ setOpen(true)} mentor={mentor} /> - + -
-
- - +
+
+ + -
-

Senpai Resume

-

- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut et massa mi. Aliquam in hendrerit urna. Pellentesque sit amet sapien fringilla, mattis ligula consectetur, ultrices mauris. Maecenas vitae mattis tellus. Nullam quis imperdiet augue. Vestibulum auctor ornare leo, non suscipit magna interdum eu. Curabitur pellentesque nibh nibh, at maximus ante fermentum sit amet. Pellentesque commodo lacus at sodales sodales. Quisque sagittis orci ut diam condimentum, vel euismod erat placerat. In iaculis arcu eros, eget tempus orci facilisis id. -

+
+

Senpai Resume

+

+ {resume || 'Belum ada deskripsi dari senpai ini.'} +

+
+ + +
- - -
- -
- setOpen(true)} /> +
+ setOpen(true)} /> +
-
-
+ - + +
) } diff --git a/apps/dimentorin/src/app/(public)/mentoring/_components/mentor-card.tsx b/apps/dimentorin/src/app/(public)/mentoring/_components/mentor-card.tsx index 6a108e0..12241f2 100644 --- a/apps/dimentorin/src/app/(public)/mentoring/_components/mentor-card.tsx +++ b/apps/dimentorin/src/app/(public)/mentoring/_components/mentor-card.tsx @@ -1,40 +1,70 @@ import { Button } from '@imphnen-frontend-service/ui/atoms'; +import { For } from '@imphnen-frontend-service/utils'; +import { TMentorDetail } from '@imphnen-frontend-service/service'; import { FC } from 'react'; import { Link } from 'react-router-dom'; -export const MentorCard: FC = () => { +type TMentorCardProps = { + mentor: TMentorDetail; +}; + +export const MentorCard: FC = ({ mentor }) => { + const experience = + mentor.years_of_experience > 0 + ? `${mentor.years_of_experience} Years Experience` + : 'New Mentor'; + const role = mentor.current_role || 'Mentor'; + const company = mentor.current_company || 'IMPHNEN'; + const softSkills = mentor.expertise || []; + const shownSkills = softSkills.slice(0, 2); + const extraCount = Math.max(0, softSkills.length - shownSkills.length); + return (
- Mentor + {mentor.fullname

- - Fullname + + {mentor.fullname || mentor.legal_name || 'Mentor'}

- Full Stack Enjoyer at name company + {role} at {company}

-
-

Soft Skills :

-
- - - + {softSkills.length > 0 && ( +
+

Soft Skills :

+
+ + {(skill) => ( + + )} + + {extraCount > 0 && ( + + )} +
-
+ )}
) diff --git a/apps/dimentorin/src/app/(public)/mentoring/page.tsx b/apps/dimentorin/src/app/(public)/mentoring/page.tsx index d8c92c4..25d2e55 100644 --- a/apps/dimentorin/src/app/(public)/mentoring/page.tsx +++ b/apps/dimentorin/src/app/(public)/mentoring/page.tsx @@ -3,27 +3,24 @@ import { BannerSection } from './_components/banner-section'; import { Topics } from './_components/topics'; import { Input } from '@imphnen-frontend-service/ui/atoms'; import { SearchOutlined } from '@ant-design/icons'; -import { For } from '@imphnen-frontend-service/utils'; +import { For, Show } from '@imphnen-frontend-service/utils'; import { MentorCard } from './_components/mentor-card'; import { Pagination } from '@imphnen-frontend-service/ui/molecules'; +import { useGetMentors } from '@imphnen-frontend-service/service'; import { getCoreRowModel, getPaginationRowModel, PaginationState, useReactTable } from '@tanstack/react-table'; import { motion, useInView, Variants } from 'framer-motion'; -const TEMP_DATA = [ - { id: 1, name: 'John Doe' }, - { id: 2, name: 'John Doe' }, - { id: 3, name: 'John Doe' }, - { id: 4, name: 'John Doe' }, -] - export const Components: FC = (): ReactElement => { const [pagination, setPagination] = useState({ pageIndex: 0, - pageSize: 3, + pageSize: 8, }); + const [search, setSearch] = useState(''); + + const { data: mentors, isLoading } = useGetMentors({ search }); const table = useReactTable({ - data: TEMP_DATA, + data: mentors ?? [], columns: [], state: { pagination }, getCoreRowModel: getCoreRowModel(), @@ -31,6 +28,8 @@ export const Components: FC = (): ReactElement => { onPaginationChange: setPagination, }); + const pageMentors = table.getRowModel().rows.map((row) => row.original); + const ref = useRef(null) const isInView = useInView(ref, { once: true, amount: 0.2 }) @@ -91,6 +90,8 @@ export const Components: FC = (): ReactElement => { setSearch(e.target.value)} /> @@ -101,13 +102,31 @@ export const Components: FC = (): ReactElement => { initial="hidden" animate={isInView ? 'visible' : 'hidden'} > - - {(_, index) => ( - - - - )} - + + Memuat data mentor... + + } + > + 0} + fallback={ + + Tidak ada mentor ditemukan + + } + > + + {(mentor, index) => ( + + + + )} + + + diff --git a/libs/service/src/api/dimentorin/index.ts b/libs/service/src/api/dimentorin/index.ts new file mode 100644 index 0000000..8f732c3 --- /dev/null +++ b/libs/service/src/api/dimentorin/index.ts @@ -0,0 +1,97 @@ +import { api } from '../'; +import { + TMentorAvailability, + TMentorDetail, + TMentorListParams, + TSessionFeedbackRequest, + TSessionListResponse, + TBookSessionRequest, +} from '../../types/dimentorin'; +import { TResponseMessage } from '../../types/common'; + +export const getMentors = async ( + params?: TMentorListParams +): Promise => { + const { data } = await api({ + method: 'GET', + url: '/dimentorin/mentors/public', + params, + }); + return data; +}; + +export const getMentorDetail = async (id: string): Promise => { + const { data } = await api({ + method: 'GET', + url: `/dimentorin/mentors/public/${id}`, + }); + return data; +}; + +export const getMentorMe = async (): Promise => { + const { data } = await api({ + method: 'GET', + url: '/dimentorin/mentors/me', + }); + return data; +}; + +export const getMentorMeStatus = async (): Promise<{ status: string }> => { + const { data } = await api({ + method: 'GET', + url: '/dimentorin/mentors/me/status', + }); + return data; +}; + +export const getMentorAvailability = async ( + id: string +): Promise => { + const { data } = await api({ + method: 'GET', + url: `/dimentorin/mentors/${id}/availability`, + }); + return data; +}; + +export const getMentorSessions = async ( + id: string +): Promise => { + const { data } = await api({ + method: 'GET', + url: `/dimentorin/mentors/${id}/sessions`, + }); + return data; +}; + +export const getMySessions = async (): Promise => { + const { data } = await api({ + method: 'GET', + url: '/dimentorin/sessions/me', + }); + return data; +}; + +export const postBookSession = async ( + mentorId: string, + payload: TBookSessionRequest +): Promise => { + const { data } = await api({ + method: 'POST', + url: `/dimentorin/mentors/${mentorId}/sessions/create`, + data: payload, + }); + return data; +}; + +export const postSessionFeedback = async ( + sessionId: string, + payload: TSessionFeedbackRequest +): Promise => { + const { data } = await api({ + method: 'POST', + url: `/dimentorin/sessions/${sessionId}/feedback/create`, + data: payload, + }); + return data; +}; diff --git a/libs/service/src/api/index.ts b/libs/service/src/api/index.ts index 7745a7c..fa390c2 100644 --- a/libs/service/src/api/index.ts +++ b/libs/service/src/api/index.ts @@ -1,6 +1,8 @@ -import axios, { AxiosRequestConfig } from 'axios'; +import axios, { AxiosError, AxiosRequestConfig } from 'axios'; +import Cookies from 'js-cookie'; export * from './auth'; +export * from './dimentorin'; export * from './gacha'; export * from './users'; @@ -9,3 +11,24 @@ const config: AxiosRequestConfig = { }; export const api = axios.create(config); + +api.interceptors.request.use((config) => { + const raw = Cookies.get('token'); + if (raw) { + try { + const parsed = JSON.parse(raw); + const token = parsed?.token?.access_token; + if (token) { + config.headers.Authorization = `Bearer ${token}`; + } + } catch { + // ignore malformed token + } + } + return config; +}); + +api.interceptors.response.use( + (response) => response, + (error: AxiosError) => Promise.reject(error) +); diff --git a/libs/service/src/hooks/dimentorin/index.ts b/libs/service/src/hooks/dimentorin/index.ts new file mode 100644 index 0000000..097914f --- /dev/null +++ b/libs/service/src/hooks/dimentorin/index.ts @@ -0,0 +1,108 @@ +import { useMutation, useQuery, UseQueryResult } from '@tanstack/react-query'; +import { + getMentorAvailability, + getMentorDetail, + getMentorMe, + getMentorMeStatus, + getMentorSessions, + getMentors, + getMySessions, + postBookSession, + postSessionFeedback, +} from '../../api/dimentorin'; +import { + TBookSessionRequest, + TMentorAvailability, + TMentorDetail, + TMentorListParams, + TSessionFeedbackRequest, + TSessionListResponse, +} from '../../types/dimentorin'; +import { TResponseError, TResponseMessage } from '../../types/common'; + +export const useGetMentors = ( + params?: TMentorListParams +): UseQueryResult => { + return useQuery({ + queryKey: ['get-mentors', params], + queryFn: async () => await getMentors(params), + }); +}; + +export const useGetMentorDetail = ( + id: string +): UseQueryResult => { + return useQuery({ + queryKey: ['get-mentor-detail', id], + queryFn: async () => await getMentorDetail(id), + enabled: !!id, + }); +}; + +export const useGetMentorMe = (): UseQueryResult< + TMentorDetail, + TResponseError +> => { + return useQuery({ + queryKey: ['get-mentor-me'], + queryFn: async () => await getMentorMe(), + }); +}; + +export const useGetMentorMeStatus = (): UseQueryResult< + { status: string }, + TResponseError +> => { + return useQuery({ + queryKey: ['get-mentor-me-status'], + queryFn: async () => await getMentorMeStatus(), + }); +}; + +export const useGetMentorAvailability = ( + id: string +): UseQueryResult => { + return useQuery({ + queryKey: ['get-mentor-availability', id], + queryFn: async () => await getMentorAvailability(id), + enabled: !!id, + }); +}; + +export const useGetMentorSessions = ( + id: string +): UseQueryResult => { + return useQuery({ + queryKey: ['get-mentor-sessions', id], + queryFn: async () => await getMentorSessions(id), + enabled: !!id, + }); +}; + +export const useGetMySessions = (): UseQueryResult< + TSessionListResponse, + TResponseError +> => { + return useQuery({ + queryKey: ['get-my-sessions'], + queryFn: async () => await getMySessions(), + }); +}; + +export const usePostBookSession = (mentorId: string) => { + return useMutation({ + mutationKey: ['post-book-session', mentorId], + mutationFn: async (payload: TBookSessionRequest) => + await postBookSession(mentorId, payload), + }); +}; + +export const usePostSessionFeedback = (sessionId: string) => { + return useMutation({ + mutationKey: ['post-session-feedback', sessionId], + mutationFn: async (payload: TSessionFeedbackRequest) => + await postSessionFeedback(sessionId, payload), + }); +}; + +export type { TResponseMessage }; diff --git a/libs/service/src/hooks/index.ts b/libs/service/src/hooks/index.ts index 76d0cf2..456d358 100644 --- a/libs/service/src/hooks/index.ts +++ b/libs/service/src/hooks/index.ts @@ -1,3 +1,4 @@ export * from './auth'; +export * from './dimentorin'; export * from './gacha'; export * from './users'; diff --git a/libs/service/src/types/dimentorin/index.ts b/libs/service/src/types/dimentorin/index.ts new file mode 100644 index 0000000..2fb8824 --- /dev/null +++ b/libs/service/src/types/dimentorin/index.ts @@ -0,0 +1,99 @@ +import { TResponseList } from '../common'; + +export type TMentorListItem = { + id: string; + user_id: string; + fullname: string | null; + email: string | null; + status: string; + created_at: string; + updated_at: string; +}; + +export type TMentorDetail = { + id: string; + user_id: string; + fullname: string | null; + email: string | null; + legal_name: string | null; + gender: string | null; + domicile: string | null; + bio: string | null; + last_education: string | null; + linkedin_url: string | null; + github_url: string | null; + cv_url: string | null; + portfolio_url: string | null; + phone_for_verification: string | null; + industries: string[]; + expertise: string[]; + languages: string[]; + current_company: string; + current_role: string; + years_of_experience: number; + topics_of_interest: string[]; + preferred_mentee_level: string[]; + preferred_mentoring_formats: string[]; + availability_commitment: string; + mentoring_rate: number; + status: string; + created_at: string; + updated_at: string; +}; + +export type TMentorListParams = { + page?: number; + per_page?: number; + search?: string; + sort_by?: string; + order?: string; +}; + +export type TMentorListResponse = TMentorListItem[] | TResponseList; + +export type TAvailabilitySlot = { + date: string; + time: string; + available: boolean; +}; + +export type TMentorAvailability = { + mentor_id: string; + availability_commitment: string; + preferred_formats: string[]; + slots: TAvailabilitySlot[]; + booked_dates: string[]; +}; + +export type TSessionListItem = { + id: string; + mentor_id: string; + mentee_id: string; + topic: string; + scheduled_at: string; + duration_minutes: number; + session_type: string; + status: string; + rating: number | null; + created_at: string; + mentee_email: string | null; + mentee_fullname: string | null; +}; + +export type TSessionListResponse = { + sessions: TSessionListItem[]; + total: number; +}; + +export type TBookSessionRequest = { + topic: string; + scheduled_at: string; + description?: string | null; + duration_minutes?: number | null; + session_type?: string | null; +}; + +export type TSessionFeedbackRequest = { + feedback: string; + rating: number; +}; diff --git a/libs/service/src/types/index.ts b/libs/service/src/types/index.ts index 5256155..d704ec5 100644 --- a/libs/service/src/types/index.ts +++ b/libs/service/src/types/index.ts @@ -1,4 +1,5 @@ export * from './auth'; +export * from './dimentorin'; export * from './gacha'; export * from './users'; export * from './roles'; diff --git a/package-lock.json b/package-lock.json index 1b89f05..aa6a4f9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -95,7 +95,7 @@ "h3": "^1.8.2", "jiti": "2.4.2", "jsdom": "~22.1.0", - "nx": "20.8.1", + "nx": "^20.8.1", "openapi-typescript": "^7.8.0", "postcss": "^8.5.3", "prettier": "^2.6.2", @@ -2254,20 +2254,20 @@ } }, "node_modules/@emnapi/core": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.4.3.tgz", - "integrity": "sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g==", + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.4.5.tgz", + "integrity": "sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==", "dev": true, "license": "MIT", "dependencies": { - "@emnapi/wasi-threads": "1.0.2", + "@emnapi/wasi-threads": "1.0.4", "tslib": "^2.4.0" } }, "node_modules/@emnapi/runtime": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.3.tgz", - "integrity": "sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==", + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.5.tgz", + "integrity": "sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==", "devOptional": true, "license": "MIT", "dependencies": { @@ -2275,9 +2275,9 @@ } }, "node_modules/@emnapi/wasi-threads": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.2.tgz", - "integrity": "sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.4.tgz", + "integrity": "sha512-PJR+bOmMOPH8AtcTGAyYNiuJ3/Fcoj2XN/gBEWzDIKh254XO+mM9XoXHk5GNEhodxeMznbg7BlRojVbKN+gC6g==", "dev": true, "license": "MIT", "dependencies": { @@ -7573,7 +7573,7 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.52.0.tgz", "integrity": "sha512-uh6W7sb55hl7D6vsAeA+V2p5JnlAqzhqFyF0VcJkKZXkgnFcVG9PziERRHQfPLfNGx1C292a4JqbWzhR8L4R1g==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "dependencies": { "playwright": "1.52.0" @@ -10971,18 +10971,6 @@ "@types/node": "*" } }, - "node_modules/@types/debug": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", - "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@types/ms": "*" - } - }, "node_modules/@types/doctrine": { "version": "0.0.9", "resolved": "https://registry.npmjs.org/@types/doctrine/-/doctrine-0.0.9.tgz", @@ -11208,15 +11196,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/ms": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", - "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, "node_modules/@types/node": { "version": "18.16.9", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.9.tgz", @@ -11259,7 +11238,7 @@ "version": "19.1.2", "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.2.tgz", "integrity": "sha512-oxLPMytKchWGbnQM9O7D67uPa9paTNxO7jVoNMXgkkErULBPhPARCfkKL9ytcIJJRGjbsVwW4ugJzyFFvm/Tiw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "csstype": "^3.0.2" @@ -11269,7 +11248,7 @@ "version": "19.1.2", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.2.tgz", "integrity": "sha512-XGJkWF41Qq305SKWEILa1O8vzhb3aOo3ogBlSmiqNko/WmRb6QIaweuZCXjKygVDXpzXb5wyxKTSOsmkuqj+Qw==", - "devOptional": true, + "dev": true, "license": "MIT", "peerDependencies": { "@types/react": "^19.0.0" @@ -13225,9 +13204,9 @@ } }, "node_modules/@yarnpkg/parsers/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "version": "3.15.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.15.1.tgz", + "integrity": "sha512-S99WuO3HlhO3XN41EtYUNl9zzXjoJx7QvmipxsJVxtCBT0YHEFy+iOJhjSvrmV12nYhWpZaM8lPHkJm0yUMbag==", "dev": true, "license": "MIT", "dependencies": { @@ -13353,7 +13332,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, "license": "MIT", "dependencies": { "debug": "4" @@ -14029,14 +14007,15 @@ } }, "node_modules/axios": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.9.0.tgz", - "integrity": "sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==", + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.18.1.tgz", + "integrity": "sha512-3nTvFlvpn9Zu/RkHUqtc7/+al4UpRW5az71ap5zccp6e8RAYEzhMTecX8Dz1wWDYrPpUoB1HAQEGEAEvUr7S9g==", "license": "MIT", "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" + "follow-redirects": "^1.16.0", + "form-data": "^4.0.5", + "https-proxy-agent": "^5.0.1", + "proxy-from-env": "^2.1.0" } }, "node_modules/axobject-query": { @@ -15311,7 +15290,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "readdirp": "^4.0.1" @@ -16589,7 +16568,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/cwd": { @@ -16830,7 +16809,6 @@ "version": "4.4.0", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "dev": true, "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -17543,9 +17521,9 @@ } }, "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==", + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", "dev": true, "license": "MIT", "dependencies": { @@ -19367,9 +19345,9 @@ "license": "ISC" }, "node_modules/follow-redirects": { - "version": "1.15.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", - "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", + "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", "funding": [ { "type": "individual", @@ -19597,15 +19575,16 @@ } }, "node_modules/form-data": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", - "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.6.tgz", + "integrity": "sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==", "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", - "mime-types": "^2.1.12" + "hasown": "^2.0.4", + "mime-types": "^2.1.35" }, "engines": { "node": ">= 6" @@ -19724,9 +19703,9 @@ } }, "node_modules/front-matter/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "version": "3.15.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.15.1.tgz", + "integrity": "sha512-S99WuO3HlhO3XN41EtYUNl9zzXjoJx7QvmipxsJVxtCBT0YHEFy+iOJhjSvrmV12nYhWpZaM8lPHkJm0yUMbag==", "dev": true, "license": "MIT", "dependencies": { @@ -20385,9 +20364,9 @@ } }, "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", "license": "MIT", "dependencies": { "function-bind": "^1.1.2" @@ -20739,7 +20718,6 @@ "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==", - "dev": true, "license": "MIT", "dependencies": { "agent-base": "6", @@ -20844,7 +20822,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.1.tgz", "integrity": "sha512-3jatXi9ObIsPGr3N5hGw/vWWcTkq6hUYhpQz4k0wLC+owqWi/LiugIw9x0EdNZ2yGedKN/HzePiBvaJRXa0Ujg==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/import-fresh": { @@ -25005,7 +24983,6 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, "license": "MIT" }, "node_modules/muggle-string": { @@ -25939,9 +25916,9 @@ } }, "node_modules/nx/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.4.tgz", + "integrity": "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==", "dev": true, "license": "MIT", "dependencies": { @@ -26020,9 +25997,9 @@ "license": "MIT" }, "node_modules/nx/node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.4.tgz", + "integrity": "sha512-rUCObTnP32Q08R2uuIrt7r9PlEonuTmtuXYcW6s5kjdlj3xbnwe+21yXptAUYcMAABLkYYTtnmzb3w3EDZfueA==", "dev": true, "license": "ISC", "bin": { @@ -27413,7 +27390,7 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.52.0.tgz", "integrity": "sha512-JAwMNMBlxJ2oD1kce4KPtMkDeKGHQstdpFPcPH3maElAXon/QZeTvtsfXmTMRyO9TslfoYOXkSsvao2nE1ilTw==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "dependencies": { "playwright-core": "1.52.0" @@ -27432,7 +27409,7 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.52.0.tgz", "integrity": "sha512-l2osTgLXSMeuLZOML9qYODUQoPPnUsKsb5/P6LJ2e6uPKXUdPK5WYhN4z03G+YNbWmGDY4YENauNu4ZKczreHg==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "bin": { "playwright-core": "cli.js" @@ -28308,10 +28285,13 @@ } }, "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "license": "MIT" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz", + "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==", + "license": "MIT", + "engines": { + "node": ">=10" + } }, "node_modules/prr": { "version": "1.0.1", @@ -28818,7 +28798,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">= 14.18.0" @@ -29483,7 +29463,7 @@ "version": "1.87.0", "resolved": "https://registry.npmjs.org/sass/-/sass-1.87.0.tgz", "integrity": "sha512-d0NoFH4v6SjEK7BoX810Jsrhj7IQSYHAHLi/iSpgqKc7LaIDshFRlSg5LOymf9FqQhxEHs2W5ZQXlvy0KD45Uw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "chokidar": "^4.0.0", @@ -32153,9 +32133,9 @@ "license": "MIT" }, "node_modules/tmp": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", - "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.7.tgz", + "integrity": "sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw==", "dev": true, "license": "MIT", "engines": { @@ -32450,502 +32430,6 @@ "node": ">=0.6.x" } }, - "node_modules/tsx": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.2.tgz", - "integrity": "sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "esbuild": "~0.23.0", - "get-tsconfig": "^4.7.5" - }, - "bin": { - "tsx": "dist/cli.mjs" - }, - "engines": { - "node": ">=18.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - } - }, - "node_modules/tsx/node_modules/@esbuild/aix-ppc64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz", - "integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/android-arm": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz", - "integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/android-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz", - "integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/android-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz", - "integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/darwin-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz", - "integrity": "sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/darwin-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz", - "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/freebsd-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz", - "integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/freebsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz", - "integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-arm": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz", - "integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz", - "integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-ia32": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz", - "integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-loong64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz", - "integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-mips64el": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz", - "integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-ppc64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz", - "integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-riscv64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz", - "integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-s390x": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz", - "integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/linux-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz", - "integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/netbsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz", - "integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/openbsd-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz", - "integrity": "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/openbsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz", - "integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/sunos-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz", - "integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/win32-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz", - "integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/win32-ia32": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz", - "integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/@esbuild/win32-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz", - "integrity": "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/tsx/node_modules/esbuild": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz", - "integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "peer": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.23.1", - "@esbuild/android-arm": "0.23.1", - "@esbuild/android-arm64": "0.23.1", - "@esbuild/android-x64": "0.23.1", - "@esbuild/darwin-arm64": "0.23.1", - "@esbuild/darwin-x64": "0.23.1", - "@esbuild/freebsd-arm64": "0.23.1", - "@esbuild/freebsd-x64": "0.23.1", - "@esbuild/linux-arm": "0.23.1", - "@esbuild/linux-arm64": "0.23.1", - "@esbuild/linux-ia32": "0.23.1", - "@esbuild/linux-loong64": "0.23.1", - "@esbuild/linux-mips64el": "0.23.1", - "@esbuild/linux-ppc64": "0.23.1", - "@esbuild/linux-riscv64": "0.23.1", - "@esbuild/linux-s390x": "0.23.1", - "@esbuild/linux-x64": "0.23.1", - "@esbuild/netbsd-x64": "0.23.1", - "@esbuild/openbsd-arm64": "0.23.1", - "@esbuild/openbsd-x64": "0.23.1", - "@esbuild/sunos-x64": "0.23.1", - "@esbuild/win32-arm64": "0.23.1", - "@esbuild/win32-ia32": "0.23.1", - "@esbuild/win32-x64": "0.23.1" - } - }, "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -35359,16 +34843,19 @@ "license": "ISC" }, "node_modules/yaml": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.1.tgz", - "integrity": "sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz", + "integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==", "dev": true, "license": "ISC", "bin": { "yaml": "bin.mjs" }, "engines": { - "node": ">= 14" + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" } }, "node_modules/yaml-ast-parser": { diff --git a/package.json b/package.json index c306c58..f37a105 100644 --- a/package.json +++ b/package.json @@ -111,7 +111,7 @@ "h3": "^1.8.2", "jiti": "2.4.2", "jsdom": "~22.1.0", - "nx": "20.8.1", + "nx": "^20.8.1", "openapi-typescript": "^7.8.0", "postcss": "^8.5.3", "prettier": "^2.6.2",