diff --git a/apps/client/package.json b/apps/client/package.json index 6055c74d..f55f0752 100644 --- a/apps/client/package.json +++ b/apps/client/package.json @@ -11,6 +11,7 @@ }, "dependencies": { "@pinback/contracts": "workspace:*", + "@pinback/analytics": "workspace:*", "@tanstack/react-query": "^5.85.3", "axios": "^1.11.0", "class-variance-authority": "^0.7.1", diff --git a/apps/client/src/App.tsx b/apps/client/src/App.tsx index 456d5edc..9abf403b 100644 --- a/apps/client/src/App.tsx +++ b/apps/client/src/App.tsx @@ -1,12 +1,22 @@ +import { analytics } from '@pinback/analytics'; import { router } from '@routes/router'; +import { useGetAmplitudeUserProperties } from '@shared/apis/queries'; +import { useEffect } from 'react'; import { RouterProvider } from 'react-router-dom'; import './App.css'; + function App() { - return ( - <> - - - ); + const { data: userProperties } = useGetAmplitudeUserProperties(); + + useEffect(() => { + if (!userProperties) return; + analytics.identify( + String(userProperties.userId), + userProperties.jobRole ? { job_role: userProperties.jobRole } : undefined + ); + }, [userProperties]); + + return ; } export default App; diff --git a/apps/client/src/layout/Layout.tsx b/apps/client/src/layout/Layout.tsx index cb509250..498c6957 100644 --- a/apps/client/src/layout/Layout.tsx +++ b/apps/client/src/layout/Layout.tsx @@ -9,6 +9,7 @@ import { Outlet, useLocation } from 'react-router-dom'; const Layout = () => { const location = useLocation(); const queryClient = useQueryClient(); + const isLoggedIn = authStorage.hasAccessToken(); const isPolicyPage = location.pathname === ROUTES_CONFIG.privacyPolicy.path || @@ -20,7 +21,6 @@ const Layout = () => { location.pathname.startsWith(ROUTES_CONFIG.onboardingCallback.path); const isSidebarHidden = isAuthPage || isPolicyPage; - const isLoggedIn = authStorage.hasAccessToken(); const { data: hasJobData, isLoading: isHasJobLoading } = useGetHasJob( isLoggedIn && !isAuthPage diff --git a/apps/client/src/main.tsx b/apps/client/src/main.tsx index 397bfc03..59ff7def 100644 --- a/apps/client/src/main.tsx +++ b/apps/client/src/main.tsx @@ -1,6 +1,12 @@ +import { initAnalytics } from '@pinback/analytics'; import { StrictMode } from 'react'; import { createRoot } from 'react-dom/client'; import App from './App.tsx'; + +initAnalytics({ + apiKey: import.meta.env.VITE_AMPLITUDE_API_KEY, + isDev: import.meta.env.DEV, +}); import { QueryClientProvider } from '@tanstack/react-query'; import getQueryClient from '@shared/apis/setting/query/getQueryClient.ts'; import { ReactQueryDevtools } from '@tanstack/react-query-devtools'; diff --git a/apps/client/src/pages/onBoarding/GoogleCallback.tsx b/apps/client/src/pages/onBoarding/GoogleCallback.tsx index b4d03e64..6812524b 100644 --- a/apps/client/src/pages/onBoarding/GoogleCallback.tsx +++ b/apps/client/src/pages/onBoarding/GoogleCallback.tsx @@ -2,12 +2,14 @@ import apiRequest from '@shared/apis/setting/axiosInstance'; import LoadingChippi from '@shared/components/loadingChippi/LoadingChippi'; import { authStorage } from '@shared/utils/authStorage'; import { extensionBridge } from '@shared/utils/extensionBridge'; +import { useQueryClient } from '@tanstack/react-query'; import { useEffect } from 'react'; import { useNavigate, useSearchParams } from 'react-router-dom'; const GoogleCallback = () => { const navigate = useNavigate(); const [searchParams] = useSearchParams(); + const queryClient = useQueryClient(); useEffect(() => { const code = searchParams.get('code'); @@ -65,6 +67,7 @@ const GoogleCallback = () => { res.data.data; authStorage.setUserIdentity(email, userId); + queryClient.invalidateQueries({ queryKey: ['amplitudeUserProperties'] }); handleUserLogin(isUser, accessToken, refreshToken, hasJob); } catch (error) { diff --git a/apps/client/src/shared/apis/axios.ts b/apps/client/src/shared/apis/axios.ts index a3d1e757..7c45e215 100644 --- a/apps/client/src/shared/apis/axios.ts +++ b/apps/client/src/shared/apis/axios.ts @@ -1,5 +1,6 @@ import apiRequest from '@shared/apis/setting/axiosInstance'; import { + AmplitudeUserPropertiesResponse, EditArticleRequest, HasJobResponse, JobsResponse, @@ -117,3 +118,9 @@ export const getCategoryDetail = async (categoryId: number) => { const { data } = await apiRequest.get(`/api/v3/categories/${categoryId}`); return data.data; }; + +export const getAmplitudeUserProperties = + async (): Promise => { + const { data } = await apiRequest.get('/api/v3/users/properties'); + return data.data; + }; diff --git a/apps/client/src/shared/apis/queries.ts b/apps/client/src/shared/apis/queries.ts index 22cb33a4..8b6619f9 100644 --- a/apps/client/src/shared/apis/queries.ts +++ b/apps/client/src/shared/apis/queries.ts @@ -2,6 +2,7 @@ import { deleteCategory, deleteRemindArticle, getAcorns, + getAmplitudeUserProperties, getArticleDetail, getCategoryDetail, getDashboardCategories, @@ -20,6 +21,7 @@ import { } from '@shared/apis/axios'; import { AcornsResponse, + AmplitudeUserPropertiesResponse, ArticleDetailResponse, ArticleReadStatusResponse, CategoryDetailResponse, @@ -220,6 +222,16 @@ export const useSuspenseGetJobs = () => { }); }; +export const useGetAmplitudeUserProperties = + (): UseQueryResult => { + return useQuery({ + queryKey: ['amplitudeUserProperties'], + queryFn: getAmplitudeUserProperties, + staleTime: Infinity, + retry: false, + }); + }; + export const usePatchUserJob = () => { const queryClient = useQueryClient(); @@ -229,6 +241,9 @@ export const usePatchUserJob = () => { queryClient.invalidateQueries({ queryKey: ['hasJob'], }); + queryClient.invalidateQueries({ + queryKey: ['amplitudeUserProperties'], + }); }, }); }; diff --git a/apps/client/src/shared/components/profilePopup/ProfilePopup.tsx b/apps/client/src/shared/components/profilePopup/ProfilePopup.tsx index 7ea92d7d..3a7f1b83 100644 --- a/apps/client/src/shared/components/profilePopup/ProfilePopup.tsx +++ b/apps/client/src/shared/components/profilePopup/ProfilePopup.tsx @@ -1,3 +1,4 @@ +import { analytics } from '@pinback/analytics'; import { Icon } from '@pinback/design-system/icons'; import { Button } from '@pinback/design-system/ui'; import { useQueryClient } from '@tanstack/react-query'; @@ -44,6 +45,7 @@ export default function ProfilePopup({ if (!open) return null; const handleLogout = () => { + analytics.reset(); authStorage.clearSession(); queryClient.clear(); extensionBridge.logout(); diff --git a/apps/client/src/shared/types/api.ts b/apps/client/src/shared/types/api.ts index 9a30398a..996d7dfb 100644 --- a/apps/client/src/shared/types/api.ts +++ b/apps/client/src/shared/types/api.ts @@ -60,3 +60,8 @@ export interface CategoryDetailResponse { export interface HasJobResponse { hasJob: boolean; } + +export interface AmplitudeUserPropertiesResponse { + userId: string; + jobRole: string | null; +} diff --git a/apps/extension/package.json b/apps/extension/package.json index 60e5ef0e..2aaf02c2 100644 --- a/apps/extension/package.json +++ b/apps/extension/package.json @@ -16,6 +16,7 @@ "dependencies": { "@pinback/contracts": "workspace:*", "@tanstack/react-query": "^5.85.5", + "@pinback/analytics": "workspace:*", "axios": "^1.11.0", "react": "^19.1.1", "react-dom": "^19.1.1" diff --git a/apps/extension/src/popup.tsx b/apps/extension/src/popup.tsx index 570f9dc0..f92a8006 100644 --- a/apps/extension/src/popup.tsx +++ b/apps/extension/src/popup.tsx @@ -1,8 +1,14 @@ +import { initAnalytics } from '@pinback/analytics'; import { createRoot } from 'react-dom/client'; import App from './App'; import { QueryClientProvider } from '@tanstack/react-query'; import getQueryClient from './apis/query/getQueryClient'; +initAnalytics({ + apiKey: import.meta.env.VITE_AMPLITUDE_API_KEY, + isDev: import.meta.env.DEV, +}); + const queryClient = getQueryClient(); const rootEl = document.getElementById('root'); diff --git a/packages/analytics/ampli.json b/packages/analytics/ampli.json new file mode 100644 index 00000000..52a35c65 --- /dev/null +++ b/packages/analytics/ampli.json @@ -0,0 +1,14 @@ +{ + "Zone": "us", + "OrgId": "416251", + "WorkspaceId": "b45d1b45-76f3-4ffc-a3df-3d2ba02b40a7", + "SourceId": "549df154-226b-4813-b3fa-2e6975515641", + "Branch": "main", + "Version": "1.0.0", + "VersionId": "a8d7f423-b996-4b7f-b836-cd64e2319f47", + "Runtime": "browser:typescript-ampli-v2", + "Platform": "Browser", + "Language": "TypeScript", + "SDK": "@amplitude/analytics-browser@^1.0", + "Path": "./src/ampli" +} \ No newline at end of file diff --git a/packages/analytics/index.ts b/packages/analytics/index.ts new file mode 100644 index 00000000..a5cd8f89 --- /dev/null +++ b/packages/analytics/index.ts @@ -0,0 +1,34 @@ +import { analytics } from './src/analytics'; +import { amplitudeProvider } from './src/providers/amplitude'; +import { consoleProvider } from './src/providers/console'; + +export type { AnalyticsProvider, UserProperties } from './src/types'; +export { analytics }; + +interface InitAnalyticsOptions { + apiKey: string; + isDev: boolean; +} + +export const initAnalytics = ({ apiKey, isDev }: InitAnalyticsOptions): void => { + if (isDev || !apiKey) { + analytics.setProvider(consoleProvider); + return; + } + + try { + amplitudeProvider.init(apiKey); + analytics.setProvider(amplitudeProvider); + } catch (error) { + console.error('[Analytics] Failed to initialize Amplitude, falling back to console provider', error); + analytics.setProvider(consoleProvider); + } +}; + +// 타입된 이벤트(Ampli 등)로 처리하기 어려운 예외 케이스용 fallback +export const trackEvent = ( + eventName: string, + properties?: Record +): void => { + analytics.track(eventName, properties); +}; diff --git a/packages/analytics/package.json b/packages/analytics/package.json new file mode 100644 index 00000000..6c87a3c5 --- /dev/null +++ b/packages/analytics/package.json @@ -0,0 +1,14 @@ +{ + "name": "@pinback/analytics", + "version": "1.0.0", + "main": "index.ts", + "scripts": { + "ampli:pull": "ampli pull" + }, + "dependencies": { + "@amplitude/unified": "^1.0.10" + }, + "devDependencies": { + "@amplitude/ampli": "^1.36.2" + } +} diff --git a/packages/analytics/src/ampli/index.ts b/packages/analytics/src/ampli/index.ts new file mode 100644 index 00000000..012b4195 --- /dev/null +++ b/packages/analytics/src/ampli/index.ts @@ -0,0 +1,522 @@ +/* tslint:disable */ +/* eslint-disable */ +// @ts-nocheck +/** + * Ampli - A strong typed wrapper for your Analytics + * + * This file is generated by Amplitude. + * To update run 'ampli pull prod' + * + * Required dependencies: @amplitude/analytics-browser@^1.3.0 + * Tracking Plan Version: 1 + * Build: 1.0.0 + * Runtime: browser:typescript-ampli-v2 + * + * [View Tracking Plan](https://data.amplitude.com/pinback/default/events/main/latest) + * + * [Full Setup Instructions](https://data.amplitude.com/pinback/default/implementation/prod) + */ + +import * as amplitude from '@amplitude/analytics-browser'; + +export type Environment = 'default'; + +export const ApiKey: Record = { + default: 'bb48a29e445e2f350a1d23ad67f38d55' +}; + +/** + * Default Amplitude configuration options. Contains tracking plan information. + */ +export const DefaultConfiguration: BrowserOptions = { + plan: { + version: '1', + branch: 'main', + source: 'prod', + versionId: 'a8d7f423-b996-4b7f-b836-cd64e2319f47' + }, + ...{ + ingestionMetadata: { + sourceName: 'browser-typescript-ampli', + sourceVersion: '2.0.0' + } + } +}; + +export interface LoadOptionsBase { disabled?: boolean } + +export type LoadOptionsWithEnvironment = LoadOptionsBase & { environment: Environment; client?: { configuration?: BrowserOptions; }; }; +export type LoadOptionsWithApiKey = LoadOptionsBase & { client: { apiKey: string; configuration?: BrowserOptions; } }; +export type LoadOptionsWithClientInstance = LoadOptionsBase & { client: { instance: BrowserClient; } }; + +export type LoadOptions = LoadOptionsWithEnvironment | LoadOptionsWithApiKey | LoadOptionsWithClientInstance; + +export interface IdentifyProperties { + job_role?: string; +} + +export interface ClickedReminderProperties { + /** + * 아티클 고유 ID (특정 아티클 재열람 확인 등) + */ + article_id?: string; + /** + * 리마인드 아이디(보내고 클릭해졌는지 클릭률 계산 등) + */ + reminder_id?: string; + /** + * 리마인드 유형 + */ + reminder_type?: string; +} + +export interface ClickedSharedBookmarkProperties { + /** + * 아티클 고유 ID (특정 아티클 재열람 확인 등) + */ + article_id?: string; + /** + * 카테고리 고유 ID (어디에 저장됐는지, 공유 여부 확인 등) + */ + category_id?: string; +} + +export interface OpenedSavedContentProperties { + /** + * 아티클 고유 ID (특정 아티클 재열람 확인 등) + */ + article_id?: string; + /** + * 카테고리 고유 ID (어디에 저장됐는지, 공유 여부 확인 등) + */ + category_id?: string; + /** + * 콘텐츠 유입 출처 + */ + source_type?: string; +} + +export interface SavedArticleProperties { + /** + * 아티클 고유 ID (특정 아티클 재열람 확인 등) + */ + article_id?: string; + /** + * 카테고리 고유 ID (어디에 저장됐는지, 공유 여부 확인 등) + */ + category_id?: string; + /** + * 첫 저장인지 여부 + */ + is_first_save?: boolean; + /** + * 저장 대상 페이지 도메인 + */ + page_domain?: string; + /** + * 저장 방식 + */ + save_method?: string; + /** + * 저장이 발생한 위치 + */ + save_source?: string; +} + +export interface SavedSharedBookmarkProperties { + /** + * 아티클 고유 ID (특정 아티클 재열람 확인 등) + */ + article_id?: string; + /** + * 카테고리 고유 ID (어디에 저장됐는지, 공유 여부 확인 등) + */ + category_id?: string; + /** + * 저장이 발생한 위치 + */ + save_source?: string; + /** + * 콘텐츠 유입 출처 + */ + source_type?: string; +} + +export interface TriggeredReminderProperties { + /** + * 아티클 고유 ID (특정 아티클 재열람 확인 등) + */ + article_id?: string; + /** + * 카테고리 고유 ID (어디에 저장됐는지, 공유 여부 확인 등) + */ + category_id?: string; + /** + * 리마인드 유형 + */ + reminder_type?: string; +} + +export interface ViewedSavedContentProperties { + /** + * 아티클 고유 ID (특정 아티클 재열람 확인 등) + */ + article_id?: string; + /** + * 카테고리 고유 ID (어디에 저장됐는지, 공유 여부 확인 등) + */ + category_id?: string; + /** + * 콘텐츠 유입 출처 + */ + source_type?: string; +} + +export class Identify implements BaseEvent { + event_type = amplitude.Types.SpecialEventType.IDENTIFY; + + constructor( + public event_properties?: IdentifyProperties, + ) { + this.event_properties = event_properties; + } +} + +export class ClickedReminder implements BaseEvent { + event_type = 'Clicked_Reminder'; + + constructor( + public event_properties?: ClickedReminderProperties, + ) { + this.event_properties = event_properties; + } +} + +export class ClickedSharedBookmark implements BaseEvent { + event_type = 'Clicked_Shared_Bookmark'; + + constructor( + public event_properties?: ClickedSharedBookmarkProperties, + ) { + this.event_properties = event_properties; + } +} + +export class OpenedSavedContent implements BaseEvent { + event_type = 'Opened_Saved_Content'; + + constructor( + public event_properties?: OpenedSavedContentProperties, + ) { + this.event_properties = event_properties; + } +} + +export class SavedArticle implements BaseEvent { + event_type = 'Saved_Article'; + + constructor( + public event_properties?: SavedArticleProperties, + ) { + this.event_properties = event_properties; + } +} + +export class SavedSharedBookmark implements BaseEvent { + event_type = 'Saved_Shared_Bookmark'; + + constructor( + public event_properties?: SavedSharedBookmarkProperties, + ) { + this.event_properties = event_properties; + } +} + +export class TriggeredReminder implements BaseEvent { + event_type = 'Triggered_Reminder'; + + constructor( + public event_properties?: TriggeredReminderProperties, + ) { + this.event_properties = event_properties; + } +} + +export class ViewedSavedContent implements BaseEvent { + event_type = 'Viewed_Saved_Content'; + + constructor( + public event_properties?: ViewedSavedContentProperties, + ) { + this.event_properties = event_properties; + } +} + +export class ViewedSharedBookmarkList implements BaseEvent { + event_type = 'Viewed_Shared_Bookmark_List'; +} + +export type PromiseResult = { promise: Promise }; + +const getVoidPromiseResult = () => ({ promise: Promise.resolve() }); + +// prettier-ignore +export class Ampli { + private disabled: boolean = false; + private amplitude?: BrowserClient; + + get client(): BrowserClient { + this.isInitializedAndEnabled(); + return this.amplitude!; + } + + get isLoaded(): boolean { + return this.amplitude != null; + } + + private isInitializedAndEnabled(): boolean { + if (!this.amplitude) { + console.error('ERROR: Ampli is not yet initialized. Have you called ampli.load() on app start?'); + return false; + } + return !this.disabled; + } + + /** + * Initialize the Ampli SDK. Call once when your application starts. + * + * @param options Configuration options to initialize the Ampli SDK with. + */ + load(options: LoadOptions): PromiseResult { + this.disabled = options.disabled ?? false; + + if (this.amplitude) { + console.warn('WARNING: Ampli is already intialized. Ampli.load() should be called once at application startup.'); + return getVoidPromiseResult(); + } + + let apiKey: string | null = null; + if (options.client && 'apiKey' in options.client) { + apiKey = options.client.apiKey; + } else if ('environment' in options) { + apiKey = ApiKey[options.environment]; + } + + if (options.client && 'instance' in options.client) { + this.amplitude = options.client.instance; + } else if (apiKey) { + this.amplitude = amplitude.createInstance(); + const configuration = (options.client && 'configuration' in options.client) ? options.client.configuration : {}; + return this.amplitude.init(apiKey, undefined, { ...DefaultConfiguration, ...configuration }); + } else { + console.error("ERROR: ampli.load() requires 'environment', 'client.apiKey', or 'client.instance'"); + } + + return getVoidPromiseResult(); + } + + /** + * Identify a user and set user properties. + * + * @param userId The user's id. + * @param properties The user properties. + * @param options Optional event options. + */ + identify( + userId: string | undefined, + properties?: IdentifyProperties, + options?: EventOptions, + ): PromiseResult { + if (!this.isInitializedAndEnabled()) { + return getVoidPromiseResult(); + } + + if (userId) { + options = {...options, user_id: userId}; + } + + const amplitudeIdentify = new amplitude.Identify(); + const eventProperties = properties; + if (eventProperties != null) { + for (const [key, value] of Object.entries(eventProperties)) { + amplitudeIdentify.set(key, value); + } + } + return this.amplitude!.identify( + amplitudeIdentify, + options, + ); + } + + /** + * Flush the event. + */ + flush() : PromiseResult { + if (!this.isInitializedAndEnabled()) { + return getVoidPromiseResult(); + } + + return this.amplitude!.flush(); + } + + /** + * Track event + * + * @param event The event to track. + * @param options Optional event options. + */ + track(event: Event, options?: EventOptions): PromiseResult { + if (!this.isInitializedAndEnabled()) { + return getVoidPromiseResult(); + } + + return this.amplitude!.track(event, undefined, options); + } + + /** + * Clicked_Reminder + * + * [View in Tracking Plan](https://data.amplitude.com/pinback/default/events/main/latest/Clicked_Reminder) + * + * 사용자가 리마인드를 클릭했을 때 발생 + * + * @param properties The event's properties (e.g. article_id) + * @param options Amplitude event options. + */ + clickedReminder( + properties?: ClickedReminderProperties, + options?: EventOptions, + ) { + return this.track(new ClickedReminder(properties), options); + } + + /** + * Clicked_Shared_Bookmark + * + * [View in Tracking Plan](https://data.amplitude.com/pinback/default/events/main/latest/Clicked_Shared_Bookmark) + * + * 공유 북마크 카드를 클릭했을 때 발생 + * + * @param properties The event's properties (e.g. article_id) + * @param options Amplitude event options. + */ + clickedSharedBookmark( + properties?: ClickedSharedBookmarkProperties, + options?: EventOptions, + ) { + return this.track(new ClickedSharedBookmark(properties), options); + } + + /** + * Opened_Saved_Content + * + * [View in Tracking Plan](https://data.amplitude.com/pinback/default/events/main/latest/Opened_Saved_Content) + * + * 저장한 콘텐츠를 다시 클릭해 열었을 때 발생 + * + * @param properties The event's properties (e.g. article_id) + * @param options Amplitude event options. + */ + openedSavedContent( + properties?: OpenedSavedContentProperties, + options?: EventOptions, + ) { + return this.track(new OpenedSavedContent(properties), options); + } + + /** + * Saved_Article + * + * [View in Tracking Plan](https://data.amplitude.com/pinback/default/events/main/latest/Saved_Article) + * + * 현재 페이지를 저장했을 때 발생 + * + * @param properties The event's properties (e.g. article_id) + * @param options Amplitude event options. + */ + savedArticle( + properties?: SavedArticleProperties, + options?: EventOptions, + ) { + return this.track(new SavedArticle(properties), options); + } + + /** + * Saved_Shared_Bookmark + * + * [View in Tracking Plan](https://data.amplitude.com/pinback/default/events/main/latest/Saved_Shared_Bookmark) + * + * 공유 북마크를 내 목록에 저장했을 때 발생 + * + * @param properties The event's properties (e.g. article_id) + * @param options Amplitude event options. + */ + savedSharedBookmark( + properties?: SavedSharedBookmarkProperties, + options?: EventOptions, + ) { + return this.track(new SavedSharedBookmark(properties), options); + } + + /** + * Triggered_Reminder + * + * [View in Tracking Plan](https://data.amplitude.com/pinback/default/events/main/latest/Triggered_Reminder) + * + * 리마인드 알림이 실제 발송되었을 때 발생 + * + * @param properties The event's properties (e.g. article_id) + * @param options Amplitude event options. + */ + triggeredReminder( + properties?: TriggeredReminderProperties, + options?: EventOptions, + ) { + return this.track(new TriggeredReminder(properties), options); + } + + /** + * Viewed_Saved_Content + * + * [View in Tracking Plan](https://data.amplitude.com/pinback/default/events/main/latest/Viewed_Saved_Content) + * + * 저장한 콘텐츠 목록 또는 상세가 노출될 때 발생 + * + * @param properties The event's properties (e.g. article_id) + * @param options Amplitude event options. + */ + viewedSavedContent( + properties?: ViewedSavedContentProperties, + options?: EventOptions, + ) { + return this.track(new ViewedSavedContent(properties), options); + } + + /** + * Viewed_Shared_Bookmark_List + * + * [View in Tracking Plan](https://data.amplitude.com/pinback/default/events/main/latest/Viewed_Shared_Bookmark_List) + * + * 공유 북마크 목록을 조회했을 때 발생 + * + * @param options Amplitude event options. + */ + viewedSharedBookmarkList( + options?: EventOptions, + ) { + return this.track(new ViewedSharedBookmarkList(), options); + } +} + +export const ampli = new Ampli(); + +// BASE TYPES +type BrowserOptions = amplitude.Types.BrowserOptions; + +export type BrowserClient = amplitude.Types.BrowserClient; +export type BaseEvent = amplitude.Types.BaseEvent; +export type IdentifyEvent = amplitude.Types.IdentifyEvent; +export type GroupEvent = amplitude.Types.GroupIdentifyEvent; +export type Event = amplitude.Types.Event; +export type EventOptions = amplitude.Types.EventOptions; +export type Result = amplitude.Types.Result; diff --git a/packages/analytics/src/analytics.ts b/packages/analytics/src/analytics.ts new file mode 100644 index 00000000..e49b2090 --- /dev/null +++ b/packages/analytics/src/analytics.ts @@ -0,0 +1,19 @@ +import { noopProvider } from './providers/noop'; +import type { AnalyticsProvider, UserProperties } from './types'; + +let provider: AnalyticsProvider = noopProvider; + +export const analytics = { + setProvider(newProvider: AnalyticsProvider): void { + provider = newProvider; + }, + track(eventName: string, properties?: Record): void { + provider.track(eventName, properties); + }, + identify(userId: string, userProperties?: UserProperties): void { + provider.identify(userId, userProperties); + }, + reset(): void { + provider.reset(); + }, +}; diff --git a/packages/analytics/src/providers/amplitude.ts b/packages/analytics/src/providers/amplitude.ts new file mode 100644 index 00000000..37a785fa --- /dev/null +++ b/packages/analytics/src/providers/amplitude.ts @@ -0,0 +1,48 @@ +import { Identify, identify, setUserId, reset, track, initAll } from '@amplitude/unified'; + +import type { AnalyticsProvider, UserProperties } from '../types'; + +export const amplitudeProvider: AnalyticsProvider = { + init(apiKey: string) { + initAll(apiKey, { + analytics: { + autocapture: { + attribution: true, + pageViews: true, + sessions: true, + formInteractions: true, + frustrationInteractions: { + thrashedCursor: true, + errorClicks: true, + deadClicks: true, + rageClicks: true, + }, + fileDownloads: false, + elementInteractions: false, + networkTracking: false, + webVitals: false, + }, + }, + }); + }, + + track(eventName: string, properties?: Record) { + track(eventName, properties); + }, + + identify(userId: string, userProperties?: UserProperties) { + setUserId(userId); + + if (userProperties) { + const identifyEvent = new Identify(); + Object.entries(userProperties).forEach(([key, value]) => { + identifyEvent.set(key, value as string | number | boolean); + }); + identify(identifyEvent); + } + }, + + reset() { + reset(); + }, +}; diff --git a/packages/analytics/src/providers/console.ts b/packages/analytics/src/providers/console.ts new file mode 100644 index 00000000..5bf131a8 --- /dev/null +++ b/packages/analytics/src/providers/console.ts @@ -0,0 +1,8 @@ +import type { AnalyticsProvider } from '../types'; + +export const consoleProvider: AnalyticsProvider = { + init: (_apiKey) => console.log('[Analytics] init'), + track: (name, props) => console.log('[Analytics] track', name, props ?? {}), + identify: (userId, userProperties) => console.log('[Analytics] identify', { userId, ...userProperties }), + reset: () => console.log('[Analytics] reset'), +}; diff --git a/packages/analytics/src/providers/noop.ts b/packages/analytics/src/providers/noop.ts new file mode 100644 index 00000000..52b0062f --- /dev/null +++ b/packages/analytics/src/providers/noop.ts @@ -0,0 +1,8 @@ +import type { AnalyticsProvider } from '../types'; + +export const noopProvider: AnalyticsProvider = { + init: () => {}, + track: () => {}, + identify: (_userId: string) => {}, + reset: () => {}, +}; diff --git a/packages/analytics/src/types.ts b/packages/analytics/src/types.ts new file mode 100644 index 00000000..c406222b --- /dev/null +++ b/packages/analytics/src/types.ts @@ -0,0 +1,10 @@ +export interface UserProperties { + job_role?: string; +} + +export interface AnalyticsProvider { + init(apiKey: string): void; + track(eventName: string, properties?: Record): void; + identify(userId: string, userProperties?: UserProperties): void; + reset(): void; +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ac8d5fee..9638637d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -41,7 +41,7 @@ importers: version: 9.1.3(@types/react@19.1.10)(storybook@9.1.3(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.2(@types/node@22.15.3)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1))) '@storybook/addon-vitest': specifier: ^9.1.3 - version: 9.1.3(@vitest/browser@3.2.4(playwright@1.55.0)(vite@7.1.2(@types/node@22.15.3)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1))(vitest@3.2.4))(@vitest/runner@3.2.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.3(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.2(@types/node@22.15.3)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1)))(vitest@3.2.4(@types/node@22.15.3)(@vitest/browser@3.2.4)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1)) + version: 9.1.3(@vitest/browser@3.2.4(playwright@1.55.0)(vite@7.1.2(@types/node@22.15.3)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1))(vitest@3.2.4))(@vitest/runner@3.2.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.3(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.2(@types/node@22.15.3)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1)))(vitest@3.2.4(@types/debug@4.1.13)(@types/node@22.15.3)(@vitest/browser@3.2.4)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1)) '@storybook/react-vite': specifier: ^9.1.3 version: 9.1.3(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(rollup@4.46.2)(storybook@9.1.3(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.2(@types/node@22.15.3)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1)))(typescript@5.9.2)(vite@7.1.2(@types/node@22.15.3)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1)) @@ -59,7 +59,7 @@ importers: version: 3.2.4(playwright@1.55.0)(vite@7.1.2(@types/node@22.15.3)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1))(vitest@3.2.4) '@vitest/coverage-v8': specifier: ^3.2.4 - version: 3.2.4(@vitest/browser@3.2.4(playwright@1.55.0)(vite@7.1.2(@types/node@22.15.3)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1))(vitest@3.2.4))(vitest@3.2.4(@types/node@22.15.3)(@vitest/browser@3.2.4)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1)) + version: 3.2.4(@vitest/browser@3.2.4(playwright@1.55.0)(vite@7.1.2(@types/node@22.15.3)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1))(vitest@3.2.4))(vitest@3.2.4(@types/debug@4.1.13)(@types/node@22.15.3)(@vitest/browser@3.2.4)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1)) dotenv: specifier: ^17.3.1 version: 17.3.1 @@ -89,10 +89,13 @@ importers: version: 7.1.2(@types/node@22.15.3)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/node@22.15.3)(@vitest/browser@3.2.4)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.13)(@types/node@22.15.3)(@vitest/browser@3.2.4)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1) apps/client: dependencies: + '@pinback/analytics': + specifier: workspace:* + version: link:../../packages/analytics '@pinback/contracts': specifier: workspace:* version: link:../../packages/contracts @@ -190,6 +193,9 @@ importers: apps/extension: dependencies: + '@pinback/analytics': + specifier: workspace:* + version: link:../../packages/analytics '@pinback/contracts': specifier: workspace:* version: link:../../packages/contracts @@ -361,6 +367,16 @@ importers: specifier: ^5.1.4 version: 5.1.4(typescript@5.8.3)(vite@7.1.2(@types/node@22.15.3)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1)) + packages/analytics: + dependencies: + '@amplitude/unified': + specifier: ^1.0.10 + version: 1.0.10(@amplitude/rrweb@2.0.0-alpha.36)(rollup@4.46.2) + devDependencies: + '@amplitude/ampli': + specifier: ^1.36.2 + version: 1.36.2(@types/node@22.15.3) + packages/contracts: devDependencies: '@pinback/typescript-config': @@ -435,7 +451,7 @@ importers: version: 9.1.3(storybook@9.1.3(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.2(@types/node@22.15.3)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1))) '@storybook/addon-vitest': specifier: 9.1.3 - version: 9.1.3(@vitest/browser@3.2.4(playwright@1.55.0)(vite@7.1.2(@types/node@22.15.3)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1))(vitest@3.2.4))(@vitest/runner@3.2.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.3(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.2(@types/node@22.15.3)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1)))(vitest@3.2.4(@types/node@22.15.3)(@vitest/browser@3.2.4)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1)) + version: 9.1.3(@vitest/browser@3.2.4(playwright@1.55.0)(vite@7.1.2(@types/node@22.15.3)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1))(vitest@3.2.4))(@vitest/runner@3.2.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.3(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.2(@types/node@22.15.3)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1)))(vitest@3.2.4(@types/debug@4.1.13)(@types/node@22.15.3)(@vitest/browser@3.2.4)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1)) '@storybook/blocks': specifier: ^8.6.14 version: 8.6.14(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.3(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.2(@types/node@22.15.3)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1))) @@ -462,7 +478,7 @@ importers: version: 3.2.4(playwright@1.55.0)(vite@7.1.2(@types/node@22.15.3)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1))(vitest@3.2.4) '@vitest/coverage-v8': specifier: ^3.2.4 - version: 3.2.4(@vitest/browser@3.2.4(playwright@1.55.0)(vite@7.1.2(@types/node@22.15.3)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1))(vitest@3.2.4))(vitest@3.2.4(@types/node@22.15.3)(@vitest/browser@3.2.4)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1)) + version: 3.2.4(@vitest/browser@3.2.4(playwright@1.55.0)(vite@7.1.2(@types/node@22.15.3)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1))(vitest@3.2.4))(vitest@3.2.4(@types/debug@4.1.13)(@types/node@22.15.3)(@vitest/browser@3.2.4)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1)) chromatic: specifier: ^13.1.3 version: 13.1.3 @@ -498,7 +514,7 @@ importers: version: 5.1.4(typescript@5.9.2)(vite@7.1.2(@types/node@22.15.3)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1)) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/node@22.15.3)(@vitest/browser@3.2.4)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.13)(@types/node@22.15.3)(@vitest/browser@3.2.4)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1) packages/eslint-config: devDependencies: @@ -555,6 +571,119 @@ packages: '@adobe/css-tools@4.4.4': resolution: {integrity: sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==} + '@amplitude/ampli@1.36.2': + resolution: {integrity: sha512-TZOdJT5C9TV19kHBN6ssVFbQD4Q+WmWSlC94yQyPUUS4xvPDVjny7xP98UX7Liw8TZHsuV7j+2TFM1CNmNQ0Iw==} + engines: {node: '>=12.0.0'} + hasBin: true + + '@amplitude/analytics-browser@2.37.0': + resolution: {integrity: sha512-/BWDneHRfq6+9bcPQC09Ep79SEj7aRJLZ1jJrPHtxA9KZJUz2au2COlJc1ReCaNzCcrA1xXv/MQ0Fv7TwoBglg==} + + '@amplitude/analytics-client-common@2.4.39': + resolution: {integrity: sha512-DFzi2/D2eu7EBCyslk86lToQa+qo1AmKgvZQVDDqkLG37/meTRcBAZiL0FAdTX21AYwpC/Ym4FWowD04foiBIQ==} + + '@amplitude/analytics-connector@1.6.4': + resolution: {integrity: sha512-SpIv0IQMNIq6SH3UqFGiaZyGSc7PBZwRdq7lvP0pBxW8i4Ny+8zwI0pV+VMfMHQwWY3wdIbWw5WQphNjpdq1/Q==} + + '@amplitude/analytics-core@2.43.0': + resolution: {integrity: sha512-rcDqi4cmI9Ro7hN5wjAuTm92IdN2i0lhIDAj+JOd9BP3SRMrhhiw2lzcScj3owig8CiV9X7EHPTuZe6XCTfIgQ==} + + '@amplitude/analytics-types@1.4.0': + resolution: {integrity: sha512-RiMPHBqdrJ8ktTqG+Wzj2htnN/PCG9jGZG0SXtTFnWwVvcAJYbYm55/nrP1TTyrx1OlLhvF2VG3lVUP/xGAU8w==} + + '@amplitude/analytics-types@2.11.1': + resolution: {integrity: sha512-wFEgb0t99ly2uJKm5oZ28Lti0Kh5RecR5XBkwfUpDzn84IoCIZ8GJTsMw/nThu8FZFc7xFDA4UAt76zhZKrs9A==} + + '@amplitude/engagement-browser@1.0.8': + resolution: {integrity: sha512-nSkHOlA6R6lfj51X4beC7lbR/wfJ3zCMwfXGe6M/8WHw8NtanLW0hkXhH+mDLUCA1xMLBbwO4VZOEPwjdFXubQ==} + + '@amplitude/experiment-core@0.12.0': + resolution: {integrity: sha512-EiLLxcyJD8T3GFsMPxBfWx9n9fBw6rC0RJwccPXLzResE0HnGZZpVWF86ZndnYmEMD1lUUjWi41N1ymEzodI5w==} + + '@amplitude/experiment-core@0.7.2': + resolution: {integrity: sha512-Wc2NWvgQ+bLJLeF0A9wBSPIaw0XuqqgkPKsoNFQrmS7r5Djd56um75In05tqmVntPJZRvGKU46pAp8o5tdf4mA==} + + '@amplitude/experiment-js-client@1.20.3': + resolution: {integrity: sha512-rv778CbjisEaYcHW9UyFcSQu1TqJPqR+lo8yYPZ50UKDGQfK6hKtWY4zPKRdwnr49ZF0Z+Bm/haYBNNP0aAW8Q==} + + '@amplitude/identify@1.10.2': + resolution: {integrity: sha512-ywxeabS8ukMdJWNwx3rG/EBngXFg/4NsPhlyAxbBUcI7HzBXEJUKepiZfkz8K6Y7f0mpc23Qz1aBf48ZJDZmkQ==} + engines: {node: '>=10'} + + '@amplitude/node@1.10.2': + resolution: {integrity: sha512-E3xp8DOpkF5ThjrRlAmSocnrEYsTPpd3Zg4WdBLms0ackQSgQpw6z84+YMcoPerZHJJ/LEqdo4Cg4Z5Za3D+3Q==} + engines: {node: '>=10'} + + '@amplitude/plugin-autocapture-browser@1.24.1': + resolution: {integrity: sha512-cvjOFew2MFNBDTbk3+H7WNi3D0Jdp476m6faCaVhY99M5zqRCHDMRS7dC4HczvL9zYXlAcW9jAWucwES2m3TiQ==} + + '@amplitude/plugin-custom-enrichment-browser@0.1.0': + resolution: {integrity: sha512-y3VmqZvCP1Z3jNgo/mtKVHON9L0P2SyqkMmUsbbFuLu1+TKIkicotnVq/lzlLU1TrW68mkInOM+We8JngasZBA==} + + '@amplitude/plugin-experiment-browser@1.0.0-beta.19': + resolution: {integrity: sha512-A2Nm0yVs8RD0lsyOpKWN47AFNfaA5SyNMHsIYrTWAJfLmY2noCAwtfLqDTrRaM5Qx0lumMrrp6jDtS6XLplLWQ==} + + '@amplitude/plugin-network-capture-browser@1.9.9': + resolution: {integrity: sha512-SJIOQN04Mk9vCsnVd9QRcIvkMV7XSGZIKfbaKNQY5O3ueV33Kc8opm7YjPg2sWcxdzTcJijbCkOI0wCwOaRolg==} + + '@amplitude/plugin-page-url-enrichment-browser@0.7.0': + resolution: {integrity: sha512-MkM7TDq24k7ilUDNZISqjDSkVfmDJxWcnUagwYEXjLILhno5hGm7wdgFvVXXzKlZQHEogBxkbnq7wZXS9/YsMw==} + + '@amplitude/plugin-page-view-tracking-browser@2.9.1': + resolution: {integrity: sha512-jkxz2lkJDAfsjj7mpbPUZx9N3qJssC3uYyv8Nk73z+p+v0wjBikWdOoKuNQkcuP09701zRdXp9ziU8+qwkGusw==} + + '@amplitude/plugin-session-replay-browser@1.27.1': + resolution: {integrity: sha512-IEkAU7O3LbL23piMD7Lu0ej9wT/LQdQsyY1okTW5y2Nov8ZCmqLhZPLk6s9vKCUxGukDi7IL6gqXpURTLYj5rQ==} + + '@amplitude/plugin-web-vitals-browser@1.1.24': + resolution: {integrity: sha512-7AaytUK78RKdyDsblYJCKYan1lQi3Qzsp1WHItHJ+RSXPccmi4mCcvNtx0e8T9LmNJlUnsmYeEGR/6FaWvyvFg==} + + '@amplitude/rrdom@2.0.0-alpha.36': + resolution: {integrity: sha512-8jNhYEzjp6aaZON7qY/IpZIVbl8SUojb8kxD58StknlvnjKeGV7nHheXbkIz+T1LSVbWsdh+noIWuqhyFWzvgg==} + + '@amplitude/rrweb-packer@2.0.0-alpha.36': + resolution: {integrity: sha512-kqKg6OGoxHZvG4jwyO4kIjLdf8MkL6JcY5iLB09PQNP7O36ysnrH+ecJfa4V1Rld99kX25Pefkw4bzKmmFAqcg==} + + '@amplitude/rrweb-plugin-console-record@2.0.0-alpha.36': + resolution: {integrity: sha512-7VbXu36PpJA8dSOFxpfpMaoDTuPK5uy1C8mN+Wfdm0X4ROdmrvcTdlQj+jGzhLGeK+xbTixHEy23itCNUau7hQ==} + peerDependencies: + '@amplitude/rrweb': ^2.0.0-alpha.36 + + '@amplitude/rrweb-record@2.0.0-alpha.36': + resolution: {integrity: sha512-zSHvmG5NUG4jNgWNVM7Oj3+rJPagv+TiHlnSiJ1X0WWLIg1GbUnOoTqpincZS5QupqTxQchNQaUg9MNu0MM3sQ==} + + '@amplitude/rrweb-snapshot@2.0.0-alpha.36': + resolution: {integrity: sha512-vUvTXkNcu+cN736tykQDUVWERetFz1hyzgS0Yib5qSeWJwbse/4BaiWaZ7c5WevbbtcjLbDJqYKySJM92H5SxQ==} + + '@amplitude/rrweb-types@2.0.0-alpha.36': + resolution: {integrity: sha512-Bd2r3Bs0XIJt5fgPRWVl8bhvA9FCjJn8vQlDTO8ffPxilGPIzUXLQ06+xoLYkK9v+PDKJnCapOTL4A2LilDmgA==} + + '@amplitude/rrweb-utils@2.0.0-alpha.36': + resolution: {integrity: sha512-w5RGROLU1Kyrq9j+trxcvvfkTp05MEKJ70Ig+YvHyZsE0nElh1PCF8PHAjV0/kji68+KqB03c0hoyaV99CDaDw==} + + '@amplitude/rrweb@2.0.0-alpha.36': + resolution: {integrity: sha512-8vhPOk4fvszfxYZTk37EObW3n7uwEgO//funRSMt/QiBWtgQ8jhpFV9FcOAYdgde0Yw1uIM8oUbWZfy/XrexNw==} + + '@amplitude/session-replay-browser@1.34.1': + resolution: {integrity: sha512-oQ9Pi/vcEhcRxmMIDMOZopt9vSaGYB4X64kp8idKut2Or8/DBhdztSjujwvkYvU48jNfqmT7oxIY5sCLYdiM6w==} + + '@amplitude/targeting@0.2.0': + resolution: {integrity: sha512-/50ywTrC4hfcfJVBbh5DFbqMPPfaIOivZeb5Gb+OGM03QrA+lsUqdvtnKLNuWtceD4H6QQ2KFzPJ5aAJLyzVDA==} + + '@amplitude/types@1.10.2': + resolution: {integrity: sha512-I8qenRI7uU6wKNb9LiZrAosSHVoNHziXouKY81CrqxH9xhVTEIJFXeuCV0hbtBr0Al/8ejnGjQRx+S2SvU/pPg==} + engines: {node: '>=10'} + + '@amplitude/ua-parser-js@0.7.33': + resolution: {integrity: sha512-wKEtVR4vXuPT9cVEIJkYWnlF++Gx3BdLatPBM+SZ1ztVIvnhdGBZR/mn9x/PzyrMcRlZmyi6L56I2J3doVBnjA==} + + '@amplitude/unified@1.0.10': + resolution: {integrity: sha512-088zGJm0SZRT7kxvca3kXNCouG0+ibZHD9+4LdZwHU3uVzI3anLLiM296XcprqjMXDdhaztSklQ2tvk/ypSu7A==} + + '@amplitude/utils@1.10.2': + resolution: {integrity: sha512-tVsHXu61jITEtRjB7NugQ5cVDd4QDzne8T3ifmZye7TiJeUfVRvqe44gDtf55A+7VqhDhyEIIXTA1iVcDGqlEw==} + engines: {node: '>=10'} + '@ampproject/remapping@2.3.0': resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} @@ -1190,6 +1319,82 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@oclif/color@0.1.2': + resolution: {integrity: sha512-M9o+DOrb8l603qvgz1FogJBUGLqcMFL1aFg2ZEL0FbXJofiNTLOWIeB4faeZTLwE6dt0xH9GpCVpzksMMzGbmA==} + engines: {node: '>=8.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + + '@oclif/command@1.8.36': + resolution: {integrity: sha512-/zACSgaYGtAQRzc7HjzrlIs14FuEYAZrMOEwicRoUnZVyRunG4+t5iSEeQu0Xy2bgbCD0U1SP/EdeNZSTXRwjQ==} + engines: {node: '>=12.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + peerDependencies: + '@oclif/config': ^1 + + '@oclif/config@1.18.16': + resolution: {integrity: sha512-VskIxVcN22qJzxRUq+raalq6Q3HUde7sokB7/xk5TqRZGEKRVbFeqdQBxDWwQeudiJEgcNiMvIFbMQ43dY37FA==} + engines: {node: '>=8.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + + '@oclif/config@1.18.17': + resolution: {integrity: sha512-k77qyeUvjU8qAJ3XK3fr/QVAqsZO8QOBuESnfeM5HHtPNLSyfVcwiMM2zveSW5xRdLSG3MfV8QnLVkuyCL2ENg==} + engines: {node: '>=8.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + + '@oclif/config@1.18.2': + resolution: {integrity: sha512-cE3qfHWv8hGRCP31j7fIS7BfCflm/BNZ2HNqHexH+fDrdF2f1D5S8VmXWLC77ffv3oDvWyvE9AZeR0RfmHCCaA==} + engines: {node: '>=8.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + + '@oclif/errors@1.3.5': + resolution: {integrity: sha512-OivucXPH/eLLlOT7FkCMoZXiaVYf8I/w1eTAM1+gKzfhALwWTusxEx7wBmW0uzvkSg/9ovWLycPaBgJbM3LOCQ==} + engines: {node: '>=8.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + + '@oclif/errors@1.3.6': + resolution: {integrity: sha512-fYaU4aDceETd89KXP+3cLyg9EHZsLD3RxF2IU9yxahhBpspWjkWi3Dy3bTgcwZ3V47BgxQaGapzJWDM33XIVDQ==} + engines: {node: '>=8.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + + '@oclif/help@1.0.15': + resolution: {integrity: sha512-Yt8UHoetk/XqohYX76DfdrUYLsPKMc5pgkzsZVHDyBSkLiGRzujVaGZdjr32ckVZU9q3a47IjhWxhip7Dz5W/g==} + engines: {node: '>=8.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + + '@oclif/linewrap@1.0.0': + resolution: {integrity: sha512-Ups2dShK52xXa8w6iBWLgcjPJWjais6KPJQq3gQ/88AY6BXoTX+MIGFPrWQO1KLMiQfoTpcLnUwloN4brrVUHw==} + + '@oclif/parser@3.8.17': + resolution: {integrity: sha512-l04iSd0xoh/16TGVpXb81Gg3z7tlQGrEup16BrVLsZBK6SEYpYHRJZnM32BwZrHI97ZSFfuSwVlzoo6HdsaK8A==} + engines: {node: '>=8.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + + '@oclif/plugin-autocomplete@0.3.0': + resolution: {integrity: sha512-gCuIUCswvoU1BxDDvHSUGxW8rFagiacle8jHqE49+WnuniXD/N8NmJvnzmlNyc8qLE192CnKK+qYyAF+vaFQBg==} + engines: {node: '>=8.0.0'} + + '@oclif/plugin-help@3.3.1': + resolution: {integrity: sha512-QuSiseNRJygaqAdABYFWn/H1CwIZCp9zp/PLid6yXvy6VcQV7OenEFF5XuYaCvSARe2Tg9r8Jqls5+fw1A9CbQ==} + engines: {node: '>=8.0.0'} + + '@oclif/plugin-update@1.5.0': + resolution: {integrity: sha512-GsWK1CMeBBO8YknThoOZulj3xE+ZgZAXW1ouNJALXcs3mbROzszLDGjXV3RM6ffbJpnWLiMIqSFNOE8d+vGcgQ==} + engines: {node: '>=8.0.0'} + + '@oclif/plugin-warn-if-update-available@1.7.3': + resolution: {integrity: sha512-q8q0NIneVCwIAJzglUMsl3EbXR/H5aPDk6g+qs7uF0tToxe07SWSONoNaKPzViwRWvYChMPjL77/rXyW1HVn4A==} + engines: {node: '>=8.0.0'} + + '@oclif/screen@1.0.4': + resolution: {integrity: sha512-60CHpq+eqnTxLZQ4PGHYNwUX572hgpMHGPtTWMjdTMsAvlm69lZV/4ly6O3sAYkomo4NggGcomrDpBe34rxUqw==} + engines: {node: '>=8.0.0'} + deprecated: Deprecated in favor of @oclif/core + + '@phenomnomnominal/tsquery@3.0.0': + resolution: {integrity: sha512-SW8lKitBHWJ9fAYkJ9kJivuctwNYCh3BUxLdH0+XiR1GPBiu+7qiZzh8p8jqlj1LgVC1TbvfNFroaEsmYlL8Iw==} + peerDependencies: + typescript: ^3 + '@pivanov/vite-plugin-svg-sprite@3.1.3': resolution: {integrity: sha512-/GF3JaiMKX4yfAPgFjOXb778rP8tAOedn8e/QhW22tsybKNeTslJE1NnPkFv1WEkxLXyv9lHUAdlCV4olyQWUA==} peerDependencies: @@ -1352,6 +1557,15 @@ packages: '@rolldown/pluginutils@1.0.0-beta.30': resolution: {integrity: sha512-whXaSoNUFiyDAjkUF8OBpOm77Szdbk5lGNqFe6CbVbJFrhCCPinCbRA3NjawwlNHla1No7xvXXh+CpSxnPfUEw==} + '@rollup/plugin-replace@6.0.3': + resolution: {integrity: sha512-J4RZarRvQAm5IF0/LwUUg+obsm+xZhYnbMXmXROyoSE1ATJe3oXSb9L5MMppdxP2ylNSjv6zFBwKYjcKMucVfA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + '@rollup/pluginutils@4.2.1': resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} engines: {node: '>= 8.0.0'} @@ -1465,6 +1679,33 @@ packages: cpu: [x64] os: [win32] + '@sentry/core@6.19.7': + resolution: {integrity: sha512-tOfZ/umqB2AcHPGbIrsFLcvApdTm9ggpi/kQZFkej7kMphjT+SGBiQfYtjyg9jcRW+ilAR4JXC9BGKsdEQ+8Vw==} + engines: {node: '>=6'} + + '@sentry/hub@6.19.7': + resolution: {integrity: sha512-y3OtbYFAqKHCWezF0EGGr5lcyI2KbaXW2Ik7Xp8Mu9TxbSTuwTe4rTntwg8ngPjUQU3SUHzgjqVB8qjiGqFXCA==} + engines: {node: '>=6'} + + '@sentry/minimal@6.19.7': + resolution: {integrity: sha512-wcYmSJOdvk6VAPx8IcmZgN08XTXRwRtB1aOLZm+MVHjIZIhHoBGZJYTVQS/BWjldsamj2cX3YGbGXNunaCfYJQ==} + engines: {node: '>=6'} + + '@sentry/node@6.19.7': + resolution: {integrity: sha512-gtmRC4dAXKODMpHXKfrkfvyBL3cI8y64vEi3fDD046uqYcrWdgoQsffuBbxMAizc6Ez1ia+f0Flue6p15Qaltg==} + engines: {node: '>=6'} + + '@sentry/types@6.19.7': + resolution: {integrity: sha512-jH84pDYE+hHIbVnab3Hr+ZXr1v8QABfhx39KknxqKWr2l0oEItzepV0URvbEhB446lk/S/59230dlUUIBGsXbg==} + engines: {node: '>=6'} + + '@sentry/utils@6.19.7': + resolution: {integrity: sha512-z95ECmE3i9pbWoXQrD/7PgkBAzJYR+iXtPuTkpBjDKs86O3mT+PXOT3BAn79w2wkn7/i3vOGD2xVr1uiMl26dA==} + engines: {node: '>=6'} + + '@servie/events@1.0.0': + resolution: {integrity: sha512-sBSO19KzdrJCM3gdx6eIxV8M9Gxfgg6iDQmH5TIAGaUu+X9VDdsINXJOnoiZ1Kx3TrHdH4bt5UVglkjsEGBcvw==} + '@storybook/addon-a11y@9.1.3': resolution: {integrity: sha512-U+In40S6HCvRN2at+/wn1ECmqFfLa7vPePkR5c9b+Zh2aVNfv+3JbjXfbp29FocTj4ooYsPRYFq7cdzXBjXZ1A==} peerDependencies: @@ -1850,6 +2091,12 @@ packages: '@types/chrome@0.0.273': resolution: {integrity: sha512-6Wp4GO07GLvti13Rf/RpYG+0COSJDOLE4iq3g1+whn1SNGUVnv6vbXqSa/WFbuVpvN1lcBLiZ40+gSeWmKb+eA==} + '@types/css-font-loading-module@0.0.7': + resolution: {integrity: sha512-nl09VhutdjINdWyXxHWN/w9zlNCfr60JUqJbd24YXUuCwgeL0TpFSdElCwb6cxfB6ybE19Gjj4g0jsgkXxKv1Q==} + + '@types/debug@4.1.13': + resolution: {integrity: sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==} + '@types/deep-eql@4.0.2': resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} @@ -1877,6 +2124,9 @@ packages: '@types/inquirer@6.5.0': resolution: {integrity: sha512-rjaYQ9b9y/VFGOpqBEXRavc3jh0a+e6evAbI31tMda8VlPaSy0AZJfXsvmIe3wklc7W6C3zCSfleuMXR7NOyXw==} + '@types/inquirer@8.2.12': + resolution: {integrity: sha512-YxURZF2ZsSjU5TAe06tW0M3sL4UI9AMPA6dd8I72uOtppzNafcY38xkYgCZ/vsVOAyNdzHmvtTpLWilOrbP0dQ==} + '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -1887,6 +2137,9 @@ packages: resolution: {integrity: sha512-zmPitbQ8+6zNutpwgcQuLcsEpn/Cj54Kbn7L5pX0Os5kdWplB7xPgEh/g+SWOB/qmows2gpuCaPyduq8ZZRnxA==} deprecated: This is a stub types definition. minimatch provides its own type definitions, so you do not need this installed. + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + '@types/node@22.15.3': resolution: {integrity: sha512-lX7HFZeHf4QG/J7tBZqrCAXwz9J5RD56Y6MpP0eJkka8p+K0RY/yBTW7CYFJ4VGCclxqOLKmiGP5juQc6MKgcw==} @@ -1921,12 +2174,21 @@ packages: '@types/resolve@1.20.6': resolution: {integrity: sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==} + '@types/semver@7.7.1': + resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} + '@types/through@0.0.33': resolution: {integrity: sha512-HsJ+z3QuETzP3cswwtzt2vEIiHBk/dCcHGhbmG5X3ecnwFD/lPrMpliGXxSCg03L9AhrdwA4Oz/qfspkDW+xGQ==} '@types/tinycolor2@1.4.6': resolution: {integrity: sha512-iEN8J0BoMnsWBqjVbWH/c0G0Hh7O21lpR2/+PrvAVgWdzL7eexIFm4JN/Wn10PTcmNdtS6U67r499mlWMXOxNw==} + '@types/tough-cookie@4.0.5': + resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} + + '@types/zen-observable@0.8.3': + resolution: {integrity: sha512-fbF6oTd4sGGy0xjHPKAt+eS2CrxJ3+6gQ3FGcBoIJR2TLAyCkCyI8JqZNy+FeON0AhVgNJoUumVoZQjBFUqHkw==} + '@typescript-eslint/eslint-plugin@8.39.0': resolution: {integrity: sha512-bhEz6OZeUR+O/6yx9Jk6ohX6H9JSFTaiY0v9/PuKT3oGK0rn0jNplLmyFUGV+a9gfYnVNwGDwS/UkLIuXNb2Rw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2226,6 +2488,9 @@ packages: '@webcomponents/custom-elements@1.6.0': resolution: {integrity: sha512-CqTpxOlUCPWRNUPZDxT5v2NnHXA4oox612iUGnmTUGQFhZ1Gkj8kirtl/2wcF6MqX7+PqqicZzOCBKKfIn0dww==} + '@xstate/fsm@1.6.5': + resolution: {integrity: sha512-b5o1I6aLNeYlU/3CPlj/Z91ybk1gUsKT+5NAJI+2W4UjvS5KLG28K9v5UvNoFVjHV8PajVZ00RH3vnjyQO7ZAw==} + acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -2243,6 +2508,10 @@ packages: resolution: {integrity: sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==} engines: {node: '>=12.0'} + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + agent-base@7.1.4: resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} engines: {node: '>= 14'} @@ -2258,6 +2527,10 @@ packages: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} + ansi-regex@4.1.1: + resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} + engines: {node: '>=6'} + ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -2282,9 +2555,18 @@ packages: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} + ansicolors@0.3.2: + resolution: {integrity: sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==} + + antlr4ts@0.5.0-alpha.4: + resolution: {integrity: sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==} + arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -2356,6 +2638,10 @@ packages: asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + at-least-node@1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + autoprefixer@10.4.21: resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==} engines: {node: ^10 || ^12 || >=14} @@ -2381,6 +2667,10 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + base64-arraybuffer@1.0.2: + resolution: {integrity: sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==} + engines: {node: '>= 0.6.0'} + base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -2416,6 +2706,13 @@ packages: buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + byline@5.0.0: + resolution: {integrity: sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q==} + engines: {node: '>=0.10.0'} + + byte-length@1.0.2: + resolution: {integrity: sha512-ovBpjmsgd/teRmgcPh23d4gJvxDoXtAzEL9xTfMU8Yc2kqCDb7L9jAG0XHl1nzuGl+h3ebCIF1i62UFyA9V/2Q==} + cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} @@ -2442,6 +2739,10 @@ packages: caniuse-lite@1.0.30001735: resolution: {integrity: sha512-EV/laoX7Wq2J9TQlyIXRxTJqIw4sxfXS4OYgudGxBYRuTv0q7AM6yMEpU/Vo1I94thg9U6EZ2NfZx9GJq83u7w==} + cardinal@2.1.1: + resolution: {integrity: sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==} + hasBin: true + chai@5.3.1: resolution: {integrity: sha512-48af6xm9gQK8rhIcOxWwdGzIervm8BVTin+yRp9HEvU20BtVZ2lBywlIJBzwaDtvo0FvjeL7QdCADoUoqIbV3A==} engines: {node: '>=18'} @@ -2482,6 +2783,9 @@ packages: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} + chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + chownr@3.0.0: resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} engines: {node: '>=18'} @@ -2517,18 +2821,35 @@ packages: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} + clean-stack@3.0.1: + resolution: {integrity: sha512-lR9wNiMRcVQjSB3a7xXGLuz4cr4wJuuXlaAEbRutGowQTmlp7R72/DOgN21e8jdwblMWl9UOJMJXarX94pzKdg==} + engines: {node: '>=10'} + cli-cursor@3.1.0: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} + cli-progress@3.12.0: + resolution: {integrity: sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==} + engines: {node: '>=4'} + cli-spinners@2.9.2: resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} + cli-ux@5.6.7: + resolution: {integrity: sha512-dsKAurMNyFDnO6X1TiiRNiVbL90XReLKcvIq4H777NMqXGBxBws23ag8ubCJE97vVZEgWG2eSUhsyLf63Jv8+g==} + engines: {node: '>=8.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + cli-width@3.0.0: resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} engines: {node: '>= 10'} + client-oauth2@4.3.3: + resolution: {integrity: sha512-k8AvUYJon0vv75ufoVo4nALYb/qwFFicO3I0+39C6xEdflqVtr+f9cy+0ZxAduoVSTfhP5DX2tY2XICAd5hy6Q==} + engines: {node: '>=4.2.0'} + cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} @@ -2569,15 +2890,27 @@ packages: concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + conf@6.2.4: + resolution: {integrity: sha512-GjgyPRLo1qK1LR9RWAdUagqo+DP18f5HWCFk4va7GS+wpxQTOzfuKTwKOvGW2c01/YXNicAyyoyuSddmdkBzZQ==} + engines: {node: '>=8'} + constant-case@2.0.0: resolution: {integrity: sha512-eS0N9WwmjTqrOmR3o83F5vW8Z+9R1HnVz3xmzT2PMFug9ly+Au/fxRWlEBSb6LcZwspSsEn9Xs1uw9YgzAg1EQ==} + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + convert-source-map@1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + cookie@0.4.2: + resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} + engines: {node: '>= 0.6'} + cookie@1.0.2: resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} engines: {node: '>=18'} @@ -2592,6 +2925,9 @@ packages: create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + cross-fetch@3.2.0: + resolution: {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==} + cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} @@ -2640,6 +2976,10 @@ packages: resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} engines: {node: '>= 0.4'} + debounce-fn@3.0.1: + resolution: {integrity: sha512-aBoJh5AhpqlRoHZjHmOzZlRx+wz2xVwGL9rjs+Kj0EWUrL4/h4K7OD176thl2Tdoqui/AaA4xhHrNArGLAaI3Q==} + engines: {node: '>=8'} + debug@4.4.1: resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} engines: {node: '>=6.0'} @@ -2733,6 +3073,10 @@ packages: dot-case@2.1.1: resolution: {integrity: sha512-HnM6ZlFqcajLsyudHq7LeeLDr2rFAVYtDv/hV5qchQEidSck8j9OPUsXY9KwJv/lHMtYlX4DjRQqwFYa+0r8Ug==} + dot-prop@5.3.0: + resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} + engines: {node: '>=8'} + dotenv@16.0.3: resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} engines: {node: '>=12'} @@ -2741,6 +3085,10 @@ packages: resolution: {integrity: sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==} engines: {node: '>=12'} + dotenv@8.6.0: + resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==} + engines: {node: '>=10'} + dunder-proto@1.0.1: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} @@ -2760,6 +3108,9 @@ packages: encoding-sniffer@0.2.1: resolution: {integrity: sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==} + end-of-stream@1.4.5: + resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} + enhanced-resolve@5.18.3: resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} engines: {node: '>=10.13.0'} @@ -2772,6 +3123,10 @@ packages: resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} engines: {node: '>=0.12'} + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} @@ -2973,6 +3328,14 @@ packages: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} + extract-files@9.0.0: + resolution: {integrity: sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ==} + engines: {node: ^10.17.0 || ^12.0.0 || >= 13.7.0} + + extract-stack@2.0.0: + resolution: {integrity: sha512-AEo4zm+TenK7zQorGK1f9mJ8L14hnTDi2ZQPR+Mub1NX8zimka1mXpV5LpH8x9HoUmFSHZCfLHqWvp0Y4FxxzQ==} + engines: {node: '>=8'} + fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -3006,6 +3369,9 @@ packages: picomatch: optional: true + fflate@0.4.8: + resolution: {integrity: sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA==} + figures@3.2.0: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} @@ -3018,10 +3384,18 @@ packages: resolution: {integrity: sha512-sJslQKU2uM33qH5nqewAwVB2QgR6w1aMNsYUp3aN5rMRyXEwJGmZvaWzeJFNTOXWlHQyBFCWrdj3fV/fsTOX8w==} engines: {node: '>= 10.4.0'} + filesize@6.4.0: + resolution: {integrity: sha512-mjFIpOHC4jbfcTfoh4rkWpI31mF7viw9ikj/JyLoKzqlwG/YsefKfvYlYhdYdg/9mtK2z1AzgN/0LvVQ3zdlSQ==} + engines: {node: '>= 0.4.0'} + fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} + find-up@3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} + find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} @@ -3057,6 +3431,10 @@ packages: resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} engines: {node: '>=14'} + form-data@3.0.4: + resolution: {integrity: sha512-f0cRzm6dkyVYV3nPoooP8XlccPQukegwhAnpoLcXy+X+A8KfpGOoXwDr9FLZd3wzgLaBGQBE3lY93Zm/i1JvIQ==} + engines: {node: '>= 6'} + form-data@4.0.5: resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} engines: {node: '>= 6'} @@ -3078,6 +3456,9 @@ packages: react-dom: optional: true + fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + fs-extra@10.1.0: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} @@ -3086,6 +3467,10 @@ packages: resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} engines: {node: '>=6 <7 || >=8'} + fs-extra@9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} + fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -3121,6 +3506,10 @@ packages: resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} + get-port@5.1.1: + resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==} + engines: {node: '>=8'} + get-proto@1.0.1: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} @@ -3172,6 +3561,10 @@ packages: resolution: {integrity: sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==} engines: {node: '>=8'} + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} @@ -3189,6 +3582,21 @@ packages: graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + graphql-request@3.7.0: + resolution: {integrity: sha512-dw5PxHCgBneN2DDNqpWu8QkbbJ07oOziy8z+bK/TAXufsOLaETuVO4GkXrbs0WjhdKhBMN3BkpN/RIvUHkmNUQ==} + peerDependencies: + graphql: 14 - 16 + + graphql-tag@2.12.6: + resolution: {integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==} + engines: {node: '>=10'} + peerDependencies: + graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + + graphql@15.10.2: + resolution: {integrity: sha512-1PRqdDPAmViWr4h1GVBT8RoPZfWSGZa7kDzleTilOfVIslsgf+cia3Nl95v1KDmR4iERPaT7WzQ+tN4MJmbg3w==} + engines: {node: '>= 10.x'} + handlebars@4.7.8: resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} engines: {node: '>=0.4.7'} @@ -3234,6 +3642,10 @@ packages: htmlparser2@10.0.0: resolution: {integrity: sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==} + http-call@5.3.0: + resolution: {integrity: sha512-ahwimsC23ICE4kPl9xTBjKB4inbRaeLyZeRunC/1Jy/Z6X8tv22MEAjK+KBOMSVLaqXPTTmd8638waVIKLGx2w==} + engines: {node: '>=8.0.0'} + http-parser-js@0.5.10: resolution: {integrity: sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==} @@ -3241,6 +3653,10 @@ packages: resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} engines: {node: '>= 14'} + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + https-proxy-agent@7.0.6: resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} @@ -3249,6 +3665,10 @@ packages: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} + hyperlinker@1.0.0: + resolution: {integrity: sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ==} + engines: {node: '>=4'} + iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -3257,12 +3677,21 @@ packages: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} + idb-keyval@6.2.2: + resolution: {integrity: sha512-yjD9nARJ/jb1g+CvD0tlhUHOrJ9Sy0P8T9MF3YaLlHnSRpwPfpTX0XIvpmw3gAJUmEu3FiICLBDPXVwyEvrleg==} + idb@7.1.1: resolution: {integrity: sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==} + idb@8.0.0: + resolution: {integrity: sha512-l//qvlAKGmQO31Qn7xdzagVPPaHTxXx199MhrAFuVBTPqydcPYBWjkrbv4Y0ktB+GmWOiwHl237UUOrLmQxLvw==} + ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + ignore-walk@3.0.4: + resolution: {integrity: sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==} + ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} @@ -3293,6 +3722,12 @@ packages: ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + inquirer-autocomplete-prompt@2.0.1: + resolution: {integrity: sha512-jUHrH0btO7j5r8DTQgANf2CBkTZChoVySD8zF/wp5fZCOLIuUbleXhf4ZY5jNBOc1owA3gdfWtfZuppfYBhcUg==} + engines: {node: '>=12'} + peerDependencies: + inquirer: ^8.0.0 + inquirer@7.3.3: resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==} engines: {node: '>=8.0.0'} @@ -3395,6 +3830,10 @@ packages: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} + is-obj@2.0.0: + resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} + engines: {node: '>=8'} + is-path-cwd@2.2.0: resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} engines: {node: '>=6'} @@ -3407,6 +3846,10 @@ packages: resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} engines: {node: '>= 0.4'} + is-retry-allowed@1.2.0: + resolution: {integrity: sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==} + engines: {node: '>=0.10.0'} + is-set@2.0.3: resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} engines: {node: '>= 0.4'} @@ -3431,6 +3874,9 @@ packages: resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} engines: {node: '>= 0.4'} + is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} @@ -3494,12 +3940,19 @@ packages: resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==} hasBin: true + js-base64@3.7.8: + resolution: {integrity: sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow==} + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} js-tokens@9.0.1: resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} + js-yaml@3.14.2: + resolution: {integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==} + hasBin: true + js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} @@ -3511,12 +3964,18 @@ packages: json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + json-schema-typed@7.0.3: + resolution: {integrity: sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A==} + json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} @@ -3624,6 +4083,10 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + locate-path@3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} + locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} @@ -3651,6 +4114,10 @@ packages: lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + log-chopper@1.0.2: + resolution: {integrity: sha512-tEWS6Fb+Xv0yLChJ6saA1DP3H1yPL0PfiIN7SDJ+U/CyP+fD4G/dhKfow+P5UuJWi6BdE4mUcPkJclGXCWxDrg==} + engines: {node: '>=6.0.0'} + log-symbols@3.0.0: resolution: {integrity: sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==} engines: {node: '>=8'} @@ -3693,6 +4160,9 @@ packages: resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} engines: {node: '>=12'} + lru_map@0.3.3: + resolution: {integrity: sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==} + lucide-react@0.540.0: resolution: {integrity: sha512-armkCAqQvO62EIX4Hq7hqX/q11WSZu0Jd23cnnqx0/49yIxGXyL/zyZfBxNN9YDx0ensPTb4L+DjTh3yQXUxtQ==} peerDependencies: @@ -3708,10 +4178,17 @@ packages: magicast@0.3.5: resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} + make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + make-dir@4.0.0: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} + make-error-cause@2.3.0: + resolution: {integrity: sha512-etgt+n4LlOkGSJbBTV9VROHA5R7ekIPS4vfh+bCAoJgRrJWdqJCBbpS3osRJ/HrT7R68MzMiY3L3sDJ/Fd8aBg==} + make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} @@ -3782,6 +4259,12 @@ packages: resolution: {integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==} engines: {node: '>= 18'} + mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + + mkdirp-classic@0.5.3: + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true @@ -3791,6 +4274,9 @@ packages: engines: {node: '>=10'} hasBin: true + moment@2.30.1: + resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==} + motion-dom@12.23.12: resolution: {integrity: sha512-RcR4fvMCTESQBD/uKQe49D5RUeDOokkGRmz4ceaJKDBgHYtZtntC/s2vLvY38gqGaytinij/yi3hMcWVcEF5Kw==} @@ -3820,6 +4306,9 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + natural-orderby@2.0.3: + resolution: {integrity: sha512-p7KTHxU0CUrcOXe62Zfrb5Z13nLvPhSWR/so3kFulUQU0sgUll2Z0LwpsLN351eOOD+hRGu/F1g+6xDfPeD++Q==} + neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} @@ -3830,6 +4319,15 @@ packages: no-case@2.3.2: resolution: {integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==} + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + node-plop@0.26.3: resolution: {integrity: sha512-Cov028YhBZ5aB7MdMWJEmwyBig43aGL5WT4vdoB28Oitau1zZAcHUn8Sgfk9HM33TqhtLJ9PlM/O0Mv+QpV/4Q==} engines: {node: '>=8.9.4'} @@ -3860,6 +4358,10 @@ packages: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} + object-treeify@1.1.33: + resolution: {integrity: sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A==} + engines: {node: '>= 10'} + object.assign@4.1.7: resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} engines: {node: '>= 0.4'} @@ -3883,6 +4385,10 @@ packages: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} + open@7.4.2: + resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} + engines: {node: '>=8'} + open@8.4.2: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} @@ -3911,6 +4417,10 @@ packages: resolution: {integrity: sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==} engines: {node: '>=4'} + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} @@ -3919,6 +4429,10 @@ packages: resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + p-locate@3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} + p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} @@ -3931,6 +4445,10 @@ packages: resolution: {integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==} engines: {node: '>=8'} + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + pac-proxy-agent@7.2.0: resolution: {integrity: sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==} engines: {node: '>= 14'} @@ -3949,6 +4467,10 @@ packages: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} + parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} + parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} @@ -3959,15 +4481,25 @@ packages: parse5-parser-stream@7.1.2: resolution: {integrity: sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==} + parse5@3.0.3: + resolution: {integrity: sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==} + parse5@7.3.0: resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} pascal-case@2.0.1: resolution: {integrity: sha512-qjS4s8rBOJa2Xm0jmxXiyh1+OFf6ekCWOvUaRgAQSktzlTbMotS0nmG9gyYAybCWBcuP4fsBeRCKNwGBnMe2OQ==} + password-prompt@1.1.3: + resolution: {integrity: sha512-HkrjG2aJlvF0t2BMH0e2LB/EHf3Lcq3fNMzy4GYHcQblAvOl+QQji1Lx7WRBMqpVK8p+KR7bCg7oqAMXtdgqyw==} + path-case@2.1.1: resolution: {integrity: sha512-Ou0N05MioItesaLr9q8TtHVWmJ6fxWdqKB2RohFmNWVyJ+2zeKIeDNWAN6B/Pe7wpzWChhZX6nONYmOnMeJQ/Q==} + path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -4002,6 +4534,9 @@ packages: resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} engines: {node: '>= 14.16'} + php-parser@3.5.0: + resolution: {integrity: sha512-EHdzSckQNP86jQRCEsMYhs+YzS4BfvfxnyhvzHVhVRoRUGEMFi8f3xKfuS9xdChBazZSyvb10SZbqhYQLGBcQg==} + picocolors@1.0.1: resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} @@ -4016,6 +4551,13 @@ packages: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} + pkce-challenge@2.2.0: + resolution: {integrity: sha512-Ly0Y0OwhtG2N1ynk5ruqoyJxkrWhAPmvdRk0teiLh9Dp2+J4URKpv1JSKWD0j1Sd+QCeiwO9lTl0EjmrB2jWeA==} + + pkg-up@3.1.0: + resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} + engines: {node: '>=8'} + playwright-core@1.55.0: resolution: {integrity: sha512-GvZs4vU3U5ro2nZpeiwyb0zuFaqb9sUiAJuyrWpcGouD8y9/HLgGbNRjIph7zU9D3hnPaisMl9zG9CgFi/biIg==} engines: {node: '>=18'} @@ -4026,6 +4568,41 @@ packages: engines: {node: '>=18'} hasBin: true + popsicle-content-encoding@1.0.0: + resolution: {integrity: sha512-4Df+vTfM8wCCJVTzPujiI6eOl3SiWQkcZg0AMrOkD1enMXsF3glIkFUZGvour1Sj7jOWCsNSEhBxpbbhclHhzw==} + peerDependencies: + servie: ^4.0.0 + + popsicle-cookie-jar@1.0.1: + resolution: {integrity: sha512-QVIZhADP8nDbXIQW6wq8GU9IOSE8INUACO/9KD9TFKQ7qq8r/y3qUDz59xIi6p6TH19lCJJyBAPSXP1liIoySw==} + engines: {node: '>=8'} + peerDependencies: + servie: ^4.0.0 + + popsicle-redirects@1.1.1: + resolution: {integrity: sha512-mC2HrKjdTAWDalOjGxlXw9j6Qxrz/Yd2ui6bPxpi2IQDYWpF4gUAMxbA8EpSWJhLi0PuWKDwTHHPrUPGutAoIA==} + peerDependencies: + servie: ^4.1.0 + + popsicle-transport-http@1.2.1: + resolution: {integrity: sha512-i5r3IGHkGiBDm1oPFvOfEeSGWR0lQJcsdTqwvvDjXqcTHYJJi4iSi3ecXIttDiTBoBtRAFAE9nF91fspQr63FQ==} + peerDependencies: + servie: ^4.2.0 + + popsicle-transport-xhr@2.0.0: + resolution: {integrity: sha512-5Sbud4Widngf1dodJE5cjEYXkzEUIl8CzyYRYR57t6vpy9a9KPGQX6KBKdPjmBZlR5A06pOBXuJnVr23l27rtA==} + peerDependencies: + servie: ^4.2.0 + + popsicle-user-agent@1.0.0: + resolution: {integrity: sha512-epKaq3TTfTzXcxBxjpoKYMcTTcAX8Rykus6QZu77XNhJuRHSRxMd+JJrbX/3PFI0opFGSN0BabbAYCbGxbu0mA==} + peerDependencies: + servie: ^4.0.0 + + popsicle@12.1.2: + resolution: {integrity: sha512-xE2vEUa15TiHvFhGmKTtdKk9aSLL5CHX8Vw5kHfVM3R0YHiaTon6Ybsamw0XYqMR+Ng2RijX88iYUKPBMpLBww==} + engines: {node: '>=8'} + possible-typed-array-names@1.1.0: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} @@ -4134,13 +4711,29 @@ packages: proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + psl@1.15.0: + resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} + + pump@3.0.4: + resolution: {integrity: sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==} + punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} + querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + randomstring@1.3.1: + resolution: {integrity: sha512-lgXZa80MUkjWdE7g2+PZ1xDLzc7/RokXVEQOv5NN2UOTChW1I8A9gha5a9xYBOqgaSoI6uJikDmCU8PyRdArRQ==} + hasBin: true + rc@1.2.8: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true @@ -4224,6 +4817,9 @@ packages: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} + redeyed@2.1.1: + resolution: {integrity: sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==} + reflect.getprototypeof@1.0.10: resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} engines: {node: '>= 0.4'} @@ -4243,6 +4839,9 @@ packages: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} + requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -4315,6 +4914,9 @@ packages: safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + safe-json-stringify@1.2.0: + resolution: {integrity: sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==} + safe-push-apply@1.0.0: resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} engines: {node: '>= 0.4'} @@ -4348,6 +4950,9 @@ packages: sentence-case@2.1.1: resolution: {integrity: sha512-ENl7cYHaK/Ktwk5OTD+aDbQ3uC8IByu/6Bkg+HDv8Mm+XnBnppVNalcfJTNsp1ibstKh030/JKQQWglDvtKwEQ==} + servie@4.3.3: + resolution: {integrity: sha512-b0IrY3b1gVMsWvJppCf19g1p3JSnS0hQi6xu4Hi40CIhf0Lx8pQHcvBL+xunShpmOiQzg1NOia812NAWdSaShw==} + set-cookie-parser@2.7.1: resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==} @@ -4435,6 +5040,9 @@ packages: resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} engines: {node: '>= 12'} + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + stable-hash-x@0.2.0: resolution: {integrity: sha512-o3yWv49B/o4QZk5ZcsALc6t0+eCelPc44zZsLtCQnZPDwFpDYSWcDnrv2TtMmMbQ7uKo3J0HTURCqckw23czNQ==} engines: {node: '>=12.0.0'} @@ -4449,6 +5057,10 @@ packages: resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} engines: {node: '>= 0.4'} + stoppable@1.1.0: + resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==} + engines: {node: '>=4', npm: '>=6'} + storybook@9.1.3: resolution: {integrity: sha512-Sm+qP3iGb/QKx/jTYdfE0mIeTmA2HF+5k9fD70S9oOJq3F9UdW8MLgs+5PE+E/xAfDjZU4OWAKEOyA6EYIvQHg==} hasBin: true @@ -4492,6 +5104,10 @@ packages: string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + strip-ansi@5.2.0: + resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} + engines: {node: '>=6'} + strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -4535,7 +5151,15 @@ packages: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} - supports-preserve-symlinks-flag@1.0.0: + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-hyperlinks@2.3.0: + resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} + engines: {node: '>=8'} + + supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -4557,6 +5181,13 @@ packages: resolution: {integrity: sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==} engines: {node: '>=6'} + tar-fs@2.1.4: + resolution: {integrity: sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==} + + tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + tar@7.4.3: resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} engines: {node: '>=18'} @@ -4568,6 +5199,9 @@ packages: through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + throwback@4.1.0: + resolution: {integrity: sha512-dLFe8bU8SeH0xeqeKL7BNo8XoPC/o91nz9/ooeplZPiso+DZukhoyZcSz9TFnUNScm+cA9qjU1m1853M6sPOng==} + tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} @@ -4614,6 +5248,10 @@ packages: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} + tmp@0.2.5: + resolution: {integrity: sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==} + engines: {node: '>=14.14'} + to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -4622,6 +5260,13 @@ packages: resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} engines: {node: '>=6'} + tough-cookie@4.1.4: + resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} + engines: {node: '>=6'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + ts-api-utils@2.1.0: resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} engines: {node: '>=18.12'} @@ -4632,6 +5277,9 @@ packages: resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} engines: {node: '>=6.10'} + ts-expect@1.3.0: + resolution: {integrity: sha512-e4g0EJtAjk64xgnFPD6kTBUtpnMVzDrMb12N1YZV0VvSlhnVT3SGxiYTLdGy8Q5cYHOIC/FAHmZ10eGrAguicQ==} + ts-node@10.9.2: resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true @@ -4671,6 +5319,9 @@ packages: engines: {node: '>=18.0.0'} hasBin: true + tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + turbo-darwin-64@2.5.6: resolution: {integrity: sha512-3C1xEdo4aFwMJAPvtlPqz1Sw/+cddWIOmsalHFMrsqqydcptwBfu26WW2cDm3u93bUzMbBJ8k3zNKFqxJ9ei2A==} cpu: [x64] @@ -4732,6 +5383,9 @@ packages: resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} + typedarray-to-buffer@3.1.5: + resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + typescript-eslint@8.39.0: resolution: {integrity: sha512-lH8FvtdtzcHJCkMOKnN73LIn6SLTpoojgJqDAxPm1jCR14eWSGPX8ul/gggBdPMk/d5+u9V854vTYQ8T5jF/1Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4746,6 +5400,11 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' + typescript@3.9.10: + resolution: {integrity: sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==} + engines: {node: '>=4.2.0'} + hasBin: true + typescript@5.8.3: resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} engines: {node: '>=14.17'} @@ -4772,6 +5431,9 @@ packages: resolution: {integrity: sha512-Vqs8HTzjpQXZeXdpsfChQTlafcMQaaIwnGwLam1wudSSjlJeQ3bw1j+TLPePgrCnCpUXx7Ba5Pdpf5OBih62NQ==} engines: {node: '>=20.18.1'} + unfetch@4.1.0: + resolution: {integrity: sha512-crP/n3eAPUJxZXM9T80/yv0YhkTEx2K1D3h7D1AJM6fzsWZrxdyRuLN0JH/dkZh1LNH8LxCnBzoPFCPbb2iGpg==} + unicorn-magic@0.1.0: resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} engines: {node: '>=18'} @@ -4780,6 +5442,10 @@ packages: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} + universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} @@ -4809,9 +5475,16 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} @@ -4904,15 +5577,25 @@ packages: jsdom: optional: true + vue-parser@1.1.6: + resolution: {integrity: sha512-v3/R7PLbaFVF/c8IIzWs1HgRpT2gN0dLRkaLIT5q+zJGVgmhN4VuZJF4Y9N4hFtFjS4B1EHxAOP6/tzqM4Ug2g==} + engines: {node: '>= 4.0.0', npm: '>= 3.0.0'} + wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} web-vitals@4.2.4: resolution: {integrity: sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw==} + web-vitals@5.1.0: + resolution: {integrity: sha512-ArI3kx5jI0atlTtmV0fWU3fjpLmq/nD3Zr1iFFlJLaqa5wLBkUSzINwBPySCX/8jRyjlmy1Volw1kz1g9XE4Jg==} + webextension-polyfill@0.6.0: resolution: {integrity: sha512-PlYwiX8e4bNZrEeBFxbFFsLtm0SMPxJliLTGdNCA0Bq2XkWrAn2ejUd+89vZm+8BnfFB1BclJyCz3iKsm2atNg==} + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} @@ -4932,6 +5615,9 @@ packages: resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} engines: {node: '>=18'} + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + which-boxed-primitive@1.1.1: resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} engines: {node: '>= 0.4'} @@ -4957,6 +5643,10 @@ packages: engines: {node: '>=8'} hasBin: true + widest-line@3.1.0: + resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} + engines: {node: '>=8'} + word-wrap@1.2.5: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} @@ -4979,6 +5669,9 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + write-file-atomic@3.0.3: + resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} + ws@8.18.3: resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} engines: {node: '>=10.0.0'} @@ -5031,10 +5724,271 @@ packages: resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} engines: {node: '>=12.20'} + zen-observable@0.10.0: + resolution: {integrity: sha512-iI3lT0iojZhKwT5DaFy2Ce42n3yFcLdFyOh01G7H0flMY60P8MJuVFEoJoNwXlmAyQ45GrjL6AcZmmlv8A5rbw==} + snapshots: '@adobe/css-tools@4.4.4': {} + '@amplitude/ampli@1.36.2(@types/node@22.15.3)': + dependencies: + '@amplitude/identify': 1.10.2 + '@amplitude/node': 1.10.2 + '@amplitude/types': 1.10.2 + '@babel/parser': 7.28.3 + '@babel/traverse': 7.28.3 + '@oclif/command': 1.8.36(@oclif/config@1.18.17) + '@oclif/config': 1.18.17 + '@oclif/errors': 1.3.6 + '@oclif/parser': 3.8.17 + '@oclif/plugin-autocomplete': 0.3.0 + '@oclif/plugin-help': 3.3.1 + '@oclif/plugin-update': 1.5.0 + '@oclif/plugin-warn-if-update-available': 1.7.3 + '@phenomnomnominal/tsquery': 3.0.0(typescript@3.9.10) + '@sentry/node': 6.19.7 + '@sentry/types': 6.19.7 + '@types/debug': 4.1.13 + '@types/inquirer': 8.2.12 + ansi-regex: 5.0.1 + antlr4ts: 0.5.0-alpha.4 + chalk: 2.4.2 + client-oauth2: 4.3.3 + conf: 6.2.4 + debug: 4.4.1(supports-color@8.1.1) + dotenv: 8.6.0 + fs-extra: 8.1.0 + get-port: 5.1.1 + globby: 10.0.2 + graphql: 15.10.2 + graphql-request: 3.7.0(graphql@15.10.2) + graphql-tag: 2.12.6(graphql@15.10.2) + https-proxy-agent: 5.0.1 + ignore-walk: 3.0.4 + inquirer: 8.2.7(@types/node@22.15.3) + inquirer-autocomplete-prompt: 2.0.1(inquirer@8.2.7(@types/node@22.15.3)) + json5: 2.2.3 + lodash: 4.17.21 + minimatch: 3.1.2 + node-fetch: 2.7.0 + open: 7.4.2 + ora: 4.1.1 + php-parser: 3.5.0 + pkce-challenge: 2.2.0 + randomstring: 1.3.1 + rimraf: 3.0.2 + stoppable: 1.1.0 + tmp: 0.2.5 + tslib: 1.14.1 + typescript: 3.9.10 + uuid: 9.0.1 + vue-parser: 1.1.6 + transitivePeerDependencies: + - '@types/node' + - encoding + - supports-color + + '@amplitude/analytics-browser@2.37.0': + dependencies: + '@amplitude/analytics-core': 2.43.0 + '@amplitude/plugin-autocapture-browser': 1.24.1 + '@amplitude/plugin-custom-enrichment-browser': 0.1.0 + '@amplitude/plugin-network-capture-browser': 1.9.9 + '@amplitude/plugin-page-url-enrichment-browser': 0.7.0 + '@amplitude/plugin-page-view-tracking-browser': 2.9.1 + '@amplitude/plugin-web-vitals-browser': 1.1.24 + tslib: 2.8.1 + + '@amplitude/analytics-client-common@2.4.39': + dependencies: + '@amplitude/analytics-connector': 1.6.4 + '@amplitude/analytics-core': 2.43.0 + '@amplitude/analytics-types': 2.11.1 + tslib: 2.8.1 + + '@amplitude/analytics-connector@1.6.4': {} + + '@amplitude/analytics-core@2.43.0': + dependencies: + '@amplitude/analytics-connector': 1.6.4 + '@types/zen-observable': 0.8.3 + safe-json-stringify: 1.2.0 + tslib: 2.8.1 + zen-observable: 0.10.0 + + '@amplitude/analytics-types@1.4.0': {} + + '@amplitude/analytics-types@2.11.1': {} + + '@amplitude/engagement-browser@1.0.8': + dependencies: + '@amplitude/analytics-types': 1.4.0 + + '@amplitude/experiment-core@0.12.0': + dependencies: + js-base64: 3.7.8 + + '@amplitude/experiment-core@0.7.2': + dependencies: + js-base64: 3.7.8 + + '@amplitude/experiment-js-client@1.20.3': + dependencies: + '@amplitude/analytics-connector': 1.6.4 + '@amplitude/experiment-core': 0.12.0 + '@amplitude/ua-parser-js': 0.7.33 + base64-js: 1.5.1 + unfetch: 4.1.0 + + '@amplitude/identify@1.10.2': + dependencies: + '@amplitude/types': 1.10.2 + '@amplitude/utils': 1.10.2 + tslib: 2.8.1 + + '@amplitude/node@1.10.2': + dependencies: + '@amplitude/identify': 1.10.2 + '@amplitude/types': 1.10.2 + '@amplitude/utils': 1.10.2 + tslib: 2.8.1 + + '@amplitude/plugin-autocapture-browser@1.24.1': + dependencies: + '@amplitude/analytics-core': 2.43.0 + tslib: 2.8.1 + + '@amplitude/plugin-custom-enrichment-browser@0.1.0': + dependencies: + '@amplitude/analytics-core': 2.43.0 + tslib: 2.8.1 + + '@amplitude/plugin-experiment-browser@1.0.0-beta.19': + dependencies: + '@amplitude/analytics-core': 2.43.0 + '@amplitude/experiment-js-client': 1.20.3 + + '@amplitude/plugin-network-capture-browser@1.9.9': + dependencies: + '@amplitude/analytics-core': 2.43.0 + tslib: 2.8.1 + + '@amplitude/plugin-page-url-enrichment-browser@0.7.0': + dependencies: + '@amplitude/analytics-core': 2.43.0 + tslib: 2.8.1 + + '@amplitude/plugin-page-view-tracking-browser@2.9.1': + dependencies: + '@amplitude/analytics-core': 2.43.0 + tslib: 2.8.1 + + '@amplitude/plugin-session-replay-browser@1.27.1(@amplitude/rrweb@2.0.0-alpha.36)(rollup@4.46.2)': + dependencies: + '@amplitude/analytics-client-common': 2.4.39 + '@amplitude/analytics-core': 2.43.0 + '@amplitude/analytics-types': 2.11.1 + '@amplitude/rrweb-plugin-console-record': 2.0.0-alpha.36(@amplitude/rrweb@2.0.0-alpha.36) + '@amplitude/rrweb-record': 2.0.0-alpha.36 + '@amplitude/session-replay-browser': 1.34.1(@amplitude/rrweb@2.0.0-alpha.36)(rollup@4.46.2) + idb-keyval: 6.2.2 + tslib: 2.8.1 + transitivePeerDependencies: + - '@amplitude/rrweb' + - rollup + + '@amplitude/plugin-web-vitals-browser@1.1.24': + dependencies: + '@amplitude/analytics-core': 2.43.0 + tslib: 2.8.1 + web-vitals: 5.1.0 + + '@amplitude/rrdom@2.0.0-alpha.36': + dependencies: + '@amplitude/rrweb-snapshot': 2.0.0-alpha.36 + + '@amplitude/rrweb-packer@2.0.0-alpha.36': + dependencies: + '@amplitude/rrweb-types': 2.0.0-alpha.36 + fflate: 0.4.8 + + '@amplitude/rrweb-plugin-console-record@2.0.0-alpha.36(@amplitude/rrweb@2.0.0-alpha.36)': + dependencies: + '@amplitude/rrweb': 2.0.0-alpha.36 + + '@amplitude/rrweb-record@2.0.0-alpha.36': + dependencies: + '@amplitude/rrweb': 2.0.0-alpha.36 + '@amplitude/rrweb-types': 2.0.0-alpha.36 + + '@amplitude/rrweb-snapshot@2.0.0-alpha.36': + dependencies: + postcss: 8.5.6 + + '@amplitude/rrweb-types@2.0.0-alpha.36': {} + + '@amplitude/rrweb-utils@2.0.0-alpha.36': {} + + '@amplitude/rrweb@2.0.0-alpha.36': + dependencies: + '@amplitude/rrdom': 2.0.0-alpha.36 + '@amplitude/rrweb-snapshot': 2.0.0-alpha.36 + '@amplitude/rrweb-types': 2.0.0-alpha.36 + '@amplitude/rrweb-utils': 2.0.0-alpha.36 + '@types/css-font-loading-module': 0.0.7 + '@xstate/fsm': 1.6.5 + base64-arraybuffer: 1.0.2 + mitt: 3.0.1 + + '@amplitude/session-replay-browser@1.34.1(@amplitude/rrweb@2.0.0-alpha.36)(rollup@4.46.2)': + dependencies: + '@amplitude/analytics-client-common': 2.4.39 + '@amplitude/analytics-core': 2.43.0 + '@amplitude/analytics-types': 2.11.1 + '@amplitude/experiment-core': 0.7.2 + '@amplitude/rrweb-packer': 2.0.0-alpha.36 + '@amplitude/rrweb-plugin-console-record': 2.0.0-alpha.36(@amplitude/rrweb@2.0.0-alpha.36) + '@amplitude/rrweb-record': 2.0.0-alpha.36 + '@amplitude/rrweb-types': 2.0.0-alpha.36 + '@amplitude/rrweb-utils': 2.0.0-alpha.36 + '@amplitude/targeting': 0.2.0 + '@rollup/plugin-replace': 6.0.3(rollup@4.46.2) + idb: 8.0.0 + tslib: 2.8.1 + transitivePeerDependencies: + - '@amplitude/rrweb' + - rollup + + '@amplitude/targeting@0.2.0': + dependencies: + '@amplitude/analytics-client-common': 2.4.39 + '@amplitude/analytics-core': 2.43.0 + '@amplitude/analytics-types': 2.11.1 + '@amplitude/experiment-core': 0.7.2 + idb: 8.0.0 + tslib: 2.8.1 + + '@amplitude/types@1.10.2': {} + + '@amplitude/ua-parser-js@0.7.33': {} + + '@amplitude/unified@1.0.10(@amplitude/rrweb@2.0.0-alpha.36)(rollup@4.46.2)': + dependencies: + '@amplitude/analytics-browser': 2.37.0 + '@amplitude/analytics-core': 2.43.0 + '@amplitude/engagement-browser': 1.0.8 + '@amplitude/plugin-experiment-browser': 1.0.0-beta.19 + '@amplitude/plugin-session-replay-browser': 1.27.1(@amplitude/rrweb@2.0.0-alpha.36)(rollup@4.46.2) + transitivePeerDependencies: + - '@amplitude/rrweb' + - rollup + + '@amplitude/utils@1.10.2': + dependencies: + '@amplitude/types': 1.10.2 + tslib: 2.8.1 + '@ampproject/remapping@2.3.0': dependencies: '@jridgewell/gen-mapping': 0.3.13 @@ -5061,7 +6015,7 @@ snapshots: '@babel/traverse': 7.28.3 '@babel/types': 7.28.2 convert-source-map: 2.0.0 - debug: 4.4.1 + debug: 4.4.1(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -5149,7 +6103,7 @@ snapshots: '@babel/parser': 7.28.3 '@babel/template': 7.27.2 '@babel/types': 7.28.2 - debug: 4.4.1 + debug: 4.4.1(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -5179,7 +6133,7 @@ snapshots: acorn-walk: 8.3.4 cheerio: 1.1.2 convert-source-map: 1.9.0 - debug: 4.4.1 + debug: 4.4.1(supports-color@8.1.1) es-module-lexer: 0.10.5 fast-glob: 3.3.3 fs-extra: 10.1.0 @@ -5301,7 +6255,7 @@ snapshots: '@eslint/config-array@0.21.0': dependencies: '@eslint/object-schema': 2.1.6 - debug: 4.4.1 + debug: 4.4.1(supports-color@8.1.1) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -5315,7 +6269,7 @@ snapshots: '@eslint/eslintrc@3.3.1': dependencies: ajv: 6.12.6 - debug: 4.4.1 + debug: 4.4.1(supports-color@8.1.1) espree: 10.4.0 globals: 14.0.0 ignore: 5.3.2 @@ -5768,6 +6722,188 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.19.1 + '@oclif/color@0.1.2': + dependencies: + ansi-styles: 3.2.1 + chalk: 3.0.0 + strip-ansi: 5.2.0 + supports-color: 5.5.0 + tslib: 1.14.1 + + '@oclif/command@1.8.36(@oclif/config@1.18.17)': + dependencies: + '@oclif/config': 1.18.17 + '@oclif/errors': 1.3.6 + '@oclif/help': 1.0.15(supports-color@8.1.1) + '@oclif/parser': 3.8.17 + debug: 4.4.1(supports-color@8.1.1) + semver: 7.7.2 + transitivePeerDependencies: + - supports-color + + '@oclif/command@1.8.36(@oclif/config@1.18.17)(supports-color@8.1.1)': + dependencies: + '@oclif/config': 1.18.17 + '@oclif/errors': 1.3.6 + '@oclif/help': 1.0.15(supports-color@8.1.1) + '@oclif/parser': 3.8.17 + debug: 4.4.1(supports-color@8.1.1) + semver: 7.7.2 + transitivePeerDependencies: + - supports-color + + '@oclif/command@1.8.36(@oclif/config@1.18.2)': + dependencies: + '@oclif/config': 1.18.2 + '@oclif/errors': 1.3.6 + '@oclif/help': 1.0.15(supports-color@8.1.1) + '@oclif/parser': 3.8.17 + debug: 4.4.1(supports-color@8.1.1) + semver: 7.7.2 + transitivePeerDependencies: + - supports-color + + '@oclif/config@1.18.16(supports-color@8.1.1)': + dependencies: + '@oclif/errors': 1.3.6 + '@oclif/parser': 3.8.17 + debug: 4.4.1(supports-color@8.1.1) + globby: 11.1.0 + is-wsl: 2.2.0 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + '@oclif/config@1.18.17': + dependencies: + '@oclif/errors': 1.3.6 + '@oclif/parser': 3.8.17 + debug: 4.4.1(supports-color@8.1.1) + globby: 11.1.0 + is-wsl: 2.2.0 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + '@oclif/config@1.18.2': + dependencies: + '@oclif/errors': 1.3.6 + '@oclif/parser': 3.8.17 + debug: 4.4.1(supports-color@8.1.1) + globby: 11.1.0 + is-wsl: 2.2.0 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + '@oclif/errors@1.3.5': + dependencies: + clean-stack: 3.0.1 + fs-extra: 8.1.0 + indent-string: 4.0.0 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + '@oclif/errors@1.3.6': + dependencies: + clean-stack: 3.0.1 + fs-extra: 8.1.0 + indent-string: 4.0.0 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + '@oclif/help@1.0.15(supports-color@8.1.1)': + dependencies: + '@oclif/config': 1.18.16(supports-color@8.1.1) + '@oclif/errors': 1.3.6 + chalk: 4.1.2 + indent-string: 4.0.0 + lodash: 4.17.21 + string-width: 4.2.3 + strip-ansi: 6.0.1 + widest-line: 3.1.0 + wrap-ansi: 6.2.0 + transitivePeerDependencies: + - supports-color + + '@oclif/linewrap@1.0.0': {} + + '@oclif/parser@3.8.17': + dependencies: + '@oclif/errors': 1.3.6 + '@oclif/linewrap': 1.0.0 + chalk: 4.1.2 + tslib: 2.8.1 + + '@oclif/plugin-autocomplete@0.3.0': + dependencies: + '@oclif/command': 1.8.36(@oclif/config@1.18.17) + '@oclif/config': 1.18.17 + chalk: 4.1.2 + cli-ux: 5.6.7(@oclif/config@1.18.17) + debug: 4.4.1(supports-color@8.1.1) + fs-extra: 9.1.0 + moment: 2.30.1 + transitivePeerDependencies: + - supports-color + + '@oclif/plugin-help@3.3.1': + dependencies: + '@oclif/command': 1.8.36(@oclif/config@1.18.2) + '@oclif/config': 1.18.2 + '@oclif/errors': 1.3.5 + '@oclif/help': 1.0.15(supports-color@8.1.1) + chalk: 4.1.2 + indent-string: 4.0.0 + lodash: 4.17.21 + string-width: 4.2.3 + strip-ansi: 6.0.1 + widest-line: 3.1.0 + wrap-ansi: 6.2.0 + transitivePeerDependencies: + - supports-color + + '@oclif/plugin-update@1.5.0': + dependencies: + '@oclif/color': 0.1.2 + '@oclif/command': 1.8.36(@oclif/config@1.18.17) + '@oclif/config': 1.18.17 + '@oclif/errors': 1.3.6 + '@types/semver': 7.7.1 + cli-ux: 5.6.7(@oclif/config@1.18.17) + cross-spawn: 7.0.6 + debug: 4.4.1(supports-color@8.1.1) + filesize: 6.4.0 + fs-extra: 9.1.0 + http-call: 5.3.0 + lodash: 4.17.21 + log-chopper: 1.0.2 + semver: 7.7.2 + tar-fs: 2.1.4 + transitivePeerDependencies: + - supports-color + + '@oclif/plugin-warn-if-update-available@1.7.3': + dependencies: + '@oclif/command': 1.8.36(@oclif/config@1.18.17) + '@oclif/config': 1.18.17 + '@oclif/errors': 1.3.6 + chalk: 4.1.2 + debug: 4.4.1(supports-color@8.1.1) + fs-extra: 9.1.0 + http-call: 5.3.0 + lodash: 4.17.21 + semver: 7.7.2 + transitivePeerDependencies: + - supports-color + + '@oclif/screen@1.0.4': {} + + '@phenomnomnominal/tsquery@3.0.0(typescript@3.9.10)': + dependencies: + esquery: 1.6.0 + typescript: 3.9.10 + '@pivanov/vite-plugin-svg-sprite@3.1.3(vite@7.1.2(@types/node@22.15.3)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1))': dependencies: cheerio: 1.1.2 @@ -5896,6 +7032,13 @@ snapshots: '@rolldown/pluginutils@1.0.0-beta.30': {} + '@rollup/plugin-replace@6.0.3(rollup@4.46.2)': + dependencies: + '@rollup/pluginutils': 5.2.0(rollup@4.46.2) + magic-string: 0.30.17 + optionalDependencies: + rollup: 4.46.2 + '@rollup/pluginutils@4.2.1': dependencies: estree-walker: 2.0.2 @@ -5969,6 +7112,48 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.46.2': optional: true + '@sentry/core@6.19.7': + dependencies: + '@sentry/hub': 6.19.7 + '@sentry/minimal': 6.19.7 + '@sentry/types': 6.19.7 + '@sentry/utils': 6.19.7 + tslib: 1.14.1 + + '@sentry/hub@6.19.7': + dependencies: + '@sentry/types': 6.19.7 + '@sentry/utils': 6.19.7 + tslib: 1.14.1 + + '@sentry/minimal@6.19.7': + dependencies: + '@sentry/hub': 6.19.7 + '@sentry/types': 6.19.7 + tslib: 1.14.1 + + '@sentry/node@6.19.7': + dependencies: + '@sentry/core': 6.19.7 + '@sentry/hub': 6.19.7 + '@sentry/types': 6.19.7 + '@sentry/utils': 6.19.7 + cookie: 0.4.2 + https-proxy-agent: 5.0.1 + lru_map: 0.3.3 + tslib: 1.14.1 + transitivePeerDependencies: + - supports-color + + '@sentry/types@6.19.7': {} + + '@sentry/utils@6.19.7': + dependencies: + '@sentry/types': 6.19.7 + tslib: 1.14.1 + + '@servie/events@1.0.0': {} + '@storybook/addon-a11y@9.1.3(storybook@9.1.3(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.2(@types/node@22.15.3)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1)))': dependencies: '@storybook/global': 5.0.0 @@ -5992,7 +7177,7 @@ snapshots: dependencies: storybook: 9.1.3(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.2(@types/node@22.15.3)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1)) - '@storybook/addon-vitest@9.1.3(@vitest/browser@3.2.4(playwright@1.55.0)(vite@7.1.2(@types/node@22.15.3)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1))(vitest@3.2.4))(@vitest/runner@3.2.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.3(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.2(@types/node@22.15.3)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1)))(vitest@3.2.4(@types/node@22.15.3)(@vitest/browser@3.2.4)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1))': + '@storybook/addon-vitest@9.1.3(@vitest/browser@3.2.4(playwright@1.55.0)(vite@7.1.2(@types/node@22.15.3)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1))(vitest@3.2.4))(@vitest/runner@3.2.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.3(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.2(@types/node@22.15.3)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1)))(vitest@3.2.4(@types/debug@4.1.13)(@types/node@22.15.3)(@vitest/browser@3.2.4)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1))': dependencies: '@storybook/global': 5.0.0 '@storybook/icons': 1.4.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1) @@ -6002,7 +7187,7 @@ snapshots: optionalDependencies: '@vitest/browser': 3.2.4(playwright@1.55.0)(vite@7.1.2(@types/node@22.15.3)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1))(vitest@3.2.4) '@vitest/runner': 3.2.4 - vitest: 3.2.4(@types/node@22.15.3)(@vitest/browser@3.2.4)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1) + vitest: 3.2.4(@types/debug@4.1.13)(@types/node@22.15.3)(@vitest/browser@3.2.4)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1) transitivePeerDependencies: - react - react-dom @@ -6382,6 +7567,12 @@ snapshots: '@types/filesystem': 0.0.36 '@types/har-format': 1.2.16 + '@types/css-font-loading-module@0.0.7': {} + + '@types/debug@4.1.13': + dependencies: + '@types/ms': 2.1.0 + '@types/deep-eql@4.0.2': {} '@types/doctrine@0.0.9': {} @@ -6408,6 +7599,11 @@ snapshots: '@types/through': 0.0.33 rxjs: 6.6.7 + '@types/inquirer@8.2.12': + dependencies: + '@types/through': 0.0.33 + rxjs: 7.5.7 + '@types/json-schema@7.0.15': {} '@types/mdx@2.0.13': {} @@ -6416,6 +7612,8 @@ snapshots: dependencies: minimatch: 9.0.5 + '@types/ms@2.1.0': {} + '@types/node@22.15.3': dependencies: undici-types: 6.21.0 @@ -6454,12 +7652,18 @@ snapshots: '@types/resolve@1.20.6': {} + '@types/semver@7.7.1': {} + '@types/through@0.0.33': dependencies: '@types/node': 22.15.3 '@types/tinycolor2@1.4.6': {} + '@types/tough-cookie@4.0.5': {} + + '@types/zen-observable@0.8.3': {} + '@typescript-eslint/eslint-plugin@8.39.0(@typescript-eslint/parser@8.39.0(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: '@eslint-community/regexpp': 4.12.1 @@ -6517,7 +7721,7 @@ snapshots: '@typescript-eslint/types': 8.39.0 '@typescript-eslint/typescript-estree': 8.39.0(typescript@5.9.2) '@typescript-eslint/visitor-keys': 8.39.0 - debug: 4.4.1 + debug: 4.4.1(supports-color@8.1.1) eslint: 9.33.0(jiti@2.5.1) typescript: 5.9.2 transitivePeerDependencies: @@ -6529,7 +7733,7 @@ snapshots: '@typescript-eslint/types': 8.39.1 '@typescript-eslint/typescript-estree': 8.39.1(typescript@5.8.3) '@typescript-eslint/visitor-keys': 8.39.1 - debug: 4.4.1 + debug: 4.4.1(supports-color@8.1.1) eslint: 9.33.0(jiti@2.5.1) typescript: 5.8.3 transitivePeerDependencies: @@ -6541,7 +7745,7 @@ snapshots: '@typescript-eslint/types': 8.39.1 '@typescript-eslint/typescript-estree': 8.39.1(typescript@5.9.2) '@typescript-eslint/visitor-keys': 8.39.1 - debug: 4.4.1 + debug: 4.4.1(supports-color@8.1.1) eslint: 9.33.0(jiti@2.5.1) typescript: 5.9.2 transitivePeerDependencies: @@ -6551,7 +7755,7 @@ snapshots: dependencies: '@typescript-eslint/tsconfig-utils': 8.39.0(typescript@5.9.2) '@typescript-eslint/types': 8.39.0 - debug: 4.4.1 + debug: 4.4.1(supports-color@8.1.1) typescript: 5.9.2 transitivePeerDependencies: - supports-color @@ -6560,7 +7764,7 @@ snapshots: dependencies: '@typescript-eslint/tsconfig-utils': 8.39.1(typescript@5.8.3) '@typescript-eslint/types': 8.39.1 - debug: 4.4.1 + debug: 4.4.1(supports-color@8.1.1) typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -6569,7 +7773,7 @@ snapshots: dependencies: '@typescript-eslint/tsconfig-utils': 8.39.1(typescript@5.9.2) '@typescript-eslint/types': 8.39.1 - debug: 4.4.1 + debug: 4.4.1(supports-color@8.1.1) typescript: 5.9.2 transitivePeerDependencies: - supports-color @@ -6601,7 +7805,7 @@ snapshots: '@typescript-eslint/types': 8.39.0 '@typescript-eslint/typescript-estree': 8.39.0(typescript@5.9.2) '@typescript-eslint/utils': 8.39.0(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2) - debug: 4.4.1 + debug: 4.4.1(supports-color@8.1.1) eslint: 9.33.0(jiti@2.5.1) ts-api-utils: 2.1.0(typescript@5.9.2) typescript: 5.9.2 @@ -6613,7 +7817,7 @@ snapshots: '@typescript-eslint/types': 8.39.1 '@typescript-eslint/typescript-estree': 8.39.1(typescript@5.8.3) '@typescript-eslint/utils': 8.39.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.8.3) - debug: 4.4.1 + debug: 4.4.1(supports-color@8.1.1) eslint: 9.33.0(jiti@2.5.1) ts-api-utils: 2.1.0(typescript@5.8.3) typescript: 5.8.3 @@ -6625,7 +7829,7 @@ snapshots: '@typescript-eslint/types': 8.39.1 '@typescript-eslint/typescript-estree': 8.39.1(typescript@5.9.2) '@typescript-eslint/utils': 8.39.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2) - debug: 4.4.1 + debug: 4.4.1(supports-color@8.1.1) eslint: 9.33.0(jiti@2.5.1) ts-api-utils: 2.1.0(typescript@5.9.2) typescript: 5.9.2 @@ -6642,7 +7846,7 @@ snapshots: '@typescript-eslint/tsconfig-utils': 8.39.0(typescript@5.9.2) '@typescript-eslint/types': 8.39.0 '@typescript-eslint/visitor-keys': 8.39.0 - debug: 4.4.1 + debug: 4.4.1(supports-color@8.1.1) fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 @@ -6658,7 +7862,7 @@ snapshots: '@typescript-eslint/tsconfig-utils': 8.39.1(typescript@5.8.3) '@typescript-eslint/types': 8.39.1 '@typescript-eslint/visitor-keys': 8.39.1 - debug: 4.4.1 + debug: 4.4.1(supports-color@8.1.1) fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 @@ -6674,7 +7878,7 @@ snapshots: '@typescript-eslint/tsconfig-utils': 8.39.1(typescript@5.9.2) '@typescript-eslint/types': 8.39.1 '@typescript-eslint/visitor-keys': 8.39.1 - debug: 4.4.1 + debug: 4.4.1(supports-color@8.1.1) fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 @@ -6815,7 +8019,7 @@ snapshots: magic-string: 0.30.17 sirv: 3.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/node@22.15.3)(@vitest/browser@3.2.4)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1) + vitest: 3.2.4(@types/debug@4.1.13)(@types/node@22.15.3)(@vitest/browser@3.2.4)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1) ws: 8.18.3 optionalDependencies: playwright: 1.55.0 @@ -6825,12 +8029,12 @@ snapshots: - utf-8-validate - vite - '@vitest/coverage-v8@3.2.4(@vitest/browser@3.2.4(playwright@1.55.0)(vite@7.1.2(@types/node@22.15.3)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1))(vitest@3.2.4))(vitest@3.2.4(@types/node@22.15.3)(@vitest/browser@3.2.4)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1))': + '@vitest/coverage-v8@3.2.4(@vitest/browser@3.2.4(playwright@1.55.0)(vite@7.1.2(@types/node@22.15.3)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1))(vitest@3.2.4))(vitest@3.2.4(@types/debug@4.1.13)(@types/node@22.15.3)(@vitest/browser@3.2.4)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 ast-v8-to-istanbul: 0.3.4 - debug: 4.4.1 + debug: 4.4.1(supports-color@8.1.1) istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 5.0.6 @@ -6840,7 +8044,7 @@ snapshots: std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/node@22.15.3)(@vitest/browser@3.2.4)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1) + vitest: 3.2.4(@types/debug@4.1.13)(@types/node@22.15.3)(@vitest/browser@3.2.4)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1) optionalDependencies: '@vitest/browser': 3.2.4(playwright@1.55.0)(vite@7.1.2(@types/node@22.15.3)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1))(vitest@3.2.4) transitivePeerDependencies: @@ -6922,6 +8126,8 @@ snapshots: '@webcomponents/custom-elements@1.6.0': {} + '@xstate/fsm@1.6.5': {} + acorn-jsx@5.3.2(acorn@8.15.0): dependencies: acorn: 8.15.0 @@ -6934,6 +8140,12 @@ snapshots: adm-zip@0.5.16: {} + agent-base@6.0.2: + dependencies: + debug: 4.4.1(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + agent-base@7.1.4: {} aggregate-error@3.1.0: @@ -6952,6 +8164,8 @@ snapshots: dependencies: type-fest: 0.21.3 + ansi-regex@4.1.1: {} + ansi-regex@5.0.1: {} ansi-regex@6.2.0: {} @@ -6968,8 +8182,16 @@ snapshots: ansi-styles@6.2.1: {} + ansicolors@0.3.2: {} + + antlr4ts@0.5.0-alpha.4: {} + arg@4.1.3: {} + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + argparse@2.0.1: {} aria-query@5.3.0: @@ -7061,6 +8283,8 @@ snapshots: asynckit@0.4.0: {} + at-least-node@1.0.0: {} + autoprefixer@10.4.21(postcss@8.5.6): dependencies: browserslist: 4.25.3 @@ -7089,6 +8313,8 @@ snapshots: balanced-match@1.0.2: {} + base64-arraybuffer@1.0.2: {} + base64-js@1.5.1: {} basic-ftp@5.0.5: {} @@ -7130,6 +8356,10 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 + byline@5.0.0: {} + + byte-length@1.0.2: {} + cac@6.7.14: {} call-bind-apply-helpers@1.0.2: @@ -7158,6 +8388,11 @@ snapshots: caniuse-lite@1.0.30001735: {} + cardinal@2.1.1: + dependencies: + ansicolors: 0.3.2 + redeyed: 2.1.1 + chai@5.3.1: dependencies: assertion-error: 2.0.1 @@ -7236,6 +8471,8 @@ snapshots: dependencies: readdirp: 4.1.2 + chownr@1.1.4: {} + chownr@3.0.0: {} chromatic@12.2.0: {} @@ -7248,14 +8485,58 @@ snapshots: clean-stack@2.2.0: {} + clean-stack@3.0.1: + dependencies: + escape-string-regexp: 4.0.0 + cli-cursor@3.1.0: dependencies: restore-cursor: 3.1.0 + cli-progress@3.12.0: + dependencies: + string-width: 4.2.3 + cli-spinners@2.9.2: {} + cli-ux@5.6.7(@oclif/config@1.18.17): + dependencies: + '@oclif/command': 1.8.36(@oclif/config@1.18.17)(supports-color@8.1.1) + '@oclif/errors': 1.3.6 + '@oclif/linewrap': 1.0.0 + '@oclif/screen': 1.0.4 + ansi-escapes: 4.3.2 + ansi-styles: 4.3.0 + cardinal: 2.1.1 + chalk: 4.1.2 + clean-stack: 3.0.1 + cli-progress: 3.12.0 + extract-stack: 2.0.0 + fs-extra: 8.1.0 + hyperlinker: 1.0.0 + indent-string: 4.0.0 + is-wsl: 2.2.0 + js-yaml: 3.14.2 + lodash: 4.17.21 + natural-orderby: 2.0.3 + object-treeify: 1.1.33 + password-prompt: 1.1.3 + semver: 7.7.2 + string-width: 4.2.3 + strip-ansi: 6.0.1 + supports-color: 8.1.1 + supports-hyperlinks: 2.3.0 + tslib: 2.8.1 + transitivePeerDependencies: + - '@oclif/config' + cli-width@3.0.0: {} + client-oauth2@4.3.3: + dependencies: + popsicle: 12.1.2 + safe-buffer: 5.2.1 + cliui@8.0.1: dependencies: string-width: 4.2.3 @@ -7288,15 +8569,32 @@ snapshots: concat-map@0.0.1: {} + conf@6.2.4: + dependencies: + ajv: 6.12.6 + debounce-fn: 3.0.1 + dot-prop: 5.3.0 + env-paths: 2.2.1 + json-schema-typed: 7.0.3 + make-dir: 3.1.0 + onetime: 5.1.2 + pkg-up: 3.1.0 + semver: 6.3.1 + write-file-atomic: 3.0.3 + constant-case@2.0.0: dependencies: snake-case: 2.1.0 upper-case: 1.1.3 + content-type@1.0.5: {} + convert-source-map@1.9.0: {} convert-source-map@2.0.0: {} + cookie@0.4.2: {} + cookie@1.0.2: {} core-js-pure@3.45.0: {} @@ -7311,6 +8609,12 @@ snapshots: create-require@1.1.1: {} + cross-fetch@3.2.0: + dependencies: + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + cross-spawn@7.0.6: dependencies: path-key: 3.1.1 @@ -7367,9 +8671,15 @@ snapshots: es-errors: 1.3.0 is-data-view: 1.0.2 - debug@4.4.1: + debounce-fn@3.0.1: + dependencies: + mimic-fn: 2.1.0 + + debug@4.4.1(supports-color@8.1.1): dependencies: ms: 2.1.3 + optionalDependencies: + supports-color: 8.1.1 deep-eql@5.0.2: {} @@ -7458,10 +8768,16 @@ snapshots: dependencies: no-case: 2.3.2 + dot-prop@5.3.0: + dependencies: + is-obj: 2.0.0 + dotenv@16.0.3: {} dotenv@17.3.1: {} + dotenv@8.6.0: {} + dunder-proto@1.0.1: dependencies: call-bind-apply-helpers: 1.0.2 @@ -7481,6 +8797,10 @@ snapshots: iconv-lite: 0.6.3 whatwg-encoding: 3.1.1 + end-of-stream@1.4.5: + dependencies: + once: 1.4.0 + enhanced-resolve@5.18.3: dependencies: graceful-fs: 4.2.11 @@ -7490,6 +8810,8 @@ snapshots: entities@6.0.1: {} + env-paths@2.2.1: {} + error-ex@1.3.2: dependencies: is-arrayish: 0.2.1 @@ -7601,7 +8923,7 @@ snapshots: esbuild-register@3.6.0(esbuild@0.25.9): dependencies: - debug: 4.4.1 + debug: 4.4.1(supports-color@8.1.1) esbuild: 0.25.9 transitivePeerDependencies: - supports-color @@ -7662,7 +8984,7 @@ snapshots: eslint-import-resolver-typescript@4.4.4(eslint@9.33.0(jiti@2.5.1)): dependencies: - debug: 4.4.1 + debug: 4.4.1(supports-color@8.1.1) eslint: 9.33.0(jiti@2.5.1) eslint-import-context: 0.1.9(unrs-resolver@1.11.1) get-tsconfig: 4.10.1 @@ -7766,7 +9088,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.4.1 + debug: 4.4.1(supports-color@8.1.1) escape-string-regexp: 4.0.0 eslint-scope: 8.4.0 eslint-visitor-keys: 4.2.1 @@ -7836,6 +9158,10 @@ snapshots: iconv-lite: 0.4.24 tmp: 0.0.33 + extract-files@9.0.0: {} + + extract-stack@2.0.0: {} + fast-deep-equal@3.1.3: {} fast-glob@3.3.1: @@ -7870,6 +9196,8 @@ snapshots: optionalDependencies: picomatch: 4.0.3 + fflate@0.4.8: {} + figures@3.2.0: dependencies: escape-string-regexp: 1.0.5 @@ -7880,10 +9208,16 @@ snapshots: filesize@10.1.6: {} + filesize@6.4.0: {} + fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 + find-up@3.0.0: + dependencies: + locate-path: 3.0.0 + find-up@5.0.0: dependencies: locate-path: 6.0.0 @@ -7946,6 +9280,14 @@ snapshots: cross-spawn: 7.0.6 signal-exit: 4.1.0 + form-data@3.0.4: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.2 + mime-types: 2.1.35 + form-data@4.0.5: dependencies: asynckit: 0.4.0 @@ -7965,6 +9307,8 @@ snapshots: react: 19.1.1 react-dom: 19.1.1(react@19.1.1) + fs-constants@1.0.0: {} + fs-extra@10.1.0: dependencies: graceful-fs: 4.2.11 @@ -7977,6 +9321,13 @@ snapshots: jsonfile: 4.0.0 universalify: 0.1.2 + fs-extra@9.1.0: + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.11 + jsonfile: 6.2.0 + universalify: 2.0.1 + fs.realpath@1.0.0: {} fsevents@2.3.2: @@ -8015,6 +9366,8 @@ snapshots: hasown: 2.0.2 math-intrinsics: 1.1.0 + get-port@5.1.1: {} + get-proto@1.0.1: dependencies: dunder-proto: 1.0.1 @@ -8036,7 +9389,7 @@ snapshots: dependencies: basic-ftp: 5.0.5 data-uri-to-buffer: 6.0.2 - debug: 4.4.1 + debug: 4.4.1(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -8086,6 +9439,15 @@ snapshots: merge2: 1.4.1 slash: 3.0.0 + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.3 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + globrex@0.1.2: {} gopd@1.2.0: {} @@ -8099,6 +9461,22 @@ snapshots: graphemer@1.4.0: {} + graphql-request@3.7.0(graphql@15.10.2): + dependencies: + cross-fetch: 3.2.0 + extract-files: 9.0.0 + form-data: 3.0.4 + graphql: 15.10.2 + transitivePeerDependencies: + - encoding + + graphql-tag@2.12.6(graphql@15.10.2): + dependencies: + graphql: 15.10.2 + tslib: 2.8.1 + + graphql@15.10.2: {} + handlebars@4.7.8: dependencies: minimist: 1.2.8 @@ -8146,24 +9524,44 @@ snapshots: domutils: 3.2.2 entities: 6.0.1 + http-call@5.3.0: + dependencies: + content-type: 1.0.5 + debug: 4.4.1(supports-color@8.1.1) + is-retry-allowed: 1.2.0 + is-stream: 2.0.1 + parse-json: 4.0.0 + tunnel-agent: 0.6.0 + transitivePeerDependencies: + - supports-color + http-parser-js@0.5.10: {} http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.4 - debug: 4.4.1 + debug: 4.4.1(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.4.1(supports-color@8.1.1) transitivePeerDependencies: - supports-color https-proxy-agent@7.0.6: dependencies: agent-base: 7.1.4 - debug: 4.4.1 + debug: 4.4.1(supports-color@8.1.1) transitivePeerDependencies: - supports-color human-signals@2.1.0: {} + hyperlinker@1.0.0: {} + iconv-lite@0.4.24: dependencies: safer-buffer: 2.1.2 @@ -8172,10 +9570,18 @@ snapshots: dependencies: safer-buffer: 2.1.2 + idb-keyval@6.2.2: {} + idb@7.1.1: {} + idb@8.0.0: {} + ieee754@1.2.1: {} + ignore-walk@3.0.4: + dependencies: + minimatch: 3.1.2 + ignore@5.3.2: {} ignore@7.0.5: {} @@ -8198,6 +9604,15 @@ snapshots: ini@1.3.8: {} + inquirer-autocomplete-prompt@2.0.1(inquirer@8.2.7(@types/node@22.15.3)): + dependencies: + ansi-escapes: 4.3.2 + figures: 3.2.0 + inquirer: 8.2.7(@types/node@22.15.3) + picocolors: 1.1.1 + run-async: 2.4.1 + rxjs: 7.5.7 + inquirer@7.3.3: dependencies: ansi-escapes: 4.3.2 @@ -8326,6 +9741,8 @@ snapshots: is-number@7.0.0: {} + is-obj@2.0.0: {} + is-path-cwd@2.2.0: {} is-path-inside@3.0.3: {} @@ -8337,6 +9754,8 @@ snapshots: has-tostringtag: 1.0.2 hasown: 2.0.2 + is-retry-allowed@1.2.0: {} + is-set@2.0.3: {} is-shared-array-buffer@1.0.4: @@ -8360,6 +9779,8 @@ snapshots: dependencies: which-typed-array: 1.1.19 + is-typedarray@1.0.0: {} + is-unicode-supported@0.1.0: {} is-upper-case@1.1.2: @@ -8398,7 +9819,7 @@ snapshots: istanbul-lib-source-maps@5.0.6: dependencies: '@jridgewell/trace-mapping': 0.3.30 - debug: 4.4.1 + debug: 4.4.1(supports-color@8.1.1) istanbul-lib-coverage: 3.2.2 transitivePeerDependencies: - supports-color @@ -8427,10 +9848,17 @@ snapshots: jiti@2.5.1: {} + js-base64@3.7.8: {} + js-tokens@4.0.0: {} js-tokens@9.0.1: {} + js-yaml@3.14.2: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + js-yaml@4.1.0: dependencies: argparse: 2.0.1 @@ -8439,10 +9867,14 @@ snapshots: json-buffer@3.0.1: {} + json-parse-better-errors@1.0.2: {} + json-parse-even-better-errors@2.3.1: {} json-schema-traverse@0.4.1: {} + json-schema-typed@7.0.3: {} + json-stable-stringify-without-jsonify@1.0.1: {} json5@2.2.3: {} @@ -8530,6 +9962,11 @@ snapshots: lines-and-columns@1.2.4: {} + locate-path@3.0.0: + dependencies: + p-locate: 3.0.0 + path-exists: 3.0.0 + locate-path@6.0.0: dependencies: p-locate: 5.0.0 @@ -8550,6 +9987,10 @@ snapshots: lodash@4.17.21: {} + log-chopper@1.0.2: + dependencies: + byline: 5.0.0 + log-symbols@3.0.0: dependencies: chalk: 2.4.2 @@ -8589,6 +10030,8 @@ snapshots: lru-cache@7.18.3: {} + lru_map@0.3.3: {} + lucide-react@0.540.0(react@19.1.1): dependencies: react: 19.1.1 @@ -8605,10 +10048,18 @@ snapshots: '@babel/types': 7.28.2 source-map-js: 1.2.1 + make-dir@3.1.0: + dependencies: + semver: 6.3.1 + make-dir@4.0.0: dependencies: semver: 7.7.2 + make-error-cause@2.3.0: + dependencies: + make-error: 1.3.6 + make-error@1.3.6: {} map-age-cleaner@0.1.3: @@ -8663,12 +10114,18 @@ snapshots: dependencies: minipass: 7.1.2 + mitt@3.0.1: {} + + mkdirp-classic@0.5.3: {} + mkdirp@0.5.6: dependencies: minimist: 1.2.8 mkdirp@3.0.1: {} + moment@2.30.1: {} + motion-dom@12.23.12: dependencies: motion-utils: 12.23.6 @@ -8687,6 +10144,8 @@ snapshots: natural-compare@1.4.0: {} + natural-orderby@2.0.3: {} + neo-async@2.6.2: {} netmask@2.0.2: {} @@ -8695,6 +10154,10 @@ snapshots: dependencies: lower-case: 1.1.4 + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + node-plop@0.26.3: dependencies: '@babel/runtime-corejs3': 7.28.3 @@ -8727,6 +10190,8 @@ snapshots: object-keys@1.1.1: {} + object-treeify@1.1.33: {} + object.assign@4.1.7: dependencies: call-bind: 1.0.8 @@ -8765,6 +10230,11 @@ snapshots: dependencies: mimic-fn: 2.1.0 + open@7.4.2: + dependencies: + is-docker: 2.2.1 + is-wsl: 2.2.0 + open@8.4.2: dependencies: define-lazy-prop: 2.0.0 @@ -8813,6 +10283,10 @@ snapshots: p-defer@1.0.0: {} + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 @@ -8821,6 +10295,10 @@ snapshots: dependencies: yocto-queue: 1.2.1 + p-locate@3.0.0: + dependencies: + p-limit: 2.3.0 + p-locate@5.0.0: dependencies: p-limit: 3.1.0 @@ -8833,11 +10311,13 @@ snapshots: dependencies: aggregate-error: 3.1.0 + p-try@2.2.0: {} + pac-proxy-agent@7.2.0: dependencies: '@tootallnate/quickjs-emscripten': 0.23.0 agent-base: 7.1.4 - debug: 4.4.1 + debug: 4.4.1(supports-color@8.1.1) get-uri: 6.0.5 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 @@ -8861,6 +10341,11 @@ snapshots: dependencies: callsites: 3.1.0 + parse-json@4.0.0: + dependencies: + error-ex: 1.3.2 + json-parse-better-errors: 1.0.2 + parse-json@5.2.0: dependencies: '@babel/code-frame': 7.27.1 @@ -8877,6 +10362,10 @@ snapshots: dependencies: parse5: 7.3.0 + parse5@3.0.3: + dependencies: + '@types/node': 22.15.3 + parse5@7.3.0: dependencies: entities: 6.0.1 @@ -8886,10 +10375,17 @@ snapshots: camel-case: 3.0.0 upper-case-first: 1.1.2 + password-prompt@1.1.3: + dependencies: + ansi-escapes: 4.3.2 + cross-spawn: 7.0.6 + path-case@2.1.1: dependencies: no-case: 2.3.2 + path-exists@3.0.0: {} + path-exists@4.0.0: {} path-exists@5.0.0: {} @@ -8911,6 +10407,8 @@ snapshots: pathval@2.0.1: {} + php-parser@3.5.0: {} + picocolors@1.0.1: {} picocolors@1.1.1: {} @@ -8919,6 +10417,12 @@ snapshots: picomatch@4.0.3: {} + pkce-challenge@2.2.0: {} + + pkg-up@3.1.0: + dependencies: + find-up: 3.0.0 + playwright-core@1.55.0: {} playwright@1.55.0: @@ -8927,6 +10431,44 @@ snapshots: optionalDependencies: fsevents: 2.3.2 + popsicle-content-encoding@1.0.0(servie@4.3.3): + dependencies: + servie: 4.3.3 + + popsicle-cookie-jar@1.0.1(servie@4.3.3): + dependencies: + '@types/tough-cookie': 4.0.5 + servie: 4.3.3 + tough-cookie: 4.1.4 + + popsicle-redirects@1.1.1(servie@4.3.3): + dependencies: + servie: 4.3.3 + + popsicle-transport-http@1.2.1(servie@4.3.3): + dependencies: + make-error-cause: 2.3.0 + servie: 4.3.3 + + popsicle-transport-xhr@2.0.0(servie@4.3.3): + dependencies: + servie: 4.3.3 + + popsicle-user-agent@1.0.0(servie@4.3.3): + dependencies: + servie: 4.3.3 + + popsicle@12.1.2: + dependencies: + popsicle-content-encoding: 1.0.0(servie@4.3.3) + popsicle-cookie-jar: 1.0.1(servie@4.3.3) + popsicle-redirects: 1.1.1(servie@4.3.3) + popsicle-transport-http: 1.2.1(servie@4.3.3) + popsicle-transport-xhr: 2.0.0(servie@4.3.3) + popsicle-user-agent: 1.0.0(servie@4.3.3) + servie: 4.3.3 + throwback: 4.1.0 + possible-typed-array-names@1.1.0: {} postcss-value-parser@4.2.0: {} @@ -8984,7 +10526,7 @@ snapshots: proxy-agent@6.5.0: dependencies: agent-base: 7.1.4 - debug: 4.4.1 + debug: 4.4.1(supports-color@8.1.1) http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 lru-cache: 7.18.3 @@ -8996,10 +10538,29 @@ snapshots: proxy-from-env@1.1.0: {} + psl@1.15.0: + dependencies: + punycode: 2.3.1 + + pump@3.0.4: + dependencies: + end-of-stream: 1.4.5 + once: 1.4.0 + punycode@2.3.1: {} + querystringify@2.2.0: {} + queue-microtask@1.2.3: {} + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + randomstring@1.3.1: + dependencies: + randombytes: 2.1.0 + rc@1.2.8: dependencies: deep-extend: 0.6.0 @@ -9087,6 +10648,10 @@ snapshots: indent-string: 4.0.0 strip-indent: 3.0.0 + redeyed@2.1.1: + dependencies: + esprima: 4.0.1 + reflect.getprototypeof@1.0.10: dependencies: call-bind: 1.0.8 @@ -9118,6 +10683,8 @@ snapshots: require-directory@2.1.1: {} + requires-port@1.0.0: {} + resolve-from@4.0.0: {} resolve-pkg-maps@1.0.0: {} @@ -9208,6 +10775,8 @@ snapshots: safe-buffer@5.2.1: {} + safe-json-stringify@1.2.0: {} + safe-push-apply@1.0.0: dependencies: es-errors: 1.3.0 @@ -9236,6 +10805,12 @@ snapshots: no-case: 2.3.2 upper-case-first: 1.1.2 + servie@4.3.3: + dependencies: + '@servie/events': 1.0.0 + byte-length: 1.0.2 + ts-expect: 1.3.0 + set-cookie-parser@2.7.1: {} set-function-length@1.2.2: @@ -9319,7 +10894,7 @@ snapshots: socks-proxy-agent@8.0.5: dependencies: agent-base: 7.1.4 - debug: 4.4.1 + debug: 4.4.1(supports-color@8.1.1) socks: 2.8.7 transitivePeerDependencies: - supports-color @@ -9335,6 +10910,8 @@ snapshots: source-map@0.7.6: {} + sprintf-js@1.0.3: {} + stable-hash-x@0.2.0: {} stackback@0.0.2: {} @@ -9346,6 +10923,8 @@ snapshots: es-errors: 1.3.0 internal-slot: 1.1.0 + stoppable@1.1.0: {} + storybook@9.1.3(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.2(@types/node@22.15.3)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1)): dependencies: '@storybook/global': 5.0.0 @@ -9436,6 +11015,10 @@ snapshots: dependencies: safe-buffer: 5.2.1 + strip-ansi@5.2.0: + dependencies: + ansi-regex: 4.1.1 + strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 @@ -9472,6 +11055,15 @@ snapshots: dependencies: has-flag: 4.0.0 + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + supports-hyperlinks@2.3.0: + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + supports-preserve-symlinks-flag@1.0.0: {} svgo@4.0.0: @@ -9495,6 +11087,21 @@ snapshots: tapable@2.2.2: {} + tar-fs@2.1.4: + dependencies: + chownr: 1.1.4 + mkdirp-classic: 0.5.3 + pump: 3.0.4 + tar-stream: 2.2.0 + + tar-stream@2.2.0: + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.5 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + tar@7.4.3: dependencies: '@isaacs/fs-minipass': 4.0.1 @@ -9512,6 +11119,8 @@ snapshots: through@2.3.8: {} + throwback@4.1.0: {} + tiny-invariant@1.3.3: {} tinybench@2.9.0: {} @@ -9549,12 +11158,23 @@ snapshots: dependencies: os-tmpdir: 1.0.2 + tmp@0.2.5: {} + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 totalist@3.0.1: {} + tough-cookie@4.1.4: + dependencies: + psl: 1.15.0 + punycode: 2.3.1 + universalify: 0.2.0 + url-parse: 1.5.10 + + tr46@0.0.3: {} + ts-api-utils@2.1.0(typescript@5.8.3): dependencies: typescript: 5.8.3 @@ -9565,6 +11185,8 @@ snapshots: ts-dedent@2.2.0: {} + ts-expect@1.3.0: {} + ts-node@10.9.2(@swc/core@1.13.3(@swc/helpers@0.5.17))(@types/node@22.15.3)(typescript@5.9.2): dependencies: '@cspotcode/source-map-support': 0.8.1 @@ -9610,6 +11232,10 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + tunnel-agent@0.6.0: + dependencies: + safe-buffer: 5.2.1 + turbo-darwin-64@2.5.6: optional: true @@ -9678,6 +11304,10 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 + typedarray-to-buffer@3.1.5: + dependencies: + is-typedarray: 1.0.0 + typescript-eslint@8.39.0(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2): dependencies: '@typescript-eslint/eslint-plugin': 8.39.0(@typescript-eslint/parser@8.39.0(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2) @@ -9711,6 +11341,8 @@ snapshots: transitivePeerDependencies: - supports-color + typescript@3.9.10: {} + typescript@5.8.3: {} typescript@5.9.2: {} @@ -9729,10 +11361,14 @@ snapshots: undici@7.14.0: {} + unfetch@4.1.0: {} + unicorn-magic@0.1.0: {} universalify@0.1.2: {} + universalify@0.2.0: {} + universalify@2.0.1: {} unplugin@1.16.1: @@ -9785,8 +11421,15 @@ snapshots: dependencies: punycode: 2.3.1 + url-parse@1.5.10: + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + util-deprecate@1.0.2: {} + uuid@9.0.1: {} + v8-compile-cache-lib@3.0.1: {} validate-npm-package-name@5.0.1: {} @@ -9794,7 +11437,7 @@ snapshots: vite-node@3.2.4(@types/node@22.15.3)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1): dependencies: cac: 6.7.14 - debug: 4.4.1 + debug: 4.4.1(supports-color@8.1.1) es-module-lexer: 1.7.0 pathe: 2.0.3 vite: 7.1.2(@types/node@22.15.3)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1) @@ -9847,7 +11490,7 @@ snapshots: vite-tsconfig-paths@5.1.4(typescript@5.8.3)(vite@7.1.2(@types/node@22.15.3)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1)): dependencies: - debug: 4.4.1 + debug: 4.4.1(supports-color@8.1.1) globrex: 0.1.2 tsconfck: 3.1.6(typescript@5.8.3) optionalDependencies: @@ -9858,7 +11501,7 @@ snapshots: vite-tsconfig-paths@5.1.4(typescript@5.9.2)(vite@7.1.2(@types/node@22.15.3)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1)): dependencies: - debug: 4.4.1 + debug: 4.4.1(supports-color@8.1.1) globrex: 0.1.2 tsconfck: 3.1.6(typescript@5.9.2) optionalDependencies: @@ -9883,7 +11526,7 @@ snapshots: tsx: 4.20.4 yaml: 2.8.1 - vitest@3.2.4(@types/node@22.15.3)(@vitest/browser@3.2.4)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1): + vitest@3.2.4(@types/debug@4.1.13)(@types/node@22.15.3)(@vitest/browser@3.2.4)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 @@ -9894,7 +11537,7 @@ snapshots: '@vitest/spy': 3.2.4 '@vitest/utils': 3.2.4 chai: 5.3.1 - debug: 4.4.1 + debug: 4.4.1(supports-color@8.1.1) expect-type: 1.2.2 magic-string: 0.30.17 pathe: 2.0.3 @@ -9909,6 +11552,7 @@ snapshots: vite-node: 3.2.4(@types/node@22.15.3)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: + '@types/debug': 4.1.13 '@types/node': 22.15.3 '@vitest/browser': 3.2.4(playwright@1.55.0)(vite@7.1.2(@types/node@22.15.3)(jiti@2.5.1)(lightningcss@1.30.1)(tsx@4.20.4)(yaml@2.8.1))(vitest@3.2.4) transitivePeerDependencies: @@ -9925,14 +11569,22 @@ snapshots: - tsx - yaml + vue-parser@1.1.6: + dependencies: + parse5: 3.0.3 + wcwidth@1.0.1: dependencies: defaults: 1.0.4 web-vitals@4.2.4: {} + web-vitals@5.1.0: {} + webextension-polyfill@0.6.0: {} + webidl-conversions@3.0.1: {} + webpack-virtual-modules@0.6.2: {} websocket-driver@0.7.4: @@ -9949,6 +11601,11 @@ snapshots: whatwg-mimetype@4.0.0: {} + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + which-boxed-primitive@1.1.1: dependencies: is-bigint: 1.1.0 @@ -9999,6 +11656,10 @@ snapshots: siginfo: 2.0.0 stackback: 0.0.2 + widest-line@3.1.0: + dependencies: + string-width: 4.2.3 + word-wrap@1.2.5: {} wordwrap@1.0.0: {} @@ -10023,6 +11684,13 @@ snapshots: wrappy@1.0.2: {} + write-file-atomic@3.0.3: + dependencies: + imurmurhash: 0.1.4 + is-typedarray: 1.0.0 + signal-exit: 3.0.7 + typedarray-to-buffer: 3.1.5 + ws@8.18.3: {} y18n@5.0.8: {} @@ -10052,3 +11720,5 @@ snapshots: yocto-queue@0.1.0: {} yocto-queue@1.2.1: {} + + zen-observable@0.10.0: {} diff --git a/turbo.json b/turbo.json index f040fdaa..9bbfe75b 100644 --- a/turbo.json +++ b/turbo.json @@ -1,6 +1,7 @@ { "$schema": "https://turborepo.com/schema.json", "ui": "tui", + "globalEnv": ["DEV"], "tasks": { "build": { "dependsOn": ["^build"],