diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index b616085e80..b908186b7a 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -22,16 +22,14 @@ jobs: uses: actions/checkout@v4.2.2 with: fetch-depth: 0 - - name: Start Nx Agents - run: npx nx-cloud start-ci-run - name: Setup Tools uses: tanstack/config/.github/setup@main - name: Get base and head commits for `nx affected` uses: nrwl/nx-set-shas@v4.1.2 + with: + main-branch-name: 'v4' - name: Run Tests - run: pnpm run test:pr --parallel=3 - - name: Stop Agents - run: npx nx-cloud stop-all-agents + run: pnpm run test:pr --base="${{env.NX_BASE}}" --head="${{github.event.pull_request.head.sha}}" - name: Upload coverage to Codecov uses: codecov/codecov-action@v3 format: diff --git a/packages/query-core/src/types.ts b/packages/query-core/src/types.ts index 019f235ed7..efb7490dd8 100644 --- a/packages/query-core/src/types.ts +++ b/packages/query-core/src/types.ts @@ -568,11 +568,17 @@ export interface InfiniteQueryObserverSuccessResult< status: 'success' } +export type DefinedInfiniteQueryObserverResult< + TData = unknown, + TError = unknown, +> = + | InfiniteQueryObserverRefetchErrorResult + | InfiniteQueryObserverSuccessResult + export type InfiniteQueryObserverResult = + | DefinedInfiniteQueryObserverResult | InfiniteQueryObserverLoadingErrorResult | InfiniteQueryObserverLoadingResult - | InfiniteQueryObserverRefetchErrorResult - | InfiniteQueryObserverSuccessResult export type MutationKey = readonly unknown[] diff --git a/packages/react-query/src/__tests__/infiniteQueryOptions.test.tsx b/packages/react-query/src/__tests__/infiniteQueryOptions.test.tsx new file mode 100644 index 0000000000..eb12e144b9 --- /dev/null +++ b/packages/react-query/src/__tests__/infiniteQueryOptions.test.tsx @@ -0,0 +1,13 @@ +import { infiniteQueryOptions } from '../infiniteQueryOptions' + +describe('infiniteQueryOptions', () => { + it('should return the object received as a parameter without any modification.', () => { + const object = { + queryKey: ['key'], + queryFn: () => Promise.resolve(5), + getNextPageParam: () => null, + } as const + + expect(infiniteQueryOptions(object)).toStrictEqual(object) + }) +}) diff --git a/packages/react-query/src/__tests__/infiniteQueryOptions.types.test.tsx b/packages/react-query/src/__tests__/infiniteQueryOptions.types.test.tsx new file mode 100644 index 0000000000..05c973bd3c --- /dev/null +++ b/packages/react-query/src/__tests__/infiniteQueryOptions.types.test.tsx @@ -0,0 +1,111 @@ +import { expectTypeOf } from 'expect-type' +import { + type InfiniteData, + type UseInfiniteQueryResult, + useInfiniteQuery, + useQueryClient, +} from '@tanstack/react-query' + +import { useSuspenseInfiniteQuery } from '../useSuspenseInfiniteQuery' +import { infiniteQueryOptions } from '../infiniteQueryOptions' +import { doNotExecute } from './utils' +import type { + DefinedUseInfiniteQueryResult, + UseSuspenseInfiniteQueryResult, +} from '../types' + +const infiniteQuery = { + options: () => + infiniteQueryOptions({ + queryKey: ['key', 1] as const, + queryFn: () => Promise.resolve({ field: 'success' }), + }), + optionsWithInitialData: () => + infiniteQueryOptions({ + queryKey: ['key', 2] as const, + queryFn: () => Promise.resolve({ field: 'success' }), + initialData: () => ({ pageParams: [], pages: [{ field: 'success' }] }), + }), +} + +describe('infiniteQueryOptions', () => { + it('should be used with useInfiniteQuery', () => { + doNotExecute(() => { + expectTypeOf(useInfiniteQuery(infiniteQuery.options())).toEqualTypeOf< + UseInfiniteQueryResult<{ field: string }> +>() + + expectTypeOf( + useInfiniteQuery({ + ...infiniteQuery.options(), + select: (data) => ({ + pages: data.pages.map(({ field }) => field), + pageParams: data.pageParams, + }), + }), + ).toEqualTypeOf>() + + expectTypeOf( + useInfiniteQuery(infiniteQuery.optionsWithInitialData()), + ).toEqualTypeOf>() + + expectTypeOf( + useInfiniteQuery({ + ...infiniteQuery.optionsWithInitialData(), + select: (data) => ({ + pages: data.pages.map(({ field }) => field), + pageParams: data.pageParams, + }), + }), + ).toEqualTypeOf>() + + expectTypeOf( + useInfiniteQuery({ + queryKey: ['key', 2] as const, + queryFn: () => Promise.resolve({ field: 'success' }), + initialData: () => ({ + pages: [{ field: 'success' }], + pageParams: [], + }), + select: (data) => ({ + pages: data.pages.map(({ field }) => field), + pageParams: data.pageParams, + }), + }), + ).toEqualTypeOf>() + }) + }) + it('should be used with useSuspenseInfiniteQuery', () => { + doNotExecute(() => { + expectTypeOf( + useSuspenseInfiniteQuery(infiniteQuery.options()), + ).toEqualTypeOf>() + + expectTypeOf( + useSuspenseInfiniteQuery({ + ...infiniteQuery.options(), + select: (data) => ({ + pages: data.pages.map(({ field }) => field), + pageParams: data.pageParams, + }), + }), + ).toEqualTypeOf>() + }) + }) + it('should be used with useQueryClient', () => { + doNotExecute(async () => { + const queryClient = useQueryClient() + + queryClient.invalidateQueries(infiniteQuery.options()) + queryClient.resetQueries(infiniteQuery.options()) + queryClient.removeQueries(infiniteQuery.options()) + queryClient.cancelQueries(infiniteQuery.options()) + queryClient.prefetchQuery(infiniteQuery.options()) + queryClient.refetchQueries(infiniteQuery.options()) + + expectTypeOf( + await queryClient.fetchQuery(infiniteQuery.options()), + ).toEqualTypeOf>() + }) + }) +}) diff --git a/packages/react-query/src/__tests__/queryOptions.types.test.tsx b/packages/react-query/src/__tests__/queryOptions.types.test.tsx index a8d435b6d2..9bea844aad 100644 --- a/packages/react-query/src/__tests__/queryOptions.types.test.tsx +++ b/packages/react-query/src/__tests__/queryOptions.types.test.tsx @@ -19,13 +19,14 @@ const queryFn = () => Promise.resolve({ field: 'success' }) describe('queryOptions', () => { it('should be used with useQuery', () => { doNotExecute(() => { - const dd = useQuery( - queryOptions({ - queryKey, - queryFn, - }), - ) - expectTypeOf(dd).toEqualTypeOf>() + expectTypeOf( + useQuery( + queryOptions({ + queryKey, + queryFn, + }), + ), + ).toEqualTypeOf>() expectTypeOf( useQuery({ ...queryOptions({ diff --git a/packages/react-query/src/__tests__/useSuspenseInfiniteQuery.types.test.tsx b/packages/react-query/src/__tests__/useSuspenseInfiniteQuery.types.test.tsx new file mode 100644 index 0000000000..7e486af5dd --- /dev/null +++ b/packages/react-query/src/__tests__/useSuspenseInfiniteQuery.types.test.tsx @@ -0,0 +1,115 @@ +import { expectTypeOf } from 'expect-type' +import { infiniteQueryOptions, useSuspenseInfiniteQuery } from '..' +import { doNotExecute, sleep } from './utils' +import type { UseSuspenseInfiniteQueryResult } from '..' + +import type { InfiniteData } from '@tanstack/react-query' + +const queryKey = ['key'] as const +const queryFn = () => sleep(10).then(() => ({ text: 'response' })) + +describe('useSuspenseInfiniteQuery', () => { + it('type check', () => { + doNotExecute(() => { + // @ts-expect-error no arg + useSuspenseInfiniteQuery() + + useSuspenseInfiniteQuery({ + queryKey, + queryFn, + // @ts-expect-error no suspense + suspense: boolean, + }) + useSuspenseInfiniteQuery({ + queryKey, + queryFn, + // @ts-expect-error no useErrorBoundary + useErrorBoundary: boolean, + }) + useSuspenseInfiniteQuery({ + queryKey, + queryFn, + // @ts-expect-error no enabled + enabled: boolean, + }) + useSuspenseInfiniteQuery({ + queryKey, + queryFn, + // @ts-expect-error no placeholderData + placeholderData: 'placeholder', + }) + // eslint-disable-next-line @typescript-eslint/no-unused-expressions + useSuspenseInfiniteQuery({ + queryKey, + queryFn, + // @ts-expect-error no isPlaceholderData + }).isPlaceholderData + useSuspenseInfiniteQuery({ + queryKey, + queryFn, + //@ts-expect-error no networkMode + networkMode: 'always', + }) + + const infiniteQuery = useSuspenseInfiniteQuery({ queryKey, queryFn }) + expectTypeOf(infiniteQuery).toEqualTypeOf< + UseSuspenseInfiniteQueryResult<{ text: string }> +>() + expectTypeOf(infiniteQuery.data).toEqualTypeOf< + InfiniteData<{ text: string }> +>() + expectTypeOf(infiniteQuery.status).toEqualTypeOf<'error' | 'success'>() + + const selectedInfiniteQuery = useSuspenseInfiniteQuery({ + queryKey, + queryFn, + select: (data) => ({ + pages: data.pages.map(({ text }) => text), + pageParams: data.pageParams, + }), + }) + expectTypeOf(selectedInfiniteQuery).toEqualTypeOf< + UseSuspenseInfiniteQueryResult +>() + expectTypeOf(selectedInfiniteQuery.data).toEqualTypeOf< + InfiniteData +>() + expectTypeOf(selectedInfiniteQuery.status).toEqualTypeOf< + 'error' | 'success' +>() + + const options = infiniteQueryOptions({ + queryKey, + queryFn, + }) + + const infiniteQueryWithOptions = useSuspenseInfiniteQuery(options) + expectTypeOf(infiniteQueryWithOptions).toEqualTypeOf< + UseSuspenseInfiniteQueryResult<{ text: string }> +>() + expectTypeOf(infiniteQueryWithOptions.data).toEqualTypeOf< + InfiniteData<{ text: string }> +>() + expectTypeOf(infiniteQueryWithOptions.status).toEqualTypeOf< + 'error' | 'success' +>() + + const selectedInfiniteQueryWithOptions = useSuspenseInfiniteQuery({ + ...options, + select: (data) => ({ + pages: data.pages.map(({ text }) => text), + pageParams: data.pageParams, + }), + }) + expectTypeOf(selectedInfiniteQueryWithOptions).toEqualTypeOf< + UseSuspenseInfiniteQueryResult +>() + expectTypeOf(selectedInfiniteQueryWithOptions.data).toEqualTypeOf< + InfiniteData +>() + expectTypeOf(selectedInfiniteQueryWithOptions.status).toEqualTypeOf< + 'error' | 'success' +>() + }) + }) +}) diff --git a/packages/react-query/src/index.ts b/packages/react-query/src/index.ts index d08e593cd7..b4fbe8b403 100644 --- a/packages/react-query/src/index.ts +++ b/packages/react-query/src/index.ts @@ -12,6 +12,7 @@ export { useQueries } from './useQueries' export type { QueriesResults, QueriesOptions } from './useQueries' export { useQuery } from './useQuery' export { useSuspenseQuery } from './useSuspenseQuery' +export { useSuspenseInfiniteQuery } from './useSuspenseInfiniteQuery' export { useSuspenseQueries } from './useSuspenseQueries' export type { SuspenseQueriesResults, @@ -22,6 +23,11 @@ export type { DefinedInitialDataOptions, UndefinedInitialDataOptions, } from './queryOptions' +export { infiniteQueryOptions } from './infiniteQueryOptions' +export type { + DefinedInitialDataInfiniteOptions, + UndefinedInitialDataInfiniteOptions, +} from './infiniteQueryOptions' export { defaultContext, QueryClientProvider, diff --git a/packages/react-query/src/infiniteQueryOptions.ts b/packages/react-query/src/infiniteQueryOptions.ts new file mode 100644 index 0000000000..afafe35a8b --- /dev/null +++ b/packages/react-query/src/infiniteQueryOptions.ts @@ -0,0 +1,95 @@ +import type { UseInfiniteQueryOptions } from './types' +import type { + InfiniteData, + NonUndefinedGuard, + OmitKeyof, + QueryKey, + WithRequired, +} from '@tanstack/query-core' + +type UseInfiniteQueryOptionsOmitted< + TQueryFnData = unknown, + TError = unknown, + TData = TQueryFnData, + TQueryKey extends QueryKey = QueryKey, +> = OmitKeyof< + UseInfiniteQueryOptions, + 'onSuccess' | 'onError' | 'onSettled' | 'refetchInterval' +> + +type ProhibitedInfiniteQueryOptionsKeyInV5 = keyof Pick< + UseInfiniteQueryOptionsOmitted, + 'useErrorBoundary' | 'suspense' +> + +export type UndefinedInitialDataInfiniteOptions< + TQueryFnData, + TError = unknown, + TData = TQueryFnData, + TQueryKey extends QueryKey = QueryKey, +> = UseInfiniteQueryOptionsOmitted & { + initialData?: undefined +} + +export type DefinedInitialDataInfiniteOptions< + TQueryFnData, + TError = unknown, + TData = TQueryFnData, + TQueryKey extends QueryKey = QueryKey, +> = UseInfiniteQueryOptionsOmitted & { + initialData: + | NonUndefinedGuard> + | (() => NonUndefinedGuard>) + | undefined +} + +export function infiniteQueryOptions< + TQueryFnData, + TError = unknown, + TData = TQueryFnData, + TQueryKey extends QueryKey = QueryKey, +>( + options: WithRequired< + OmitKeyof< + DefinedInitialDataInfiniteOptions, + ProhibitedInfiniteQueryOptionsKeyInV5 +>, + 'queryKey' +>, +): WithRequired< + OmitKeyof< + DefinedInitialDataInfiniteOptions, + ProhibitedInfiniteQueryOptionsKeyInV5 +>, + 'queryKey' +> + +export function infiniteQueryOptions< + TQueryFnData, + TError = unknown, + TData = TQueryFnData, + TQueryKey extends QueryKey = QueryKey, +>( + options: WithRequired< + OmitKeyof< + UndefinedInitialDataInfiniteOptions< + TQueryFnData, + TError, + TData, + TQueryKey +>, + ProhibitedInfiniteQueryOptionsKeyInV5 +>, + 'queryKey' +>, +): WithRequired< + OmitKeyof< + UndefinedInitialDataInfiniteOptions, + ProhibitedInfiniteQueryOptionsKeyInV5 +>, + 'queryKey' +> + +export function infiniteQueryOptions(options: unknown) { + return options +} diff --git a/packages/react-query/src/queryOptions.ts b/packages/react-query/src/queryOptions.ts index 730eafb2a7..18a81211a3 100644 --- a/packages/react-query/src/queryOptions.ts +++ b/packages/react-query/src/queryOptions.ts @@ -59,7 +59,10 @@ export function queryOptions< 'queryKey'>, ): WithRequired< - DefinedInitialDataOptions, + OmitKeyof< + DefinedInitialDataOptions, + ProhibitedQueryOptionsKeyInV5 +>, 'queryKey' > @@ -77,7 +80,10 @@ export function queryOptions< 'queryKey'>, ): WithRequired< - UndefinedInitialDataOptions, + OmitKeyof< + UndefinedInitialDataOptions, + ProhibitedQueryOptionsKeyInV5 +>, 'queryKey' > diff --git a/packages/react-query/src/types.ts b/packages/react-query/src/types.ts index e705450f1f..4ff54ff26b 100644 --- a/packages/react-query/src/types.ts +++ b/packages/react-query/src/types.ts @@ -2,6 +2,7 @@ import type * as React from 'react' import type { + DefinedInfiniteQueryObserverResult, DefinedQueryObserverResult, DistributiveOmit, InfiniteQueryObserverOptions, @@ -120,6 +121,19 @@ export type UseInfiniteQueryResult< TError = unknown,> = InfiniteQueryObserverResult +export type DefinedUseInfiniteQueryResult< + TData = unknown, + TError = unknown, +> = DefinedInfiniteQueryObserverResult + +export type UseSuspenseInfiniteQueryResult< + TData = unknown, + TError = unknown, +> = OmitKeyof< + DefinedInfiniteQueryObserverResult , + 'isPlaceholderData' +> + export interface UseMutationOptions< TData = unknown, TError = unknown, diff --git a/packages/react-query/src/useInfiniteQuery.ts b/packages/react-query/src/useInfiniteQuery.ts index cffc36f0dc..37cbe20848 100644 --- a/packages/react-query/src/useInfiniteQuery.ts +++ b/packages/react-query/src/useInfiniteQuery.ts @@ -2,14 +2,39 @@ import { InfiniteQueryObserver, parseQueryArgs } from '@tanstack/query-core' import { useBaseQuery } from './useBaseQuery' import type { + InfiniteData, + NonUndefinedGuard, QueryFunction, QueryKey, QueryObserver, } from '@tanstack/query-core' -import type { UseInfiniteQueryOptions, UseInfiniteQueryResult } from './types' +import type { + DefinedUseInfiniteQueryResult, + UseInfiniteQueryOptions, + UseInfiniteQueryResult, +} from './types' // HOOK +export function useInfiniteQuery< + TQueryFnData = unknown, + TError = unknown, + TData = TQueryFnData, + TQueryKey extends QueryKey = QueryKey, +>( + options: UseInfiniteQueryOptions< + TQueryFnData, + TError, + TData, + TQueryFnData, + TQueryKey +> & { + initialData: + | NonUndefinedGuard> + | (() => NonUndefinedGuard>) + | undefined + }, +): DefinedUseInfiniteQueryResult export function useInfiniteQuery< TQueryFnData = unknown, TError = unknown, @@ -24,6 +49,7 @@ export function useInfiniteQuery< TQueryKey>, ): UseInfiniteQueryResult +/** @deprecated This function overload will be removed in the next major version. */ export function useInfiniteQuery< TQueryFnData = unknown, TError = unknown, @@ -42,6 +68,7 @@ export function useInfiniteQuery< 'queryKey'>, ): UseInfiniteQueryResult +/** @deprecated This function overload will be removed in the next major version. */ export function useInfiniteQuery< TQueryFnData = unknown, TError = unknown, diff --git a/packages/react-query/src/useQuery.ts b/packages/react-query/src/useQuery.ts index 44100cc918..977e300824 100644 --- a/packages/react-query/src/useQuery.ts +++ b/packages/react-query/src/useQuery.ts @@ -55,7 +55,7 @@ export function useQuery< options: UseQueryOptions, ): UseQueryResult -/** @deprecated */ +/** @deprecated This function overload will be removed in the next major version. */ export function useQuery< TQueryFnData = unknown, TError = unknown, @@ -68,7 +68,7 @@ export function useQuery< 'queryKey' | 'initialData'>, ): UseQueryResult -/** @deprecated */ +/** @deprecated This function overload will be removed in the next major version. */ export function useQuery< TQueryFnData = unknown, TError = unknown, @@ -81,7 +81,7 @@ export function useQuery< 'queryKey' | 'initialData'> & { initialData: TQueryFnData | (() => TQueryFnData) }, ): DefinedUseQueryResult -/** @deprecated */ +/** @deprecated This function overload will be removed in the next major version. */ export function useQuery< TQueryFnData = unknown, TError = unknown, @@ -94,7 +94,7 @@ export function useQuery< 'queryKey'>, ): UseQueryResult -/** @deprecated */ +/** @deprecated This function overload will be removed in the next major version. */ export function useQuery< TQueryFnData = unknown, TError = unknown, @@ -108,7 +108,7 @@ export function useQuery< 'queryKey' | 'queryFn' | 'initialData'> & { initialData?: () => undefined }, ): UseQueryResult -/** @deprecated */ +/** @deprecated This function overload will be removed in the next major version. */ export function useQuery< TQueryFnData = unknown, TError = unknown, @@ -122,7 +122,7 @@ export function useQuery< 'queryKey' | 'queryFn' | 'initialData'> & { initialData: TQueryFnData | (() => TQueryFnData) }, ): DefinedUseQueryResult -/** @deprecated */ +/** @deprecated This function overload will be removed in the next major version. */ export function useQuery< TQueryFnData = unknown, TError = unknown, diff --git a/packages/react-query/src/useSuspenseInfiniteQuery.ts b/packages/react-query/src/useSuspenseInfiniteQuery.ts new file mode 100644 index 0000000000..fdd75f0847 --- /dev/null +++ b/packages/react-query/src/useSuspenseInfiniteQuery.ts @@ -0,0 +1,63 @@ +import { InfiniteQueryObserver } from '@tanstack/query-core' +import { useInfiniteQuery } from './useInfiniteQuery' +import { useBaseQuery } from './useBaseQuery' +import type { + InfiniteQueryObserverSuccessResult, + OmitKeyof, + QueryKey, + QueryObserver, + WithRequired, +} from '@tanstack/query-core' +import type { + UseInfiniteQueryOptions, + UseSuspenseInfiniteQueryResult, +} from './types' + +export type UseSuspenseInfiniteQueryOptions< + TQueryFnData = unknown, + TError = unknown, + TData = TQueryFnData, + TQueryKey extends QueryKey = QueryKey, +> = WithRequired< + OmitKeyof< + UseInfiniteQueryOptions< + TQueryFnData, + TError, + TData, + TQueryFnData, + TQueryKey +>, + | 'suspense' + | 'useErrorBoundary' + | 'enabled' + | 'placeholderData' + | 'networkMode' + | 'initialData' +>, + 'queryKey' +> + +export function useSuspenseInfiniteQuery< + TQueryFnData = unknown, + TError = unknown, + TData = TQueryFnData, + TQueryKey extends QueryKey = QueryKey, +>( + options: UseSuspenseInfiniteQueryOptions< + TQueryFnData, + TError, + TData, + TQueryKey +>, +): UseSuspenseInfiniteQueryResult { + return useBaseQuery( + { + ...options, + enabled: true, + suspense: true, + useErrorBoundary: true, + networkMode: 'always', + }, + InfiniteQueryObserver as typeof QueryObserver, + ) as InfiniteQueryObserverSuccessResult +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4ee8071177..f74a13f503 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1356,6 +1356,15 @@ importers: specifier: npm:react-dom@^17.0.2 version: /react-dom@17.0.2(react@18.2.0) + packages/react-query/build/query-codemods: + devDependencies: + '@types/jscodeshift': + specifier: 17.3.0 + version: 17.3.0 + jscodeshift: + specifier: 17.3.0 + version: 17.3.0(@babel/preset-env@7.18.6) + packages/solid-query: dependencies: '@tanstack/query-core': @@ -1739,7 +1748,7 @@ packages: '@babel/core': 7.27.1 '@babel/helper-validator-option': 7.18.6 browserslist: 4.21.4 - semver: 6.3.0 + semver: 6.3.1 /@babel/helper-compilation-targets@7.19.1(@babel/core@7.9.0): resolution: {integrity: sha512-LlLkkqhCMyz2lkQPvJNdIYU7O5YjWRgC2R4omjCTpZd8u8KMQzZvX4qce+/BluN1rcQiV7BoGUpmQ0LeHerbhg==} @@ -1751,7 +1760,7 @@ packages: '@babel/core': 7.9.0 '@babel/helper-validator-option': 7.18.6 browserslist: 4.21.4 - semver: 6.3.0 + semver: 6.3.1 dev: true /@babel/helper-compilation-targets@7.27.2: @@ -1781,6 +1790,24 @@ packages: transitivePeerDependencies: - supports-color + /@babel/helper-create-class-features-plugin@7.18.6(@babel/core@7.27.1): + resolution: {integrity: sha512-YfDzdnoxHGV8CzqHGyCbFvXg5QESPFkXlHtvdCkesLjjVMT2Adxe4FGUR5ChIb3DxSaXO12iIOCWoXdsUVwnqw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-annotate-as-pure': 7.27.1 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.19.0 + '@babel/helper-member-expression-to-functions': 7.27.1 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.1) + '@babel/helper-split-export-declaration': 7.18.6 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/helper-create-class-features-plugin@7.27.1(@babel/core@7.19.1): resolution: {integrity: sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==} engines: {node: '>=6.9.0'} @@ -2266,8 +2293,8 @@ packages: '@babel/core': ^7.13.0 dependencies: '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.18.6 '@babel/plugin-proposal-optional-chaining': 7.18.6(@babel/core@7.27.1) transitivePeerDependencies: - supports-color @@ -2386,8 +2413,8 @@ packages: '@babel/core': ^7.12.0 dependencies: '@babel/core': 7.27.1 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.1) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-create-class-features-plugin': 7.18.6(@babel/core@7.27.1) + '@babel/helper-plugin-utils': 7.19.0 '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.27.1) transitivePeerDependencies: - supports-color @@ -2576,7 +2603,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.27.1 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.27.1) /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.9.0): @@ -2586,7 +2613,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.9.0 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.9.0) dev: true @@ -3028,7 +3055,6 @@ packages: dependencies: '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - dev: false /@babel/plugin-syntax-import-assertions@7.18.6(@babel/core@7.19.1): resolution: {integrity: sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==} @@ -3110,6 +3136,7 @@ packages: dependencies: '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 + dev: false /@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.19.1): resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} @@ -3129,7 +3156,6 @@ packages: dependencies: '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - dev: false /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.19.1): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} @@ -3495,6 +3521,19 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true + /@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.27.1): + resolution: {integrity: sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.1) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/plugin-transform-classes@7.18.8(@babel/core@7.19.1): resolution: {integrity: sha512-RySDoXdF6hgHSHuAW4aLGyVQdmvEX/iJtjVre52k0pxRq4hzqze+rAVP++NmNv596brBpYmaiKgTZby7ziBnVg==} engines: {node: '>=6.9.0'} @@ -3717,7 +3756,6 @@ packages: '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-flow': 7.27.1(@babel/core@7.27.1) - dev: false /@babel/plugin-transform-for-of@7.18.8(@babel/core@7.19.1): resolution: {integrity: sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==} @@ -4076,6 +4114,16 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true + /@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.27.1): + resolution: {integrity: sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + dev: true + /@babel/plugin-transform-object-assign@7.18.6(@babel/core@7.19.1): resolution: {integrity: sha512-mQisZ3JfqWh2gVXvfqYCAAyRs6+7oev+myBsTwW5RnPhYXOTuCEw2oe3YgxlXMViXUS53lG8koulI7mJ+8JE+A==} engines: {node: '>=6.9.0'} @@ -4116,7 +4164,7 @@ packages: dependencies: '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-replace-supers': 7.18.6 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.1) transitivePeerDependencies: - supports-color @@ -4128,7 +4176,20 @@ packages: dependencies: '@babel/core': 7.9.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-replace-supers': 7.18.6 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.9.0) + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-optional-chaining@7.27.1(@babel/core@7.27.1): + resolution: {integrity: sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color dev: true @@ -4161,6 +4222,19 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true + /@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.27.1): + resolution: {integrity: sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.1) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/plugin-transform-property-literals@7.18.6(@babel/core@7.19.1): resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} engines: {node: '>=6.9.0'} @@ -4278,9 +4352,9 @@ packages: '@babel/core': 7.27.1 '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-jsx': 7.18.6(@babel/core@7.27.1) - '@babel/types': 7.19.0 + '@babel/types': 7.27.1 dev: false /@babel/plugin-transform-react-pure-annotations@7.18.6(@babel/core@7.19.1): @@ -4574,7 +4648,6 @@ packages: '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.27.1) transitivePeerDependencies: - supports-color - dev: false /@babel/plugin-transform-typescript@7.27.1(@babel/core@7.9.0): resolution: {integrity: sha512-Q5sT5+O4QUebHdbwKedFBEwRLb02zJ7r4A5Gg2hUoLuU3FjdMcyqcywqUrLCaDsFCxzokf7u9kuy7qz51YUuAg==} @@ -4921,7 +4994,6 @@ packages: '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-validator-option': 7.27.1 '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.27.1) - dev: false /@babel/preset-modules@0.1.5(@babel/core@7.19.1): resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} @@ -5017,7 +5089,6 @@ packages: '@babel/plugin-transform-typescript': 7.27.1(@babel/core@7.27.1) transitivePeerDependencies: - supports-color - dev: false /@babel/register@7.18.6(@babel/core@7.19.1): resolution: {integrity: sha512-tkYtONzaO8rQubZzpBnvZPFcHgh8D9F55IjOsYton4X2IBoyRn2ZSWQqySTZnUn2guZbxbQiAB27hJEbvXamhQ==} @@ -5045,7 +5116,6 @@ packages: make-dir: 2.1.0 pirates: 4.0.7 source-map-support: 0.5.21 - dev: false /@babel/runtime-corejs3@7.18.6: resolution: {integrity: sha512-cOu5wH2JFBgMjje+a+fz2JNIWU4GzYpl05oSob3UDvBEh6EuIn+TXFHMmBbhSb+k/4HMzgKCQfEEDArAWNF9Cw==} @@ -5088,7 +5158,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.27.1 - '@babel/generator': 7.19.0 + '@babel/generator': 7.27.1 '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-function-name': 7.19.0 '@babel/helper-hoist-variables': 7.18.6 @@ -7610,6 +7680,13 @@ packages: recast: 0.20.5 dev: true + /@types/jscodeshift@17.3.0: + resolution: {integrity: sha512-ogvGG8VQQqAQQ096uRh+d6tBHrYuZjsumHirKtvBa5qEyTMN3IQJ7apo+sw9lxaB/iKWIhbbLlF3zmAWk9XQIg==} + dependencies: + ast-types: 0.16.1 + recast: 0.23.11 + dev: true + /@types/json-schema@7.0.11: resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} dev: true @@ -8910,6 +8987,13 @@ packages: dependencies: tslib: 2.6.0 + /ast-types@0.16.1: + resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} + engines: {node: '>=4'} + dependencies: + tslib: 2.6.0 + dev: true + /astral-regex@1.0.0: resolution: {integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==} engines: {node: '>=4'} @@ -9129,7 +9213,7 @@ packages: dependencies: '@babel/core': 7.27.1 '@babel/helper-module-imports': 7.16.0 - '@babel/plugin-syntax-jsx': 7.18.6(@babel/core@7.27.1) + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.1) '@babel/types': 7.27.1 html-entities: 2.3.2 dev: true @@ -13791,6 +13875,39 @@ packages: - supports-color dev: true + /jscodeshift@17.3.0(@babel/preset-env@7.18.6): + resolution: {integrity: sha512-LjFrGOIORqXBU+jwfC9nbkjmQfFldtMIoS6d9z2LG/lkmyNXsJAySPT+2SWXJEoE68/bCWcxKpXH37npftgmow==} + engines: {node: '>=16'} + hasBin: true + peerDependencies: + '@babel/preset-env': ^7.1.6 + peerDependenciesMeta: + '@babel/preset-env': + optional: true + dependencies: + '@babel/core': 7.27.1 + '@babel/parser': 7.27.2 + '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.27.1) + '@babel/preset-env': 7.18.6(@babel/core@7.19.1) + '@babel/preset-flow': 7.27.1(@babel/core@7.27.1) + '@babel/preset-typescript': 7.27.1(@babel/core@7.27.1) + '@babel/register': 7.27.1(@babel/core@7.27.1) + flow-parser: 0.121.0 + graceful-fs: 4.2.10 + micromatch: 4.0.8 + neo-async: 2.6.2 + picocolors: 1.1.1 + recast: 0.23.11 + tmp: 0.2.3 + write-file-atomic: 5.0.1 + transitivePeerDependencies: + - supports-color + dev: true + /jsdom@16.7.0: resolution: {integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==} engines: {node: '>=10'} @@ -16357,6 +16474,7 @@ packages: /react-native-vector-icons@9.2.0: resolution: {integrity: sha512-wKYLaFuQST/chH3AJRjmOLoLy3JEs1JR6zMNgTaemFpNoXs0ztRnTxcxFD9xhX7cJe1/zoN5BpQYe7kL0m5yyA==} + deprecated: react-native-vector-icons package has moved to a new model of per-icon-family packages. See the https://github.com/oblador/react-native-vector-icons/blob/master/MIGRATION.md on how to migrate hasBin: true dependencies: prop-types: 15.8.1 @@ -16641,6 +16759,17 @@ packages: source-map: 0.6.1 tslib: 2.6.0 + /recast@0.23.11: + resolution: {integrity: sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==} + engines: {node: '>= 4'} + dependencies: + ast-types: 0.16.1 + esprima: 4.0.1 + source-map: 0.6.1 + tiny-invariant: 1.3.3 + tslib: 2.6.0 + dev: true + /rechoir@0.6.2: resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} engines: {node: '>= 0.10'} @@ -17221,6 +17350,11 @@ packages: /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: true + /simple-git@3.27.0: resolution: {integrity: sha512-ivHoFS9Yi9GY49ogc6/YAi3Fl9ROnF4VyubNylgCkA+RVqLaKWnDSzXOVzya8csELIaWaYNutsEuAhZrtOjozA==} dependencies: @@ -18152,7 +18286,6 @@ packages: /tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} - dev: false /tiny-warning@1.0.3: resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} @@ -18195,6 +18328,11 @@ packages: rimraf: 3.0.2 dev: true + /tmp@0.2.3: + resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} + engines: {node: '>=14.14'} + dev: true + /tmpl@1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} @@ -19319,6 +19457,14 @@ packages: typedarray-to-buffer: 3.1.5 dev: true + /write-file-atomic@5.0.1: + resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} + engines: {node: ^14.17.0 || ^16.13.0 ||>=18.0.0} + dependencies: + imurmurhash: 0.1.4 + signal-exit: 4.1.0 + dev: true + /ws@1.1.5: resolution: {integrity: sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==} peerDependencies:

AltStyle によって変換されたページ (->オリジナル) /