From 296787c9cf511db44b8e301abd70823189892ca5 Mon Sep 17 00:00:00 2001 From: ryuever Date: Sat, 28 Dec 2024 23:40:44 +0800 Subject: [PATCH] Feat model rollup (#88) * feat: init * feat: container * feat: viewable * feat: add item-meta * feat: add list model * feat: init utils * feat: items-dimensions * feat: add base-dimensions * feat: add container * feat: init item-meta * feat: add ItemMeta * feat: init utils * feat: item-dimensions * feat: init base dimensions * feat: init base dimensions * feat: init models * feat: add Dimension * feat: add Dimension * feat: update Masonry * feat: add types * feat: add dimensions model * feat: init strategies * feat: add strategies * feat: init state * feat: add state * feat: group dimensions * feat: list dimensions * feat: add masonry dimensions * feat: build list * feat: masonry build work * feat: build group * feat: add react-playground * feat: add storybook configuration * feat: support List.stories.tsx * feat: update * feat: update * feat: update * feat: update * feat: add list-dimensions testing * feat: update test * feat: add masonry dimensions test * feat: add test * feat: add test * feat: remove psedo * feat: update * feat: merge group * feat: update react * feat: masonry list * feat: update * feat: update * feat: update * feat: update * feat: update * feat: upadte * feat: update * feat: update * feat: update * feat: update * feat: update * feat: update * feat: update * feat: update * feat: update * feat: update * feat: update * feat: update * feat: works * feat: works * feat: add list * feat: update --- .github/workflows/release.yml | 4 +- core/base-dimensions/.swcrc | 29 + core/base-dimensions/README.md | 11 + core/base-dimensions/eslint.config.js | 22 + core/base-dimensions/package.json | 13 + core/base-dimensions/project.json | 22 + core/base-dimensions/rollup.config.js | 18 + core/base-dimensions/src/BaseDimensions.ts | 294 + core/base-dimensions/src/BaseLayout.ts | 170 + core/base-dimensions/src/common.ts | 6 + core/base-dimensions/src/index.ts | 3 + .../src/types/BaseDimensions.types.ts | 38 + .../src/types/BaseLayout.types.ts | 39 + .../src/types/generic.types.ts | 4 + core/base-dimensions/src/types/index.ts | 4 + .../src/types/scrollMetrics.types.ts | 50 + core/base-dimensions/tsconfig.json | 22 + core/base-dimensions/tsconfig.lib.json | 10 + core/base-dimensions/tsconfig.spec.json | 26 + core/base-dimensions/vite.config.ts | 28 + core/container/.swcrc | 29 + core/container/README.md | 11 + core/container/eslint.config.js | 22 + core/container/package.json | 9 + core/container/project.json | 22 + core/container/rollup.config.js | 17 + core/container/src/BaseContainer.ts | 76 + core/container/src/common.ts | 6 + core/container/src/index.ts | 2 + core/container/src/types/container.ts | 14 + core/container/src/types/index.ts | 1 + core/container/tsconfig.json | 23 + core/container/tsconfig.lib.json | 10 + core/container/tsconfig.spec.json | 26 + core/container/vite.config.ts | 28 + core/dimensions-model/.swcrc | 29 + core/dimensions-model/README.md | 11 + core/dimensions-model/eslint.config.js | 22 + core/dimensions-model/package.json | 16 + core/dimensions-model/project.json | 22 + core/dimensions-model/rollup.config.js | 17 + .../src/ListDimensionsModel.ts | 623 + core/dimensions-model/src/common.ts | 20 + core/dimensions-model/src/index.ts | 2 + .../src/types/BaseLayout.types.ts | 39 + .../src/types/ListBaseDimensions.types.ts | 96 + .../src/types/ListDimensionsModel.types.ts | 97 + .../src/types/generic.types.ts | 4 + core/dimensions-model/src/types/index.ts | 5 + .../src/types/scrollMetrics.types.ts | 50 + core/dimensions-model/src/types/types.ts | 75 + core/dimensions-model/tsconfig.json | 22 + core/dimensions-model/tsconfig.lib.json | 11 + core/dimensions-model/tsconfig.spec.json | 26 + core/dimensions-model/vite.config.ts | 28 + core/item-meta/.swcrc | 29 + core/item-meta/README.md | 11 + core/item-meta/eslint.config.js | 22 + core/item-meta/package.json | 13 + core/item-meta/project.json | 22 + core/item-meta/rollup.config.js | 18 + core/item-meta/src/ItemMeta.ts | 396 + .../item-meta/src/ItemMetaStateEventHelper.ts | 354 + core/item-meta/src/common.ts | 8 + core/item-meta/src/index.ts | 3 + core/item-meta/src/types/BaseLayout.types.ts | 39 + core/item-meta/src/types/ItemMeta.types.ts | 64 + core/item-meta/src/types/generic.types.ts | 4 + core/item-meta/src/types/index.ts | 9 + core/item-meta/tsconfig.json | 23 + core/item-meta/tsconfig.lib.json | 13 + core/item-meta/tsconfig.spec.json | 26 + core/item-meta/vite.config.ts | 28 + core/state/.swcrc | 29 + core/state/README.md | 11 + core/state/eslint.config.js | 22 + core/state/package.json | 11 + core/state/project.json | 22 + core/state/rollup.config.js | 18 + core/state/src/actions.ts | 119 + core/state/src/common.ts | 1 + core/state/src/createStore.ts | 62 + core/state/src/index.ts | 2 + .../src/middleware/hydrateOnEndReached.ts | 12 + .../src/middleware/makeIndexMeaningful.ts | 22 + core/state/src/middleware/preCheck.ts | 25 + .../state/src/middleware/resolveIndexRange.ts | 51 + .../src/middleware/resolveInitialState.ts | 19 + core/state/src/middleware/resolveMaxIndex.ts | 12 + core/state/src/reducer.ts | 351 + core/state/src/types/index.ts | 2 + core/state/src/types/scrollMetrics.types.ts | 50 + core/state/src/types/types.ts | 149 + core/state/tsconfig.json | 22 + core/state/tsconfig.lib.json | 10 + core/state/tsconfig.spec.json | 26 + core/state/vite.config.ts | 25 + core/strategies/.swcrc | 29 + core/strategies/README.md | 11 + core/strategies/eslint.config.js | 22 + core/strategies/package.json | 14 + core/strategies/project.json | 22 + core/strategies/rollup.config.js | 18 + core/strategies/src/BaseImpl.ts | 361 + core/strategies/src/BaseState.ts | 39 + core/strategies/src/RecycleStateImpl.ts | 412 + core/strategies/src/SpaceStateImpl.ts | 254 + core/strategies/src/StateHub.ts | 78 + core/strategies/src/common.ts | 20 + core/strategies/src/index.ts | 2 + core/strategies/src/types/BaseLayout.types.ts | 39 + .../src/types/ListBaseDimensions.types.ts | 96 + .../src/types/ListDimensionsModel.types.ts | 78 + core/strategies/src/types/generic.types.ts | 4 + core/strategies/src/types/index.ts | 7 + .../src/types/scrollMetrics.types.ts | 50 + core/strategies/src/types/stateHub.types.ts | 22 + core/strategies/src/types/types.ts | 75 + core/strategies/src/utils.ts | 83 + core/strategies/tsconfig.json | 22 + core/strategies/tsconfig.lib.json | 10 + core/strategies/tsconfig.spec.json | 26 + core/strategies/vite.config.ts | 28 + core/types/.swcrc | 29 + core/types/README.md | 11 + core/types/eslint.config.js | 22 + core/types/package.json | 10 + core/types/project.json | 22 + core/types/rollup.config.js | 18 + core/types/src/Dimension.ts | 9 + core/types/src/ListDimensions.ts | 55 + core/types/src/ListDimensionsModel.ts | 10 + core/types/src/ListGroupDimensions.ts | 63 + core/types/src/OnEndReachedHelper.ts | 21 + core/types/src/baseDimensions.ts | 12 + core/types/src/generic.types.ts | 4 + core/types/src/index.ts | 13 + core/types/src/itemDimensions.ts | 5 + core/types/src/itemMeta.ts | 44 + core/types/src/layout.ts | 6 + core/types/src/list.ts | 36 + core/types/src/masonry.ts | 24 + core/types/src/pseudoListDimensions.ts | 7 + core/types/src/scrollMetrics.types.ts | 50 + core/types/tsconfig.json | 22 + core/types/tsconfig.lib.json | 10 + core/types/tsconfig.spec.json | 26 + core/types/vite.config.ts | 25 + core/utils/.swcrc | 29 + core/utils/README.md | 11 + core/utils/eslint.config.js | 22 + core/utils/package.json | 9 + core/utils/project.json | 22 + core/utils/rollup.config.js | 18 + core/utils/src/EnabledSelector.ts | 38 + core/utils/src/KeyIndexManager.ts | 54 + core/utils/src/ListSpy.tsx | 53 + core/utils/src/ListSpyUtils.ts | 11 + core/utils/src/StillnessHelper.ts | 41 + core/utils/src/exportedUtils.ts | 44 + core/utils/src/index.ts | 7 + core/utils/src/logger.ts | 8 + core/utils/tsconfig.json | 22 + core/utils/tsconfig.lib.json | 10 + core/utils/tsconfig.spec.json | 26 + core/utils/vite.config.ts | 25 + core/viewable/.swcrc | 29 + core/viewable/README.md | 11 + core/viewable/eslint.config.js | 22 + core/viewable/package.json | 12 + core/viewable/project.json | 28 + core/viewable/rollup.config.js | 17 + core/viewable/src/OnEndReachedHelper.ts | 328 + core/viewable/src/ViewabilityConfigTuples.ts | 134 + core/viewable/src/ViewabilityItemMeta.ts | 27 + core/viewable/src/ViewablityHelper.ts | 249 + .../__test__/ViewabilityConfigTuples.test.ts | 153 + .../src/__test__/viewabilityUtils.test.ts | 589 + core/viewable/src/common.ts | 5 + core/viewable/src/constants.ts | 4 + core/viewable/src/index.ts | 4 + core/viewable/src/types/generic.types.ts | 4 + core/viewable/src/types/index.ts | 10 + .../src/types/onEndReachedHelper.types.ts | 22 + .../viewable/src/types/scrollMetrics.types.ts | 50 + core/viewable/src/types/viewable.types.ts | 94 + core/viewable/src/viewabilityUtils.ts | 136 + core/viewable/tsconfig.json | 23 + core/viewable/tsconfig.lib.json | 10 + core/viewable/tsconfig.spec.json | 26 + core/viewable/vite.config.ts | 28 + .../app/(tabs)/List.tsx | 7 +- .../app/(tabs)/MasonryList.tsx | 3 +- .../app/(tabs)/index.tsx | 3 +- .../ReactNativeListPlayground/metro.config.js | 219 +- .../ReactNativeListPlayground/tsconfig.json | 4 + examples/react-playground/.storybook/main.ts | 20 + .../react-playground/.storybook/preview.ts | 0 examples/react-playground/eslint.config.js | 12 + examples/react-playground/index.html | 16 + examples/react-playground/jest.config.ts | 10 + examples/react-playground/package.json | 220 + examples/react-playground/project.json | 16 + examples/react-playground/public/favicon.ico | Bin 0 -> 15086 bytes .../react-playground/src/app/List.stories.tsx | 62 + .../src/app/MasonryList.stories.tsx | 65 + .../src/app/OnEndReached.stories.tsx | 97 + .../react-playground/src/app/app.module.css | 1 + .../react-playground/src/app/app.spec.tsx | 21 + .../src/app/group.stories.tsx | 94 + examples/react-playground/src/app/index.tsx | 1 + examples/react-playground/src/assets/.gitkeep | 0 examples/react-playground/src/main.tsx | 13 + examples/react-playground/src/styles.css | 1 + examples/react-playground/tsconfig.app.json | 27 + examples/react-playground/tsconfig.json | 24 + examples/react-playground/tsconfig.spec.json | 25 + .../react-playground/tsconfig.storybook.json | 31 + examples/react-playground/vite.config.ts | 36 + model/dimension/.swcrc | 29 + model/dimension/README.md | 11 + model/dimension/eslint.config.js | 22 + model/dimension/package.json | 13 + model/dimension/project.json | 22 + model/dimension/rollup.config.js | 18 + model/dimension/src/Dimension.ts | 294 + model/dimension/src/common.ts | 3 + model/dimension/src/index.ts | 2 + model/dimension/src/types/Dimension.types.ts | 21 + .../src/types/ListGroupDimensions.types.ts | 77 + model/dimension/src/types/generic.types.ts | 4 + model/dimension/src/types/index.ts | 3 + model/dimension/tsconfig.json | 22 + model/dimension/tsconfig.lib.json | 10 + model/dimension/tsconfig.spec.json | 26 + model/dimension/vite.config.ts | 28 + model/group-dimensions/.swcrc | 29 + model/group-dimensions/README.md | 11 + model/group-dimensions/eslint.config.js | 22 + model/group-dimensions/package.json | 22 + model/group-dimensions/project.json | 28 + model/group-dimensions/rollup.config.js | 17 + model/group-dimensions/src/Inspector.ts | 187 + .../src/ListGroupDimensions.ts | 1101 + .../src/__test__/ListGroupDimensions.test.ts | 1272 + .../src/__test__/reducer.test.ts | 551 + model/group-dimensions/src/common.ts | 4 + model/group-dimensions/src/index.ts | 1 + model/group-dimensions/src/state/index.ts | 100 + .../src/state/middleware/fixBufferedRange.ts | 57 + .../middleware/fixInitialBufferedRange.ts | 91 + .../src/state/middleware/fixVisibleRange.ts | 72 + .../src/types/Inspector.types.ts | 28 + .../src/types/ListGroupDimensions.types.ts | 81 + .../src/types/generic.types.ts | 4 + model/group-dimensions/src/types/index.ts | 4 + .../src/types/scrollMetrics.types.ts | 50 + model/group-dimensions/tsconfig.json | 22 + model/group-dimensions/tsconfig.lib.json | 10 + model/group-dimensions/tsconfig.spec.json | 26 + model/group-dimensions/vite.config.ts | 28 + model/items-dimensions/.swcrc | 29 + model/items-dimensions/README.md | 11 + model/items-dimensions/eslint.config.js | 22 + model/items-dimensions/package.json | 16 + model/items-dimensions/project.json | 22 + model/items-dimensions/rollup.config.js | 18 + model/items-dimensions/src/ItemsDimensions.ts | 145 + model/items-dimensions/src/SortedItems.ts | 214 + model/items-dimensions/src/index.ts | 1 + .../src/types/BaseDimensions.types.ts | 38 + .../src/types/BaseLayout.types.ts | 39 + .../src/types/ItemsDimensions.types.ts | 3 + model/items-dimensions/src/types/index.ts | 15 + model/items-dimensions/tsconfig.json | 22 + model/items-dimensions/tsconfig.lib.json | 10 + model/items-dimensions/tsconfig.spec.json | 26 + model/items-dimensions/vite.config.ts | 28 + model/list-dimensions/.swcrc | 29 + model/list-dimensions/README.md | 11 + model/list-dimensions/eslint.config.js | 22 + model/list-dimensions/package.json | 13 + model/list-dimensions/project.json | 28 + model/list-dimensions/rollup.config.js | 17 + model/list-dimensions/src/ListDimensions.ts | 184 + .../__test__/ListDimensions.recycle.test.ts | 922 + .../src/__test__/ListDimensions.space.test.ts | 1740 + .../src/__test__/reducer.test.ts | 135 + model/list-dimensions/src/index.ts | 1 + model/list-dimensions/src/state/index.ts | 100 + .../src/state/middleware/fixBufferedRange.ts | 74 + .../middleware/fixInitialBufferedRange.ts | 50 + .../src/state/middleware/fixVisibleRange.ts | 67 + .../src/types/generic.types.ts | 4 + model/list-dimensions/src/types/index.ts | 2 + .../src/types/scrollMetrics.types.ts | 50 + model/list-dimensions/tsconfig.json | 22 + model/list-dimensions/tsconfig.lib.json | 10 + model/list-dimensions/tsconfig.spec.json | 26 + model/list-dimensions/vite.config.ts | 28 + model/masonry-dimensions/.swcrc | 29 + model/masonry-dimensions/README.md | 11 + model/masonry-dimensions/eslint.config.js | 22 + model/masonry-dimensions/package.json | 16 + model/masonry-dimensions/project.json | 28 + model/masonry-dimensions/rollup.config.js | 17 + .../src/MasonryDimensionStrategy.ts | 196 + .../src/MasonryDimensions.ts | 258 + .../src/MasonryDimensionsModel.ts | 322 + .../src/__test__/MasonryDimensions.test.ts | 268 + model/masonry-dimensions/src/common.ts | 2 + model/masonry-dimensions/src/index.ts | 2 + .../src/types/Container.types.ts | 23 + .../src/types/generic.types.ts | 4 + model/masonry-dimensions/src/types/index.ts | 4 + .../src/types/masonry.types.ts | 47 + .../src/types/scrollMetrics.types.ts | 50 + model/masonry-dimensions/src/utils.ts | 160 + model/masonry-dimensions/tsconfig.json | 22 + model/masonry-dimensions/tsconfig.lib.json | 10 + model/masonry-dimensions/tsconfig.spec.json | 26 + model/masonry-dimensions/vite.config.ts | 28 + model/pseudo-list-dimensions/.swcrc | 29 + model/pseudo-list-dimensions/README.md | 11 + model/pseudo-list-dimensions/eslint.config.js | 22 + model/pseudo-list-dimensions/package.json | 7 + model/pseudo-list-dimensions/project.json | 22 + model/pseudo-list-dimensions/rollup.config.js | 17 + .../src/PseudoListDimensions.ts | 192 + model/pseudo-list-dimensions/src/index.ts | 1 + model/pseudo-list-dimensions/tsconfig.json | 22 + .../pseudo-list-dimensions/tsconfig.lib.json | 10 + .../pseudo-list-dimensions/tsconfig.spec.json | 26 + model/pseudo-list-dimensions/vite.config.ts | 28 + nx.json | 16 + package.json | 15 +- pnpm-lock.yaml | 28529 +++++++--------- pnpm-workspace.yaml | 5 +- tsconfig.base.json | 47 + tsconfig.json | 17 +- ui/group/package.json | 1 - ui/group/src/common/GroupDimensionItem.tsx | 42 + .../{react-native => common}/GroupList.tsx | 25 +- .../{react => common}/GroupListItemImpl.tsx | 29 +- ui/group/src/common/ListItem.tsx | 104 + ui/group/src/common/PortalContent.tsx | 189 + ui/group/src/common/clock.tsx | 18 + ui/group/src/{react => common}/context.ts | 5 +- .../hooks/useMountDimensionItem.ts} | 18 +- .../{react => common}/hooks/useMountList.ts | 35 +- ui/group/src/react-native/CompatComponent.tsx | 32 + ui/group/src/react-native/CompatListItem.tsx | 115 + ui/group/src/react-native/GroupListItem.tsx | 48 - .../src/react-native/GroupListItemImpl.tsx | 61 - ui/group/src/react-native/ListGroup.tsx | 86 +- ui/group/src/react-native/ListItem.tsx | 157 - ui/group/src/react-native/PortalContent.tsx | 166 - ui/group/src/react-native/context.ts | 16 - .../src/react-native/hooks/useMountItem.ts | 43 - .../src/react-native/hooks/useMountList.ts | 55 - ui/group/src/react-native/index.ts | 6 +- ui/group/src/react-native/measure.ts | 61 + .../src/react-native/types/ListGroup.types.ts | 42 + .../react-native/types/PortalContext.types.ts | 15 + .../src/react-native/types/compatListItem.ts | 12 + ui/group/src/react-native/types/index.ts | 3 + ui/group/src/react/CompatComponent.tsx | 30 + ui/group/src/react/CompatListItem.tsx | 79 + ui/group/src/react/GroupList.tsx | 50 - ui/group/src/react/GroupListItem.tsx | 53 - ui/group/src/react/ListGroup.tsx | 116 +- ui/group/src/react/ListItem.tsx | 177 - ui/group/src/react/PortalContent.tsx | 174 - ui/group/src/react/index.ts | 6 +- ui/group/src/react/types/GroupList.types.ts | 13 - .../react/types/GroupListItemImpl.types.ts | 17 - ui/group/src/react/types/ListGroup.types.ts | 10 +- ui/group/src/react/types/ListItem.types.ts | 62 - .../src/react/types/PortalContext.types.ts | 35 +- ui/group/src/react/types/compatListItem.ts | 10 + ui/group/src/react/types/index.ts | 16 +- .../src/types/GroupDimensionItem.types.ts | 10 + ui/group/src/types/GroupList.types.ts | 14 +- ui/group/src/types/GroupListItemImpl.types.ts | 9 +- ui/group/src/types/ListGroup.types.ts | 56 +- ui/group/src/types/ListItem.types.ts | 72 +- ui/group/src/types/PortalContext.types.ts | 70 +- ui/group/src/types/index.ts | 1 + ui/list/package.json | 2 +- ui/list/src/index.ts | 3 - ui/list/src/react-native/List.tsx | 142 +- ui/list/src/react-native/RecycleItem.tsx | 4 +- ui/list/src/react-native/SpaceItem.tsx | 2 +- ui/list/src/react-native/types/list.ts | 61 +- ui/list/src/react/List.tsx | 8 +- ui/list/src/react/RecycleItem.tsx | 2 +- ui/list/src/react/SpaceItem.tsx | 2 +- ui/list/src/types/list.ts | 76 +- ui/list/tsconfig.json | 2 + ui/masonry/package.json | 4 +- ui/masonry/src/common/utils.ts | 30 + .../src/react-native/ColumnStateRender.tsx | 2 +- ui/masonry/src/react-native/MasonryList.tsx | 49 +- ui/masonry/src/react-native/RecycleItem.tsx | 2 +- ui/masonry/src/react-native/SpaceItem.tsx | 2 +- ui/masonry/src/react-native/types/list.ts | 15 +- .../src/react-native/types/masonryList.ts | 78 +- ui/masonry/src/react/ColumnStateRender.tsx | 5 +- ui/masonry/src/react/MasonryList.tsx | 49 +- ui/masonry/src/react/RecycleItem.tsx | 2 +- ui/masonry/src/react/SpaceItem.tsx | 2 +- ui/masonry/src/react/types/list.ts | 15 +- ui/masonry/src/react/types/masonryList.ts | 65 +- ui/masonry/src/types/index.ts | 2 + ui/masonry/src/types/list.ts | 14 + ui/masonry/src/types/masonryList.ts | 50 + 416 files changed, 35216 insertions(+), 17464 deletions(-) create mode 100644 core/base-dimensions/.swcrc create mode 100644 core/base-dimensions/README.md create mode 100644 core/base-dimensions/eslint.config.js create mode 100644 core/base-dimensions/package.json create mode 100644 core/base-dimensions/project.json create mode 100644 core/base-dimensions/rollup.config.js create mode 100644 core/base-dimensions/src/BaseDimensions.ts create mode 100644 core/base-dimensions/src/BaseLayout.ts create mode 100644 core/base-dimensions/src/common.ts create mode 100644 core/base-dimensions/src/index.ts create mode 100644 core/base-dimensions/src/types/BaseDimensions.types.ts create mode 100644 core/base-dimensions/src/types/BaseLayout.types.ts create mode 100644 core/base-dimensions/src/types/generic.types.ts create mode 100644 core/base-dimensions/src/types/index.ts create mode 100644 core/base-dimensions/src/types/scrollMetrics.types.ts create mode 100644 core/base-dimensions/tsconfig.json create mode 100644 core/base-dimensions/tsconfig.lib.json create mode 100644 core/base-dimensions/tsconfig.spec.json create mode 100644 core/base-dimensions/vite.config.ts create mode 100644 core/container/.swcrc create mode 100644 core/container/README.md create mode 100644 core/container/eslint.config.js create mode 100644 core/container/package.json create mode 100644 core/container/project.json create mode 100644 core/container/rollup.config.js create mode 100644 core/container/src/BaseContainer.ts create mode 100644 core/container/src/common.ts create mode 100644 core/container/src/index.ts create mode 100644 core/container/src/types/container.ts create mode 100644 core/container/src/types/index.ts create mode 100644 core/container/tsconfig.json create mode 100644 core/container/tsconfig.lib.json create mode 100644 core/container/tsconfig.spec.json create mode 100644 core/container/vite.config.ts create mode 100644 core/dimensions-model/.swcrc create mode 100644 core/dimensions-model/README.md create mode 100644 core/dimensions-model/eslint.config.js create mode 100644 core/dimensions-model/package.json create mode 100644 core/dimensions-model/project.json create mode 100644 core/dimensions-model/rollup.config.js create mode 100644 core/dimensions-model/src/ListDimensionsModel.ts create mode 100644 core/dimensions-model/src/common.ts create mode 100644 core/dimensions-model/src/index.ts create mode 100644 core/dimensions-model/src/types/BaseLayout.types.ts create mode 100644 core/dimensions-model/src/types/ListBaseDimensions.types.ts create mode 100644 core/dimensions-model/src/types/ListDimensionsModel.types.ts create mode 100644 core/dimensions-model/src/types/generic.types.ts create mode 100644 core/dimensions-model/src/types/index.ts create mode 100644 core/dimensions-model/src/types/scrollMetrics.types.ts create mode 100644 core/dimensions-model/src/types/types.ts create mode 100644 core/dimensions-model/tsconfig.json create mode 100644 core/dimensions-model/tsconfig.lib.json create mode 100644 core/dimensions-model/tsconfig.spec.json create mode 100644 core/dimensions-model/vite.config.ts create mode 100644 core/item-meta/.swcrc create mode 100644 core/item-meta/README.md create mode 100644 core/item-meta/eslint.config.js create mode 100644 core/item-meta/package.json create mode 100644 core/item-meta/project.json create mode 100644 core/item-meta/rollup.config.js create mode 100644 core/item-meta/src/ItemMeta.ts create mode 100644 core/item-meta/src/ItemMetaStateEventHelper.ts create mode 100644 core/item-meta/src/common.ts create mode 100644 core/item-meta/src/index.ts create mode 100644 core/item-meta/src/types/BaseLayout.types.ts create mode 100644 core/item-meta/src/types/ItemMeta.types.ts create mode 100644 core/item-meta/src/types/generic.types.ts create mode 100644 core/item-meta/src/types/index.ts create mode 100644 core/item-meta/tsconfig.json create mode 100644 core/item-meta/tsconfig.lib.json create mode 100644 core/item-meta/tsconfig.spec.json create mode 100644 core/item-meta/vite.config.ts create mode 100644 core/state/.swcrc create mode 100644 core/state/README.md create mode 100644 core/state/eslint.config.js create mode 100644 core/state/package.json create mode 100644 core/state/project.json create mode 100644 core/state/rollup.config.js create mode 100644 core/state/src/actions.ts create mode 100644 core/state/src/common.ts create mode 100644 core/state/src/createStore.ts create mode 100644 core/state/src/index.ts create mode 100644 core/state/src/middleware/hydrateOnEndReached.ts create mode 100644 core/state/src/middleware/makeIndexMeaningful.ts create mode 100644 core/state/src/middleware/preCheck.ts create mode 100644 core/state/src/middleware/resolveIndexRange.ts create mode 100644 core/state/src/middleware/resolveInitialState.ts create mode 100644 core/state/src/middleware/resolveMaxIndex.ts create mode 100644 core/state/src/reducer.ts create mode 100644 core/state/src/types/index.ts create mode 100644 core/state/src/types/scrollMetrics.types.ts create mode 100644 core/state/src/types/types.ts create mode 100644 core/state/tsconfig.json create mode 100644 core/state/tsconfig.lib.json create mode 100644 core/state/tsconfig.spec.json create mode 100644 core/state/vite.config.ts create mode 100644 core/strategies/.swcrc create mode 100644 core/strategies/README.md create mode 100644 core/strategies/eslint.config.js create mode 100644 core/strategies/package.json create mode 100644 core/strategies/project.json create mode 100644 core/strategies/rollup.config.js create mode 100644 core/strategies/src/BaseImpl.ts create mode 100644 core/strategies/src/BaseState.ts create mode 100644 core/strategies/src/RecycleStateImpl.ts create mode 100644 core/strategies/src/SpaceStateImpl.ts create mode 100644 core/strategies/src/StateHub.ts create mode 100644 core/strategies/src/common.ts create mode 100644 core/strategies/src/index.ts create mode 100644 core/strategies/src/types/BaseLayout.types.ts create mode 100644 core/strategies/src/types/ListBaseDimensions.types.ts create mode 100644 core/strategies/src/types/ListDimensionsModel.types.ts create mode 100644 core/strategies/src/types/generic.types.ts create mode 100644 core/strategies/src/types/index.ts create mode 100644 core/strategies/src/types/scrollMetrics.types.ts create mode 100644 core/strategies/src/types/stateHub.types.ts create mode 100644 core/strategies/src/types/types.ts create mode 100644 core/strategies/src/utils.ts create mode 100644 core/strategies/tsconfig.json create mode 100644 core/strategies/tsconfig.lib.json create mode 100644 core/strategies/tsconfig.spec.json create mode 100644 core/strategies/vite.config.ts create mode 100644 core/types/.swcrc create mode 100644 core/types/README.md create mode 100644 core/types/eslint.config.js create mode 100644 core/types/package.json create mode 100644 core/types/project.json create mode 100644 core/types/rollup.config.js create mode 100644 core/types/src/Dimension.ts create mode 100644 core/types/src/ListDimensions.ts create mode 100644 core/types/src/ListDimensionsModel.ts create mode 100644 core/types/src/ListGroupDimensions.ts create mode 100644 core/types/src/OnEndReachedHelper.ts create mode 100644 core/types/src/baseDimensions.ts create mode 100644 core/types/src/generic.types.ts create mode 100644 core/types/src/index.ts create mode 100644 core/types/src/itemDimensions.ts create mode 100644 core/types/src/itemMeta.ts create mode 100644 core/types/src/layout.ts create mode 100644 core/types/src/list.ts create mode 100644 core/types/src/masonry.ts create mode 100644 core/types/src/pseudoListDimensions.ts create mode 100644 core/types/src/scrollMetrics.types.ts create mode 100644 core/types/tsconfig.json create mode 100644 core/types/tsconfig.lib.json create mode 100644 core/types/tsconfig.spec.json create mode 100644 core/types/vite.config.ts create mode 100644 core/utils/.swcrc create mode 100644 core/utils/README.md create mode 100644 core/utils/eslint.config.js create mode 100644 core/utils/package.json create mode 100644 core/utils/project.json create mode 100644 core/utils/rollup.config.js create mode 100644 core/utils/src/EnabledSelector.ts create mode 100644 core/utils/src/KeyIndexManager.ts create mode 100644 core/utils/src/ListSpy.tsx create mode 100644 core/utils/src/ListSpyUtils.ts create mode 100644 core/utils/src/StillnessHelper.ts create mode 100644 core/utils/src/exportedUtils.ts create mode 100644 core/utils/src/index.ts create mode 100644 core/utils/src/logger.ts create mode 100644 core/utils/tsconfig.json create mode 100644 core/utils/tsconfig.lib.json create mode 100644 core/utils/tsconfig.spec.json create mode 100644 core/utils/vite.config.ts create mode 100644 core/viewable/.swcrc create mode 100644 core/viewable/README.md create mode 100644 core/viewable/eslint.config.js create mode 100644 core/viewable/package.json create mode 100644 core/viewable/project.json create mode 100644 core/viewable/rollup.config.js create mode 100644 core/viewable/src/OnEndReachedHelper.ts create mode 100644 core/viewable/src/ViewabilityConfigTuples.ts create mode 100644 core/viewable/src/ViewabilityItemMeta.ts create mode 100644 core/viewable/src/ViewablityHelper.ts create mode 100644 core/viewable/src/__test__/ViewabilityConfigTuples.test.ts create mode 100644 core/viewable/src/__test__/viewabilityUtils.test.ts create mode 100644 core/viewable/src/common.ts create mode 100644 core/viewable/src/constants.ts create mode 100644 core/viewable/src/index.ts create mode 100644 core/viewable/src/types/generic.types.ts create mode 100644 core/viewable/src/types/index.ts create mode 100644 core/viewable/src/types/onEndReachedHelper.types.ts create mode 100644 core/viewable/src/types/scrollMetrics.types.ts create mode 100644 core/viewable/src/types/viewable.types.ts create mode 100644 core/viewable/src/viewabilityUtils.ts create mode 100644 core/viewable/tsconfig.json create mode 100644 core/viewable/tsconfig.lib.json create mode 100644 core/viewable/tsconfig.spec.json create mode 100644 core/viewable/vite.config.ts create mode 100644 examples/react-playground/.storybook/main.ts create mode 100644 examples/react-playground/.storybook/preview.ts create mode 100644 examples/react-playground/eslint.config.js create mode 100644 examples/react-playground/index.html create mode 100644 examples/react-playground/jest.config.ts create mode 100644 examples/react-playground/package.json create mode 100644 examples/react-playground/project.json create mode 100644 examples/react-playground/public/favicon.ico create mode 100644 examples/react-playground/src/app/List.stories.tsx create mode 100644 examples/react-playground/src/app/MasonryList.stories.tsx create mode 100644 examples/react-playground/src/app/OnEndReached.stories.tsx create mode 100644 examples/react-playground/src/app/app.module.css create mode 100644 examples/react-playground/src/app/app.spec.tsx create mode 100644 examples/react-playground/src/app/group.stories.tsx create mode 100644 examples/react-playground/src/app/index.tsx create mode 100644 examples/react-playground/src/assets/.gitkeep create mode 100644 examples/react-playground/src/main.tsx create mode 100644 examples/react-playground/src/styles.css create mode 100644 examples/react-playground/tsconfig.app.json create mode 100644 examples/react-playground/tsconfig.json create mode 100644 examples/react-playground/tsconfig.spec.json create mode 100644 examples/react-playground/tsconfig.storybook.json create mode 100644 examples/react-playground/vite.config.ts create mode 100644 model/dimension/.swcrc create mode 100644 model/dimension/README.md create mode 100644 model/dimension/eslint.config.js create mode 100644 model/dimension/package.json create mode 100644 model/dimension/project.json create mode 100644 model/dimension/rollup.config.js create mode 100644 model/dimension/src/Dimension.ts create mode 100644 model/dimension/src/common.ts create mode 100644 model/dimension/src/index.ts create mode 100644 model/dimension/src/types/Dimension.types.ts create mode 100644 model/dimension/src/types/ListGroupDimensions.types.ts create mode 100644 model/dimension/src/types/generic.types.ts create mode 100644 model/dimension/src/types/index.ts create mode 100644 model/dimension/tsconfig.json create mode 100644 model/dimension/tsconfig.lib.json create mode 100644 model/dimension/tsconfig.spec.json create mode 100644 model/dimension/vite.config.ts create mode 100644 model/group-dimensions/.swcrc create mode 100644 model/group-dimensions/README.md create mode 100644 model/group-dimensions/eslint.config.js create mode 100644 model/group-dimensions/package.json create mode 100644 model/group-dimensions/project.json create mode 100644 model/group-dimensions/rollup.config.js create mode 100644 model/group-dimensions/src/Inspector.ts create mode 100644 model/group-dimensions/src/ListGroupDimensions.ts create mode 100644 model/group-dimensions/src/__test__/ListGroupDimensions.test.ts create mode 100644 model/group-dimensions/src/__test__/reducer.test.ts create mode 100644 model/group-dimensions/src/common.ts create mode 100644 model/group-dimensions/src/index.ts create mode 100644 model/group-dimensions/src/state/index.ts create mode 100644 model/group-dimensions/src/state/middleware/fixBufferedRange.ts create mode 100644 model/group-dimensions/src/state/middleware/fixInitialBufferedRange.ts create mode 100644 model/group-dimensions/src/state/middleware/fixVisibleRange.ts create mode 100644 model/group-dimensions/src/types/Inspector.types.ts create mode 100644 model/group-dimensions/src/types/ListGroupDimensions.types.ts create mode 100644 model/group-dimensions/src/types/generic.types.ts create mode 100644 model/group-dimensions/src/types/index.ts create mode 100644 model/group-dimensions/src/types/scrollMetrics.types.ts create mode 100644 model/group-dimensions/tsconfig.json create mode 100644 model/group-dimensions/tsconfig.lib.json create mode 100644 model/group-dimensions/tsconfig.spec.json create mode 100644 model/group-dimensions/vite.config.ts create mode 100644 model/items-dimensions/.swcrc create mode 100644 model/items-dimensions/README.md create mode 100644 model/items-dimensions/eslint.config.js create mode 100644 model/items-dimensions/package.json create mode 100644 model/items-dimensions/project.json create mode 100644 model/items-dimensions/rollup.config.js create mode 100644 model/items-dimensions/src/ItemsDimensions.ts create mode 100644 model/items-dimensions/src/SortedItems.ts create mode 100644 model/items-dimensions/src/index.ts create mode 100644 model/items-dimensions/src/types/BaseDimensions.types.ts create mode 100644 model/items-dimensions/src/types/BaseLayout.types.ts create mode 100644 model/items-dimensions/src/types/ItemsDimensions.types.ts create mode 100644 model/items-dimensions/src/types/index.ts create mode 100644 model/items-dimensions/tsconfig.json create mode 100644 model/items-dimensions/tsconfig.lib.json create mode 100644 model/items-dimensions/tsconfig.spec.json create mode 100644 model/items-dimensions/vite.config.ts create mode 100644 model/list-dimensions/.swcrc create mode 100644 model/list-dimensions/README.md create mode 100644 model/list-dimensions/eslint.config.js create mode 100644 model/list-dimensions/package.json create mode 100644 model/list-dimensions/project.json create mode 100644 model/list-dimensions/rollup.config.js create mode 100644 model/list-dimensions/src/ListDimensions.ts create mode 100644 model/list-dimensions/src/__test__/ListDimensions.recycle.test.ts create mode 100644 model/list-dimensions/src/__test__/ListDimensions.space.test.ts create mode 100644 model/list-dimensions/src/__test__/reducer.test.ts create mode 100644 model/list-dimensions/src/index.ts create mode 100644 model/list-dimensions/src/state/index.ts create mode 100644 model/list-dimensions/src/state/middleware/fixBufferedRange.ts create mode 100644 model/list-dimensions/src/state/middleware/fixInitialBufferedRange.ts create mode 100644 model/list-dimensions/src/state/middleware/fixVisibleRange.ts create mode 100644 model/list-dimensions/src/types/generic.types.ts create mode 100644 model/list-dimensions/src/types/index.ts create mode 100644 model/list-dimensions/src/types/scrollMetrics.types.ts create mode 100644 model/list-dimensions/tsconfig.json create mode 100644 model/list-dimensions/tsconfig.lib.json create mode 100644 model/list-dimensions/tsconfig.spec.json create mode 100644 model/list-dimensions/vite.config.ts create mode 100644 model/masonry-dimensions/.swcrc create mode 100644 model/masonry-dimensions/README.md create mode 100644 model/masonry-dimensions/eslint.config.js create mode 100644 model/masonry-dimensions/package.json create mode 100644 model/masonry-dimensions/project.json create mode 100644 model/masonry-dimensions/rollup.config.js create mode 100644 model/masonry-dimensions/src/MasonryDimensionStrategy.ts create mode 100644 model/masonry-dimensions/src/MasonryDimensions.ts create mode 100644 model/masonry-dimensions/src/MasonryDimensionsModel.ts create mode 100644 model/masonry-dimensions/src/__test__/MasonryDimensions.test.ts create mode 100644 model/masonry-dimensions/src/common.ts create mode 100644 model/masonry-dimensions/src/index.ts create mode 100644 model/masonry-dimensions/src/types/Container.types.ts create mode 100644 model/masonry-dimensions/src/types/generic.types.ts create mode 100644 model/masonry-dimensions/src/types/index.ts create mode 100644 model/masonry-dimensions/src/types/masonry.types.ts create mode 100644 model/masonry-dimensions/src/types/scrollMetrics.types.ts create mode 100644 model/masonry-dimensions/src/utils.ts create mode 100644 model/masonry-dimensions/tsconfig.json create mode 100644 model/masonry-dimensions/tsconfig.lib.json create mode 100644 model/masonry-dimensions/tsconfig.spec.json create mode 100644 model/masonry-dimensions/vite.config.ts create mode 100644 model/pseudo-list-dimensions/.swcrc create mode 100644 model/pseudo-list-dimensions/README.md create mode 100644 model/pseudo-list-dimensions/eslint.config.js create mode 100644 model/pseudo-list-dimensions/package.json create mode 100644 model/pseudo-list-dimensions/project.json create mode 100644 model/pseudo-list-dimensions/rollup.config.js create mode 100644 model/pseudo-list-dimensions/src/PseudoListDimensions.ts create mode 100644 model/pseudo-list-dimensions/src/index.ts create mode 100644 model/pseudo-list-dimensions/tsconfig.json create mode 100644 model/pseudo-list-dimensions/tsconfig.lib.json create mode 100644 model/pseudo-list-dimensions/tsconfig.spec.json create mode 100644 model/pseudo-list-dimensions/vite.config.ts create mode 100644 tsconfig.base.json create mode 100644 ui/group/src/common/GroupDimensionItem.tsx rename ui/group/src/{react-native => common}/GroupList.tsx (58%) rename ui/group/src/{react => common}/GroupListItemImpl.tsx (57%) create mode 100644 ui/group/src/common/ListItem.tsx create mode 100644 ui/group/src/common/PortalContent.tsx create mode 100644 ui/group/src/common/clock.tsx rename ui/group/src/{react => common}/context.ts (73%) rename ui/group/src/{react/hooks/useMountItem.ts => common/hooks/useMountDimensionItem.ts} (68%) rename ui/group/src/{react => common}/hooks/useMountList.ts (55%) create mode 100644 ui/group/src/react-native/CompatComponent.tsx create mode 100644 ui/group/src/react-native/CompatListItem.tsx delete mode 100644 ui/group/src/react-native/GroupListItem.tsx delete mode 100644 ui/group/src/react-native/GroupListItemImpl.tsx delete mode 100644 ui/group/src/react-native/ListItem.tsx delete mode 100644 ui/group/src/react-native/PortalContent.tsx delete mode 100644 ui/group/src/react-native/context.ts delete mode 100644 ui/group/src/react-native/hooks/useMountItem.ts delete mode 100644 ui/group/src/react-native/hooks/useMountList.ts create mode 100644 ui/group/src/react-native/measure.ts create mode 100644 ui/group/src/react-native/types/ListGroup.types.ts create mode 100644 ui/group/src/react-native/types/PortalContext.types.ts create mode 100644 ui/group/src/react-native/types/compatListItem.ts create mode 100644 ui/group/src/react-native/types/index.ts create mode 100644 ui/group/src/react/CompatComponent.tsx create mode 100644 ui/group/src/react/CompatListItem.tsx delete mode 100644 ui/group/src/react/GroupList.tsx delete mode 100644 ui/group/src/react/GroupListItem.tsx delete mode 100644 ui/group/src/react/ListItem.tsx delete mode 100644 ui/group/src/react/PortalContent.tsx delete mode 100644 ui/group/src/react/types/GroupList.types.ts delete mode 100644 ui/group/src/react/types/GroupListItemImpl.types.ts delete mode 100644 ui/group/src/react/types/ListItem.types.ts create mode 100644 ui/group/src/react/types/compatListItem.ts create mode 100644 ui/group/src/types/GroupDimensionItem.types.ts delete mode 100644 ui/list/src/index.ts create mode 100644 ui/masonry/src/common/utils.ts create mode 100644 ui/masonry/src/types/index.ts create mode 100644 ui/masonry/src/types/list.ts create mode 100644 ui/masonry/src/types/masonryList.ts diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5c635067..1e85dc81 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -52,8 +52,8 @@ jobs: run: pnpm run build # https://dev.to/jmcdo29/automating-your-package-deployment-in-an-nx-monorepo-with-changeset-4em8 - - name: Modify Workspace File - run: sed "s/packages\//dist\/packages\//g" pnpm-workspace.yaml > pnpm-new.yaml && mv pnpm-new.yaml pnpm-workspace.yaml + # - name: Modify Workspace File + # run: sed "s/packages\//dist\/packages\//g" pnpm-workspace.yaml > pnpm-new.yaml && mv pnpm-new.yaml pnpm-workspace.yaml - name: Modify ui workspace run: sed "s/ui\//dist\/ui\//g" pnpm-workspace.yaml > pnpm-new.yaml && mv pnpm-new.yaml pnpm-workspace.yaml diff --git a/core/base-dimensions/.swcrc b/core/base-dimensions/.swcrc new file mode 100644 index 00000000..28e88ec1 --- /dev/null +++ b/core/base-dimensions/.swcrc @@ -0,0 +1,29 @@ +{ + "jsc": { + "target": "es2017", + "parser": { + "syntax": "typescript", + "decorators": true, + "dynamicImport": true + }, + "transform": { + "decoratorMetadata": true, + "legacyDecorator": true + }, + "keepClassNames": true, + "externalHelpers": true, + "loose": true + }, + "module": { + "type": "es6" + }, + "sourceMaps": true, + "exclude": [ + "jest.config.ts", + ".*\\.spec.tsx?$", + ".*\\.test.tsx?$", + "./src/jest-setup.ts$", + "./**/jest-setup.ts$", + ".*.js$" + ] +} diff --git a/core/base-dimensions/README.md b/core/base-dimensions/README.md new file mode 100644 index 00000000..bddfea1d --- /dev/null +++ b/core/base-dimensions/README.md @@ -0,0 +1,11 @@ +# base-dimensions + +This library was generated with [Nx](https://nx.dev). + +## Building + +Run `nx build base-dimensions` to build the library. + +## Running unit tests + +Run `nx test base-dimensions` to execute the unit tests via [Vitest](https://vitest.dev/). diff --git a/core/base-dimensions/eslint.config.js b/core/base-dimensions/eslint.config.js new file mode 100644 index 00000000..6e58c36a --- /dev/null +++ b/core/base-dimensions/eslint.config.js @@ -0,0 +1,22 @@ +const baseConfig = require('../../eslint.config.js'); + +module.exports = [ + ...baseConfig, + { + files: ['**/*.json'], + rules: { + '@nx/dependency-checks': [ + 'error', + { + ignoredFiles: [ + '{projectRoot}/eslint.config.{js,cjs,mjs}', + '{projectRoot}/vite.config.{js,ts,mjs,mts}', + ], + }, + ], + }, + languageOptions: { + parser: require('jsonc-eslint-parser'), + }, + }, +]; diff --git a/core/base-dimensions/package.json b/core/base-dimensions/package.json new file mode 100644 index 00000000..aa59e38f --- /dev/null +++ b/core/base-dimensions/package.json @@ -0,0 +1,13 @@ +{ + "name": "@infinite-list/base-dimensions", + "version": "0.0.1", + "dependencies": { + "@infinite-list/container": "workspace:*", + "@infinite-list/item-meta": "workspace:*", + "@infinite-list/utils": "workspace:*", + "@infinite-list/viewable": "workspace:*", + "@x-oasis/prefix-interval-tree": "^0.2.4" + }, + "main": "./index.cjs", + "module": "./index.js" +} diff --git a/core/base-dimensions/project.json b/core/base-dimensions/project.json new file mode 100644 index 00000000..3183baff --- /dev/null +++ b/core/base-dimensions/project.json @@ -0,0 +1,22 @@ +{ + "name": "base-dimensions", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "core/base-dimensions/src", + "projectType": "library", + "release": { + "version": { + "generatorOptions": { + "packageRoot": "dist/{projectRoot}", + "currentVersionResolver": "git-tag" + } + } + }, + "tags": [], + "targets": { + "nx-release-publish": { + "options": { + "packageRoot": "dist/{projectRoot}" + } + } + } +} diff --git a/core/base-dimensions/rollup.config.js b/core/base-dimensions/rollup.config.js new file mode 100644 index 00000000..f67f19b1 --- /dev/null +++ b/core/base-dimensions/rollup.config.js @@ -0,0 +1,18 @@ +const { withNx } = require('@nx/rollup/with-nx'); + +module.exports = withNx( + { + main: './src/index.ts', + outputPath: '../../dist/core/base-dimensions', + tsConfig: '../../tsconfig.json', + // tsConfig: './tsconfig.lib.json', + compiler: 'swc', + format: ['cjs', 'esm'], + assets: [{ input: '.', output: '.', glob: '*.md' }], + }, + { + // Provide additional rollup configuration here. See: https://rollupjs.org/configuration-options + // e.g. + // output: { sourcemap: true }, + } +); diff --git a/core/base-dimensions/src/BaseDimensions.ts b/core/base-dimensions/src/BaseDimensions.ts new file mode 100644 index 00000000..32394788 --- /dev/null +++ b/core/base-dimensions/src/BaseDimensions.ts @@ -0,0 +1,294 @@ +import BaseLayout from './BaseLayout'; +import { ItemMeta } from '@infinite-list/item-meta'; +import PrefixIntervalTree from '@x-oasis/prefix-interval-tree'; +import { ViewabilityConfigTuples } from '@infinite-list/viewable'; +import { log, KeyIndexManager } from '@infinite-list/utils'; +import { IBaseDimensions } from '@infinite-list/types'; + +import { + BaseDimensionsProps, + BoundInfo, + BoundInfoType, + GenericItemT, + ItemLayout, + KeysChangedType, + ScrollMetrics, +} from './types'; + +abstract class BaseDimensions + extends BaseLayout + implements IBaseDimensions +{ + _keyToMetaMap: Map> = new Map(); + _configTuple: ViewabilityConfigTuples; + + _onUpdateItemLayout?: Function; + _onUpdateIntervalTree?: Function; + + private _intervalTree: PrefixIntervalTree; + public keyIndexManager: KeyIndexManager; + + constructor(props: BaseDimensionsProps) { + super(props); + const { + onUpdateItemLayout, + onUpdateIntervalTree, + viewabilityConfig, + onViewableItemsChanged, + isIntervalTreeItems, + viewabilityConfigCallbackPairs, + } = props; + + this.keyIndexManager = new KeyIndexManager(); + this._onUpdateIntervalTree = onUpdateIntervalTree; + this._onUpdateItemLayout = onUpdateItemLayout; + this._intervalTree = this.createIntervalTree(); + this._configTuple = new ViewabilityConfigTuples({ + viewabilityConfig, + onViewableItemsChanged, + isListItem: isIntervalTreeItems, + viewabilityConfigCallbackPairs, + }); + } + + get intervalTree() { + return this._intervalTree; + } + + set intervalTree(intervalTree: PrefixIntervalTree) { + this._intervalTree = intervalTree; + } + + /** + * + * @param key + * @returns + * + * it returns different meaning index on different List condition + * 1: MasonryList: index in total data, maybe you should use `getKeyIndexInColumn` as a choice. + */ + getKeyIndex(key: string) { + // const index = this._keyToIndexMap.get(key); + const index = this.keyIndexManager.getKeyIndex(key); + if (typeof index === 'number') return index; + return -1; + } + + getIndexKey(index: number) { + return this.keyIndexManager.getIndexKey(index); + // return this._indexKeys[index]; + } + + getIndexKeyOffset(index: number, exclusive?: boolean) { + const listOffset = exclusive ? 0 : this.getContainerOffset(); + + log.info( + 'list ======', + index, + listOffset, + this.getContainerOffset(), + this._intervalTree.getHeap()[1], + this._intervalTree.sumUntil(index) + ); + if (typeof index === 'number') { + return ( + listOffset + + (index >= this._intervalTree.getMaxUsefulLength() + ? this._intervalTree.getHeap()[1] + : this._intervalTree.sumUntil(index)) + ); + } + return 0; + } + + getKeyItemOffset(key: string, exclusive?: boolean) { + const index = this.getKeyIndex(key); + return this.getIndexKeyOffset(index, exclusive); + } + + createIntervalTree() { + const options = {} as { + onUpdateItemLayout?: Function; + onUpdateIntervalTree?: Function; + }; + if (typeof this._onUpdateItemLayout === 'function') + options.onUpdateItemLayout = this._onUpdateItemLayout; + if (typeof this._onUpdateIntervalTree === 'function') + options.onUpdateIntervalTree = this._onUpdateIntervalTree; + return new PrefixIntervalTree(100, options); + } + + resetIntervalTree() { + this._intervalTree = this.createIntervalTree(); + return this._intervalTree; + } + + setIntervalTreeValue(index: number, length: number) { + this._intervalTree.set(index, length); + } + + _getKeyMeta(key: string) { + return this._keyToMetaMap.get(key); + } + + getFinalKeyMeta(key: string) { + return this.getKeyMeta(key); + } + + getKeyMeta(key: string) { + return this._getKeyMeta(key); + } + + _setKeyMeta(key: string, meta: ItemMeta) { + return this._keyToMetaMap.set(key, meta); + } + + setKeyMeta(key: string, meta: ItemMeta) { + return this._setKeyMeta(key, meta); + } + + resolveKeysChangedType( + keys: Array, + equal?: (index: number) => boolean + ) { + const oldLen = this.keyIndexManager.getIndexKeysLength(); + const newLen = keys.length; + + if (!oldLen && newLen) return KeysChangedType.Initial; + + if (oldLen > newLen) return KeysChangedType.Remove; + for (let index = 0; index < oldLen; index++) { + const currentKey = this.keyIndexManager.getIndexKey(index); + const nextKey = keys[index]; + + if (currentKey !== nextKey || !equal?.(index)) { + if (oldLen === newLen) return KeysChangedType.Reorder; + return KeysChangedType.Add; + } + } + + if (oldLen === newLen) return KeysChangedType.Equal; + return KeysChangedType.Append; + } + + getKeyItemLayout(key: string): ItemLayout | null | undefined { + const meta = this.getKeyMeta(key); + if (meta) { + return meta.getLayout(); + } + return null; + } + + getIndexItemLayout(index: number) { + const key = this.getIndexKey(index); + return this.getKeyItemLayout(key); + } + + getKeyItemLength(key: string) { + const layout = this.getKeyItemLayout(key); + return layout ? this._selectValue.selectLength(layout) : 0; + } + + getIndexItemLength(index: number) { + const key = this.getIndexKey(index); + return this.getKeyItemLength(key); + } + + setKeyItemLayout( + key: string, + layout: ItemLayout | number, + updateIntervalTree?: boolean + ) { + return this._setKeyItemLayout(key, layout, updateIntervalTree); + } + + setFinalKeyItemLayout( + key: string, + layout: ItemLayout | number, + updateIntervalTree?: boolean + ) { + return this._setKeyItemLayout(key, layout, updateIntervalTree); + } + + setIndexItemLayout( + index: number, + layout: ItemLayout, + updateIntervalTree?: boolean + ) { + const key = this.getIndexKey(index); + return this._setKeyItemLayout(key, layout, updateIntervalTree); + } + + setKeyItemLength(key: string, length: number, updateIntervalTree?: boolean) { + this._setKeyItemLayout(key, length, updateIntervalTree); + } + + setIndexItemLength( + index: number, + length: number, + updateIntervalTree?: boolean + ) { + const key = this.getIndexKey(index); + this._setKeyItemLayout(key, length, updateIntervalTree); + } + + /** + * + * @param key string, item key to find which one should be update + * @param info ItemLayout | number, if info is ItemLayout, then update meta.layout, + * or update length value of meta.layout + * @param updateIntervalTree boolean; default as true + */ + abstract _setKeyItemLayout( + key: string, + info: ItemLayout | number, + updateIntervalTree?: boolean + ): boolean; + + // abstract computeIndexRangeMeta( + // minOffset: number, + // maxOffset: number + // ): Array; + + greatestLowerBoundInfo(offset: number, exclusive?: boolean) { + const info: BoundInfo = { + type: BoundInfoType.OutOfBoundary, + index: -1, + }; + const containerLayout = this.getContainerLayout(); + const listOffset = + exclusive || !containerLayout + ? 0 + : this._selectValue.selectOffset(containerLayout); + if (offset < listOffset) return info; + const maxValue = this._intervalTree.getMaxValue(); + if (offset > listOffset + maxValue) { + info.index = -2; + return info; + } + const index = this._intervalTree.greatestLowerBound(offset - listOffset); + info.index = index; + info.type = BoundInfoType.Hover; + + return info; + } + + getConfigTuple() { + return this._configTuple; + } + + resolveConfigTuplesDefaultState(defaultValue?: boolean) { + return this._configTuple.getDefaultState(defaultValue); + } + + onUpdateItemsMetaChange( + itemsMeta: Array, + scrollMetrics: ScrollMetrics + ) { + this._configTuple.getViewabilityHelpers().forEach((helper) => { + helper.onUpdateItemsMeta(itemsMeta, scrollMetrics); + }); + } +} + +export default BaseDimensions; diff --git a/core/base-dimensions/src/BaseLayout.ts b/core/base-dimensions/src/BaseLayout.ts new file mode 100644 index 00000000..e30c5170 --- /dev/null +++ b/core/base-dimensions/src/BaseLayout.ts @@ -0,0 +1,170 @@ +import { + INITIAL_NUM_TO_RENDER, + MAX_TO_RENDER_PER_BATCH, + WINDOW_SIZE, + RECYCLER_RESERVED_BUFFER_PER_BATCH, + LENGTH_PRECISION, + ITEM_OFFSET_BEFORE_LAYOUT_READY, +} from './common'; +import { ItemLayout, FillingMode, BaseLayoutProps } from './types'; +import { Container } from '@infinite-list/container'; + +abstract class BaseLayout extends Container { + readonly _windowSize: number; + readonly _maxToRenderPerBatch: number; + private _initialNumToRender: number; + private _persistanceIndices: number[] = []; + private _stickyHeaderIndices: number[] = []; + private _reservedIndices: number[] = []; + private _recycleThreshold: number; + readonly _fillingMode: FillingMode; + readonly _lengthPrecision: number; + private _recycleBufferedCount: number; + private _itemOffsetBeforeLayoutReady: number; + + constructor(props: BaseLayoutProps) { + super(props); + const { + recycleThreshold, + persistanceIndices = [], + recycleEnabled = false, + stickyHeaderIndices = [], + windowSize = WINDOW_SIZE, + lengthPrecision = LENGTH_PRECISION, + recycleBufferedCount = RECYCLER_RESERVED_BUFFER_PER_BATCH, + maxToRenderPerBatch = MAX_TO_RENDER_PER_BATCH, + initialNumToRender = INITIAL_NUM_TO_RENDER, + itemOffsetBeforeLayoutReady = ITEM_OFFSET_BEFORE_LAYOUT_READY, + } = props; + + this._windowSize = windowSize; + this._fillingMode = recycleEnabled + ? FillingMode.RECYCLE + : FillingMode.SPACE; + this._recycleThreshold = recycleEnabled + ? recycleThreshold || maxToRenderPerBatch * 2 + : 0; + + // recycleBufferedCount should greater than 0. + this._recycleBufferedCount = Math.max(recycleBufferedCount, 1); + this._stickyHeaderIndices = stickyHeaderIndices; + this._maxToRenderPerBatch = maxToRenderPerBatch; + this._initialNumToRender = initialNumToRender; + this.persistanceIndices = persistanceIndices; + this.stickyHeaderIndices = stickyHeaderIndices; + this._lengthPrecision = lengthPrecision; + this._itemOffsetBeforeLayoutReady = itemOffsetBeforeLayoutReady; + } + + get initialNumToRender() { + return this._initialNumToRender; + } + + set initialNumToRender(num: number) { + this._initialNumToRender = num; + } + + get reservedIndices() { + return this._reservedIndices; + } + + get recycleBufferedCount() { + return this._recycleBufferedCount; + } + + get itemOffsetBeforeLayoutReady() { + return this._itemOffsetBeforeLayoutReady; + } + + updateReservedIndices() { + const indices = new Set( + ([] as number[]).concat(this.persistanceIndices, this.stickyHeaderIndices) + ); + this._reservedIndices = Array.from(indices).sort((a, b) => a - b); + } + + get persistanceIndices() { + return this._persistanceIndices; + } + + set persistanceIndices(indices: Array) { + this._persistanceIndices = indices.sort((a, b) => a - b); + this.updateReservedIndices(); + } + + get stickyHeaderIndices() { + return this._stickyHeaderIndices; + } + + set stickyHeaderIndices(indices: Array) { + this._stickyHeaderIndices = indices.sort((a, b) => a - b); + this.updateReservedIndices(); + } + + get recycleThreshold() { + return this._recycleThreshold; + } + + get windowSize() { + return this._windowSize; + } + + get maxToRenderPerBatch() { + return this._maxToRenderPerBatch; + } + + get fillingMode() { + return this._fillingMode; + } + + /** + * + * @returns 3 -> 1, 4 -> 2, 5 -> 2, 6 -> 3 + */ + getBufferSize() { + const size = Math.floor((this._windowSize - 1) / 2); + return Math.max(size, 1); + } + + /** + * + * @param minOffset + * @param maxOffset + * @param exclusive + */ + resolveOffsetRange( + minOffset: number, + maxOffset: number, + exclusive?: boolean + ) { + const containerOffset = this.getContainerOffset(); + + if (exclusive) return { minOffset, maxOffset }; + if (containerOffset > maxOffset) { + return { + minOffset: minOffset - containerOffset, + maxOffset: maxOffset - containerOffset, + }; + } + + return { + minOffset: Math.max(minOffset - containerOffset, 0), + maxOffset: Math.max(maxOffset - containerOffset, 0), + }; + } + + normalizeLengthNumber(length: number) { + return +length.toFixed(this._lengthPrecision); + } + + normalizeLengthInfo(info: ItemLayout) { + const { width, height, ...rest } = info; + return { + width: this.normalizeLengthNumber(width), + height: this.normalizeLengthNumber(height), + ...rest, + }; + } +} + +export default BaseLayout; diff --git a/core/base-dimensions/src/common.ts b/core/base-dimensions/src/common.ts new file mode 100644 index 00000000..10336fc1 --- /dev/null +++ b/core/base-dimensions/src/common.ts @@ -0,0 +1,6 @@ +export const INITIAL_NUM_TO_RENDER = 10; +export const MAX_TO_RENDER_PER_BATCH = 10; +export const WINDOW_SIZE = 5; +export const RECYCLER_RESERVED_BUFFER_PER_BATCH = 20; +export const LENGTH_PRECISION = 4; +export const ITEM_OFFSET_BEFORE_LAYOUT_READY = -4000; diff --git a/core/base-dimensions/src/index.ts b/core/base-dimensions/src/index.ts new file mode 100644 index 00000000..85e6e8f1 --- /dev/null +++ b/core/base-dimensions/src/index.ts @@ -0,0 +1,3 @@ +export { default as BaseDimensions } from './BaseDimensions'; +export { default as BaseLayout } from './BaseLayout'; +export * from './types'; diff --git a/core/base-dimensions/src/types/BaseDimensions.types.ts b/core/base-dimensions/src/types/BaseDimensions.types.ts new file mode 100644 index 00000000..b96c3eb9 --- /dev/null +++ b/core/base-dimensions/src/types/BaseDimensions.types.ts @@ -0,0 +1,38 @@ +import { BaseLayoutProps } from './BaseLayout.types'; +import { + OnViewableItemsChanged, + ViewabilityConfig, + ViewabilityConfigCallbackPairs, +} from '@infinite-list/viewable'; +// import ListDimensions from '../ListDimensions'; +// import ListDimensionsModel from '../ListDimensionsModel'; +// import Dimension from '../Dimension'; +// import { GenericItemT } from './generic.types'; +// import { ListGroupChildDimensionsContainer } from './ListDimensionsModel.types'; +// import ListDimensions from '../ListDimensions'; +// import ListGroupDimensions from '../ListGroupDimensions'; +// import Dimension from '../Dimension'; + +export interface BaseDimensionsProps extends BaseLayoutProps { + ignoredToPerBatch?: boolean; + + lengthPrecision?: number; + recyclerType?: string; + + onUpdateItemLayout?: Function; + onUpdateIntervalTree?: Function; + isIntervalTreeItems?: boolean; + viewabilityConfig?: ViewabilityConfig; + onViewableItemsChanged?: OnViewableItemsChanged; + viewabilityConfigCallbackPairs?: ViewabilityConfigCallbackPairs; +} + +export enum KeysChangedType { + 'Initial' = 'initial', + 'Equal' = 'equal', + 'Remove' = 'remove', + 'Append' = 'append', + 'Add' = 'add', + 'Reorder' = 'reorder', + 'Idle' = 'idle', +} diff --git a/core/base-dimensions/src/types/BaseLayout.types.ts b/core/base-dimensions/src/types/BaseLayout.types.ts new file mode 100644 index 00000000..6c95143e --- /dev/null +++ b/core/base-dimensions/src/types/BaseLayout.types.ts @@ -0,0 +1,39 @@ +import { BaseContainerProps } from '@infinite-list/container'; + +export enum BoundInfoType { + 'Hover' = 'hover', + 'OutOfBoundary' = 'outOfBoundary', +} + +export type BoundInfo = { + type: BoundInfoType; + index: number; +}; + +export type ItemLayout = { + x: number; + y: number; + width: number; + height: number; +}; + +export enum FillingMode { + SPACE = 'space', + RECYCLE = 'recycle', +} + +export interface BaseLayoutProps extends BaseContainerProps { + windowSize?: number; + maxToRenderPerBatch?: number; + initialNumToRender?: number; + persistanceIndices?: Array; + stickyHeaderIndices?: Array; + + recycleThreshold?: number; + recycleBufferedCount?: number; + recycleEnabled?: boolean; + + lengthPrecision?: number; + + itemOffsetBeforeLayoutReady?: number; +} diff --git a/core/base-dimensions/src/types/generic.types.ts b/core/base-dimensions/src/types/generic.types.ts new file mode 100644 index 00000000..297f824d --- /dev/null +++ b/core/base-dimensions/src/types/generic.types.ts @@ -0,0 +1,4 @@ +export type GenericItemT = { + [key: string]: any; +}; +export type GenericStateResult = any; diff --git a/core/base-dimensions/src/types/index.ts b/core/base-dimensions/src/types/index.ts new file mode 100644 index 00000000..dce43e40 --- /dev/null +++ b/core/base-dimensions/src/types/index.ts @@ -0,0 +1,4 @@ +export * from './BaseDimensions.types'; +export * from './BaseLayout.types'; +export * from './generic.types'; +export * from './scrollMetrics.types'; diff --git a/core/base-dimensions/src/types/scrollMetrics.types.ts b/core/base-dimensions/src/types/scrollMetrics.types.ts new file mode 100644 index 00000000..9b779202 --- /dev/null +++ b/core/base-dimensions/src/types/scrollMetrics.types.ts @@ -0,0 +1,50 @@ +export interface ScrollRectangle { + left: number; + top: number; + bottom: number; + right: number; +} + +export interface ScrollPoint { + x: number; + y: number; +} + +export interface ScrollVelocity { + x: number; + y: number; +} + +export interface ScrollSize { + height: number; + width: number; +} +export type ScrollEventMetrics = { + contentInset: ScrollRectangle; + contentOffset: ScrollPoint; + contentSize: ScrollSize; + layoutMeasurement: ScrollSize; + velocity?: ScrollVelocity | undefined; + zoomScale: number; + /** + * @platform ios + */ + targetContentOffset?: ScrollPoint | undefined; +}; + +export type ScrollMetrics = { + contentLength: number; + offset: number; + visibleLength: number; + + // not used + dOffset?: number; + dt?: number; + timestamp?: number; + velocity?: number; +}; + +export type ContentSize = { + width: number; + height: number; +}; diff --git a/core/base-dimensions/tsconfig.json b/core/base-dimensions/tsconfig.json new file mode 100644 index 00000000..8d9d5912 --- /dev/null +++ b/core/base-dimensions/tsconfig.json @@ -0,0 +1,22 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "commonjs", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ] +} diff --git a/core/base-dimensions/tsconfig.lib.json b/core/base-dimensions/tsconfig.lib.json new file mode 100644 index 00000000..ce3b531c --- /dev/null +++ b/core/base-dimensions/tsconfig.lib.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "declaration": true, + "types": ["node"] + }, + "include": ["src/**/*.ts"], + "exclude": ["vite.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"] +} diff --git a/core/base-dimensions/tsconfig.spec.json b/core/base-dimensions/tsconfig.spec.json new file mode 100644 index 00000000..3c002c21 --- /dev/null +++ b/core/base-dimensions/tsconfig.spec.json @@ -0,0 +1,26 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "types": [ + "vitest/globals", + "vitest/importMeta", + "vite/client", + "node", + "vitest" + ] + }, + "include": [ + "vite.config.ts", + "vitest.config.ts", + "src/**/*.test.ts", + "src/**/*.spec.ts", + "src/**/*.test.tsx", + "src/**/*.spec.tsx", + "src/**/*.test.js", + "src/**/*.spec.js", + "src/**/*.test.jsx", + "src/**/*.spec.jsx", + "src/**/*.d.ts" + ] +} diff --git a/core/base-dimensions/vite.config.ts b/core/base-dimensions/vite.config.ts new file mode 100644 index 00000000..c356c17c --- /dev/null +++ b/core/base-dimensions/vite.config.ts @@ -0,0 +1,28 @@ +import { defineConfig } from 'vite'; + +import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin'; +import { nxCopyAssetsPlugin } from '@nx/vite/plugins/nx-copy-assets.plugin'; + +export default defineConfig({ + root: __dirname, + cacheDir: '../../node_modules/.vite/core/base-dimensions', + + plugins: [nxViteTsPaths(), nxCopyAssetsPlugin(['*.md'])], + + // Uncomment this if you are using workers. + // worker: { + // plugins: [ nxViteTsPaths() ], + // }, + + test: { + watch: false, + globals: true, + environment: 'node', + include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], + reporters: ['default'], + coverage: { + reportsDirectory: '../../coverage/core/base-dimensions', + provider: 'v8', + }, + }, +}); diff --git a/core/container/.swcrc b/core/container/.swcrc new file mode 100644 index 00000000..28e88ec1 --- /dev/null +++ b/core/container/.swcrc @@ -0,0 +1,29 @@ +{ + "jsc": { + "target": "es2017", + "parser": { + "syntax": "typescript", + "decorators": true, + "dynamicImport": true + }, + "transform": { + "decoratorMetadata": true, + "legacyDecorator": true + }, + "keepClassNames": true, + "externalHelpers": true, + "loose": true + }, + "module": { + "type": "es6" + }, + "sourceMaps": true, + "exclude": [ + "jest.config.ts", + ".*\\.spec.tsx?$", + ".*\\.test.tsx?$", + "./src/jest-setup.ts$", + "./**/jest-setup.ts$", + ".*.js$" + ] +} diff --git a/core/container/README.md b/core/container/README.md new file mode 100644 index 00000000..1b1952d1 --- /dev/null +++ b/core/container/README.md @@ -0,0 +1,11 @@ +# container + +This library was generated with [Nx](https://nx.dev). + +## Building + +Run `nx build container` to build the library. + +## Running unit tests + +Run `nx test container` to execute the unit tests via [Vitest](https://vitest.dev/). diff --git a/core/container/eslint.config.js b/core/container/eslint.config.js new file mode 100644 index 00000000..6e58c36a --- /dev/null +++ b/core/container/eslint.config.js @@ -0,0 +1,22 @@ +const baseConfig = require('../../eslint.config.js'); + +module.exports = [ + ...baseConfig, + { + files: ['**/*.json'], + rules: { + '@nx/dependency-checks': [ + 'error', + { + ignoredFiles: [ + '{projectRoot}/eslint.config.{js,cjs,mjs}', + '{projectRoot}/vite.config.{js,ts,mjs,mts}', + ], + }, + ], + }, + languageOptions: { + parser: require('jsonc-eslint-parser'), + }, + }, +]; diff --git a/core/container/package.json b/core/container/package.json new file mode 100644 index 00000000..d0e317c3 --- /dev/null +++ b/core/container/package.json @@ -0,0 +1,9 @@ +{ + "name": "@infinite-list/container", + "version": "0.0.1", + "dependencies": { + "@x-oasis/select-value": "^0.1.14" + }, + "main": "./index.cjs", + "module": "./index.js" +} diff --git a/core/container/project.json b/core/container/project.json new file mode 100644 index 00000000..864156df --- /dev/null +++ b/core/container/project.json @@ -0,0 +1,22 @@ +{ + "name": "container", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "core/container/src", + "projectType": "library", + "release": { + "version": { + "generatorOptions": { + "packageRoot": "dist/{projectRoot}", + "currentVersionResolver": "git-tag" + } + } + }, + "tags": [], + "targets": { + "nx-release-publish": { + "options": { + "packageRoot": "dist/{projectRoot}" + } + } + } +} diff --git a/core/container/rollup.config.js b/core/container/rollup.config.js new file mode 100644 index 00000000..7f3eac05 --- /dev/null +++ b/core/container/rollup.config.js @@ -0,0 +1,17 @@ +const { withNx } = require('@nx/rollup/with-nx'); + +module.exports = withNx( + { + main: './src/index.ts', + outputPath: '../../dist/core/container', + tsConfig: './tsconfig.lib.json', + compiler: 'swc', + format: ['cjs', 'esm'], + assets: [{ input: '.', output: '.', glob: '*.md' }], + }, + { + // Provide additional rollup configuration here. See: https://rollupjs.org/configuration-options + // e.g. + // output: { sourcemap: true }, + } +); diff --git a/core/container/src/BaseContainer.ts b/core/container/src/BaseContainer.ts new file mode 100644 index 00000000..4c2ed475 --- /dev/null +++ b/core/container/src/BaseContainer.ts @@ -0,0 +1,76 @@ +import SelectValue, { + selectHorizontalValue, + selectVerticalValue, +} from '@x-oasis/select-value'; +import { DEFAULT_LAYOUT } from './common'; + +import { BaseContainerProps, ContainerLayoutGetter } from './types'; +import { ItemLayout } from '@infinite-list/types'; + +class BaseContainer { + public id: string; + private _layout: ItemLayout = DEFAULT_LAYOUT; + private _getContainerLayout?: ContainerLayoutGetter; + private _horizontal: boolean; + public _selectValue: SelectValue; + private _canIUseRIC: boolean; + + constructor(props: BaseContainerProps) { + const { id, canIUseRIC, horizontal = false, getContainerLayout } = props; + + this.id = id; + this._canIUseRIC = !!canIUseRIC; + this._horizontal = !!horizontal; + this._selectValue = horizontal + ? selectHorizontalValue + : selectVerticalValue; + this._getContainerLayout = getContainerLayout; + } + + getHorizontal() { + return this._horizontal; + } + + get horizontal() { + return this._horizontal; + } + + getContainerLayout() { + if (typeof this._getContainerLayout === 'function') + return this._getContainerLayout(); + if (this._layout) return this._layout; + return null; + } + + getLayout() { + return this._layout; + } + + setLayout(layout: ItemLayout) { + this._layout = layout; + } + + getContainerOffset() { + const layout = this.getContainerLayout(); + if (!layout) return 0; + return this._selectValue.selectOffset(layout); + } + + /** + * + * @param layout container layout + */ + setContainerLayout(layout: ItemLayout) { + this._layout = layout; + } + + getSelectValue() { + return this._selectValue; + } + + get canIUseRIC() { + return this._canIUseRIC; + } +} + +export default BaseContainer; diff --git a/core/container/src/common.ts b/core/container/src/common.ts new file mode 100644 index 00000000..e599f68c --- /dev/null +++ b/core/container/src/common.ts @@ -0,0 +1,6 @@ +export const DEFAULT_LAYOUT = { + x: 0, + y: 0, + height: 0, + width: 0, +}; diff --git a/core/container/src/index.ts b/core/container/src/index.ts new file mode 100644 index 00000000..d76ab244 --- /dev/null +++ b/core/container/src/index.ts @@ -0,0 +1,2 @@ +export { default as Container } from './BaseContainer'; +export * from './types'; diff --git a/core/container/src/types/container.ts b/core/container/src/types/container.ts new file mode 100644 index 00000000..cc3c83e2 --- /dev/null +++ b/core/container/src/types/container.ts @@ -0,0 +1,14 @@ +export type ContainerLayoutGetter = () => { + x: number; + y: number; + height: number; + width: number; +}; + +export type BaseContainerProps = { + id: string; + horizontal?: boolean; + getContainerLayout?: ContainerLayoutGetter; + + canIUseRIC?: boolean; +}; diff --git a/core/container/src/types/index.ts b/core/container/src/types/index.ts new file mode 100644 index 00000000..85ee15b6 --- /dev/null +++ b/core/container/src/types/index.ts @@ -0,0 +1 @@ +export * from './container'; diff --git a/core/container/tsconfig.json b/core/container/tsconfig.json new file mode 100644 index 00000000..192adc36 --- /dev/null +++ b/core/container/tsconfig.json @@ -0,0 +1,23 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "commonjs", + "moduleResolution": "node", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ] +} diff --git a/core/container/tsconfig.lib.json b/core/container/tsconfig.lib.json new file mode 100644 index 00000000..ce3b531c --- /dev/null +++ b/core/container/tsconfig.lib.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "declaration": true, + "types": ["node"] + }, + "include": ["src/**/*.ts"], + "exclude": ["vite.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"] +} diff --git a/core/container/tsconfig.spec.json b/core/container/tsconfig.spec.json new file mode 100644 index 00000000..3c002c21 --- /dev/null +++ b/core/container/tsconfig.spec.json @@ -0,0 +1,26 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "types": [ + "vitest/globals", + "vitest/importMeta", + "vite/client", + "node", + "vitest" + ] + }, + "include": [ + "vite.config.ts", + "vitest.config.ts", + "src/**/*.test.ts", + "src/**/*.spec.ts", + "src/**/*.test.tsx", + "src/**/*.spec.tsx", + "src/**/*.test.js", + "src/**/*.spec.js", + "src/**/*.test.jsx", + "src/**/*.spec.jsx", + "src/**/*.d.ts" + ] +} diff --git a/core/container/vite.config.ts b/core/container/vite.config.ts new file mode 100644 index 00000000..144fca62 --- /dev/null +++ b/core/container/vite.config.ts @@ -0,0 +1,28 @@ +import { defineConfig } from 'vite'; + +import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin'; +import { nxCopyAssetsPlugin } from '@nx/vite/plugins/nx-copy-assets.plugin'; + +export default defineConfig({ + root: __dirname, + cacheDir: '../../node_modules/.vite/core/container', + + plugins: [nxViteTsPaths(), nxCopyAssetsPlugin(['*.md'])], + + // Uncomment this if you are using workers. + // worker: { + // plugins: [ nxViteTsPaths() ], + // }, + + test: { + watch: false, + globals: true, + environment: 'node', + include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], + reporters: ['default'], + coverage: { + reportsDirectory: '../../coverage/core/container', + provider: 'v8', + }, + }, +}); diff --git a/core/dimensions-model/.swcrc b/core/dimensions-model/.swcrc new file mode 100644 index 00000000..28e88ec1 --- /dev/null +++ b/core/dimensions-model/.swcrc @@ -0,0 +1,29 @@ +{ + "jsc": { + "target": "es2017", + "parser": { + "syntax": "typescript", + "decorators": true, + "dynamicImport": true + }, + "transform": { + "decoratorMetadata": true, + "legacyDecorator": true + }, + "keepClassNames": true, + "externalHelpers": true, + "loose": true + }, + "module": { + "type": "es6" + }, + "sourceMaps": true, + "exclude": [ + "jest.config.ts", + ".*\\.spec.tsx?$", + ".*\\.test.tsx?$", + "./src/jest-setup.ts$", + "./**/jest-setup.ts$", + ".*.js$" + ] +} diff --git a/core/dimensions-model/README.md b/core/dimensions-model/README.md new file mode 100644 index 00000000..c99a5479 --- /dev/null +++ b/core/dimensions-model/README.md @@ -0,0 +1,11 @@ +# dimensions-model + +This library was generated with [Nx](https://nx.dev). + +## Building + +Run `nx build dimensions-model` to build the library. + +## Running unit tests + +Run `nx test dimensions-model` to execute the unit tests via [Vitest](https://vitest.dev/). diff --git a/core/dimensions-model/eslint.config.js b/core/dimensions-model/eslint.config.js new file mode 100644 index 00000000..6e58c36a --- /dev/null +++ b/core/dimensions-model/eslint.config.js @@ -0,0 +1,22 @@ +const baseConfig = require('../../eslint.config.js'); + +module.exports = [ + ...baseConfig, + { + files: ['**/*.json'], + rules: { + '@nx/dependency-checks': [ + 'error', + { + ignoredFiles: [ + '{projectRoot}/eslint.config.{js,cjs,mjs}', + '{projectRoot}/vite.config.{js,ts,mjs,mts}', + ], + }, + ], + }, + languageOptions: { + parser: require('jsonc-eslint-parser'), + }, + }, +]; diff --git a/core/dimensions-model/package.json b/core/dimensions-model/package.json new file mode 100644 index 00000000..851cda9a --- /dev/null +++ b/core/dimensions-model/package.json @@ -0,0 +1,16 @@ +{ + "name": "@infinite-list/dimensions-model", + "version": "0.0.1", + "dependencies": { + "@infinite-list/base-dimensions": "workspace:*", + "@infinite-list/item-meta": "workspace:*", + "@infinite-list/types": "workspace:*", + "@infinite-list/viewable": "workspace:*", + "@x-oasis/default-boolean-value": "^0.1.14", + "@x-oasis/layout-equal": "^0.1.16", + "@x-oasis/prefix-interval-tree": "^0.2.4", + "@x-oasis/recycler": "^0.1.37" + }, + "main": "./index.cjs", + "module": "./index.js" +} diff --git a/core/dimensions-model/project.json b/core/dimensions-model/project.json new file mode 100644 index 00000000..4dd27e90 --- /dev/null +++ b/core/dimensions-model/project.json @@ -0,0 +1,22 @@ +{ + "name": "dimensions-model", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "core/dimensions-model/src", + "projectType": "library", + "release": { + "version": { + "generatorOptions": { + "packageRoot": "dist/{projectRoot}", + "currentVersionResolver": "git-tag" + } + } + }, + "tags": [], + "targets": { + "nx-release-publish": { + "options": { + "packageRoot": "dist/{projectRoot}" + } + } + } +} diff --git a/core/dimensions-model/rollup.config.js b/core/dimensions-model/rollup.config.js new file mode 100644 index 00000000..d4c45217 --- /dev/null +++ b/core/dimensions-model/rollup.config.js @@ -0,0 +1,17 @@ +const { withNx } = require('@nx/rollup/with-nx'); + +module.exports = withNx( + { + main: './src/index.ts', + outputPath: '../../dist/core/dimensions-model', + tsConfig: './tsconfig.lib.json', + compiler: 'swc', + format: ['cjs', 'esm'], + assets: [{ input: '.', output: '.', glob: '*.md' }], + }, + { + // Provide additional rollup configuration here. See: https://rollupjs.org/configuration-options + // e.g. + // output: { sourcemap: true }, + } +); diff --git a/core/dimensions-model/src/ListDimensionsModel.ts b/core/dimensions-model/src/ListDimensionsModel.ts new file mode 100644 index 00000000..e21e10b4 --- /dev/null +++ b/core/dimensions-model/src/ListDimensionsModel.ts @@ -0,0 +1,623 @@ +import PrefixIntervalTree from '@x-oasis/prefix-interval-tree'; +import layoutEqual from '@x-oasis/layout-equal'; +import defaultBooleanValue from '@x-oasis/default-boolean-value'; +import { BaseDimensions } from '@infinite-list/base-dimensions'; +import { ItemMeta } from '@infinite-list/item-meta'; +import { log } from '@infinite-list/utils'; +import { + DEFAULT_ITEM_APPROXIMATE_LENGTH, + DEFAULT_RECYCLER_TYPE, + LAYOUT_EQUAL_CORRECTION_VALUE, +} from './common'; + +import { + GetItemLayout, + GetItemSeparatorLength, + KeyExtractor, + ListDimensionsModelProps, + ListDimensionsModelContainer, + GenericItemT, + OnListDimensionsModelDataChanged, +} from './types'; +import { IndexInfo } from '@infinite-list/item-meta'; +import { ItemLayout, KeysChangedType } from '@infinite-list/base-dimensions'; +import { IListDimensionsModel } from '@infinite-list/types'; + +class ListDimensionsModel< + ItemT extends GenericItemT = GenericItemT, + ExtraInfo extends {} = {} + > + extends BaseDimensions + implements IListDimensionsModel +{ + private _data: Array = []; + private _initialData: Array = []; + private _onDataChanged?: OnListDimensionsModelDataChanged; + + private _keyExtractor: KeyExtractor; + private _getItemLayout?: GetItemLayout; + private _getItemSeparatorLength?: GetItemSeparatorLength; + + private _itemToKeyMap: WeakMap = new WeakMap(); + + private _container: ListDimensionsModelContainer; + private _offsetInListGroup: number; + private _anchorKey: string; + + private _itemApproximateLength: number; + private _approximateMode: boolean; + private _recyclerType: string; + private _isFixedLength: boolean; + + public extraInfo: ExtraInfo; + + constructor(props: Omit, 'store'>) { + super({ + ...props, + isIntervalTreeItems: true, + }); + const { + recyclerType = DEFAULT_RECYCLER_TYPE, + recycleEnabled, + data = [], + anchorKey, + keyExtractor, + getItemLayout, + container, + isFixedLength = true, + getItemSeparatorLength, + useItemApproximateLength, + manuallyApplyInitialData = false, + onListDimensionsModelDataChanged, + itemApproximateLength = DEFAULT_ITEM_APPROXIMATE_LENGTH, + } = props; + + this.extraInfo = {} as ExtraInfo; + this._anchorKey = anchorKey || this.id; + this._keyExtractor = keyExtractor; + this._recyclerType = recyclerType; + this._itemApproximateLength = itemApproximateLength || 0; + this._getItemLayout = getItemLayout; + this._isFixedLength = isFixedLength; + this._onDataChanged = onListDimensionsModelDataChanged; + + // `_approximateMode` is enabled on default + this._approximateMode = recycleEnabled + ? defaultBooleanValue( + useItemApproximateLength, + typeof this._getItemLayout !== 'function' + ) + : false; + + this._getItemSeparatorLength = getItemSeparatorLength; + this._container = container; + this._offsetInListGroup = 0; + this._initialData = data; + + if (!manuallyApplyInitialData) { + this.applyInitialData(); + } + } + + get recyclerType() { + return this._recyclerType; + } + + get length() { + return this._data.length; + } + + set offsetInListGroup(offset: number) { + this._offsetInListGroup = offset; + } + + get anchorKey() { + return this._anchorKey; + } + + applyInitialData() { + this.setData(this._initialData); + } + + override getContainerOffset(): number { + // 临时方案,只有当是listGroup时才会设置这个值 + if (this._offsetInListGroup) { + return this._offsetInListGroup; + } + const layout = this.getContainerLayout(); + if (!layout) return 0; + return this._selectValue.selectOffset(layout); + } + + getData() { + return this._data; + } + + getTotalLength() { + return this.intervalTree.getMaxUsefulLength() + ? this.intervalTree.getHeap()[1] + : // : INVALID_LENGTH; + 0; + } + + getReflowItemsLength() { + return this.intervalTree.getMaxUsefulLength(); + } + + getIndexItemMeta(index: number) { + const item = this._data[index]; + return this.getItemMeta(item, index); + } + + override getKeyMeta(key: string) { + const meta = this._getKeyMeta(key); + return meta; + } + + override getFinalKeyMeta(key: string) { + return this.getKeyMeta(key); + } + + getFinalItemMeta(item: ItemT) { + const key = this.getFinalItemKey(item); + if (key) return this.getKeyMeta(key); + return null; + } + + getItemMeta(item: ItemT, index: number) { + const key = this.getItemKey(item, index); + if (key) return this.getKeyMeta(key); + return null; + } + + /** + * Basically, List item meta should be created first or has some error condition + * @param key ItemMeta key + * @returns ItemMeta + */ + ensureKeyMeta(key: string) { + let meta = this.getKeyMeta(key); + if (meta) return meta; + const index = this.getKeyIndex(key); + + meta = this.createItemMeta(key, this.getData(), index); + + const data = this.getData(); + const len = data.length; + + if (meta.getLayout()) { + // 最后一个不包含separatorLength + if (index === len - 1) { + meta.setUseSeparatorLength(true); + } else { + meta.setUseSeparatorLength(false); + } + + const length = meta.getFinalItemLength(); + // const itemLength = this._selectValue.selectLength(meta.getLayout()); + // const separatorLength = meta.getSeparatorLength(); + + // // 最后一个不包含separatorLength + // const length = + // index === len - 1 ? itemLength : itemLength + separatorLength; + this.intervalTree.set(index, length); + } + + this.setKeyMeta(key, meta); + + return meta; + } + + setItemMeta(item: ItemT, index: number, meta: ItemMeta) { + const key = this.getItemKey(item, index); + if (key) { + this.setKeyMeta(key, meta); + } + } + + getItemKey(item: ItemT, index?: number) { + const cachedKey = this._itemToKeyMap.get(item); + if (cachedKey) return cachedKey; + if (!item) return null; + return this._keyExtractor(item, index); + } + + getFinalItemKey(item: ItemT) { + const cachedKey = this._itemToKeyMap.get(item); + if (cachedKey) return cachedKey; + return null; + } + + hasUnLayoutItems() { + return this.getReflowItemsLength() < this._data.length; + } + + // the hook method to trigger ListDimensions or ListGroupDimension recalculate + // after item layout updated. + triggerOwnerRecalculateLayout() { + if (this._container) this._container.onItemLayoutChanged(); + } + + // _recycleEnabled() { + // if (this.fillingMode !== FillingMode.RECYCLE) return false; + // return this.getReflowItemsLength() >= this.initialNumToRender; + // } + + // 一旦当前的length 发生了变化,判断一下自己总的高度是否变化,如果 + // 变了,那么就去更新 + /** + * In RN, layout change will not trigger `updateScrollMetrics`, because it's replaced with + * onContentSizeChanged. + */ + override setIntervalTreeValue(index: number, length: number) { + this.intervalTree.set(index, length); + this.triggerOwnerRecalculateLayout(); + } + + applyIntervalTreeUpdate(intervalTree: PrefixIntervalTree) { + intervalTree.applyUpdate(); + this.triggerOwnerRecalculateLayout(); + } + + // replaceIntervalTree(intervalTree: PrefixIntervalTree) { + // const oldLength = this.intervalTree.getHeap()[1]; + // this.intervalTree = intervalTree; + // const nextLength = intervalTree.getHeap()[1]; + + // if (oldLength !== nextLength) { + // this.triggerOwnerRecalculateLayout(); + // } + // } + + createItemMeta(key: string, data: Array, index: number) { + const isInitialItem = index < this.initialNumToRender; + + const meta = ItemMeta.spawn({ + key, + owner: this, + isListItem: true, + isInitialItem, + recyclerType: this._recyclerType, + canIUseRIC: this.canIUseRIC, + }); + + if (typeof this._getItemLayout === 'function') { + const { length } = this._getItemLayout(data, index); + // only List with getItemLayout has default layout value + meta.setLayout({ x: 0, y: 0, height: 0, width: 0 }); + this._selectValue.setLength(meta.getLayout()!, length); + if (this._isFixedLength) meta.isApproximateLayout = false; + } + + if (typeof this._getItemSeparatorLength === 'function') { + const { length } = this._getItemSeparatorLength(data, index); + meta.setSeparatorLength(length); + } + + if ( + this._approximateMode && + meta.isApproximateLayout && + !meta.getLayout() + ) { + meta.setLayout({ x: 0, y: 0, height: 0, width: 0 }); + this._selectValue.setLength( + meta.getLayout()!, + this._itemApproximateLength + ); + + return meta; + } + + return meta; + } + + hasKey(key: string) { + return this.keyIndexManager.hasKey(key); + } + + performKeyOperationGuard(key: string) { + if (this.keyIndexManager.hasKey(key)) return true; + return false; + } + + /** + * Data change will trigger `state` update for one times. + */ + setData(data: Array) { + const changedType = this._setData(data); + + if (changedType === KeysChangedType.Equal) return KeysChangedType.Equal; + + // If data is empty, then trigger onEndReached one time.. + // TODO: maybe there is a bug... if the list the beneath viewport, the trigger + // may not required... + if (!data.length && this.initialNumToRender) { + this._container.onEndReachedHelper.attemptToHandleOnEndReachedBatchinator.schedule(); + } + + this._container.onDataSourceChanged(); + + return changedType; + } + + /** + * + * @param dataChangedType + * @param data + */ + handleDataChange(dataChangedType: KeysChangedType, data: ItemT[]) { + switch (dataChangedType) { + case KeysChangedType.Equal: + break; + case KeysChangedType.Append: + this.updateTheLastItemIntervalValue(); + this.append(data); + break; + case KeysChangedType.Initial: + this.append(data); + break; + case KeysChangedType.Add: + case KeysChangedType.Remove: + case KeysChangedType.Reorder: + this.shuffle(data); + break; + } + } + + _setData(_data: Array) { + if (_data === this._data) return KeysChangedType.Equal; + const keyToIndexMap: Map = new Map(); + const keyToIndexArray: Array = []; + const itemToKeyMap: WeakMap = new WeakMap(); + const itemToDimensionMap: WeakMap< + ItemT, + BaseDimensions + > = new WeakMap(); + let duplicateKeyCount = 0; + // TODO: optimization + const data = _data.filter((item, index) => { + const itemKey = this.getItemKey(item, index); + const _index = keyToIndexArray.findIndex((key) => key === itemKey); + if (_index === -1 && itemKey) { + keyToIndexMap.set(itemKey, index - duplicateKeyCount); + keyToIndexArray.push(itemKey); + itemToKeyMap.set(item, itemKey); + itemToDimensionMap.set(item, this); + return true; + } + duplicateKeyCount += 1; + + return false; + }); + + const dataChangedType = this.resolveKeysChangedType( + keyToIndexArray, + (index: number) => this._data[index] === data[index] + ); + + this.handleDataChange(dataChangedType, data); + + // _onDataChanged should be placed after handleDataChange. + // Because the itemMeta may required... + + const oldData = this._data.slice(); + + this._data = data; + this.keyIndexManager.setKeyToIndexMap(keyToIndexMap); + this.keyIndexManager.setIndexKeys(keyToIndexArray); + this._itemToKeyMap = itemToKeyMap; + + this._onDataChanged?.({ + dataModel: this, + data, + oldData, + dataChangedType, + }); + + return dataChangedType; + } + + /** + * 当追加data的时候,假如说有separator存在的话,本来最后一个的item,不再是最后一个了; + * 这个时候其实要加上separatorLength的 + * @returns void + */ + updateTheLastItemIntervalValue() { + const len = this._data.length; + const index = len - 1; + const item = this._data[index]; + + if (!item) return; + + const meta = this.getItemMeta(item, index); + const layout = meta?.getLayout(); + + if (meta && layout) { + meta.setUseSeparatorLength(true); + // const separatorLength = meta.getSeparatorLength(); + // const length = this._selectValue.selectLength(layout) + separatorLength; + const length = meta.getFinalItemLength(); + this.setIntervalTreeValue(index, length); + } + } + + getIndexInfo(key: string): IndexInfo | null { + return this._container.getFinalKeyIndexInfo(key, this.id); + } + + computeIndexRange(minOffset: number, maxOffset: number) { + const result = this.intervalTree.computeRange(minOffset, maxOffset); + + log.info( + 'computeIndexRange result ', + this.intervalTree.getHeap()[1], + this.intervalTree.getActualSize(), + result, + minOffset, + this.intervalTree.getHeap().slice(this.intervalTree.getSize()), + maxOffset + ); + + return result; + } + + pump( + _data: Array, + baseIndex = 0, + keyToMetaMap: Map>, + intervalTree: PrefixIntervalTree + ) { + const data = _data.slice(baseIndex); + const len = data.length; + + for (let index = 0; index < len; index++) { + const item = data[index]; + const currentIndex = index + baseIndex; + const itemKey = this.getItemKey(item, currentIndex); + if (!itemKey) continue; + const meta = + this.getKeyMeta(itemKey) || + this.createItemMeta(itemKey, _data, currentIndex); + + if (meta.getLayout()) { + // const itemLength = this._selectValue.selectLength(meta.getLayout()); + // 最后一个不包含separatorLength + if (index === len - 1) { + meta.setUseSeparatorLength(false); + } else { + meta.setUseSeparatorLength(true); + } + + const length = meta.getFinalItemLength(); + intervalTree.drySet(currentIndex, length); + } + + // TODO======= + // this.setKeyMeta(itemKey, meta); + keyToMetaMap.set(itemKey, meta); + } + + this.applyIntervalTreeUpdate(intervalTree); + } + + append(data: Array) { + const baseIndex = this.keyIndexManager.getIndexKeysLength(); + this.pump(data, baseIndex, this._keyToMetaMap, this.intervalTree); + + // after set interval tree. should then trigger a update.. + // this.triggerOwnerRecalculateLayout(); + } + + shuffle(data: Array) { + const oldLength = this.intervalTree.getHeap()[1]; + this.intervalTree = this.createIntervalTree(); + const keyToMetaMap = new Map(); + this.pump(data, 0, keyToMetaMap, this.intervalTree); + this._keyToMetaMap = keyToMetaMap; + const nextLength = this.intervalTree.getHeap()[1]; + + if (oldLength !== nextLength) { + this.triggerOwnerRecalculateLayout(); + } + } + + /** + * + * @param key string, itemKey + * @param info + * @param updateIntervalTree target IntervalTree, now this property is used in + * MasonryList + * @returns boolean value, true for updating intervalTree successfully. + */ + _setKeyItemLayout( + key: string, + info: ItemLayout | number, + updateIntervalTree?: boolean + ) { + const _update = + typeof updateIntervalTree === 'boolean' ? updateIntervalTree : true; + + // if (!falsy) { + // if (this._parentItemsDimensions) + // return this._parentItemsDimensions.setKeyItemLayout(key, info, _update); + // return false; + // } + const index = this.getKeyIndex(key); + // const item = this._data[index]; + const meta = this.getKeyMeta(key); + // const meta = this.getItemMeta(item, index); + + if (!meta) return false; + + if (typeof info === 'number') { + let length = this.normalizeLengthNumber(info); + meta.isApproximateLayout = false; + + if ( + Math.abs( + length - (this._selectValue.selectLength(meta.getLayout() || {}) || 0) + ) > LAYOUT_EQUAL_CORRECTION_VALUE + ) { + this._selectValue.setLength(meta.ensureLayout(), length); + + if (index !== this._data.length - 1) { + meta.setUseSeparatorLength(true); + // length = meta.getSeparatorLength() + length; + } else { + meta.setUseSeparatorLength(false); + } + + length = meta.getFinalItemLength(); + + if (_update) { + this.setIntervalTreeValue(index, length); + return true; + } + } else if (meta.isApproximateLayout) { + // 比如换了一个item的话,不会触发更新 + this.triggerOwnerRecalculateLayout(); + } + + return false; + } + const _info = this.normalizeLengthInfo(info); + const metaLayout = meta.getLayout(); + + if ( + !metaLayout || + !layoutEqual(metaLayout, _info as ItemLayout, { + keysToCheck: this.horizontal ? ['width'] : ['height'], + correctionValue: LAYOUT_EQUAL_CORRECTION_VALUE, + }) + ) { + meta.isApproximateLayout = false; + const currentLength = this._selectValue.selectLength( + meta.getLayout() || {} + ); + let length = this._selectValue.selectLength((_info as ItemLayout) || {}); + meta.setLayout(_info as ItemLayout); + // 只有关心的值发生变化时,才会再次触发setIntervalTreeValue + if (currentLength !== length && _update) { + if (index !== this._data.length - 1) { + meta.setUseSeparatorLength(true); + // length = meta.getSeparatorLength() + length; + } else { + meta.setUseSeparatorLength(false); + } + + length = meta.getFinalItemLength(); + + this.setIntervalTreeValue(index, length); + return true; + } + } else if (meta.isApproximateLayout) { + meta.isApproximateLayout = false; + // 比如换了一个item的话,不会触发更新 + this.triggerOwnerRecalculateLayout(); + } + + return false; + } +} + +export default ListDimensionsModel; diff --git a/core/dimensions-model/src/common.ts b/core/dimensions-model/src/common.ts new file mode 100644 index 00000000..645759dd --- /dev/null +++ b/core/dimensions-model/src/common.ts @@ -0,0 +1,20 @@ +export const DEFAULT_ITEM_APPROXIMATE_LENGTH = 80; +export const DEFAULT_RECYCLER_TYPE = '__default_recycler_buffer__'; +export const LAYOUT_EQUAL_CORRECTION_VALUE = 0.5; + +export const isEmpty = (obj: any) => { + if (Object.prototype.toString.call(obj) === '[object Object]') { + return !Object.keys.length; + } + return true; +}; + +export const DISPATCH_METRICS_THRESHOLD = 16; +export const ON_END_REACHED_THRESHOLD = 2; +export const STILLNESS_THRESHOLD = 50; + +export const buildStateTokenIndexKey = (startIndex: number, endIndex: number) => + `space_${startIndex}_${endIndex}`; +export const RECYCLER_BUFFER_SIZE = 40; +export const RECYCLER_RESERVED_BUFFER_PER_BATCH = 20; +export const INVALID_LENGTH = 'invalid_length'; diff --git a/core/dimensions-model/src/index.ts b/core/dimensions-model/src/index.ts new file mode 100644 index 00000000..9a63f9c1 --- /dev/null +++ b/core/dimensions-model/src/index.ts @@ -0,0 +1,2 @@ +export { default as ListDimensionsModel } from './ListDimensionsModel'; +export * from './types'; diff --git a/core/dimensions-model/src/types/BaseLayout.types.ts b/core/dimensions-model/src/types/BaseLayout.types.ts new file mode 100644 index 00000000..6c95143e --- /dev/null +++ b/core/dimensions-model/src/types/BaseLayout.types.ts @@ -0,0 +1,39 @@ +import { BaseContainerProps } from '@infinite-list/container'; + +export enum BoundInfoType { + 'Hover' = 'hover', + 'OutOfBoundary' = 'outOfBoundary', +} + +export type BoundInfo = { + type: BoundInfoType; + index: number; +}; + +export type ItemLayout = { + x: number; + y: number; + width: number; + height: number; +}; + +export enum FillingMode { + SPACE = 'space', + RECYCLE = 'recycle', +} + +export interface BaseLayoutProps extends BaseContainerProps { + windowSize?: number; + maxToRenderPerBatch?: number; + initialNumToRender?: number; + persistanceIndices?: Array; + stickyHeaderIndices?: Array; + + recycleThreshold?: number; + recycleBufferedCount?: number; + recycleEnabled?: boolean; + + lengthPrecision?: number; + + itemOffsetBeforeLayoutReady?: number; +} diff --git a/core/dimensions-model/src/types/ListBaseDimensions.types.ts b/core/dimensions-model/src/types/ListBaseDimensions.types.ts new file mode 100644 index 00000000..2b33c5ad --- /dev/null +++ b/core/dimensions-model/src/types/ListBaseDimensions.types.ts @@ -0,0 +1,96 @@ +import { ItemMeta } from '@infinite-list/item-meta'; + +import { + ViewabilityConfigTuplesProps, + OnEndReachedHelperProps, +} from '@infinite-list/viewable'; + +import { BaseLayoutProps } from '@infinite-list/base-dimensions'; + +import { OnRecyclerProcess, RecyclerProps } from '@x-oasis/recycler'; +import { ReducerResult, Store, ActionType } from './types'; +import { GenericItemT } from './generic.types'; + +export type SpaceStateTokenPosition = 'before' | 'buffered' | 'after'; + +export type SpaceStateToken = { + item: ItemT | null; + key: string; + length: number; + isSpace: boolean; + isSticky: boolean; + isReserved: boolean; + itemMeta: ItemMeta | null | undefined; + position?: SpaceStateTokenPosition; +}; + +export type RecycleStateToken = { + /** + * compare with `targetKey`, it's the key point of recycle compatibility. + */ + key: string; + targetKey: string; + targetIndex: number; + offset: number; + + viewable: boolean; +} & Omit, 'key' | 'isReserved' | 'position'>; + +export type SpaceStateResult = Array< + SpaceStateToken +>; + +export type RecycleRecycleState = + RecycleStateToken[]; + +export type RecycleStateResult = { + rangeState: ListState; + spaceState: SpaceStateResult; + recycleState: RecycleRecycleState; +}; + +export type ListStateResult = + | SpaceStateResult + | RecycleStateResult; + +export type StateListener = ( + newState: ListStateResult, + oldState: ListStateResult +) => void; + +// export type ListBaseDimensionsProvider = ListGroupDimensions | ListDimensions; +export type ListBaseDimensionsStore< + ReducerResultT extends ReducerResult = ReducerResult +> = Store; + +export interface ListBaseDimensionsProps + extends BaseLayoutProps, + RecyclerProps, + OnEndReachedHelperProps, + ViewabilityConfigTuplesProps { + releaseSpaceStateItem?: boolean; + store: ListBaseDimensionsStore; + dispatchMetricsThreshold?: number; + useItemApproximateLength?: boolean; + itemApproximateLength?: number; + onRecyclerProcess?: OnRecyclerProcess; + stillnessThreshold?: number; +} + +export type PreStateResult = { + visibleStartIndex: number; + visibleEndIndex: number; + bufferedStartIndex: number; + bufferedEndIndex: number; + isEndReached: boolean; + distanceFromEnd: number; + actionType: ActionType; +}; + +export type ListState = { + // data: Array; +} & PreStateResult; + +export type IndexToOffsetMap = { + [key: number]: number; +}; diff --git a/core/dimensions-model/src/types/ListDimensionsModel.types.ts b/core/dimensions-model/src/types/ListDimensionsModel.types.ts new file mode 100644 index 00000000..d561fa0f --- /dev/null +++ b/core/dimensions-model/src/types/ListDimensionsModel.types.ts @@ -0,0 +1,97 @@ +import { + BaseDimensionsProps, + KeysChangedType, +} from '@infinite-list/base-dimensions'; +import { GenericItemT } from './generic.types'; +import { ListBaseDimensionsProps } from './ListBaseDimensions.types'; + +import { + IListDimensions, + IListDimensionsModel, + IListGroupDimensions, + IMasonryDimensions, + IMasonryDimensionsModel, +} from '@infinite-list/types'; +import { IDefaultKeyExtra } from '@infinite-list/utils'; + +export type GetItemSeparatorLength = ( + data: Array, + index: number +) => { length: number }; +export type GetItemLayout = ( + data: Array, + index: number +) => { length: number; index: number }; + +/** + * TODO: `index` may not be + */ +export type KeyExtractor = ( + item: ItemT, + index?: number +) => string; +export type OnListDimensionsModelDataChanged< + ItemT extends GenericItemT = GenericItemT +> = (props: { + dataModel: IListDimensionsModel | IMasonryDimensionsModel; + dataChangedType: KeysChangedType; + data: ItemT[]; + oldData: ItemT[]; +}) => void; + +export interface ListDimensionsModelProps< + ItemT extends GenericItemT = GenericItemT +> extends ListBaseDimensionsProps, + BaseDimensionsProps { + /** + * @template ItemT the generic data item type + */ + data: Array; + itemApproximateLength?: number; + /** + * only if in recycleEnabled mode, `useItemApproximateLength` is meaningful + */ + useItemApproximateLength?: boolean; + recyclerType?: string; + anchorKey?: string; + + container: ListDimensionsModelContainer; + + recycleEnabled?: boolean; + + /** + * @template ItemT the generic date item type + * @type {( item: ItemPossibleT, index?: number ) => string } + * + * @param {number} index maybe removed in the future + * + * Used to extract a unique key for a given item at the specified index. Key is used for caching + * and as the react key to track item re-ordering. The default extractor checks `item.key`, then + * falls back to using the index, like React does. + */ + keyExtractor: IDefaultKeyExtra; + + getItemLayout?: GetItemLayout; + getItemSeparatorLength?: GetItemSeparatorLength; + + isFixedLength?: boolean; + + onEndReachedThreshold?: number; + + /** + * on default, value is false; In ListGroupDimensions, data should not + * be initialized on construct . so add this param.. + */ + manuallyApplyInitialData?: boolean; + + recyclerTypes?: Array; + + onListDimensionsModelDataChanged?: OnListDimensionsModelDataChanged; +} + +export type ListDimensionsModelContainer< + ItemT extends GenericItemT = GenericItemT +> = + | IListGroupDimensions + | IListDimensions + | IMasonryDimensions; diff --git a/core/dimensions-model/src/types/generic.types.ts b/core/dimensions-model/src/types/generic.types.ts new file mode 100644 index 00000000..297f824d --- /dev/null +++ b/core/dimensions-model/src/types/generic.types.ts @@ -0,0 +1,4 @@ +export type GenericItemT = { + [key: string]: any; +}; +export type GenericStateResult = any; diff --git a/core/dimensions-model/src/types/index.ts b/core/dimensions-model/src/types/index.ts new file mode 100644 index 00000000..850aae37 --- /dev/null +++ b/core/dimensions-model/src/types/index.ts @@ -0,0 +1,5 @@ +export * from './generic.types'; +export * from './ListDimensionsModel.types'; +export * from './BaseLayout.types'; +export * from './ListBaseDimensions.types'; +export * from './scrollMetrics.types'; diff --git a/core/dimensions-model/src/types/scrollMetrics.types.ts b/core/dimensions-model/src/types/scrollMetrics.types.ts new file mode 100644 index 00000000..9b779202 --- /dev/null +++ b/core/dimensions-model/src/types/scrollMetrics.types.ts @@ -0,0 +1,50 @@ +export interface ScrollRectangle { + left: number; + top: number; + bottom: number; + right: number; +} + +export interface ScrollPoint { + x: number; + y: number; +} + +export interface ScrollVelocity { + x: number; + y: number; +} + +export interface ScrollSize { + height: number; + width: number; +} +export type ScrollEventMetrics = { + contentInset: ScrollRectangle; + contentOffset: ScrollPoint; + contentSize: ScrollSize; + layoutMeasurement: ScrollSize; + velocity?: ScrollVelocity | undefined; + zoomScale: number; + /** + * @platform ios + */ + targetContentOffset?: ScrollPoint | undefined; +}; + +export type ScrollMetrics = { + contentLength: number; + offset: number; + visibleLength: number; + + // not used + dOffset?: number; + dt?: number; + timestamp?: number; + velocity?: number; +}; + +export type ContentSize = { + width: number; + height: number; +}; diff --git a/core/dimensions-model/src/types/types.ts b/core/dimensions-model/src/types/types.ts new file mode 100644 index 00000000..4bd17b14 --- /dev/null +++ b/core/dimensions-model/src/types/types.ts @@ -0,0 +1,75 @@ +// import ListDimensions from '../ListDimensions'; +// import ListGroupDimensions from '../ListGroupDimensions'; + +import { IListDimensions, IListGroupDimensions } from '@infinite-list/types'; + +import { ScrollMetrics } from '../types'; + +export type ReducerResult = { + visibleStartIndex: number; + visibleEndIndex: number; + bufferedStartIndex: number; + bufferedEndIndex: number; + isEndReached: boolean; + distanceFromEnd: number; + actionType: ActionType; +}; + +export type ActionPayload = { + dimension: IListDimensions | IListGroupDimensions; + scrollMetrics: ScrollMetrics; + isEndReached: boolean; + distanceFromEnd: number; +}; + +export enum ActionType { + HydrationWithBatchUpdate = 'hydrationWithBatchUpdate', + ScrollDown = 'scrollDown', + ScrollUp = 'scrollUp', + Recalculate = 'recalculate', + Initial = 'initial', +} + +export type RawAction = { + type: ActionType; // 应用触底了,但是List仍旧有数据没有渲染 + payload: { + dimension: IListDimensions | IListGroupDimensions; + scrollMetrics: ScrollMetrics; + }; +}; + +export type Action = { + type: ActionType; // 应用触底了,但是List仍旧有数据没有渲染 + payload: ActionPayload; +}; + +export type Reducer = (state: State, action: Action) => State; + +type Dispatch = (action: Action) => State; +type DispatchMetrics = (props: { + dimension: IListDimensions | IListGroupDimensions; + scrollMetrics: ScrollMetrics; +}) => State; + +export type Store = { + dispatch: Dispatch; + dispatchMetrics: DispatchMetrics; + getState: () => State; + setState: (state: State) => void; +}; + +export type CreateStore = (reducer?: Reducer) => Store; + +export type Ctx = { + maxIndex: number; + visibleIndexRange: { + startIndex: number; + endIndex: number; + }; + bufferedIndexRange: { + startIndex: number; + endIndex: number; + }; + isEndReached: boolean; + distanceFromEnd: number; +}; diff --git a/core/dimensions-model/tsconfig.json b/core/dimensions-model/tsconfig.json new file mode 100644 index 00000000..8d9d5912 --- /dev/null +++ b/core/dimensions-model/tsconfig.json @@ -0,0 +1,22 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "commonjs", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ] +} diff --git a/core/dimensions-model/tsconfig.lib.json b/core/dimensions-model/tsconfig.lib.json new file mode 100644 index 00000000..27d9fb32 --- /dev/null +++ b/core/dimensions-model/tsconfig.lib.json @@ -0,0 +1,11 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "declaration": true, + "removeComments": false, + "types": ["node"] + }, + "include": ["src/**/*.ts"], + "exclude": ["vite.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"] +} diff --git a/core/dimensions-model/tsconfig.spec.json b/core/dimensions-model/tsconfig.spec.json new file mode 100644 index 00000000..3c002c21 --- /dev/null +++ b/core/dimensions-model/tsconfig.spec.json @@ -0,0 +1,26 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "types": [ + "vitest/globals", + "vitest/importMeta", + "vite/client", + "node", + "vitest" + ] + }, + "include": [ + "vite.config.ts", + "vitest.config.ts", + "src/**/*.test.ts", + "src/**/*.spec.ts", + "src/**/*.test.tsx", + "src/**/*.spec.tsx", + "src/**/*.test.js", + "src/**/*.spec.js", + "src/**/*.test.jsx", + "src/**/*.spec.jsx", + "src/**/*.d.ts" + ] +} diff --git a/core/dimensions-model/vite.config.ts b/core/dimensions-model/vite.config.ts new file mode 100644 index 00000000..f55c57b6 --- /dev/null +++ b/core/dimensions-model/vite.config.ts @@ -0,0 +1,28 @@ +import { defineConfig } from 'vite'; + +import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin'; +import { nxCopyAssetsPlugin } from '@nx/vite/plugins/nx-copy-assets.plugin'; + +export default defineConfig({ + root: __dirname, + cacheDir: '../../node_modules/.vite/core/dimensions-model', + + plugins: [nxViteTsPaths(), nxCopyAssetsPlugin(['*.md'])], + + // Uncomment this if you are using workers. + // worker: { + // plugins: [ nxViteTsPaths() ], + // }, + + test: { + watch: false, + globals: true, + environment: 'node', + include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], + reporters: ['default'], + coverage: { + reportsDirectory: '../../coverage/core/dimensions-model', + provider: 'v8', + }, + }, +}); diff --git a/core/item-meta/.swcrc b/core/item-meta/.swcrc new file mode 100644 index 00000000..28e88ec1 --- /dev/null +++ b/core/item-meta/.swcrc @@ -0,0 +1,29 @@ +{ + "jsc": { + "target": "es2017", + "parser": { + "syntax": "typescript", + "decorators": true, + "dynamicImport": true + }, + "transform": { + "decoratorMetadata": true, + "legacyDecorator": true + }, + "keepClassNames": true, + "externalHelpers": true, + "loose": true + }, + "module": { + "type": "es6" + }, + "sourceMaps": true, + "exclude": [ + "jest.config.ts", + ".*\\.spec.tsx?$", + ".*\\.test.tsx?$", + "./src/jest-setup.ts$", + "./**/jest-setup.ts$", + ".*.js$" + ] +} diff --git a/core/item-meta/README.md b/core/item-meta/README.md new file mode 100644 index 00000000..d5c9cdac --- /dev/null +++ b/core/item-meta/README.md @@ -0,0 +1,11 @@ +# item-meta + +This library was generated with [Nx](https://nx.dev). + +## Building + +Run `nx build item-meta` to build the library. + +## Running unit tests + +Run `nx test item-meta` to execute the unit tests via [Vitest](https://vitest.dev/). diff --git a/core/item-meta/eslint.config.js b/core/item-meta/eslint.config.js new file mode 100644 index 00000000..6e58c36a --- /dev/null +++ b/core/item-meta/eslint.config.js @@ -0,0 +1,22 @@ +const baseConfig = require('../../eslint.config.js'); + +module.exports = [ + ...baseConfig, + { + files: ['**/*.json'], + rules: { + '@nx/dependency-checks': [ + 'error', + { + ignoredFiles: [ + '{projectRoot}/eslint.config.{js,cjs,mjs}', + '{projectRoot}/vite.config.{js,ts,mjs,mts}', + ], + }, + ], + }, + languageOptions: { + parser: require('jsonc-eslint-parser'), + }, + }, +]; diff --git a/core/item-meta/package.json b/core/item-meta/package.json new file mode 100644 index 00000000..5a2fb4fc --- /dev/null +++ b/core/item-meta/package.json @@ -0,0 +1,13 @@ +{ + "name": "@infinite-list/item-meta", + "version": "0.0.1", + "dependencies": { + "@x-oasis/batchinator": "^0.1.14", + "@x-oasis/default-boolean-value": "^0.1.14", + "@x-oasis/get-map-key-by-value": "^0.1.34", + "@x-oasis/noop": "^0.1.14", + "@infinite-list/viewable": "workspace:*" + }, + "main": "./index.cjs", + "module": "./index.js" +} diff --git a/core/item-meta/project.json b/core/item-meta/project.json new file mode 100644 index 00000000..f2897a68 --- /dev/null +++ b/core/item-meta/project.json @@ -0,0 +1,22 @@ +{ + "name": "item-meta", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "core/item-meta/src", + "projectType": "library", + "release": { + "version": { + "generatorOptions": { + "packageRoot": "dist/{projectRoot}", + "currentVersionResolver": "git-tag" + } + } + }, + "tags": [], + "targets": { + "nx-release-publish": { + "options": { + "packageRoot": "dist/{projectRoot}" + } + } + } +} diff --git a/core/item-meta/rollup.config.js b/core/item-meta/rollup.config.js new file mode 100644 index 00000000..d32e1989 --- /dev/null +++ b/core/item-meta/rollup.config.js @@ -0,0 +1,18 @@ +const { withNx } = require('@nx/rollup/with-nx'); + +module.exports = withNx( + { + main: './src/index.ts', + outputPath: '../../dist/core/item-meta', + tsConfig: '../../tsconfig.json', + // tsConfig: './tsconfig.lib.json', + compiler: 'swc', + format: ['cjs', 'esm'], + assets: [{ input: '.', output: '.', glob: '*.md' }], + }, + { + // Provide additional rollup configuration here. See: https://rollupjs.org/configuration-options + // e.g. + // output: { sourcemap: true }, + } +); diff --git a/core/item-meta/src/ItemMeta.ts b/core/item-meta/src/ItemMeta.ts new file mode 100644 index 00000000..c3ea7281 --- /dev/null +++ b/core/item-meta/src/ItemMeta.ts @@ -0,0 +1,396 @@ +import ItemMetaStateEventHelper from './ItemMetaStateEventHelper'; +import { DEFAULT_LAYOUT, DEFAULT_RECYCLER_TYPE } from './common'; +import { + ItemLayout, + ItemMetaState, + ItemMetaProps, + StateEventListener, + ItemMetaStateEventHelperProps, + GenericItemT, +} from './types'; +import noop from '@x-oasis/noop'; +import { IItemMeta, ItemMetaOwner } from '@infinite-list/types'; +import defaultBooleanValue from '@x-oasis/default-boolean-value'; +import { ViewabilityItemMeta } from '@infinite-list/viewable'; + +export const isValidMetaLayout = (meta: IItemMeta | null | undefined) => + !!(meta && !meta.isApproximateLayout && meta.getLayout()); + +type ItemMetaContext = { + [key: string]: ItemMeta; +}; + +// make itemMeta could be shared, such as data source ref change, but it's value +// not changed. +export let context: ItemMetaContext = {}; + +let count = 0; + +export const resetContext = () => { + context = {}; +}; + +/** + * _layout should always exist. `_isApproximateLayout` should make the difference. + */ +class ItemMeta< + ItemT extends GenericItemT = GenericItemT, + ItemMetaOwnerExtraInfo extends {} = {} + > + extends ViewabilityItemMeta + implements IItemMeta +{ + private _isListItem: boolean; + private _id: string; + private _layout?: ItemLayout; + private _separatorLength?: number; + private _recyclerType: string; + private _owner: ItemMetaOwner; + private _state: ItemMetaState; + private _stateEventSubscriptions: Map; + readonly getMetaOnViewableItemsChanged?: any; + readonly _canIUseRIC?: boolean; + private _isApproximateLayout: boolean; + private _ignoredToPerBatch: boolean; + private _useSeparatorLength: boolean; + private _spawnProps: { + [key: string]: ItemMetaStateEventHelperProps; + }; + + constructor(props: ItemMetaProps) { + super(props); + const { + owner, + separatorLength, + layout, + state, + isListItem, + canIUseRIC, + spawnProps = {}, + ignoredToPerBatch, + isInitialItem = false, + isApproximateLayout = true, + + useSeparatorLength = true, + + recyclerType = DEFAULT_RECYCLER_TYPE, + } = props; + this._owner = owner; + this._id = `item_meta_${count++}`; + this._layout = layout; + this._separatorLength = separatorLength || 0; + this._isListItem = isListItem || false; + this._stateEventSubscriptions = new Map(); + this._ignoredToPerBatch = !!ignoredToPerBatch; + this._useSeparatorLength = useSeparatorLength; + this._state = + state || this._owner?.resolveConfigTuplesDefaultState + ? this._owner?.resolveConfigTuplesDefaultState(!!isInitialItem) + : {}; + + this._canIUseRIC = canIUseRIC; + this._isApproximateLayout = isApproximateLayout; + this._recyclerType = recyclerType; + this._spawnProps = spawnProps; + + this.addStateEventListener = this.addStateEventListener.bind(this); + (context as any)[this.key] = this; + } + + static spawn< + T extends GenericItemT = GenericItemT, + SpawnItemMetaOwnerExtraInfo extends {} = {} + >(props: ItemMetaProps) { + const ancestor = context[props.key]; + if (ancestor) { + const layout = ancestor.getLayout(); + const spawnProps: { + [key: string]: any; + } = {}; + for (const [key, value] of ancestor._stateEventSubscriptions) { + const _props = ItemMetaStateEventHelper.spawn(value); + if (_props) spawnProps[key] = _props; + } + + return new ItemMeta({ + layout, + // isApproximateLayout may cause change... + isApproximateLayout: ancestor.isApproximateLayout, + spawnProps, + ...props, + }); + } + + return new ItemMeta(props); + } + + get id() { + return this._id; + } + + get ignoredToPerBatch() { + return this._ignoredToPerBatch; + } + + get recyclerType() { + return this._recyclerType; + } + + get isApproximateLayout() { + return this._isApproximateLayout; + } + + set isApproximateLayout(value: boolean) { + this._isApproximateLayout = value; + } + + setLayout(layout: ItemLayout) { + this._layout = layout; + } + + getLayout() { + return this._layout; + } + + getOwner() { + return this._owner; + } + + getState() { + return this._state; + } + + ensureLayout() { + if (this._layout) return this._layout; + this._layout = { ...DEFAULT_LAYOUT }; + return this._layout; + } + + setSeparatorLength(length: number) { + this._separatorLength = length; + } + + getSeparatorLength() { + return this._separatorLength || 0; + } + + getContainerOffset() { + return this._owner.getContainerOffset(); + } + + getItemLength() { + const selectValue = this._owner.getSelectValue(); + return this._layout ? selectValue.selectLength(this._layout) : 0; + } + + setUseSeparatorLength(value: boolean) { + this._useSeparatorLength = value; + } + + getFinalItemLength(useSeparatorLength = false) { + if (useSeparatorLength || this._useSeparatorLength) { + return this.getItemLength() + this.getSeparatorLength(); + } + + return this.getItemLength(); + } + + getItemOffset(exclusive?: boolean) { + if (this._isListItem) { + const offset = this._owner.getKeyItemOffset(this._key, exclusive); + + return offset; + } + + // [TODO]: temp remove instanceof logic, it may cause circular dependency + // `item-meta:build --> dimension:build --> item-meta:build` + // if (this._owner instanceof Dimension) { + if (this._owner?.getItemOffset) { + return this._owner.getItemOffset(); + } + + const selectValue = this._owner.getSelectValue(); + return this._layout ? selectValue.selectOffset(this._layout) : 0; + } + + /** + * + * @param state + * @returns + * + * trigger state change listener, such as viewable / impression + */ + setItemMetaState( + state: { + [key: string]: boolean; + } = {} + ) { + if (state === this._state) return; + Object.keys({ ...state }).forEach((key) => { + const helper = this._stateEventSubscriptions.get(key); + const currentValue = state[key]; + + if (helper) { + helper.setValue(currentValue); + } + + if (key === 'viewable') { + const impressionHelper = + this._stateEventSubscriptions.get('impression'); + impressionHelper?.trigger(currentValue); + } + }); + + this._state = { ...state }; + } + + override getKey() { + return this._key; + } + + ensureStateHelper( + eventName: string, + value: boolean + ): ItemMetaStateEventHelper { + if (!this._stateEventSubscriptions.get(eventName)) { + const helper = new ItemMetaStateEventHelper({ + ...(this._spawnProps[eventName] || {}), + eventName, + key: this._key, + defaultValue: value, + canIUseRIC: this._canIUseRIC, + }); + this._stateEventSubscriptions.set(eventName, helper); + } + + return this._stateEventSubscriptions.get(eventName)!; + } + + getIndexInfo() { + return this._owner.getIndexInfo(this._key); + } + + override getIndex() { + const info = this.getIndexInfo(); + return info?.index || -1; + } + + /** + * + * @param event + * @param callback + * @param triggerOnceIfTrue + * + * In reuse condition, once add listener, then it will not be changed anymore. + * + */ + addStateReusableEventListener( + event: string, + key: string, + callback: StateEventListener, + triggerOnceIfTrue?: boolean + ): { + remover: Function; + } { + if (typeof callback !== 'function') + return { + remover: noop, + }; + const stateEventHelper = this.ensureStateHelper( + event, + // get initial value + event === 'impression' ? this._state['viewable'] : this._state[event] + ); + return stateEventHelper.addReusableListener( + callback, + key, + defaultBooleanValue(triggerOnceIfTrue, true) + ); + } + + /** + * + * @param event + * @param callback + * @param triggerOnceIfTrue + * + * In reuse condition, once add listener, then it will not be changed anymore. + * + */ + addStStateReusableEventListener( + event: string, + key: string, + callback: StateEventListener, + triggerOnceIfTrue?: boolean + ): { + remover: Function; + } { + if (typeof callback !== 'function') + return { + remover: noop, + }; + const stateEventHelper = this.ensureStateHelper( + event, + // get initial value + event === 'impression' ? this._state['viewable'] : this._state[event] + ); + return stateEventHelper.addReusableListener( + callback, + key, + defaultBooleanValue(triggerOnceIfTrue, true) + ); + } + + /** + * + * @param {string} event + * @param callback + * @param triggerOnceIfTrue + * @param {string} key + * + * In reuse condition, once add listener, then it will not be changed anymore. + * + */ + addStrictStateReusableEventListener( + event: string, + key: string, + callback: StateEventListener, + triggerOnceIfTrue?: boolean + ): { + remover: Function; + } { + if (typeof callback !== 'function') + return { + remover: noop, + }; + const stateEventHelper = this.ensureStateHelper( + event, + // get initial value + event === 'impression' ? this._state['viewable'] : this._state[event] + ); + return stateEventHelper?.addStrictReusableListener( + callback, + key, + defaultBooleanValue(triggerOnceIfTrue, true) + ); + } + + addStateEventListener( + event: string, + callback: StateEventListener, + triggerOnceIfTrue?: boolean + ) { + if (typeof callback !== 'function') return noop; + const stateEventHelper = this.ensureStateHelper( + event, + // get initial value + event === 'impression' ? this._state['viewable'] : this._state[event] + ); + return stateEventHelper?.addListener( + callback, + defaultBooleanValue(triggerOnceIfTrue, true) + ); + } +} + +export default ItemMeta; diff --git a/core/item-meta/src/ItemMetaStateEventHelper.ts b/core/item-meta/src/ItemMetaStateEventHelper.ts new file mode 100644 index 00000000..c0063729 --- /dev/null +++ b/core/item-meta/src/ItemMetaStateEventHelper.ts @@ -0,0 +1,354 @@ +import Batchinator from '@x-oasis/batchinator'; +import defaultBooleanValue from '@x-oasis/default-boolean-value'; +import noop from '@x-oasis/noop'; +import getMapKeyByValue from '@x-oasis/get-map-key-by-value'; +import { StateEventListener, ItemMetaStateEventHelperProps } from './types'; + +let canIUseRIC = false; +let finished = false; + +setTimeout(() => { + if (finished) return; + canIUseRIC = false; + finished = true; +}); + +// interface IdleRequestCallback { +// (deadline: IdleDeadline): void; +// } +/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/IdleDeadline) */ +// interface IdleDeadline { +// /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/IdleDeadline/didTimeout) */ +// readonly didTimeout: boolean; +// /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/IdleDeadline/timeRemaining) */ +// timeRemaining(): DOMHighResTimeStamp; +// } +// interface IdleRequestOptions { +// timeout?: number; +// } + +// declare function requestIdleCallback( +// callback: IdleRequestCallback, +// options?: IdleRequestOptions +// ): number; + +// if (requestIdleCallback) +// requestIdleCallback(() => { +// canIUseRIC = true; +// finished = true; +// }); + +class ItemMetaStateEventHelper { + private _batchUpdateEnabled: boolean; + private _value = false; + readonly _eventName: string; + + private _strictListeners: Array; + + private _listeners: Array = []; + private _handleCountMap: Map; + + private _triggerBatchinator: Batchinator; + private _once: boolean; + readonly _key: string; + private _reusableEventListenerMap: Map; + private _reusableStrictEventListenerMap: Map; + private _callbackId?: number | void; + private _callbackStartMinMs?: number; + readonly _canIUseRIC: boolean; + private _strictListenerKeyToHandleCountMap: { + [key: string]: number; + }; + + constructor(props: ItemMetaStateEventHelperProps) { + const { + key, + eventName, + batchUpdateEnabled, + defaultValue = false, + canIUseRIC: _canIUseRIC, + once, + strictListenerKeyToHandleCountMap = {}, + } = props; + + this._key = key; + this._eventName = eventName; + this._reusableEventListenerMap = new Map(); + this._reusableStrictEventListenerMap = new Map(); + this._batchUpdateEnabled = + typeof batchUpdateEnabled === 'boolean' + ? batchUpdateEnabled + : eventName === 'viewable' + ? false + : true; + this._once = + typeof once === 'boolean' + ? once + : eventName === 'impression' + ? true + : false; + + this._strictListenerKeyToHandleCountMap = strictListenerKeyToHandleCountMap; + this._triggerBatchinator = new Batchinator(this._trigger.bind(this), 50); + this.remover = this.remover.bind(this); + this._handleCountMap = new Map(); + this._strictListeners = []; + // ric in RN can not be triggered. https://github.com/facebook/react-native/issues/28602 + this._canIUseRIC = defaultBooleanValue(_canIUseRIC, canIUseRIC); + + if (defaultValue) { + this.trigger(defaultValue); + } + } + + static spawn(ins: ItemMetaStateEventHelper) { + const strictListenerKeyToHandleCountMap = Object.create(null); + const l = ins._strictListeners; + if (!l.length) return null; + l.forEach((_l) => { + const count = ins._handleCountMap.get(_l); + for (const [key, value] of ins._reusableEventListenerMap) { + if (value === _l) { + strictListenerKeyToHandleCountMap[key] = count; + } + } + }); + return { + strictListenerKeyToHandleCountMap, + }; + } + + remover(listener: StateEventListener, key?: string) { + return () => { + const index = this._listeners.findIndex((cb) => cb === listener); + if (index !== -1) { + this._listeners.splice(index, 1); + this._handleCountMap.delete(listener); + } + if (key) this._reusableEventListenerMap.delete(key); + }; + } + + addReusableListener( + listener: StateEventListener, + key: string, + triggerOnceIfTrue: boolean + ) { + if (this._reusableEventListenerMap.has(key)) + return { + remover: this.remover(listener, key), + }; + + this._reusableEventListenerMap.set(key, listener); + + const index = this._listeners.findIndex((cb) => cb === listener); + if (index === -1) { + this._handleCountMap.set(listener, 0); + this._listeners.push(listener); + } + + if (triggerOnceIfTrue && this._value && this.listenerGuard(listener)) { + this.incrementHandleCount(listener); + listener(this._value); + } + + return { + remover: this.remover(listener, key), + }; + } + + // listener can't be deleted + addStrictReusableListener( + listener: StateEventListener, + key: string, + triggerOnceIfTrue: boolean + ) { + const count = this._strictListenerKeyToHandleCountMap[key] || 0; + const index = this._strictListeners.findIndex((cb) => cb === listener); + + const prevListener = this._reusableStrictEventListenerMap.get(key); + if (prevListener) { + this._handleCountMap.delete(listener); + const idx = this._strictListeners.findIndex((l) => l === prevListener); + if (idx !== -1) this._strictListeners.splice(idx, 1); + } + + // should set before trigger + this._handleCountMap.set(listener, count); + + if (index === -1) { + this._strictListeners.push(listener); + if (triggerOnceIfTrue && this._value && this.listenerGuard(listener)) { + this.incrementHandleCount(listener); + listener(this._value); + } + } + + this._reusableStrictEventListenerMap.set(key, listener); + + if (triggerOnceIfTrue && this._value && this.listenerGuard(listener)) { + this.incrementStrictListenerHandleCount(listener); + listener(this._value); + } + + return { + remover: noop, + }; + } + + /** + * + * @param listener + * @param triggerOnceIfTrue on initial, if value is true, then trigger.. + * @returns + */ + addListener(listener: StateEventListener, triggerOnceIfTrue: boolean) { + const index = this._listeners.findIndex((cb) => cb === listener); + if (index === -1) { + this._handleCountMap.set(listener, 0); + this._listeners.push(listener); + } + + if (triggerOnceIfTrue && this._value && this.listenerGuard(listener)) { + this.incrementHandleCount(listener); + listener(this._value); + } + + return this.remover(listener); + } + + getHandleCount(handler: StateEventListener) { + return this._handleCountMap.get(handler) || 0; + } + + incrementHandleCount(handler: StateEventListener) { + const value = this._handleCountMap.get(handler) || 0; + this._handleCountMap.set(handler, value + 1); + } + + incrementStrictListenerHandleCount(handler: StateEventListener) { + const value = this._handleCountMap.get(handler) || 0; + this._handleCountMap.set(handler, value + 1); + const key = getMapKeyByValue(this._reusableStrictEventListenerMap, handler); + if (key) { + const _value = this._strictListenerKeyToHandleCountMap[key] || 0; + this._strictListenerKeyToHandleCountMap[key] = _value + 1; + } + } + + get value() { + return this._value; + } + + setValue(value: boolean) { + this.trigger(value); + } + + // 大的开关,是否要跑trigger逻辑 + guard() { + if (!this._once) return true; + // has a listener still not triggered. + for (const value of this._handleCountMap.values()) { + if (!value) return true; + } + return false; + } + + /** + * + * @param cb + * @returns to control whether a listener should be triggered or not.. + * 用来卡,某一个listener是不是需要被触发 + */ + listenerGuard(cb: StateEventListener) { + if (!this._once) return true; + if (this._handleCountMap.get(cb)) return false; + return true; + } + + cancelIdleCallbackPolyfill(callbackId: number) { + if (this._canIUseRIC) { + if (typeof cancelIdleCallback === 'function') { + cancelIdleCallback(callbackId); + } + } + + this._callbackId = undefined; + } + + trigger(value: boolean) { + const shouldPerformScheduler = this.guard(); + if (!shouldPerformScheduler) return; + if (value && !this._batchUpdateEnabled) { + this._trigger(value, true); + return; + } + + this._triggerBatchinator.dispose({ + abort: true, + }); + this._triggerBatchinator.schedule(value); + } + + get listeners() { + const arr: { + type: 'normal' | 'strict'; + listener: StateEventListener; + }[] = []; + this._listeners.forEach((listener) => + arr.push({ type: 'normal', listener }) + ); + this._strictListeners.forEach((listener) => + arr.push({ type: 'strict', listener }) + ); + return arr; + } + + _trigger(value: boolean, immediately: boolean) { + const now = Date.now(); + + if (immediately) { + this._callbackStartMinMs = now; + if (this._callbackId) { + this.cancelIdleCallbackPolyfill(this._callbackId); + } + if (this._value !== value) { + this.listeners.forEach(({ listener, type }) => { + if (this.listenerGuard(listener)) { + if (type === 'strict') + this.incrementStrictListenerHandleCount(listener); + else this.incrementHandleCount(listener); + listener(value); + } + }); + } + this._value = value; + } else { + if (this._callbackId) { + this.cancelIdleCallbackPolyfill(this._callbackId); + } + this._callbackStartMinMs = now; + + const handler = (() => { + if (now < this._callbackStartMinMs!) return; + if (this._value !== value) { + this.listeners.forEach(({ listener, type }) => { + if (this.listenerGuard(listener)) { + if (type === 'strict') + this.incrementStrictListenerHandleCount(listener); + else this.incrementHandleCount(listener); + listener(value); + } + }); + } + this._value = value; + }).bind(this); + + this._callbackId = this._canIUseRIC + ? requestIdleCallback(handler) + : handler(); + } + } +} + +export default ItemMetaStateEventHelper; diff --git a/core/item-meta/src/common.ts b/core/item-meta/src/common.ts new file mode 100644 index 00000000..8282a83e --- /dev/null +++ b/core/item-meta/src/common.ts @@ -0,0 +1,8 @@ +export const DEFAULT_LAYOUT = { + x: 0, + y: 0, + height: 0, + width: 0, +}; + +export const DEFAULT_RECYCLER_TYPE = '__default_recycler_buffer__'; diff --git a/core/item-meta/src/index.ts b/core/item-meta/src/index.ts new file mode 100644 index 00000000..03005ab6 --- /dev/null +++ b/core/item-meta/src/index.ts @@ -0,0 +1,3 @@ +export { default as ItemMeta } from './ItemMeta'; +export * from './ItemMeta'; +export * from './types'; diff --git a/core/item-meta/src/types/BaseLayout.types.ts b/core/item-meta/src/types/BaseLayout.types.ts new file mode 100644 index 00000000..6875d588 --- /dev/null +++ b/core/item-meta/src/types/BaseLayout.types.ts @@ -0,0 +1,39 @@ +// import { BaseContainerProps } from './BaseContainer.types'; + +export enum BoundInfoType { + 'Hover' = 'hover', + 'OutOfBoundary' = 'outOfBoundary', +} + +export type BoundInfo = { + type: BoundInfoType; + index: number; +}; + +export type ItemLayout = { + x: number; + y: number; + width: number; + height: number; +}; + +export enum FillingMode { + SPACE = 'space', + RECYCLE = 'recycle', +} + +// export interface BaseLayoutProps extends BaseContainerProps { +// windowSize?: number; +// maxToRenderPerBatch?: number; +// initialNumToRender?: number; +// persistanceIndices?: Array; +// stickyHeaderIndices?: Array; + +// recycleThreshold?: number; +// recycleBufferedCount?: number; +// recycleEnabled?: boolean; + +// lengthPrecision?: number; + +// itemOffsetBeforeLayoutReady?: number; +// } diff --git a/core/item-meta/src/types/ItemMeta.types.ts b/core/item-meta/src/types/ItemMeta.types.ts new file mode 100644 index 00000000..be46598a --- /dev/null +++ b/core/item-meta/src/types/ItemMeta.types.ts @@ -0,0 +1,64 @@ +import { ItemLayout } from './BaseLayout.types'; +import { GenericItemT } from './generic.types'; +import { + IListDimensionsModel, + ListGroupIndexInfo, + ItemMetaOwner, +} from '@infinite-list/types'; + +export type StateEventListener = (eventValue?: boolean) => void; + +export type ItemMetaStateEventHelperProps = { + key: string; + eventName: string; + batchUpdateEnabled?: boolean; + defaultValue: boolean; + once?: boolean; + canIUseRIC?: boolean; + + /** + * for spawn + */ + strictListenerKeyToHandleCountMap?: { + [key: string]: number; + }; +}; + +export type ItemMetaState = { + [key: string]: boolean; +}; + +export type ItemMetaProps = { + /** + * indicate including separatorLength on return item length + */ + useSeparatorLength?: boolean; + onViewable?: StateEventListener; + onImpression?: StateEventListener; + key: string; + separatorLength?: number; + layout?: ItemLayout; + owner: ItemMetaOwner; + isListItem?: boolean; + setState?: Function; + state?: ItemMetaState; + isInitialItem?: boolean; + canIUseRIC?: boolean; + recyclerType?: string; + ignoredToPerBatch?: boolean; + + spawnProps?: { + [key: string]: ItemMetaStateEventHelperProps; + }; + + isApproximateLayout?: boolean; +}; + +export type ListIndexInfo = { + dimensions: IListDimensionsModel; + index?: number; +}; + +export type IndexInfo = + | ListGroupIndexInfo + | ListIndexInfo; diff --git a/core/item-meta/src/types/generic.types.ts b/core/item-meta/src/types/generic.types.ts new file mode 100644 index 00000000..297f824d --- /dev/null +++ b/core/item-meta/src/types/generic.types.ts @@ -0,0 +1,4 @@ +export type GenericItemT = { + [key: string]: any; +}; +export type GenericStateResult = any; diff --git a/core/item-meta/src/types/index.ts b/core/item-meta/src/types/index.ts new file mode 100644 index 00000000..5539650f --- /dev/null +++ b/core/item-meta/src/types/index.ts @@ -0,0 +1,9 @@ +export * from './ItemMeta.types'; +export * from './generic.types'; +export * from './BaseLayout.types'; + +// [TODO] +export type BaseDimensions = any; + +// [TODO] +// export type Dimension = any; diff --git a/core/item-meta/tsconfig.json b/core/item-meta/tsconfig.json new file mode 100644 index 00000000..192adc36 --- /dev/null +++ b/core/item-meta/tsconfig.json @@ -0,0 +1,23 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "commonjs", + "moduleResolution": "node", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ] +} diff --git a/core/item-meta/tsconfig.lib.json b/core/item-meta/tsconfig.lib.json new file mode 100644 index 00000000..0bd2106c --- /dev/null +++ b/core/item-meta/tsconfig.lib.json @@ -0,0 +1,13 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "declaration": true, + "types": ["node"], + // "paths": { + // "@infinite-list/viewable": ["../viewable/src/index.ts"] + // } + }, + "include": ["src/**/*.ts", "../../core/viewable/src/*"], + "exclude": ["vite.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"] +} diff --git a/core/item-meta/tsconfig.spec.json b/core/item-meta/tsconfig.spec.json new file mode 100644 index 00000000..3c002c21 --- /dev/null +++ b/core/item-meta/tsconfig.spec.json @@ -0,0 +1,26 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "types": [ + "vitest/globals", + "vitest/importMeta", + "vite/client", + "node", + "vitest" + ] + }, + "include": [ + "vite.config.ts", + "vitest.config.ts", + "src/**/*.test.ts", + "src/**/*.spec.ts", + "src/**/*.test.tsx", + "src/**/*.spec.tsx", + "src/**/*.test.js", + "src/**/*.spec.js", + "src/**/*.test.jsx", + "src/**/*.spec.jsx", + "src/**/*.d.ts" + ] +} diff --git a/core/item-meta/vite.config.ts b/core/item-meta/vite.config.ts new file mode 100644 index 00000000..f0344515 --- /dev/null +++ b/core/item-meta/vite.config.ts @@ -0,0 +1,28 @@ +import { defineConfig } from 'vite'; + +import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin'; +import { nxCopyAssetsPlugin } from '@nx/vite/plugins/nx-copy-assets.plugin'; + +export default defineConfig({ + root: __dirname, + cacheDir: '../../node_modules/.vite/core/item-meta', + + plugins: [nxViteTsPaths(), nxCopyAssetsPlugin(['*.md'])], + + // Uncomment this if you are using workers. + // worker: { + // plugins: [ nxViteTsPaths() ], + // }, + + test: { + watch: false, + globals: true, + environment: 'node', + include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], + reporters: ['default'], + coverage: { + reportsDirectory: '../../coverage/core/item-meta', + provider: 'v8', + }, + }, +}); diff --git a/core/state/.swcrc b/core/state/.swcrc new file mode 100644 index 00000000..28e88ec1 --- /dev/null +++ b/core/state/.swcrc @@ -0,0 +1,29 @@ +{ + "jsc": { + "target": "es2017", + "parser": { + "syntax": "typescript", + "decorators": true, + "dynamicImport": true + }, + "transform": { + "decoratorMetadata": true, + "legacyDecorator": true + }, + "keepClassNames": true, + "externalHelpers": true, + "loose": true + }, + "module": { + "type": "es6" + }, + "sourceMaps": true, + "exclude": [ + "jest.config.ts", + ".*\\.spec.tsx?$", + ".*\\.test.tsx?$", + "./src/jest-setup.ts$", + "./**/jest-setup.ts$", + ".*.js$" + ] +} diff --git a/core/state/README.md b/core/state/README.md new file mode 100644 index 00000000..ba08f763 --- /dev/null +++ b/core/state/README.md @@ -0,0 +1,11 @@ +# state + +This library was generated with [Nx](https://nx.dev). + +## Building + +Run `nx build state` to build the library. + +## Running unit tests + +Run `nx test state` to execute the unit tests via [Vitest](https://vitest.dev/). diff --git a/core/state/eslint.config.js b/core/state/eslint.config.js new file mode 100644 index 00000000..6e58c36a --- /dev/null +++ b/core/state/eslint.config.js @@ -0,0 +1,22 @@ +const baseConfig = require('../../eslint.config.js'); + +module.exports = [ + ...baseConfig, + { + files: ['**/*.json'], + rules: { + '@nx/dependency-checks': [ + 'error', + { + ignoredFiles: [ + '{projectRoot}/eslint.config.{js,cjs,mjs}', + '{projectRoot}/vite.config.{js,ts,mjs,mts}', + ], + }, + ], + }, + languageOptions: { + parser: require('jsonc-eslint-parser'), + }, + }, +]; diff --git a/core/state/package.json b/core/state/package.json new file mode 100644 index 00000000..922000c0 --- /dev/null +++ b/core/state/package.json @@ -0,0 +1,11 @@ +{ + "name": "@infinite-list/state", + "version": "0.0.1", + "dependencies": { + "@x-oasis/default-boolean-value": "^0.1.14", + "@x-oasis/default-value": "^0.1.35", + "@infinite-list/types": "workspace:*" + }, + "main": "./index.cjs", + "module": "./index.js" +} diff --git a/core/state/project.json b/core/state/project.json new file mode 100644 index 00000000..b449137e --- /dev/null +++ b/core/state/project.json @@ -0,0 +1,22 @@ +{ + "name": "state", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "core/state/src", + "projectType": "library", + "release": { + "version": { + "generatorOptions": { + "packageRoot": "dist/{projectRoot}", + "currentVersionResolver": "git-tag" + } + } + }, + "tags": [], + "targets": { + "nx-release-publish": { + "options": { + "packageRoot": "dist/{projectRoot}" + } + } + } +} diff --git a/core/state/rollup.config.js b/core/state/rollup.config.js new file mode 100644 index 00000000..a5203151 --- /dev/null +++ b/core/state/rollup.config.js @@ -0,0 +1,18 @@ +const { withNx } = require('@nx/rollup/with-nx'); + +module.exports = withNx( + { + main: './src/index.ts', + outputPath: '../../dist/core/state', + tsConfig: '../../tsconfig.json', + // tsConfig: './tsconfig.lib.json', + compiler: 'swc', + format: ['cjs', 'esm'], + assets: [{ input: '.', output: '.', glob: '*.md' }], + }, + { + // Provide additional rollup configuration here. See: https://rollupjs.org/configuration-options + // e.g. + // output: { sourcemap: true }, + } +); diff --git a/core/state/src/actions.ts b/core/state/src/actions.ts new file mode 100644 index 00000000..85c767ed --- /dev/null +++ b/core/state/src/actions.ts @@ -0,0 +1,119 @@ +import defaultBooleanValue from '@x-oasis/default-boolean-value'; +import { INVALID_LENGTH } from './common'; +import { ScrollMetrics } from './types'; +import { Action, ActionType, ReducerResult } from './types/types'; +import defaultValue from '@x-oasis/default-value'; +import { IListDimensions, IListGroupDimensions } from '@infinite-list/types'; + +export const resolveAction = ( + state: State, + props: { + scrollMetrics: ScrollMetrics; + dimension: IListDimensions | IListGroupDimensions; + }, + ctx: { + dataLength: number; + getState: () => State; + } +): Action | null => { + const { scrollMetrics, dimension } = props; + const { velocity = 0 } = scrollMetrics; + const currentState = { ...ctx.getState() }; + + const _info = dimension.getOnEndReachedHelper()?.perform(scrollMetrics); + const isEndReached = defaultBooleanValue( + _info?.isEndReached, + currentState.isEndReached + ); + const prevDataLength = ctx.dataLength; + const nextDataLength = dimension.getDataLength(); + + // isEndReached should not be rewrite, or trigger onEndReached... + let nextIsEndReached = isEndReached; + const distanceFromEnd = defaultValue( + _info?.distanceFromEnd, + currentState.distanceFromEnd + ); + + if (!nextIsEndReached) { + const { visibleEndIndex, visibleStartIndex } = state; + const total = dimension.getTotalLength(); + if ( + (visibleStartIndex !== -1 || visibleEndIndex !== -1) && + (total as any as string) !== INVALID_LENGTH && + dimension.hasUnLayoutItems() + ) { + const _containerOffset = dimension.getContainerOffset(); + const containerOffset = + typeof _containerOffset === 'number' ? _containerOffset : 0; + nextIsEndReached = !!dimension.getOnEndReachedHelper().perform({ + ...scrollMetrics, + contentLength: containerOffset + total, + })?.isEndReached; + } + } + + ctx.dataLength = nextDataLength; + + if (!prevDataLength && nextDataLength) { + return { + type: ActionType.Initial, + payload: { + dimension, + scrollMetrics, + isEndReached, + distanceFromEnd, + }, + }; + } + + if (nextIsEndReached) { + return { + type: ActionType.HydrationWithBatchUpdate, + payload: { + // pseudoVelocity, + dimension, + scrollMetrics, + isEndReached, + distanceFromEnd, + }, + }; + } + + if (velocity > 0) { + return { + type: ActionType.ScrollDown, + payload: { + dimension, + scrollMetrics, + isEndReached, + distanceFromEnd, + }, + }; + } + + if (velocity < 0) { + return { + type: ActionType.ScrollUp, + payload: { + // pseudoVelocity, + dimension, + scrollMetrics, + isEndReached, + distanceFromEnd, + }, + }; + } + + // 主要是解决,当动态删除item时,重新计算buffer逻辑 + return { + type: ActionType.Recalculate, + payload: { + dimension, + scrollMetrics, + isEndReached, + distanceFromEnd, + // pseudoVelocity, + }, + }; +}; diff --git a/core/state/src/common.ts b/core/state/src/common.ts new file mode 100644 index 00000000..02c2cff9 --- /dev/null +++ b/core/state/src/common.ts @@ -0,0 +1 @@ +export const INVALID_LENGTH = 'invalid_length'; diff --git a/core/state/src/createStore.ts b/core/state/src/createStore.ts new file mode 100644 index 00000000..b9ae7d40 --- /dev/null +++ b/core/state/src/createStore.ts @@ -0,0 +1,62 @@ +// import ListDimensions from '../ListDimensions'; +// import ListGroupDimensions from '../ListGroupDimensions'; + +import { IListDimensions, IListGroupDimensions } from '@infinite-list/types'; +import { ScrollMetrics } from './types'; +import { resolveAction } from './actions'; +import reducer from './reducer'; +import { Action, ActionType, Enhancer, ReducerResult } from './types/types'; + +function createStore( + enhancer?: Enhancer + // _reducer: EnhancedReducer = reducer +) { + let currentState: State = { + visibleStartIndex: -1, + visibleEndIndex: -1, + bufferedStartIndex: -1, + bufferedEndIndex: -1, + isEndReached: false, + distanceFromEnd: 0, + actionType: ActionType.Initial, + } as any as State; + + const getState = () => currentState; + + const storeContext = { + dataLength: 0, + getState, + }; + + const currentReducer = reducer(enhancer); + + const dispatch = (action: Action) => { + currentState = currentReducer(currentState, action); + return currentState; + }; + + const dispatchMetrics = (props: { + dimension: IListDimensions | IListGroupDimensions; + scrollMetrics: ScrollMetrics; + }) => { + const action = resolveAction(currentState, props, storeContext); + if (action) { + currentState = dispatch(action); + return currentState; + } + return currentState; + }; + + const setState = (state: State) => { + currentState = state; + }; + + return { + dispatch, + getState, + setState, + dispatchMetrics, + }; +} + +export default createStore; diff --git a/core/state/src/index.ts b/core/state/src/index.ts new file mode 100644 index 00000000..580ecfc9 --- /dev/null +++ b/core/state/src/index.ts @@ -0,0 +1,2 @@ +export { default as createStore } from './createStore'; +export * from './types'; diff --git a/core/state/src/middleware/hydrateOnEndReached.ts b/core/state/src/middleware/hydrateOnEndReached.ts new file mode 100644 index 00000000..e95d58d1 --- /dev/null +++ b/core/state/src/middleware/hydrateOnEndReached.ts @@ -0,0 +1,12 @@ +import { ActionPayload, Ctx, ReducerResult } from '../types/types'; + +export default ( + state: State, + payload: ActionPayload, + ctx: Ctx +) => { + const { isEndReached, distanceFromEnd } = payload; + + ctx.isEndReached = isEndReached; + ctx.distanceFromEnd = distanceFromEnd; +}; diff --git a/core/state/src/middleware/makeIndexMeaningful.ts b/core/state/src/middleware/makeIndexMeaningful.ts new file mode 100644 index 00000000..95678a8e --- /dev/null +++ b/core/state/src/middleware/makeIndexMeaningful.ts @@ -0,0 +1,22 @@ +import { ActionPayload, Ctx, ReducerResult } from '../types/types'; + +export default ( + state: State, + payload: ActionPayload, + ctx: Ctx +) => { + const { bufferedIndexRange } = ctx; + + // const { startIndex: visibleStartIndex, endIndex: visibleEndIndex } = + // visibleIndexRange; + const { startIndex: bufferedStartIndex, endIndex: bufferedEndIndex } = + bufferedIndexRange; + + // { visibleEndIndex: 5, visibleStartIndex: -1 } => { visibleEndIndex: 5, visibleStartIndex: 0 } + // { visibleEndIndex: -1, visibleStartIndex: 0 } => { visibleEndIndex: -1, visibleStartIndex: -1 } + // ctx.visibleIndexRange.startIndex = Math.max(visibleStartIndex, 0) + // visibleEndIndex >= 0 ? Math.max(visibleStartIndex, 0) : -1; + + ctx.bufferedIndexRange.startIndex = + bufferedEndIndex >= 0 ? Math.max(bufferedStartIndex, 0) : -1; +}; diff --git a/core/state/src/middleware/preCheck.ts b/core/state/src/middleware/preCheck.ts new file mode 100644 index 00000000..c5468a53 --- /dev/null +++ b/core/state/src/middleware/preCheck.ts @@ -0,0 +1,25 @@ +import { ActionPayload, ReducerResult } from '../types/types'; + +export default ( + state: State, + payload: ActionPayload +) => { + const { scrollMetrics } = payload; + const { contentLength, visibleLength } = scrollMetrics; + + if (!contentLength) { + console.warn( + '[infinite-list: data-model] `contentLength` should be given a meaningful' + + ' value instead of ' + + `'${contentLength}'` + ); + } + + if (!visibleLength) { + console.warn( + '[infinite-list: data-model] `visibleLength` should be given a meaningful' + + ' value instead of ' + + `'${visibleLength}'` + ); + } +}; diff --git a/core/state/src/middleware/resolveIndexRange.ts b/core/state/src/middleware/resolveIndexRange.ts new file mode 100644 index 00000000..975a3ba6 --- /dev/null +++ b/core/state/src/middleware/resolveIndexRange.ts @@ -0,0 +1,51 @@ +import { ActionPayload, Ctx, ReducerResult } from '../types/types'; +import { log } from '@infinite-list/utils'; + +export default ( + state: State, + payload: ActionPayload, + ctx: Ctx +) => { + const { dimension, scrollMetrics } = payload; + const { contentLength, offset, visibleLength = 0 } = scrollMetrics; + + const bufferSize = dimension.getBufferSize(); + const { minOffset, maxOffset } = dimension.resolveOffsetRange( + Math.max(offset - visibleLength * bufferSize, 0), + // should less than content length + + // for buffered max and min, only if contentLength is greater than 0, + // it should be in consider + contentLength + ? Math.min(offset + visibleLength * (bufferSize + 1), contentLength) + : offset + visibleLength * (bufferSize + 1) + ); + + const { minOffset: visibleMinOffset, maxOffset: visibleMaxOffset } = + dimension.resolveOffsetRange(offset, offset + visibleLength); + + const visibleIndexRange = dimension.computeIndexRange( + visibleMinOffset, + visibleMaxOffset + ); + + const bufferedIndexRange = dimension.computeIndexRange( + minOffset, + contentLength ? Math.min(maxOffset, contentLength) : maxOffset + ); + + log.info('scrollMetrics info ', { + minOffset: offset, + maxOffset: offset + visibleLength, + }); + log.info('visibleRange ', { visibleMinOffset, visibleMaxOffset }); + log.info('visibleIndexRange ', visibleIndexRange); + log.info('bufferedRange ', { + bufferedMinOffset: minOffset, + bufferedMaxOffset: Math.min(maxOffset, contentLength), + }); + log.info('bufferedIndexRange ', bufferedIndexRange); + + if (visibleIndexRange) ctx.visibleIndexRange = visibleIndexRange; + if (bufferedIndexRange) ctx.bufferedIndexRange = bufferedIndexRange; +}; diff --git a/core/state/src/middleware/resolveInitialState.ts b/core/state/src/middleware/resolveInitialState.ts new file mode 100644 index 00000000..98116ae8 --- /dev/null +++ b/core/state/src/middleware/resolveInitialState.ts @@ -0,0 +1,19 @@ +import { ActionPayload, ReducerResult } from '../types/types'; + +export default ( + state: State, + payload: ActionPayload + // ctx: Ctx +) => { + const { dimension } = payload; + + const initialNumToRender = dimension.initialNumToRender; + // const dataLength = dimension.getDataLength() + + if (initialNumToRender && dimension.getTotalLength()) { + // ctx.bufferedIndexRange = { + // startIndex: 0, + // endIndex: Math.min(initialNumToRender, dataLength), + // }; + } +}; diff --git a/core/state/src/middleware/resolveMaxIndex.ts b/core/state/src/middleware/resolveMaxIndex.ts new file mode 100644 index 00000000..61399fa3 --- /dev/null +++ b/core/state/src/middleware/resolveMaxIndex.ts @@ -0,0 +1,12 @@ +import { ActionPayload, Ctx, ReducerResult } from '../types/types'; + +export default ( + state: State, + payload: ActionPayload, + ctx: Ctx +) => { + const { dimension } = payload; + const maxIndex = dimension.getDataLength() - 1 || 0; + + ctx.maxIndex = maxIndex; +}; diff --git a/core/state/src/reducer.ts b/core/state/src/reducer.ts new file mode 100644 index 00000000..14cd4ee4 --- /dev/null +++ b/core/state/src/reducer.ts @@ -0,0 +1,351 @@ +import preCheck from './middleware/preCheck'; +import hydrateOnEndReached from './middleware/hydrateOnEndReached'; +import makeIndexMeaningful from './middleware/makeIndexMeaningful'; +import resolveIndexRange from './middleware/resolveIndexRange'; +import resolveMaxIndex from './middleware/resolveMaxIndex'; +// import fixVisibleRange from './middleware/fixVisibleRange'; +// import fixBufferedRange from './middleware/fixBufferedRange'; +// import fixInitialBufferedRange from './middleware/fixInitialBufferedRange'; +import resolveInitialState from './middleware/resolveInitialState'; +import { + Action, + ActionPayload, + ActionType, + Ctx, + Enhancer, + ReducerResult, + HydrationWithBatchUpdate, + Initial, + Recalculate, + ScrollDown, + ScrollUp, +} from './types/types'; +import { ReducerAtom } from './types'; + +const initialize = ( + state: State, + payload: ActionPayload, + enhancer?: Initial +): State => { + const ctx = {} as Ctx; + const applyMiddleware = (middlewares: ReducerAtom[]) => { + middlewares.forEach((middleware) => middleware(state, payload, ctx)); + }; + + if (typeof enhancer === 'function') { + enhancer( + { + resolveIndexRange, + hydrateOnEndReached, + resolveInitialState, + }, + applyMiddleware + ); + } else { + applyMiddleware([ + resolveIndexRange, + hydrateOnEndReached, + resolveInitialState, + ]); + // resolveIndexRange(state, payload, ctx); + // hydrateOnEndReached(state, payload, ctx); + // // fixVisibleRange(state, payload, ctx); + // // fixInitialBufferedRange(state, payload, ctx); + // resolveInitialState(state, payload); + } + + const { + visibleIndexRange, + bufferedIndexRange, + isEndReached, + distanceFromEnd, + } = ctx; + + return { + ...state, + isEndReached, + distanceFromEnd, + actionType: 'initial', + visibleStartIndex: visibleIndexRange.startIndex, + visibleEndIndex: visibleIndexRange.endIndex, + bufferedStartIndex: bufferedIndexRange.startIndex, + bufferedEndIndex: bufferedIndexRange.endIndex, + }; +}; + +const hydrationWithBatchUpdate = ( + state: State, + payload: ActionPayload, + enhancer?: HydrationWithBatchUpdate +): State => { + const ctx = {} as Ctx; + + const applyMiddleware = (middlewares: ReducerAtom[]) => { + middlewares.forEach((middleware) => middleware(state, payload, ctx)); + }; + + if (typeof enhancer === 'function') { + enhancer( + { + preCheck, + resolveIndexRange, + hydrateOnEndReached, + resolveMaxIndex, + makeIndexMeaningful, + }, + applyMiddleware + ); + } else { + applyMiddleware([ + preCheck, + resolveIndexRange, + hydrateOnEndReached, + resolveMaxIndex, + makeIndexMeaningful, + ]); + // preCheck(state, payload); + // resolveIndexRange(state, payload, ctx); + + // hydrateOnEndReached(state, payload, ctx); + // resolveMaxIndex(state, payload, ctx); + // // fixBufferedRange(state, payload, ctx); + // // fixVisibleRange(state, payload, ctx); + + // // should be the last + // makeIndexMeaningful(state, payload, ctx); + } + + const { + visibleIndexRange, + bufferedIndexRange, + maxIndex, + isEndReached, + distanceFromEnd, + } = ctx; + + return { + ...state, + isEndReached, + distanceFromEnd, + // pseudoVelocity: payload.pseudoVelocity, + actionType: 'hydrationWithBatchUpdate', + visibleStartIndex: visibleIndexRange.startIndex, + visibleEndIndex: Math.min(visibleIndexRange.endIndex, maxIndex), + bufferedStartIndex: bufferedIndexRange.startIndex, + bufferedEndIndex: bufferedIndexRange.endIndex, + }; +}; + +const recalculate = ( + state: State, + payload: ActionPayload, + enhancer?: Recalculate +): State => { + const ctx = {} as Ctx; + const applyMiddleware = (middlewares: ReducerAtom[]) => { + middlewares.forEach((middleware) => middleware(state, payload, ctx)); + }; + + if (typeof enhancer === 'function') { + enhancer( + { + preCheck, + resolveIndexRange, + hydrateOnEndReached, + resolveMaxIndex, + makeIndexMeaningful, + }, + applyMiddleware + ); + } else { + applyMiddleware([ + preCheck, + resolveIndexRange, + hydrateOnEndReached, + resolveMaxIndex, + makeIndexMeaningful, + ]); + + // preCheck(state, payload); + // resolveIndexRange(state, payload, ctx); + + // hydrateOnEndReached(state, payload, ctx); + // resolveMaxIndex(state, payload, ctx); + // // fixBufferedRange(state, payload, ctx); + // // fixVisibleRange(state, payload, ctx); + + // // should be the last + // makeIndexMeaningful(state, payload, ctx); + } + + const { + visibleIndexRange, + bufferedIndexRange, + maxIndex, + isEndReached, + distanceFromEnd, + } = ctx; + + return { + ...state, + isEndReached, + distanceFromEnd, + // pseudoVelocity: payload.pseudoVelocity, + actionType: 'recalculate', + visibleStartIndex: visibleIndexRange.startIndex, + visibleEndIndex: Math.min(visibleIndexRange.endIndex, maxIndex), + bufferedStartIndex: bufferedIndexRange.startIndex, + bufferedEndIndex: bufferedIndexRange.endIndex, + }; +}; + +const scrollDown = ( + state: State, + payload: ActionPayload, + enhancer?: ScrollDown +): State => { + const ctx = {} as Ctx; + const applyMiddleware = (middlewares: ReducerAtom[]) => { + middlewares.forEach((middleware) => middleware(state, payload, ctx)); + }; + if (typeof enhancer === 'function') { + enhancer( + { + preCheck, + resolveIndexRange, + hydrateOnEndReached, + resolveMaxIndex, + makeIndexMeaningful, + }, + applyMiddleware + ); + } else { + applyMiddleware([ + preCheck, + resolveIndexRange, + hydrateOnEndReached, + resolveMaxIndex, + makeIndexMeaningful, + ]); + // preCheck(state, payload); + // resolveIndexRange(state, payload, ctx); + + // hydrateOnEndReached(state, payload, ctx); + // resolveMaxIndex(state, payload, ctx); + // // fixBufferedRange(state, payload, ctx); + // // fixVisibleRange(state, payload, ctx); + + // // should be the last + // makeIndexMeaningful(state, payload, ctx); + } + + const { + visibleIndexRange, + bufferedIndexRange, + maxIndex, + isEndReached, + distanceFromEnd, + } = ctx; + + return { + ...state, + actionType: 'scrollDown', + isEndReached, + distanceFromEnd, + // pseudoVelocity: payload.pseudoVelocity, + visibleStartIndex: visibleIndexRange.startIndex, + visibleEndIndex: Math.min(visibleIndexRange.endIndex, maxIndex), + bufferedStartIndex: bufferedIndexRange.startIndex, + bufferedEndIndex: bufferedIndexRange.endIndex, + }; +}; + +const scrollUp = ( + state: State, + payload: ActionPayload, + enhancer?: ScrollUp +): State => { + const ctx = {} as Ctx; + const applyMiddleware = (middlewares: ReducerAtom[]) => { + middlewares.forEach((middleware) => middleware(state, payload, ctx)); + }; + if (typeof enhancer === 'function') { + enhancer( + { + preCheck, + resolveIndexRange, + hydrateOnEndReached, + resolveMaxIndex, + makeIndexMeaningful, + }, + applyMiddleware + ); + } else { + applyMiddleware([ + preCheck, + resolveIndexRange, + hydrateOnEndReached, + resolveMaxIndex, + makeIndexMeaningful, + ]); + // preCheck(state, payload); + // resolveIndexRange(state, payload, ctx); + + // hydrateOnEndReached(state, payload, ctx); + // resolveMaxIndex(state, payload, ctx); + // // fixBufferedRange(state, payload, ctx); + // // fixVisibleRange(state, payload, ctx); + + // // should be the last + // makeIndexMeaningful(state, payload, ctx); + } + + const { + visibleIndexRange, + bufferedIndexRange, + maxIndex, + isEndReached, + distanceFromEnd, + } = ctx; + + return { + ...state, + isEndReached, + distanceFromEnd, + actionType: 'scrollUp', + // pseudoVelocity: payload.pseudoVelocity, + visibleStartIndex: visibleIndexRange.startIndex, + visibleEndIndex: Math.min(visibleIndexRange.endIndex, maxIndex), + bufferedStartIndex: bufferedIndexRange.startIndex, + bufferedEndIndex: Math.min(bufferedIndexRange.endIndex, maxIndex), + }; +}; + +export default ( + enhancer?: Enhancer + ) => + (state: State, action: Action) => { + const { type, payload } = action; + const nextEnhancer = enhancer || {}; + + switch (type) { + case ActionType.HydrationWithBatchUpdate: + return hydrationWithBatchUpdate( + state, + payload, + nextEnhancer[ActionType.HydrationWithBatchUpdate] + ); + case ActionType.ScrollDown: + return scrollDown(state, payload, nextEnhancer[ActionType.ScrollDown]); + case ActionType.ScrollUp: + return scrollUp(state, payload, nextEnhancer[ActionType.ScrollUp]); + case ActionType.Initial: + return initialize(state, payload, nextEnhancer[ActionType.Initial]); + case ActionType.Recalculate: + return recalculate( + state, + payload, + nextEnhancer[ActionType.Recalculate] + ); + } + }; diff --git a/core/state/src/types/index.ts b/core/state/src/types/index.ts new file mode 100644 index 00000000..3882aa8a --- /dev/null +++ b/core/state/src/types/index.ts @@ -0,0 +1,2 @@ +export * from './scrollMetrics.types'; +export * from './types'; diff --git a/core/state/src/types/scrollMetrics.types.ts b/core/state/src/types/scrollMetrics.types.ts new file mode 100644 index 00000000..9b779202 --- /dev/null +++ b/core/state/src/types/scrollMetrics.types.ts @@ -0,0 +1,50 @@ +export interface ScrollRectangle { + left: number; + top: number; + bottom: number; + right: number; +} + +export interface ScrollPoint { + x: number; + y: number; +} + +export interface ScrollVelocity { + x: number; + y: number; +} + +export interface ScrollSize { + height: number; + width: number; +} +export type ScrollEventMetrics = { + contentInset: ScrollRectangle; + contentOffset: ScrollPoint; + contentSize: ScrollSize; + layoutMeasurement: ScrollSize; + velocity?: ScrollVelocity | undefined; + zoomScale: number; + /** + * @platform ios + */ + targetContentOffset?: ScrollPoint | undefined; +}; + +export type ScrollMetrics = { + contentLength: number; + offset: number; + visibleLength: number; + + // not used + dOffset?: number; + dt?: number; + timestamp?: number; + velocity?: number; +}; + +export type ContentSize = { + width: number; + height: number; +}; diff --git a/core/state/src/types/types.ts b/core/state/src/types/types.ts new file mode 100644 index 00000000..5d597942 --- /dev/null +++ b/core/state/src/types/types.ts @@ -0,0 +1,149 @@ +// import ListDimensions from '../ListDimensions'; +// import ListGroupDimensions from '../ListGroupDimensions'; + +import { IListDimensions, IListGroupDimensions } from '@infinite-list/types'; +import { ScrollMetrics } from './scrollMetrics.types'; + +export type ReducerResult = { + visibleStartIndex: number; + visibleEndIndex: number; + bufferedStartIndex: number; + bufferedEndIndex: number; + isEndReached: boolean; + distanceFromEnd: number; + actionType: ActionType; +}; + +export type ActionPayload = { + dimension: IListDimensions | IListGroupDimensions; + scrollMetrics: ScrollMetrics; + isEndReached: boolean; + distanceFromEnd: number; +}; + +export enum ActionType { + HydrationWithBatchUpdate = 'hydrationWithBatchUpdate', + ScrollDown = 'scrollDown', + ScrollUp = 'scrollUp', + Recalculate = 'recalculate', + Initial = 'initial', +} + +export type RawAction = { + type: ActionType; // 应用触底了,但是List仍旧有数据没有渲染 + payload: { + dimension: IListDimensions | IListGroupDimensions; + scrollMetrics: ScrollMetrics; + }; +}; + +export type Action = { + type: ActionType; // 应用触底了,但是List仍旧有数据没有渲染 + payload: ActionPayload; +}; + +export type Reducer = (state: State, action: Action) => State; + +type Dispatch = (action: Action) => State; +type DispatchMetrics = (props: { + dimension: IListDimensions | IListGroupDimensions; + scrollMetrics: ScrollMetrics; +}) => State; + +export type Store = { + dispatch: Dispatch; + dispatchMetrics: DispatchMetrics; + getState: () => State; + setState: (state: State) => void; +}; + +export type CreateStore = ( + reducer?: Reducer | Enhancer +) => Store; + +export type EnhancedReducer = ( + enhancer?: Enhancer +) => (state: State, action: Action) => void; + +export type Ctx = { + maxIndex: number; + visibleIndexRange: { + startIndex: number; + endIndex: number; + }; + bufferedIndexRange: { + startIndex: number; + endIndex: number; + }; + isEndReached: boolean; + distanceFromEnd: number; +}; + +export type ReducerAtom = ( + state: State, + payload: ActionPayload, + ctx: Ctx +) => void; + +export type ApplyMiddleware = ( + middlewares: ReducerAtom[] +) => void; + +export type HydrationWithBatchUpdate< + State extends ReducerResult = ReducerResult +> = ( + reducers: { + preCheck: ReducerAtom; + resolveIndexRange: ReducerAtom; + hydrateOnEndReached: ReducerAtom; + resolveMaxIndex: ReducerAtom; + makeIndexMeaningful: ReducerAtom; + }, + applyMiddleware: ApplyMiddleware +) => void; +export type Initial = ( + reducers: { + resolveIndexRange: ReducerAtom; + hydrateOnEndReached: ReducerAtom; + resolveInitialState: ReducerAtom; + }, + applyMiddleware: ApplyMiddleware +) => void; +export type Recalculate = ( + reducers: { + preCheck: ReducerAtom; + resolveIndexRange: ReducerAtom; + hydrateOnEndReached: ReducerAtom; + resolveMaxIndex: ReducerAtom; + makeIndexMeaningful: ReducerAtom; + }, + applyMiddleware: ApplyMiddleware +) => void; +export type ScrollDown = ( + reducers: { + preCheck: ReducerAtom; + resolveIndexRange: ReducerAtom; + hydrateOnEndReached: ReducerAtom; + resolveMaxIndex: ReducerAtom; + makeIndexMeaningful: ReducerAtom; + }, + applyMiddleware: ApplyMiddleware +) => void; +export type ScrollUp = ( + reducers: { + preCheck: ReducerAtom; + resolveIndexRange: ReducerAtom; + hydrateOnEndReached: ReducerAtom; + resolveMaxIndex: ReducerAtom; + makeIndexMeaningful: ReducerAtom; + }, + applyMiddleware: ApplyMiddleware +) => void; + +export type Enhancer = { + [ActionType.Initial]?: Initial; + [ActionType.HydrationWithBatchUpdate]?: HydrationWithBatchUpdate; + [ActionType.Recalculate]?: Recalculate; + [ActionType.ScrollDown]?: ScrollDown; + [ActionType.ScrollUp]?: ScrollUp; +}; diff --git a/core/state/tsconfig.json b/core/state/tsconfig.json new file mode 100644 index 00000000..8d9d5912 --- /dev/null +++ b/core/state/tsconfig.json @@ -0,0 +1,22 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "commonjs", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ] +} diff --git a/core/state/tsconfig.lib.json b/core/state/tsconfig.lib.json new file mode 100644 index 00000000..ce3b531c --- /dev/null +++ b/core/state/tsconfig.lib.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "declaration": true, + "types": ["node"] + }, + "include": ["src/**/*.ts"], + "exclude": ["vite.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"] +} diff --git a/core/state/tsconfig.spec.json b/core/state/tsconfig.spec.json new file mode 100644 index 00000000..3c002c21 --- /dev/null +++ b/core/state/tsconfig.spec.json @@ -0,0 +1,26 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "types": [ + "vitest/globals", + "vitest/importMeta", + "vite/client", + "node", + "vitest" + ] + }, + "include": [ + "vite.config.ts", + "vitest.config.ts", + "src/**/*.test.ts", + "src/**/*.spec.ts", + "src/**/*.test.tsx", + "src/**/*.spec.tsx", + "src/**/*.test.js", + "src/**/*.spec.js", + "src/**/*.test.jsx", + "src/**/*.spec.jsx", + "src/**/*.d.ts" + ] +} diff --git a/core/state/vite.config.ts b/core/state/vite.config.ts new file mode 100644 index 00000000..316fc5dd --- /dev/null +++ b/core/state/vite.config.ts @@ -0,0 +1,25 @@ +import { defineConfig } from 'vite'; + +import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin'; +import { nxCopyAssetsPlugin } from '@nx/vite/plugins/nx-copy-assets.plugin'; + +export default defineConfig({ + root: __dirname, + cacheDir: '../../node_modules/.vite/core/state', + + plugins: [nxViteTsPaths(), nxCopyAssetsPlugin(['*.md'])], + + // Uncomment this if you are using workers. + // worker: { + // plugins: [ nxViteTsPaths() ], + // }, + + test: { + watch: false, + globals: true, + environment: 'node', + include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], + reporters: ['default'], + coverage: { reportsDirectory: '../../coverage/core/state', provider: 'v8' }, + }, +}); diff --git a/core/strategies/.swcrc b/core/strategies/.swcrc new file mode 100644 index 00000000..28e88ec1 --- /dev/null +++ b/core/strategies/.swcrc @@ -0,0 +1,29 @@ +{ + "jsc": { + "target": "es2017", + "parser": { + "syntax": "typescript", + "decorators": true, + "dynamicImport": true + }, + "transform": { + "decoratorMetadata": true, + "legacyDecorator": true + }, + "keepClassNames": true, + "externalHelpers": true, + "loose": true + }, + "module": { + "type": "es6" + }, + "sourceMaps": true, + "exclude": [ + "jest.config.ts", + ".*\\.spec.tsx?$", + ".*\\.test.tsx?$", + "./src/jest-setup.ts$", + "./**/jest-setup.ts$", + ".*.js$" + ] +} diff --git a/core/strategies/README.md b/core/strategies/README.md new file mode 100644 index 00000000..36310262 --- /dev/null +++ b/core/strategies/README.md @@ -0,0 +1,11 @@ +# strategies + +This library was generated with [Nx](https://nx.dev). + +## Building + +Run `nx build strategies` to build the library. + +## Running unit tests + +Run `nx test strategies` to execute the unit tests via [Vitest](https://vitest.dev/). diff --git a/core/strategies/eslint.config.js b/core/strategies/eslint.config.js new file mode 100644 index 00000000..6e58c36a --- /dev/null +++ b/core/strategies/eslint.config.js @@ -0,0 +1,22 @@ +const baseConfig = require('../../eslint.config.js'); + +module.exports = [ + ...baseConfig, + { + files: ['**/*.json'], + rules: { + '@nx/dependency-checks': [ + 'error', + { + ignoredFiles: [ + '{projectRoot}/eslint.config.{js,cjs,mjs}', + '{projectRoot}/vite.config.{js,ts,mjs,mts}', + ], + }, + ], + }, + languageOptions: { + parser: require('jsonc-eslint-parser'), + }, + }, +]; diff --git a/core/strategies/package.json b/core/strategies/package.json new file mode 100644 index 00000000..72b8a4ff --- /dev/null +++ b/core/strategies/package.json @@ -0,0 +1,14 @@ +{ + "name": "@infinite-list/strategies", + "version": "0.0.1", + "dependencies": { + "@infinite-list/types": "workspace:*", + "@x-oasis/batchinator": "^0.1.14", + "@x-oasis/default-boolean-value": "^0.1.14", + "@x-oasis/default-value": "^0.1.35", + "@x-oasis/is-clamped": "^0.1.14", + "@x-oasis/recycler": "^0.1.37" + }, + "main": "./index.cjs", + "module": "./index.js" +} diff --git a/core/strategies/project.json b/core/strategies/project.json new file mode 100644 index 00000000..33cd4b03 --- /dev/null +++ b/core/strategies/project.json @@ -0,0 +1,22 @@ +{ + "name": "strategies", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "core/strategies/src", + "projectType": "library", + "release": { + "version": { + "generatorOptions": { + "packageRoot": "dist/{projectRoot}", + "currentVersionResolver": "git-tag" + } + } + }, + "tags": [], + "targets": { + "nx-release-publish": { + "options": { + "packageRoot": "dist/{projectRoot}" + } + } + } +} diff --git a/core/strategies/rollup.config.js b/core/strategies/rollup.config.js new file mode 100644 index 00000000..3315c0e2 --- /dev/null +++ b/core/strategies/rollup.config.js @@ -0,0 +1,18 @@ +const { withNx } = require('@nx/rollup/with-nx'); + +module.exports = withNx( + { + main: './src/index.ts', + outputPath: '../../dist/core/strategies', + tsConfig: '../../tsconfig.json', + // tsConfig: './tsconfig.lib.json', + compiler: 'swc', + format: ['cjs', 'esm'], + assets: [{ input: '.', output: '.', glob: '*.md' }], + }, + { + // Provide additional rollup configuration here. See: https://rollupjs.org/configuration-options + // e.g. + // output: { sourcemap: true }, + } +); diff --git a/core/strategies/src/BaseImpl.ts b/core/strategies/src/BaseImpl.ts new file mode 100644 index 00000000..edf21a84 --- /dev/null +++ b/core/strategies/src/BaseImpl.ts @@ -0,0 +1,361 @@ +import Batchinator from '@x-oasis/batchinator'; +import defaultBooleanValue from '@x-oasis/default-boolean-value'; +import { ItemMeta } from '@infinite-list/item-meta'; + +import { + isEmpty, + DISPATCH_METRICS_THRESHOLD, + ON_END_REACHED_THRESHOLD, + STILLNESS_THRESHOLD, +} from './common'; +import { + ListBaseDimensionsProps, + ScrollMetrics, + ItemLayout, + StateListener, + ListBaseDimensionsStore, + GenericItemT, + // IndexInfo, + IndexToOffsetMap, + ListStateResult, + ReducerResult, +} from './types'; +import { IndexInfo } from '@infinite-list/item-meta'; +import { OnEndReached } from '@infinite-list/viewable'; +import { + ListSpyUtils, + EnabledSelector, + StillnessHelper, +} from '@infinite-list/utils'; +import { + OnEndReachedHelper, + ViewabilityConfigTuples, +} from '@infinite-list/viewable'; +import { BaseLayout } from '@infinite-list/base-dimensions'; +// import ListSpyUtils from '../utils/ListSpyUtils'; +// import OnEndReachedHelper from '../viewable/OnEndReachedHelper'; +// import EnabledSelector from '../utils/EnabledSelector'; +// import StillnessHelper from '../utils/StillnessHelper'; +// import ViewabilityConfigTuples from '../viewable/ViewabilityConfigTuples'; + +// import BaseLayout from '../BaseLayout'; +import StateHub from './StateHub'; + +/** + * item should be first class data model; item's value reference change will + * cause recalculation of item key. However, if key is not changed, its itemMeta + * will not change. + */ +abstract class BaseImpl< + ItemT extends GenericItemT = GenericItemT +> extends BaseLayout { + private _setMetricsBatchinator: Batchinator; + + private _onEndReachedThreshold: number; + + private _stateHub: StateHub; + + private _store: ListBaseDimensionsStore; + + readonly onEndReachedHelper: OnEndReachedHelper; + + public _scrollMetrics?: ScrollMetrics; + + private _selector = new EnabledSelector({ + onEnabled: this.onEnableDispatchScrollMetrics.bind(this), + }); + + private _stillnessHelper: StillnessHelper; + + _configTuple: ViewabilityConfigTuples; + + constructor(props: ListBaseDimensionsProps) { + super(props); + const { + store, + + viewabilityConfig, + onViewableItemsChanged, + viewabilityConfigCallbackPairs, + + dispatchMetricsThreshold = DISPATCH_METRICS_THRESHOLD, + + stillnessThreshold = STILLNESS_THRESHOLD, + + onEndReached, + onEndReachedThreshold = ON_END_REACHED_THRESHOLD, + onEndReachedTimeoutThreshold, + distanceFromEndThresholdValue, + onEndReachedHandlerTimeoutThreshold, + + maxCountOfHandleOnEndReachedAfterStillness, + } = props; + this._store = store; + this._stateHub = new StateHub({ + listContainer: this, + recyclerTypes: props.recyclerTypes, + // recycleEnabled, + onRecyclerProcess: props.onRecyclerProcess, + recyclerBufferSize: props.recyclerBufferSize, + recyclerReservedBufferPerBatch: props.recyclerReservedBufferPerBatch, + }); + + this._onEndReachedThreshold = onEndReachedThreshold; + this.stillnessHandler = this.stillnessHandler.bind(this); + + this.onEndReachedHelper = new OnEndReachedHelper({ + id: this.id, + onEndReached, + onEndReachedThreshold, + onEndReachedTimeoutThreshold, + distanceFromEndThresholdValue, + onEndReachedHandlerTimeoutThreshold, + maxCountOfHandleOnEndReachedAfterStillness, + }); + + this._configTuple = new ViewabilityConfigTuples({ + viewabilityConfig, + onViewableItemsChanged, + viewabilityConfigCallbackPairs, + isListItem: true, + }); + + this._stillnessHelper = new StillnessHelper({ + stillnessThreshold, + handler: this.stillnessHandler, + }); + + this._setMetricsBatchinator = new Batchinator( + this.setMetrics.bind(this), + dispatchMetricsThreshold + ); + } + + get length() { + return this._data.length; + } + + get store() { + return this._store; + } + + get selector() { + return this._selector; + } + + get onEndReachedThreshold() { + return this.onEndReachedHelper?.onEndReachedThreshold; + } + + setScrollMetrics(scrollMetrics: ScrollMetrics) { + this._scrollMetrics = scrollMetrics; + if (!this._scrollMetrics && scrollMetrics) { + this.attemptToHandleEndReached(); + } + } + + get state() { + return this.store.getState(); + } + + getState() { + return this.state; + } + + addOnEndReached(onEndReached: OnEndReached) { + return this.onEndReachedHelper?.addHandler(onEndReached); + } + + removeOnEndReached(onEndReached: OnEndReached) { + this.onEndReachedHelper?.removeHandler(onEndReached); + } + + addBuffer(type: string) { + this._stateHub.addBuffer(type); + } + + getOnEndReachedHelper() { + return this.onEndReachedHelper; + } + + /** + * + * @returns TODO: temp + */ + // abstract getContainerOffset(): number + + get _data() { + return this.getData(); + } + + abstract getData(): ItemT[]; + abstract getDataLength(): number; + abstract getTotalLength(): number | string; + abstract getReflowItemsLength(): number; + abstract getFinalItemKey(item: ItemT): string; + abstract getFinalIndexItemMeta( + index: number + ): ItemMeta | null | undefined; + abstract getFinalItemMeta(item: ItemT): ItemMeta | null | undefined; + abstract getFinalIndexItemLength(index: number): number; + abstract getFinalIndexKeyOffset(index: number, exclusive?: boolean): number; + abstract getFinalIndexKeyBottomOffset(index: number): number; + abstract setFinalKeyItemLayout( + key: string, + info: ItemLayout | number, + updateIntervalTree?: boolean + ): boolean; + /** + * + * @param startIndex + * @param endIndex + * @param exclusive + * + * on calculate offset, the startIndex offset is get directly from intervalTree. + * However its consecutive item's offset should make by its itemMeta.isApproximateLayout + * + * if itemMeta.isApproximateLayout is true, then its offset should be + * `itemOffsetBeforeLayoutReady`, However its length should be included in + * consecutive item's offset sum value !!!! + * + */ + abstract getFinalIndexRangeOffsetMap( + startIndex: number, + endIndex: number, + exclusive?: boolean + ): IndexToOffsetMap; + abstract computeIndexRange( + minOffset: number, + maxOffset: number + ): { + startIndex: number; + endIndex: number; + }; + abstract getFinalKeyIndexInfo( + itemKey: string, + groupId?: string + ): IndexInfo | null; + abstract onDataSourceChanged(): void; + abstract onItemLayoutChanged(): void; + + hasUnLayoutItems() { + return this.getReflowItemsLength() < this._data.length; + } + + /** + * trigger on set scrollMetics with valid value + */ + attemptToHandleEndReached() { + this.onEndReachedHelper?.attemptToHandleOnEndReachedBatchinator.schedule(); + } + + resetViewableItems() { + if (this._scrollMetrics) this.setMetrics(this._scrollMetrics); + } + + getConfigTuple() { + return this._configTuple; + } + + resolveConfigTuplesDefaultState(defaultValue?: boolean) { + return this._configTuple.getDefaultState(defaultValue); + } + + addStateListener(listener: StateListener) { + return this._stateHub.addStateListener(listener); + } + + setStoreMetrics(scrollMetrics: ScrollMetrics) { + const state = this._store.dispatchMetrics({ + // @ts-ignore + dimension: this, + scrollMetrics, + }); + + if (!isEmpty(state)) { + this._stateHub.setState({ ...state }); + } + } + + dispatchMetrics( + scrollMetrics: ScrollMetrics | undefined = this._scrollMetrics + ): [ListStateResult, ListStateResult] { + if (!scrollMetrics) + return [this._stateHub.getStateResult(), this._stateHub.getStateResult()]; + const state = this._store.dispatchMetrics({ + // @ts-ignore + dimension: this, + scrollMetrics, + }); + + return this._stateHub.dispatchState(state); + } + + setMetrics(scrollMetrics: ScrollMetrics | undefined = this._scrollMetrics) { + if (!scrollMetrics) return; + this.setStoreMetrics(scrollMetrics); + + const { isEndReached, distanceFromEnd } = this._store.getState(); + + this.onEndReachedHelper?.performEndReached({ + isEndReached, + distanceFromEnd, + }); + } + + dispatchScrollMetricsEnabled() { + return ( + this.selector.getDispatchScrollMetricsEnabledStatus() && + ListSpyUtils.selector.getDispatchScrollMetricsEnabledStatus() + ); + } + + onEnableDispatchScrollMetrics() { + this.setMetrics(this._scrollMetrics); + } + + stillnessHandler() { + this.setMetrics(this._scrollMetrics); + } + + isStill() { + return this._stillnessHelper.isStill; + } + + getStateResult() { + return this.stateResult; + } + + get stateResult() { + return this._stateHub.stateResult; + } + + _updateScrollMetrics( + _scrollMetrics?: ScrollMetrics, + _options?: { + useCache?: boolean; + flush?: boolean; + } + ) { + const scrollMetrics = _scrollMetrics || this._scrollMetrics; + const flush = defaultBooleanValue(_options?.flush, false); + + if (!scrollMetrics) return; + if (!this.dispatchScrollMetricsEnabled()) { + this.setScrollMetrics(scrollMetrics); + return; + } + + this.setScrollMetrics(scrollMetrics); + + if (flush) { + this._setMetricsBatchinator.flush(scrollMetrics); + } else { + this._setMetricsBatchinator.schedule(scrollMetrics); + } + + return; + } +} + +export default BaseImpl; diff --git a/core/strategies/src/BaseState.ts b/core/strategies/src/BaseState.ts new file mode 100644 index 00000000..aedeac1b --- /dev/null +++ b/core/strategies/src/BaseState.ts @@ -0,0 +1,39 @@ +import { + GenericItemT, + ListState, + BaseStateImplProps, + ListStateResult, +} from './types'; +import BaseImpl from './BaseImpl'; + +abstract class BaseState { + public listContainer: BaseImpl; + + constructor(props: BaseStateImplProps) { + this.listContainer = props.listContainer; + } + + /** + * + * @param state + * @param force + * + * Pay attention if you want to compare state first, then decide setState or not.. + * There is a condition the old and new stat are same, but item meta info changed + * such as approximateLayout props change, then the list should rerun + * + */ + abstract setState(state: ListState, force?: boolean): void; + + /** + * + * @param stateResult + * + * callback function to passing to resolved state to UI Component + */ + abstract applyStateResult(stateResult: ListStateResult): void; + + abstract getStateResult(): ListStateResult; +} + +export default BaseState; diff --git a/core/strategies/src/RecycleStateImpl.ts b/core/strategies/src/RecycleStateImpl.ts new file mode 100644 index 00000000..2b0ae6b5 --- /dev/null +++ b/core/strategies/src/RecycleStateImpl.ts @@ -0,0 +1,412 @@ +import Recycler, { OnRecyclerProcess } from '@x-oasis/recycler'; +import { ItemMeta } from '@infinite-list/item-meta'; +// import memoizeOne from 'memoize-one'; +import { + buildStateTokenIndexKey, + DEFAULT_RECYCLER_TYPE, + RECYCLER_BUFFER_SIZE, + RECYCLER_RESERVED_BUFFER_PER_BATCH, +} from './common'; +import { + ListState, + RecycleStateResult, + RecycleRecycleState, + GenericItemT, + StateListener, + SpaceStateResult, + RecycleStateImplProps, +} from './types'; +import { ListGroupIndexInfo } from '@infinite-list/types'; + +import { resolveToken } from './utils'; +import BaseState from './BaseState'; +import { log } from '@infinite-list/utils'; +// import * as log from '../utils/logger'; +import defaultValue from '@x-oasis/default-value'; +/** + * item should be first class data model; item's value reference change will + * cause recalculation of item key. However, if key is not changed, its itemMeta + * will not change. + */ +class RecycleStateImpl< + ItemT extends GenericItemT = GenericItemT +> extends BaseState { + private _onRecyclerProcess?: OnRecyclerProcess; + public stateListener?: StateListener; + + private _recycler: Recycler>; + + private _stateResult: RecycleStateResult = { + recycleState: [], + spaceState: [], + rangeState: {} as any, + }; + + private memoizedResolveRecycleState: ( + state: ListState + ) => RecycleStateResult; + + constructor(props: RecycleStateImplProps) { + super({ + listContainer: props.listContainer, + }); + const { + recyclerTypes = [DEFAULT_RECYCLER_TYPE], + recyclerBufferSize = RECYCLER_BUFFER_SIZE, + recyclerReservedBufferPerBatch = RECYCLER_RESERVED_BUFFER_PER_BATCH, + + onRecyclerProcess, + } = props; + + this._onRecyclerProcess = onRecyclerProcess; + // this._releaseSpaceStateItem = releaseSpaceStateItem; + + this._recycler = new Recycler>({ + // the following is appended with setting default recyclerType + recyclerTypes, + recyclerBufferSize, + recyclerReservedBufferPerBatch, + /** + * set recycle start item + */ + thresholdIndexValue: this.listContainer.initialNumToRender, + metaExtractor: (index) => { + // console.log('met ---- ', index, this.listContainer.getFinalIndexItemMeta(index)) + return this.listContainer.getFinalIndexItemMeta(index); + }, + indexExtractor: (meta: ItemMeta) => { + const indexInfo = meta.getIndexInfo(); + const index = + (indexInfo as ListGroupIndexInfo)?.indexInGroup || + indexInfo?.index; + if (typeof index !== 'number') { + console.error( + '[RecycleStateImpl error]: index should has a valid number ' + + 'or will cause recycler not work correctly' + ); + } + return defaultValue(index, -1); + }, + getMetaType: (meta) => meta.recyclerType, + getType: (index) => + this.listContainer.getFinalIndexItemMeta(index)?.recyclerType || + DEFAULT_RECYCLER_TYPE, + }); + + // default recyclerTypes should be set immediately + this.initializeDefaultRecycleBuffer(); + + this.memoizedResolveRecycleState = this.resolveRecycleState.bind(this); + // this.memoizedResolveRecycleState = memoizeOne( + // this.resolveRecycleState.bind(this) + // ); + } + + initializeDefaultRecycleBuffer() { + this.addBuffer(DEFAULT_RECYCLER_TYPE); + } + + addBuffer(recyclerType: string) { + this._recycler.addBuffer(recyclerType); + } + + // _recycleEnabled() { + // if (this.fillingMode !== FillingMode.RECYCLE) return false; + // return this.getReflowItemsLength() >= this.initialNumToRender; + // } + + addStateListener(listener: StateListener) { + const isFunction = typeof listener === 'function'; + if (isFunction) this.stateListener = listener; + return () => { + if (isFunction) this.stateListener = undefined; + }; + } + + applyStateResult(stateResult: RecycleStateResult) { + if (typeof this.stateListener === 'function') { + const { recycleState: _recycleState, spaceState } = stateResult; + + const recycleState = _recycleState + .map((state) => { + if (!state) return null; + const copy = { ...state }; + // @ts-expect-error + delete copy.viewable; + + return copy; + }) + .filter((v) => v != null); + + // TODO: when to reset + if ( + (this._stateResult as RecycleStateResult).recycleState.length && + !recycleState.length + ) { + this._recycler.reset(); + } + + this.stateListener( + { + recycleState, + spaceState, + rangeState: stateResult.rangeState, + }, + this._stateResult + ); + } + + this._stateResult = { ...stateResult }; + } + + resolveRecycleState(state: ListState) { + // const recycleEnabled = this._recycleEnabled(); + // 只有当recycleEnabled为true的时候,才进行位置替换 + const recycleStateResult = this.resolveRecycleRecycleState(state); + const spaceStateResult = this.resolveRecycleSpaceState(); + + const stateResult = { + recycleState: recycleStateResult.filter((v) => v), + spaceState: spaceStateResult.filter((v) => v), + rangeState: state, + }; + + return stateResult; + } + + /** + * + * @param state + * @param force + * + * Pay attention if you want to compare state first, then decide setState or not.. + * There is a condition the old and new stat are same, but item meta info changed + * such as approximateLayout props change, then the list should rerun + * + */ + + setState(state: ListState, force = false) { + const stateResult = force + ? this.resolveRecycleState(state) + : this.memoizedResolveRecycleState(state); + this.applyStateResult(stateResult); + } + + dispatchState( + state: ListState, + force = false + ): [RecycleStateResult, RecycleStateResult] { + const oldStateResult = { ...this._stateResult }; + const stateResult = force + ? this.resolveRecycleState(state) + : this.memoizedResolveRecycleState(state); + this._stateResult = stateResult; + + return [stateResult, oldStateResult]; + } + + getStateResult() { + return this._stateResult; + } + + resolveSafeRange(props: { + visibleStartIndex: number; + visibleEndIndex: number; + }) { + const { visibleStartIndex, visibleEndIndex } = props; + + return { + startIndex: visibleStartIndex, + endIndex: visibleEndIndex, + }; + } + + resolveRecycleRecycleState(state: ListState) { + const { visibleEndIndex, visibleStartIndex: _visibleStartIndex } = state; + const recycleRecycleStateResult: RecycleRecycleState = []; + const velocity = this.listContainer._scrollMetrics?.velocity || 0; + + const visibleStartIndex = Math.max( + _visibleStartIndex, + this._recycler.thresholdIndexValue + ); + + const safeRange = this.resolveSafeRange({ + visibleStartIndex, + visibleEndIndex, + }); + + const recycleBufferedCount = this._recycler.recyclerReservedBufferPerBatch; + + if (Math.abs(velocity) <= 1) { + const startIndex = Math.max( + visibleStartIndex - Math.ceil(recycleBufferedCount / 2), + this._recycler.thresholdIndexValue + ); + + this._recycler.updateIndices({ + safeRange, + startIndex, + maxCount: recycleBufferedCount, + step: 1, + onProcess: this._onRecyclerProcess, + /** TODO !!!!!! */ + // maxIndex: this.getData().length, + }); + } else if (velocity > 0) { + // iOS scroll up velocity > 0 + this._recycler.updateIndices({ + safeRange, + startIndex: visibleStartIndex, + maxCount: recycleBufferedCount, + step: 1, + onProcess: this._onRecyclerProcess, + /** TODO */ + // maxIndex: this.getData().length, + }); + } else { + this._recycler.updateIndices({ + safeRange, + startIndex: visibleEndIndex, + maxCount: recycleBufferedCount, + step: -1, + onProcess: this._onRecyclerProcess, + /** TODO */ + // maxIndex: this.getData().length, + }); + } + + // should getIndices first, then resolve minValue or maxValue + const targetIndices = this._recycler.getIndices(); + + const minValue = this._recycler.getMinValue(); + const maxValue = this._recycler.getMaxValue(); + + // maybe should split by recyclerType + const indexToOffsetMap = this.listContainer.getFinalIndexRangeOffsetMap( + minValue, + maxValue, + true + ); + + log.info('target indices ', { ...state }, targetIndices.slice()); + + targetIndices + .filter((v) => v) + .forEach((info) => { + const { meta: itemMeta, targetIndex, recyclerKey } = info; + const item = this.listContainer.getData()[targetIndex]; + + if (indexToOffsetMap[targetIndex] != null) { + const itemMetaState = + this.listContainer._configTuple.resolveItemMetaState( + itemMeta, + this.listContainer._scrollMetrics, + () => indexToOffsetMap[targetIndex] + ); + + itemMeta?.setItemMetaState(itemMetaState); + } + + recycleRecycleStateResult.push({ + key: recyclerKey, + targetKey: itemMeta.getKey(), + targetIndex, + isSpace: false, + isSticky: false, + item, + itemMeta, + + /** + * itemMeta should get from parent + */ + viewable: !!itemMeta.getState()['viewable'], + // 如果没有offset,说明item是新增的,那么它渲染就在最开始位置好了 + // position: 'buffered', + offset: indexToOffsetMap[targetIndex], + length: itemMeta.getFinalItemLength(), + }); + }); + return recycleRecycleStateResult; + } + + resolveRecycleSpaceState() { + const nextData = this.listContainer + .getData() + .slice(0, this.listContainer.initialNumToRender); + const spaceState: SpaceStateResult = []; + const indexToOffsetMap = this.listContainer.getFinalIndexRangeOffsetMap( + 0, + this.listContainer.initialNumToRender - 1, + true + ); + + for (let targetIndex = 0; targetIndex < nextData.length; targetIndex++) { + const item = this.listContainer.getData()[targetIndex]; + const itemMeta = this.listContainer.getFinalItemMeta(item); + if (itemMeta) { + spaceState.push({ + item, + isSpace: false, + itemMeta, + key: itemMeta.getKey(), + isSticky: false, + isReserved: true, + length: this.listContainer.getFinalIndexItemLength(targetIndex), + }); + if (indexToOffsetMap[targetIndex] != null) { + const itemMetaState = + this.listContainer._configTuple.resolveItemMetaState( + itemMeta, + this.listContainer._scrollMetrics, + () => indexToOffsetMap[targetIndex] + ); + itemMeta?.setItemMetaState(itemMetaState); + } + } + } + const afterTokens = resolveToken({ + startIndex: this.listContainer.initialNumToRender, + endIndex: this.listContainer.getData().length - 1, + reservedIndices: this.listContainer.reservedIndices, + stickyHeaderIndices: this.listContainer.stickyHeaderIndices, + persistanceIndices: this.listContainer.persistanceIndices, + }); + + afterTokens.forEach((token) => { + const { isSticky, isReserved, startIndex, endIndex } = token; + if (isSticky || isReserved) { + const item = this.listContainer.getData()[startIndex]; + const itemMeta = this.listContainer.getFinalItemMeta(item); + spaceState.push({ + item, + isSpace: false, + key: itemMeta?.getKey() || '', + itemMeta, + isSticky, + isReserved, + length: this.listContainer.getFinalIndexItemLength(startIndex), + }); + } else { + const startIndexOffset = + this.listContainer.getFinalIndexKeyOffset(startIndex); + // should plus 1, use list total length + const endIndexOffset = + this.listContainer.getFinalIndexKeyBottomOffset(endIndex); + spaceState.push({ + item: null, + isSpace: true, + isSticky: false, + isReserved: false, + length: endIndexOffset - startIndexOffset, + // endIndex is not included + itemMeta: null, + key: buildStateTokenIndexKey(startIndex, endIndex - 1), + }); + } + }); + return spaceState; + } +} + +export default RecycleStateImpl; diff --git a/core/strategies/src/SpaceStateImpl.ts b/core/strategies/src/SpaceStateImpl.ts new file mode 100644 index 00000000..0d3a53f3 --- /dev/null +++ b/core/strategies/src/SpaceStateImpl.ts @@ -0,0 +1,254 @@ +// import memoizeOne from 'memoize-one'; + +// import { buildStateTokenIndexKey } from '../common'; +// import { +// ListState, +// GenericItemT, +// SpaceStateResult, +// StateListener, +// SpaceStateImplProps, +// } from '../types'; +// import BaseState from './BaseState'; + +// /** +// * item should be first class data model; item's value reference change will +// * cause recalculation of item key. However, if key is not changed, its itemMeta +// * will not change. +// */ +// class SpaceStateImpl< +// ItemT extends GenericItemT = GenericItemT +// > extends BaseState { +// private _stateResult?: SpaceStateResult; + +// private memoizedResolveSpaceState: ( +// state: ListState +// ) => SpaceStateResult; + +// constructor(props: SpaceStateImplProps) { +// super(props); + +// this.memoizedResolveSpaceState = memoizeOne( +// this.resolveSpaceState.bind(this) +// ); +// } + +// addStateListener(listener: StateListener) { +// if (typeof listener === 'function') this.stateListener = listener; +// return () => { +// if (typeof listener === 'function') this.stateListener = undefined; +// }; +// } + +// applyStateResult(stateResult: SpaceStateResult) { +// const shouldStateUpdate = true; + +// if (shouldStateUpdate && typeof this.stateListener === 'function') { +// this.stateListener(stateResult, this._stateResult); +// } + +// this._stateResult = { +// ...stateResult, +// rangeState: stateResult.rangeState, +// }; +// } + +// getStateResult() { +// return this._stateResult; +// } + +// setState(state: ListState, force = false) { +// const stateResult = force +// ? this.resolveSpaceState(state) +// : this.memoizedResolveSpaceState(state); +// this.applyStateResult(stateResult); +// } + +// resolveSpaceState( +// state: ListState, +// resolver?: { +// bufferedStartIndex?: (state: ListState) => number; +// bufferedEndIndex?: (state: ListState) => number; +// visibleStartIndex?: (state: ListState) => number; +// visibleEndIndex?: (state: ListState) => number; +// } +// ) { +// const { +// bufferedEndIndex: _bufferedEndIndex, +// bufferedStartIndex: _bufferedStartIndex, +// } = state; +// const bufferedEndIndex = resolver?.bufferedEndIndex +// ? resolver?.bufferedEndIndex(state) +// : _bufferedEndIndex; +// const bufferedStartIndex = resolver?.bufferedStartIndex +// ? resolver?.bufferedStartIndex(state) +// : _bufferedStartIndex; +// const data = this.getData(); + +// const nextStart = bufferedStartIndex; +// const nextEnd = bufferedEndIndex + 1; +// const remainingData = data.slice(nextStart, nextEnd); +// const beforeTokens = this.resolveToken(0, nextStart); +// const spaceState = []; + +// beforeTokens.forEach((token) => { +// const { isSticky, isReserved, startIndex, endIndex } = token; +// if (isSticky || isReserved) { +// const item = this._data[startIndex]; +// const itemMeta = this.getFinalItemMeta(item); + +// spaceState.push({ +// item, +// itemMeta, +// key: itemMeta?.getKey(), +// isSpace: false, +// isSticky, +// length: this.getFinalIndexItemLength(startIndex), +// isReserved, +// }); +// } else { +// const startIndexOffset = this.getFinalIndexKeyOffset(startIndex); +// const endIndexOffset = this.getFinalIndexKeyOffset(endIndex); +// spaceState.push({ +// isSpace: true, +// item: null, +// isSticky: false, +// isReserved: false, +// key: buildStateTokenIndexKey(startIndex, endIndex - 1), +// length: endIndexOffset - startIndexOffset, +// }); +// } +// }); + +// const indexToOffsetMap = this.getFinalIndexRangeOffsetMap( +// bufferedStartIndex, +// bufferedEndIndex +// ); + +// remainingData.forEach((item, _index) => { +// const index = bufferedStartIndex + _index; +// const itemMeta = this.getFinalItemMeta(item); +// if (!itemMeta) return; +// const isSticky = this.stickyHeaderIndices.indexOf(index) !== -1; +// const isReserved = this.persistanceIndices.indexOf(index) !== -1; + +// const itemKey = itemMeta.getKey(); + +// const itemLength = itemMeta?.getFinalItemLength(); + +// // const itemLayout = itemMeta?.getLayout(); +// // const itemLength = +// // (itemLayout?.height || 0) + (itemMeta?.getSeparatorLength() || 0); + +// const itemMetaState = +// !this._scrollMetrics || !itemMeta?.getLayout() +// ? itemMeta +// ? itemMeta.getState() +// : {} +// : this._configTuple.resolveItemMetaState( +// itemMeta, +// this._scrollMetrics, +// () => indexToOffsetMap[index] +// ); + +// itemMeta?.setItemMetaState(itemMetaState); + +// spaceState.push({ +// key: itemKey, +// item, +// itemMeta, +// isSpace: false, +// isSticky, +// isReserved, +// length: itemLength, +// }); +// }); + +// const afterTokens = this.resolveToken(nextEnd, data.length - 1); + +// afterTokens.forEach((token) => { +// const { isSticky, isReserved, startIndex, endIndex } = token; +// if (isSticky || isReserved) { +// const item = this._data[startIndex]; +// const itemMeta = this.getFinalItemMeta(item); +// spaceState.push({ +// item, +// isSpace: false, +// key: itemMeta.getKey(), +// itemMeta, +// isSticky, +// isReserved, +// length: this.getFinalIndexItemLength(startIndex), +// }); +// } else { +// const startIndexOffset = this.getFinalIndexKeyOffset(startIndex); +// const endIndexOffset = this.getFinalIndexKeyBottomOffset(endIndex); +// spaceState.push({ +// item: null, +// isSpace: true, +// isSticky: false, +// isReserved: false, +// length: endIndexOffset - startIndexOffset, +// // endIndex is not included +// key: buildStateTokenIndexKey(startIndex, endIndex - 1), +// }); +// } +// }); + +// return spaceState; +// } +// } + +// export default SpaceStateImpl; + +import BaseState from './BaseState'; +import { + ListState, + GenericItemT, + StateListener, + SpaceStateResult, +} from './types'; + +export default class SpaceStateImpl< + ItemT extends GenericItemT = GenericItemT +> extends BaseState { + private _stateResult: SpaceStateResult = []; + public stateListener?: StateListener; + + getStateResult() { + return this._stateResult; + } + + setState(state: ListState) { + // @ts-ignore + const stateResult = this.resolveSpaceState(state); + this.applyStateResult(stateResult); + } + + dispatchState( + state: ListState + ): [SpaceStateResult, SpaceStateResult] { + // return [] as any + const oldStateResult = [...this._stateResult]; + // @ts-ignore + const stateResult = this.resolveSpaceState(state); + return [stateResult, oldStateResult]; + } + + // resolveSpaceState(state: ListState) { + resolveSpaceState() { + return [] as SpaceStateResult; + } + + addStateListener(listener: StateListener) { + if (typeof listener === 'function') this.stateListener = listener; + return () => { + if (typeof listener === 'function') this.stateListener = undefined; + }; + } + + applyStateResult(stateResult: SpaceStateResult) { + if (typeof this.stateListener === 'function') { + this.stateListener(stateResult, this._stateResult); + } + } +} diff --git a/core/strategies/src/StateHub.ts b/core/strategies/src/StateHub.ts new file mode 100644 index 00000000..f4cbc914 --- /dev/null +++ b/core/strategies/src/StateHub.ts @@ -0,0 +1,78 @@ +import { + GenericItemT, + ListState, + StateListener, + StateHubProps, + ListStateResult, +} from './types'; +import RecycleStateImpl from './RecycleStateImpl'; +import SpaceStateImpl from './SpaceStateImpl'; + +class StateHub { + private _handler: RecycleStateImpl | SpaceStateImpl; + + constructor(props: StateHubProps) { + const { + listContainer, + + recyclerTypes, + onRecyclerProcess, + recyclerBufferSize, + recycleEnabled = true, + recyclerReservedBufferPerBatch, + } = props; + + this._handler = recycleEnabled + ? new RecycleStateImpl({ + listContainer, + recyclerTypes, + onRecyclerProcess, + recyclerBufferSize, + recyclerReservedBufferPerBatch, + }) + : new SpaceStateImpl({ + listContainer, + }); + } + + /** + * + * @param state + * + * return nothing + */ + setState(state: ListState) { + this._handler.setState(state); + } + + /** + * + * @param state + * @returns StateResult + * + * comparing with setState, it should return StateResult after state hub handler + */ + dispatchState( + state: ListState + ): [ListStateResult, ListStateResult] { + return this._handler.dispatchState(state); + } + + getStateResult() { + return this._handler.getStateResult(); + } + + addStateListener(listener: StateListener) { + return this._handler.addStateListener(listener); + } + + addBuffer(type: string) { + (this._handler as RecycleStateImpl).addBuffer(type); + } + + get stateResult() { + return this._handler.getStateResult(); + } +} + +export default StateHub; diff --git a/core/strategies/src/common.ts b/core/strategies/src/common.ts new file mode 100644 index 00000000..645759dd --- /dev/null +++ b/core/strategies/src/common.ts @@ -0,0 +1,20 @@ +export const DEFAULT_ITEM_APPROXIMATE_LENGTH = 80; +export const DEFAULT_RECYCLER_TYPE = '__default_recycler_buffer__'; +export const LAYOUT_EQUAL_CORRECTION_VALUE = 0.5; + +export const isEmpty = (obj: any) => { + if (Object.prototype.toString.call(obj) === '[object Object]') { + return !Object.keys.length; + } + return true; +}; + +export const DISPATCH_METRICS_THRESHOLD = 16; +export const ON_END_REACHED_THRESHOLD = 2; +export const STILLNESS_THRESHOLD = 50; + +export const buildStateTokenIndexKey = (startIndex: number, endIndex: number) => + `space_${startIndex}_${endIndex}`; +export const RECYCLER_BUFFER_SIZE = 40; +export const RECYCLER_RESERVED_BUFFER_PER_BATCH = 20; +export const INVALID_LENGTH = 'invalid_length'; diff --git a/core/strategies/src/index.ts b/core/strategies/src/index.ts new file mode 100644 index 00000000..07e71f98 --- /dev/null +++ b/core/strategies/src/index.ts @@ -0,0 +1,2 @@ +export { default as BaseImpl } from './BaseImpl'; +export * from './types'; diff --git a/core/strategies/src/types/BaseLayout.types.ts b/core/strategies/src/types/BaseLayout.types.ts new file mode 100644 index 00000000..6c95143e --- /dev/null +++ b/core/strategies/src/types/BaseLayout.types.ts @@ -0,0 +1,39 @@ +import { BaseContainerProps } from '@infinite-list/container'; + +export enum BoundInfoType { + 'Hover' = 'hover', + 'OutOfBoundary' = 'outOfBoundary', +} + +export type BoundInfo = { + type: BoundInfoType; + index: number; +}; + +export type ItemLayout = { + x: number; + y: number; + width: number; + height: number; +}; + +export enum FillingMode { + SPACE = 'space', + RECYCLE = 'recycle', +} + +export interface BaseLayoutProps extends BaseContainerProps { + windowSize?: number; + maxToRenderPerBatch?: number; + initialNumToRender?: number; + persistanceIndices?: Array; + stickyHeaderIndices?: Array; + + recycleThreshold?: number; + recycleBufferedCount?: number; + recycleEnabled?: boolean; + + lengthPrecision?: number; + + itemOffsetBeforeLayoutReady?: number; +} diff --git a/core/strategies/src/types/ListBaseDimensions.types.ts b/core/strategies/src/types/ListBaseDimensions.types.ts new file mode 100644 index 00000000..2b33c5ad --- /dev/null +++ b/core/strategies/src/types/ListBaseDimensions.types.ts @@ -0,0 +1,96 @@ +import { ItemMeta } from '@infinite-list/item-meta'; + +import { + ViewabilityConfigTuplesProps, + OnEndReachedHelperProps, +} from '@infinite-list/viewable'; + +import { BaseLayoutProps } from '@infinite-list/base-dimensions'; + +import { OnRecyclerProcess, RecyclerProps } from '@x-oasis/recycler'; +import { ReducerResult, Store, ActionType } from './types'; +import { GenericItemT } from './generic.types'; + +export type SpaceStateTokenPosition = 'before' | 'buffered' | 'after'; + +export type SpaceStateToken = { + item: ItemT | null; + key: string; + length: number; + isSpace: boolean; + isSticky: boolean; + isReserved: boolean; + itemMeta: ItemMeta | null | undefined; + position?: SpaceStateTokenPosition; +}; + +export type RecycleStateToken = { + /** + * compare with `targetKey`, it's the key point of recycle compatibility. + */ + key: string; + targetKey: string; + targetIndex: number; + offset: number; + + viewable: boolean; +} & Omit, 'key' | 'isReserved' | 'position'>; + +export type SpaceStateResult = Array< + SpaceStateToken +>; + +export type RecycleRecycleState = + RecycleStateToken[]; + +export type RecycleStateResult = { + rangeState: ListState; + spaceState: SpaceStateResult; + recycleState: RecycleRecycleState; +}; + +export type ListStateResult = + | SpaceStateResult + | RecycleStateResult; + +export type StateListener = ( + newState: ListStateResult, + oldState: ListStateResult +) => void; + +// export type ListBaseDimensionsProvider = ListGroupDimensions | ListDimensions; +export type ListBaseDimensionsStore< + ReducerResultT extends ReducerResult = ReducerResult +> = Store; + +export interface ListBaseDimensionsProps + extends BaseLayoutProps, + RecyclerProps, + OnEndReachedHelperProps, + ViewabilityConfigTuplesProps { + releaseSpaceStateItem?: boolean; + store: ListBaseDimensionsStore; + dispatchMetricsThreshold?: number; + useItemApproximateLength?: boolean; + itemApproximateLength?: number; + onRecyclerProcess?: OnRecyclerProcess; + stillnessThreshold?: number; +} + +export type PreStateResult = { + visibleStartIndex: number; + visibleEndIndex: number; + bufferedStartIndex: number; + bufferedEndIndex: number; + isEndReached: boolean; + distanceFromEnd: number; + actionType: ActionType; +}; + +export type ListState = { + // data: Array; +} & PreStateResult; + +export type IndexToOffsetMap = { + [key: number]: number; +}; diff --git a/core/strategies/src/types/ListDimensionsModel.types.ts b/core/strategies/src/types/ListDimensionsModel.types.ts new file mode 100644 index 00000000..c273085e --- /dev/null +++ b/core/strategies/src/types/ListDimensionsModel.types.ts @@ -0,0 +1,78 @@ +import { + BaseDimensionsProps, + KeysChangedType, +} from '@infinite-list/base-dimensions'; +import { GenericItemT } from './generic.types'; +import { ListBaseDimensionsProps } from './ListBaseDimensions.types'; + +import { + IListDimensions, + IListDimensionsModel, + IListGroupDimensions, + IMasonryDimensions, + IMasonryDimensionsModel, +} from '@infinite-list/types'; + +export type GetItemSeparatorLength = ( + data: Array, + index: number +) => { length: number }; +export type GetItemLayout = ( + data: Array, + index: number +) => { length: number; index: number }; + +/** + * TODO: `index` may not be + */ +export type KeyExtractor = (item: ItemT, index?: number) => string; +export type OnListDimensionsModelDataChanged< + ItemT extends GenericItemT = GenericItemT +> = (props: { + dataModel: IListDimensionsModel | IMasonryDimensionsModel; + dataChangedType: KeysChangedType; + data: ItemT[]; + oldData: ItemT[]; +}) => void; + +export interface ListDimensionsModelProps< + ItemT extends GenericItemT = GenericItemT +> extends ListBaseDimensionsProps, + BaseDimensionsProps { + data: Array; + itemApproximateLength?: number; + /** + * only if in recycleEnabled mode, `useItemApproximateLength` is meaningful + */ + useItemApproximateLength?: boolean; + recyclerType?: string; + anchorKey?: string; + + container: ListDimensionsModelContainer; + + recycleEnabled?: boolean; + keyExtractor: KeyExtractor; + getItemLayout?: GetItemLayout; + getItemSeparatorLength?: GetItemSeparatorLength; + + isFixedLength?: boolean; + + onEndReachedThreshold?: number; + + /** + * on default, value is false; In ListGroupDimensions, data should not + * be initialized on construct . so add this param.. + */ + manuallyApplyInitialData?: boolean; + + recyclerTypes?: Array; + + onListDimensionsModelDataChanged?: OnListDimensionsModelDataChanged; +} + +export type ListDimensionsModelContainer< + ItemT extends GenericItemT = GenericItemT +> = + | IListGroupDimensions + | IListDimensions + | IMasonryDimensions; diff --git a/core/strategies/src/types/generic.types.ts b/core/strategies/src/types/generic.types.ts new file mode 100644 index 00000000..297f824d --- /dev/null +++ b/core/strategies/src/types/generic.types.ts @@ -0,0 +1,4 @@ +export type GenericItemT = { + [key: string]: any; +}; +export type GenericStateResult = any; diff --git a/core/strategies/src/types/index.ts b/core/strategies/src/types/index.ts new file mode 100644 index 00000000..0bcad11a --- /dev/null +++ b/core/strategies/src/types/index.ts @@ -0,0 +1,7 @@ +export * from './generic.types'; +export * from './ListDimensionsModel.types'; +export * from './BaseLayout.types'; +export * from './ListBaseDimensions.types'; +export * from './scrollMetrics.types'; +export * from './stateHub.types'; +export * from './types'; diff --git a/core/strategies/src/types/scrollMetrics.types.ts b/core/strategies/src/types/scrollMetrics.types.ts new file mode 100644 index 00000000..9b779202 --- /dev/null +++ b/core/strategies/src/types/scrollMetrics.types.ts @@ -0,0 +1,50 @@ +export interface ScrollRectangle { + left: number; + top: number; + bottom: number; + right: number; +} + +export interface ScrollPoint { + x: number; + y: number; +} + +export interface ScrollVelocity { + x: number; + y: number; +} + +export interface ScrollSize { + height: number; + width: number; +} +export type ScrollEventMetrics = { + contentInset: ScrollRectangle; + contentOffset: ScrollPoint; + contentSize: ScrollSize; + layoutMeasurement: ScrollSize; + velocity?: ScrollVelocity | undefined; + zoomScale: number; + /** + * @platform ios + */ + targetContentOffset?: ScrollPoint | undefined; +}; + +export type ScrollMetrics = { + contentLength: number; + offset: number; + visibleLength: number; + + // not used + dOffset?: number; + dt?: number; + timestamp?: number; + velocity?: number; +}; + +export type ContentSize = { + width: number; + height: number; +}; diff --git a/core/strategies/src/types/stateHub.types.ts b/core/strategies/src/types/stateHub.types.ts new file mode 100644 index 00000000..5c423906 --- /dev/null +++ b/core/strategies/src/types/stateHub.types.ts @@ -0,0 +1,22 @@ +// import { ListDimensionsModelContainer } from './ListDimensionsModel.types'; +import { GenericItemT } from './generic.types'; +import BaseImpl from '../BaseImpl'; + +export type BaseStateImplProps = { + listContainer: BaseImpl; +}; + +export type SpaceStateImplProps = + {} & BaseStateImplProps; + +export type RecycleStateImplProps = { + recyclerTypes?: string[]; + recyclerBufferSize?: number; + recyclerReservedBufferPerBatch?: number; + + onRecyclerProcess?: (type?: string, index?: number) => boolean; +} & BaseStateImplProps; + +export type StateHubProps = { + recycleEnabled?: boolean; +} & RecycleStateImplProps; diff --git a/core/strategies/src/types/types.ts b/core/strategies/src/types/types.ts new file mode 100644 index 00000000..4bd17b14 --- /dev/null +++ b/core/strategies/src/types/types.ts @@ -0,0 +1,75 @@ +// import ListDimensions from '../ListDimensions'; +// import ListGroupDimensions from '../ListGroupDimensions'; + +import { IListDimensions, IListGroupDimensions } from '@infinite-list/types'; + +import { ScrollMetrics } from '../types'; + +export type ReducerResult = { + visibleStartIndex: number; + visibleEndIndex: number; + bufferedStartIndex: number; + bufferedEndIndex: number; + isEndReached: boolean; + distanceFromEnd: number; + actionType: ActionType; +}; + +export type ActionPayload = { + dimension: IListDimensions | IListGroupDimensions; + scrollMetrics: ScrollMetrics; + isEndReached: boolean; + distanceFromEnd: number; +}; + +export enum ActionType { + HydrationWithBatchUpdate = 'hydrationWithBatchUpdate', + ScrollDown = 'scrollDown', + ScrollUp = 'scrollUp', + Recalculate = 'recalculate', + Initial = 'initial', +} + +export type RawAction = { + type: ActionType; // 应用触底了,但是List仍旧有数据没有渲染 + payload: { + dimension: IListDimensions | IListGroupDimensions; + scrollMetrics: ScrollMetrics; + }; +}; + +export type Action = { + type: ActionType; // 应用触底了,但是List仍旧有数据没有渲染 + payload: ActionPayload; +}; + +export type Reducer = (state: State, action: Action) => State; + +type Dispatch = (action: Action) => State; +type DispatchMetrics = (props: { + dimension: IListDimensions | IListGroupDimensions; + scrollMetrics: ScrollMetrics; +}) => State; + +export type Store = { + dispatch: Dispatch; + dispatchMetrics: DispatchMetrics; + getState: () => State; + setState: (state: State) => void; +}; + +export type CreateStore = (reducer?: Reducer) => Store; + +export type Ctx = { + maxIndex: number; + visibleIndexRange: { + startIndex: number; + endIndex: number; + }; + bufferedIndexRange: { + startIndex: number; + endIndex: number; + }; + isEndReached: boolean; + distanceFromEnd: number; +}; diff --git a/core/strategies/src/utils.ts b/core/strategies/src/utils.ts new file mode 100644 index 00000000..87ec2a80 --- /dev/null +++ b/core/strategies/src/utils.ts @@ -0,0 +1,83 @@ +import { + SpaceStateTokenPosition, + SpaceStateToken, + GenericItemT, +} from './types'; +import isClamped from '@x-oasis/is-clamped'; + +export const createSpaceStateToken = < + ItemT extends GenericItemT = GenericItemT +>( + options?: Partial> +) => { + return { + item: null, + key: '', + length: 0, + isSpace: false, + position: 'before' as SpaceStateTokenPosition, + isSticky: false, + isReserved: false, + ...options, + }; +}; + +/** + * + * @param startIndex included + * @param endIndex exclusive + */ +export const resolveToken = (props: { + startIndex: number; + endIndex: number; + reservedIndices: number[]; + stickyHeaderIndices: number[]; + persistanceIndices: number[]; +}) => { + const { + startIndex, + endIndex, + reservedIndices, + stickyHeaderIndices, + persistanceIndices, + } = props; + + if (startIndex >= endIndex) return []; + const createToken = (startIndex: number) => ({ + startIndex, + endIndex: startIndex + 1, + isSticky: false, + isReserved: false, + isSpace: true, + }); + const tokens = [createToken(startIndex)]; + + reservedIndices.forEach((index) => { + const lastToken = tokens[tokens.length - 1]; + if (isClamped(startIndex, index, endIndex - 1)) { + const isSticky = stickyHeaderIndices.indexOf(index) !== -1; + const isReserved = persistanceIndices.indexOf(index) !== -1; + if (lastToken.startIndex === index) { + lastToken.isSticky = isSticky; + lastToken.isReserved = isReserved; + lastToken.isSpace = !isSticky && !isReserved; + if (index + 1 !== endIndex) tokens.push(createToken(index + 1)); + } else { + lastToken.endIndex = index; + tokens.push({ + startIndex: index, + endIndex: index + 1, + isSticky, + isReserved, + isSpace: !isSticky && !isReserved, + }); + if (index + 1 !== endIndex) tokens.push(createToken(index + 1)); + } + } + }); + + const lastToken = tokens[tokens.length - 1]; + if (lastToken.endIndex !== endIndex) lastToken.endIndex = endIndex; + + return tokens; +}; diff --git a/core/strategies/tsconfig.json b/core/strategies/tsconfig.json new file mode 100644 index 00000000..8d9d5912 --- /dev/null +++ b/core/strategies/tsconfig.json @@ -0,0 +1,22 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "commonjs", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ] +} diff --git a/core/strategies/tsconfig.lib.json b/core/strategies/tsconfig.lib.json new file mode 100644 index 00000000..ce3b531c --- /dev/null +++ b/core/strategies/tsconfig.lib.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "declaration": true, + "types": ["node"] + }, + "include": ["src/**/*.ts"], + "exclude": ["vite.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"] +} diff --git a/core/strategies/tsconfig.spec.json b/core/strategies/tsconfig.spec.json new file mode 100644 index 00000000..3c002c21 --- /dev/null +++ b/core/strategies/tsconfig.spec.json @@ -0,0 +1,26 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "types": [ + "vitest/globals", + "vitest/importMeta", + "vite/client", + "node", + "vitest" + ] + }, + "include": [ + "vite.config.ts", + "vitest.config.ts", + "src/**/*.test.ts", + "src/**/*.spec.ts", + "src/**/*.test.tsx", + "src/**/*.spec.tsx", + "src/**/*.test.js", + "src/**/*.spec.js", + "src/**/*.test.jsx", + "src/**/*.spec.jsx", + "src/**/*.d.ts" + ] +} diff --git a/core/strategies/vite.config.ts b/core/strategies/vite.config.ts new file mode 100644 index 00000000..0c054b2b --- /dev/null +++ b/core/strategies/vite.config.ts @@ -0,0 +1,28 @@ +import { defineConfig } from 'vite'; + +import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin'; +import { nxCopyAssetsPlugin } from '@nx/vite/plugins/nx-copy-assets.plugin'; + +export default defineConfig({ + root: __dirname, + cacheDir: '../../node_modules/.vite/core/strategies', + + plugins: [nxViteTsPaths(), nxCopyAssetsPlugin(['*.md'])], + + // Uncomment this if you are using workers. + // worker: { + // plugins: [ nxViteTsPaths() ], + // }, + + test: { + watch: false, + globals: true, + environment: 'node', + include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], + reporters: ['default'], + coverage: { + reportsDirectory: '../../coverage/core/strategies', + provider: 'v8', + }, + }, +}); diff --git a/core/types/.swcrc b/core/types/.swcrc new file mode 100644 index 00000000..28e88ec1 --- /dev/null +++ b/core/types/.swcrc @@ -0,0 +1,29 @@ +{ + "jsc": { + "target": "es2017", + "parser": { + "syntax": "typescript", + "decorators": true, + "dynamicImport": true + }, + "transform": { + "decoratorMetadata": true, + "legacyDecorator": true + }, + "keepClassNames": true, + "externalHelpers": true, + "loose": true + }, + "module": { + "type": "es6" + }, + "sourceMaps": true, + "exclude": [ + "jest.config.ts", + ".*\\.spec.tsx?$", + ".*\\.test.tsx?$", + "./src/jest-setup.ts$", + "./**/jest-setup.ts$", + ".*.js$" + ] +} diff --git a/core/types/README.md b/core/types/README.md new file mode 100644 index 00000000..2b23b56f --- /dev/null +++ b/core/types/README.md @@ -0,0 +1,11 @@ +# types + +This library was generated with [Nx](https://nx.dev). + +## Building + +Run `nx build types` to build the library. + +## Running unit tests + +Run `nx test types` to execute the unit tests via [Vitest](https://vitest.dev/). diff --git a/core/types/eslint.config.js b/core/types/eslint.config.js new file mode 100644 index 00000000..6e58c36a --- /dev/null +++ b/core/types/eslint.config.js @@ -0,0 +1,22 @@ +const baseConfig = require('../../eslint.config.js'); + +module.exports = [ + ...baseConfig, + { + files: ['**/*.json'], + rules: { + '@nx/dependency-checks': [ + 'error', + { + ignoredFiles: [ + '{projectRoot}/eslint.config.{js,cjs,mjs}', + '{projectRoot}/vite.config.{js,ts,mjs,mts}', + ], + }, + ], + }, + languageOptions: { + parser: require('jsonc-eslint-parser'), + }, + }, +]; diff --git a/core/types/package.json b/core/types/package.json new file mode 100644 index 00000000..0fd97244 --- /dev/null +++ b/core/types/package.json @@ -0,0 +1,10 @@ +{ + "name": "@infinite-list/types", + "version": "0.0.1", + "dependencies": { + "@x-oasis/batchinator": "^0.1.14", + "@x-oasis/select-value": "^0.1.14" + }, + "main": "./index.cjs", + "module": "./index.js" +} diff --git a/core/types/project.json b/core/types/project.json new file mode 100644 index 00000000..742e473f --- /dev/null +++ b/core/types/project.json @@ -0,0 +1,22 @@ +{ + "name": "types", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "core/types/src", + "projectType": "library", + "release": { + "version": { + "generatorOptions": { + "packageRoot": "dist/{projectRoot}", + "currentVersionResolver": "git-tag" + } + } + }, + "tags": [], + "targets": { + "nx-release-publish": { + "options": { + "packageRoot": "dist/{projectRoot}" + } + } + } +} diff --git a/core/types/rollup.config.js b/core/types/rollup.config.js new file mode 100644 index 00000000..ae1ec4c2 --- /dev/null +++ b/core/types/rollup.config.js @@ -0,0 +1,18 @@ +const { withNx } = require('@nx/rollup/with-nx'); + +module.exports = withNx( + { + main: './src/index.ts', + outputPath: '../../dist/core/types', + tsConfig: '../../tsconfig.json', + // tsConfig: './tsconfig.lib.json', + compiler: 'swc', + format: ['cjs', 'esm'], + assets: [{ input: '.', output: '.', glob: '*.md' }], + }, + { + // Provide additional rollup configuration here. See: https://rollupjs.org/configuration-options + // e.g. + // output: { sourcemap: true }, + } +); diff --git a/core/types/src/Dimension.ts b/core/types/src/Dimension.ts new file mode 100644 index 00000000..6fc9697b --- /dev/null +++ b/core/types/src/Dimension.ts @@ -0,0 +1,9 @@ +import { GenericItemT } from './generic.types'; +import { ItemMetaOwnerRequiredProps } from './itemMeta'; +export interface IDimension< + ItemT extends GenericItemT = GenericItemT, + ExtraInfo extends {} = {} +> extends ItemMetaOwnerRequiredProps { + getItemKey(item: ItemT, index?: number): string | null; + extraInfo: ExtraInfo; +} diff --git a/core/types/src/ListDimensions.ts b/core/types/src/ListDimensions.ts new file mode 100644 index 00000000..ba52ebef --- /dev/null +++ b/core/types/src/ListDimensions.ts @@ -0,0 +1,55 @@ +import { GenericItemT } from './generic.types'; +import { IListDimensionsModel } from './ListDimensionsModel'; +import { IOnEndReachedHelper } from './OnEndReachedHelper'; +import { IItemMeta } from './itemMeta'; + +export interface IListDimensions { + maxToRenderPerBatch: number; + onItemLayoutChanged: () => void; + onDataSourceChanged(): void; + onEndReachedHelper: IOnEndReachedHelper; + getFinalKeyIndexInfo: ( + itemKey: string, + listKey: string + ) => ListIndexInfo; + + /** + * for state start + */ + getDataLength(): number; + initialNumToRender: number; + getTotalLength(): number; + getBufferSize(): number; + computeIndexRange( + minOffset: number, + maxOffset: number + ): { + startIndex: number; + endIndex: number; + }; + // inherit from BaseLayout + resolveOffsetRange( + minOffset: number, + maxOffset: number, + exclusive?: boolean + ): { + minOffset: number; + maxOffset: number; + }; + + getIndexItemMeta(index: number): IItemMeta | undefined | null; + + getContainerOffset(): number; + // getItemKey(item: ItemT, index?: number): string | null; + hasUnLayoutItems(): boolean; + getOnEndReachedHelper(): IOnEndReachedHelper; + + /** + * for state end + */ +} + +export type ListIndexInfo = { + dimensions: IListDimensionsModel; + index?: number; +}; diff --git a/core/types/src/ListDimensionsModel.ts b/core/types/src/ListDimensionsModel.ts new file mode 100644 index 00000000..32c3c06e --- /dev/null +++ b/core/types/src/ListDimensionsModel.ts @@ -0,0 +1,10 @@ +import { GenericItemT } from './generic.types'; +import { ItemMetaOwnerRequiredProps } from './itemMeta'; + +export interface IListDimensionsModel< + ItemT extends GenericItemT = GenericItemT, + ExtraInfo extends {} = {} +> extends ItemMetaOwnerRequiredProps { + getItemKey(item: ItemT, index?: number): string | null; + extraInfo: ExtraInfo; +} diff --git a/core/types/src/ListGroupDimensions.ts b/core/types/src/ListGroupDimensions.ts new file mode 100644 index 00000000..4c179c8e --- /dev/null +++ b/core/types/src/ListGroupDimensions.ts @@ -0,0 +1,63 @@ +import { GenericItemT } from './generic.types'; +import { IOnEndReachedHelper } from './OnEndReachedHelper'; +import { IListDimensionsModel } from './ListDimensionsModel'; +import { IDimension } from './Dimension'; +import { IItemMeta } from './itemMeta'; + +export interface IListGroupDimensions< + ItemT extends GenericItemT = GenericItemT +> { + maxToRenderPerBatch: number; + getItemKey(item: ItemT, index?: number): string | null; + onItemLayoutChanged(): void; + onDataSourceChanged(): void; + onEndReachedHelper: IOnEndReachedHelper; + getFinalKeyIndexInfo: ( + itemKey: string, + listKey: string + ) => ListGroupIndexInfo | null; + + /** + * for state start + */ + getDataLength(): number; + initialNumToRender: number; + getTotalLength(): number; + getBufferSize(): number; + computeIndexRange( + minOffset: number, + maxOffset: number + ): { + startIndex: number; + endIndex: number; + }; + // inherit from BaseLayout + resolveOffsetRange( + minOffset: number, + maxOffset: number, + exclusive?: boolean + ): { + minOffset: number; + maxOffset: number; + }; + getIndexItemMeta(index: number): IItemMeta; + + getContainerOffset(): number; + hasUnLayoutItems(): boolean; + getOnEndReachedHelper(): IOnEndReachedHelper; + + /** + * for state end + */ +} + +export type ListGroupIndexInfo = { + dimensions: ListGroupChildDimensions; + index: number; + indexInGroup?: number; + indexInRecycler?: number; +}; + +export type ListGroupChildDimensions< + ItemT extends GenericItemT = GenericItemT +> = IListDimensionsModel | IDimension; diff --git a/core/types/src/OnEndReachedHelper.ts b/core/types/src/OnEndReachedHelper.ts new file mode 100644 index 00000000..468fede2 --- /dev/null +++ b/core/types/src/OnEndReachedHelper.ts @@ -0,0 +1,21 @@ +import Batchinator from '@x-oasis/batchinator'; +import { ScrollMetrics } from './scrollMetrics.types'; + +export interface IOnEndReachedHelper { + attemptToHandleOnEndReachedBatchinator: Batchinator; + /** + * + * @param scrollMetrics + * @param positive + * @returns + */ + perform( + scrollMetrics?: ScrollMetrics | undefined, + positive?: boolean + ): + | { + distanceFromEnd: number; + isEndReached: boolean; + } + | undefined; +} diff --git a/core/types/src/baseDimensions.ts b/core/types/src/baseDimensions.ts new file mode 100644 index 00000000..5f68c5da --- /dev/null +++ b/core/types/src/baseDimensions.ts @@ -0,0 +1,12 @@ +import { GenericItemT } from './generic.types'; + +export type IBaseDimensions = { + /** + * + * @param key instance's key + * @param exclusive default as false, if value is true, container offset + * will not be included on calculating item offset. + * @returns + */ + getKeyItemOffset(key: string, exclusive: boolean): number; +}; diff --git a/core/types/src/generic.types.ts b/core/types/src/generic.types.ts new file mode 100644 index 00000000..297f824d --- /dev/null +++ b/core/types/src/generic.types.ts @@ -0,0 +1,4 @@ +export type GenericItemT = { + [key: string]: any; +}; +export type GenericStateResult = any; diff --git a/core/types/src/index.ts b/core/types/src/index.ts new file mode 100644 index 00000000..c482e932 --- /dev/null +++ b/core/types/src/index.ts @@ -0,0 +1,13 @@ +export * from './generic.types'; +export * from './ListDimensions'; +export * from './ListDimensionsModel'; +export * from './ListGroupDimensions'; +export * from './masonry'; +export * from './scrollMetrics.types'; +export * from './list'; +export * from './itemMeta'; +export * from './Dimension'; +export * from './pseudoListDimensions'; +export * from './itemDimensions'; +export * from './baseDimensions'; +export * from './layout'; diff --git a/core/types/src/itemDimensions.ts b/core/types/src/itemDimensions.ts new file mode 100644 index 00000000..01901df8 --- /dev/null +++ b/core/types/src/itemDimensions.ts @@ -0,0 +1,5 @@ +import { ItemMetaOwnerRequiredProps } from './itemMeta'; +export interface IItemDimensions + extends ItemMetaOwnerRequiredProps { + extraInfo: ExtraInfo; +} diff --git a/core/types/src/itemMeta.ts b/core/types/src/itemMeta.ts new file mode 100644 index 00000000..b617b4fb --- /dev/null +++ b/core/types/src/itemMeta.ts @@ -0,0 +1,44 @@ +import SelectValue from '@x-oasis/select-value'; +import { GenericItemT } from './generic.types'; +import { IListDimensionsModel } from './ListDimensionsModel'; +import { IDimension } from './Dimension'; +// import { IPseudoListDimensions } from './pseudoListDimensions'; +import { IItemDimensions } from './itemDimensions'; +import { ItemLayout } from './layout'; + +export type IItemMeta< + ItemT extends GenericItemT = GenericItemT, + ItemMetaOwnerExtraInfo extends {} = {} +> = { + isApproximateLayout: boolean; + getLayout(): ItemLayout | undefined; +}; + +export type ItemMetaOwner< + ItemT extends GenericItemT = GenericItemT, + ItemMetaOwnerExtraInfo extends {} = {} +> = + | IListDimensionsModel + | IDimension + // | IPseudoListDimensions + | IItemDimensions; + +export type ItemMetaOwnerRequiredProps< + ItemT extends GenericItemT = GenericItemT +> = { + resolveConfigTuplesDefaultState(defaultValue?: boolean): { + [key: string]: boolean; + }; + getContainerOffset(): number; + getSelectValue(): SelectValue; + getItemOffset?(): number; + getIndexInfo(key: string): { + index?: number; + } | null; + getKeyItemOffset(key: string, exclusive?: boolean): number; + setKeyItemLayout( + key: string, + layout: ItemLayout | number, + updateIntervalTree?: boolean + ): boolean; +}; diff --git a/core/types/src/layout.ts b/core/types/src/layout.ts new file mode 100644 index 00000000..b171c71f --- /dev/null +++ b/core/types/src/layout.ts @@ -0,0 +1,6 @@ +export type ItemLayout = { + x: number; + y: number; + width: number; + height: number; +}; diff --git a/core/types/src/list.ts b/core/types/src/list.ts new file mode 100644 index 00000000..2ffd8424 --- /dev/null +++ b/core/types/src/list.ts @@ -0,0 +1,36 @@ +import { GenericItemT } from './generic.types'; +import { IItemMeta } from './itemMeta'; + +export type RenderItemInfo = { + item: ItemT; + itemMeta: IItemMeta; +}; + +export type DefaultItemT = { + [key: string]: any; +}; + +// export type RenderItem = ( +// info: RenderItemInfo +// ) => React.ReactElement | null; + +// export type ListProps = Omit< +// ListDimensionsModelProps, +// 'store' | 'container' +// > & { +// renderItem: RenderItem; +// }; + +// export type RecycleItemProps = { +// data: RecycleStateToken; +// // key: string; +// renderItem: RenderItem; +// dimensions: ListDimensions; +// }; + +// export type SpaceItemProps = { +// data: SpaceStateToken; +// // key: string; +// renderItem: RenderItem; +// dimensions: ListDimensions; +// }; diff --git a/core/types/src/masonry.ts b/core/types/src/masonry.ts new file mode 100644 index 00000000..806eae1d --- /dev/null +++ b/core/types/src/masonry.ts @@ -0,0 +1,24 @@ +import { GenericItemT } from './generic.types'; +import { IOnEndReachedHelper } from './OnEndReachedHelper'; +import { ListIndexInfo } from './ListDimensions'; + +export interface IMasonryDimensions { + // getItemKey(item: ItemT, index?: number): string | null; + onItemLayoutChanged(): void; + onDataSourceChanged(): void; + onEndReachedHelper: IOnEndReachedHelper; + getFinalKeyIndexInfo(key: string): MasonryIndexInfo; +} + +export interface IMasonryDimensionsModel< + ItemT extends GenericItemT = GenericItemT +> { + getKeyItemOffset(key: string, exclusive: boolean): number; + // getItemKey(item: ItemT, index?: number): string | null; +} + +export interface MasonryIndexInfo + extends ListIndexInfo { + columnIndex: number; + indexInTotal: number; +} diff --git a/core/types/src/pseudoListDimensions.ts b/core/types/src/pseudoListDimensions.ts new file mode 100644 index 00000000..16011fc0 --- /dev/null +++ b/core/types/src/pseudoListDimensions.ts @@ -0,0 +1,7 @@ +import { ItemMetaOwnerRequiredProps } from './itemMeta'; + +export interface IPseudoListDimensions + extends ItemMetaOwnerRequiredProps { + id: string; + extraInfo: ExtraInfo; +} diff --git a/core/types/src/scrollMetrics.types.ts b/core/types/src/scrollMetrics.types.ts new file mode 100644 index 00000000..9b779202 --- /dev/null +++ b/core/types/src/scrollMetrics.types.ts @@ -0,0 +1,50 @@ +export interface ScrollRectangle { + left: number; + top: number; + bottom: number; + right: number; +} + +export interface ScrollPoint { + x: number; + y: number; +} + +export interface ScrollVelocity { + x: number; + y: number; +} + +export interface ScrollSize { + height: number; + width: number; +} +export type ScrollEventMetrics = { + contentInset: ScrollRectangle; + contentOffset: ScrollPoint; + contentSize: ScrollSize; + layoutMeasurement: ScrollSize; + velocity?: ScrollVelocity | undefined; + zoomScale: number; + /** + * @platform ios + */ + targetContentOffset?: ScrollPoint | undefined; +}; + +export type ScrollMetrics = { + contentLength: number; + offset: number; + visibleLength: number; + + // not used + dOffset?: number; + dt?: number; + timestamp?: number; + velocity?: number; +}; + +export type ContentSize = { + width: number; + height: number; +}; diff --git a/core/types/tsconfig.json b/core/types/tsconfig.json new file mode 100644 index 00000000..8d9d5912 --- /dev/null +++ b/core/types/tsconfig.json @@ -0,0 +1,22 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "commonjs", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ] +} diff --git a/core/types/tsconfig.lib.json b/core/types/tsconfig.lib.json new file mode 100644 index 00000000..ce3b531c --- /dev/null +++ b/core/types/tsconfig.lib.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "declaration": true, + "types": ["node"] + }, + "include": ["src/**/*.ts"], + "exclude": ["vite.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"] +} diff --git a/core/types/tsconfig.spec.json b/core/types/tsconfig.spec.json new file mode 100644 index 00000000..3c002c21 --- /dev/null +++ b/core/types/tsconfig.spec.json @@ -0,0 +1,26 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "types": [ + "vitest/globals", + "vitest/importMeta", + "vite/client", + "node", + "vitest" + ] + }, + "include": [ + "vite.config.ts", + "vitest.config.ts", + "src/**/*.test.ts", + "src/**/*.spec.ts", + "src/**/*.test.tsx", + "src/**/*.spec.tsx", + "src/**/*.test.js", + "src/**/*.spec.js", + "src/**/*.test.jsx", + "src/**/*.spec.jsx", + "src/**/*.d.ts" + ] +} diff --git a/core/types/vite.config.ts b/core/types/vite.config.ts new file mode 100644 index 00000000..78d7f9df --- /dev/null +++ b/core/types/vite.config.ts @@ -0,0 +1,25 @@ +import { defineConfig } from 'vite'; + +import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin'; +import { nxCopyAssetsPlugin } from '@nx/vite/plugins/nx-copy-assets.plugin'; + +export default defineConfig({ + root: __dirname, + cacheDir: '../../node_modules/.vite/core/types', + + plugins: [nxViteTsPaths(), nxCopyAssetsPlugin(['*.md'])], + + // Uncomment this if you are using workers. + // worker: { + // plugins: [ nxViteTsPaths() ], + // }, + + test: { + watch: false, + globals: true, + environment: 'node', + include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], + reporters: ['default'], + coverage: { reportsDirectory: '../../coverage/core/types', provider: 'v8' }, + }, +}); diff --git a/core/utils/.swcrc b/core/utils/.swcrc new file mode 100644 index 00000000..28e88ec1 --- /dev/null +++ b/core/utils/.swcrc @@ -0,0 +1,29 @@ +{ + "jsc": { + "target": "es2017", + "parser": { + "syntax": "typescript", + "decorators": true, + "dynamicImport": true + }, + "transform": { + "decoratorMetadata": true, + "legacyDecorator": true + }, + "keepClassNames": true, + "externalHelpers": true, + "loose": true + }, + "module": { + "type": "es6" + }, + "sourceMaps": true, + "exclude": [ + "jest.config.ts", + ".*\\.spec.tsx?$", + ".*\\.test.tsx?$", + "./src/jest-setup.ts$", + "./**/jest-setup.ts$", + ".*.js$" + ] +} diff --git a/core/utils/README.md b/core/utils/README.md new file mode 100644 index 00000000..a44171ed --- /dev/null +++ b/core/utils/README.md @@ -0,0 +1,11 @@ +# utils + +This library was generated with [Nx](https://nx.dev). + +## Building + +Run `nx build utils` to build the library. + +## Running unit tests + +Run `nx test utils` to execute the unit tests via [Vitest](https://vitest.dev/). diff --git a/core/utils/eslint.config.js b/core/utils/eslint.config.js new file mode 100644 index 00000000..6e58c36a --- /dev/null +++ b/core/utils/eslint.config.js @@ -0,0 +1,22 @@ +const baseConfig = require('../../eslint.config.js'); + +module.exports = [ + ...baseConfig, + { + files: ['**/*.json'], + rules: { + '@nx/dependency-checks': [ + 'error', + { + ignoredFiles: [ + '{projectRoot}/eslint.config.{js,cjs,mjs}', + '{projectRoot}/vite.config.{js,ts,mjs,mts}', + ], + }, + ], + }, + languageOptions: { + parser: require('jsonc-eslint-parser'), + }, + }, +]; diff --git a/core/utils/package.json b/core/utils/package.json new file mode 100644 index 00000000..6141e1e0 --- /dev/null +++ b/core/utils/package.json @@ -0,0 +1,9 @@ +{ + "name": "@infinite-list/utils", + "version": "0.0.1", + "dependencies": { + "@x-oasis/batchinate-last": "^0.1.14" + }, + "main": "./index.cjs", + "module": "./index.js" +} diff --git a/core/utils/project.json b/core/utils/project.json new file mode 100644 index 00000000..526d7328 --- /dev/null +++ b/core/utils/project.json @@ -0,0 +1,22 @@ +{ + "name": "utils", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "core/utils/src", + "projectType": "library", + "release": { + "version": { + "generatorOptions": { + "packageRoot": "dist/{projectRoot}", + "currentVersionResolver": "git-tag" + } + } + }, + "tags": [], + "targets": { + "nx-release-publish": { + "options": { + "packageRoot": "dist/{projectRoot}" + } + } + } +} diff --git a/core/utils/rollup.config.js b/core/utils/rollup.config.js new file mode 100644 index 00000000..86c3b796 --- /dev/null +++ b/core/utils/rollup.config.js @@ -0,0 +1,18 @@ +const { withNx } = require('@nx/rollup/with-nx'); + +module.exports = withNx( + { + main: './src/index.ts', + outputPath: '../../dist/core/utils', + tsConfig: '../../tsconfig.json', + // tsConfig: './tsconfig.lib.json', + compiler: 'swc', + format: ['cjs', 'esm'], + assets: [{ input: '.', output: '.', glob: '*.md' }], + }, + { + // Provide additional rollup configuration here. See: https://rollupjs.org/configuration-options + // e.g. + // output: { sourcemap: true }, + } +); diff --git a/core/utils/src/EnabledSelector.ts b/core/utils/src/EnabledSelector.ts new file mode 100644 index 00000000..f57c3652 --- /dev/null +++ b/core/utils/src/EnabledSelector.ts @@ -0,0 +1,38 @@ +class EnabledSelector { + private _dispatchScrollMetricsEnabled = true; + private _onEnabled?: Function; + + constructor(props?: { onEnabled?: Function }) { + const { onEnabled } = props || {}; + this._onEnabled = onEnabled; + } + + getDispatchScrollMetricsEnabledStatus() { + return this._dispatchScrollMetricsEnabled; + } + + setDispatchScrollMetricsEnabledStatus(value: boolean) { + if (this._dispatchScrollMetricsEnabled !== value) { + if (value) this.enableDispatchScrollMetrics(); + else this.disableDispatchScrollMetrics(); + } + } + + enableDispatchScrollMetrics() { + this._dispatchScrollMetricsEnabled = true; + if (typeof this._onEnabled === 'function') { + this._onEnabled.call(this); + } + } + + disableDispatchScrollMetrics() { + this._dispatchScrollMetricsEnabled = false; + } + + toggleDispatchScrollMetrics() { + if (!this._dispatchScrollMetricsEnabled) this.enableDispatchScrollMetrics(); + else this.disableDispatchScrollMetrics(); + } +} + +export default EnabledSelector; diff --git a/core/utils/src/KeyIndexManager.ts b/core/utils/src/KeyIndexManager.ts new file mode 100644 index 00000000..6005ea9a --- /dev/null +++ b/core/utils/src/KeyIndexManager.ts @@ -0,0 +1,54 @@ +/** + * to cache key <-> index value + */ +class KeyIndexManager { + _keyToIndexMap: Map = new Map(); + _indexKeys: Array = []; + + get keyToIndexMap() { + return this._keyToIndexMap; + } + + get indexKeys() { + return this._indexKeys; + } + + setIndexKey(index: number, key: string) { + this._indexKeys[index] = key; + } + + setKeyIndex(key: string, index: number) { + this._keyToIndexMap.set(key, index); + } + + getIndexKey(index: number) { + return this._indexKeys[index]; + } + + getIndexKeysLength() { + return this._indexKeys.length; + } + + getKeyIndex(key: string) { + return this._keyToIndexMap.get(key); + } + + setKeyToIndexMap(values: Map) { + this._keyToIndexMap = values; + } + + setIndexKeys(values: string[]) { + this._indexKeys = values; + } + + findIndex(key: string) { + return this._indexKeys.indexOf(key); + } + + hasKey(key: string) { + // return this._indexKeys.indexOf(key) !== -1; + return typeof this._keyToIndexMap.get(key) === 'number'; + } +} + +export default KeyIndexManager; diff --git a/core/utils/src/ListSpy.tsx b/core/utils/src/ListSpy.tsx new file mode 100644 index 00000000..c2de5901 --- /dev/null +++ b/core/utils/src/ListSpy.tsx @@ -0,0 +1,53 @@ +// import React, { useCallback, useMemo, useState } from 'react'; +// import { StyleSheet, Text, TouchableOpacity, ViewStyle } from 'react-native'; + +// import ListSpyUtils from './ListSpyUtils'; + +// const styles = StyleSheet.create({ +// touchView: { +// backgroundColor: '#42647f', +// alignItems: 'center', +// justifyContent: 'center', +// borderRadius: 50, +// width: 50, +// height: 50, +// }, +// touchText: { +// fontSize: 10, +// color: '#d5b77a', +// }, +// }); + +// const ListSpy = () => { +// const [enableDispatchOnScroll, setEnableDispatchOnScroll] = useState( +// ListSpyUtils.getDispatchScrollMetricsEnabledStatus() +// ); + +// const onPress = useCallback(() => { +// ListSpyUtils.setEnableDispatchOnScorll(!enableDispatchOnScroll); +// setEnableDispatchOnScroll(!enableDispatchOnScroll); +// }, [enableDispatchOnScroll]); + +// const containerStyle = useMemo(() => { +// return [ +// styles.touchView, +// { +// opacity: enableDispatchOnScroll ? 0.5 : 1, +// }, +// ]; +// }, [enableDispatchOnScroll]); + +// return ( +// +// ListSpy +// +// ); +// }; + +// export default ListSpy; + +export default () => null; diff --git a/core/utils/src/ListSpyUtils.ts b/core/utils/src/ListSpyUtils.ts new file mode 100644 index 00000000..cfb08def --- /dev/null +++ b/core/utils/src/ListSpyUtils.ts @@ -0,0 +1,11 @@ +import EnabledSelector from './EnabledSelector'; + +class ListSpyUtils { + private _selector: EnabledSelector = new EnabledSelector(); + + get selector() { + return this._selector; + } +} + +export default new ListSpyUtils(); diff --git a/core/utils/src/StillnessHelper.ts b/core/utils/src/StillnessHelper.ts new file mode 100644 index 00000000..13798c46 --- /dev/null +++ b/core/utils/src/StillnessHelper.ts @@ -0,0 +1,41 @@ +import BatchinateLast from '@x-oasis/batchinate-last'; + +class StillnessHelper { + private _thresholdValueMS: number; + private _handler: Function; + private _isStill: boolean; + + public startClockBatchinateLast: BatchinateLast; + + constructor(props: { + handler: (...args: any[]) => void; + stillnessThreshold: number; + }) { + const { handler, stillnessThreshold } = props; + this._isStill = true; + this._handler = handler; + + this._thresholdValueMS = stillnessThreshold; + this.startClockBatchinateLast = new BatchinateLast( + this.clock.bind(this), + this._thresholdValueMS + ); + } + + get enabled() { + return !!this._thresholdValueMS; + } + + get isStill() { + if (this.enabled) return this._isStill; + return false; + } + + clock(...args: any[]) { + if (typeof this._handler === 'function') { + this._handler.apply(this, args); // eslint-disable-line + } + } +} + +export default StillnessHelper; diff --git a/core/utils/src/exportedUtils.ts b/core/utils/src/exportedUtils.ts new file mode 100644 index 00000000..04fc7fd8 --- /dev/null +++ b/core/utils/src/exportedUtils.ts @@ -0,0 +1,44 @@ +import { GenericItemT } from '@infinite-list/types'; + +export type ItemPossibleT = + | T + | { + key: string; + } + | { + id: string; + }; + +export type ExtractKeyItem = Extract< + T, + { + key: string; + } +>; + +export type ExtractIdItem = Extract< + T, + { + id: string; + } +>; + +const isPresent = (v: any) => v != null; + +export type IDefaultKeyExtra = ( + item: ItemPossibleT, + index?: number +) => string; + +export const defaultKeyExtractor = ( + item: ItemPossibleT, + index?: number +) => { + if (isPresent((item as ExtractKeyItem>).key)) { + return String((item as ExtractKeyItem>).key); + } + if (isPresent((item as ExtractIdItem>).id)) { + return String((item as ExtractIdItem>).id); + } + return `default_index_key_${index}`; +}; diff --git a/core/utils/src/index.ts b/core/utils/src/index.ts new file mode 100644 index 00000000..79811c83 --- /dev/null +++ b/core/utils/src/index.ts @@ -0,0 +1,7 @@ +export { default as KeyIndexManager } from './KeyIndexManager'; +export { default as EnabledSelector } from './EnabledSelector'; +export { default as ListSpy } from './ListSpy'; +export { default as ListSpyUtils } from './ListSpyUtils'; +export { default as log } from './logger'; +export { default as StillnessHelper } from './StillnessHelper'; +export * from './exportedUtils'; diff --git a/core/utils/src/logger.ts b/core/utils/src/logger.ts new file mode 100644 index 00000000..5b41e847 --- /dev/null +++ b/core/utils/src/logger.ts @@ -0,0 +1,8 @@ +export const info = (...args: any[]) => { + // @ts-expect-error + if (process.env.NODE_ENV === 'verbose') console.info(...args); +}; + +export default { + info, +}; diff --git a/core/utils/tsconfig.json b/core/utils/tsconfig.json new file mode 100644 index 00000000..8d9d5912 --- /dev/null +++ b/core/utils/tsconfig.json @@ -0,0 +1,22 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "commonjs", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ] +} diff --git a/core/utils/tsconfig.lib.json b/core/utils/tsconfig.lib.json new file mode 100644 index 00000000..ce3b531c --- /dev/null +++ b/core/utils/tsconfig.lib.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "declaration": true, + "types": ["node"] + }, + "include": ["src/**/*.ts"], + "exclude": ["vite.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"] +} diff --git a/core/utils/tsconfig.spec.json b/core/utils/tsconfig.spec.json new file mode 100644 index 00000000..3c002c21 --- /dev/null +++ b/core/utils/tsconfig.spec.json @@ -0,0 +1,26 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "types": [ + "vitest/globals", + "vitest/importMeta", + "vite/client", + "node", + "vitest" + ] + }, + "include": [ + "vite.config.ts", + "vitest.config.ts", + "src/**/*.test.ts", + "src/**/*.spec.ts", + "src/**/*.test.tsx", + "src/**/*.spec.tsx", + "src/**/*.test.js", + "src/**/*.spec.js", + "src/**/*.test.jsx", + "src/**/*.spec.jsx", + "src/**/*.d.ts" + ] +} diff --git a/core/utils/vite.config.ts b/core/utils/vite.config.ts new file mode 100644 index 00000000..767c643e --- /dev/null +++ b/core/utils/vite.config.ts @@ -0,0 +1,25 @@ +import { defineConfig } from 'vite'; + +import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin'; +import { nxCopyAssetsPlugin } from '@nx/vite/plugins/nx-copy-assets.plugin'; + +export default defineConfig({ + root: __dirname, + cacheDir: '../../node_modules/.vite/core/utils', + + plugins: [nxViteTsPaths(), nxCopyAssetsPlugin(['*.md'])], + + // Uncomment this if you are using workers. + // worker: { + // plugins: [ nxViteTsPaths() ], + // }, + + test: { + watch: false, + globals: true, + environment: 'node', + include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], + reporters: ['default'], + coverage: { reportsDirectory: '../../coverage/core/utils', provider: 'v8' }, + }, +}); diff --git a/core/viewable/.swcrc b/core/viewable/.swcrc new file mode 100644 index 00000000..28e88ec1 --- /dev/null +++ b/core/viewable/.swcrc @@ -0,0 +1,29 @@ +{ + "jsc": { + "target": "es2017", + "parser": { + "syntax": "typescript", + "decorators": true, + "dynamicImport": true + }, + "transform": { + "decoratorMetadata": true, + "legacyDecorator": true + }, + "keepClassNames": true, + "externalHelpers": true, + "loose": true + }, + "module": { + "type": "es6" + }, + "sourceMaps": true, + "exclude": [ + "jest.config.ts", + ".*\\.spec.tsx?$", + ".*\\.test.tsx?$", + "./src/jest-setup.ts$", + "./**/jest-setup.ts$", + ".*.js$" + ] +} diff --git a/core/viewable/README.md b/core/viewable/README.md new file mode 100644 index 00000000..60ce1c89 --- /dev/null +++ b/core/viewable/README.md @@ -0,0 +1,11 @@ +# viewable + +This library was generated with [Nx](https://nx.dev). + +## Building + +Run `nx build viewable` to build the library. + +## Running unit tests + +Run `nx test viewable` to execute the unit tests via [Vitest](https://vitest.dev/). diff --git a/core/viewable/eslint.config.js b/core/viewable/eslint.config.js new file mode 100644 index 00000000..6e58c36a --- /dev/null +++ b/core/viewable/eslint.config.js @@ -0,0 +1,22 @@ +const baseConfig = require('../../eslint.config.js'); + +module.exports = [ + ...baseConfig, + { + files: ['**/*.json'], + rules: { + '@nx/dependency-checks': [ + 'error', + { + ignoredFiles: [ + '{projectRoot}/eslint.config.{js,cjs,mjs}', + '{projectRoot}/vite.config.{js,ts,mjs,mts}', + ], + }, + ], + }, + languageOptions: { + parser: require('jsonc-eslint-parser'), + }, + }, +]; diff --git a/core/viewable/package.json b/core/viewable/package.json new file mode 100644 index 00000000..66b163f5 --- /dev/null +++ b/core/viewable/package.json @@ -0,0 +1,12 @@ +{ + "name": "@infinite-list/viewable", + "version": "0.0.1", + "dependencies": { + "@x-oasis/batchinator": "^0.1.14", + "@x-oasis/is-clamped": "^0.1.14", + "@x-oasis/resolve-changed": "^0.1.14", + "@x-oasis/unique-array-object": "^0.1.14" + }, + "main": "./index.cjs", + "module": "./index.js" +} diff --git a/core/viewable/project.json b/core/viewable/project.json new file mode 100644 index 00000000..143a2a8f --- /dev/null +++ b/core/viewable/project.json @@ -0,0 +1,28 @@ +{ + "name": "viewable", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "core/viewable/src", + "projectType": "library", + "release": { + "version": { + "generatorOptions": { + "packageRoot": "dist/{projectRoot}", + "currentVersionResolver": "git-tag" + } + } + }, + "tags": [], + "targets": { + "nx-release-publish": { + "options": { + "packageRoot": "dist/{projectRoot}" + } + }, + "test": { + "executor": "@nx/vite:test", + "options": { + "config": "packages/data-model/vite.config.ts" + } + } + } +} diff --git a/core/viewable/rollup.config.js b/core/viewable/rollup.config.js new file mode 100644 index 00000000..9495ad72 --- /dev/null +++ b/core/viewable/rollup.config.js @@ -0,0 +1,17 @@ +const { withNx } = require('@nx/rollup/with-nx'); + +module.exports = withNx( + { + main: './src/index.ts', + outputPath: '../../dist/core/viewable', + tsConfig: './tsconfig.lib.json', + compiler: 'swc', + format: ['cjs', 'esm'], + assets: [{ input: '.', output: '.', glob: '*.md' }], + }, + { + // Provide additional rollup configuration here. See: https://rollupjs.org/configuration-options + // e.g. + // output: { sourcemap: true }, + } +); diff --git a/core/viewable/src/OnEndReachedHelper.ts b/core/viewable/src/OnEndReachedHelper.ts new file mode 100644 index 00000000..de291d19 --- /dev/null +++ b/core/viewable/src/OnEndReachedHelper.ts @@ -0,0 +1,328 @@ +import Batchinator from '@x-oasis/batchinator'; +import { + ON_END_REACHED_HANDLER_TIMEOUT_THRESHOLD, + ON_END_REACHED_THRESHOLD, + ON_END_REACHED_TIMEOUT_THRESHOLD, +} from './common'; +import { + OnEndReached, + OnEndReachedHelperProps, + ScrollMetrics, + SendOnEndReachedDistanceFromBottomStack, +} from './types'; +import isClamped from '@x-oasis/is-clamped'; + +class OnEndReachedHelper { + readonly id: string; + readonly onEndReachedThreshold: number; + readonly onEndReachedTimeoutThreshold: number; + readonly onEndReachedHandlerTimeoutThreshold: number; + readonly onEndReachedHandlerBatchinator: Batchinator; + readonly _consecutiveDistanceTimeoutThresholdValue = 800; + readonly sendOnEndReachedDistanceFromEndStack: SendOnEndReachedDistanceFromBottomStack; + + private onEndReached?: OnEndReached | Array; + private _scrollMetrics?: ScrollMetrics; + private _maxCountOfHandleOnEndReachedAfterStillness: number; + private _distanceFromEndThresholdValue: number; + private _waitingForDataChangedSinceEndReached = false; + private _onEndReachedTimeoutHandler?: NodeJS.Timeout; + private _currentMutexMS = 0; + + public attemptToHandleOnEndReachedBatchinator: Batchinator; + + constructor(props: OnEndReachedHelperProps) { + const { + id, + onEndReached, + distanceFromEndThresholdValue = 100, + maxCountOfHandleOnEndReachedAfterStillness = 3, + onEndReachedThreshold = ON_END_REACHED_THRESHOLD, + onEndReachedTimeoutThreshold = ON_END_REACHED_TIMEOUT_THRESHOLD, + onEndReachedHandlerTimeoutThreshold = ON_END_REACHED_HANDLER_TIMEOUT_THRESHOLD, + } = props; + + this.id = id; + this.onEndReached = onEndReached; + this.onEndReachedThreshold = onEndReachedThreshold; + this.onEndReachedTimeoutThreshold = onEndReachedTimeoutThreshold; + this.onEndReachedHandlerTimeoutThreshold = + onEndReachedHandlerTimeoutThreshold; + this.sendOnEndReachedDistanceFromEndStack = []; + this._distanceFromEndThresholdValue = distanceFromEndThresholdValue; + this._maxCountOfHandleOnEndReachedAfterStillness = + maxCountOfHandleOnEndReachedAfterStillness; + + this.releaseHandlerMutex = this.releaseHandlerMutex.bind(this); + this.onEndReachedHandlerBatchinator = new Batchinator( + this.onEndReachedHandler.bind(this), + 50 + ); + this.attemptToHandleOnEndReachedBatchinator = new Batchinator( + this.attemptToHandleOnEndReached.bind(this), + 50 + ); + } + + static createStackToken(distanceFromEnd: number) { + return { + ts: [Date.now()], + hit: 1, + distancesFromEnd: [distanceFromEnd], + resetCount: 0, + }; + } + + setHandler(onEndReached: OnEndReached) { + if ( + typeof onEndReached === 'function' && + this.onEndReached !== onEndReached + ) + this.onEndReached = onEndReached; + } + + hasHandler() { + return ( + Array.isArray(this.onEndReached) || + typeof this.onEndReached === 'function' + ); + } + + removeHandler(onEndReached: OnEndReached) { + const next = ([] as OnEndReached[]).concat(this.onEndReached || []); + const index = next.findIndex((handler) => handler === onEndReached); + if (index !== -1) { + next.splice(index, 1); + this.onEndReached = next; + } + } + + addHandler(onEndReached: OnEndReached) { + if (typeof onEndReached === 'function') { + const handler = Array.isArray(this.onEndReached) + ? this.onEndReached + : this.onEndReached + ? [this.onEndReached] + : []; + const index = handler.findIndex((v) => v === onEndReached); + if (index === -1) handler.push(onEndReached); + this.onEndReached = handler; + } + + return () => { + if (Array.isArray(this.onEndReached)) { + const index = this.onEndReached.findIndex((v) => v === onEndReached); + if (index !== -1) this.onEndReached.splice(index, 1); + } + }; + } + + /** + * + * @param scrollMetrics + * @param positive + * @returns + */ + perform( + scrollMetrics: ScrollMetrics | undefined = this._scrollMetrics, + positive = false + ) { + if (!scrollMetrics) return; + const { contentLength, offset, visibleLength } = scrollMetrics; + if (!visibleLength) return; + const distanceFromEnd = contentLength - visibleLength - offset; + const threshold = this.onEndReachedThreshold * visibleLength; + this._scrollMetrics = scrollMetrics; + + if (positive && distanceFromEnd < 0) { + return { + distanceFromEnd, + isEndReached: false, + }; + } + + return { + distanceFromEnd, + isEndReached: distanceFromEnd < threshold, + }; + } + + attemptToHandleOnEndReached() { + const info = this.perform(this._scrollMetrics); + + if (info) { + const { isEndReached, distanceFromEnd } = info; + this.performEndReached({ isEndReached, distanceFromEnd }); + } + } + + clearTimer() { + if (this._onEndReachedTimeoutHandler) { + clearTimeout(this._onEndReachedTimeoutHandler); + } + this._onEndReachedTimeoutHandler = undefined; + } + + releaseHandlerMutex(mutexMS: number) { + return (() => { + if (mutexMS < this._currentMutexMS) return; + this._waitingForDataChangedSinceEndReached = false; + this.clearTimer(); + }).bind(this); + } + + timeoutReleaseHandlerMutex(now: number) { + console.warn( + 'OnEndReachedHelper ', + this.id, + now, + Date.now() - now, + this.lastStack, + "' mutex is released due to timeout" + ); + this.releaseHandlerMutex(now).call(this); + } + + get lastStack() { + return this.sendOnEndReachedDistanceFromEndStack[ + this.sendOnEndReachedDistanceFromEndStack.length - 1 + ]; + } + + getStack() { + return this.sendOnEndReachedDistanceFromEndStack; + } + + reachCountLimitation() { + if (!this.lastStack) return false; + if (this.lastStack.hit >= this._maxCountOfHandleOnEndReachedAfterStillness) + return true; + return false; + } + + shouldResetCountLimitation(distanceFromEnd: number) { + const { distancesFromEnd } = this.lastStack; + const distance = distancesFromEnd[distancesFromEnd.length - 1]; + if (distanceFromEnd <= 0) return false; + if (distance !== distanceFromEnd) { + this.lastStack.resetCount += 1; + this.lastStack.hit = 1; + return true; + } + return false; + } + + isConsecutiveDistance(distanceFromEnd: number) { + const lastStack = + this.sendOnEndReachedDistanceFromEndStack[ + this.sendOnEndReachedDistanceFromEndStack.length - 1 + ]; + + if (lastStack) { + const { distancesFromEnd, ts } = lastStack; + + const base = distancesFromEnd[0]; + const _ts = ts[ts.length - 1]; + const now = Date.now(); + if ( + isClamped( + base - this._distanceFromEndThresholdValue, + distanceFromEnd, + base + this._distanceFromEndThresholdValue + ) && + now - _ts < this._consecutiveDistanceTimeoutThresholdValue + ) { + return true; + } + } + + return false; + } + + performEndReached(info: { isEndReached: boolean; distanceFromEnd: number }) { + if (this._waitingForDataChangedSinceEndReached) return; + const { isEndReached, distanceFromEnd } = info; + + if (!this.hasHandler()) return; + if (isEndReached && !this.isConsecutiveDistance(distanceFromEnd)) { + if ( + !this.reachCountLimitation() || + this.shouldResetCountLimitation(distanceFromEnd) + ) { + this.onEndReachedHandlerBatchinator.schedule({ + distanceFromEnd, + }); + } + } + } + + updateStack(distanceFromEnd: number) { + const lastStack = + this.sendOnEndReachedDistanceFromEndStack[ + this.sendOnEndReachedDistanceFromEndStack.length - 1 + ]; + + if (lastStack) { + const { distancesFromEnd } = lastStack; + const stackDistanceFromEnd = distancesFromEnd[0]; + + if ( + isClamped( + stackDistanceFromEnd - this._distanceFromEndThresholdValue, + distanceFromEnd, + stackDistanceFromEnd + this._distanceFromEndThresholdValue + ) + ) { + lastStack.distancesFromEnd.push(distanceFromEnd); + lastStack.hit += 1; + lastStack.ts.push(Date.now()); + return; + } + } + + this.sendOnEndReachedDistanceFromEndStack.push( + OnEndReachedHelper.createStackToken(distanceFromEnd) + ); + } + + timeoutTrailingHandler() { + if (this._scrollMetrics) { + const info = this.perform(this._scrollMetrics); + if (info) this.performEndReached(info); + } + } + + onEndReachedHandler(opts: { distanceFromEnd: number }) { + if (!this.hasHandler()) return; + if (this._waitingForDataChangedSinceEndReached) return; + this._waitingForDataChangedSinceEndReached = true; + const { distanceFromEnd } = opts; + this.clearTimer(); + const now = Date.now(); + this._onEndReachedTimeoutHandler = setTimeout(() => { + this.timeoutReleaseHandlerMutex(now); + this.timeoutTrailingHandler(); + }, this.onEndReachedHandlerTimeoutThreshold); + this._currentMutexMS = now; + + this.updateStack(distanceFromEnd); + + if (Array.isArray(this.onEndReached)) { + this.onEndReached.forEach((handler) => { + handler({ + distanceFromEnd, + cb: this.releaseHandlerMutex(this._currentMutexMS), + releaseHandlerMutex: this.releaseHandlerMutex(this._currentMutexMS), + }); + }); + } else { + this.onEndReached?.({ + distanceFromEnd, + cb: this.releaseHandlerMutex(this._currentMutexMS), + releaseHandlerMutex: this.releaseHandlerMutex(this._currentMutexMS), + }); + } + } +} + +export default OnEndReachedHelper; diff --git a/core/viewable/src/ViewabilityConfigTuples.ts b/core/viewable/src/ViewabilityConfigTuples.ts new file mode 100644 index 00000000..ade022ae --- /dev/null +++ b/core/viewable/src/ViewabilityConfigTuples.ts @@ -0,0 +1,134 @@ +import uniqueArrayObject from '@x-oasis/unique-array-object'; +import { + GenericItemT, + ViewabilityConfig, + OnViewableItemsChanged, + ViewabilityConfigCallbackPairs, + ViewabilityScrollMetrics, +} from './types'; +import ViewablityHelper from './ViewablityHelper'; +import { DEFAULT_VIEWABILITY_CONFIG } from './constants'; +// TODO ------ +import { ItemMeta } from './types'; +import ViewabilityItemMeta from './ViewabilityItemMeta'; + +class ViewabilityConfigTuples { + private _tuple: ViewabilityConfigCallbackPairs = []; + public viewabilityHelpers: Array = []; + + constructor(props: { + isListItem?: boolean; + viewabilityConfig?: ViewabilityConfig; + viewabilityConfigCallbackPairs?: ViewabilityConfigCallbackPairs; + onViewableItemsChanged?: OnViewableItemsChanged; + }) { + const { + viewabilityConfig = DEFAULT_VIEWABILITY_CONFIG, + onViewableItemsChanged, + isListItem = false, + viewabilityConfigCallbackPairs = [], + } = props; + + if (viewabilityConfigCallbackPairs.length) { + if ( + viewabilityConfigCallbackPairs.length === 1 && + viewabilityConfigCallbackPairs[0].viewabilityConfig + ) { + viewabilityConfigCallbackPairs[0].viewabilityConfig.name = 'viewable'; + } + viewabilityConfigCallbackPairs.forEach((pair) => { + const { + viewabilityConfig = DEFAULT_VIEWABILITY_CONFIG, + onViewableItemsChanged, + } = pair; + + if (!viewabilityConfig?.name) { + console.warn( + '[ViewabilityConfigTuples warning] `viewabilityConfig.name` is required' + ); + } else { + this._tuple.push({ + onViewableItemsChanged, + viewabilityConfig, + }); + } + }); + } else if (onViewableItemsChanged) { + this._tuple.push({ + onViewableItemsChanged, + viewabilityConfig: { + // @ts-expect-error + name: 'viewable', + ...viewabilityConfig, + }, + }); + } else if (viewabilityConfig) { + this.tuple.push({ + viewabilityConfig: { + // @ts-expect-error + name: 'viewable', + ...viewabilityConfig, + }, + }); + } + + // @ts-expect-error + this._tuple = uniqueArrayObject( + this._tuple, + (config) => config.viewabilityConfig.name + ); + + this._tuple.forEach((pair) => { + this.viewabilityHelpers.push( + new ViewablityHelper({ + pair, + isListItem, + }) + ); + }); + } + + get tuple() { + return this._tuple; + } + + getDefaultState(defaultValue?: boolean) { + return this.tuple.reduce<{ + [key: string]: boolean; + }>((acc, pair) => { + const { viewabilityConfig } = pair; + const { name } = viewabilityConfig || {}; + if (name) acc[name] = !!defaultValue; + return acc; + }, {}); + } + + getViewabilityHelpers() { + return this.viewabilityHelpers; + } + + resolveItemMetaState( + itemMeta: ItemMeta, + viewabilityScrollMetrics?: ViewabilityScrollMetrics, + getItemOffset?: (itemMeta: ItemMeta | ViewabilityItemMeta) => number + ) { + if (!viewabilityScrollMetrics || !itemMeta) + return itemMeta.getState() || {}; + if (!itemMeta.getLayout()) return itemMeta?.getState() || {}; + return this.viewabilityHelpers.reduce<{ + [key: string]: boolean; + }>((value, helper) => { + const falsy = helper.checkItemViewability( + // @ts-ignore [TODO] + itemMeta, + viewabilityScrollMetrics, + getItemOffset + ); + const key = helper.configName; + value[key] = falsy; + return value; + }, {}); + } +} + +export default ViewabilityConfigTuples; diff --git a/core/viewable/src/ViewabilityItemMeta.ts b/core/viewable/src/ViewabilityItemMeta.ts new file mode 100644 index 00000000..56f9cb56 --- /dev/null +++ b/core/viewable/src/ViewabilityItemMeta.ts @@ -0,0 +1,27 @@ +abstract class ViewabilityItemMeta { + readonly _key: string; + + constructor(props: { key: string }) { + const { key } = props; + this._key = key; + } + + getKey() { + return this._key; + } + + get key() { + return this._key; + } + + abstract getIndex(): number; + + // getMetaOnViewableItemsChanged() { + // return {} + // } + + abstract getItemOffset(): number; + abstract getItemLength(): number; +} + +export default ViewabilityItemMeta; diff --git a/core/viewable/src/ViewablityHelper.ts b/core/viewable/src/ViewablityHelper.ts new file mode 100644 index 00000000..fef7de79 --- /dev/null +++ b/core/viewable/src/ViewablityHelper.ts @@ -0,0 +1,249 @@ +import resolveChanged from '@x-oasis/resolve-changed'; +import ViewabilityItemMeta from './ViewabilityItemMeta'; +import { + ScrollMetrics, + ViewabilityScrollMetrics, + ViewAreaModeConfig, + ViewabilityConfig, + OnViewableItemsChanged, + NormalizedViewablityConfig, + ViewabilityConfigCallbackPair, + VisiblePercentModeConfig, + ViewabilityHelperChangedToken, +} from './types'; +import { isItemViewable } from './viewabilityUtils'; + +const createChangedToken = (opts: { + helper: ViewabilityItemMeta; + isViewable: boolean; + isListItem?: boolean; +}) => { + const { helper, isViewable } = opts; + return { + item: null, + key: helper.getKey(), + isViewable, + // TODO + index: helper.getIndex(), + }; +}; + +class ViewablityHelper { + readonly isListItem: boolean; + private _configName: string; + private _changed: Array = []; + private _config: NormalizedViewablityConfig; + private _callback?: OnViewableItemsChanged; + readonly _pair: ViewabilityConfigCallbackPair; + + constructor(props: { + isListItem: boolean; + pair: ViewabilityConfigCallbackPair; + }) { + const { pair, isListItem } = props; + + this._pair = pair; + this._configName = pair.viewabilityConfig.name; + this.isListItem = isListItem; + + this._config = this.normalizeTupleConfig(this._pair.viewabilityConfig); + this._callback = this._pair.onViewableItemsChanged; + } + + /** + * Return state for rendering. It could be { isViewable: true, isImageViewable: false, ...} + */ + get defaultStateViewToken() { + return { + [this._configName]: false, + }; + } + + get configName() { + return this._configName; + } + + get config() { + return this._config; + } + + get callback() { + return this._callback; + } + + /** + * View Token for `onItemsChanged` callback + */ + // createChangedViewToken() {} + + // resolveChangedViewTokenCallbackInfo() {} + + /** + * + * @param tupleConfig + * @returns + * - viewAreaMode: if true then it will compare with viewport + * - viewablePercentThreshold: It's a merged value + */ + normalizeTupleConfig(tupleConfig: ViewabilityConfig): { + viewport: number; + exclusive: boolean; + viewAreaMode: boolean; + viewablePercentThreshold: number; + } { + const viewport = tupleConfig.viewport || 0; + const exclusive = !!tupleConfig.exclusive; + const viewAreaCoveragePercentThreshold = + (tupleConfig as ViewAreaModeConfig).viewAreaCoveragePercentThreshold || 0; + const itemVisiblePercentThreshold = + (tupleConfig as VisiblePercentModeConfig).itemVisiblePercentThreshold || + 0; + return { + ...tupleConfig, + viewport, + exclusive, + viewAreaMode: !!viewAreaCoveragePercentThreshold, + viewablePercentThreshold: + viewAreaCoveragePercentThreshold || itemVisiblePercentThreshold, + }; + } + + checkItemViewability( + viewabilityItemMeta: ViewabilityItemMeta, + scrollMetrics: ViewabilityScrollMetrics, + getItemOffset?: (itemMeta: ViewabilityItemMeta) => number + ) { + const { viewport, viewAreaMode, viewablePercentThreshold } = this._config; + return isItemViewable({ + viewport, + getItemOffset, + viewAreaMode, + viewabilityItemMeta, + viewablePercentThreshold, + viewabilityScrollMetrics: scrollMetrics, + }); + } + + resolveViewableItems( + itemsMeta: Array, + scrollMetrics: ViewabilityScrollMetrics + ) { + const { exclusive } = this._config; + + let nextData = itemsMeta.filter((itemMeta) => + this.checkItemViewability(itemMeta, scrollMetrics) + ); + + if (exclusive) nextData = nextData.slice(0, 1); + + return nextData; + } + + onUpdateItemsMeta( + itemsMeta: Array, + scrollMetrics: ScrollMetrics + ) { + const nextViewableItems = this.resolveViewableItems( + itemsMeta, + scrollMetrics + ); + this.mergeState(nextViewableItems); + this.performViewableItemsChangedCallback(nextViewableItems); + } + + // TODO ===== + performViewableItemsChangedCallback( + nextViewableItems: Array = [] + ) { + // trigger changed items callback; + if (typeof this._callback === 'function') { + const { removed, added } = resolveChanged( + this._changed, + nextViewableItems + ); + + const [addedTokens, removedTokens] = [added, removed].map( + (entry, entryIndex) => + entry.map((itemMeta) => + createChangedToken({ + helper: itemMeta, + isViewable: !entryIndex, + isListItem: this.isListItem, + }) + ) + ); + + this._callback({ + viewableItems: nextViewableItems.map((helper) => + createChangedToken({ + helper, + isViewable: true, + isListItem: this.isListItem, + }) + ), + changed: ([] as ViewabilityHelperChangedToken[]).concat( + addedTokens, + removedTokens + ), + }); + } + this._changed = nextViewableItems; + } + + // onUpdateMetrics(options: { + // dimensions: BaseDimensions; + // scrollMetrics: ScrollMetrics; + // }) { + // const nextChanged = Object.entries(this.tuple.configMap).reduce<{ + // [key: string]: Array; + // }>((result, current) => { + // const [configKey, tupleConfig] = current; + // const nextData = this.onUpdateTupleConfig( + // configKey, + // tupleConfig, + // options + // ); + // result[configKey] = nextData.slice(); + // return result; + // }, {}); + + // this.mergeState(nextChanged); + + // // tuple在处理都结束以后才进行更新 + // Object.keys(this.tuple.configMap).forEach((configKey) => { + // const newItems = nextChanged[configKey]; + // this.tuple.changed[configKey] = newItems; + // }); + // } + + mergeState(nextViewableItems: Array) { + const itemMetaStateMap = new Map< + ViewabilityItemMeta, + { + [key: string]: boolean; + } + >(); + + this._changed.forEach((itemMeta) => { + if (!itemMetaStateMap.has(itemMeta)) { + itemMetaStateMap.set(itemMeta, { ...this.defaultStateViewToken }); + } + }); + + nextViewableItems.forEach((itemMeta) => { + itemMetaStateMap.set(itemMeta, { + ...(itemMetaStateMap.get(itemMeta) || {}), + [this._configName]: true, + }); + }); + + // @ts-ignore [TODO] + for (const [itemMeta, state] of itemMetaStateMap) { + // @ts-ignore TODO, should reconsider. + // it only used for itemDimensions..... + itemMeta?.setItemMetaState(state); + } + } +} + +export default ViewablityHelper; diff --git a/core/viewable/src/__test__/ViewabilityConfigTuples.test.ts b/core/viewable/src/__test__/ViewabilityConfigTuples.test.ts new file mode 100644 index 00000000..376f93c5 --- /dev/null +++ b/core/viewable/src/__test__/ViewabilityConfigTuples.test.ts @@ -0,0 +1,153 @@ +import { describe, it, expect } from 'vitest'; +import ViewabilityConfigTuples from '../ViewabilityConfigTuples'; + +const noop = () => { + // +}; + +describe('_isEntirelyVisible', () => { + it('constructor - viewabilityConfig', () => { + const tuple = new ViewabilityConfigTuples({ + viewabilityConfig: { + viewAreaCoveragePercentThreshold: 20, + }, + }); + + expect(tuple.getViewabilityHelpers().length).toBe(1); + expect(tuple.getViewabilityHelpers()[0].configName).toBe('viewable'); + }); + + it('constructor - onViewableItemsChanged', () => { + const tuple = new ViewabilityConfigTuples({ + onViewableItemsChanged: noop, + }); + + expect(tuple.getViewabilityHelpers().length).toBe(1); + expect(tuple.getViewabilityHelpers()[0].configName).toBe('viewable'); + expect(tuple.getViewabilityHelpers()[0].callback).toBe(noop); + }); + + it('constructor - viewabilityConfigCallbackPairs', () => { + const callbackTuple = new ViewabilityConfigTuples({ + viewabilityConfigCallbackPairs: [ + { + onViewableItemsChanged: noop, + }, + ], + }); + + expect(callbackTuple.getViewabilityHelpers().length).toBe(1); + expect(callbackTuple.getViewabilityHelpers()[0].configName).toBe( + 'viewable' + ); + expect(callbackTuple.getViewabilityHelpers()[0].callback).toBe(noop); + + const configTuple = new ViewabilityConfigTuples({ + viewabilityConfigCallbackPairs: [ + { + viewabilityConfig: { + viewAreaCoveragePercentThreshold: 20, + }, + }, + ], + }); + + expect(configTuple.getViewabilityHelpers().length).toBe(1); + expect(configTuple.getViewabilityHelpers()[0].configName).toBe('viewable'); + }); + + it('constructor - override first pair config name', () => { + const tuple = new ViewabilityConfigTuples({ + viewabilityConfigCallbackPairs: [ + { + viewabilityConfig: { + name: 'test', + }, + onViewableItemsChanged: noop, + }, + ], + }); + + expect(tuple.getViewabilityHelpers().length).toBe(1); + expect(tuple.getViewabilityHelpers()[0].configName).toBe('viewable'); + expect(tuple.getViewabilityHelpers()[0].callback).toBe(noop); + }); + + it('constructor - viewabilityConfigCallbackPairs', () => { + const tuple = new ViewabilityConfigTuples({ + viewabilityConfigCallbackPairs: [ + { + onViewableItemsChanged: noop, + }, + { + viewabilityConfig: { + name: 'imageViewable', + viewAreaCoveragePercentThreshold: 20, + }, + onViewableItemsChanged: noop, + }, + ], + }); + + expect(tuple.getViewabilityHelpers().length).toBe(2); + expect(tuple.getViewabilityHelpers()[0].configName).toBe('viewable'); + expect(tuple.getViewabilityHelpers()[0].callback).toBe(noop); + expect(tuple.getViewabilityHelpers()[1].configName).toBe('imageViewable'); + expect(tuple.getViewabilityHelpers()[1].callback).toBe(noop); + }); + + it('constructor - viewabilityConfigCallbackPairs', () => { + const tuple = new ViewabilityConfigTuples({ + viewabilityConfigCallbackPairs: [ + { + onViewableItemsChanged: noop, + }, + { + viewabilityConfig: { + name: 'imageViewable', + viewAreaCoveragePercentThreshold: 20, + }, + onViewableItemsChanged: noop, + }, + { + viewabilityConfig: { + name: 'viewable', + viewAreaCoveragePercentThreshold: 30, + }, + onViewableItemsChanged: noop, + }, + ], + }); + + expect(tuple.getViewabilityHelpers().length).toBe(2); + expect(tuple.getViewabilityHelpers()[0].configName).toBe('imageViewable'); + expect(tuple.getViewabilityHelpers()[0].callback).toBe(noop); + expect(tuple.getViewabilityHelpers()[1].configName).toBe('viewable'); + expect(tuple.getViewabilityHelpers()[1].callback).toBe(noop); + }); + + it('getDefaultState', () => { + const tuple = new ViewabilityConfigTuples({ + viewabilityConfigCallbackPairs: [ + { + onViewableItemsChanged: noop, + }, + { + viewabilityConfig: { + name: 'imageViewable', + viewAreaCoveragePercentThreshold: 20, + }, + onViewableItemsChanged: noop, + }, + ], + }); + expect(tuple.getDefaultState()).toEqual({ + viewable: false, + imageViewable: false, + }); + expect(tuple.getDefaultState(true)).toEqual({ + viewable: true, + imageViewable: true, + }); + }); +}); diff --git a/core/viewable/src/__test__/viewabilityUtils.test.ts b/core/viewable/src/__test__/viewabilityUtils.test.ts new file mode 100644 index 00000000..7d53ce06 --- /dev/null +++ b/core/viewable/src/__test__/viewabilityUtils.test.ts @@ -0,0 +1,589 @@ +import { describe, it, expect } from 'vitest'; +import { isItemViewable, isEntirelyVisible } from '../viewabilityUtils'; + +const viewportLength = 926; + +describe('_isEntirelyVisible', () => { + it('item has not length and on the top', () => { + const falsy = isEntirelyVisible({ + top: 0, + bottom: 0, + viewportHeight: viewportLength, + }); + expect(falsy).toBe(true); + }); + + it('item has length and on the top', () => { + const falsy = isEntirelyVisible({ + top: 0, + bottom: 10, + viewportHeight: viewportLength, + }); + expect(falsy).toBe(true); + }); + + it('item has length and outside viewport', () => { + expect( + isEntirelyVisible({ + top: -10, + bottom: 10, + viewportHeight: viewportLength, + }) + ).toBe(false); + + expect( + isEntirelyVisible({ + top: 800, + bottom: 950, + viewportHeight: viewportLength, + }) + ).toBe(false); + + expect( + isEntirelyVisible({ + top: -10, + bottom: 950, + viewportHeight: viewportLength, + }) + ).toBe(false); + + expect( + isEntirelyVisible({ + top: -10, + bottom: 900, + viewportHeight: viewportLength, + }) + ).toBe(false); + }); + + it('item has not length and on the bottom', () => { + const falsy = isEntirelyVisible({ + top: viewportLength, + bottom: viewportLength, + viewportHeight: viewportLength, + }); + expect(falsy).toBe(true); + }); + + it('item has not length and inside viewport', () => { + const falsy = isEntirelyVisible({ + top: viewportLength, + bottom: viewportLength, + viewportHeight: viewportLength, + }); + expect(falsy).toBe(true); + }); +}); + +describe('isItemViewable', () => { + it('isItemViewable -- scroll offset is 0', () => { + expect( + isItemViewable({ + viewport: 0, + viewabilityItemMeta: { + offset: 0, + length: 100, + }, + viewabilityScrollMetrics: { + offset: 0, + visibleLength: viewportLength, + }, + }) + ).toBe(true); + + expect( + isItemViewable({ + viewport: 0, + viewabilityItemMeta: { + offset: 0, + length: 928, + }, + viewabilityScrollMetrics: { + offset: 0, + visibleLength: viewportLength, + }, + }) + ).toBe(true); + + expect( + isItemViewable({ + viewport: 0, + viewabilityItemMeta: { + offset: 927, + length: 100, + }, + viewabilityScrollMetrics: { + offset: 0, + visibleLength: viewportLength, + }, + }) + ).toBe(false); + }); + + it('viewable, even if 1 pixel in viewport', () => { + expect( + isItemViewable({ + viewport: 0, + viewabilityItemMeta: { + offset: viewportLength, + length: 100, + }, + viewabilityScrollMetrics: { + offset: 0, + visibleLength: viewportLength, + }, + }) + ).toBe(false); + + expect( + isItemViewable({ + viewport: 0, + viewabilityItemMeta: { + offset: viewportLength - 1, + length: 100, + }, + viewabilityScrollMetrics: { + offset: 0, + visibleLength: viewportLength, + }, + }) + ).toBe(true); + + expect( + isItemViewable({ + viewport: 0, + viewabilityItemMeta: { + offset: 1, + length: 1, + }, + viewabilityScrollMetrics: { + offset: 1, + visibleLength: viewportLength, + }, + }) + ).toBe(true); + }); + + it('viewport > 0', () => { + expect( + isItemViewable({ + viewport: 1, + viewabilityItemMeta: { + offset: 2500 - viewportLength, + length: 1, + }, + viewabilityScrollMetrics: { + offset: 2500, + visibleLength: viewportLength, + }, + }) + ).toBe(true); + expect( + isItemViewable({ + viewport: 1, + viewabilityItemMeta: { + offset: 2500 - viewportLength - 1, + length: 1, + }, + viewabilityScrollMetrics: { + offset: 2500, + visibleLength: viewportLength, + }, + }) + ).toBe(false); + expect( + isItemViewable({ + viewport: 1, + viewabilityItemMeta: { + offset: 2500 + 2 * viewportLength - 1, + length: 1, + }, + viewabilityScrollMetrics: { + offset: 2500, + visibleLength: viewportLength, + }, + }) + ).toBe(true); + + expect( + isItemViewable({ + viewport: 1, + viewabilityItemMeta: { + offset: 2500 + 2 * viewportLength, + length: 1, + }, + viewabilityScrollMetrics: { + offset: 2500, + visibleLength: viewportLength, + }, + }) + ).toBe(false); + + // top: 4800, bottom: 4900; viewHeight = 3009 + 2 * 926 = 4861 => 61 / 926 = 0.0658 + expect( + isItemViewable({ + viewport: 1, + viewabilityItemMeta: { + offset: 4800, + length: 100, + }, + viewabilityScrollMetrics: { + offset: 3009, + visibleLength: viewportLength, + }, + viewAreaMode: true, + viewablePercentThreshold: 6, + }) + ).toBe(true); + expect( + isItemViewable({ + viewport: 1, + viewabilityItemMeta: { + offset: 4800, + length: 100, + }, + viewabilityScrollMetrics: { + offset: 3009, + visibleLength: viewportLength, + }, + viewAreaMode: true, + viewablePercentThreshold: 7, + }) + ).toBe(false); + + // top: 4800, bottom: 4900; viewHeight = 3009 + 2 * 926 = 4861 => 61 / 926 = 0.0658 + expect( + isItemViewable({ + viewport: 1, + viewabilityItemMeta: { + offset: 4800, + length: 100, + }, + viewabilityScrollMetrics: { + offset: 3009, + visibleLength: viewportLength, + }, + viewablePercentThreshold: 60, + }) + ).toBe(true); + expect( + isItemViewable({ + viewport: 1, + viewabilityItemMeta: { + offset: 4800, + length: 100, + }, + viewabilityScrollMetrics: { + offset: 3009, + visibleLength: viewportLength, + }, + viewablePercentThreshold: 62, + }) + ).toBe(false); + }); + + it('viewablePercentThreshold, if greater than 0, then compare with >=', () => { + expect( + isItemViewable({ + viewport: 1, + viewabilityItemMeta: { + offset: 4800, + length: 100, + }, + viewabilityScrollMetrics: { + offset: 3009, + visibleLength: viewportLength, + }, + viewablePercentThreshold: 61, + }) + ).toBe(true); + expect( + isItemViewable({ + viewport: 1, + viewabilityItemMeta: { + offset: 4800, + length: 100, + }, + viewabilityScrollMetrics: { + offset: 3009, + visibleLength: viewportLength, + }, + viewablePercentThreshold: 61.1, + }) + ).toBe(false); + expect( + isItemViewable({ + viewport: 1, + viewabilityItemMeta: { + offset: 4800, + length: 100, + }, + viewabilityScrollMetrics: { + offset: 3009, + visibleLength: viewportLength, + }, + viewAreaMode: false, + viewablePercentThreshold: 60.9, + }) + ).toBe(true); + + expect( + isItemViewable({ + viewport: 1, + viewabilityItemMeta: { + offset: 4800, + length: 100, + }, + viewabilityScrollMetrics: { + offset: 3009, + visibleLength: viewportLength, + }, + viewAreaMode: true, + viewablePercentThreshold: 6.58, + }) + ).toBe(true); + + expect( + isItemViewable({ + viewport: 1, + viewabilityItemMeta: { + offset: 4800, + length: 100, + }, + viewabilityScrollMetrics: { + offset: 3009, + visibleLength: viewportLength, + }, + viewAreaMode: true, + viewablePercentThreshold: 6.59, + }) + ).toBe(false); + expect( + isItemViewable({ + viewport: 1, + viewabilityItemMeta: { + offset: 4800, + length: 100, + }, + viewabilityScrollMetrics: { + offset: 3009, + visibleLength: viewportLength, + }, + viewAreaMode: true, + viewablePercentThreshold: 6.57, + }) + ).toBe(true); + }); + + it('item visible length is 0', () => { + // entirely visible + expect( + isItemViewable({ + viewport: 0, + viewabilityItemMeta: { + offset: 3009, + length: 0, + }, + viewabilityScrollMetrics: { + offset: 3009, + visibleLength: viewportLength, + }, + viewablePercentThreshold: 0, + }) + ).toBe(true); + + expect( + isItemViewable({ + viewport: 0, + viewabilityItemMeta: { + offset: 3008, + length: 1, + }, + viewabilityScrollMetrics: { + offset: 3009, + visibleLength: viewportLength, + }, + viewablePercentThreshold: 0, + }) + ).toBe(false); + expect( + isItemViewable({ + viewport: 0, + viewabilityItemMeta: { + offset: 3009 + viewportLength, + length: 1, + }, + viewabilityScrollMetrics: { + offset: 3009, + visibleLength: viewportLength, + }, + viewablePercentThreshold: 0, + }) + ).toBe(false); + }); + + it('viewAreaMode set as true', () => { + expect( + isItemViewable({ + viewport: 1, + viewabilityItemMeta: { + offset: 2500 - viewportLength, + length: viewportLength * 0.2, + }, + viewabilityScrollMetrics: { + offset: 2500, + visibleLength: viewportLength, + }, + viewAreaMode: true, + viewablePercentThreshold: 20, + }) + ).toBe(true); + + // entirely visible + expect( + isItemViewable({ + viewport: 1, + viewabilityItemMeta: { + offset: 2500 - viewportLength, + length: viewportLength * 0.19, + }, + viewabilityScrollMetrics: { + offset: 2500, + visibleLength: viewportLength, + }, + viewAreaMode: true, + viewablePercentThreshold: 20, + }) + ).toBe(true); + + expect( + isItemViewable({ + viewport: 1, + viewabilityItemMeta: { + offset: 2500 - viewportLength * 1.1, + length: viewportLength * 0.3, + }, + viewabilityScrollMetrics: { + offset: 2500, + visibleLength: viewportLength, + }, + viewAreaMode: true, + viewablePercentThreshold: 20, + }) + ).toBe(false); + + expect( + isItemViewable({ + viewport: 1, + viewabilityItemMeta: { + offset: 2500 - viewportLength * 1.1 + 1, + length: viewportLength * 0.3, + }, + viewabilityScrollMetrics: { + offset: 2500, + visibleLength: viewportLength, + }, + viewAreaMode: true, + viewablePercentThreshold: 20, + }) + ).toBe(true); + }); + + it('compare viewAreaMode with itemAreaMode', () => { + expect( + isItemViewable({ + viewport: 0, + viewabilityItemMeta: { + offset: 3000, + length: 100, + }, + viewabilityScrollMetrics: { + offset: 3009, + visibleLength: viewportLength, + }, + viewAreaMode: true, + viewablePercentThreshold: 9, + }) + ).toBe(true); + + expect( + isItemViewable({ + viewport: 0, + viewabilityItemMeta: { + offset: 3000, + length: 100, + }, + viewabilityScrollMetrics: { + offset: 3009, + visibleLength: viewportLength, + }, + viewAreaMode: true, + viewablePercentThreshold: 10, + }) + ).toBe(false); + + expect( + isItemViewable({ + viewport: 0, + viewabilityItemMeta: { + offset: 3000, + length: 100, + }, + viewabilityScrollMetrics: { + offset: 3009, + visibleLength: viewportLength, + }, + viewablePercentThreshold: 90, + }) + ).toBe(true); + + expect( + isItemViewable({ + viewport: 0, + viewabilityItemMeta: { + offset: 3000, + length: 100, + }, + viewabilityScrollMetrics: { + offset: 3009, + visibleLength: viewportLength, + }, + viewablePercentThreshold: 92, + }) + ).toBe(false); + }); + + it('entirely visible is special case in viewAreaMode', () => { + expect( + isItemViewable({ + viewport: 0, + viewabilityItemMeta: { + offset: 3000, + length: 100, + }, + viewabilityScrollMetrics: { + offset: 3009, + visibleLength: viewportLength, + }, + viewAreaMode: true, + viewablePercentThreshold: 10, + }) + ).toBe(false); + + expect( + isItemViewable({ + viewport: 0, + viewabilityItemMeta: { + offset: 3000, + length: 1000, + }, + viewabilityScrollMetrics: { + offset: 3009, + visibleLength: viewportLength, + }, + viewAreaMode: true, + viewablePercentThreshold: 10, + }) + ).toBe(true); + }); +}); diff --git a/core/viewable/src/common.ts b/core/viewable/src/common.ts new file mode 100644 index 00000000..9cdf9b9f --- /dev/null +++ b/core/viewable/src/common.ts @@ -0,0 +1,5 @@ +export const ON_END_REACHED_HANDLER_TIMEOUT_THRESHOLD = 2000; +// 建议 ON_END_REACHED_THRESHOLD * VisibleLength > MAX_TO_RENDER_PER_BATCH * itemLength +// 这样可以在滚动停止的时候,自动获取一屏幕 +export const ON_END_REACHED_THRESHOLD = 2; +export const ON_END_REACHED_TIMEOUT_THRESHOLD = 200; diff --git a/core/viewable/src/constants.ts b/core/viewable/src/constants.ts new file mode 100644 index 00000000..82a0c8b8 --- /dev/null +++ b/core/viewable/src/constants.ts @@ -0,0 +1,4 @@ +export const DEFAULT_VIEWABILITY_CONFIG = { + name: 'viewable', + viewAreaCoveragePercentThreshold: 0, +}; diff --git a/core/viewable/src/index.ts b/core/viewable/src/index.ts new file mode 100644 index 00000000..eb39220a --- /dev/null +++ b/core/viewable/src/index.ts @@ -0,0 +1,4 @@ +export { default as ViewabilityItemMeta } from './ViewabilityItemMeta'; +export { default as ViewabilityConfigTuples } from './ViewabilityConfigTuples'; +export { default as OnEndReachedHelper } from './OnEndReachedHelper'; +export * from './types'; diff --git a/core/viewable/src/types/generic.types.ts b/core/viewable/src/types/generic.types.ts new file mode 100644 index 00000000..297f824d --- /dev/null +++ b/core/viewable/src/types/generic.types.ts @@ -0,0 +1,4 @@ +export type GenericItemT = { + [key: string]: any; +}; +export type GenericStateResult = any; diff --git a/core/viewable/src/types/index.ts b/core/viewable/src/types/index.ts new file mode 100644 index 00000000..1f9bd8aa --- /dev/null +++ b/core/viewable/src/types/index.ts @@ -0,0 +1,10 @@ +export * from './onEndReachedHelper.types'; +export * from './scrollMetrics.types'; +export * from './viewable.types'; +export * from './generic.types'; + +// @ts-ignore [TODO] +export type ItemMeta

= { + getState: any; + getLayout: any; +}; diff --git a/core/viewable/src/types/onEndReachedHelper.types.ts b/core/viewable/src/types/onEndReachedHelper.types.ts new file mode 100644 index 00000000..aab49756 --- /dev/null +++ b/core/viewable/src/types/onEndReachedHelper.types.ts @@ -0,0 +1,22 @@ +export type OnEndReachedHelperProps = { + id: string; + onEndReached?: OnEndReached; + onEndReachedThreshold?: number; + onEndReachedTimeoutThreshold?: number; + distanceFromEndThresholdValue?: number; + onEndReachedHandlerTimeoutThreshold?: number; + maxCountOfHandleOnEndReachedAfterStillness?: number; +}; + +export type OnEndReached = (props: { + distanceFromEnd: number; + cb: Function; + releaseHandlerMutex?: Function; +}) => void; + +export type SendOnEndReachedDistanceFromBottomStack = Array<{ + distancesFromEnd: Array; + ts: Array; + hit: number; + resetCount: number; +}>; diff --git a/core/viewable/src/types/scrollMetrics.types.ts b/core/viewable/src/types/scrollMetrics.types.ts new file mode 100644 index 00000000..9b779202 --- /dev/null +++ b/core/viewable/src/types/scrollMetrics.types.ts @@ -0,0 +1,50 @@ +export interface ScrollRectangle { + left: number; + top: number; + bottom: number; + right: number; +} + +export interface ScrollPoint { + x: number; + y: number; +} + +export interface ScrollVelocity { + x: number; + y: number; +} + +export interface ScrollSize { + height: number; + width: number; +} +export type ScrollEventMetrics = { + contentInset: ScrollRectangle; + contentOffset: ScrollPoint; + contentSize: ScrollSize; + layoutMeasurement: ScrollSize; + velocity?: ScrollVelocity | undefined; + zoomScale: number; + /** + * @platform ios + */ + targetContentOffset?: ScrollPoint | undefined; +}; + +export type ScrollMetrics = { + contentLength: number; + offset: number; + visibleLength: number; + + // not used + dOffset?: number; + dt?: number; + timestamp?: number; + velocity?: number; +}; + +export type ContentSize = { + width: number; + height: number; +}; diff --git a/core/viewable/src/types/viewable.types.ts b/core/viewable/src/types/viewable.types.ts new file mode 100644 index 00000000..8ac0ae19 --- /dev/null +++ b/core/viewable/src/types/viewable.types.ts @@ -0,0 +1,94 @@ +import ViewabilityItemMeta from '../ViewabilityItemMeta'; + +export type CommonViewabilityConfig = { + name: string; + viewport?: number; + minimumViewTime?: number; + waitForInteraction?: boolean; + + // 目前主要用在比如只希望有一个曝光出来;比如viewport中可以 + // 放置两个item的时候,而item两个都是 + exclusive?: boolean; +}; + +export type NormalizedViewablityConfig = { + exclusive: boolean; + viewport: number; + minimumViewTime?: number; + waitForInteraction?: boolean; + viewAreaMode: boolean; + viewablePercentThreshold: number; +}; + +export type ViewAreaModeConfig = { + viewAreaCoveragePercentThreshold?: number; +} & CommonViewabilityConfig; + +export type VisiblePercentModeConfig = { + itemVisiblePercentThreshold?: number; +} & CommonViewabilityConfig; + +export type ViewabilityConfig = ViewAreaModeConfig | VisiblePercentModeConfig; + +export interface ViewToken { + item: any; + key: string; + index: number | null; + isViewable: boolean; + section?: any; +} +export type OnViewableItemChangedInfo = { + viewableItems: Array; + changed: Array; +}; + +// export type ViewabilityItemMeta = { +// offset: number; +// length: number; +// }; +export type ViewabilityScrollMetrics = { + offset: number; + visibleLength: number; +}; + +export type IsItemViewableOptions = { + viewport: number; + viewabilityItemMeta: + | ViewabilityItemMeta + | { + offset: number; + length: number; + }; + viewabilityScrollMetrics: ViewabilityScrollMetrics; + viewAreaMode?: boolean; + viewablePercentThreshold?: number; + + // for performance boost.... + getItemOffset?: (itemMeta: ViewabilityItemMeta) => number; +}; + +export type OnViewableItemsChanged = + | ((info: OnViewableItemChangedInfo) => void) + | null; + +export type ViewabilityConfigCallbackPair = { + viewabilityConfig: ViewabilityConfig; + onViewableItemsChanged?: OnViewableItemsChanged; +}; + +export type ViewabilityConfigCallbackPairs = + Array; + +export type ViewabilityConfigTuplesProps = { + isListItem?: boolean; + viewabilityConfig?: ViewabilityConfig; + viewabilityConfigCallbackPairs?: ViewabilityConfigCallbackPairs; + onViewableItemsChanged?: OnViewableItemsChanged; +}; + +export type ViewabilityHelperChangedToken = { + item: any; + key: string; + isViewable: boolean; + index: number; +}; diff --git a/core/viewable/src/viewabilityUtils.ts b/core/viewable/src/viewabilityUtils.ts new file mode 100644 index 00000000..f1ff60cc --- /dev/null +++ b/core/viewable/src/viewabilityUtils.ts @@ -0,0 +1,136 @@ +// import SelectValue from '@x-oasis/select-value'; +import { IsItemViewableOptions } from './types'; +import ViewabilityItemMeta from './ViewabilityItemMeta'; + +// export function resolveMeasureMetrics( +// scrollEventMetrics: ScrollEventMetrics, +// selectValue: SelectValue +// ) { +// const { contentOffset, layoutMeasurement, contentSize } = scrollEventMetrics; +// const contentLength = selectValue.selectLength(contentSize); +// const scrollOffset = selectValue.selectOffset(contentOffset); +// const viewportLength = selectValue.selectLength(layoutMeasurement); +// return { +// contentLength, +// scrollOffset, +// viewportLength, +// }; +// } + +/** + * 获取在视窗中的可见高度 + * @param props + * @returns + */ +export function getPixelsVisible(props: { + top: number; + bottom: number; + viewportHeight: number; +}) { + const { top, bottom, viewportHeight } = props; + const visibleHeight = Math.min(bottom, viewportHeight) - Math.max(top, 0); + return Math.max(0, visibleHeight); +} + +export function isEntirelyVisible(props: { + top: number; + bottom: number; + viewportHeight: number; +}) { + const { top, bottom, viewportHeight } = props; + // 针对比如元素没有高度,但是在视图内,这个时候top和bottom相等都是0 + return top >= 0 && bottom <= viewportHeight && bottom >= top; +} + +export function _isViewable(props: { + top: number; + bottom: number; + itemLength: number; + viewportHeight: number; + viewportLength: number; + viewAreaMode: boolean; + viewablePercentThreshold: number; +}) { + const { + top, + bottom, + itemLength, + viewportLength, + viewportHeight, + viewAreaMode, + viewablePercentThreshold, + } = props; + if ( + isEntirelyVisible({ + top, + bottom, + viewportHeight, + }) + ) { + return true; + } else { + const pixels = getPixelsVisible({ + top, + bottom, + viewportHeight, + }); + + const percent = + 100 * (viewAreaMode ? pixels / viewportLength : pixels / itemLength); + + // viewablePercentThreshold is 0 on default, so item is viewable even if 1 pixel + // in viewport. + return viewablePercentThreshold + ? percent >= viewablePercentThreshold + : percent > viewablePercentThreshold; + } +} + +/** + * + * @param options + * - viewAreaMode false as default, which means it compares with self length. + * if value is true, then compare with viewport length. + * + * @returns + */ +export function isItemViewable(options: IsItemViewableOptions) { + const { + getItemOffset, + viewabilityItemMeta, + viewport: _viewport, + viewAreaMode = false, + viewabilityScrollMetrics, + viewablePercentThreshold = 0, + } = options; + + const { offset: scrollOffset, visibleLength: viewportLength } = + viewabilityScrollMetrics; + if (!viewabilityItemMeta) return false; + const itemOffset = + typeof getItemOffset === 'function' + ? getItemOffset(viewabilityItemMeta as ViewabilityItemMeta) + : viewabilityItemMeta instanceof ViewabilityItemMeta + ? viewabilityItemMeta.getItemOffset() + : viewabilityItemMeta.offset; + const itemLength = + viewabilityItemMeta instanceof ViewabilityItemMeta + ? viewabilityItemMeta.getItemLength() + : viewabilityItemMeta.length; + + const viewport = Math.max(_viewport, 0); + const top = itemOffset - scrollOffset + viewport * viewportLength; + const bottom = top + itemLength; + + const value = _isViewable({ + top, + bottom, + itemLength, + viewAreaMode, + viewportLength, + viewablePercentThreshold, + viewportHeight: (2 * viewport + 1) * viewportLength, + }); + + return value; +} diff --git a/core/viewable/tsconfig.json b/core/viewable/tsconfig.json new file mode 100644 index 00000000..192adc36 --- /dev/null +++ b/core/viewable/tsconfig.json @@ -0,0 +1,23 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "commonjs", + "moduleResolution": "node", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ] +} diff --git a/core/viewable/tsconfig.lib.json b/core/viewable/tsconfig.lib.json new file mode 100644 index 00000000..ce3b531c --- /dev/null +++ b/core/viewable/tsconfig.lib.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "declaration": true, + "types": ["node"] + }, + "include": ["src/**/*.ts"], + "exclude": ["vite.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"] +} diff --git a/core/viewable/tsconfig.spec.json b/core/viewable/tsconfig.spec.json new file mode 100644 index 00000000..3c002c21 --- /dev/null +++ b/core/viewable/tsconfig.spec.json @@ -0,0 +1,26 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "types": [ + "vitest/globals", + "vitest/importMeta", + "vite/client", + "node", + "vitest" + ] + }, + "include": [ + "vite.config.ts", + "vitest.config.ts", + "src/**/*.test.ts", + "src/**/*.spec.ts", + "src/**/*.test.tsx", + "src/**/*.spec.tsx", + "src/**/*.test.js", + "src/**/*.spec.js", + "src/**/*.test.jsx", + "src/**/*.spec.jsx", + "src/**/*.d.ts" + ] +} diff --git a/core/viewable/vite.config.ts b/core/viewable/vite.config.ts new file mode 100644 index 00000000..3c89dc01 --- /dev/null +++ b/core/viewable/vite.config.ts @@ -0,0 +1,28 @@ +import { defineConfig } from 'vite'; + +import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin'; +import { nxCopyAssetsPlugin } from '@nx/vite/plugins/nx-copy-assets.plugin'; + +export default defineConfig({ + root: __dirname, + cacheDir: '../../node_modules/.vite/core/viewable', + + plugins: [nxViteTsPaths(), nxCopyAssetsPlugin(['*.md'])], + + // Uncomment this if you are using workers. + // worker: { + // plugins: [ nxViteTsPaths() ], + // }, + + test: { + watch: false, + globals: true, + environment: 'node', + include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], + reporters: ['default'], + coverage: { + reportsDirectory: '../../coverage/core/viewable', + provider: 'v8', + }, + }, +}); diff --git a/examples/ReactNativeListPlayground/app/(tabs)/List.tsx b/examples/ReactNativeListPlayground/app/(tabs)/List.tsx index eeabc92b..8b97b75c 100644 --- a/examples/ReactNativeListPlayground/app/(tabs)/List.tsx +++ b/examples/ReactNativeListPlayground/app/(tabs)/List.tsx @@ -1,8 +1,10 @@ import { useCallback, useMemo, useRef } from 'react'; -import { List, ScrollView } from '@infinite-list/react-native'; +import { List } from '@infinite-list/list'; +import { ScrollView } from '@infinite-list/scroller'; import { // NativeScrollEvent, // NativeSyntheticEvent, + ScrollView as NativeScrollView, Text, View, } from 'react-native'; @@ -15,7 +17,7 @@ const buildData = (count: number, startIndex = 0) => export default () => { const data = useMemo(() => buildData(10000), []); - const scrollViewRef = useRef(null); + const scrollViewRef = useRef(null); const renderItem = useCallback((props: { item }) => { const { item } = props; @@ -41,7 +43,6 @@ export default () => { diff --git a/examples/ReactNativeListPlayground/app/(tabs)/index.tsx b/examples/ReactNativeListPlayground/app/(tabs)/index.tsx index a281ceb6..3b25502b 100644 --- a/examples/ReactNativeListPlayground/app/(tabs)/index.tsx +++ b/examples/ReactNativeListPlayground/app/(tabs)/index.tsx @@ -169,5 +169,6 @@ import MasonryList from './MasonryList'; import { Text } from 'react-native'; export default () => { - return ; + // return ; + return ; }; diff --git a/examples/ReactNativeListPlayground/metro.config.js b/examples/ReactNativeListPlayground/metro.config.js index 59e050d0..afca4e5e 100644 --- a/examples/ReactNativeListPlayground/metro.config.js +++ b/examples/ReactNativeListPlayground/metro.config.js @@ -26,9 +26,8 @@ // module.exports = config; - -const path = require('path') -const fs = require('fs') +const path = require('path'); +const fs = require('fs'); const { getDefaultConfig } = require('expo/metro-config'); const config = getDefaultConfig(__dirname); @@ -53,43 +52,156 @@ const config = getDefaultConfig(__dirname); // } // ) -const root = path.resolve(__dirname, '..', '..') +const root = path.resolve(__dirname, '..', '..'); -const dataModelPkg = JSON.parse(fs.readFileSync(path.join(root, 'packages', 'data-model', 'package.json'), 'utf8')) +const dataModelPkg = JSON.parse( + fs.readFileSync( + path.join(root, 'packages', 'data-model', 'package.json'), + 'utf8' + ) +); const dataModelModules = Object.keys({ - ...dataModelPkg.dependencies -}) -const reactNativePkg = JSON.parse(fs.readFileSync(path.join(root, 'packages', 'react-native', 'package.json'), 'utf8')) + ...dataModelPkg.dependencies, +}); +const reactNativePkg = JSON.parse( + fs.readFileSync( + path.join(root, 'packages', 'react-native', 'package.json'), + 'utf8' + ) +); const reactNativeModules = Object.keys({ - ...reactNativePkg.dependencies -}) + ...reactNativePkg.dependencies, +}); +const masonryPkg = JSON.parse( + fs.readFileSync(path.join(root, 'ui', 'masonry', 'package.json'), 'utf8') +); +const masonryModules = Object.keys({ + ...masonryPkg.dependencies, +}); +const scrollerPkg = JSON.parse( + fs.readFileSync(path.join(root, 'ui', 'scroller', 'package.json'), 'utf8') +); +const scrollerModules = Object.keys({ + ...scrollerPkg.dependencies, +}); +const listPkg = JSON.parse( + fs.readFileSync(path.join(root, 'ui', 'list', 'package.json'), 'utf8') +); +const listModules = Object.keys({ + ...listPkg.dependencies, +}); +const groupPkg = JSON.parse( + fs.readFileSync(path.join(root, 'ui', 'group', 'package.json'), 'utf8') +); +const groupModules = Object.keys({ + ...groupPkg.dependencies, +}); -const extraModules = [].concat(reactNativeModules, dataModelModules).reduce( - (acc, name) => { - acc[name] = path.join(root, 'packages', 'data-model', 'node_modules', name) - return acc - }, - { - - } +const extraModules = [] + .concat( + reactNativeModules, + dataModelModules, + masonryModules, + scrollerModules, + listModules, + groupModules ) + .reduce((acc, name) => { + acc[name] = path.join(root, 'packages', 'data-model', 'node_modules', name); + return acc; + }, {}); config.resolver.extraNodeModules = { ...extraModules, - 'react': path.join(__dirname, 'node_modules', 'react'), + react: path.join(__dirname, 'node_modules', 'react'), 'react-dom': path.join(__dirname, 'node_modules', 'react-dom'), 'react-native': path.join(__dirname, 'node_modules', 'react-native'), - '@infinite-list/react-native': path.join(root, 'packages', 'react-native', 'src'), - '@infinite-list/data-model': path.join(root, 'packages', 'data-model', 'src') -} + '@infinite-list/react-native': path.join( + root, + 'packages', + 'react-native', + 'src' + ), + '@infinite-list/data-model': path.join(root, 'packages', 'data-model', 'src'), + '@infinite-list/list': path.join(root, 'ui', 'list', 'src'), + '@infinite-list/group': path.join(root, 'ui', 'group', 'src'), + '@infinite-list/masonry': path.join(root, 'ui', 'masonry', 'src'), + '@infinite-list/group-dimensions': path.join( + root, + 'model', + 'group-dimensions', + 'src' + ), + '@infinite-list/masonry-dimensions': path.join( + root, + 'model', + 'masonry-dimensions', + 'src' + ), + '@infinite-list/list-dimensions': path.join( + root, + 'model', + 'list-dimensions', + 'src' + ), + '@infinite-list/scroller': path.join(root, 'ui', 'scroller', 'src'), + '@infinite-list/viewable': path.join(root, 'core', 'viewable', 'src'), + '@infinite-list/base-dimensions': path.join( + root, + 'core', + 'base-dimensions', + 'src' + ), + '@infinite-list/utils': path.join(root, 'core', 'utils', 'src'), + '@infinite-list/dimensions-model': path.join( + root, + 'core', + 'dimensions-model', + 'src' + ), + '@infinite-list/container': path.join(root, 'core', 'container', 'src'), + '@infinite-list/strategies': path.join(root, 'core', 'strategies', 'src'), + '@infinite-list/state': path.join(root, 'core', 'state', 'src'), + '@infinite-list/item-meta': path.join(root, 'core', 'item-meta', 'src'), +}; config.watchFolders = [ - path.join(root, 'packages','react-native', 'src'), + path.join(root, 'packages', 'react-native', 'src'), path.join(root, 'packages', 'react-native', 'node_modules'), path.join(root, 'packages', 'data-model', 'src'), path.join(root, 'packages', 'data-model', 'node_modules'), + path.join(root, 'ui', 'group', 'src'), + path.join(root, 'ui', 'group', 'node_modules'), + path.join(root, 'ui', 'list', 'src'), + path.join(root, 'ui', 'list', 'node_modules'), + path.join(root, 'ui', 'masonry', 'src'), + path.join(root, 'ui', 'masonry', 'node_modules'), + path.join(root, 'ui', 'scroller', 'src'), + path.join(root, 'ui', 'scroller', 'node_modules'), + path.join(root, 'model', 'masonry-dimensions', 'src'), + path.join(root, 'model', 'masonry-dimensions', 'node_modules'), + path.join(root, 'model', 'group-dimensions', 'src'), + path.join(root, 'model', 'group-dimensions', 'node_modules'), + path.join(root, 'model', 'list-dimensions', 'src'), + path.join(root, 'model', 'list-dimensions', 'node_modules'), + path.join(root, 'core', 'viewable', 'src'), + path.join(root, 'core', 'viewable', 'node_modules'), + path.join(root, 'core', 'base-dimensions', 'src'), + path.join(root, 'core', 'base-dimensions', 'node_modules'), + path.join(root, 'core', 'utils', 'src'), + path.join(root, 'core', 'utils', 'node_modules'), + path.join(root, 'core', 'dimensions-model', 'src'), + path.join(root, 'core', 'dimensions-model', 'node_modules'), + path.join(root, 'core', 'container', 'src'), + path.join(root, 'core', 'container', 'node_modules'), + path.join(root, 'core', 'strategies', 'src'), + path.join(root, 'core', 'strategies', 'node_modules'), + path.join(root, 'core', 'state', 'src'), + path.join(root, 'core', 'state', 'node_modules'), + path.join(root, 'core', 'item-meta', 'src'), + path.join(root, 'core', 'item-meta', 'node_modules'), path.join(root, 'node_modules'), -] +]; // config.watchFolders = [ // path.join(__dirname, '..', '..', 'src'), // path.join(__dirname, '..', '..', '..', 'data-model', 'node_modules'), @@ -110,35 +222,40 @@ const { resolver } = config; config.resolver = { ...resolver, resolveRequest: (context, moduleName, platform) => { - console.log('resolveRequest', moduleName) - // if (moduleName.startsWith('@infinite-list/react-native')) { - // return { - // filePath: path.join(root, 'packages', 'react-native', 'src'), - // // filePath: `${__dirname}/node_modules/graphql-request/build/esm/index.js`, - // type: 'sourceFile', - // } - // } - - if (moduleName === 'react') { - return { - filePath: path.join(__dirname, 'node_modules', 'react', 'index.js'), - // filePath: `${__dirname}/node_modules/graphql-request/build/esm/index.js`, - type: 'sourceFile', - } - } - - if (moduleName === 'react-native') { - return { - filePath: path.join(__dirname, 'node_modules', 'react-native', 'index.js'), - // filePath: `${__dirname}/node_modules/graphql-request/build/esm/index.js`, - type: 'sourceFile', - } - } - - return context.resolveRequest(context, moduleName, platform) + console.log('resolveRequest', moduleName); + // if (moduleName.startsWith('@infinite-list/react-native')) { + // return { + // filePath: path.join(root, 'packages', 'react-native', 'src'), + // // filePath: `${__dirname}/node_modules/graphql-request/build/esm/index.js`, + // type: 'sourceFile', + // } + // } + + if (moduleName === 'react') { + return { + filePath: path.join(__dirname, 'node_modules', 'react', 'index.js'), + // filePath: `${__dirname}/node_modules/graphql-request/build/esm/index.js`, + type: 'sourceFile', + }; } + + if (moduleName === 'react-native') { + return { + filePath: path.join( + __dirname, + 'node_modules', + 'react-native', + 'index.js' + ), + // filePath: `${__dirname}/node_modules/graphql-request/build/esm/index.js`, + type: 'sourceFile', + }; + } + + return context.resolveRequest(context, moduleName, platform); + }, }; -console.log('confing ==== ', config.resolver.extraNodeModules) +console.log('confing ==== ', config.resolver.extraNodeModules); module.exports = config; diff --git a/examples/ReactNativeListPlayground/tsconfig.json b/examples/ReactNativeListPlayground/tsconfig.json index ec570036..f2b970a0 100644 --- a/examples/ReactNativeListPlayground/tsconfig.json +++ b/examples/ReactNativeListPlayground/tsconfig.json @@ -7,6 +7,10 @@ "./*" ], "@infinite-list/react-native": ["../../packages/react-native/src"], + "@infinite-list/masonry": ["../../ui/masonry/src/react-native"], + "@infinite-list/scroller": ["../../ui/scroller/src/react-native"], + "@infinite-list/group": ["../../ui/group/src/react-native"], + "@infinite-list/list": ["../../ui/list/src/react-native"], } }, "include": [ diff --git a/examples/react-playground/.storybook/main.ts b/examples/react-playground/.storybook/main.ts new file mode 100644 index 00000000..3cae1533 --- /dev/null +++ b/examples/react-playground/.storybook/main.ts @@ -0,0 +1,20 @@ +import type { StorybookConfig } from '@storybook/react-vite'; + +const config: StorybookConfig = { + stories: ['../src/app/**/*.@(mdx|stories.@(js|jsx|ts|tsx))'], + addons: ['@storybook/addon-essentials', '@storybook/addon-interactions'], + framework: { + name: '@storybook/react-vite', + options: { + builder: { + viteConfigPath: 'vite.config.ts', + }, + }, + }, +}; + +export default config; + +// To customize your Vite configuration you can use the viteFinal field. +// Check https://storybook.js.org/docs/react/builders/vite#configuration +// and https://nx.dev/recipes/storybook/custom-builder-configs diff --git a/examples/react-playground/.storybook/preview.ts b/examples/react-playground/.storybook/preview.ts new file mode 100644 index 00000000..e69de29b diff --git a/examples/react-playground/eslint.config.js b/examples/react-playground/eslint.config.js new file mode 100644 index 00000000..2f6e3f08 --- /dev/null +++ b/examples/react-playground/eslint.config.js @@ -0,0 +1,12 @@ +const nx = require('@nx/eslint-plugin'); +const baseConfig = require('../../eslint.config.js'); + +module.exports = [ + ...baseConfig, + ...nx.configs['flat/react'], + { + files: ['**/*.ts', '**/*.tsx', '**/*.js', '**/*.jsx'], + // Override or add rules here + rules: {}, + }, +]; diff --git a/examples/react-playground/index.html b/examples/react-playground/index.html new file mode 100644 index 00000000..f14b79fa --- /dev/null +++ b/examples/react-playground/index.html @@ -0,0 +1,16 @@ + + + + + ExamplesReactPlayground + + + + + + + +

+ + + diff --git a/examples/react-playground/jest.config.ts b/examples/react-playground/jest.config.ts new file mode 100644 index 00000000..6edd287f --- /dev/null +++ b/examples/react-playground/jest.config.ts @@ -0,0 +1,10 @@ +export default { + displayName: 'react-playground', + preset: '../../jest.preset.js', + transform: { + '^(?!.*\\.(js|jsx|ts|tsx|css|json)$)': '@nx/react/plugins/jest', + '^.+\\.[tj]sx?$': ['babel-jest', { presets: ['@nx/react/babel'] }], + }, + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'], + coverageDirectory: '../../coverage/examples/react-playground', +}; diff --git a/examples/react-playground/package.json b/examples/react-playground/package.json new file mode 100644 index 00000000..e07ec83e --- /dev/null +++ b/examples/react-playground/package.json @@ -0,0 +1,220 @@ +{ + "name": "react-playground", + "version": "1.0.0", + "description": "", + "main": "eslint.config.js", + "dependencies": { + "acorn": "^8.14.0", + "acorn-jsx": "^5.3.2", + "ajv": "^6.12.6", + "ansi-styles": "^4.3.0", + "argparse": "^2.0.1", + "array-buffer-byte-length": "^1.0.2", + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flat": "^1.3.3", + "array.prototype.flatmap": "^1.3.3", + "array.prototype.tosorted": "^1.1.4", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "balanced-match": "^1.0.2", + "brace-expansion": "^1.1.11", + "browserslist": "^4.24.3", + "call-bind": "^1.0.8", + "call-bind-apply-helpers": "^1.0.1", + "call-bound": "^1.0.3", + "callsites": "^3.1.0", + "caniuse-lite": "^1.0.30001690", + "chalk": "^4.1.2", + "color-convert": "^2.0.1", + "color-name": "^1.1.4", + "concat-map": "^0.0.1", + "convert-source-map": "^2.0.0", + "cross-spawn": "^7.0.6", + "csstype": "^3.1.3", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "debug": "^4.4.0", + "deep-is": "^0.1.4", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "doctrine": "^2.1.0", + "dunder-proto": "^1.0.1", + "electron-to-chromium": "^1.5.75", + "es-abstract": "^1.23.7", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-iterator-helpers": "^1.2.1", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-shim-unscopables": "^1.0.2", + "es-to-primitive": "^1.3.0", + "esbuild": "^0.24.0", + "escalade": "^3.2.0", + "escape-string-regexp": "^4.0.0", + "eslint": "^9.17.0", + "eslint-plugin-react": "^7.37.2", + "eslint-plugin-react-hooks": "^5.1.0", + "eslint-plugin-react-refresh": "^0.4.16", + "eslint-scope": "^8.2.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.6.0", + "esrecurse": "^4.3.0", + "estraverse": "^5.3.0", + "esutils": "^2.0.3", + "fast-deep-equal": "^3.1.3", + "fast-json-stable-stringify": "^2.1.0", + "fast-levenshtein": "^2.0.6", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "flat-cache": "^4.0.1", + "flatted": "^3.3.2", + "for-each": "^0.3.3", + "fsevents": "^2.3.3", + "function-bind": "^1.1.2", + "function.prototype.name": "^1.1.8", + "functions-have-names": "^1.2.3", + "gensync": "^1.0.0-beta.2", + "get-intrinsic": "^1.2.6", + "get-symbol-description": "^1.1.0", + "glob-parent": "^6.0.2", + "globals": "^15.14.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-bigints": "^1.1.0", + "has-flag": "^4.0.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2", + "ignore": "^5.3.2", + "import-fresh": "^3.3.0", + "imurmurhash": "^0.1.4", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-async-function": "^2.0.0", + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-callable": "^1.2.7", + "is-core-module": "^2.16.1", + "is-data-view": "^1.0.2", + "is-date-object": "^1.1.0", + "is-extglob": "^2.1.1", + "is-finalizationregistry": "^1.1.1", + "is-generator-function": "^1.0.10", + "is-glob": "^4.0.3", + "is-map": "^2.0.3", + "is-number-object": "^1.1.1", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakmap": "^2.0.2", + "is-weakref": "^1.1.0", + "is-weakset": "^2.0.4", + "isarray": "^2.0.5", + "isexe": "^2.0.0", + "iterator.prototype": "^1.1.4", + "js-tokens": "^4.0.0", + "js-yaml": "^4.1.0", + "jsesc": "^3.1.0", + "json-buffer": "^3.0.1", + "json-schema-traverse": "^0.4.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "json5": "^2.2.3", + "jsx-ast-utils": "^3.3.5", + "keyv": "^4.5.4", + "levn": "^0.4.1", + "locate-path": "^6.0.0", + "lodash.merge": "^4.6.2", + "loose-envify": "^1.4.0", + "lru-cache": "^5.1.1", + "math-intrinsics": "^1.1.0", + "minimatch": "^3.1.2", + "ms": "^2.1.3", + "nanoid": "^3.3.8", + "natural-compare": "^1.4.0", + "node-releases": "^2.0.19", + "object-assign": "^4.1.1", + "object-inspect": "^1.13.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "object.entries": "^1.1.8", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.1", + "optionator": "^0.9.4", + "p-limit": "^3.1.0", + "p-locate": "^5.0.0", + "parent-module": "^1.0.1", + "path-exists": "^4.0.0", + "path-key": "^3.1.1", + "path-parse": "^1.0.7", + "picocolors": "^1.1.1", + "possible-typed-array-names": "^1.0.0", + "postcss": "^8.4.49", + "prelude-ls": "^1.2.1", + "prop-types": "^15.8.1", + "punycode": "^2.3.1", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "react-is": "^16.13.1", + "react-refresh": "^0.14.2", + "reflect.getprototypeof": "^1.0.9", + "regexp.prototype.flags": "^1.5.3", + "resolve": "^2.0.0-next.5", + "resolve-from": "^4.0.0", + "rollup": "^4.29.1", + "safe-array-concat": "^1.1.3", + "safe-regex-test": "^1.1.0", + "scheduler": "^0.23.2", + "semver": "^6.3.1", + "set-function-length": "^1.2.2", + "set-function-name": "^2.0.2", + "shebang-command": "^2.0.0", + "shebang-regex": "^3.0.0", + "side-channel": "^1.1.0", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2", + "source-map-js": "^1.2.1", + "string.prototype.matchall": "^4.0.12", + "string.prototype.repeat": "^1.0.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "strip-json-comments": "^3.1.1", + "supports-color": "^7.2.0", + "supports-preserve-symlinks-flag": "^1.0.0", + "type-check": "^0.4.0", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "update-browserslist-db": "^1.1.1", + "uri-js": "^4.4.1", + "vite": "^6.0.5", + "which": "^2.0.2", + "which-boxed-primitive": "^1.1.1", + "which-builtin-type": "^1.2.1", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.18", + "word-wrap": "^1.2.5", + "yallist": "^3.1.1", + "yocto-queue": "^0.1.0", + "@infinite-list/list": "workspace:*", + "@infinite-list/scroller": "workspace:*" + }, + "devDependencies": {}, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC" +} diff --git a/examples/react-playground/project.json b/examples/react-playground/project.json new file mode 100644 index 00000000..85dab54f --- /dev/null +++ b/examples/react-playground/project.json @@ -0,0 +1,16 @@ +{ + "name": "react-playground", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "examples/react-playground/src", + "projectType": "application", + "tags": [], + "targets": { + "test": { + "executor": "@nx/jest:jest", + "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], + "options": { + "jestConfig": "examples/react-playground/jest.config.ts" + } + } + } +} diff --git a/examples/react-playground/public/favicon.ico b/examples/react-playground/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..317ebcb2336e0833a22dddf0ab287849f26fda57 GIT binary patch literal 15086 zcmeI332;U^%p|z7g|#(P)qFEA@4f!_@qOK2 z_lJl}!lhL!VT_U|uN7%8B2iKH??xhDa;*`g{yjTFWHvXn;2s{4R7kH|pKGdy(7z!K zgftM+Ku7~24TLlh(!g)gz|foI94G^t2^IO$uvX$3(OR0<_5L2sB)lMAMy|+`xodJ{ z_Uh_1m)~h?a;2W{dmhM;u!YGo=)OdmId_B<%^V^{ovI@y`7^g1_V9G}*f# zNzAtvou}I!W1#{M^@ROc(BZ! z+F!!_aR&Px3_reO(EW+TwlW~tv*2zr?iP7(d~a~yA|@*a89IUke+c472NXM0wiX{- zl`UrZC^1XYyf%1u)-Y)jj9;MZ!SLfd2Hl?o|80Su%Z?To_=^g_Jt0oa#CT*tjx>BI z16wec&AOWNK<#i0Qd=1O$fymLRoUR*%;h@*@v7}wApDl^w*h}!sYq%kw+DKDY)@&A z@9$ULEB3qkR#85`lb8#WZw=@})#kQig9oqy^I$dj&k4jU&^2(M3q{n1AKeGUKPFbr z1^<)aH;VsG@J|B&l>UtU#Ejv3GIqERzYgL@UOAWtW<{p#zy`WyJgpCy8$c_e%wYJL zyGHRRx38)HyjU3y{-4z6)pzb>&Q1pR)B&u01F-|&Gx4EZWK$nkUkOI|(D4UHOXg_- zw{OBf!oWQUn)Pe(=f=nt=zkmdjpO^o8ZZ9o_|4tW1ni+Un9iCW47*-ut$KQOww!;u z`0q)$s6IZO!~9$e_P9X!hqLxu`fpcL|2f^I5d4*a@Dq28;@2271v_N+5HqYZ>x;&O z05*7JT)mUe&%S0@UD)@&8SmQrMtsDfZT;fkdA!r(S=}Oz>iP)w=W508=Rc#nNn7ym z1;42c|8($ALY8#a({%1#IXbWn9-Y|0eDY$_L&j{63?{?AH{);EzcqfydD$@-B`Y3<%IIj7S7rK_N}je^=dEk%JQ4c z!tBdTPE3Tse;oYF>cnrapWq*o)m47X1`~6@(!Y29#>-#8zm&LXrXa(3=7Z)ElaQqj z-#0JJy3Fi(C#Rx(`=VXtJ63E2_bZGCz+QRa{W0e2(m3sI?LOcUBx)~^YCqZ{XEPX)C>G>U4tfqeH8L(3|pQR*zbL1 zT9e~4Tb5p9_G}$y4t`i*4t_Mr9QYvL9C&Ah*}t`q*}S+VYh0M6GxTTSXI)hMpMpIq zD1ImYqJLzbj0}~EpE-aH#VCH_udYEW#`P2zYmi&xSPs_{n6tBj=MY|-XrA;SGA_>y zGtU$?HXm$gYj*!N)_nQ59%lQdXtQZS3*#PC-{iB_sm+ytD*7j`D*k(P&IH2GHT}Eh z5697eQECVIGQAUe#eU2I!yI&%0CP#>%6MWV z@zS!p@+Y1i1b^QuuEF*13CuB zu69dve5k7&Wgb+^s|UB08Dr3u`h@yM0NTj4h7MnHo-4@xmyr7(*4$rpPwsCDZ@2be zRz9V^GnV;;?^Lk%ynzq&K(Aix`mWmW`^152Hoy$CTYVehpD-S1-W^#k#{0^L`V6CN+E z!w+xte;2vu4AmVNEFUOBmrBL>6MK@!O2*N|2=d|Y;oN&A&qv=qKn73lDD zI(+oJAdgv>Yr}8(&@ZuAZE%XUXmX(U!N+Z_sjL<1vjy1R+1IeHt`79fnYdOL{$ci7 z%3f0A*;Zt@ED&Gjm|OFTYBDe%bbo*xXAQsFz+Q`fVBH!N2)kaxN8P$c>sp~QXnv>b zwq=W3&Mtmih7xkR$YA)1Yi?avHNR6C99!u6fh=cL|KQ&PwF!n@ud^n(HNIImHD!h87!i*t?G|p0o+eelJ?B@A64_9%SBhNaJ64EvKgD&%LjLCYnNfc; znj?%*p@*?dq#NqcQFmmX($wms@CSAr9#>hUR^=I+=0B)vvGX%T&#h$kmX*s=^M2E!@N9#m?LhMvz}YB+kd zG~mbP|D(;{s_#;hsKK9lbVK&Lo734x7SIFJ9V_}2$@q?zm^7?*XH94w5Qae{7zOMUF z^?%F%)c1Y)Q?Iy?I>knw*8gYW#ok|2gdS=YYZLiD=CW|Nj;n^x!=S#iJ#`~Ld79+xXpVmUK^B(xO_vO!btA9y7w3L3-0j-y4 z?M-V{%z;JI`bk7yFDcP}OcCd*{Q9S5$iGA7*E1@tfkyjAi!;wP^O71cZ^Ep)qrQ)N z#wqw0_HS;T7x3y|`P==i3hEwK%|>fZ)c&@kgKO1~5<5xBSk?iZV?KI6&i72H6S9A* z=U(*e)EqEs?Oc04)V-~K5AUmh|62H4*`UAtItO$O(q5?6jj+K^oD!04r=6#dsxp?~}{`?&sXn#q2 zGuY~7>O2=!u@@Kfu7q=W*4egu@qPMRM>(eyYyaIE<|j%d=iWNdGsx%c!902v#ngNg z@#U-O_4xN$s_9?(`{>{>7~-6FgWpBpqXb`Ydc3OFL#&I}Irse9F_8R@4zSS*Y*o*B zXL?6*Aw!AfkNCgcr#*yj&p3ZDe2y>v$>FUdKIy_2N~}6AbHc7gA3`6$g@1o|dE>vz z4pl(j9;kyMsjaw}lO?(?Xg%4k!5%^t#@5n=WVc&JRa+XT$~#@rldvN3S1rEpU$;XgxVny7mki3 z-Hh|jUCHrUXuLr!)`w>wgO0N%KTB-1di>cj(x3Bav`7v z3G7EIbU$z>`Nad7Rk_&OT-W{;qg)-GXV-aJT#(ozdmnA~Rq3GQ_3mby(>q6Ocb-RgTUhTN)))x>m&eD;$J5Bg zo&DhY36Yg=J=$Z>t}RJ>o|@hAcwWzN#r(WJ52^g$lh^!63@hh+dR$&_dEGu&^CR*< z!oFqSqO@>xZ*nC2oiOd0eS*F^IL~W-rsrO`J`ej{=ou_q^_(<$&-3f^J z&L^MSYWIe{&pYq&9eGaArA~*kA + new Array(count).fill(1).map((v, index) => ({ + key: `${index}`, + })); + +const meta: Meta = { + component: List, + render: () => { + return ( +
+ { + const { item } = props; + + return ( +
+ {item.key} +
+ ); + }} + keyExtractor={defaultKeyExtractor} + /> +
+ ); + }, + title: 'List', +}; +export default meta; + +export const SimpleList = { + args: { + data: buildData(100), + keyExtractor: defaultKeyExtractor, + }, +}; diff --git a/examples/react-playground/src/app/MasonryList.stories.tsx b/examples/react-playground/src/app/MasonryList.stories.tsx new file mode 100644 index 00000000..30a55145 --- /dev/null +++ b/examples/react-playground/src/app/MasonryList.stories.tsx @@ -0,0 +1,65 @@ +import type { Meta } from '@storybook/react'; +import { defaultKeyExtractor } from '@infinite-list/utils'; +import { MasonryList } from '@infinite-list/masonry/react'; +import { KeyExtractor } from '@infinite-list/dimensions-model'; + +type Item = { + key: string; +}; + +const buildData = (count: number) => + new Array(count).fill(1).map((v, index) => ({ + key: `${index}`, + })); + +const meta: Meta = { + component: MasonryList, + render: () => { + return ( +
+ { + const { item, itemMeta } = props; + const indexInfo = itemMeta.getIndexInfo(); + const index = indexInfo?.index || 0; + + return ( +
+ {item.key} +
+ ); + }} + keyExtractor={defaultKeyExtractor as KeyExtractor} + /> +
+ ); + }, + title: 'MasonryList', +}; +export default meta; + +export const SimpleMasonryList = { + args: { + data: buildData(100), + keyExtractor: defaultKeyExtractor, + }, +}; diff --git a/examples/react-playground/src/app/OnEndReached.stories.tsx b/examples/react-playground/src/app/OnEndReached.stories.tsx new file mode 100644 index 00000000..4be0b9bf --- /dev/null +++ b/examples/react-playground/src/app/OnEndReached.stories.tsx @@ -0,0 +1,97 @@ +import React, { useCallback, useState, useRef, useEffect } from 'react'; +import type { Meta } from '@storybook/react'; +import { defaultKeyExtractor } from '@infinite-list/utils'; +import { List } from '@infinite-list/list/react'; +import { KeyExtractor } from '@infinite-list/dimensions-model'; + +type Item = { + key: string; +}; + +const buildData = (count: number, startIndex = 0) => + new Array(count).fill(1).map((v, index) => ({ + key: startIndex + index, + })); + +const fetchData = (startIndex: number) => { + return new Promise((resolve) => { + setTimeout(() => { + resolve(buildData(10, startIndex * 10)); + }, 200); + }); +}; + +const meta: Meta = { + render: () => { + const [data, setData] = useState([]); + const pageRef = useRef(0); + + const onEndReached = useCallback(({ cb }) => { + fetchData(pageRef.current).then((data) => { + setData((current) => [].concat(current, data)); + cb(); + pageRef.current += 1; + }); + }, []); + + return ( +
+ { + const { item, itemMeta } = props; + const initRef = useRef(true); + + useEffect(() => { + if (initRef.current) console.log('mount ', itemMeta.getKey()); + else { + console.log('update to ', itemMeta.getKey()); + } + + initRef.current = false; + + return () => { + console.log('unmount ', itemMeta.getKey()); + }; + }, [itemMeta]); + + return ( +
+ {item.key} +
+ ); + }} + keyExtractor={defaultKeyExtractor as KeyExtractor} + /> +
+ ); + }, + title: 'OnEndReached', +}; +export default meta; + +export const SimpleList = { + args: { + data: buildData(100), + keyExtractor: defaultKeyExtractor, + }, +}; diff --git a/examples/react-playground/src/app/app.module.css b/examples/react-playground/src/app/app.module.css new file mode 100644 index 00000000..7b88fbab --- /dev/null +++ b/examples/react-playground/src/app/app.module.css @@ -0,0 +1 @@ +/* Your styles goes here. */ diff --git a/examples/react-playground/src/app/app.spec.tsx b/examples/react-playground/src/app/app.spec.tsx new file mode 100644 index 00000000..6f19571b --- /dev/null +++ b/examples/react-playground/src/app/app.spec.tsx @@ -0,0 +1,21 @@ +// import { render } from '@testing-library/react'; + +// import App from './app'; + +// describe('App', () => { +// it('should render successfully', () => { +// const { baseElement } = render(); +// expect(baseElement).toBeTruthy(); +// }); + +// it('should have a greeting as the title', () => { +// const { getByText } = render(); +// expect(getByText(/Welcome react-playground/gi)).toBeTruthy(); +// }); +// }); + +describe('app', () => { + it('basic', () => { + expect(3).toBe(3); + }); +}); diff --git a/examples/react-playground/src/app/group.stories.tsx b/examples/react-playground/src/app/group.stories.tsx new file mode 100644 index 00000000..05366d94 --- /dev/null +++ b/examples/react-playground/src/app/group.stories.tsx @@ -0,0 +1,94 @@ +import type { Meta } from '@storybook/react'; +import { defaultKeyExtractor } from '@infinite-list/utils'; +import { KeyExtractor } from '@infinite-list/dimensions-model'; +import { RenderItemInfo } from '@infinite-list/types'; + +import { ListGroup, GroupList } from '@infinite-list/group/react'; + +type Item = { + key: string; +}; + +const buildData = (count: number, startIndex = 0) => + new Array(count).fill(1).map((v, index) => ({ + key: `${index + startIndex}`, + })); + +const meta: Meta = { + component: ListGroup, + render: () => { + return ( +
+ + ) => { + const { item } = props; + return ( +
+ {item.key} +
+ ); + }} + keyExtractor={defaultKeyExtractor as KeyExtractor} + /> + + ) => { + const { item } = props; + + return ( +
+ {item.key} +
+ ); + }} + keyExtractor={defaultKeyExtractor as KeyExtractor} + /> +
+
+ ); + }, + title: 'group', +}; +export default meta; + +export const SimpleListGroup = { + args: { + data: buildData(100), + keyExtractor: defaultKeyExtractor, + }, +}; diff --git a/examples/react-playground/src/app/index.tsx b/examples/react-playground/src/app/index.tsx new file mode 100644 index 00000000..461f67a0 --- /dev/null +++ b/examples/react-playground/src/app/index.tsx @@ -0,0 +1 @@ +export default () => null; diff --git a/examples/react-playground/src/assets/.gitkeep b/examples/react-playground/src/assets/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/examples/react-playground/src/main.tsx b/examples/react-playground/src/main.tsx new file mode 100644 index 00000000..02a4759c --- /dev/null +++ b/examples/react-playground/src/main.tsx @@ -0,0 +1,13 @@ +import { StrictMode } from 'react'; +import * as ReactDOM from 'react-dom/client'; + +import App from './app'; + +const root = ReactDOM.createRoot( + document.getElementById('root') as HTMLElement +); +root.render( + + + +); diff --git a/examples/react-playground/src/styles.css b/examples/react-playground/src/styles.css new file mode 100644 index 00000000..90d4ee00 --- /dev/null +++ b/examples/react-playground/src/styles.css @@ -0,0 +1 @@ +/* You can add global styles to this file, and also import other style files */ diff --git a/examples/react-playground/tsconfig.app.json b/examples/react-playground/tsconfig.app.json new file mode 100644 index 00000000..ca6ac0de --- /dev/null +++ b/examples/react-playground/tsconfig.app.json @@ -0,0 +1,27 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "types": [ + "node", + "@nx/react/typings/cssmodule.d.ts", + "@nx/react/typings/image.d.ts", + "vite/client" + ] + }, + "exclude": [ + "src/**/*.spec.ts", + "src/**/*.test.ts", + "src/**/*.spec.tsx", + "src/**/*.test.tsx", + "src/**/*.spec.js", + "src/**/*.test.js", + "src/**/*.spec.jsx", + "src/**/*.test.jsx", + "**/*.stories.ts", + "**/*.stories.js", + "**/*.stories.jsx", + "**/*.stories.tsx" + ], + "include": ["src/**/*.js", "src/**/*.jsx", "src/**/*.ts", "src/**/*.tsx"] +} diff --git a/examples/react-playground/tsconfig.json b/examples/react-playground/tsconfig.json new file mode 100644 index 00000000..2e4f313d --- /dev/null +++ b/examples/react-playground/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "jsx": "react-jsx", + "allowJs": false, + "esModuleInterop": false, + "allowSyntheticDefaultImports": true, + "strict": true, + "types": ["vite/client"] + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.app.json" + }, + { + "path": "./tsconfig.spec.json" + }, + { + "path": "./tsconfig.storybook.json" + } + ], + "extends": "../../tsconfig.base.json" +} diff --git a/examples/react-playground/tsconfig.spec.json b/examples/react-playground/tsconfig.spec.json new file mode 100644 index 00000000..643969a8 --- /dev/null +++ b/examples/react-playground/tsconfig.spec.json @@ -0,0 +1,25 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "module": "commonjs", + "types": [ + "jest", + "node", + "@nx/react/typings/cssmodule.d.ts", + "@nx/react/typings/image.d.ts" + ] + }, + "include": [ + "jest.config.ts", + "src/**/*.test.ts", + "src/**/*.spec.ts", + "src/**/*.test.tsx", + "src/**/*.spec.tsx", + "src/**/*.test.js", + "src/**/*.spec.js", + "src/**/*.test.jsx", + "src/**/*.spec.jsx", + "src/**/*.d.ts" + ] +} diff --git a/examples/react-playground/tsconfig.storybook.json b/examples/react-playground/tsconfig.storybook.json new file mode 100644 index 00000000..2da3caee --- /dev/null +++ b/examples/react-playground/tsconfig.storybook.json @@ -0,0 +1,31 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "emitDecoratorMetadata": true, + "outDir": "" + }, + "files": [ + "../../node_modules/@nx/react/typings/styled-jsx.d.ts", + "../../node_modules/@nx/react/typings/cssmodule.d.ts", + "../../node_modules/@nx/react/typings/image.d.ts" + ], + "exclude": [ + "src/**/*.spec.ts", + "src/**/*.test.ts", + "src/**/*.spec.js", + "src/**/*.test.js", + "src/**/*.spec.tsx", + "src/**/*.test.tsx", + "src/**/*.spec.jsx", + "src/**/*.test.js" + ], + "include": [ + "src/**/*.stories.ts", + "src/**/*.stories.js", + "src/**/*.stories.jsx", + "src/**/*.stories.tsx", + "src/**/*.stories.mdx", + ".storybook/*.js", + ".storybook/*.ts" + ] +} diff --git a/examples/react-playground/vite.config.ts b/examples/react-playground/vite.config.ts new file mode 100644 index 00000000..70491de0 --- /dev/null +++ b/examples/react-playground/vite.config.ts @@ -0,0 +1,36 @@ +/// +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; +import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin'; +import { nxCopyAssetsPlugin } from '@nx/vite/plugins/nx-copy-assets.plugin'; + +export default defineConfig({ + root: __dirname, + cacheDir: '../../node_modules/.vite/examples/react-playground', + + server: { + port: 4200, + host: 'localhost', + }, + + preview: { + port: 4300, + host: 'localhost', + }, + + plugins: [react(), nxViteTsPaths(), nxCopyAssetsPlugin(['*.md'])], + + // Uncomment this if you are using workers. + // worker: { + // plugins: [ nxViteTsPaths() ], + // }, + + build: { + outDir: '../../dist/examples/react-playground', + emptyOutDir: true, + reportCompressedSize: true, + commonjsOptions: { + transformMixedEsModules: true, + }, + }, +}); diff --git a/model/dimension/.swcrc b/model/dimension/.swcrc new file mode 100644 index 00000000..28e88ec1 --- /dev/null +++ b/model/dimension/.swcrc @@ -0,0 +1,29 @@ +{ + "jsc": { + "target": "es2017", + "parser": { + "syntax": "typescript", + "decorators": true, + "dynamicImport": true + }, + "transform": { + "decoratorMetadata": true, + "legacyDecorator": true + }, + "keepClassNames": true, + "externalHelpers": true, + "loose": true + }, + "module": { + "type": "es6" + }, + "sourceMaps": true, + "exclude": [ + "jest.config.ts", + ".*\\.spec.tsx?$", + ".*\\.test.tsx?$", + "./src/jest-setup.ts$", + "./**/jest-setup.ts$", + ".*.js$" + ] +} diff --git a/model/dimension/README.md b/model/dimension/README.md new file mode 100644 index 00000000..9a2658b6 --- /dev/null +++ b/model/dimension/README.md @@ -0,0 +1,11 @@ +# dimension + +This library was generated with [Nx](https://nx.dev). + +## Building + +Run `nx build dimension` to build the library. + +## Running unit tests + +Run `nx test dimension` to execute the unit tests via [Vitest](https://vitest.dev/). diff --git a/model/dimension/eslint.config.js b/model/dimension/eslint.config.js new file mode 100644 index 00000000..6e58c36a --- /dev/null +++ b/model/dimension/eslint.config.js @@ -0,0 +1,22 @@ +const baseConfig = require('../../eslint.config.js'); + +module.exports = [ + ...baseConfig, + { + files: ['**/*.json'], + rules: { + '@nx/dependency-checks': [ + 'error', + { + ignoredFiles: [ + '{projectRoot}/eslint.config.{js,cjs,mjs}', + '{projectRoot}/vite.config.{js,ts,mjs,mts}', + ], + }, + ], + }, + languageOptions: { + parser: require('jsonc-eslint-parser'), + }, + }, +]; diff --git a/model/dimension/package.json b/model/dimension/package.json new file mode 100644 index 00000000..eeb962ff --- /dev/null +++ b/model/dimension/package.json @@ -0,0 +1,13 @@ +{ + "name": "@infinite-list/dimension", + "version": "0.0.1", + "dependencies": { + "@x-oasis/default-boolean-value": "^0.1.14", + "@x-oasis/is-object": "^0.1.35", + "@x-oasis/layout-equal": "^0.1.16", + "@infinite-list/item-meta": "workspace:*", + "@infinite-list/container": "workspace:*" + }, + "main": "./index.cjs", + "module": "./index.js" +} diff --git a/model/dimension/project.json b/model/dimension/project.json new file mode 100644 index 00000000..b6a6c52e --- /dev/null +++ b/model/dimension/project.json @@ -0,0 +1,22 @@ +{ + "name": "dimension", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "model/dimension/src", + "projectType": "library", + "release": { + "version": { + "generatorOptions": { + "packageRoot": "dist/{projectRoot}", + "currentVersionResolver": "git-tag" + } + } + }, + "tags": [], + "targets": { + "nx-release-publish": { + "options": { + "packageRoot": "dist/{projectRoot}" + } + } + } +} diff --git a/model/dimension/rollup.config.js b/model/dimension/rollup.config.js new file mode 100644 index 00000000..eae76670 --- /dev/null +++ b/model/dimension/rollup.config.js @@ -0,0 +1,18 @@ +const { withNx } = require('@nx/rollup/with-nx'); + +module.exports = withNx( + { + main: './src/index.ts', + outputPath: '../../dist/model/dimension', + tsConfig: '../../tsconfig.json', + // tsConfig: './tsconfig.lib.json', + compiler: 'swc', + format: ['cjs', 'esm'], + assets: [{ input: '.', output: '.', glob: '*.md' }], + }, + { + // Provide additional rollup configuration here. See: https://rollupjs.org/configuration-options + // e.g. + // output: { sourcemap: true }, + } +); diff --git a/model/dimension/src/Dimension.ts b/model/dimension/src/Dimension.ts new file mode 100644 index 00000000..f823b3b0 --- /dev/null +++ b/model/dimension/src/Dimension.ts @@ -0,0 +1,294 @@ +import defaultBooleanValue from '@x-oasis/default-boolean-value'; +import isObject from '@x-oasis/is-object'; +import { ItemMeta } from '@infinite-list/item-meta'; +import { IDimension, ItemLayout } from '@infinite-list/types'; +import { Container as BaseContainer } from '@infinite-list/container'; +import { + INVALID_LENGTH, + DEFAULT_DIMENSION_ITEM_APPROXIMATE_LENGTH, + DEFAULT_RECYCLER_TYPE, +} from './common'; +import layoutEqual from '@x-oasis/layout-equal'; +import { + DimensionProps, + GetDimensionLength, + GenericItemT, + ListGroupChildDimensionsContainer, + ListGroupIndexInfo, + ListGroupDimensions, +} from './types'; + +/** + * Abstraction of singleton item, It is used in ListGroup Condition. + */ +class Dimension< + ItemT extends GenericItemT = GenericItemT, + ExtraInfo extends {} = {} + > + extends BaseContainer + implements IDimension +{ + private _meta: ItemMeta; + readonly _container: ListGroupChildDimensionsContainer; + readonly _ignoredToPerBatch: boolean; + private _offsetInListGroup = 0; + private _data: Array; + private _recyclerType: string; + private _anchorKey: string; + private _itemApproximateLength: number; + private _approximateMode: boolean; + private _getItemLength?: GetDimensionLength; + private _isFixedLength: boolean; + public extraInfo: ExtraInfo; + + constructor(props: DimensionProps) { + super(props); + const { + id, + recyclerType = DEFAULT_RECYCLER_TYPE, + container, + ignoredToPerBatch, + anchorKey, + getItemLength, + isFixedLength = true, + recycleEnabled, + useItemApproximateLength, + itemApproximateLength = DEFAULT_DIMENSION_ITEM_APPROXIMATE_LENGTH, + } = props; + + this.extraInfo = {} as ExtraInfo; + + this._data = [ + { + key: id, + }, + ]; + this._recyclerType = recyclerType; + this._anchorKey = anchorKey || id; + this._container = container; + this._getItemLength = getItemLength; + this._ignoredToPerBatch = !!ignoredToPerBatch; + this._approximateMode = recycleEnabled + ? defaultBooleanValue( + useItemApproximateLength, + typeof this._getItemLength !== 'function' + ) + : false; + this._itemApproximateLength = itemApproximateLength; + this._isFixedLength = isFixedLength; + + this._meta = this.createItemMeta(); + this.resolveConfigTuplesDefaultState = + this.resolveConfigTuplesDefaultState.bind(this); + } + + getData() { + return this._data; + } + + get length() { + return 1; + } + + get recyclerType() { + return this._recyclerType; + } + + get anchorKey() { + return this._anchorKey; + } + + hasKey(key: string) { + return this.id === key; + } + + getReflowItemsLength() { + const meta = this.getMeta(); + const layout = meta.getLayout(); + return layout ? 1 : 0; + } + + createItemMeta() { + const meta = ItemMeta.spawn({ + key: this.id, + isListItem: false, + owner: this, + recyclerType: this._recyclerType, + canIUseRIC: this.canIUseRIC, + ignoredToPerBatch: this._ignoredToPerBatch, + }); + + if (typeof this._getItemLength === 'function') { + const length = this._getItemLength(); + // only List with getItemLayout has default layout value + meta.setLayout({ x: 0, y: 0, height: 0, width: 0 }); + this._selectValue.setLength(meta.getLayout()!, length); + if (this._isFixedLength) meta.isApproximateLayout = false; + this.triggerOwnerRecalculateLayout(); + return meta; + } + + if (this._approximateMode && meta.isApproximateLayout) { + meta.setLayout({ x: 0, y: 0, height: 0, width: 0 }); + this._selectValue.setLength( + meta.getLayout()!, + this._itemApproximateLength + ); + + this.triggerOwnerRecalculateLayout(); + + return meta; + } + + return meta; + } + + hasUnLayoutItems() { + const meta = this.getMeta(); + return !!meta?.getLayout(); + } + + getTotalLength() { + const meta = this.getMeta(); + const layout = meta.getLayout(); + return layout ? this._selectValue.selectLength(layout) : INVALID_LENGTH; + } + + getIgnoredToPerBatch() { + return !!this._ignoredToPerBatch; + } + + resolveConfigTuplesDefaultState() { + return this._container.resolveConfigTuplesDefaultState(); + } + + set offsetInListGroup(value: number) { + this._offsetInListGroup = value; + } + + override getContainerOffset(exclusive?: boolean | number) { + return exclusive ? 0 : this._offsetInListGroup; + } + + getIndexKeyOffset(exclusive?: boolean | number) { + return exclusive ? 0 : this._offsetInListGroup; + } + + getItemOffset() { + return this.getContainerOffset(); + } + + getKeyItemOffset(key: string, exclusive?: boolean): number { + return this.getContainerOffset(); + } + + getKey() { + return this.id; + } + + getKeyIndex() { + return 0; + } + + getIndexInfo() { + const info = { + index: 0, + } as ListGroupIndexInfo; + if (this._container) { + const index = ( + this._container as ListGroupDimensions + ).getDimensionStartIndex(this.id); + if (index !== -1) info.indexInGroup = index; + } + + return info; + } + + getFinalItemMeta(item: any) { + return this.getItemMeta(item); + } + + getItemMeta(item: any) { + if (item === this.getData()[0]) return this._meta; + return null; + } + + getItemKey(item: any) { + if (item === this.getData()[0]) return this.getKey(); + return null; + } + + getFinalItemKey(item: any) { + return this.getItemKey(item); + } + + getMeta() { + return this._meta; + } + + setMeta(meta: ItemMeta) { + this._meta = meta; + } + + getIndexItemMeta() { + return this._meta; + } + + setKeyItemLayout( + key: string, + layout: ItemLayout | number, + updateIntervalTree?: boolean + ) { + return this.setItemLayout(layout, updateIntervalTree); + } + + triggerOwnerRecalculateLayout() { + if (this._container) this._container.onItemLayoutChanged(); + } + + setItemLayout(layout: ItemLayout | number, updateIntervalTree?: boolean) { + const meta = this.getMeta(); + const _update = + typeof updateIntervalTree === 'boolean' ? updateIntervalTree : true; + + meta.isApproximateLayout = false; + + if (typeof layout === 'number') { + const length = layout; + if (this._selectValue.selectLength(meta.getLayout() || {}) !== length) { + this._selectValue.setLength(meta.ensureLayout(), length); + + if (_update) { + this.triggerOwnerRecalculateLayout(); + return true; + } + } + } + const itemMetaLayout = meta.getLayout(); + + if ( + isObject(layout) && + (!itemMetaLayout || !layoutEqual(itemMetaLayout, layout as ItemLayout)) + ) { + meta.setLayout(layout as ItemLayout); + if (_update) { + this.triggerOwnerRecalculateLayout(); + return true; + } + } + + return false; + } + + ensureKeyMeta() { + if (this._meta) return this._meta; + this._meta = this.createItemMeta(); + return this._meta; + } + + override getSelectValue() { + return this._selectValue; + } +} + +export default Dimension; diff --git a/model/dimension/src/common.ts b/model/dimension/src/common.ts new file mode 100644 index 00000000..86a2b41e --- /dev/null +++ b/model/dimension/src/common.ts @@ -0,0 +1,3 @@ +export const DEFAULT_DIMENSION_ITEM_APPROXIMATE_LENGTH = 1; +export const INVALID_LENGTH = 'invalid_length'; +export const DEFAULT_RECYCLER_TYPE = '__default_recycler_buffer__'; diff --git a/model/dimension/src/index.ts b/model/dimension/src/index.ts new file mode 100644 index 00000000..c0755526 --- /dev/null +++ b/model/dimension/src/index.ts @@ -0,0 +1,2 @@ +export { default as Dimension } from './Dimension'; +export * from './types'; diff --git a/model/dimension/src/types/Dimension.types.ts b/model/dimension/src/types/Dimension.types.ts new file mode 100644 index 00000000..160eed9f --- /dev/null +++ b/model/dimension/src/types/Dimension.types.ts @@ -0,0 +1,21 @@ +import { BaseContainerProps } from '@infinite-list/container'; +import { ListGroupChildDimensionsContainer } from './ListGroupDimensions.types'; +import { GenericItemT } from './generic.types'; + +export type GetDimensionLength = () => number; + +export interface DimensionProps + extends BaseContainerProps { + recyclerType?: string; + onRender?: Function; + ignoredToPerBatch?: boolean; + container: ListGroupChildDimensionsContainer; + anchorKey?: string; + + recycleEnabled?: boolean; + useItemApproximateLength?: boolean; + itemApproximateLength?: number; + + isFixedLength?: boolean; + getItemLength?: GetDimensionLength; +} diff --git a/model/dimension/src/types/ListGroupDimensions.types.ts b/model/dimension/src/types/ListGroupDimensions.types.ts new file mode 100644 index 00000000..dabd81ca --- /dev/null +++ b/model/dimension/src/types/ListGroupDimensions.types.ts @@ -0,0 +1,77 @@ +import Dimension from '../Dimension'; +import { GenericItemT } from './generic.types'; +// import ListGroupDimensions from '../ListGroupDimensions'; +// import ListDimensionsModel from '../ListDimensionsModel'; + +// [TODO] +export type ListGroupDimensions

= any; +type ListDimensionsModel

= any; + +// export type ListRangeResult = ListRange[]; +// export type ListRange = +// | { +// listKey: string; +// isDimension: boolean; +// value: { +// startIndex: number; +// endIndex: number; +// data: ItemT[]; +// }; +// } +// | { +// listKey: string; +// isDimension: boolean; +// }; + +// export interface ListGroupDimensionsProps +// extends BaseLayoutProps, +// OnEndReachedHelperProps, +// ViewabilityConfigTuplesProps { +// onUpdateItemLayout?: Function; +// onUpdateIntervalTree?: Function; +// recycleEnabled?: boolean; +// recyclerTypes?: Array; +// isFixedLength?: boolean; +// } + +// export type RegisteredListProps = +// Omit< +// ListDimensionsModelProps & OnEndReachedHelperProps, +// 'container' | 'id' | 'store' +// >; +// export type RegisteredDimensionProps< +// ItemT extends GenericItemT = GenericItemT +// > = Omit, 'container' | 'id' | 'store'>; + +// export type KeyToOnEndReachedMap = Map; + +// export type DimensionsIndexRange = { +// dimensions: ListGroupChildDimensions; +// startIndex: number; +// endIndex: number; + +// startIndexInRecycler: number; +// endIndexInRecycler: number; +// }; + +// // export type ListGroupDimensionsModelContainer< +// // ItemT extends GenericItemT = GenericItemT +// // > = ListGroupDimensions; +// // export type ListGroupDimensionsModelContainer< +// // ItemT extends GenericItemT = GenericItemT +// // > = ListGroupDimensions | ListDimensions; + +export type ListGroupChildDimensions< + ItemT extends GenericItemT = GenericItemT +> = ListDimensionsModel | Dimension; + +export type ListGroupChildDimensionsContainer< + ItemT extends GenericItemT = GenericItemT +> = ListGroupDimensions; + +export type ListGroupIndexInfo = { + dimensions: ListGroupChildDimensions; + index: number; + indexInGroup?: number; + indexInRecycler?: number; +}; diff --git a/model/dimension/src/types/generic.types.ts b/model/dimension/src/types/generic.types.ts new file mode 100644 index 00000000..297f824d --- /dev/null +++ b/model/dimension/src/types/generic.types.ts @@ -0,0 +1,4 @@ +export type GenericItemT = { + [key: string]: any; +}; +export type GenericStateResult = any; diff --git a/model/dimension/src/types/index.ts b/model/dimension/src/types/index.ts new file mode 100644 index 00000000..e33e4433 --- /dev/null +++ b/model/dimension/src/types/index.ts @@ -0,0 +1,3 @@ +export * from './Dimension.types'; +export * from './generic.types'; +export * from './ListGroupDimensions.types'; diff --git a/model/dimension/tsconfig.json b/model/dimension/tsconfig.json new file mode 100644 index 00000000..8d9d5912 --- /dev/null +++ b/model/dimension/tsconfig.json @@ -0,0 +1,22 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "commonjs", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ] +} diff --git a/model/dimension/tsconfig.lib.json b/model/dimension/tsconfig.lib.json new file mode 100644 index 00000000..ce3b531c --- /dev/null +++ b/model/dimension/tsconfig.lib.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "declaration": true, + "types": ["node"] + }, + "include": ["src/**/*.ts"], + "exclude": ["vite.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"] +} diff --git a/model/dimension/tsconfig.spec.json b/model/dimension/tsconfig.spec.json new file mode 100644 index 00000000..3c002c21 --- /dev/null +++ b/model/dimension/tsconfig.spec.json @@ -0,0 +1,26 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "types": [ + "vitest/globals", + "vitest/importMeta", + "vite/client", + "node", + "vitest" + ] + }, + "include": [ + "vite.config.ts", + "vitest.config.ts", + "src/**/*.test.ts", + "src/**/*.spec.ts", + "src/**/*.test.tsx", + "src/**/*.spec.tsx", + "src/**/*.test.js", + "src/**/*.spec.js", + "src/**/*.test.jsx", + "src/**/*.spec.jsx", + "src/**/*.d.ts" + ] +} diff --git a/model/dimension/vite.config.ts b/model/dimension/vite.config.ts new file mode 100644 index 00000000..14c898ad --- /dev/null +++ b/model/dimension/vite.config.ts @@ -0,0 +1,28 @@ +import { defineConfig } from 'vite'; + +import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin'; +import { nxCopyAssetsPlugin } from '@nx/vite/plugins/nx-copy-assets.plugin'; + +export default defineConfig({ + root: __dirname, + cacheDir: '../../node_modules/.vite/model/dimension', + + plugins: [nxViteTsPaths(), nxCopyAssetsPlugin(['*.md'])], + + // Uncomment this if you are using workers. + // worker: { + // plugins: [ nxViteTsPaths() ], + // }, + + test: { + watch: false, + globals: true, + environment: 'node', + include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], + reporters: ['default'], + coverage: { + reportsDirectory: '../../coverage/model/dimension', + provider: 'v8', + }, + }, +}); diff --git a/model/group-dimensions/.swcrc b/model/group-dimensions/.swcrc new file mode 100644 index 00000000..28e88ec1 --- /dev/null +++ b/model/group-dimensions/.swcrc @@ -0,0 +1,29 @@ +{ + "jsc": { + "target": "es2017", + "parser": { + "syntax": "typescript", + "decorators": true, + "dynamicImport": true + }, + "transform": { + "decoratorMetadata": true, + "legacyDecorator": true + }, + "keepClassNames": true, + "externalHelpers": true, + "loose": true + }, + "module": { + "type": "es6" + }, + "sourceMaps": true, + "exclude": [ + "jest.config.ts", + ".*\\.spec.tsx?$", + ".*\\.test.tsx?$", + "./src/jest-setup.ts$", + "./**/jest-setup.ts$", + ".*.js$" + ] +} diff --git a/model/group-dimensions/README.md b/model/group-dimensions/README.md new file mode 100644 index 00000000..3a100f6d --- /dev/null +++ b/model/group-dimensions/README.md @@ -0,0 +1,11 @@ +# group-dimensions + +This library was generated with [Nx](https://nx.dev). + +## Building + +Run `nx build group-dimensions` to build the library. + +## Running unit tests + +Run `nx test group-dimensions` to execute the unit tests via [Vitest](https://vitest.dev/). diff --git a/model/group-dimensions/eslint.config.js b/model/group-dimensions/eslint.config.js new file mode 100644 index 00000000..6e58c36a --- /dev/null +++ b/model/group-dimensions/eslint.config.js @@ -0,0 +1,22 @@ +const baseConfig = require('../../eslint.config.js'); + +module.exports = [ + ...baseConfig, + { + files: ['**/*.json'], + rules: { + '@nx/dependency-checks': [ + 'error', + { + ignoredFiles: [ + '{projectRoot}/eslint.config.{js,cjs,mjs}', + '{projectRoot}/vite.config.{js,ts,mjs,mts}', + ], + }, + ], + }, + languageOptions: { + parser: require('jsonc-eslint-parser'), + }, + }, +]; diff --git a/model/group-dimensions/package.json b/model/group-dimensions/package.json new file mode 100644 index 00000000..3340d7d1 --- /dev/null +++ b/model/group-dimensions/package.json @@ -0,0 +1,22 @@ +{ + "name": "@infinite-list/group-dimensions", + "version": "0.0.1", + "dependencies": { + "@x-oasis/batchinator": "^0.1.14", + "@x-oasis/default-boolean-value": "^0.1.14", + "@x-oasis/find-last-index": "^0.1.34", + "@x-oasis/is-clamped": "^0.1.14", + "@x-oasis/layout-equal": "^0.1.16", + "@x-oasis/prefix-interval-tree": "^0.2.4", + "@x-oasis/shallow-array-equal": "^0.1.14", + "@infinite-list/item-meta": "workspace:*", + "@infinite-list/base-dimensions": "workspace:*", + "@infinite-list/items-dimensions": "workspace:*", + "@infinite-list/dimension": "workspace:*", + "@infinite-list/strategies": "workspace:*", + "@infinite-list/state": "workspace:*", + "@infinite-list/utils": "workspace:*" + }, + "main": "./index.cjs", + "module": "./index.js" +} diff --git a/model/group-dimensions/project.json b/model/group-dimensions/project.json new file mode 100644 index 00000000..4cb082d3 --- /dev/null +++ b/model/group-dimensions/project.json @@ -0,0 +1,28 @@ +{ + "name": "group-dimensions", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "model/group-dimensions/src", + "projectType": "library", + "release": { + "version": { + "generatorOptions": { + "packageRoot": "dist/{projectRoot}", + "currentVersionResolver": "git-tag" + } + } + }, + "tags": [], + "targets": { + "nx-release-publish": { + "options": { + "packageRoot": "dist/{projectRoot}" + } + }, + "test": { + "executor": "@nx/vite:test", + "options": { + "config": "packages/data-model/vite.config.ts" + } + } + } +} diff --git a/model/group-dimensions/rollup.config.js b/model/group-dimensions/rollup.config.js new file mode 100644 index 00000000..08ebf065 --- /dev/null +++ b/model/group-dimensions/rollup.config.js @@ -0,0 +1,17 @@ +const { withNx } = require('@nx/rollup/with-nx'); + +module.exports = withNx( + { + main: './src/index.ts', + outputPath: '../../dist/model/group-dimensions', + tsConfig: './tsconfig.lib.json', + compiler: 'swc', + format: ['cjs', 'esm'], + assets: [{ input: '.', output: '.', glob: '*.md' }], + }, + { + // Provide additional rollup configuration here. See: https://rollupjs.org/configuration-options + // e.g. + // output: { sourcemap: true }, + } +); diff --git a/model/group-dimensions/src/Inspector.ts b/model/group-dimensions/src/Inspector.ts new file mode 100644 index 00000000..c04c7f8f --- /dev/null +++ b/model/group-dimensions/src/Inspector.ts @@ -0,0 +1,187 @@ +import shallowArrayEqual from '@x-oasis/shallow-array-equal'; +import Batchinator from '@x-oasis/batchinator'; +import { + InspectorProps, + InspectingAPI, + InspectingListener, + OnIndexKeysChanged, + GenericItemT, +} from './types'; +import findLastIndex from '@x-oasis/find-last-index'; +import ListGroupDimensions from './ListGroupDimensions'; + +class Inspector { + private _indexKeys: string[] = []; + // private _anchorRange: AnchorRange = {}; + private _owner: ListGroupDimensions; + private _inspectingTime: number = Date.now(); + private _inspectingTimes = 0; + private _heartBeatingIndexKeys: Array = []; + private _inspectingListener?: InspectingListener; + private _startInspectBatchinator: Batchinator; + private _handleChangeBatchinator: Batchinator; + private _updateAnchorKeysBatchinator: Batchinator; + private _isCollecting = false; + private _onChange?: OnIndexKeysChanged; + private _anchorKeys: Array = []; + + constructor(props: InspectorProps) { + const { onChange, owner } = props || {}; + // 主要用来巡检 + this._startInspectBatchinator = new Batchinator( + this.startInspection.bind(this), + 50 + ); + this._handleChangeBatchinator = new Batchinator( + this.handleChange.bind(this), + 50 + ); + this._updateAnchorKeysBatchinator = new Batchinator( + this.updateAnchorKeys.bind(this), + 50 + ); + + this._onChange = onChange; + this._owner = owner; + this.heartBeat = this.heartBeat.bind(this); + this.startInspection = this.startInspection.bind(this); + this.getAPI = this.getAPI.bind(this); + } + + get owner() { + return this._owner; + } + + get indexKeys() { + return this._indexKeys; + } + + push(key: string) { + const anchorKey = this.owner.getFinalAnchorKey(key); + const index = findLastIndex(this._anchorKeys, (v) => v === anchorKey); + + if (index !== -1) { + this._indexKeys.splice(index + 1, 0, key); + this._handleChangeBatchinator.schedule(); + } else { + this._indexKeys.push(key); + } + this._updateAnchorKeysBatchinator.schedule(); + + this._startInspectBatchinator.schedule(); + return () => { + this.remove(key); + }; + } + + handleChange() { + if (typeof this._onChange === 'function') + this._onChange({ + indexKeys: this._indexKeys, + }); + } + + remove(key: string) { + const index = this._indexKeys.findIndex((v) => v === key); + if (index !== -1) { + this._indexKeys.splice(index, 1); + this.updateAnchorKeys(); + this._handleChangeBatchinator.schedule(); + } + } + + findIndex(key: string) { + return this._indexKeys.findIndex((indexKey) => indexKey === key); + } + + addStartInspectingHandler(cb: InspectingListener) { + if (typeof cb === 'function') this._inspectingListener = cb; + } + + startInspection() { + const time = +Date.now(); + + if (typeof this._inspectingListener === 'function') { + this._inspectingTimes += 1; + this._heartBeatingIndexKeys = []; + this._inspectingListener.call(this, { + inspectingTimes: this._inspectingTimes, + inspectingTime: time, + heartBeat: this.heartBeat, + startInspection: this.startInspection, + }); + } + } + + startCollection() { + if (this._isCollecting) return; + // cancel on pending task first... + this._startInspectBatchinator.dispose({ + abort: true, + }); + this._heartBeatingIndexKeys = []; + this._isCollecting = true; + } + + terminateCollection() { + this._isCollecting = false; + this.heartBeatResolveChanged(); + } + + updateAnchorKeys() { + this._anchorKeys = this._indexKeys + .map((key) => this.owner.getFinalAnchorKey(key)) + .filter((v) => v != null); + + // this._anchorRange = this._indexKeys.reduce( + // (acc, cur, index) => { + // const anchorKey = this.owner.getFinalAnchorKey(cur); + // if (!anchorKey) return acc; + // if (acc[anchorKey]) { + // const endIndex = acc[anchorKey].endIndex; + // acc[anchorKey] = { + // ...acc[anchorKey], + // endIndex: endIndex + 1, + // }; + // } else { + // acc[anchorKey] = { + // startIndex: index, + // endIndex: index + 1, + // }; + // } + // return acc; + // }, + // {} + // ); + } + + heartBeatResolveChanged() { + const nextIndexKeys = this._heartBeatingIndexKeys.slice(); + + // 比如说,中间发生了顺序调整;自动检测确保 + if (!shallowArrayEqual(this._heartBeatingIndexKeys, this._indexKeys)) { + this._indexKeys = nextIndexKeys; + this.handleChange(); + this._updateAnchorKeysBatchinator.schedule(); + this._inspectingTime += 1; + } + } + + // register first,then inspecting + heartBeat(props: { listKey: string; inspectingTime: number }) { + const { listKey, inspectingTime } = props; + if (inspectingTime < this._inspectingTime) return; + this._heartBeatingIndexKeys.push(listKey); + } + + getAPI(): InspectingAPI { + return { + inspectingTimes: this._inspectingTimes, + inspectingTime: this._inspectingTime, + heartBeat: this.heartBeat, + startInspection: this.startInspection, + }; + } +} + +export default Inspector; diff --git a/model/group-dimensions/src/ListGroupDimensions.ts b/model/group-dimensions/src/ListGroupDimensions.ts new file mode 100644 index 00000000..150f6297 --- /dev/null +++ b/model/group-dimensions/src/ListGroupDimensions.ts @@ -0,0 +1,1101 @@ +import Batchinator from '@x-oasis/batchinator'; +import isClamped from '@x-oasis/is-clamped'; +import PrefixIntervalTree from '@x-oasis/prefix-interval-tree'; +import defaultBooleanValue from '@x-oasis/default-boolean-value'; +import { Dimension } from '@infinite-list/dimension'; +import { ItemMeta } from '@infinite-list/item-meta'; +import { ItemsDimensions } from '@infinite-list/items-dimensions'; +import { BaseImpl } from '@infinite-list/strategies'; +import { log } from '@infinite-list/utils'; +import { createStore } from './state'; + +import { ListDimensionsModel } from '@infinite-list/dimensions-model'; + +import { + ListGroupIndexInfo, + ListGroupDimensionsProps, + ListRangeResult, + ScrollMetrics, + KeyToOnEndReachedMap, + RegisteredListProps, + RegisteredDimensionProps, + DimensionsIndexRange, + GenericItemT, + ListGroupChildDimensions, +} from './types'; +import { KeysChangedType } from '@infinite-list/base-dimensions'; +import { OnEndReached } from '@infinite-list/viewable'; +import { ItemLayout, IndexToOffsetMap } from '@infinite-list/dimensions-model'; + +// import BaseImpl from './strategies/BaseImpl'; +import Inspector from './Inspector'; +// import { info } from './utils/logger'; +// import createStore from './state/createStore'; + +const info = log.info; + +// TODO: indexRange should be another intervalTree +/** + * ListGroupDimensions has two kinds of data model + * - normal list: group of same item. + * - singleton item: abstraction of specified item. + * + * ListGroup is just like a router. + */ +class ListGroupDimensions< + ItemT extends GenericItemT = GenericItemT +> extends BaseImpl { + private keyToListDimensionsMap = new Map< + string, + ListGroupChildDimensions + >(); + private _keyToOnEndReachedMap: KeyToOnEndReachedMap = new Map(); + private _itemsDimensions: ItemsDimensions; + private _onUpdateItemLayout?: Function; + private _onUpdateIntervalTree?: Function; + private _onItemsCountChangedBatchinator: Batchinator; + public recalculateDimensionsIntervalTreeBatchinator: Batchinator; + /** + * _flattenData could be considered as the final data model after transform + * 1. dimension + * 2. normal list + */ + private _flattenData: Array = []; + + private _recycleEnable: boolean; + + private _dimensionsIntervalTree: PrefixIntervalTree = new PrefixIntervalTree( + 100 + ); + + private _reflowItemsLength = 0; + private _dimensionsIndexRange: DimensionsIndexRange[] = []; + + private _inspector: Inspector; + + /** + * used with `getItemLayout`, on default if `getItemLayout` is provided, itemMeta's + * isApproximateLayout should be false if item layout is resolve from `getItemLayout`. + * + */ + private _isFixedLength: boolean; + + constructor(props: ListGroupDimensionsProps) { + super({ + recycleEnabled: true, + store: createStore(), + ...props, + }); + const { id, onUpdateItemLayout, onUpdateIntervalTree } = props; + + this._itemsDimensions = new ItemsDimensions({ + id, + }); + this._recycleEnable = defaultBooleanValue(props.recycleEnabled, true); + this._onUpdateIntervalTree = onUpdateIntervalTree; + this._onUpdateItemLayout = onUpdateItemLayout; + this._onItemsCountChangedBatchinator = new Batchinator( + this.onItemsCountChanged.bind(this), + 50 + ); + + this._isFixedLength = defaultBooleanValue(props.isFixedLength, true); + + this._inspector = new Inspector({ + owner: this, + onChange: this.onIndexKeysChanged.bind(this), + }); + + this.recalculateDimensionsIntervalTreeBatchinator = new Batchinator( + this.recalculateDimensionsIntervalTree.bind(this), + 50 + ); + } + + get inspector() { + return this._inspector; + } + + get indexKeys() { + return this._inspector.indexKeys; + } + + getDimension(key: string) { + return this.keyToListDimensionsMap.get(key); + } + + setDimension(key: string, dimension: ListGroupChildDimensions) { + return this.keyToListDimensionsMap.set(key, dimension); + } + + deleteDimension(key: string) { + return this.keyToListDimensionsMap.delete(key); + } + + get dimensionsIndexRange() { + return this._dimensionsIndexRange; + } + + createIntervalTree() { + const options = {} as { + onUpdateItemLayout?: Function; + onUpdateIntervalTree?: Function; + }; + if (typeof this._onUpdateItemLayout === 'function') + options.onUpdateItemLayout = this._onUpdateItemLayout; + if (typeof this._onUpdateIntervalTree === 'function') + options.onUpdateIntervalTree = this._onUpdateIntervalTree; + return new PrefixIntervalTree(100, options); + } + + getIntervalTree() { + return this._dimensionsIntervalTree; + } + + resetIntervalTree() { + this._dimensionsIntervalTree = this.createIntervalTree(); + return this._dimensionsIntervalTree; + } + + getTotalLength() { + return this._dimensionsIntervalTree.getHeap()[1]; + } + + getDataLength() { + let len = 0; + for (let index = 0; index < this.indexKeys.length; index++) { + const key = this.indexKeys[index]; + const dimensions = this.getDimension(key); + len += dimensions?.length || 0; + } + return len; + } + + getFinalIndexItemMeta(index: number) { + const info = this.getFinalIndexIndexInfo(index); + if (info) { + const dimension = info.dimensions; + return dimension.getIndexItemMeta(info.index); + } + return null; + } + + getFinalItemKey(item: any) { + const len = this.indexKeys.length; + for (let index = 0; index < len; index++) { + const key = this.indexKeys[index]; + const dimension = this.getDimension(key); + const itemKey = dimension?.getFinalItemKey(item); + if (itemKey) return itemKey; + } + return ''; + } + + getFinalItemMeta(item: any) { + const len = this.indexKeys.length; + for (let index = 0; index < len; index++) { + const key = this.indexKeys[index]; + const dimension = this.getDimension(key); + const itemMeta = dimension?.getFinalItemMeta(item); + if (itemMeta) return itemMeta; + } + return null; + } + + getFinalIndexKeyOffset(index: number, exclusive?: boolean) { + const listOffset = exclusive ? 0 : this.getContainerOffset(); + + if (typeof index === 'number') { + const indexInfo = this.getFinalIndexIndexInfo(index); + if (indexInfo) { + const { dimensions, index: _index } = indexInfo; + // _offsetInListGroup should be included. so exclusive should be false on default. + return listOffset + dimensions.getIndexKeyOffset(_index); + } + } + return 0; + } + + getFinalIndexKeyBottomOffset(index: number, exclusive?: boolean) { + const listOffset = exclusive ? 0 : this.getContainerOffset(); + + if (typeof index === 'number') { + const indexInfo = this.getFinalIndexIndexInfo(index); + if (indexInfo) { + const { dimensions } = indexInfo; + const height = dimensions.getTotalLength(); + // _offsetInListGroup should be included. so exclusive should be false on default. + return ( + listOffset + + dimensions.getContainerOffset() + + (typeof height === 'number' ? height : 0) + ); + } + } + return 0; + } + + getFinalIndexRangeOffsetMap( + startIndex: number, + endIndex: number, + exclusive?: boolean + ) { + const indexToOffsetMap: IndexToOffsetMap = {}; + let startOffset = this.getFinalIndexKeyOffset(startIndex, exclusive); + for (let index = startIndex; index <= endIndex; index++) { + const itemMeta = this.getFinalIndexItemMeta(index); + if (!itemMeta) continue; + + indexToOffsetMap[index] = startOffset; + + if (itemMeta?.isApproximateLayout) { + indexToOffsetMap[index] = this.itemOffsetBeforeLayoutReady; + } else { + indexToOffsetMap[index] = startOffset; + } + startOffset += itemMeta?.getFinalItemLength(); + } + return indexToOffsetMap; + } + + getFinalIndexItemLength(index: number) { + const itemMeta = this.getFinalIndexItemMeta(index); + if (itemMeta) return itemMeta.getItemLength(); + return 0; + } + + getReflowItemsLength() { + return this._reflowItemsLength; + } + + override hasUnLayoutItems() { + const len = this.indexKeys.length; + for (let index = 0; index < len; index++) { + const key = this.indexKeys[index]; + const dimensions = this.getDimension(key); + if (dimensions && dimensions?.hasUnLayoutItems()) { + return true; + } + } + + return false; + } + + calculateReflowItemsLength() { + this._reflowItemsLength = this.indexKeys.reduce((acc, cur) => { + const dimensions = this.getDimension(cur); + if (dimensions) { + return acc + dimensions.getReflowItemsLength(); + } + return acc; + }, 0); + } + + getKeyIndex(key: string, listKey: string) { + const listIndex = this.indexKeys.findIndex( + (indexKey) => indexKey === listKey + ); + + if (listIndex !== -1) { + const listDimensions = this.getDimension(listKey); + if (listDimensions) { + return listDimensions instanceof ListDimensionsModel + ? listDimensions.getKeyIndex(key) + : 0; + } + } + + return -1; + } + + getIndexKey(index: number, listKey: string) { + const listIndex = this.indexKeys.findIndex( + (indexKey) => indexKey === listKey + ); + + if (listIndex !== -1) { + const dimensions = this.getDimension(listKey); + if (dimensions instanceof ListDimensionsModel) + return dimensions.getIndexKey(index); + else if (dimensions instanceof Dimension) return dimensions.getKey(); + } + + return null; + } + + getFinalIndexIndexInfo(idx: number): ListGroupIndexInfo | null { + const len = this._dimensionsIndexRange.length; + for (let index = 0; index < len; index++) { + const info = this._dimensionsIndexRange[index]; + const { startIndex, endIndex, dimensions, startIndexInRecycler } = info; + + if (startIndex <= idx && idx < endIndex) + return { + dimensions, + index: idx - startIndex, + indexInGroup: idx, + indexInRecycler: startIndexInRecycler + idx - startIndex, + }; + } + + return null; + } + + getFinalKeyIndexInfo( + itemKey: string, + listKey: string + ): ListGroupIndexInfo | null { + const dimensions = this.getDimension(listKey); + if (dimensions) { + const info = this.dimensionsIndexRange.find( + (d) => d.dimensions === dimensions + ); + if (info) { + const { startIndex, dimensions, startIndexInRecycler } = info; + const indexInDimensions = dimensions.getKeyIndex(itemKey); + return { + dimensions, + index: indexInDimensions, + indexInRecycler: startIndexInRecycler + indexInDimensions, + indexInGroup: startIndex + indexInDimensions, + }; + } + } + + return null; + } + + /** + * + * @param key: string, itemKey + * @param listKey: string, the container key + * @returns number, + * + * TODO: basic item may have error??? + */ + getFinalIndex(key: string, listKey: string) { + let indexInList = 0; + const dimensions = this.getDimension(listKey); + if (!dimensions) return -1; + if (dimensions instanceof ListDimensionsModel) { + indexInList = dimensions.getKeyIndex(key); + if (indexInList === -1) return -1; + } else if (dimensions instanceof Dimension) { + indexInList = 0; + } + + const dimensionsStartIndex = this.getDimensionStartIndex(listKey); + + if (dimensionsStartIndex !== -1) return dimensionsStartIndex + indexInList; + return -1; + } + + /** + * + * @param listKey dimension key; It could be list key or singleton item key + * @returns + */ + getDimensionStartIndex(listKey: string) { + const _dimensions = this.getDimension(listKey); + if (_dimensions) { + const info = this._dimensionsIndexRange.find( + ({ dimensions }) => dimensions === _dimensions + ); + if (info) return info.startIndex; + } + + return -1; + } + + /** + * + * @param listKey dimension key; It could be list key or singleton item key + * @returns + */ + getDimensionStartIndexInRecycler(listKey: string) { + const _dimensions = this.getDimension(listKey); + if (_dimensions) { + const info = this._dimensionsIndexRange.find( + ({ dimensions }) => dimensions === _dimensions + ); + return info?.startIndex; + } + + return 0; + } + + removeListDimensions(listKey: string) { + const index = this.indexKeys.findIndex((indexKey) => indexKey === listKey); + if (index !== -1) { + this._dimensionsIntervalTree.remove(index); + this.deleteDimension(listKey); + this.inspector.remove(listKey); + this.onItemsCountChanged(); + } + } + + getFinalAnchorKey(dimensionsKey: string) { + const dimensions = this.getDimension(dimensionsKey); + if (dimensions) return dimensions.anchorKey; + return null; + } + + /** + * + * @param listKey add a list listener + * @param listDimensionsProps to initialize ListDimensions instance + * @returns listener remover + */ + registerList( + listKey: string, + listDimensionsProps: RegisteredListProps + ): { + dimensions: ListDimensionsModel; + remover: () => void; + } { + if (this.getDimension(listKey)) + return { + dimensions: this.getDimension(listKey) as ListDimensionsModel, + remover: () => { + this.removeListDimensions(listKey); + }, + }; + // should update indexKeys first !!! + const dimensions = new ListDimensionsModel({ + id: listKey, + // @ts-ignore [TODO] + container: this, + horizontal: this.getHorizontal(), + isFixedLength: this._isFixedLength, + manuallyApplyInitialData: true, + ...listDimensionsProps, + recycleEnabled: this._recycleEnable, + }); + this.addBuffer(dimensions.recyclerType); + + this.setDimension(listKey, dimensions); + this._inspector.push(listKey); + + dimensions.applyInitialData(); + + let onEndReachedCleaner: Function; + + if (listDimensionsProps.onEndReached) { + onEndReachedCleaner = this.addOnEndReached( + listDimensionsProps.onEndReached + ); + this._keyToOnEndReachedMap.set(listKey, listDimensionsProps.onEndReached); + } + + // for performance boost. only reflow data when less than initial number; + if (this.getData().length < this.initialNumToRender) { + this.onItemsCountChanged(); + } else { + this._onItemsCountChangedBatchinator.schedule(); + } + + return { + dimensions, + remover: () => { + this.removeListDimensions(listKey); + if (onEndReachedCleaner) onEndReachedCleaner(); + }, + }; + } + + onIndexKeysChanged() { + this.onItemsCountChanged(); + } + + /** + * should be run immediately... + * + * To cache dimension index range, startIndex included, endIndex exclusive. + * just like [].slice(startIndex, endIndex) + */ + calculateDimensionsIndexRange() { + let startIndex = 0; + const rangeMap: { + [key: string]: number; + } = {}; + this._dimensionsIndexRange = this.indexKeys.reduce< + DimensionsIndexRange[] + >((acc, key) => { + const dimensions = this.getDimension(key); + if (!dimensions) return acc; + const recyclerType = dimensions.recyclerType; + if (rangeMap[recyclerType] == null) rangeMap[recyclerType] = 0; + + const endIndex = startIndex + dimensions.length; + const startIndexInRecycler = rangeMap[recyclerType]; + rangeMap[recyclerType] = startIndexInRecycler + dimensions.length; + acc.push({ + startIndex, + endIndex, + dimensions, + startIndexInRecycler, + endIndexInRecycler: rangeMap[recyclerType], + }); + startIndex = endIndex; + return acc; + }, []); + } + + /** + * Important!!! : data change should be reflect immediately. but resolve state could + * be deferred. So this.updateScrollMetrics actually is a batch operation .. + */ + onItemsCountChanged() { + this.reflowFlattenData(); + this.calculateDimensionsIndexRange(); + this.calculateReflowItemsLength(); + this.updateChildDimensionsOffsetInContainer(); + this.updateScrollMetrics(); + } + + /** + * 当item layout发生变化以后,这个时候要将子 dimension的相对高度重新计算一下 + */ + updateChildDimensionsOffsetInContainer() { + let len = 0; + this.indexKeys.forEach((key) => { + const dimension = this.getDimension(key); + if (dimension) { + dimension.offsetInListGroup = len; + const total = dimension.getTotalLength(); + if (typeof total === 'number') len += total; + } + }); + } + + onDataSourceChanged() { + this.updateScrollMetrics(this._scrollMetrics); + } + + onItemLayoutChanged() { + this.recalculateDimensionsIntervalTreeBatchinator.schedule(); + } + + recalculateDimensionsIntervalTree() { + this.indexKeys.forEach((key, index) => { + const dimensions = this.getDimension(key); + if (dimensions) { + const len = dimensions.getTotalLength(); + if (typeof len === 'number') + this._dimensionsIntervalTree.set(index, len); + } + }); + + this.updateChildDimensionsOffsetInContainer(); + this.calculateReflowItemsLength(); + this.updateScrollMetrics(); + } + + removeItem(key: string) { + const index = this._inspector.findIndex(key); + if (index !== -1) { + this._dimensionsIntervalTree.remove(index); + this.deleteDimension(key); + this._inspector.remove(key); + this.onItemsCountChanged(); + } + } + + registerItem( + key: string, + dimensionProps: RegisteredDimensionProps = {} + ): { + dimensions: Dimension; + remover: () => void; + } { + if (this.getDimension(key)) + return { + dimensions: this.getDimension(key) as Dimension, + remover: () => { + this.removeItem(key); + }, + }; + const dimensions = new Dimension({ + id: key, + container: this, + horizontal: this.horizontal, + canIUseRIC: this.canIUseRIC, + isFixedLength: this._isFixedLength, + ...dimensionProps, + recycleEnabled: this._recycleEnable, + }); + this.setDimension(key, dimensions); + this.addBuffer(dimensions.recyclerType); + this._inspector.push(key); + // for performance boost. only reflow data when less than initial number; + if (this.getData().length < this.initialNumToRender) { + this.onItemsCountChanged(); + } else { + this._onItemsCountChangedBatchinator.schedule(); + } + return { + dimensions, + remover: () => { + this.removeItem(key); + }, + }; + } + + getData() { + return this._flattenData; + } + + reflowFlattenData() { + this._flattenData = this.indexKeys.reduce((acc, key) => { + const dimension = this.getDimension(key); + if (dimension) { + acc = ([] as ItemT[]).concat(acc, dimension.getData()); + } + return acc; + }, []); + return this._flattenData; + } + + /** + * + * @param listKey + * @param data + * + * for child list, the corresponding setData method will not trigger onItemsCountChanged + * So setListData comes + */ + setListData(listKey: string, data: Array) { + const listDimensions = this.getDimension(listKey); + if (listDimensions) { + const changedType = ( + listDimensions as ListDimensionsModel + ).setData(data); + + if ( + [ + KeysChangedType.Add, + KeysChangedType.Remove, + KeysChangedType.Append, + ].indexOf(changedType) !== -1 + ) { + // 这个得跟removeItem对应都得做个延迟,不然的话会存在一个可能性,比如替换整个list的数据, + // remove callback一般会慢,如果不做延迟的话,你会发现data可能存在已经unmount的数据 + this.onItemsCountChanged(); + // this._onItemsCountChangedBatchinator.schedule(); + } else if (changedType === KeysChangedType.Reorder) { + this.reflowFlattenData(); + // 之所以,不能够用缓存;因为现在的判断Reorder只是看key;这个key对应的item其实 + // 并没有看;所以它不是纯粹的shuffle;这个时候item可能发生了变化,所以是不能够用 + // 缓存的。艸,描述错了。。它其实是因为打乱顺序以后,可能indexRange会发生变化; + this.updateScrollMetrics(this._scrollMetrics, { + useCache: false, + }); + } + } + } + + setOnEndReached(listKey: string, onEndReached: OnEndReached) { + const listDimensions = this.getDimension(listKey); + if (listDimensions) { + const _handler = this._keyToOnEndReachedMap.get(listKey); + if (_handler) this.removeOnEndReached(_handler); + this.addOnEndReached(onEndReached); + } + } + + getListData(listKey: string) { + const listDimensions = this.getDimension(listKey); + if (listDimensions) + return (listDimensions as ListDimensionsModel).getData(); + return []; + } + + getItemKeyDimension(itemKey: string) { + const len = this.indexKeys.length; + for (let index = 0; index < len; index++) { + const key = this.indexKeys[index]; + const dimension = this.getDimension(key); + // @ts-ignore + if (dimension.hasKey(itemKey)) { + return dimension; + } + } + return null; + } + + getFinalKeyItemOffset(itemKey: string, exclusive?: boolean) { + const dimension = this.getItemKeyDimension(itemKey); + if (dimension) { + const containerOffset = exclusive ? 0 : this.getContainerOffset(); + return ( + (dimension as ListDimensionsModel).getKeyItemOffset(itemKey) + + containerOffset + ); + } + return 0; + } + + getKeyItemOffset(key: string, listKey: string, exclusive?: boolean) { + const containerOffset = exclusive ? 0 : this.getContainerOffset(); + const listDimensions = this.getDimension(listKey); + if (listDimensions) { + return ( + (listDimensions as ListDimensionsModel).getKeyItemOffset(key) + + containerOffset + ); + } + return null; + } + + getFinalKeyMeta(itemKey: string) { + const dimension = this.getItemKeyDimension(itemKey); + if (dimension instanceof ListDimensionsModel) + return dimension.getKeyMeta(itemKey); + else if (dimension instanceof Dimension) return dimension.getMeta(); + return null; + } + + getKeyMeta(key: string, listKey: string) { + const dimensions = this.getDimension(listKey); + if (dimensions instanceof ListDimensionsModel) + return dimensions.getKeyMeta(key); + else if (dimensions instanceof Dimension) return dimensions.getMeta(); + return null; + } + + setFinalKeyMeta(itemKey: string, itemMeta: ItemMeta) { + const dimensions = this.getItemKeyDimension(itemKey); + if (dimensions instanceof ListDimensionsModel) + return dimensions.setKeyMeta(itemKey, itemMeta); + else if (dimensions instanceof Dimension) + return dimensions.setMeta(itemMeta); + return null; + } + + setKeyMeta(key: string, listKey: string, itemMeta: ItemMeta) { + const dimensions = this.getDimension(listKey); + if (dimensions instanceof ListDimensionsModel) + return dimensions.setKeyMeta(key, itemMeta); + else if (dimensions instanceof Dimension) + return dimensions.setMeta(itemMeta); + return null; + } + + ensureKeyMeta(key: string, listKey: string) { + const dimensions = this.getDimension(listKey); + if (dimensions instanceof ListDimensionsModel) + return dimensions.ensureKeyMeta(key); + else if (dimensions instanceof Dimension) return dimensions.ensureKeyMeta(); + return null; + } + + getKeyItemLayout(key: string, listKey: string) { + const listDimensions = this.getDimension(listKey); + if (listDimensions) { + return (listDimensions as ListDimensionsModel).getKeyItemLayout( + key + ); + } + + return null; + } + + getFinalKeyItemLayout(itemKey: string) { + const dimensions = this.getItemKeyDimension(itemKey); + if (dimensions) { + return (dimensions as ListDimensionsModel).getKeyItemLayout( + itemKey + ); + } + return null; + } + + getIndexItemLayout(index: number, listKey: string) { + const key = this.getIndexKey(index, listKey); + if (key) return this.getKeyItemLayout(key, listKey); + return null; + } + + setIndexItemLayout(index: number, listKey: string, layout: ItemLayout) { + const key = this.getIndexKey(index, listKey); + if (key) this.setKeyItemLayout(key, listKey, layout); + } + + setFinalKeyItemLayout(itemKey: string, layout: ItemLayout | number) { + const dimensions = this.getItemKeyDimension(itemKey); + if (dimensions) { + if (dimensions instanceof ListDimensionsModel) { + return dimensions.setKeyItemLayout(itemKey, layout); + } else if (dimensions instanceof Dimension) { + return dimensions.setItemLayout(layout); + } + } + return false; + } + + setKeyItemLayout(key: string, listKey: string, layout: ItemLayout | number) { + const dimensions = this.getDimension(listKey); + if (dimensions) { + if (dimensions instanceof ListDimensionsModel) { + dimensions.setKeyItemLayout(key, layout); + } else if (dimensions instanceof Dimension) { + dimensions.setItemLayout(layout); + } + } + } + + static createPositionToken() { + return { + dimensionKey: '', + index: -1, + }; + } + + findPosition(finalIndex: number) { + const len = this.indexKeys.length; + let startIndex = 0; + const positionToken = ListGroupDimensions.createPositionToken(); + + for (let index = 0; index < len; index++) { + const key = this.indexKeys[index]; + + const dimension = this.getDimension(key); + const min = startIndex; + const max = + startIndex + + (dimension instanceof Dimension + ? 0 + : Math.max((dimension as ListDimensionsModel).length - 1, 0)); + + if (isClamped(min, finalIndex, max)) { + positionToken.dimensionKey = key; + positionToken.index = finalIndex - startIndex; + + return positionToken; + } + startIndex = max + 1; + } + + return -1; + } + + /** + * + * @param finalStartIndex + * @param finalEndIndex + * @returns + */ + findListRange(finalStartIndex: number, finalEndIndex: number) { + const startPosition = this.findPosition(finalStartIndex); + const endPosition = this.findPosition(finalEndIndex); + + if (startPosition === -1 || endPosition === -1) return []; + + const startDimensionIndex = this.indexKeys.findIndex( + (key) => key === startPosition.dimensionKey + ); + const endDimensionIndex = this.indexKeys.findIndex( + (key) => key === endPosition.dimensionKey + ); + const result: ListRangeResult = []; + + for (let index = startDimensionIndex; index <= endDimensionIndex; index++) { + const currentValues: ItemMeta[] = []; + const range = { + startIndex: -1, + endIndex: -1, + }; + const dimensionKey = this.indexKeys[index]; + const dimension = this.getDimension(dimensionKey); + + if (dimension instanceof Dimension) { + currentValues.push(dimension.getMeta()); + range.startIndex = 0; + range.endIndex = 0; + result.push({ + listKey: dimensionKey, + isDimension: true, + }); + continue; + } + + if (!dimension) continue; + const len = dimension.length; + + // the same list + if (startDimensionIndex === endDimensionIndex) { + range.startIndex = startPosition.index; + range.endIndex = endPosition.index; + } else if (index === startDimensionIndex) { + // the begin + const { index: startIndex } = startPosition; + range.startIndex = startIndex; + range.endIndex = len - 1; + } else if (index === endDimensionIndex) { + // the tail + const { index: endIndex } = endPosition; + range.startIndex = 0; + range.endIndex = endIndex; + } else { + // middle + range.startIndex = 0; + range.endIndex = len - 1; + } + + for (let idx = range.startIndex; idx < range.endIndex + 1; idx++) { + const meta = dimension?.getIndexItemMeta(idx); + if (meta) currentValues.push(meta); + } + + result.push({ + listKey: dimensionKey, + isDimension: false, + value: { + ...range, + data: this.getListData(dimensionKey).slice(0, range.endIndex + 1), + }, + }); + } + + return result; + } + + /** + * + * @param minOffset + * @param maxOffset + * @returns + * + * used in state reducer. + */ + computeIndexRange(minOffset: number, maxOffset: number) { + const dimensionResult = this._dimensionsIntervalTree.computeRange( + minOffset, + maxOffset + ); + + const { startIndex, endIndex: _endIndex } = dimensionResult; + + info( + 'computeIndexRange ', + startIndex, + _endIndex, + minOffset, + maxOffset, + this._dimensionsIntervalTree.getHeap()[1], + this._dimensionsIntervalTree.getMaxUsefulLength() + ); + + const endIndex = _endIndex - 1; + + if (startIndex === endIndex) { + const dimensionKey = this.indexKeys[startIndex]; + const dimensionsStartIndex = this.getDimensionStartIndex(dimensionKey); + + const dimensions = this.getDimension(dimensionKey); + if (dimensions instanceof Dimension) { + return { + startIndex: dimensionsStartIndex, + endIndex: dimensionsStartIndex + 1, + }; + } else if (dimensions instanceof ListDimensionsModel) { + const startOffset = this._dimensionsIntervalTree.sumUntil(startIndex); + const { startIndex: innerStartIndex, endIndex: innerEndIndex } = + dimensions.computeIndexRange( + minOffset - startOffset, + maxOffset - startOffset + ); + + return { + startIndex: dimensionsStartIndex + innerStartIndex, + endIndex: dimensionsStartIndex + innerEndIndex, + }; + } + return { + startIndex: -1, + endIndex: -1, + }; + } + + const _nextStartIndex = Math.max(0, startIndex); + const startDimensionsKey = this.indexKeys[_nextStartIndex]; + const startDimensions = this.getDimension(startDimensionsKey); + + let nextStartIndex = startIndex; + + // if it is a item... + if (startDimensions instanceof Dimension) { + nextStartIndex = this.getDimensionStartIndex(startDimensionsKey); + } else if ( + /** + * if it is a List... + */ + startDimensions instanceof ListDimensionsModel + ) { + const startOffset = + this._dimensionsIntervalTree.sumUntil(_nextStartIndex); + const dimensionsStartIndex = + this.getDimensionStartIndex(startDimensionsKey); + + const index = startDimensions.intervalTree.greatestLowerBound( + minOffset - startOffset + ); + nextStartIndex = dimensionsStartIndex + index; + } + + const _nextEndIndex = Math.max(0, endIndex); + const endDimensionsKey = this.indexKeys[_nextEndIndex]; + const endDimensions = this.getDimension(endDimensionsKey); + + let nextEndIndex = startIndex; + + if (endDimensions instanceof Dimension) { + nextEndIndex = this.getDimensionStartIndex(endDimensionsKey) + 1; + } else if (endDimensions instanceof ListDimensionsModel) { + const startOffset = this._dimensionsIntervalTree.sumUntil(_nextEndIndex); + const dimensionsStartIndex = + this.getDimensionStartIndex(endDimensionsKey); + const index = endDimensions.intervalTree.leastStrictUpperBound( + maxOffset - startOffset + ); + nextEndIndex = dimensionsStartIndex + index; + } + + info('computedIndexRange ', nextStartIndex, nextEndIndex); + + return { + startIndex: nextStartIndex, + endIndex: nextEndIndex, + }; + } + + computeIndexRangeMeta(props: { + startIndex: number; + endIndex: number; + }): ListRangeResult { + const { startIndex, endIndex } = props; + return this.findListRange(startIndex, endIndex); + } + + onUpdateDimensionItemsMetaChange( + itemsMeta: Array, + scrollMetrics: ScrollMetrics + ) { + this._configTuple.getViewabilityHelpers().forEach((helper) => { + helper.onUpdateItemsMeta(itemsMeta, scrollMetrics); + }); + } + + updateScrollMetrics( + _scrollMetrics?: ScrollMetrics, + _options?: { + useCache?: boolean; + flush?: boolean; + } + ) { + this._scrollMetrics = _scrollMetrics || this._scrollMetrics; + this._updateScrollMetrics(this._scrollMetrics, _options); + } +} + +export default ListGroupDimensions; diff --git a/model/group-dimensions/src/__test__/ListGroupDimensions.test.ts b/model/group-dimensions/src/__test__/ListGroupDimensions.test.ts new file mode 100644 index 00000000..89517937 --- /dev/null +++ b/model/group-dimensions/src/__test__/ListGroupDimensions.test.ts @@ -0,0 +1,1272 @@ +import ListGroupDimensions from '../ListGroupDimensions'; +import Batchinator from '@x-oasis/batchinator'; +import { defaultKeyExtractor } from '@infinite-list/utils'; +import { describe, expect, it, test, vi, afterEach } from 'vitest'; +import { DEFAULT_DIMENSION_ITEM_APPROXIMATE_LENGTH } from '../common'; +import Inspector from '../Inspector'; + +vi.useFakeTimers(); + +const buildData = (count: number) => + new Array(count).fill(1).map((v, index) => ({ + key: index, + })); + +afterEach(() => { + vi.clearAllMocks(); +}); + +vi.spyOn(Batchinator.prototype, 'schedule').mockImplementation(function ( + ...args +) { + // eslint-disable-next-line prefer-spread + this._callback.apply(this, args); +}); + +const startInspection = Inspector.prototype.startInspection; +// https://jestjs.io/docs/es6-class-mocks#mocking-a-specific-method-of-a-class +vi.spyOn(Inspector.prototype, 'startInspection').mockImplementation(function ( + ...args +) { + startInspection.call(this); +}); + +testSuite(true); + +function testSuite(isFixedLength: boolean) { + describe('basic', () => { + // beforeEach(() => { + // vi.spyOn(global, 'requestIdleCallback').mockImplementation(cb => cb()); + // }); + // https://jestjs.io/docs/es6-class-mocks#mocking-a-specific-method-of-a-class + it('constructor', () => { + const listGroupDimensions = new ListGroupDimensions({ + id: 'list_group', + isFixedLength, + maxToRenderPerBatch: 7, + windowSize: 9, + initialNumToRender: 20, + onEndReachedThreshold: 300, + horizontal: true, + getContainerLayout: () => ({ + x: 0, + y: 2000, + width: 375, + height: 2000, + }), + }); + + expect(listGroupDimensions.maxToRenderPerBatch).toBe(7); + expect(listGroupDimensions.windowSize).toBe(9); + expect(listGroupDimensions.initialNumToRender).toBe(20); + expect(listGroupDimensions.onEndReachedThreshold).toBe(300); + expect(listGroupDimensions.horizontal).toBe(true); + }); + + it('register list and verify indexKeys (add, remove, update)', () => { + const listGroupDimensions = new ListGroupDimensions({ + isFixedLength, + id: 'list_group', + }); + + listGroupDimensions.registerItem('banner'); + listGroupDimensions.registerList('list_1', { + data: buildData(10), + keyExtractor: defaultKeyExtractor, + }); + const { remover: removeList2 } = listGroupDimensions.registerList( + 'list_2', + { + data: buildData(5), + keyExtractor: defaultKeyExtractor, + } + ); + listGroupDimensions.registerList('list_3', { + data: buildData(13), + keyExtractor: defaultKeyExtractor, + }); + const { remover: removeBanner2 } = + listGroupDimensions.registerItem('banner2'); + listGroupDimensions.registerList('list_4', { + data: buildData(20), + keyExtractor: defaultKeyExtractor, + }); + + expect(listGroupDimensions.indexKeys).toEqual([ + 'banner', + 'list_1', + 'list_2', + 'list_3', + 'banner2', + 'list_4', + ]); + + removeList2(); + + expect(listGroupDimensions.indexKeys).toEqual([ + 'banner', + 'list_1', + 'list_3', + 'banner2', + 'list_4', + ]); + + removeBanner2(); + expect(listGroupDimensions.indexKeys).toEqual([ + 'banner', + 'list_1', + 'list_3', + 'list_4', + ]); + }); + + it('getIndexKey', () => { + const listGroupDimensions = new ListGroupDimensions({ + isFixedLength, + id: 'list_group', + }); + listGroupDimensions.registerItem('banner'); + listGroupDimensions.registerList('list_1', { + data: buildData(10), + keyExtractor: defaultKeyExtractor, + }); + listGroupDimensions.registerList('list_2', { + data: buildData(5), + keyExtractor: defaultKeyExtractor, + }); + listGroupDimensions.registerList('list_3', { + data: buildData(13), + keyExtractor: defaultKeyExtractor, + }); + listGroupDimensions.registerItem('banner2'); + listGroupDimensions.registerList('list_4', { + data: buildData(20), + keyExtractor: defaultKeyExtractor, + }); + + expect(listGroupDimensions.getIndexKey(0, 'banner')).toBe('banner'); + expect(listGroupDimensions.getIndexKey(1, 'banner')).toBe('banner'); + expect(listGroupDimensions.getIndexKey(2, 'list_2')).toBe('2'); + }); + + it('getKeyIndex', () => { + const listGroupDimensions = new ListGroupDimensions({ + isFixedLength, + id: 'list_group', + }); + listGroupDimensions.registerItem('banner'); + listGroupDimensions.registerList('list_1', { + data: buildData(10), + keyExtractor: defaultKeyExtractor, + }); + listGroupDimensions.registerList('list_2', { + data: buildData(5), + keyExtractor: defaultKeyExtractor, + }); + listGroupDimensions.registerList('list_3', { + data: buildData(13), + keyExtractor: defaultKeyExtractor, + }); + listGroupDimensions.registerItem('banner2'); + listGroupDimensions.registerList('list_4', { + data: buildData(20), + keyExtractor: defaultKeyExtractor, + }); + + expect(listGroupDimensions.getKeyIndex('banner', 'banner')).toBe(0); + expect(listGroupDimensions.getKeyIndex('1', 'list_1')).toBe(1); + expect(listGroupDimensions.getKeyIndex('3', 'list_2')).toBe(3); + }); + + it('getFinalIndex', () => { + const listGroupDimensions = new ListGroupDimensions({ + isFixedLength, + id: 'list_group', + }); + const { remover: removeBanner } = + listGroupDimensions.registerItem('banner'); + listGroupDimensions.registerList('list_1', { + data: buildData(10), + keyExtractor: defaultKeyExtractor, + }); + listGroupDimensions.registerList('list_2', { + data: buildData(5), + keyExtractor: defaultKeyExtractor, + }); + listGroupDimensions.registerList('list_3', { + data: buildData(13), + keyExtractor: defaultKeyExtractor, + }); + listGroupDimensions.registerItem('banner2'); + listGroupDimensions.registerList('list_4', { + data: buildData(20), + keyExtractor: defaultKeyExtractor, + }); + + expect(listGroupDimensions.getFinalIndex('banner', 'banner')).toBe(0); + expect(listGroupDimensions.getFinalIndex('1', 'list_1')).toBe(2); + expect(listGroupDimensions.getFinalIndex('3', 'list_2')).toBe(14); + expect(listGroupDimensions.getFinalIndex('7', 'list_2')).toBe(-1); + expect(listGroupDimensions.getFinalIndex('11', 'list_3')).toBe(27); + expect(listGroupDimensions.getFinalIndex('banner2', 'banner2')).toBe(29); + expect(listGroupDimensions.getFinalIndex('11', 'list_4')).toBe(41); + + removeBanner(); + expect(listGroupDimensions.getFinalIndex('banner', 'banner')).toBe(-1); + expect(listGroupDimensions.getFinalIndex('1', 'list_1')).toBe(1); + expect(listGroupDimensions.getFinalIndex('3', 'list_2')).toBe(13); + expect(listGroupDimensions.getFinalIndex('7', 'list_2')).toBe(-1); + expect(listGroupDimensions.getFinalIndex('11', 'list_3')).toBe(26); + expect(listGroupDimensions.getFinalIndex('banner2', 'banner2')).toBe(28); + expect(listGroupDimensions.getFinalIndex('11', 'list_4')).toBe(40); + }); + + it('findPosition', () => { + const listGroupDimensions = new ListGroupDimensions({ + isFixedLength, + id: 'list_group', + }); + + const { remover: removeBanner } = + listGroupDimensions.registerItem('banner'); + listGroupDimensions.registerList('list_1', { + data: buildData(10), + keyExtractor: defaultKeyExtractor, + }); + listGroupDimensions.registerList('list_2', { + data: buildData(5), + keyExtractor: defaultKeyExtractor, + }); + const { remover: removeList3 } = listGroupDimensions.registerList( + 'list_3', + { + data: buildData(13), + keyExtractor: defaultKeyExtractor, + } + ); + listGroupDimensions.registerItem('banner2'); + listGroupDimensions.registerList('list_4', { + data: buildData(20), + keyExtractor: defaultKeyExtractor, + }); + + expect(listGroupDimensions.findPosition(0)).toEqual({ + index: 0, + dimensionKey: 'banner', + }); + expect(listGroupDimensions.findPosition(1)).toEqual({ + index: 0, + dimensionKey: 'list_1', + }); + expect(listGroupDimensions.findPosition(10)).toEqual({ + index: 9, + dimensionKey: 'list_1', + }); + expect(listGroupDimensions.findPosition(11)).toEqual({ + index: 0, + dimensionKey: 'list_2', + }); + expect(listGroupDimensions.findPosition(15)).toEqual({ + index: 4, + dimensionKey: 'list_2', + }); + expect(listGroupDimensions.findPosition(16)).toEqual({ + index: 0, + dimensionKey: 'list_3', + }); + expect(listGroupDimensions.findPosition(28)).toEqual({ + index: 12, + dimensionKey: 'list_3', + }); + expect(listGroupDimensions.findPosition(29)).toEqual({ + index: 0, + dimensionKey: 'banner2', + }); + expect(listGroupDimensions.findPosition(30)).toEqual({ + index: 0, + dimensionKey: 'list_4', + }); + expect(listGroupDimensions.findPosition(49)).toEqual({ + index: 19, + dimensionKey: 'list_4', + }); + + removeBanner(); + expect(listGroupDimensions.findPosition(0)).toEqual({ + index: 0, + dimensionKey: 'list_1', + }); + expect(listGroupDimensions.findPosition(9)).toEqual({ + index: 9, + dimensionKey: 'list_1', + }); + expect(listGroupDimensions.findPosition(10)).toEqual({ + index: 0, + dimensionKey: 'list_2', + }); + expect(listGroupDimensions.findPosition(14)).toEqual({ + index: 4, + dimensionKey: 'list_2', + }); + expect(listGroupDimensions.findPosition(15)).toEqual({ + index: 0, + dimensionKey: 'list_3', + }); + expect(listGroupDimensions.findPosition(27)).toEqual({ + index: 12, + dimensionKey: 'list_3', + }); + expect(listGroupDimensions.findPosition(28)).toEqual({ + index: 0, + dimensionKey: 'banner2', + }); + expect(listGroupDimensions.findPosition(29)).toEqual({ + index: 0, + dimensionKey: 'list_4', + }); + expect(listGroupDimensions.findPosition(48)).toEqual({ + index: 19, + dimensionKey: 'list_4', + }); + + removeList3(); + expect(listGroupDimensions.findPosition(15)).toEqual({ + index: 0, + dimensionKey: 'banner2', + }); + expect(listGroupDimensions.findPosition(16)).toEqual({ + index: 0, + dimensionKey: 'list_4', + }); + expect(listGroupDimensions.findPosition(35)).toEqual({ + index: 19, + dimensionKey: 'list_4', + }); + + listGroupDimensions.setListData('list_1', buildData(12)); + listGroupDimensions.setListData('list_2', buildData(8)); + expect(listGroupDimensions.findPosition(0)).toEqual({ + index: 0, + dimensionKey: 'list_1', + }); + expect(listGroupDimensions.findPosition(11)).toEqual({ + index: 11, + dimensionKey: 'list_1', + }); + expect(listGroupDimensions.findPosition(12)).toEqual({ + index: 0, + dimensionKey: 'list_2', + }); + expect(listGroupDimensions.findPosition(19)).toEqual({ + index: 7, + dimensionKey: 'list_2', + }); + }); + + it('findListRange', () => { + const listGroupDimensions = new ListGroupDimensions({ + isFixedLength, + id: 'list_group', + }); + + listGroupDimensions.registerItem('banner'); + listGroupDimensions.registerList('list_1', { + data: buildData(10), + keyExtractor: defaultKeyExtractor, + }); + listGroupDimensions.registerList('list_2', { + data: buildData(5), + keyExtractor: defaultKeyExtractor, + }); + listGroupDimensions.registerList('list_3', { + data: buildData(13), + keyExtractor: defaultKeyExtractor, + }); + listGroupDimensions.registerItem('banner2'); + listGroupDimensions.registerList('list_4', { + data: buildData(20), + keyExtractor: defaultKeyExtractor, + }); + + let listRange = []; + + // Dimension + listRange = listGroupDimensions.findListRange(0, 0); + expect(listRange).toEqual([ + { + listKey: 'banner', + isDimension: true, + }, + ]); + + // Dimension and list + listRange = listGroupDimensions.findListRange(0, 5); + expect(listRange).toEqual([ + { + listKey: 'banner', + isDimension: true, + }, + { + listKey: 'list_1', + isDimension: false, + value: { + startIndex: 0, + endIndex: 4, + data: buildData(10).slice(0, 5), + }, + }, + ]); + + // in list + listRange = listGroupDimensions.findListRange(3, 7); + expect(listRange).toEqual([ + { + listKey: 'list_1', + isDimension: false, + value: { + startIndex: 2, + endIndex: 6, + data: buildData(10).slice(0, 7), + }, + }, + ]); + + // in list, list, list, dimension + listRange = listGroupDimensions.findListRange(3, 29); + expect(listRange).toEqual([ + { + listKey: 'list_1', + isDimension: false, + value: { + startIndex: 2, + endIndex: 9, + data: buildData(10).slice(0, 10), + }, + }, + { + listKey: 'list_2', + isDimension: false, + value: { + startIndex: 0, + endIndex: 4, + data: buildData(5).slice(0, 5), + }, + }, + { + listKey: 'list_3', + isDimension: false, + value: { + startIndex: 0, + endIndex: 12, + data: buildData(13).slice(0, 13), + }, + }, + { + listKey: 'banner2', + isDimension: true, + }, + ]); + + // in list, list, list, dimension, list + listRange = listGroupDimensions.findListRange(3, 33); + expect(listRange).toEqual([ + { + listKey: 'list_1', + isDimension: false, + value: { + startIndex: 2, + endIndex: 9, + data: buildData(10).slice(0, 10), + }, + }, + { + listKey: 'list_2', + isDimension: false, + value: { + startIndex: 0, + endIndex: 4, + data: buildData(5).slice(0, 5), + }, + }, + { + listKey: 'list_3', + isDimension: false, + value: { + startIndex: 0, + endIndex: 12, + data: buildData(13).slice(0, 13), + }, + }, + { + listKey: 'banner2', + isDimension: true, + }, + { + listKey: 'list_4', + isDimension: false, + value: { + startIndex: 0, + endIndex: 3, + data: buildData(20).slice(0, 4), + }, + }, + ]); + }); + + it('getItemLayout', () => { + const listGroupDimensions = new ListGroupDimensions({ + isFixedLength, + id: 'list_group', + }); + + listGroupDimensions.registerItem('banner'); + listGroupDimensions.registerList('list_1', { + data: buildData(10), + keyExtractor: defaultKeyExtractor, + getItemLayout: (item, index) => ({ length: 100, index }), + }); + listGroupDimensions.registerList('list_2', { + data: buildData(5), + keyExtractor: defaultKeyExtractor, + getItemLayout: (item, index) => ({ length: 20, index }), + }); + listGroupDimensions.registerList('list_3', { + data: buildData(13), + keyExtractor: defaultKeyExtractor, + getItemLayout: (item, index) => ({ length: 500, index }), + }); + listGroupDimensions.registerItem('banner2'); + listGroupDimensions.registerList('list_4', { + data: buildData(20), + keyExtractor: defaultKeyExtractor, + getItemLayout: (item, index) => ({ length: 150, index }), + }); + + listGroupDimensions.setKeyItemLayout('banner', 'banner', 80); + + expect(listGroupDimensions.getIntervalTree().sumUntil(1)).toBe(80); + expect(listGroupDimensions.getIntervalTree().sumUntil(2)).toBe(1080); + expect(listGroupDimensions.getIntervalTree().sumUntil(11)).toBe( + 10680 + DEFAULT_DIMENSION_ITEM_APPROXIMATE_LENGTH + ); + }); + }); + + describe('test dimensionsIndexRange', () => { + it('on initial', () => { + const listGroupDimensions = new ListGroupDimensions({ + isFixedLength, + id: 'list_group', + maxToRenderPerBatch: 10, + getContainerLayout: () => ({ + x: 0, + y: 2000, + width: 375, + height: 2000, + }), + }); + + listGroupDimensions.registerItem('banner'); + listGroupDimensions.registerList('list_1', { + data: buildData(10), + keyExtractor: defaultKeyExtractor, + getItemLayout: (item, index) => ({ length: 100, index }), + }); + listGroupDimensions.registerList('list_2', { + data: buildData(5), + keyExtractor: defaultKeyExtractor, + getItemLayout: (item, index) => ({ length: 20, index }), + }); + listGroupDimensions.registerList('list_3', { + data: buildData(13), + keyExtractor: defaultKeyExtractor, + getItemLayout: (item, index) => ({ length: 500, index }), + }); + listGroupDimensions.registerItem('banner2'); + listGroupDimensions.registerList('list_4', { + data: buildData(20), + keyExtractor: defaultKeyExtractor, + getItemLayout: (item, index) => ({ length: 150, index }), + }); + + listGroupDimensions.setKeyItemLayout('banner', 'banner', 80); + + expect( + listGroupDimensions.dimensionsIndexRange.map((item) => ({ + startIndex: item.startIndex, + endIndex: item.endIndex, + dimensionsKey: item.dimensions.id, + })) + ).toEqual([ + { + startIndex: 0, + endIndex: 1, + dimensionsKey: 'banner', + }, + { + startIndex: 1, + endIndex: 11, + dimensionsKey: 'list_1', + }, + { + startIndex: 11, + endIndex: 16, + dimensionsKey: 'list_2', + }, + { + startIndex: 16, + endIndex: 29, + dimensionsKey: 'list_3', + }, + { + startIndex: 29, + endIndex: 30, + dimensionsKey: 'banner2', + }, + { + startIndex: 30, + endIndex: 50, + dimensionsKey: 'list_4', + }, + ]); + }); + + it('on delete', () => { + const listGroupDimensions = new ListGroupDimensions({ + isFixedLength, + id: 'list_group', + maxToRenderPerBatch: 10, + getContainerLayout: () => ({ + x: 0, + y: 2000, + width: 375, + height: 2000, + }), + }); + + listGroupDimensions.registerItem('banner'); + listGroupDimensions.registerList('list_1', { + data: buildData(10), + keyExtractor: defaultKeyExtractor, + getItemLayout: (item, index) => ({ length: 100, index }), + }); + const { remover: list_2_remover } = listGroupDimensions.registerList( + 'list_2', + { + data: buildData(5), + keyExtractor: defaultKeyExtractor, + getItemLayout: (item, index) => ({ length: 20, index }), + } + ); + const { dimensions: list3Dimensions } = listGroupDimensions.registerList( + 'list_3', + { + data: buildData(13), + keyExtractor: defaultKeyExtractor, + getItemLayout: (item, index) => ({ length: 500, index }), + } + ); + const { remover: banner2_remover } = + listGroupDimensions.registerItem('banner2'); + listGroupDimensions.registerList('list_4', { + data: buildData(20), + keyExtractor: defaultKeyExtractor, + getItemLayout: (item, index) => ({ length: 150, index }), + }); + + listGroupDimensions.setKeyItemLayout('banner', 'banner', 80); + + list_2_remover(); + + expect( + listGroupDimensions.dimensionsIndexRange.map((item) => ({ + startIndex: item.startIndex, + endIndex: item.endIndex, + dimensionsKey: item.dimensions.id, + })) + ).toEqual([ + { + startIndex: 0, + endIndex: 1, + dimensionsKey: 'banner', + }, + { + startIndex: 1, + endIndex: 11, + dimensionsKey: 'list_1', + }, + { + startIndex: 11, + endIndex: 24, + dimensionsKey: 'list_3', + }, + { + startIndex: 24, + endIndex: 25, + dimensionsKey: 'banner2', + }, + { + startIndex: 25, + endIndex: 45, + dimensionsKey: 'list_4', + }, + ]); + + banner2_remover(); + + expect( + listGroupDimensions.dimensionsIndexRange.map((item) => ({ + startIndex: item.startIndex, + endIndex: item.endIndex, + dimensionsKey: item.dimensions.id, + })) + ).toEqual([ + { + startIndex: 0, + endIndex: 1, + dimensionsKey: 'banner', + }, + { + startIndex: 1, + endIndex: 11, + dimensionsKey: 'list_1', + }, + { + startIndex: 11, + endIndex: 24, + dimensionsKey: 'list_3', + }, + { + startIndex: 24, + endIndex: 44, + dimensionsKey: 'list_4', + }, + ]); + + listGroupDimensions.setListData('list_3', buildData(5)); + // list3Dimensions.setData(buildData(5)); + + expect( + listGroupDimensions.dimensionsIndexRange.map((item) => ({ + startIndex: item.startIndex, + endIndex: item.endIndex, + dimensionsKey: item.dimensions.id, + })) + ).toEqual([ + { + startIndex: 0, + endIndex: 1, + dimensionsKey: 'banner', + }, + { + startIndex: 1, + endIndex: 11, + dimensionsKey: 'list_1', + }, + { + startIndex: 11, + endIndex: 16, + dimensionsKey: 'list_3', + }, + { + startIndex: 16, + endIndex: 36, + dimensionsKey: 'list_4', + }, + ]); + }); + + it('getFinalIndexIndexInfo', () => { + const listGroupDimensions = new ListGroupDimensions({ + isFixedLength, + id: 'list_group', + maxToRenderPerBatch: 10, + getContainerLayout: () => ({ + x: 0, + y: 2000, + width: 375, + height: 2000, + }), + }); + + const { dimensions: bannerDimensions } = + listGroupDimensions.registerItem('banner'); + listGroupDimensions.registerList('list_1', { + data: buildData(10), + keyExtractor: defaultKeyExtractor, + getItemLayout: (item, index) => ({ length: 100, index }), + }); + listGroupDimensions.registerList('list_2', { + data: buildData(5), + keyExtractor: defaultKeyExtractor, + getItemLayout: (item, index) => ({ length: 20, index }), + }); + const { dimensions: list3Dimensions } = listGroupDimensions.registerList( + 'list_3', + { + data: buildData(13), + keyExtractor: defaultKeyExtractor, + getItemLayout: (item, index) => ({ length: 500, index }), + } + ); + const { dimensions: banner2Dimensions } = + listGroupDimensions.registerItem('banner2'); + listGroupDimensions.registerList('list_4', { + data: buildData(20), + keyExtractor: defaultKeyExtractor, + getItemLayout: (item, index) => ({ length: 150, index }), + }); + + listGroupDimensions.setKeyItemLayout('banner', 'banner', 80); + + expect(listGroupDimensions.getFinalIndexIndexInfo(0)).toEqual({ + dimensions: bannerDimensions, + indexInGroup: 0, + indexInRecycler: 0, + index: 0, + }); + + expect(listGroupDimensions.getFinalIndexIndexInfo(20)).toEqual({ + dimensions: list3Dimensions, + index: 4, + indexInGroup: 20, + indexInRecycler: 20, + }); + expect(listGroupDimensions.getFinalIndexIndexInfo(29)).toEqual({ + dimensions: banner2Dimensions, + index: 0, + indexInGroup: 29, + indexInRecycler: 29, + }); + }); + + test('getDimensionStartIndex', () => { + const listGroupDimensions = new ListGroupDimensions({ + id: 'list_group', + isFixedLength, + maxToRenderPerBatch: 10, + getContainerLayout: () => ({ + x: 0, + y: 2000, + width: 375, + height: 2000, + }), + }); + + listGroupDimensions.registerItem('banner'); + listGroupDimensions.registerList('list_1', { + data: buildData(10), + keyExtractor: defaultKeyExtractor, + getItemLayout: (item, index) => ({ length: 100, index }), + }); + listGroupDimensions.registerList('list_2', { + data: buildData(5), + keyExtractor: defaultKeyExtractor, + getItemLayout: (item, index) => ({ length: 20, index }), + }); + listGroupDimensions.registerList('list_3', { + data: buildData(13), + keyExtractor: defaultKeyExtractor, + getItemLayout: (item, index) => ({ length: 500, index }), + }); + listGroupDimensions.registerItem('banner2'); + listGroupDimensions.registerList('list_4', { + data: buildData(20), + keyExtractor: defaultKeyExtractor, + getItemLayout: (item, index) => ({ length: 150, index }), + }); + + listGroupDimensions.setKeyItemLayout('banner', 'banner', 80); + + expect(listGroupDimensions.getDimensionStartIndex('banner')).toBe(0); + expect(listGroupDimensions.getDimensionStartIndex('list_1')).toBe(1); + expect(listGroupDimensions.getDimensionStartIndex('list_2')).toBe(11); + expect(listGroupDimensions.getDimensionStartIndex('list_3')).toBe(16); + expect(listGroupDimensions.getDimensionStartIndex('banner2')).toBe(29); + expect(listGroupDimensions.getDimensionStartIndex('list_4')).toBe(30); + }); + }); + + describe('initialNumToRender', () => { + test('updateInitialNumDueToListGroup', () => { + const listGroupDimensions = new ListGroupDimensions({ + id: 'list_group', + isFixedLength, + maxToRenderPerBatch: 10, + initialNumToRender: 2, + getContainerLayout: () => ({ + x: 0, + y: 2000, + width: 375, + height: 2000, + }), + }); + + listGroupDimensions.updateScrollMetrics({ + offset: 0, + contentLength: 5000, + visibleLength: 926, + }); + + listGroupDimensions.registerList('list_1', { + data: buildData(3), + keyExtractor: defaultKeyExtractor, + getItemLayout: (item, index) => ({ length: 100, index }), + }); + expect(listGroupDimensions.getState()).toEqual({ + actionType: 'recalculate', + bufferedEndIndex: 3, + bufferedStartIndex: 0, + distanceFromEnd: 4074, + isEndReached: false, + visibleEndIndex: -1, + visibleStartIndex: -1, + }); + + listGroupDimensions.registerList('list_2', { + data: buildData(5), + keyExtractor: defaultKeyExtractor, + getItemLayout: (item, index) => ({ length: 20, index }), + }); + + expect(listGroupDimensions.getState()).toEqual({ + actionType: 'recalculate', + bufferedEndIndex: 8, + bufferedStartIndex: 0, + distanceFromEnd: 4074, + isEndReached: false, + visibleEndIndex: -1, + visibleStartIndex: -1, + }); + + listGroupDimensions.registerList('list_3', { + data: buildData(13), + keyExtractor: defaultKeyExtractor, + getItemLayout: (item, index) => ({ length: 500, index }), + }); + }); + + test('updateInitialNumDueToListGroup - offset', () => { + const listGroupDimensions = new ListGroupDimensions({ + id: 'list_group', + isFixedLength, + maxToRenderPerBatch: 10, + initialNumToRender: 2, + getContainerLayout: () => ({ + x: 0, + y: 0, + width: 375, + height: 2000, + }), + }); + + listGroupDimensions.updateScrollMetrics({ + offset: 0, + contentLength: 5000, + visibleLength: 926, + }); + + listGroupDimensions.registerList('list_1', { + data: buildData(3), + keyExtractor: defaultKeyExtractor, + getItemLayout: (item, index) => ({ length: 100, index }), + }); + expect(listGroupDimensions.getState()).toEqual({ + actionType: 'recalculate', + bufferedEndIndex: 3, + bufferedStartIndex: 0, + distanceFromEnd: 4074, + isEndReached: false, + visibleEndIndex: 2, + visibleStartIndex: 0, + }); + + listGroupDimensions.registerList('list_2', { + data: buildData(5), + keyExtractor: defaultKeyExtractor, + getItemLayout: (item, index) => ({ length: 20, index }), + }); + + expect(listGroupDimensions.getState()).toEqual({ + actionType: 'recalculate', + bufferedEndIndex: 8, + bufferedStartIndex: 0, + distanceFromEnd: 4074, + isEndReached: false, + visibleEndIndex: 7, + visibleStartIndex: 0, + }); + + listGroupDimensions.registerList('list_3', { + data: buildData(13), + keyExtractor: defaultKeyExtractor, + getItemLayout: (item, index) => ({ length: 500, index }), + }); + expect(listGroupDimensions.getState()).toEqual({ + actionType: 'recalculate', + bufferedEndIndex: 13, + bufferedStartIndex: 0, + distanceFromEnd: 4074, + isEndReached: false, + visibleEndIndex: 10, + visibleStartIndex: 0, + }); + }); + }); + + // describe('persistanceIndices', () => { + // test.only('updatePersistanceIndicesDueToListGroup', () => { + // const listGroupDimensions = new ListGroupDimensions({ + // id: 'list_group', + // isFixedLength, + // maxToRenderPerBatch: 10, + // persistanceIndices: [1, 2, 7, 10, 20], + // getContainerLayout: () => ({ + // x: 0, + // y: 2000, + // width: 375, + // height: 2000, + // }), + // }); + + // const { dimensions: list_1_dimensions } = listGroupDimensions.registerList( + // 'list_1', + // { + // data: buildData(3), + // keyExtractor: defaultKeyExtractor, + // getItemLayout: (item, index) => ({ length: 100, index }), + // } + // ); + // const { dimensions: list_2_dimensions } = listGroupDimensions.registerList( + // 'list_2', + // { + // data: buildData(5), + // keyExtractor: defaultKeyExtractor, + // getItemLayout: (item, index) => ({ length: 20, index }), + // } + // ); + // const { dimensions: list_3_dimensions } = listGroupDimensions.registerList( + // 'list_3', + // { + // data: buildData(13), + // keyExtractor: defaultKeyExtractor, + // getItemLayout: (item, index) => ({ length: 500, index }), + // } + // ); + // listGroupDimensions.registerItem('banner2'); + // listGroupDimensions.registerList('list_4', { + // data: buildData(20), + // keyExtractor: defaultKeyExtractor, + // getItemLayout: (item, index) => ({ length: 150, index }), + // }); + + // expect(list_1_dimensions.persistanceIndices).toEqual([1, 2]); + // expect(list_2_dimensions.persistanceIndices).toEqual([4]); + // expect(list_3_dimensions.persistanceIndices).toEqual([2, 12]); + // }); + // }); + + describe('heartBeat', () => { + const buildListGroup = (props = {}) => { + const listGroupDimensions = new ListGroupDimensions({ + id: 'list_group', + isFixedLength, + getContainerLayout: () => ({ + x: 0, + y: 2000, + width: 375, + height: 2000, + }), + ...props, + }); + + const { + dimensions: list_1_dimensions, + remover: list_1_dimensions_remover, + } = listGroupDimensions.registerList('list_1', { + data: buildData(3), + keyExtractor: defaultKeyExtractor, + getItemLayout: (item, index) => ({ length: 100, index }), + }); + const { + dimensions: list_2_dimensions, + remover: list_2_dimensions_remover, + } = listGroupDimensions.registerList('list_2', { + data: buildData(5), + keyExtractor: defaultKeyExtractor, + getItemLayout: (item, index) => ({ length: 20, index }), + }); + const { + dimensions: list_3_dimensions, + remover: list_3_dimensions_remover, + } = listGroupDimensions.registerList('list_3', { + data: buildData(13), + keyExtractor: defaultKeyExtractor, + getItemLayout: (item, index) => ({ length: 500, index }), + }); + const { + dimensions: banner2_dimensions, + remover: banner2_dimensions_remover, + } = listGroupDimensions.registerItem('banner2'); + const { + dimensions: list_4_dimensions, + remover: list_4_dimensions_remover, + } = listGroupDimensions.registerList('list_4', { + data: buildData(20), + keyExtractor: defaultKeyExtractor, + getItemLayout: (item, index) => ({ length: 150, index }), + }); + + return { + listGroupDimensions, + list_1_dimensions, + list_2_dimensions, + list_3_dimensions, + banner2_dimensions, + list_4_dimensions, + list_1_dimensions_remover, + list_2_dimensions_remover, + list_3_dimensions_remover, + banner2_dimensions_remover, + list_4_dimensions_remover, + }; + }; + + it('start inspection', () => { + const { listGroupDimensions } = buildListGroup(); + expect(listGroupDimensions.indexKeys).toEqual([ + 'list_1', + 'list_2', + 'list_3', + 'banner2', + 'list_4', + ]); + listGroupDimensions.inspector.startInspection(); + listGroupDimensions.inspector.startCollection(); + const { heartBeat, inspectingTime } = + listGroupDimensions.inspector.getAPI(); + heartBeat({ listKey: 'list_1', inspectingTime }); + heartBeat({ listKey: 'banner2', inspectingTime }); + heartBeat({ listKey: 'list_2', inspectingTime }); + heartBeat({ listKey: 'list_3', inspectingTime }); + heartBeat({ listKey: 'list_4', inspectingTime }); + listGroupDimensions.inspector.terminateCollection(); + expect(listGroupDimensions.indexKeys).toEqual([ + 'list_1', + 'banner2', + 'list_2', + 'list_3', + 'list_4', + ]); + }); + + it('registerList should trigger startInspection', () => { + const { listGroupDimensions } = buildListGroup(); + expect(listGroupDimensions.indexKeys).toEqual([ + 'list_1', + 'list_2', + 'list_3', + 'banner2', + 'list_4', + ]); + + expect(Inspector.prototype.startInspection).toHaveBeenCalledTimes(5); + + listGroupDimensions.registerList('list_5', { + data: buildData(10), + keyExtractor: defaultKeyExtractor, + getItemLayout: (item, index) => ({ length: 500, index }), + }); + + expect(Inspector.prototype.startInspection).toHaveBeenCalledTimes(6); + + expect(listGroupDimensions.indexKeys).toEqual([ + 'list_1', + 'list_2', + 'list_3', + 'banner2', + 'list_4', + 'list_5', + ]); + }); + + it('removeList should not trigger startInspection', () => { + const { listGroupDimensions, list_2_dimensions_remover } = + buildListGroup(); + expect(listGroupDimensions.indexKeys).toEqual([ + 'list_1', + 'list_2', + 'list_3', + 'banner2', + 'list_4', + ]); + expect(Inspector.prototype.startInspection).toHaveBeenCalledTimes(5); + list_2_dimensions_remover(); + expect(Inspector.prototype.startInspection).toHaveBeenCalledTimes(5); + expect(listGroupDimensions.indexKeys).toEqual([ + 'list_1', + // 'list_2', + 'list_3', + 'banner2', + 'list_4', + ]); + }); + + it('removeItem should not trigger startInspection', () => { + const { listGroupDimensions, banner2_dimensions_remover } = + buildListGroup(); + expect(listGroupDimensions.indexKeys).toEqual([ + 'list_1', + 'list_2', + 'list_3', + 'banner2', + 'list_4', + ]); + expect(Inspector.prototype.startInspection).toHaveBeenCalledTimes(5); + banner2_dimensions_remover(); + expect(Inspector.prototype.startInspection).toHaveBeenCalledTimes(5); + expect(listGroupDimensions.indexKeys).toEqual([ + 'list_1', + 'list_2', + 'list_3', + 'list_4', + ]); + }); + + it('update persistanceIndices after inspection', () => { + const { + listGroupDimensions, + list_1_dimensions, + list_2_dimensions, + list_3_dimensions, + list_4_dimensions, + } = buildListGroup({ + id: 'list_group', + maxToRenderPerBatch: 10, + persistanceIndices: [1, 2, 7, 10, 20], + getContainerLayout: () => ({ + x: 0, + y: 2000, + width: 375, + height: 2000, + }), + }); + + // expect(list_1_dimensions.persistanceIndices).toEqual([1, 2]); + // expect(list_2_dimensions.persistanceIndices).toEqual([4]); + // expect(list_3_dimensions.persistanceIndices).toEqual([2, 12]); + + const { heartBeat, inspectingTime } = + listGroupDimensions.inspector.getAPI(); + heartBeat({ listKey: 'list_1', inspectingTime }); + heartBeat({ listKey: 'banner2', inspectingTime }); + heartBeat({ listKey: 'list_4', inspectingTime }); + heartBeat({ listKey: 'list_3', inspectingTime }); + heartBeat({ listKey: 'list_2', inspectingTime }); + // expect(list_1_dimensions.persistanceIndices).toEqual([1, 2]); + // expect(list_2_dimensions.persistanceIndices).toEqual([]); + // expect(list_3_dimensions.persistanceIndices).toEqual([]); + // expect(list_4_dimensions.persistanceIndices).toEqual([3, 6, 16]); + }); + }); +} diff --git a/model/group-dimensions/src/__test__/reducer.test.ts b/model/group-dimensions/src/__test__/reducer.test.ts new file mode 100644 index 00000000..5f909f7a --- /dev/null +++ b/model/group-dimensions/src/__test__/reducer.test.ts @@ -0,0 +1,551 @@ +import ListGroupDimensions from '../ListGroupDimensions'; +import Batchinator from '@x-oasis/batchinator'; +import { defaultKeyExtractor } from '@infinite-list/utils'; +import { ActionType } from '@infinite-list/state'; +import { context as itemMetaContext } from '@infinite-list/item-meta'; +import { vi, describe, it, expect, beforeEach } from 'vitest'; +const buildData = (count: number) => + new Array(count).fill(1).map((v, index) => ({ + key: index, + })); + +vi.useFakeTimers(); + +vi.spyOn(Batchinator.prototype, 'schedule').mockImplementation(function ( + ...args +) { + // eslint-disable-next-line prefer-spread + this._callback.apply(this, args); +}); + +testSuite(false); + +function testSuite(isFixedLength: boolean) { + describe('reducer', () => { + beforeAll(() => { + vi.useFakeTimers({ toFake: ['requestIdleCallback'] }); + }); + beforeEach(() => { + const keys = Object.keys(itemMetaContext); + keys.forEach((key) => { + delete itemMetaContext[key]; + }); + }); + it('basic scrollDown', () => { + const listGroupDimensions = new ListGroupDimensions({ + id: 'list_group', + maxToRenderPerBatch: 10, + isFixedLength, + getContainerLayout: () => ({ + x: 0, + y: 2000, + width: 375, + height: 2000, + }), + }); + listGroupDimensions.registerItem('banner'); + listGroupDimensions.registerList('list_1', { + data: buildData(10), + keyExtractor: defaultKeyExtractor, + getItemLayout: (item, index) => ({ length: 100, index }), + }); + listGroupDimensions.registerList('list_2', { + data: buildData(5), + keyExtractor: defaultKeyExtractor, + getItemLayout: (item, index) => ({ length: 20, index }), + }); + listGroupDimensions.registerList('list_3', { + data: buildData(13), + keyExtractor: defaultKeyExtractor, + getItemLayout: (item, index) => ({ length: 500, index }), + }); + listGroupDimensions.registerItem('banner2'); + listGroupDimensions.registerList('list_4', { + data: buildData(20), + keyExtractor: defaultKeyExtractor, + getItemLayout: (item, index) => ({ length: 150, index }), + }); + listGroupDimensions.setKeyItemLayout('banner', 'banner', 80); + listGroupDimensions.store.dispatch({ + type: ActionType.ScrollDown, + payload: { + dimension: listGroupDimensions, + scrollMetrics: { + offset: 1000, + contentLength: 5000, + visibleLength: 926, + }, + isEndReached: false, + distanceFromEnd: 0, + }, + }); + + expect(listGroupDimensions.getContainerOffset()).toBe(2000); + expect(listGroupDimensions.getState()).toEqual({ + actionType: ActionType.ScrollDown, + visibleStartIndex: -1, + visibleEndIndex: -1, + bufferedStartIndex: 0, + bufferedEndIndex: 10, + isEndReached: false, + distanceFromEnd: 0, + }); + }); + + it('basic scrollDown, `bufferedEndIndex` should be preserved (17 -> 19)', () => { + const listGroupDimensions = new ListGroupDimensions({ + id: 'list_group', + maxToRenderPerBatch: 10, + isFixedLength, + getContainerLayout: () => ({ + x: 0, + y: 2000, + width: 375, + height: 2000, + }), + }); + + listGroupDimensions.registerItem('banner'); + listGroupDimensions.registerList('list_1', { + data: buildData(10), + keyExtractor: defaultKeyExtractor, + getItemLayout: (item, index) => ({ length: 100, index }), + }); + listGroupDimensions.registerList('list_2', { + data: buildData(5), + keyExtractor: defaultKeyExtractor, + getItemLayout: (item, index) => ({ length: 20, index }), + }); + listGroupDimensions.registerList('list_3', { + data: buildData(13), + keyExtractor: defaultKeyExtractor, + getItemLayout: (item, index) => ({ length: 500, index }), + }); + listGroupDimensions.registerItem('banner2'); + listGroupDimensions.registerList('list_4', { + data: buildData(20), + keyExtractor: defaultKeyExtractor, + getItemLayout: (item, index) => ({ length: 150, index }), + }); + + listGroupDimensions.setKeyItemLayout('banner', 'banner', 80); + + listGroupDimensions.store.dispatch({ + type: ActionType.HydrationWithBatchUpdate, + payload: { + dimension: listGroupDimensions, + scrollMetrics: { + offset: 0, + contentLength: 4000, + visibleLength: 926, + }, + isEndReached: false, + distanceFromEnd: 0, + }, + }); + + expect(listGroupDimensions.store.getState()).toEqual({ + actionType: ActionType.HydrationWithBatchUpdate, + visibleStartIndex: -1, + visibleEndIndex: -1, + bufferedStartIndex: 0, + bufferedEndIndex: 8, + isEndReached: false, + distanceFromEnd: 0, + }); + + listGroupDimensions.store.dispatch({ + type: ActionType.ScrollDown, + payload: { + dimension: listGroupDimensions, + scrollMetrics: { + offset: 1000, + contentLength: 5000, + visibleLength: 926, + }, + isEndReached: false, + distanceFromEnd: 0, + }, + }); + + expect(listGroupDimensions.getContainerOffset()).toBe(2000); + expect(listGroupDimensions.store.getState()).toEqual({ + actionType: ActionType.ScrollDown, + visibleStartIndex: -1, + visibleEndIndex: -1, + bufferedStartIndex: 0, + bufferedEndIndex: 10, + isEndReached: false, + distanceFromEnd: 0, + }); + }); + + it('with ignoredToPerBatch', () => { + const listGroupDimensions = new ListGroupDimensions({ + id: 'list_group', + isFixedLength, + maxToRenderPerBatch: 10, + getContainerLayout: () => ({ + x: 0, + y: 2000, + width: 375, + height: 2000, + }), + }); + + listGroupDimensions.registerItem('header_1', { + ignoredToPerBatch: true, + }); + listGroupDimensions.registerList('list_1', { + data: buildData(20), + keyExtractor: defaultKeyExtractor, + }); + listGroupDimensions.registerItem('footer_1', { + ignoredToPerBatch: true, + }); + + listGroupDimensions.registerList('list_2', { + data: buildData(20), + keyExtractor: defaultKeyExtractor, + }); + + listGroupDimensions.store.dispatch({ + type: ActionType.HydrationWithBatchUpdate, + payload: { + dimension: listGroupDimensions, + scrollMetrics: { + offset: 2000, + contentLength: 3000, + visibleLength: 926, + }, + isEndReached: false, + distanceFromEnd: 0, + }, + }); + + expect(listGroupDimensions.store.getState()).toEqual({ + actionType: ActionType.HydrationWithBatchUpdate, + visibleStartIndex: 0, + visibleEndIndex: 13, + bufferedStartIndex: 0, + bufferedEndIndex: 10, + isEndReached: false, + distanceFromEnd: 0, + }); + }); + + it('without ignoredToPerBatch', () => { + const listGroupDimensions = new ListGroupDimensions({ + id: 'list_group', + isFixedLength, + maxToRenderPerBatch: 10, + getContainerLayout: () => ({ + x: 0, + y: 2000, + width: 375, + height: 2000, + }), + }); + + listGroupDimensions.registerItem('header_1'); + listGroupDimensions.registerList('list_1', { + data: buildData(20), + keyExtractor: defaultKeyExtractor, + }); + listGroupDimensions.registerItem('footer_1'); + + listGroupDimensions.registerList('list_2', { + data: buildData(20), + keyExtractor: defaultKeyExtractor, + }); + + listGroupDimensions.store.dispatch({ + type: ActionType.HydrationWithBatchUpdate, + payload: { + dimension: listGroupDimensions, + scrollMetrics: { + offset: 2000, + contentLength: 4000, + visibleLength: 926, + }, + isEndReached: false, + distanceFromEnd: 0, + }, + }); + + expect(listGroupDimensions.store.getState()).toEqual({ + actionType: ActionType.HydrationWithBatchUpdate, + visibleStartIndex: 0, + visibleEndIndex: 13, + bufferedStartIndex: 0, + bufferedEndIndex: 9, + isEndReached: false, + distanceFromEnd: 0, + }); + }); + + it('with ignoredToPerBatch - with layout', () => { + const listGroupDimensions = new ListGroupDimensions({ + id: 'list_group', + maxToRenderPerBatch: 10, + isFixedLength: false, + getContainerLayout: () => ({ + x: 0, + y: 2000, + width: 375, + height: 2000, + }), + }); + + listGroupDimensions.registerItem('header_1', { + ignoredToPerBatch: true, + }); + listGroupDimensions.registerList('list_1', { + data: buildData(20), + keyExtractor: defaultKeyExtractor, + getItemLayout: (item, index) => ({ length: 40, index }), + }); + listGroupDimensions.registerItem('footer_1', { + ignoredToPerBatch: true, + }); + + listGroupDimensions.registerList('list_2', { + data: buildData(20), + keyExtractor: defaultKeyExtractor, + getItemLayout: (item, index) => ({ length: 100, index }), + }); + + listGroupDimensions.setKeyItemLayout('header_1', 'header_1', 200); + listGroupDimensions.setKeyItemLayout('footer_1', 'footer_1', 30); + listGroupDimensions.store.dispatch({ + type: ActionType.HydrationWithBatchUpdate, + payload: { + dimension: listGroupDimensions, + scrollMetrics: { + offset: 2000, + contentLength: 5000, + visibleLength: 926, + }, + isEndReached: false, + distanceFromEnd: 0, + }, + }); + + expect(listGroupDimensions.store.getState()).toEqual({ + actionType: ActionType.HydrationWithBatchUpdate, + visibleStartIndex: 0, + visibleEndIndex: 20, + bufferedStartIndex: 0, + bufferedEndIndex: 10, + isEndReached: false, + distanceFromEnd: 0, + }); + }); + + it('with ignoredToPerBatch', () => { + const listGroupDimensions = new ListGroupDimensions({ + id: 'list_group', + isFixedLength, + maxToRenderPerBatch: 10, + getContainerLayout: () => ({ + x: 0, + y: 2000, + width: 375, + height: 2000, + }), + }); + + listGroupDimensions.registerItem('header_1', { + ignoredToPerBatch: true, + }); + listGroupDimensions.registerList('list_1', { + data: buildData(2), + recycleEnabled: true, + keyExtractor: defaultKeyExtractor, + }); + + listGroupDimensions.registerItem('footer_1', { + ignoredToPerBatch: true, + }); + + listGroupDimensions.registerItem('header_2', { + ignoredToPerBatch: true, + }); + listGroupDimensions.registerList('list_2', { + data: buildData(1), + recycleEnabled: true, + keyExtractor: defaultKeyExtractor, + }); + listGroupDimensions.registerItem('footer_2', { + ignoredToPerBatch: true, + }); + + listGroupDimensions.registerItem('header_3', { + ignoredToPerBatch: true, + }); + listGroupDimensions.registerList('list_3', { + data: buildData(2), + recycleEnabled: true, + keyExtractor: defaultKeyExtractor, + }); + listGroupDimensions.registerItem('footer_3', { + ignoredToPerBatch: true, + }); + + listGroupDimensions.registerItem('header_4', { + ignoredToPerBatch: true, + }); + listGroupDimensions.registerList('list_4', { + data: buildData(2), + recycleEnabled: true, + keyExtractor: defaultKeyExtractor, + }); + listGroupDimensions.registerItem('footer_4', { + ignoredToPerBatch: true, + }); + + listGroupDimensions.registerItem('header_5', { + ignoredToPerBatch: true, + }); + listGroupDimensions.registerList('list_5', { + data: buildData(2), + recycleEnabled: true, + keyExtractor: defaultKeyExtractor, + }); + listGroupDimensions.registerItem('footer_5', { + ignoredToPerBatch: true, + }); + + listGroupDimensions.registerItem('header_6', { + ignoredToPerBatch: true, + }); + listGroupDimensions.registerList('list_6', { + data: buildData(50), + keyExtractor: defaultKeyExtractor, + }); + listGroupDimensions.registerItem('footer_6', { + ignoredToPerBatch: true, + }); + + listGroupDimensions.registerItem('header_7', { + ignoredToPerBatch: true, + }); + listGroupDimensions.registerList('list_7', { + data: buildData(2), + keyExtractor: defaultKeyExtractor, + getItemLayout: (item, index) => ({ length: 100, index }), + }); + listGroupDimensions.registerItem('footer_7', { + ignoredToPerBatch: true, + }); + + listGroupDimensions.store.dispatch({ + type: ActionType.HydrationWithBatchUpdate, + payload: { + dimension: listGroupDimensions, + scrollMetrics: { + offset: 2000, + contentLength: 5000, + visibleLength: 926, + }, + isEndReached: false, + distanceFromEnd: 0, + }, + }); + + expect(listGroupDimensions.store.getState()).toEqual({ + actionType: ActionType.HydrationWithBatchUpdate, + visibleStartIndex: 0, + visibleEndIndex: 23, + bufferedStartIndex: 0, + bufferedEndIndex: 20, + isEndReached: false, + distanceFromEnd: 0, + }); + }); + + it('without ignoredToPerBatch', () => { + const listGroupDimensions = new ListGroupDimensions({ + id: 'list_group', + isFixedLength, + maxToRenderPerBatch: 10, + getContainerLayout: () => ({ + x: 0, + y: 2000, + width: 375, + height: 2000, + }), + }); + + listGroupDimensions.registerItem('header_1'); + listGroupDimensions.registerList('list_1', { + data: buildData(2), + keyExtractor: defaultKeyExtractor, + }); + listGroupDimensions.registerItem('footer_1'); + + listGroupDimensions.registerItem('header_2'); + listGroupDimensions.registerList('list_2', { + data: buildData(1), + keyExtractor: defaultKeyExtractor, + }); + listGroupDimensions.registerItem('footer_2'); + + listGroupDimensions.registerItem('header_3'); + listGroupDimensions.registerList('list_3', { + data: buildData(2), + keyExtractor: defaultKeyExtractor, + }); + listGroupDimensions.registerItem('footer_3'); + + listGroupDimensions.registerItem('header_4'); + listGroupDimensions.registerList('list_4', { + data: buildData(2), + keyExtractor: defaultKeyExtractor, + }); + listGroupDimensions.registerItem('footer_4'); + + listGroupDimensions.registerItem('header_5'); + listGroupDimensions.registerList('list_5', { + data: buildData(2), + keyExtractor: defaultKeyExtractor, + }); + listGroupDimensions.registerItem('footer_5'); + + listGroupDimensions.registerItem('header_6'); + listGroupDimensions.registerList('list_6', { + data: buildData(50), + keyExtractor: defaultKeyExtractor, + }); + listGroupDimensions.registerItem('footer_6'); + + listGroupDimensions.registerItem('header_7'); + listGroupDimensions.registerList('list_7', { + data: buildData(2), + keyExtractor: defaultKeyExtractor, + getItemLayout: (item, index) => ({ length: 100, index }), + }); + listGroupDimensions.registerItem('footer_7'); + + listGroupDimensions.store.dispatch({ + type: ActionType.HydrationWithBatchUpdate, + payload: { + dimension: listGroupDimensions, + scrollMetrics: { + offset: 2000, + contentLength: 5000, + visibleLength: 926, + }, + }, + }); + + expect(listGroupDimensions.store.getState()).toEqual({ + actionType: ActionType.HydrationWithBatchUpdate, + visibleStartIndex: 0, + visibleEndIndex: 23, + bufferedStartIndex: 0, + bufferedEndIndex: 9, + }); + }); + }); +} diff --git a/model/group-dimensions/src/common.ts b/model/group-dimensions/src/common.ts new file mode 100644 index 00000000..b6276404 --- /dev/null +++ b/model/group-dimensions/src/common.ts @@ -0,0 +1,4 @@ +export const DEFAULT_ITEM_APPROXIMATE_LENGTH = 80; +export const LAYOUT_EQUAL_CORRECTION_VALUE = 0.5; +export const DEFAULT_RECYCLER_TYPE = '__default_recycler_buffer__'; +export const DEFAULT_DIMENSION_ITEM_APPROXIMATE_LENGTH = 1; diff --git a/model/group-dimensions/src/index.ts b/model/group-dimensions/src/index.ts new file mode 100644 index 00000000..036b9d61 --- /dev/null +++ b/model/group-dimensions/src/index.ts @@ -0,0 +1 @@ +export { default as ListGroupDimensions } from './ListGroupDimensions'; diff --git a/model/group-dimensions/src/state/index.ts b/model/group-dimensions/src/state/index.ts new file mode 100644 index 00000000..1b432c7c --- /dev/null +++ b/model/group-dimensions/src/state/index.ts @@ -0,0 +1,100 @@ +import { ReducerResult } from '@infinite-list/state'; + +import fixVisibleRange from './middleware/fixVisibleRange'; +import fixInitialBufferedRange from './middleware/fixInitialBufferedRange'; +import fixBufferedRange from './middleware/fixBufferedRange'; + +import { createStore as _createStore } from '@infinite-list/state'; + +export function createStore() { + return _createStore({ + initial: (middleware, applyMiddleware) => { + const { resolveIndexRange, hydrateOnEndReached, resolveInitialState } = + middleware; + + applyMiddleware([ + resolveIndexRange, + hydrateOnEndReached, + fixVisibleRange, + fixInitialBufferedRange, + resolveInitialState, + ]); + }, + hydrationWithBatchUpdate: (middleware, applyMiddleware) => { + const { + preCheck, + resolveIndexRange, + hydrateOnEndReached, + resolveMaxIndex, + makeIndexMeaningful, + } = middleware; + + applyMiddleware([ + preCheck, + resolveIndexRange, + hydrateOnEndReached, + resolveMaxIndex, + fixBufferedRange, + fixVisibleRange, + makeIndexMeaningful, + ]); + }, + recalculate: (middleware, applyMiddleware) => { + const { + preCheck, + resolveIndexRange, + hydrateOnEndReached, + resolveMaxIndex, + makeIndexMeaningful, + } = middleware; + + applyMiddleware([ + preCheck, + resolveIndexRange, + hydrateOnEndReached, + resolveMaxIndex, + fixBufferedRange, + fixVisibleRange, + makeIndexMeaningful, + ]); + }, + scrollDown: (middleware, applyMiddleware) => { + const { + preCheck, + resolveIndexRange, + hydrateOnEndReached, + resolveMaxIndex, + makeIndexMeaningful, + } = middleware; + + applyMiddleware([ + preCheck, + resolveIndexRange, + hydrateOnEndReached, + resolveMaxIndex, + fixBufferedRange, + fixVisibleRange, + makeIndexMeaningful, + ]); + }, + scrollUp: (middleware, applyMiddleware) => { + const { + preCheck, + resolveIndexRange, + hydrateOnEndReached, + resolveMaxIndex, + makeIndexMeaningful, + } = middleware; + + applyMiddleware([ + preCheck, + resolveIndexRange, + hydrateOnEndReached, + resolveMaxIndex, + fixBufferedRange, + fixVisibleRange, + makeIndexMeaningful, + ]); + }, + }); +} diff --git a/model/group-dimensions/src/state/middleware/fixBufferedRange.ts b/model/group-dimensions/src/state/middleware/fixBufferedRange.ts new file mode 100644 index 00000000..7a7e8070 --- /dev/null +++ b/model/group-dimensions/src/state/middleware/fixBufferedRange.ts @@ -0,0 +1,57 @@ +// import Dimension from '../../Dimension'; +// import ListDimensionsModel from '../../ListDimensionsModel'; +// import ListDimensions from '../../ListDimensions'; +import ListGroupDimensions from '../../ListGroupDimensions'; +import { ActionPayload, Ctx, ReducerResult } from '@infinite-list/state'; +import { isValidMetaLayout } from '@infinite-list/item-meta'; +// import { log } from '@infinite-list/utils'; +import { Dimension } from '@infinite-list/dimension'; +import { ListDimensionsModel } from '@infinite-list/dimensions-model'; + +// recalculate buffer +export default ( + state: State, + payload: ActionPayload, + ctx: Ctx +) => { + // const { dimension } = payload; + const dimension = payload.dimension as any as ListGroupDimensions; + + const { visibleIndexRange, bufferedIndexRange, maxIndex } = ctx; + + const maxToRenderPerBatch = dimension.maxToRenderPerBatch; + let _nextBufferedEndIndex = bufferedIndexRange.endIndex; + + // if (dimension instanceof ListGroupDimensions) { + let count = 0; + // start from visibleIndexRange which means the below has high priority + // but... if jump to a position, two directions should be considered... + for ( + let startIndex = visibleIndexRange.startIndex; + startIndex <= Math.min(_nextBufferedEndIndex, maxIndex); + startIndex++ + ) { + const dimensionInfo = dimension.getFinalIndexIndexInfo(startIndex); + const currentDimension = dimensionInfo?.dimensions; + + if (currentDimension instanceof Dimension) { + if (currentDimension?.getIgnoredToPerBatch()) continue; + const meta = currentDimension.getMeta(); + if (!isValidMetaLayout(meta)) count++; + } + + if (currentDimension instanceof ListDimensionsModel) { + const meta = currentDimension.getIndexItemMeta( + dimensionInfo?.index || -1 + ); + if (!isValidMetaLayout(meta)) count++; + } + + if (count >= maxToRenderPerBatch) { + _nextBufferedEndIndex = startIndex; + break; + } + } + ctx.bufferedIndexRange.endIndex = _nextBufferedEndIndex; + // } +}; diff --git a/model/group-dimensions/src/state/middleware/fixInitialBufferedRange.ts b/model/group-dimensions/src/state/middleware/fixInitialBufferedRange.ts new file mode 100644 index 00000000..b1716e50 --- /dev/null +++ b/model/group-dimensions/src/state/middleware/fixInitialBufferedRange.ts @@ -0,0 +1,91 @@ +// import Dimension from '../../Dimension'; +// import ListDimensionsModel from '../../ListDimensionsModel'; +// import ListDimensions from '../../ListDimensions'; +// import { IListDimensions } from '@infinite-list/types'; +import ListGroupDimensions from '../../ListGroupDimensions'; +import { ActionPayload, Ctx, ReducerResult } from '@infinite-list/state'; +import { isValidMetaLayout } from '@infinite-list/item-meta'; +import { Dimension } from '@infinite-list/dimension'; +import { ListDimensionsModel } from '@infinite-list/dimensions-model'; + +// recalculate buffer +export default ( + state: State, + payload: ActionPayload, + ctx: Ctx +) => { + // const { dimension } = payload; + const dimension = payload.dimension as any as ListGroupDimensions; + + const { visibleIndexRange, bufferedIndexRange, maxIndex } = ctx; + + const initialNumToRender = dimension.initialNumToRender; + + const { startIndex, endIndex } = visibleIndexRange; + + if (endIndex - startIndex >= initialNumToRender) { + ctx.bufferedIndexRange.startIndex = startIndex; + ctx.bufferedIndexRange.endIndex = endIndex; + return; + } + + // on initial, maxToRenderPerBatch should be the minimum + const maxToRenderPerBatch = + initialNumToRender > 0 + ? Math.min(dimension.maxToRenderPerBatch, initialNumToRender) + : dimension.maxToRenderPerBatch; + let _nextBufferedEndIndex = bufferedIndexRange.endIndex; + + // if (dimension instanceof ListGroupDimensions) { + let count = 0; + // start from visibleIndexRange which means the below has high priority + // but... if jump to a position, two directions should be considered... + for ( + let startIndex = visibleIndexRange.startIndex; + startIndex <= Math.min(_nextBufferedEndIndex, maxIndex); + startIndex++ + ) { + const dimensionInfo = dimension.getFinalIndexIndexInfo(startIndex); + const currentDimension = dimensionInfo?.dimensions; + + if (currentDimension instanceof Dimension) { + if (currentDimension?.getIgnoredToPerBatch()) continue; + const meta = currentDimension.getMeta(); + if (!isValidMetaLayout(meta)) count++; + } + + if (currentDimension instanceof ListDimensionsModel) { + const meta = currentDimension.getIndexItemMeta( + dimensionInfo?.index || -1 + ); + if (!isValidMetaLayout(meta)) count++; + } + + if (count >= maxToRenderPerBatch) { + _nextBufferedEndIndex = startIndex; + break; + } + } + ctx.bufferedIndexRange.endIndex = _nextBufferedEndIndex; + // } + + // if (dimension instanceof ListDimensions) { + // let count = 0; + // for ( + // let startIndex = visibleIndexRange.startIndex; + // startIndex <= Math.min(_nextBufferedEndIndex, maxIndex); + // startIndex++ + // ) { + // const meta = dimension.getIndexItemMeta(startIndex); + // if (!meta) continue; + // if (!isValidMetaLayout(meta)) count++; + + // if (count >= maxToRenderPerBatch) { + // _nextBufferedEndIndex = startIndex; + // break; + // } + // // } + // log.info('fixInitialBufferedRange ', _nextBufferedEndIndex); + // ctx.bufferedIndexRange.endIndex = _nextBufferedEndIndex; + // } +}; diff --git a/model/group-dimensions/src/state/middleware/fixVisibleRange.ts b/model/group-dimensions/src/state/middleware/fixVisibleRange.ts new file mode 100644 index 00000000..895e823c --- /dev/null +++ b/model/group-dimensions/src/state/middleware/fixVisibleRange.ts @@ -0,0 +1,72 @@ +// import Dimension from '../../Dimension'; +import ListGroupDimensions from '../../ListGroupDimensions'; +// import ListDimensionsModel from '../../ListDimensionsModel'; +// import ListDimensions from '../../ListDimensions'; +import { ActionPayload, Ctx, ReducerResult } from '@infinite-list/state'; +import { isValidMetaLayout } from '@infinite-list/item-meta'; +// import { isValidMetaLayout } from '../../ItemMeta'; +// import { info } from '../../utils/logger'; +import { log } from '@infinite-list/utils'; +import { Dimension } from '@infinite-list/dimension'; +import { ListDimensionsModel } from '@infinite-list/dimensions-model'; + +export default ( + state: State, + payload: ActionPayload, + ctx: Ctx +) => { + // const { dimension } = payload; + const dimension = payload.dimension as any as ListGroupDimensions; + + const { visibleIndexRange } = ctx; + const { startIndex, endIndex } = visibleIndexRange; + let nextStartIndex = startIndex; + + // if (dimension instanceof ListGroupDimensions) { + for (nextStartIndex; nextStartIndex < endIndex; nextStartIndex++) { + const dimensionsInfo = dimension.getFinalIndexIndexInfo(nextStartIndex); + if (!dimensionsInfo) continue; + const { dimensions: currentDimensions, index: currentIndex } = + dimensionsInfo; + if (currentDimensions instanceof Dimension) { + // ignore `ignoredToPerBatch` item + if (currentDimensions?.getIgnoredToPerBatch()) { + continue; + } + const meta = currentDimensions.getMeta(); + if (!isValidMetaLayout(meta)) break; + } + if (currentDimensions instanceof ListDimensionsModel) { + const meta = currentDimensions.getIndexItemMeta(currentIndex); + if (!isValidMetaLayout(meta)) break; + } + } + if (ctx.visibleIndexRange.endIndex !== nextStartIndex) { + log.info( + 'middleware fixVisibleRange endIndex set from ', + endIndex, + ' to ', + nextStartIndex + ); + ctx.visibleIndexRange.endIndex = nextStartIndex; + } + // } + + // if (dimension instanceof ListDimensions) { + // for (nextStartIndex; nextStartIndex < endIndex; nextStartIndex++) { + // // const meta = dimension.getIndexItemMeta(nextStartIndex); + // // if (!meta) continue; + // // if (!isValidMetaLayout(meta)) break; + // } + + // if (ctx.visibleIndexRange.endIndex !== nextStartIndex) { + // log.info( + // 'middleware fixVisibleRange endIndex set from ', + // endIndex, + // ' to ', + // nextStartIndex + // ); + // ctx.visibleIndexRange.endIndex = nextStartIndex; + // } + // } +}; diff --git a/model/group-dimensions/src/types/Inspector.types.ts b/model/group-dimensions/src/types/Inspector.types.ts new file mode 100644 index 00000000..d78d2578 --- /dev/null +++ b/model/group-dimensions/src/types/Inspector.types.ts @@ -0,0 +1,28 @@ +import ListGroupDimensions from '../ListGroupDimensions'; +import { GenericItemT } from './generic.types'; + +export type IndexKeys = Array; +export type OnIndexKeysChanged = { (props?: { indexKeys: IndexKeys }): void }; + +export type InspectorProps = { + owner: ListGroupDimensions; + onChange: OnIndexKeysChanged; +}; + +export type AnchorLocation = { + startIndex: number; + endIndex: number; +}; + +export type AnchorRange = { + [key: string]: AnchorLocation; +}; + +export type InspectingAPI = { + inspectingTimes: number; + inspectingTime: number; + heartBeat: (props: { listKey: string; inspectingTime: number }) => void; + startInspection: () => void; +}; + +export type InspectingListener = (props: InspectingAPI) => void; diff --git a/model/group-dimensions/src/types/ListGroupDimensions.types.ts b/model/group-dimensions/src/types/ListGroupDimensions.types.ts new file mode 100644 index 00000000..7d3ac56c --- /dev/null +++ b/model/group-dimensions/src/types/ListGroupDimensions.types.ts @@ -0,0 +1,81 @@ +import { BaseLayoutProps } from '@infinite-list/base-dimensions'; +import { + OnEndReached, + OnEndReachedHelperProps, + ViewabilityConfigTuplesProps, +} from '@infinite-list/viewable'; +import { ListDimensionsModel } from '@infinite-list/dimensions-model'; +import { ListDimensionsModelProps } from '@infinite-list/dimensions-model'; + +import { Dimension, DimensionProps } from '@infinite-list/dimension'; +import { GenericItemT } from './generic.types'; +import ListGroupDimensions from '../ListGroupDimensions'; + +export type ListRangeResult = ListRange[]; +export type ListRange = + | { + listKey: string; + isDimension: boolean; + value: { + startIndex: number; + endIndex: number; + data: ItemT[]; + }; + } + | { + listKey: string; + isDimension: boolean; + }; + +export interface ListGroupDimensionsProps + extends BaseLayoutProps, + OnEndReachedHelperProps, + ViewabilityConfigTuplesProps { + onUpdateItemLayout?: Function; + onUpdateIntervalTree?: Function; + recycleEnabled?: boolean; + recyclerTypes?: Array; + isFixedLength?: boolean; +} + +export type RegisteredListProps = + Omit< + ListDimensionsModelProps & OnEndReachedHelperProps, + 'container' | 'id' | 'store' + >; +export type RegisteredDimensionProps< + ItemT extends GenericItemT = GenericItemT +> = Omit, 'container' | 'id' | 'store'>; + +export type KeyToOnEndReachedMap = Map; + +export type DimensionsIndexRange = { + dimensions: ListGroupChildDimensions; + startIndex: number; + endIndex: number; + + startIndexInRecycler: number; + endIndexInRecycler: number; +}; + +// export type ListGroupDimensionsModelContainer< +// ItemT extends GenericItemT = GenericItemT +// > = ListGroupDimensions; +// export type ListGroupDimensionsModelContainer< +// ItemT extends GenericItemT = GenericItemT +// > = ListGroupDimensions | ListDimensions; + +export type ListGroupChildDimensions< + ItemT extends GenericItemT = GenericItemT +> = ListDimensionsModel | Dimension; + +export type ListGroupChildDimensionsContainer< + ItemT extends GenericItemT = GenericItemT +> = ListGroupDimensions; + +export type ListGroupIndexInfo = { + dimensions: ListGroupChildDimensions; + index: number; + indexInGroup?: number; + indexInRecycler?: number; +}; diff --git a/model/group-dimensions/src/types/generic.types.ts b/model/group-dimensions/src/types/generic.types.ts new file mode 100644 index 00000000..297f824d --- /dev/null +++ b/model/group-dimensions/src/types/generic.types.ts @@ -0,0 +1,4 @@ +export type GenericItemT = { + [key: string]: any; +}; +export type GenericStateResult = any; diff --git a/model/group-dimensions/src/types/index.ts b/model/group-dimensions/src/types/index.ts new file mode 100644 index 00000000..fd2e2c21 --- /dev/null +++ b/model/group-dimensions/src/types/index.ts @@ -0,0 +1,4 @@ +export * from './Inspector.types'; +export * from './ListGroupDimensions.types'; +export * from './generic.types'; +export * from './scrollMetrics.types'; diff --git a/model/group-dimensions/src/types/scrollMetrics.types.ts b/model/group-dimensions/src/types/scrollMetrics.types.ts new file mode 100644 index 00000000..9b779202 --- /dev/null +++ b/model/group-dimensions/src/types/scrollMetrics.types.ts @@ -0,0 +1,50 @@ +export interface ScrollRectangle { + left: number; + top: number; + bottom: number; + right: number; +} + +export interface ScrollPoint { + x: number; + y: number; +} + +export interface ScrollVelocity { + x: number; + y: number; +} + +export interface ScrollSize { + height: number; + width: number; +} +export type ScrollEventMetrics = { + contentInset: ScrollRectangle; + contentOffset: ScrollPoint; + contentSize: ScrollSize; + layoutMeasurement: ScrollSize; + velocity?: ScrollVelocity | undefined; + zoomScale: number; + /** + * @platform ios + */ + targetContentOffset?: ScrollPoint | undefined; +}; + +export type ScrollMetrics = { + contentLength: number; + offset: number; + visibleLength: number; + + // not used + dOffset?: number; + dt?: number; + timestamp?: number; + velocity?: number; +}; + +export type ContentSize = { + width: number; + height: number; +}; diff --git a/model/group-dimensions/tsconfig.json b/model/group-dimensions/tsconfig.json new file mode 100644 index 00000000..8d9d5912 --- /dev/null +++ b/model/group-dimensions/tsconfig.json @@ -0,0 +1,22 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "commonjs", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ] +} diff --git a/model/group-dimensions/tsconfig.lib.json b/model/group-dimensions/tsconfig.lib.json new file mode 100644 index 00000000..ce3b531c --- /dev/null +++ b/model/group-dimensions/tsconfig.lib.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "declaration": true, + "types": ["node"] + }, + "include": ["src/**/*.ts"], + "exclude": ["vite.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"] +} diff --git a/model/group-dimensions/tsconfig.spec.json b/model/group-dimensions/tsconfig.spec.json new file mode 100644 index 00000000..3c002c21 --- /dev/null +++ b/model/group-dimensions/tsconfig.spec.json @@ -0,0 +1,26 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "types": [ + "vitest/globals", + "vitest/importMeta", + "vite/client", + "node", + "vitest" + ] + }, + "include": [ + "vite.config.ts", + "vitest.config.ts", + "src/**/*.test.ts", + "src/**/*.spec.ts", + "src/**/*.test.tsx", + "src/**/*.spec.tsx", + "src/**/*.test.js", + "src/**/*.spec.js", + "src/**/*.test.jsx", + "src/**/*.spec.jsx", + "src/**/*.d.ts" + ] +} diff --git a/model/group-dimensions/vite.config.ts b/model/group-dimensions/vite.config.ts new file mode 100644 index 00000000..57dffbaf --- /dev/null +++ b/model/group-dimensions/vite.config.ts @@ -0,0 +1,28 @@ +import { defineConfig } from 'vite'; + +import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin'; +import { nxCopyAssetsPlugin } from '@nx/vite/plugins/nx-copy-assets.plugin'; + +export default defineConfig({ + root: __dirname, + cacheDir: '../../node_modules/.vite/model/group-dimensions', + + plugins: [nxViteTsPaths(), nxCopyAssetsPlugin(['*.md'])], + + // Uncomment this if you are using workers. + // worker: { + // plugins: [ nxViteTsPaths() ], + // }, + + test: { + watch: false, + globals: true, + environment: 'node', + include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], + reporters: ['default'], + coverage: { + reportsDirectory: '../../coverage/model/group-dimensions', + provider: 'v8', + }, + }, +}); diff --git a/model/items-dimensions/.swcrc b/model/items-dimensions/.swcrc new file mode 100644 index 00000000..28e88ec1 --- /dev/null +++ b/model/items-dimensions/.swcrc @@ -0,0 +1,29 @@ +{ + "jsc": { + "target": "es2017", + "parser": { + "syntax": "typescript", + "decorators": true, + "dynamicImport": true + }, + "transform": { + "decoratorMetadata": true, + "legacyDecorator": true + }, + "keepClassNames": true, + "externalHelpers": true, + "loose": true + }, + "module": { + "type": "es6" + }, + "sourceMaps": true, + "exclude": [ + "jest.config.ts", + ".*\\.spec.tsx?$", + ".*\\.test.tsx?$", + "./src/jest-setup.ts$", + "./**/jest-setup.ts$", + ".*.js$" + ] +} diff --git a/model/items-dimensions/README.md b/model/items-dimensions/README.md new file mode 100644 index 00000000..6cd52032 --- /dev/null +++ b/model/items-dimensions/README.md @@ -0,0 +1,11 @@ +# items-dimensions + +This library was generated with [Nx](https://nx.dev). + +## Building + +Run `nx build items-dimensions` to build the library. + +## Running unit tests + +Run `nx test items-dimensions` to execute the unit tests via [Vitest](https://vitest.dev/). diff --git a/model/items-dimensions/eslint.config.js b/model/items-dimensions/eslint.config.js new file mode 100644 index 00000000..6e58c36a --- /dev/null +++ b/model/items-dimensions/eslint.config.js @@ -0,0 +1,22 @@ +const baseConfig = require('../../eslint.config.js'); + +module.exports = [ + ...baseConfig, + { + files: ['**/*.json'], + rules: { + '@nx/dependency-checks': [ + 'error', + { + ignoredFiles: [ + '{projectRoot}/eslint.config.{js,cjs,mjs}', + '{projectRoot}/vite.config.{js,ts,mjs,mts}', + ], + }, + ], + }, + languageOptions: { + parser: require('jsonc-eslint-parser'), + }, + }, +]; diff --git a/model/items-dimensions/package.json b/model/items-dimensions/package.json new file mode 100644 index 00000000..08039813 --- /dev/null +++ b/model/items-dimensions/package.json @@ -0,0 +1,16 @@ +{ + "name": "@infinite-list/items-dimensions", + "version": "0.0.1", + "dependencies": { + "@x-oasis/batchinator": "^0.1.14", + "@x-oasis/layout-equal": "^0.1.16", + "@x-oasis/select-value": "^0.1.14", + "@infinite-list/item-meta": "workspace:*", + "@infinite-list/utils": "workspace:*", + "@infinite-list/viewable": "workspace:*", + "@infinite-list/container": "workspace:*", + "@infinite-list/base-dimensions": "workspace:*" + }, + "main": "./index.cjs", + "module": "./index.js" +} diff --git a/model/items-dimensions/project.json b/model/items-dimensions/project.json new file mode 100644 index 00000000..f3112fdd --- /dev/null +++ b/model/items-dimensions/project.json @@ -0,0 +1,22 @@ +{ + "name": "items-dimensions", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "model/items-dimensions/src", + "projectType": "library", + "release": { + "version": { + "generatorOptions": { + "packageRoot": "dist/{projectRoot}", + "currentVersionResolver": "git-tag" + } + } + }, + "tags": [], + "targets": { + "nx-release-publish": { + "options": { + "packageRoot": "dist/{projectRoot}" + } + } + } +} diff --git a/model/items-dimensions/rollup.config.js b/model/items-dimensions/rollup.config.js new file mode 100644 index 00000000..6137641b --- /dev/null +++ b/model/items-dimensions/rollup.config.js @@ -0,0 +1,18 @@ +const { withNx } = require('@nx/rollup/with-nx'); + +module.exports = withNx( + { + main: './src/index.ts', + outputPath: '../../dist/model/items-dimensions', + tsConfig: '../../tsconfig.json', + // tsConfig: './tsconfig.lib.json', + compiler: 'swc', + format: ['cjs', 'esm'], + assets: [{ input: '.', output: '.', glob: '*.md' }], + }, + { + // Provide additional rollup configuration here. See: https://rollupjs.org/configuration-options + // e.g. + // output: { sourcemap: true }, + } +); diff --git a/model/items-dimensions/src/ItemsDimensions.ts b/model/items-dimensions/src/ItemsDimensions.ts new file mode 100644 index 00000000..c6cbd3d0 --- /dev/null +++ b/model/items-dimensions/src/ItemsDimensions.ts @@ -0,0 +1,145 @@ +import Batchinator from '@x-oasis/batchinator'; +import layoutEqual from '@x-oasis/layout-equal'; +import { ItemMeta } from '@infinite-list/item-meta'; +import { BaseDimensions } from '@infinite-list/base-dimensions'; +import SortedItems from './SortedItems'; + +import { ItemLayout, ItemsDimensionsProps, ScrollMetrics } from './types'; +import { ListSpyUtils } from '@infinite-list/utils'; +import { IItemDimensions } from '@infinite-list/types'; + +class ItemsDimensions + extends BaseDimensions + implements IItemDimensions +{ + private _sortedItems: SortedItems; + private _scrollMetrics?: ScrollMetrics; + private _dispatchMetricsBatchinator: Batchinator; + private _onUpdateItemsMetaChangeBatchinator: Batchinator; + public extraInfo: ExtraInfo; + + constructor(props: ItemsDimensionsProps) { + super(props); + + this.extraInfo = {} as ExtraInfo; + this._sortedItems = new SortedItems({ selectValue: this._selectValue }); + this._dispatchMetricsBatchinator = new Batchinator( + this.dispatchMetrics.bind(this), + 100 + ); + this._onUpdateItemsMetaChangeBatchinator = new Batchinator( + this.onUpdateItemsMetaChange.bind(this), + 100 + ); + } + + _setKeyItemLayout(key: string, info: ItemLayout | number) { + const meta = this.getKeyMeta(key); + if (!meta) return false; + const layout = meta.ensureLayout(); + + if (typeof info === 'number') { + const length = this.normalizeLengthNumber(info); + meta.isApproximateLayout = false; + if (this._selectValue.selectLength(layout) !== length) { + this._selectValue.setLength(layout, length); + this._sortedItems.add(meta); + return true; + } + return false; + } + + const _info = this.normalizeLengthInfo(info); + + if (!layoutEqual(layout, _info as ItemLayout)) { + meta.isApproximateLayout = false; + meta.setLayout(_info as ItemLayout); + this._sortedItems.add(meta); + return true; + } + + return false; + } + + ensureKeyMeta(key: string) { + const meta = this.getKeyMeta(key); + if (!meta) { + this.setKeyMeta( + key, + ItemMeta.spawn({ + key, + owner: this, + canIUseRIC: this.canIUseRIC, + }) + ); + } + + return this.getKeyMeta(key); + } + + getIndexInfo() { + return {}; + } + + /** + * + * @returns TODO: + */ + getItemOffset() { + return -1; + } + + computeIndexRangeMeta(minOffset: number, maxOffset: number) { + const headValues = this._sortedItems.getHeadValues({ + minOffset, + maxOffset, + }); + const tailValues = this._sortedItems.getTailValues({ + minOffset, + maxOffset, + }); + + const values: ItemMeta[] = []; + + const mergedValues = ([] as ItemMeta[]).concat(headValues, tailValues); + mergedValues.forEach((value) => { + const index = values.indexOf(value); + if (index === -1) values.push(value); + }); + return values; + } + + dispatchMetrics( + scrollMetrics: ScrollMetrics | undefined = this._scrollMetrics + ) { + if (!scrollMetrics) return; + const { offset: scrollOffset, visibleLength } = scrollMetrics; + const minOffset = scrollOffset; + const maxOffset = scrollOffset + (visibleLength || 0); + + const itemsMeta = this.computeIndexRangeMeta(minOffset, maxOffset); + + this._onUpdateItemsMetaChangeBatchinator.schedule(itemsMeta, scrollMetrics); + } + + updateScrollMetrics( + scrollMetrics: ScrollMetrics | undefined = this._scrollMetrics + ) { + if (!scrollMetrics) return; + if ( + !this._scrollMetrics || + scrollMetrics.contentLength !== this._scrollMetrics.contentLength || + scrollMetrics.offset !== this._scrollMetrics.offset || + scrollMetrics.visibleLength !== this._scrollMetrics.visibleLength + ) { + this._scrollMetrics = scrollMetrics; + if (ListSpyUtils.selector.getDispatchScrollMetricsEnabledStatus()) { + this._dispatchMetricsBatchinator.schedule(scrollMetrics); + } + } + + this._scrollMetrics = scrollMetrics; + } +} + +export default ItemsDimensions; diff --git a/model/items-dimensions/src/SortedItems.ts b/model/items-dimensions/src/SortedItems.ts new file mode 100644 index 00000000..6aa4c4ad --- /dev/null +++ b/model/items-dimensions/src/SortedItems.ts @@ -0,0 +1,214 @@ +// import ItemMeta from './ItemMeta'; +import { ItemMeta } from '@infinite-list/item-meta'; +import SelectValue from '@x-oasis/select-value'; +export default class SortedItems { + readonly selectValue: SelectValue; + private _items: Array = []; + private _headValues: Array = []; + private _tailValues: Array = []; + + constructor(props: { selectValue: SelectValue }) { + const { selectValue } = props; + this.selectValue = selectValue; + } + + has(itemMeta: ItemMeta) { + const index = this._items.findIndex((i) => i === itemMeta); + return index !== -1; + } + + /** + * + * @param itemMeta + * @returns boolean; true measure a new item and sorted. false means update with layout not + * change. + */ + + add(itemMeta: ItemMeta) { + const index = this._items.findIndex((v) => v === itemMeta); + if (index === -1) { + this._items.push(itemMeta); + this._headValues.push(itemMeta); + this._tailValues.push(itemMeta); + } + + this.sortValues(); + return true; + } + + sortValues() { + const { selectOffset, selectLength } = this.selectValue; + + this._headValues.sort((a, b) => { + const a1 = selectOffset(a.getLayout()!); + const b1 = selectOffset(b.getLayout()!); + // 由小到大 + return a1 - b1; + }); + + this._tailValues.sort((a, b) => { + const a1 = selectOffset(a.getLayout()!) + selectLength(a.getLayout()!); + const b1 = selectOffset(b.getLayout()!) + selectLength(b.getLayout()!); + // 由小到大 + return a1 - b1; + }); + } + + remove(itemMeta: ItemMeta) { + const index = this._items.findIndex((i) => i === itemMeta); + if (index !== -1) this._items.splice(index, 1); + + const headValueIndex = this._headValues.findIndex((i) => i === itemMeta); + if (headValueIndex !== -1) this._headValues.splice(index, 1); + + const tailValueIndex = this._tailValues.findIndex((i) => i === itemMeta); + if (tailValueIndex !== -1) this._tailValues.splice(index, 1); + } + + getItems() { + return this._items; + } + + getHeadItems() { + return this._headValues; + } + + getTailItems() { + return this._tailValues; + } + + getSize() { + return this._items.length; + } + + getValues(props: { minOffset: number; maxOffset: number }) { + const { minOffset, maxOffset } = props; + const headValues = this.getHeadValues({ + minOffset, + maxOffset, + }); + const tailValues = this.getTailValues({ + minOffset, + maxOffset, + }); + const values: ItemMeta[] = []; + + const mergedValues = ([] as ItemMeta[]).concat(headValues, tailValues); + mergedValues.forEach((value) => { + const index = values.indexOf(value); + if (index === -1) values.push(value); + }); + return values; + } + + getHeadValues(props: { + minOffset: number; + maxOffset: number; + }): Array { + const { selectOffset, selectLength } = this.selectValue; + const { minOffset, maxOffset } = props; + const getValue = (item: ItemMeta) => selectOffset(item.getLayout()!); + const data = this._headValues; + if (!data.length) return []; + + const min = 0; + const max = data.length - 1; + + const minValue = getValue(data[min]); + const maxValue = getValue(data[max]); + + if (maxOffset < minValue || minOffset > maxValue) return []; + + let startIndex = this.greatestLowerBound({ + value: minOffset, + getValue, + data, + }); + const endIndex = this.greatestLowerBound({ + value: maxOffset, + getValue, + data, + }); + + if (startIndex > 0) { + const prev = data[startIndex - 1]; + const layout = prev.getLayout(); + if (layout) { + if (minOffset < selectLength(layout) + selectOffset(layout)) { + startIndex = startIndex - 1; + } + } + } + + return data.slice(startIndex, endIndex); + } + + getTailValues(props: { + minOffset: number; + maxOffset: number; + }): Array { + const { selectOffset, selectLength } = this.selectValue; + const { minOffset, maxOffset } = props; + const getValue = (item: ItemMeta) => + selectOffset(item.getLayout()!) + selectLength(item.getLayout()!); + const data = this._headValues; + const len = data.length; + if (!len) return []; + + const min = 0; + const max = data.length - 1; + + const minValue = getValue(data[min]); + const maxValue = getValue(data[max]); + + if (maxOffset < minValue || minOffset > maxValue) return []; + + const startIndex = this.greatestLowerBound({ + value: minOffset, + getValue, + data, + }); + let endIndex = this.greatestLowerBound({ + value: maxOffset, + getValue, + data, + }); + + if (endIndex < len) { + const item = data[endIndex]; + const layout = item?.getLayout(); + // 即使相等也要将最后一个包含进去 + if (layout && maxOffset >= selectOffset(layout)) { + endIndex = endIndex + 1; + } + } + + return data.slice(startIndex, endIndex); + } + + // https://stackoverflow.com/a/29018745/2006805 + greatestLowerBound(props: { + value: number; + getValue: (item: any) => number; + data: Array; + }) { + const { value, getValue, data = [] } = props; + + let min = 0; + let max = data.length - 1; + + while (min <= max) { + const index = (min + max) >> 1; + const item = data[index]; + const cmp = value - getValue(item); + if (cmp > 0) { + min = index + 1; + } else if (cmp < 0) { + max = index - 1; + } else { + return index; + } + } + return min; + } +} diff --git a/model/items-dimensions/src/index.ts b/model/items-dimensions/src/index.ts new file mode 100644 index 00000000..17a3064c --- /dev/null +++ b/model/items-dimensions/src/index.ts @@ -0,0 +1 @@ +export { default as ItemsDimensions } from './ItemsDimensions'; diff --git a/model/items-dimensions/src/types/BaseDimensions.types.ts b/model/items-dimensions/src/types/BaseDimensions.types.ts new file mode 100644 index 00000000..b96c3eb9 --- /dev/null +++ b/model/items-dimensions/src/types/BaseDimensions.types.ts @@ -0,0 +1,38 @@ +import { BaseLayoutProps } from './BaseLayout.types'; +import { + OnViewableItemsChanged, + ViewabilityConfig, + ViewabilityConfigCallbackPairs, +} from '@infinite-list/viewable'; +// import ListDimensions from '../ListDimensions'; +// import ListDimensionsModel from '../ListDimensionsModel'; +// import Dimension from '../Dimension'; +// import { GenericItemT } from './generic.types'; +// import { ListGroupChildDimensionsContainer } from './ListDimensionsModel.types'; +// import ListDimensions from '../ListDimensions'; +// import ListGroupDimensions from '../ListGroupDimensions'; +// import Dimension from '../Dimension'; + +export interface BaseDimensionsProps extends BaseLayoutProps { + ignoredToPerBatch?: boolean; + + lengthPrecision?: number; + recyclerType?: string; + + onUpdateItemLayout?: Function; + onUpdateIntervalTree?: Function; + isIntervalTreeItems?: boolean; + viewabilityConfig?: ViewabilityConfig; + onViewableItemsChanged?: OnViewableItemsChanged; + viewabilityConfigCallbackPairs?: ViewabilityConfigCallbackPairs; +} + +export enum KeysChangedType { + 'Initial' = 'initial', + 'Equal' = 'equal', + 'Remove' = 'remove', + 'Append' = 'append', + 'Add' = 'add', + 'Reorder' = 'reorder', + 'Idle' = 'idle', +} diff --git a/model/items-dimensions/src/types/BaseLayout.types.ts b/model/items-dimensions/src/types/BaseLayout.types.ts new file mode 100644 index 00000000..6c95143e --- /dev/null +++ b/model/items-dimensions/src/types/BaseLayout.types.ts @@ -0,0 +1,39 @@ +import { BaseContainerProps } from '@infinite-list/container'; + +export enum BoundInfoType { + 'Hover' = 'hover', + 'OutOfBoundary' = 'outOfBoundary', +} + +export type BoundInfo = { + type: BoundInfoType; + index: number; +}; + +export type ItemLayout = { + x: number; + y: number; + width: number; + height: number; +}; + +export enum FillingMode { + SPACE = 'space', + RECYCLE = 'recycle', +} + +export interface BaseLayoutProps extends BaseContainerProps { + windowSize?: number; + maxToRenderPerBatch?: number; + initialNumToRender?: number; + persistanceIndices?: Array; + stickyHeaderIndices?: Array; + + recycleThreshold?: number; + recycleBufferedCount?: number; + recycleEnabled?: boolean; + + lengthPrecision?: number; + + itemOffsetBeforeLayoutReady?: number; +} diff --git a/model/items-dimensions/src/types/ItemsDimensions.types.ts b/model/items-dimensions/src/types/ItemsDimensions.types.ts new file mode 100644 index 00000000..46cc71c9 --- /dev/null +++ b/model/items-dimensions/src/types/ItemsDimensions.types.ts @@ -0,0 +1,3 @@ +import { BaseDimensionsProps } from './BaseDimensions.types'; + +export type ItemsDimensionsProps = BaseDimensionsProps; diff --git a/model/items-dimensions/src/types/index.ts b/model/items-dimensions/src/types/index.ts new file mode 100644 index 00000000..b556b17c --- /dev/null +++ b/model/items-dimensions/src/types/index.ts @@ -0,0 +1,15 @@ +export * from './BaseDimensions.types'; +export * from './BaseLayout.types'; +export * from './ItemsDimensions.types'; + +export type ScrollMetrics = { + contentLength: number; + offset: number; + visibleLength: number; + + // not used + dOffset?: number; + dt?: number; + timestamp?: number; + velocity?: number; +}; diff --git a/model/items-dimensions/tsconfig.json b/model/items-dimensions/tsconfig.json new file mode 100644 index 00000000..8d9d5912 --- /dev/null +++ b/model/items-dimensions/tsconfig.json @@ -0,0 +1,22 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "commonjs", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ] +} diff --git a/model/items-dimensions/tsconfig.lib.json b/model/items-dimensions/tsconfig.lib.json new file mode 100644 index 00000000..ce3b531c --- /dev/null +++ b/model/items-dimensions/tsconfig.lib.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "declaration": true, + "types": ["node"] + }, + "include": ["src/**/*.ts"], + "exclude": ["vite.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"] +} diff --git a/model/items-dimensions/tsconfig.spec.json b/model/items-dimensions/tsconfig.spec.json new file mode 100644 index 00000000..3c002c21 --- /dev/null +++ b/model/items-dimensions/tsconfig.spec.json @@ -0,0 +1,26 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "types": [ + "vitest/globals", + "vitest/importMeta", + "vite/client", + "node", + "vitest" + ] + }, + "include": [ + "vite.config.ts", + "vitest.config.ts", + "src/**/*.test.ts", + "src/**/*.spec.ts", + "src/**/*.test.tsx", + "src/**/*.spec.tsx", + "src/**/*.test.js", + "src/**/*.spec.js", + "src/**/*.test.jsx", + "src/**/*.spec.jsx", + "src/**/*.d.ts" + ] +} diff --git a/model/items-dimensions/vite.config.ts b/model/items-dimensions/vite.config.ts new file mode 100644 index 00000000..cf6d498d --- /dev/null +++ b/model/items-dimensions/vite.config.ts @@ -0,0 +1,28 @@ +import { defineConfig } from 'vite'; + +import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin'; +import { nxCopyAssetsPlugin } from '@nx/vite/plugins/nx-copy-assets.plugin'; + +export default defineConfig({ + root: __dirname, + cacheDir: '../../node_modules/.vite/model/items-dimensions', + + plugins: [nxViteTsPaths(), nxCopyAssetsPlugin(['*.md'])], + + // Uncomment this if you are using workers. + // worker: { + // plugins: [ nxViteTsPaths() ], + // }, + + test: { + watch: false, + globals: true, + environment: 'node', + include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], + reporters: ['default'], + coverage: { + reportsDirectory: '../../coverage/model/items-dimensions', + provider: 'v8', + }, + }, +}); diff --git a/model/list-dimensions/.swcrc b/model/list-dimensions/.swcrc new file mode 100644 index 00000000..28e88ec1 --- /dev/null +++ b/model/list-dimensions/.swcrc @@ -0,0 +1,29 @@ +{ + "jsc": { + "target": "es2017", + "parser": { + "syntax": "typescript", + "decorators": true, + "dynamicImport": true + }, + "transform": { + "decoratorMetadata": true, + "legacyDecorator": true + }, + "keepClassNames": true, + "externalHelpers": true, + "loose": true + }, + "module": { + "type": "es6" + }, + "sourceMaps": true, + "exclude": [ + "jest.config.ts", + ".*\\.spec.tsx?$", + ".*\\.test.tsx?$", + "./src/jest-setup.ts$", + "./**/jest-setup.ts$", + ".*.js$" + ] +} diff --git a/model/list-dimensions/README.md b/model/list-dimensions/README.md new file mode 100644 index 00000000..40717794 --- /dev/null +++ b/model/list-dimensions/README.md @@ -0,0 +1,11 @@ +# list-dimensions + +This library was generated with [Nx](https://nx.dev). + +## Building + +Run `nx build list-dimensions` to build the library. + +## Running unit tests + +Run `nx test list-dimensions` to execute the unit tests via [Vitest](https://vitest.dev/). diff --git a/model/list-dimensions/eslint.config.js b/model/list-dimensions/eslint.config.js new file mode 100644 index 00000000..6e58c36a --- /dev/null +++ b/model/list-dimensions/eslint.config.js @@ -0,0 +1,22 @@ +const baseConfig = require('../../eslint.config.js'); + +module.exports = [ + ...baseConfig, + { + files: ['**/*.json'], + rules: { + '@nx/dependency-checks': [ + 'error', + { + ignoredFiles: [ + '{projectRoot}/eslint.config.{js,cjs,mjs}', + '{projectRoot}/vite.config.{js,ts,mjs,mts}', + ], + }, + ], + }, + languageOptions: { + parser: require('jsonc-eslint-parser'), + }, + }, +]; diff --git a/model/list-dimensions/package.json b/model/list-dimensions/package.json new file mode 100644 index 00000000..ea659ae2 --- /dev/null +++ b/model/list-dimensions/package.json @@ -0,0 +1,13 @@ +{ + "name": "@infinite-list/list-dimensions", + "version": "0.0.1", + "dependencies": { + "@infinite-list/dimensions-model": "workspace:*", + "@infinite-list/state": "workspace:*", + "@infinite-list/strategies": "workspace:*", + "@x-oasis/batchinator": "^0.1.14", + "@x-oasis/prefix-interval-tree": "^0.2.4" + }, + "main": "./index.cjs", + "module": "./index.js" +} diff --git a/model/list-dimensions/project.json b/model/list-dimensions/project.json new file mode 100644 index 00000000..99b553a7 --- /dev/null +++ b/model/list-dimensions/project.json @@ -0,0 +1,28 @@ +{ + "name": "list-dimensions", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "model/list-dimensions/src", + "projectType": "library", + "release": { + "version": { + "generatorOptions": { + "packageRoot": "dist/{projectRoot}", + "currentVersionResolver": "git-tag" + } + } + }, + "tags": [], + "targets": { + "nx-release-publish": { + "options": { + "packageRoot": "dist/{projectRoot}" + } + }, + "test": { + "executor": "@nx/vite:test", + "options": { + "config": "packages/data-model/vite.config.ts" + } + } + } +} diff --git a/model/list-dimensions/rollup.config.js b/model/list-dimensions/rollup.config.js new file mode 100644 index 00000000..5bdeae65 --- /dev/null +++ b/model/list-dimensions/rollup.config.js @@ -0,0 +1,17 @@ +const { withNx } = require('@nx/rollup/with-nx'); + +module.exports = withNx( + { + main: './src/index.ts', + outputPath: '../../dist/model/list-dimensions', + tsConfig: './tsconfig.lib.json', + compiler: 'swc', + format: ['cjs', 'esm'], + assets: [{ input: '.', output: '.', glob: '*.md' }], + }, + { + // Provide additional rollup configuration here. See: https://rollupjs.org/configuration-options + // e.g. + // output: { sourcemap: true }, + } +); diff --git a/model/list-dimensions/src/ListDimensions.ts b/model/list-dimensions/src/ListDimensions.ts new file mode 100644 index 00000000..24ecd6af --- /dev/null +++ b/model/list-dimensions/src/ListDimensions.ts @@ -0,0 +1,184 @@ +import { BaseImpl } from '@infinite-list/strategies'; +import { ReducerResult } from '@infinite-list/state'; +import { ListDimensionsModel } from '@infinite-list/dimensions-model'; +import PrefixIntervalTree from '@x-oasis/prefix-interval-tree'; +import { ScrollMetrics, GenericItemT } from './types'; +import { ListIndexInfo } from '@infinite-list/item-meta'; +import { + ItemLayout, + ListDimensionsModelProps, +} from '@infinite-list/dimensions-model'; +import { IndexToOffsetMap } from '@infinite-list/dimensions-model'; +import { IListDimensions } from '@infinite-list/types'; +import { createStore } from './state'; + +class ListDimensions + extends BaseImpl + implements IListDimensions +{ + private _dataModel: ListDimensionsModel; + + constructor( + props: Omit, 'container' | 'store'> + ) { + super({ + ...props, + store: createStore(), + }); + this._dataModel = new ListDimensionsModel({ + recycleEnabled: true, + ...props, + // @ts-ignore [TODO] + container: this, + }); + } + + getKeyIndex(key: string) { + return this._dataModel.getKeyIndex(key); + } + + getIndexKey(index: number) { + return this._dataModel.getIndexKey(index); + } + + getIntervalTree(): PrefixIntervalTree { + return this._dataModel.intervalTree; + } + + getItemMeta(item: ItemT, index: number) { + return this._dataModel.getItemMeta(item, index); + } + + getData() { + return this._dataModel.getData(); + } + + setData(data: Array) { + return this._dataModel.setData(data); + } + + getDataLength() { + return this._dataModel.length; + } + + getTotalLength() { + return this._dataModel.getTotalLength(); + } + getReflowItemsLength() { + return this._dataModel.getReflowItemsLength(); + } + + getFinalItemKey(item: ItemT) { + return this._dataModel.getFinalItemKey(item) || ''; + } + + getFinalIndexItemMeta(index: number) { + return this._dataModel.getIndexItemMeta(index); + } + + getFinalItemMeta(item: ItemT) { + return this._dataModel.getFinalItemMeta(item); + } + + getFinalIndexItemLength(index: number) { + const itemMeta = this.getFinalIndexItemMeta(index); + if (itemMeta) return itemMeta.getFinalItemLength(); + return 0; + } + + getFinalIndexKeyOffset(index: number, exclusive?: boolean) { + return this.getIndexKeyOffset(index, exclusive); + } + + getFinalIndexKeyBottomOffset(index: number, exclusive?: boolean) { + const containerOffset = exclusive ? 0 : this.getContainerOffset(); + const height = this.getTotalLength(); + return containerOffset + (typeof height === 'number' ? height : 0); + } + + /** + * TODO: important !!!!!!! + * @param startIndex + * @param endIndex + * @param exclusive + * @returns + * + * fix snap jump issue which may cause blank... + */ + getFinalIndexRangeOffsetMap( + startIndex: number, + endIndex: number, + exclusive?: boolean + ) { + const indexToOffsetMap: IndexToOffsetMap = {}; + let startOffset = this.getFinalIndexKeyOffset(startIndex, exclusive); + + for (let index = startIndex; index <= endIndex; index++) { + const itemMeta = this.getFinalIndexItemMeta(index); + + if (!itemMeta) continue; + + indexToOffsetMap[index] = startOffset; + + // high light ------ + if (itemMeta?.isApproximateLayout) { + indexToOffsetMap[index] = this.itemOffsetBeforeLayoutReady; + } else { + indexToOffsetMap[index] = startOffset; + } + + startOffset += itemMeta?.getFinalItemLength(); + } + return indexToOffsetMap; + } + + computeIndexRange(minOffset: number, maxOffset: number) { + return this._dataModel.computeIndexRange(minOffset, maxOffset); + } + getIndexKeyOffset(index: number, exclusive?: boolean) { + return this._dataModel.getIndexKeyOffset(index, exclusive); + } + getIndexItemMeta(index: number) { + return this._dataModel.getIndexItemMeta(index); + } + + onItemLayoutChanged() { + this.updateScrollMetrics(this._scrollMetrics); + } + + onDataSourceChanged() { + this.updateScrollMetrics(this._scrollMetrics); + } + + getFinalKeyIndexInfo(key: string): ListIndexInfo { + return { + dimensions: this._dataModel, + index: this._dataModel.getKeyIndex(key) || 0, + }; + } + + setFinalKeyItemLayout( + itemKey: string, + layout: ItemLayout | number, + updateIntervalTree?: boolean + ) { + return this._dataModel.setKeyItemLayout( + itemKey, + layout, + updateIntervalTree + ); + } + + updateScrollMetrics( + _scrollMetrics?: ScrollMetrics, + _options?: { + useCache?: boolean; + flush?: boolean; + } + ) { + this._scrollMetrics = _scrollMetrics || this._scrollMetrics; + this._updateScrollMetrics(this._scrollMetrics, _options); + } +} + +export default ListDimensions; diff --git a/model/list-dimensions/src/__test__/ListDimensions.recycle.test.ts b/model/list-dimensions/src/__test__/ListDimensions.recycle.test.ts new file mode 100644 index 00000000..608e1d24 --- /dev/null +++ b/model/list-dimensions/src/__test__/ListDimensions.recycle.test.ts @@ -0,0 +1,922 @@ +import ListDimensions from '../ListDimensions'; +import Batchinator from '@x-oasis/batchinator'; +import { RecycleStateResult } from '@infinite-list/strategies'; +import { KeysChangedType } from '@infinite-list/base-dimensions'; +import { defaultKeyExtractor } from '@infinite-list/utils'; +import { resetContext } from '@infinite-list/item-meta'; +import { vi, describe, it, expect, beforeEach, afterEach } from 'vitest'; +const buildData = (count: number, startIndex = 0) => + new Array(count).fill(1).map((v, index) => ({ + key: index + startIndex, + })); + +vi.spyOn(Batchinator.prototype, 'schedule').mockImplementation(function ( + ...args +) { + // eslint-disable-next-line prefer-spread + this._callback.apply(this, args); +}); + +describe('basic', () => { + beforeEach(() => { + resetContext(); + }); + + it('constructor - default value', () => { + const listDimensions = new ListDimensions({ + id: 'list_group', + keyExtractor: defaultKeyExtractor, + data: [], + getContainerLayout: () => ({ + x: 0, + y: 2000, + width: 375, + height: 2000, + }), + }); + + expect(listDimensions.maxToRenderPerBatch).toBe(10); + expect(listDimensions.windowSize).toBe(5); + expect(listDimensions.initialNumToRender).toBe(10); + expect(listDimensions.onEndReachedThreshold).toBe(2); + expect(listDimensions.horizontal).toBe(false); + }); + + it('constructor', () => { + const listDimensions = new ListDimensions({ + id: 'list_group', + keyExtractor: defaultKeyExtractor, + data: buildData(50), + maxToRenderPerBatch: 7, + windowSize: 9, + initialNumToRender: 20, + onEndReachedThreshold: 2, + horizontal: true, + getContainerLayout: () => ({ + x: 0, + y: 2000, + width: 375, + height: 2000, + }), + }); + + expect(listDimensions.maxToRenderPerBatch).toBe(7); + expect(listDimensions.windowSize).toBe(9); + expect(listDimensions.initialNumToRender).toBe(20); + expect(listDimensions.onEndReachedThreshold).toBe(2); + expect(listDimensions.horizontal).toBe(true); + }); + + it('verify changedType', () => { + const data = buildData(10); + + const listDimensions = new ListDimensions({ + id: 'list_1', + data, + keyExtractor: defaultKeyExtractor, + }); + + const nextData = data.slice(); + nextData.splice(3, 1); + const changedType = listDimensions.setData(nextData); + expect(changedType).toBe(KeysChangedType.Remove); + + const changedTypeAdd = listDimensions.setData(buildData(12)); + expect(changedTypeAdd).toBe(KeysChangedType.Add); + }); + + it('initial itemMeta instance layout -- with getItemLayout', () => { + const data = buildData(10); + + const listDimensions = new ListDimensions({ + id: 'list_1', + data, + keyExtractor: defaultKeyExtractor, + getItemLayout: (item, index) => ({ + index, + length: 100, + }), + }); + + data.forEach((item, index) => { + const meta = listDimensions.getItemMeta(item, index); + expect(meta.getLayout()).toEqual({ + x: 0, + y: 0, + height: 100, + width: 0, + }); + }); + + expect(listDimensions.getReflowItemsLength()).toBe(10); + }); + + it('initial itemMeta instance layout -- without getItemLayout', () => { + const data = buildData(10); + + const listDimensions = new ListDimensions({ + id: 'list_1', + data, + keyExtractor: defaultKeyExtractor, + }); + + data.forEach((item, index) => { + const meta = listDimensions.getItemMeta(item, index); + expect(meta.getLayout()).toEqual({ + x: 0, + y: 0, + height: 80, + width: 0, + }); + }); + expect(listDimensions.getReflowItemsLength()).toBe(10); + }); +}); + +describe('setData', () => { + beforeEach(() => { + resetContext(); + }); + it('initial', () => { + const data = buildData(20); + const recycleList = new ListDimensions<{ key: number }>({ + data: [], + id: 'list_group', + recycleEnabled: true, + keyExtractor: defaultKeyExtractor, + maxToRenderPerBatch: 10, + windowSize: 5, + initialNumToRender: 4, + onEndReachedThreshold: 2, + getContainerLayout: () => ({ + x: 0, + y: 2000, + width: 375, + height: 2000, + }), + getItemLayout: (data, index) => ({ + length: 100, + index, + }), + }); + const _intervalTree = recycleList.getIntervalTree(); + const type = recycleList.setData(data); + expect(type).toBe(KeysChangedType.Initial); + // on initial interval tree should not change. + expect(_intervalTree).toBe(recycleList.getIntervalTree()); + }); + + it('append', () => { + const data = buildData(20); + const recycleList = new ListDimensions<{ key: number }>({ + data, + id: 'list_group', + recycleEnabled: true, + keyExtractor: defaultKeyExtractor, + maxToRenderPerBatch: 10, + windowSize: 5, + initialNumToRender: 4, + onEndReachedThreshold: 2, + getContainerLayout: () => ({ + x: 0, + y: 2000, + width: 375, + height: 2000, + }), + getItemLayout: (data, index) => ({ + length: 100, + index, + }), + getItemSeparatorLength: () => ({ + length: 20, + }), + }); + + const _intervalTree = recycleList.getIntervalTree(); + expect(recycleList.getFinalIndexItemLength(19)).toBe(100); + const newData = [].concat(data, buildData(1, 20)); + + const type = recycleList.setData(newData); + + expect(type).toBe(KeysChangedType.Append); + // on initial interval tree should not change. + expect(_intervalTree).toBe(recycleList.getIntervalTree()); + expect(recycleList.getFinalIndexItemLength(19)).toBe(120); + expect(recycleList.getFinalIndexItemLength(20)).toBe(100); + }); + + it('append with duplicate key', () => { + const data = buildData(20); + const recycleList = new ListDimensions({ + data, + id: 'list_group', + recycleEnabled: true, + keyExtractor: defaultKeyExtractor, + maxToRenderPerBatch: 10, + windowSize: 5, + initialNumToRender: 4, + onEndReachedThreshold: 2, + getContainerLayout: () => ({ + x: 0, + y: 2000, + width: 375, + height: 2000, + }), + getItemLayout: (data, index) => ({ + length: 100, + index, + }), + getItemSeparatorLength: () => ({ + length: 20, + }), + }); + + const _intervalTree = recycleList.getIntervalTree(); + expect(recycleList.getFinalIndexItemLength(19)).toBe(100); + const newData = [].concat(data, buildData(10, 19)); + + const type = recycleList.setData(newData); + + expect(type).toBe(KeysChangedType.Append); + expect(recycleList.getData().length).toBe(29); + // on initial interval tree should not change. + expect(_intervalTree).toBe(recycleList.getIntervalTree()); + expect(recycleList.getKeyIndex('20')).toBe(20); + expect(recycleList.getIntervalTree().getHeap()[1]).toBe(3460); + }); + + it('shuffle', () => { + const data = buildData(20); + const recycleList = new ListDimensions({ + data, + id: 'list_group', + recycleEnabled: true, + keyExtractor: defaultKeyExtractor, + maxToRenderPerBatch: 10, + windowSize: 5, + initialNumToRender: 4, + onEndReachedThreshold: 2, + getContainerLayout: () => ({ + x: 0, + y: 2000, + width: 375, + height: 2000, + }), + useItemApproximateLength: false, + }); + + let _intervalTree = recycleList.getIntervalTree(); + expect(recycleList.getFinalIndexItemLength(19)).toBe(0); + recycleList.setFinalKeyItemLayout('0', 100); + recycleList.setFinalKeyItemLayout('1', 80); + recycleList.setFinalKeyItemLayout('2', 100); + recycleList.setFinalKeyItemLayout('3', 20); + recycleList.setFinalKeyItemLayout('4', 100); + recycleList.setFinalKeyItemLayout('5', 30); + recycleList.setFinalKeyItemLayout('6', 100); + recycleList.setFinalKeyItemLayout('7', 200); + expect( + recycleList + .getIntervalTree() + .getHeap() + .slice( + recycleList.getIntervalTree().getSize(), + recycleList.getIntervalTree().getSize() + 10 + ) + ).toEqual([100, 80, 100, 20, 100, 30, 100, 200, 0, 0]); + // add + let _data = data.slice(); + const newData = buildData(1, 20); + _data.splice(1, 0, newData[0]); + let type = recycleList.setData(_data); + expect(type).toBe(KeysChangedType.Add); + expect(_intervalTree).not.toBe(recycleList.getIntervalTree()); + _intervalTree = recycleList.getIntervalTree(); + expect( + recycleList + .getIntervalTree() + .getHeap() + .slice( + recycleList.getIntervalTree().getSize(), + recycleList.getIntervalTree().getSize() + 10 + ) + ).toEqual([100, 0, 80, 100, 20, 100, 30, 100, 200, 0]); + + // remove + _data = _data.slice(); + _data.splice(3, 1); + type = recycleList.setData(_data); + expect(type).toBe(KeysChangedType.Remove); + expect(_intervalTree).not.toBe(recycleList.getIntervalTree()); + _intervalTree = recycleList.getIntervalTree(); + expect( + recycleList + .getIntervalTree() + .getHeap() + .slice( + recycleList.getIntervalTree().getSize(), + recycleList.getIntervalTree().getSize() + 10 + ) + ).toEqual([100, 0, 80, 20, 100, 30, 100, 200, 0, 0]); + + // reorder + _data = _data.slice(); + const data5 = _data[5]; + _data.splice(5, 1); + _data.splice(7, 0, data5); + type = recycleList.setData(_data); + expect(type).toBe(KeysChangedType.Reorder); + expect(_intervalTree).not.toBe(recycleList.getIntervalTree()); + _intervalTree = recycleList.getIntervalTree(); + expect( + recycleList + .getIntervalTree() + .getHeap() + .slice( + recycleList.getIntervalTree().getSize(), + recycleList.getIntervalTree().getSize() + 10 + ) + ).toEqual([100, 0, 80, 20, 100, 100, 200, 30, 0, 0]); + }); +}); + +// describe('lifecycle', () => { +// it('initialization - update data source (initialNumToRender: 10 and container offset: 2000 ) and use viewabilityConfig', () => { +// const data = buildData(100); +// const recycleList = new ListDimensions({ +// data: [], +// id: 'list_group', +// recycleEnabled: true, +// keyExtractor: defaultKeyExtractor, +// maxToRenderPerBatch: 7, +// windowSize: 5, +// initialNumToRender: 10, +// onEndReachedThreshold: 2, +// getItemLayout: (item, index) => ({ +// length: 100, +// index, +// }), +// getContainerLayout: () => ({ +// x: 0, +// y: 2000, +// width: 375, +// height: 2000, +// }), +// viewabilityConfigCallbackPairs: [ +// { +// viewabilityConfig: { +// viewport: 1, +// name: 'imageViewable', +// viewAreaCoveragePercentThreshold: 0, +// }, +// }, +// { +// viewabilityConfig: { +// name: 'viewable', +// viewAreaCoveragePercentThreshold: 0, +// }, +// }, +// ], +// }); + +// expect(recycleList.state).toEqual({ +// visibleStartIndex: -1, +// visibleEndIndex: -1, +// bufferedStartIndex: -1, +// bufferedEndIndex: -1, +// isEndReached: false, +// distanceFromEnd: 0, +// data: [], +// actionType: 'initial', +// }); + +// recycleList.setData(data); + +// expect(recycleList.state).toEqual({ +// visibleStartIndex: 0, +// visibleEndIndex: 9, +// bufferedStartIndex: 0, +// bufferedEndIndex: 9, +// isEndReached: false, +// distanceFromEnd: 0, +// data: data.slice(0, 10), +// actionType: 'initial', +// }); + +// let recycleListStateResult = +// recycleList.stateResult as RecycleStateResult; + +// expect(recycleListStateResult.spaceState.length).toBe(10); +// expect(recycleListStateResult.recycleState.length).toBe(2); + +// // expect(recycleListStateResult.spaceState.map((v) => v.viewable)).toEqual([ +// // true, +// // true, +// // true, +// // true, +// // true, +// // true, +// // true, +// // true, +// // true, +// // true, +// // ]); +// // expect( +// // recycleListStateResult.spaceState.map((v) => v.imageViewable) +// // ).toEqual([true, true, true, true, true, true, true, true, true, true]); + +// // @ts-ignore +// recycleList.updateScrollMetrics({ +// offset: 0, +// visibleLength: 926, +// contentLength: 1000, +// }); + +// expect(recycleList.state).toEqual({ +// visibleStartIndex: -1, +// visibleEndIndex: -1, +// bufferedStartIndex: 0, +// bufferedEndIndex: 14, +// isEndReached: true, +// distanceFromEnd: 74, +// data: data.slice(0, 100), +// actionType: 'hydrationWithBatchUpdate', +// }); + +// recycleListStateResult = recycleList.stateResult as RecycleStateResult; + +// expect(recycleListStateResult.spaceState.length).toBe(11); +// expect(recycleListStateResult.spaceState[10].key).toBe( +// buildStateTokenIndexKey(10, 99) +// ); +// expect(recycleListStateResult.spaceState[10].length).toBe(9000); + +// expect(recycleListStateResult.recycleState.length).toBe(2); + +// // @ts-ignore +// recycleList.updateScrollMetrics({ +// offset: 0, +// visibleLength: 926, +// contentLength: 1200, +// }); + +// expect(recycleList.state).toEqual({ +// visibleStartIndex: -1, +// visibleEndIndex: -1, +// bufferedStartIndex: 0, +// bufferedEndIndex: 14, +// isEndReached: true, +// distanceFromEnd: 74, +// data: data.slice(0, 100), +// actionType: 'hydrationWithBatchUpdate', +// }); + +// recycleListStateResult = recycleList.stateResult as RecycleStateResult; + +// expect(recycleListStateResult.recycleState.length).toBe(2); + +// expect(recycleListStateResult.recycleState.map((v) => v.item.key)).toEqual([ +// 10, 11, +// ]); +// expect(recycleListStateResult.recycleState.map((v) => v.key)).toEqual([ +// 'recycle_0', +// 'recycle_1', +// // 'recycle_2', +// // 'recycle_3', +// ]); +// // expect(recycleListStateResult.recycleState.map((v) => v.viewable)).toEqual( +// // [] +// // ); +// // expect( +// // recycleListStateResult.recycleState.map((v) => v.imageViewable) +// // ).toEqual([]); + +// // @ts-ignore +// recycleList.updateScrollMetrics({ +// offset: 3000, +// visibleLength: 926, +// contentLength: 4500, +// }); + +// recycleListStateResult = recycleList.stateResult as RecycleStateResult; + +// expect(recycleList.state).toEqual({ +// isEndReached: true, +// distanceFromEnd: 574, +// actionType: 'hydrationWithBatchUpdate', +// visibleStartIndex: 9, +// visibleEndIndex: 19, +// bufferedStartIndex: 0, +// bufferedEndIndex: 44, +// data, +// }); + +// expect(recycleListStateResult.recycleState.map((v) => v.item.key)).toEqual([ +// 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, +// ]); + +// // @ts-ignore +// recycleList.updateScrollMetrics({ +// offset: 2700, +// visibleLength: 926, +// contentLength: 4500, +// }); + +// recycleListStateResult = recycleList.stateResult as RecycleStateResult; + +// expect(recycleList.state).toEqual({ +// isEndReached: true, +// distanceFromEnd: 874, +// actionType: 'hydrationWithBatchUpdate', +// visibleStartIndex: 6, +// visibleEndIndex: 16, +// bufferedStartIndex: 0, +// bufferedEndIndex: 44, +// data, +// }); + +// expect(recycleListStateResult.recycleState.map((v) => v.item.key)).toEqual([ +// 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, +// ]); + +// expect(recycleListStateResult.recycleState.map((v) => v.offset)).toEqual([ +// 1000, 1100, 1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2000, 2100, +// ]); + +// expect(recycleListStateResult.recycleState.map((v) => v.key)).toEqual([ +// 'recycle_0', +// 'recycle_1', +// 'recycle_2', +// 'recycle_3', +// 'recycle_4', +// 'recycle_5', +// 'recycle_6', +// 'recycle_7', +// 'recycle_8', +// 'recycle_9', +// 'recycle_10', +// 'recycle_11', +// ]); + +// // @ts-ignore +// recycleList.updateScrollMetrics({ +// offset: 3500, +// visibleLength: 926, +// contentLength: 4500, +// }); + +// expect(recycleList.state).toEqual({ +// isEndReached: true, +// distanceFromEnd: 74, +// actionType: 'hydrationWithBatchUpdate', +// visibleStartIndex: 14, +// visibleEndIndex: 24, +// bufferedStartIndex: 0, +// bufferedEndIndex: 49, +// data, +// }); + +// expect( +// (recycleList.stateResult as RecycleStateResult).recycleState.map( +// (v) => v.item.key +// ) +// ).toEqual([ +// // 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, +// 24, 25, 26, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, +// // 24, 25, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 26, +// ]); +// expect( +// (recycleList.stateResult as RecycleStateResult).recycleState.map( +// (v) => v.offset +// ) +// ).toEqual([ +// // 1000, 1100, 1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2000, 2100, +// 2400, 2500, 2600, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2000, 2100, +// 2200, 2300, +// ]); + +// expect( +// (recycleList.stateResult as RecycleStateResult).spaceState.length +// ).toBe(11); +// expect( +// (recycleList.stateResult as RecycleStateResult).spaceState.map( +// (v) => v.key +// ) +// ).toEqual([ +// '0', +// '1', +// '2', +// '3', +// '4', +// '5', +// '6', +// '7', +// '8', +// '9', +// 'space_10_99', +// ]); +// expect( +// (recycleList.stateResult as RecycleStateResult).spaceState.map( +// (v) => v.length +// ) +// ).toEqual([100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 9000]); + +// // @ts-ignore +// recycleList.updateScrollMetrics({ +// offset: 6000, +// visibleLength: 926, +// contentLength: 4500, +// }); + +// expect( +// (recycleList.stateResult as RecycleStateResult).recycleState.map( +// (v) => v.item.key +// ) +// ).toEqual([50, 51, 26, 39, 40, 41, 42, 43, 44, 45, 46, 47, 37, 38]); +// expect( +// (recycleList.stateResult as RecycleStateResult).recycleState.map( +// (v) => v.offset +// ) +// ).toEqual([ +// 5000, 5100, 2600, 3900, 4000, 4100, 4200, 4300, 4400, 4500, 4600, 4700, +// 3700, 3800, +// ]); + +// // @ts-ignore +// recycleList.updateScrollMetrics({ +// offset: 5400, +// visibleLength: 926, +// contentLength: 4500, +// velocity: -0.5, +// }); + +// expect( +// (recycleList.stateResult as RecycleStateResult).recycleState.map( +// (v) => v.item.key +// ) +// ).toEqual([34, 33, 26, 39, 40, 41, 42, 43, 44, 45, 36, 35, 37, 38]); +// expect( +// (recycleList.stateResult as RecycleStateResult).recycleState.map( +// (v) => v.offset +// ) +// ).toEqual([ +// 3400, 3300, 2600, 3900, 4000, 4100, 4200, 4300, 4400, 4500, 3600, 3500, +// 3700, 3800, +// ]); +// }); +// }); + +describe('data update', () => { + beforeEach(() => { + resetContext(); + // tell vitest we use mocked time + vi.useFakeTimers(); + }); + afterEach(() => { + // restoring date after each test run + vi.useRealTimers(); + }); + it('insert a data item', () => { + const data = buildData(20); + const recycleList = new ListDimensions<{ + key: number; + }>({ + data: [], + id: 'list_group', + recycleEnabled: true, + keyExtractor: defaultKeyExtractor, + maxToRenderPerBatch: 10, + windowSize: 5, + initialNumToRender: 4, + onEndReachedThreshold: 2, + + recyclerReservedBufferPerBatch: 4, + + onRecyclerProcess: () => true, + getContainerLayout: () => ({ + x: 0, + y: 2000, + width: 375, + height: 2000, + }), + getItemLayout: (data, index) => ({ + length: 100, + index, + }), + }); + recycleList.setData(data); + + recycleList.updateScrollMetrics({ + offset: 2000, + visibleLength: 926, + contentLength: 3500, + }); + + expect(recycleList.state).toEqual({ + visibleStartIndex: 0, + visibleEndIndex: 10, + bufferedStartIndex: 0, + bufferedEndIndex: 10, + isEndReached: true, + distanceFromEnd: 574, + actionType: 'initial', + }); + + let recycleListStateResult = + recycleList.stateResult as RecycleStateResult; + + // offset should be recalculate + expect(recycleListStateResult.recycleState[0].offset).toBe(400); + // the forth as first item in recycleState + expect(recycleListStateResult.recycleState[0].targetKey).toBe('4'); + + expect( + recycleListStateResult.recycleState.map((item) => ({ + key: item.targetKey, + offset: item.offset, + })) + ).toEqual([ + { + key: '4', + offset: 400, + }, + { + key: '5', + offset: 500, + }, + { + key: '6', + offset: 600, + }, + { + key: '7', + offset: 700, + }, + ]); + expect( + recycleListStateResult.spaceState.map((item) => ({ + key: item.key, + })) + ).toEqual([ + { + key: '0', + }, + { + key: '1', + }, + { + key: '2', + }, + { + key: '3', + }, + { + key: 'space_4_18', + }, + ]); + + const _data = data.slice(); + const newData = buildData(1, 20); + _data.splice(1, 0, newData[0]); + recycleList.setData(_data); + vi.runAllTimers(); + + recycleListStateResult = recycleList.stateResult; + + // offset should be recalculate + expect(recycleListStateResult.recycleState[0].offset).toBe(500); + // the third as first item in recycleState + expect(recycleListStateResult.recycleState[0].targetKey).toBe('4'); + + // the new item should be placed on new position + expect(recycleListStateResult.recycleState[4].offset).toBe(400); + expect(recycleListStateResult.recycleState[4].targetKey).toBe('3'); + + expect( + recycleListStateResult.recycleState.map((item) => ({ + key: item.targetKey, + offset: item.offset, + })) + ).toEqual([ + { + key: '4', + offset: 500, + }, + { + key: '5', + offset: 600, + }, + { + key: '6', + offset: 700, + }, + { + key: '7', + offset: 800, + }, + { + key: '3', + offset: 400, + }, + ]); + + expect( + recycleListStateResult.spaceState.map((item) => ({ + key: item.key, + })) + ).toEqual([ + { + key: '0', + }, + { + key: '20', + }, + { + key: '1', + }, + { + key: '2', + }, + { + key: 'space_4_19', + }, + ]); + }); + + it('insert a data item with dynamic layout', () => { + const data = buildData(20); + const recycleList = new ListDimensions<{ + key: number; + }>({ + data: [], + id: 'list_group', + recycleEnabled: true, + keyExtractor: defaultKeyExtractor, + maxToRenderPerBatch: 10, + windowSize: 5, + initialNumToRender: 4, + itemApproximateLength: 80, + onEndReachedThreshold: 2, + getContainerLayout: () => ({ + x: 0, + y: 2000, + width: 375, + height: 2000, + }), + }); + recycleList.setData(data); + + recycleList.updateScrollMetrics({ + offset: 2000, + visibleLength: 926, + contentLength: 3500, + }); + + expect(recycleList.state).toEqual({ + visibleStartIndex: 0, + visibleEndIndex: 12, + bufferedStartIndex: 0, + bufferedEndIndex: 12, + isEndReached: true, + distanceFromEnd: 574, + actionType: 'initial', + }); + + recycleList.setFinalKeyItemLayout('0', 100); + recycleList.setFinalKeyItemLayout('1', 80); + recycleList.setFinalKeyItemLayout('2', 100); + recycleList.setFinalKeyItemLayout('3', 20); + + recycleList.setFinalKeyItemLayout('4', 100); + recycleList.setFinalKeyItemLayout('5', 30); + recycleList.setFinalKeyItemLayout('6', 100); + recycleList.setFinalKeyItemLayout('7', 200); + recycleList.setFinalKeyItemLayout('8', 100); + recycleList.setFinalKeyItemLayout('9', 100); + recycleList.setFinalKeyItemLayout('10', 100); + recycleList.setFinalKeyItemLayout('11', 100); + recycleList.setFinalKeyItemLayout('12', 100); + recycleList.setFinalKeyItemLayout('13', 100); + + let recycleListStateResult = + recycleList.stateResult as RecycleStateResult; + + // offset should be recalculate + expect(recycleListStateResult.recycleState[0].offset).toBe(300); + // the forth as first item in recycleState + expect(recycleListStateResult.recycleState[0].targetKey).toBe('4'); + + const _data = data.slice(); + const newData = buildData(1, 20); + _data.splice(1, 0, newData[0]); + recycleList.setData(_data); + vi.runAllTimers(); + + recycleListStateResult = recycleList.stateResult as RecycleStateResult; + + // offset should be recalculate, approximateItemLength will be included. + expect(recycleListStateResult.recycleState[0].offset).toBe(380); + // the third as first item in recycleState + expect(recycleListStateResult.recycleState[0].targetKey).toBe('4'); + }); +}); diff --git a/model/list-dimensions/src/__test__/ListDimensions.space.test.ts b/model/list-dimensions/src/__test__/ListDimensions.space.test.ts new file mode 100644 index 00000000..e723aab0 --- /dev/null +++ b/model/list-dimensions/src/__test__/ListDimensions.space.test.ts @@ -0,0 +1,1740 @@ +import { describe, it, expect } from 'vitest'; + +describe('test', () => { + it('basic', () => { + expect(0).toBe(0); + }); +}); + +// import ListDimensions from '../ListDimensions'; +// import Batchinator from '@x-oasis/batchinator'; +// import { KeysChangedType, SpaceStateResult } from '../types'; +// import { defaultKeyExtractor } from '../exportedUtils'; +// import { resetContext } from '../ItemMeta'; +// import { vi, describe, it, expect, beforeEach, afterEach } from 'vitest'; +// const buildData = (count: number, startIndex = 0) => +// new Array(count).fill(1).map((v, index) => ({ +// key: index + startIndex, +// })); + +// vi.spyOn(Batchinator.prototype, 'schedule').mockImplementation(function ( +// ...args +// ) { +// // eslint-disable-next-line prefer-spread +// this._callback.apply(this, args); +// }); + +// describe('basic', () => { +// it('constructor - default value', () => { +// const listDimensions = new ListDimensions({ +// id: 'list_group', +// keyExtractor: defaultKeyExtractor, +// data: [], +// getContainerLayout: () => ({ +// x: 0, +// y: 2000, +// width: 375, +// height: 2000, +// }), +// }); + +// expect(listDimensions.maxToRenderPerBatch).toBe(10); +// expect(listDimensions.windowSize).toBe(5); +// expect(listDimensions.initialNumToRender).toBe(10); +// expect(listDimensions.onEndReachedThreshold).toBe(2); +// expect(listDimensions.horizontal).toBe(false); +// }); + +// it('constructor', () => { +// const listDimensions = new ListDimensions({ +// id: 'list_group', +// keyExtractor: defaultKeyExtractor, +// data: buildData(50), +// maxToRenderPerBatch: 7, +// windowSize: 9, +// initialNumToRender: 20, +// onEndReachedThreshold: 2, +// horizontal: true, +// getContainerLayout: () => ({ +// x: 0, +// y: 2000, +// width: 375, +// height: 2000, +// }), +// }); + +// expect(listDimensions.maxToRenderPerBatch).toBe(7); +// expect(listDimensions.windowSize).toBe(9); +// expect(listDimensions.initialNumToRender).toBe(20); +// expect(listDimensions.onEndReachedThreshold).toBe(2); +// expect(listDimensions.horizontal).toBe(true); +// }); + +// it('verify changedType', () => { +// const data = buildData(10); + +// const listDimensions = new ListDimensions({ +// id: 'list_1', +// data, +// keyExtractor: defaultKeyExtractor, +// }); + +// const nextData = data.slice(); +// nextData.splice(3, 1); +// const changedType = listDimensions.setData(nextData); +// expect(changedType).toBe(KeysChangedType.Remove); + +// const changedTypeAdd = listDimensions.setData(buildData(12)); +// expect(changedTypeAdd).toBe(KeysChangedType.Add); +// }); + +// it('initial itemMeta instance layout -- with getItemLayout', () => { +// const data = buildData(10); + +// const listDimensions = new ListDimensions({ +// id: 'list_1', +// data, +// keyExtractor: defaultKeyExtractor, +// getItemLayout: (item, index) => ({ +// index, +// length: 100, +// }), +// }); + +// data.forEach((item, index) => { +// const meta = listDimensions.getItemMeta(item, index); +// expect(meta.getLayout()).toEqual({ +// x: 0, +// y: 0, +// height: 100, +// width: 0, +// }); +// }); + +// expect(listDimensions.getReflowItemsLength()).toBe(10); +// }); + +// it('initial itemMeta instance layout -- without getItemLayout', () => { +// const data = buildData(10); + +// const listDimensions = new ListDimensions({ +// id: 'list_1', +// data, +// keyExtractor: defaultKeyExtractor, +// }); + +// data.forEach((item, index) => { +// const meta = listDimensions.getItemMeta(item, index); +// expect(meta.getLayout()).toEqual({ +// x: 0, +// y: 0, +// height: 80, +// width: 0, +// }); +// }); +// expect(listDimensions.getReflowItemsLength()).toBe(10); +// }); +// }); + +// describe('resolve space state', () => { +// it.only('basic output state', () => { +// const data = buildData(100); + +// const listDimensions = new ListDimensions({ +// id: 'list_1', +// data, +// keyExtractor: defaultKeyExtractor, +// getItemLayout: (item, index) => ({ +// index, +// length: 100, +// }), +// }); + +// // @ts-ignore +// listDimensions.updateScrollMetrics({ +// offset: 990, +// visibleLength: 926, +// contentLength: 10000, +// }); + +// const stateResult = listDimensions.stateResult as SpaceStateResult; + +// console.log('state =====', stateResult); + +// expect(stateResult.length).toBe(39); +// expect(stateResult[0].length).toBe(100); +// expect(stateResult[0].isSpace).toBe(false); +// expect(stateResult[38].length).toBe(6200); +// expect(stateResult[38].isSpace).toBe(true); + +// // @ts-ignore +// listDimensions.updateScrollMetrics({ +// offset: 995, +// visibleLength: 926, +// contentLength: 10000, +// }); + +// expect(stateResult).toBe(listDimensions.stateResult); +// }); + +// it('Has sticky indices', () => { +// const data = buildData(100); + +// const listDimensions = new ListDimensions({ +// id: 'list_1', +// data, +// stickyHeaderIndices: [0, 10], +// keyExtractor: defaultKeyExtractor, +// getItemLayout: (item, index) => ({ +// index, +// length: 100, +// }), +// }); + +// // @ts-ignore +// listDimensions.updateScrollMetrics({ +// offset: 990, +// visibleLength: 926, +// contentLength: 10000, +// }); + +// let stateResult = listDimensions.stateResult as SpaceStateResult; + +// expect(stateResult.length).toBe(39); +// expect(stateResult[0].length).toBe(100); +// expect(stateResult[0].isSpace).toBe(false); +// expect(stateResult[0].isSticky).toBe(true); +// expect(stateResult[0].isReserved).toBe(false); +// expect(stateResult[10].isSpace).toBe(false); +// expect(stateResult[10].isSticky).toBe(true); +// expect(stateResult[10].isReserved).toBe(false); +// expect(stateResult[38].length).toBe(6200); +// expect(stateResult[38].isSpace).toBe(true); + +// // @ts-ignore +// listDimensions.updateScrollMetrics({ +// offset: 3009, +// visibleLength: 926, +// contentLength: 10000, +// }); + +// stateResult = listDimensions.stateResult as SpaceStateResult; + +// expect(stateResult.length).toBe(51); +// expect(stateResult[0].length).toBe(100); +// expect(stateResult[0].isSpace).toBe(false); +// expect(stateResult[0].isSticky).toBe(true); +// expect(stateResult[1].length).toBe(900); +// expect(stateResult[1].isSpace).toBe(true); +// // expect(stateResult[21].viewable).toBe(false); +// // expect(stateResult[22].viewable).toBe(true); +// // expect(stateResult[31].viewable).toBe(true); +// // expect(stateResult[32].viewable).toBe(false); +// expect(stateResult[50].length).toBe(4200); +// expect(stateResult[50].isSpace).toBe(true); +// }); + +// it('memoize state result if input is equal', () => { +// const data = buildData(100); + +// const listDimensions = new ListDimensions({ +// id: 'list_1', +// data, +// keyExtractor: defaultKeyExtractor, +// getItemLayout: (item, index) => ({ +// index, +// length: 100, +// }), +// }); + +// // @ts-ignore +// listDimensions.updateScrollMetrics({ +// offset: 990, +// visibleLength: 926, +// contentLength: 10000, +// }); + +// const stateResult = listDimensions.stateResult; + +// // @ts-ignore +// listDimensions.updateScrollMetrics({ +// offset: 995, +// visibleLength: 926, +// contentLength: 10000, +// }); + +// expect(stateResult).toBe(listDimensions.stateResult); +// }); + +// it('persistanceIndices', () => { +// const data = buildData(100); + +// const listDimensions = new ListDimensions({ +// id: 'list_1', +// data, +// persistanceIndices: [1, 2, 10, 20], +// keyExtractor: defaultKeyExtractor, +// getItemLayout: (item, index) => ({ +// index, +// length: 100, +// }), +// }); + +// // @ts-ignore +// listDimensions.updateScrollMetrics({ +// offset: 990, +// visibleLength: 926, +// contentLength: 10000, +// }); + +// let stateResult = listDimensions.stateResult as SpaceStateResult; + +// console.log(' stateResult ', stateResult); + +// expect(stateResult.length).toBe(39); +// expect(stateResult[0].length).toBe(100); +// expect(stateResult[0].isSpace).toBe(false); +// expect(stateResult[0].isSticky).toBe(false); +// expect(stateResult[0].isReserved).toBe(false); + +// expect(stateResult[1].length).toBe(100); +// expect(stateResult[1].isSpace).toBe(false); +// expect(stateResult[1].isSticky).toBe(false); +// expect(stateResult[1].isReserved).toBe(true); + +// expect(stateResult[2].length).toBe(100); +// expect(stateResult[2].isSpace).toBe(false); +// expect(stateResult[2].isSticky).toBe(false); +// expect(stateResult[2].isReserved).toBe(true); + +// expect(stateResult[10].isSpace).toBe(false); +// expect(stateResult[10].isSticky).toBe(false); +// expect(stateResult[10].isReserved).toBe(true); + +// expect(stateResult[38].length).toBe(6200); +// expect(stateResult[38].isSpace).toBe(true); + +// // @ts-ignore +// listDimensions.updateScrollMetrics({ +// offset: 995, +// visibleLength: 926, +// contentLength: 10000, +// }); + +// expect(stateResult).toBe(listDimensions.stateResult); + +// // @ts-ignore +// listDimensions.updateScrollMetrics({ +// offset: 3009, +// visibleLength: 926, +// contentLength: 10000, +// }); + +// stateResult = listDimensions.stateResult as SpaceStateResult; + +// expect(stateResult.length).toBe(53); +// expect(stateResult[0].length).toBe(100); +// expect(stateResult[0].isSpace).toBe(true); +// expect(stateResult[1].isSpace).toBe(false); +// expect(stateResult[2].isSpace).toBe(false); +// expect(stateResult[3].isSpace).toBe(true); +// expect(stateResult[3].length).toBe(700); +// expect(stateResult[4].isSpace).toBe(false); +// expect(stateResult[4].isReserved).toBe(true); +// expect(stateResult[14].isSpace).toBe(false); +// expect(stateResult[14].isReserved).toBe(true); +// expect(stateResult[52].length).toBe(4200); +// expect(stateResult[52].isSpace).toBe(true); + +// // @ts-ignore +// listDimensions.updateScrollMetrics({ +// offset: 5009, +// visibleLength: 926, +// contentLength: 10000, +// }); + +// stateResult = listDimensions.stateResult as SpaceStateResult; + +// expect(stateResult.length).toBe(56); +// expect(stateResult[0].length).toBe(100); +// expect(stateResult[0].isSpace).toBe(true); +// expect(stateResult[1].isSpace).toBe(false); +// expect(stateResult[1].isReserved).toBe(true); +// expect(stateResult[2].isSpace).toBe(false); +// expect(stateResult[2].isReserved).toBe(true); +// expect(stateResult[3].isSpace).toBe(true); +// expect(stateResult[3].length).toBe(700); +// expect(stateResult[4].isSpace).toBe(false); +// expect(stateResult[4].isReserved).toBe(true); +// expect(stateResult[5].isSpace).toBe(true); +// expect(stateResult[5].length).toBe(900); +// expect(stateResult[6].isSpace).toBe(false); +// expect(stateResult[6].isReserved).toBe(true); +// expect(stateResult[6].length).toBe(100); +// expect(stateResult[7].isSpace).toBe(true); +// expect(stateResult[7].length).toBe(1000); +// expect(stateResult[8].isSpace).toBe(false); +// expect(stateResult[8].isReserved).toBe(false); +// expect(stateResult[55].length).toBe(2200); +// expect(stateResult[55].isSpace).toBe(true); +// }); + +// it('hydrationWithBatchUpdate', () => { +// const data = buildData(100); + +// const list = new ListDimensions({ +// data: [], +// id: 'list_group', +// keyExtractor: defaultKeyExtractor, +// maxToRenderPerBatch: 7, +// windowSize: 2, +// initialNumToRender: 4, +// onEndReachedThreshold: 2, +// getItemLayout: (item, index) => ({ +// length: 100, +// index, +// }), +// getContainerLayout: () => ({ +// x: 0, +// y: 0, +// width: 375, +// height: 2000, +// }), +// viewabilityConfigCallbackPairs: [ +// { +// viewabilityConfig: { +// viewport: 1, +// name: 'imageViewable', +// viewAreaCoveragePercentThreshold: 20, +// }, +// }, +// { +// viewabilityConfig: { +// name: 'viewable', +// viewAreaCoveragePercentThreshold: 30, +// }, +// }, +// ], +// }); + +// expect(list.state).toEqual({ +// visibleStartIndex: -1, +// visibleEndIndex: -1, +// bufferedStartIndex: -1, +// bufferedEndIndex: -1, +// isEndReached: false, +// distanceFromEnd: 0, +// data: [], +// actionType: 'initial', +// }); + +// list.setData(data); + +// expect(list.state).toEqual({ +// visibleStartIndex: 0, +// visibleEndIndex: 3, +// bufferedStartIndex: 0, +// bufferedEndIndex: 3, +// isEndReached: false, +// distanceFromEnd: 0, +// data: data.slice(0, 4), +// actionType: 'initial', +// }); + +// // @ts-ignore +// list.updateScrollMetrics({ +// offset: 0, +// visibleLength: 926, +// contentLength: 400, +// }); + +// expect(list.state).toEqual({ +// visibleStartIndex: 0, +// visibleEndIndex: 9, +// bufferedStartIndex: 0, +// bufferedEndIndex: 10, +// isEndReached: true, +// distanceFromEnd: -526, +// data: data.slice(0, 100), +// actionType: 'hydrationWithBatchUpdate', +// }); +// }); + +// it('hydrationWithBatchUpdate - contentLength change will cause different bufferedIndexRange', () => { +// const data = buildData(100); + +// const list = new ListDimensions({ +// data: [], +// id: 'list_group', +// keyExtractor: defaultKeyExtractor, +// maxToRenderPerBatch: 7, +// windowSize: 2, +// initialNumToRender: 4, +// onEndReachedThreshold: 2, +// getItemLayout: (item, index) => ({ +// length: 100, +// index, +// }), +// getContainerLayout: () => ({ +// x: 0, +// y: 0, +// width: 375, +// height: 2000, +// }), +// viewabilityConfigCallbackPairs: [ +// { +// viewabilityConfig: { +// viewport: 1, +// name: 'imageViewable', +// viewAreaCoveragePercentThreshold: 20, +// }, +// }, +// { +// viewabilityConfig: { +// name: 'viewable', +// viewAreaCoveragePercentThreshold: 30, +// }, +// }, +// ], +// }); + +// expect(list.state).toEqual({ +// visibleStartIndex: -1, +// visibleEndIndex: -1, +// bufferedStartIndex: -1, +// bufferedEndIndex: -1, +// isEndReached: false, +// distanceFromEnd: 0, +// data: [], +// actionType: 'initial', +// }); + +// list.setData(data); + +// expect(list.state).toEqual({ +// visibleStartIndex: 0, +// visibleEndIndex: 3, +// bufferedStartIndex: 0, +// bufferedEndIndex: 3, +// isEndReached: false, +// distanceFromEnd: 0, +// data: data.slice(0, 4), +// actionType: 'initial', +// }); + +// // @ts-ignore +// list.updateScrollMetrics({ +// offset: 0, +// visibleLength: 926, +// contentLength: 1000, +// }); + +// expect(list.state).toEqual({ +// visibleStartIndex: 0, +// visibleEndIndex: 9, +// bufferedStartIndex: 0, +// bufferedEndIndex: 16, +// isEndReached: true, +// distanceFromEnd: 74, +// data: data.slice(0, 100), +// actionType: 'hydrationWithBatchUpdate', +// }); +// }); + +// it('persistanceIndices and stickyIndices', () => { +// const data = buildData(100); + +// const listDimensions = new ListDimensions({ +// id: 'list_1', +// data, +// stickyHeaderIndices: [0, 1], +// persistanceIndices: [1, 2, 10, 20], +// keyExtractor: defaultKeyExtractor, +// getItemLayout: (item, index) => ({ +// index, +// length: 100, +// }), +// }); + +// // @ts-ignore +// listDimensions.updateScrollMetrics({ +// offset: 990, +// visibleLength: 926, +// contentLength: 10000, +// }); + +// let stateResult = listDimensions.stateResult as SpaceStateResult; + +// expect(stateResult.length).toBe(39); +// expect(stateResult[0].length).toBe(100); +// expect(stateResult[0].isSpace).toBe(false); +// expect(stateResult[0].isSticky).toBe(true); +// expect(stateResult[0].isReserved).toBe(false); + +// expect(stateResult[1].length).toBe(100); +// expect(stateResult[1].isSpace).toBe(false); +// expect(stateResult[1].isSticky).toBe(true); +// expect(stateResult[1].isReserved).toBe(true); + +// expect(stateResult[2].length).toBe(100); +// expect(stateResult[2].isSpace).toBe(false); +// expect(stateResult[2].isSticky).toBe(false); +// expect(stateResult[2].isReserved).toBe(true); + +// expect(stateResult[10].isSpace).toBe(false); +// expect(stateResult[10].isSticky).toBe(false); +// expect(stateResult[10].isReserved).toBe(true); + +// expect(stateResult[38].length).toBe(6200); +// expect(stateResult[38].isSpace).toBe(true); + +// // @ts-ignore +// listDimensions.updateScrollMetrics({ +// offset: 995, +// visibleLength: 926, +// contentLength: 10000, +// }); + +// expect(stateResult).toBe(listDimensions.stateResult); + +// // @ts-ignore +// listDimensions.updateScrollMetrics({ +// offset: 3009, +// visibleLength: 926, +// contentLength: 10000, +// }); + +// stateResult = listDimensions.stateResult as SpaceStateResult; + +// expect(stateResult.length).toBe(53); +// expect(stateResult[0].length).toBe(100); +// expect(stateResult[0].isSpace).toBe(false); +// expect(stateResult[1].isSpace).toBe(false); +// expect(stateResult[2].isSpace).toBe(false); +// expect(stateResult[3].isSpace).toBe(true); +// expect(stateResult[3].length).toBe(700); +// expect(stateResult[4].isSpace).toBe(false); +// expect(stateResult[4].isReserved).toBe(true); +// expect(stateResult[14].isSpace).toBe(false); +// expect(stateResult[14].isReserved).toBe(true); +// expect(stateResult[52].length).toBe(4200); +// expect(stateResult[52].isSpace).toBe(true); + +// // @ts-ignore +// listDimensions.updateScrollMetrics({ +// offset: 5009, +// visibleLength: 926, +// contentLength: 10000, +// }); + +// stateResult = listDimensions.stateResult as SpaceStateResult; + +// expect(stateResult.length).toBe(56); +// expect(stateResult[0].length).toBe(100); +// expect(stateResult[0].isSpace).toBe(false); +// expect(stateResult[1].isSpace).toBe(false); +// expect(stateResult[1].isReserved).toBe(true); +// expect(stateResult[2].isSpace).toBe(false); +// expect(stateResult[2].isReserved).toBe(true); +// expect(stateResult[3].isSpace).toBe(true); +// expect(stateResult[3].length).toBe(700); +// expect(stateResult[4].isSpace).toBe(false); +// expect(stateResult[4].isReserved).toBe(true); +// expect(stateResult[5].isSpace).toBe(true); +// expect(stateResult[5].length).toBe(900); +// expect(stateResult[6].isSpace).toBe(false); +// expect(stateResult[6].isReserved).toBe(true); +// expect(stateResult[6].length).toBe(100); +// expect(stateResult[7].isSpace).toBe(true); +// expect(stateResult[7].length).toBe(1000); +// expect(stateResult[8].isSpace).toBe(false); +// expect(stateResult[8].isReserved).toBe(false); +// expect(stateResult[55].length).toBe(2200); +// expect(stateResult[55].isSpace).toBe(true); +// }); +// }); + +// describe('viewability', () => { +// it('default viewabilityConfig', () => { +// const data = buildData(100); + +// const listDimensions = new ListDimensions({ +// id: 'list_1', +// data, +// stickyHeaderIndices: [0, 10], +// keyExtractor: defaultKeyExtractor, +// getItemLayout: (item, index) => ({ +// index, +// length: 100, +// }), +// }); + +// // @ts-ignore +// listDimensions.updateScrollMetrics({ +// offset: 990, +// visibleLength: 926, +// contentLength: 10000, +// }); + +// const stateResult = listDimensions.stateResult as SpaceStateResult; + +// expect(stateResult.length).toBe(39); +// // expect(stateResult[8].viewable).toBe(false); +// // expect(stateResult[9].viewable).toBe(true); +// // expect(stateResult[19].viewable).toBe(true); +// // expect(stateResult[20].viewable).toBe(false); +// }); + +// it('imageViewable - viewport: 0, thresholdValue: 0', () => { +// const data = buildData(100); + +// const listDimensions = new ListDimensions({ +// id: 'list_1', +// data, +// stickyHeaderIndices: [0, 10], +// keyExtractor: defaultKeyExtractor, +// getItemLayout: (item, index) => ({ +// index, +// length: 100, +// }), +// viewabilityConfigCallbackPairs: [ +// { +// viewabilityConfig: { +// name: 'imageViewable', +// viewAreaCoveragePercentThreshold: 0, +// }, +// }, +// { +// viewabilityConfig: { +// name: 'viewable', +// viewAreaCoveragePercentThreshold: 0, +// }, +// }, +// ], +// }); + +// // @ts-ignore +// listDimensions.updateScrollMetrics({ +// offset: 990, +// visibleLength: 926, +// contentLength: 10000, +// }); + +// const stateResult = listDimensions.stateResult as SpaceStateResult; + +// expect(stateResult.length).toBe(39); +// }); + +// it('imageViewable - viewport: 1, thresholdValue: 0', () => { +// const data = buildData(100); + +// const listDimensions = new ListDimensions({ +// id: 'list_1', +// data, +// stickyHeaderIndices: [0, 10], +// keyExtractor: defaultKeyExtractor, +// getItemLayout: (item, index) => ({ +// index, +// length: 100, +// }), +// viewabilityConfigCallbackPairs: [ +// { +// viewabilityConfig: { +// name: 'imageViewable', +// viewport: 1, +// viewAreaCoveragePercentThreshold: 0, +// }, +// }, +// { +// viewabilityConfig: { +// name: 'viewable', +// viewAreaCoveragePercentThreshold: 0, +// }, +// }, +// ], +// }); + +// // @ts-ignore +// listDimensions.updateScrollMetrics({ +// offset: 990, +// visibleLength: 926, +// contentLength: 10000, +// }); + +// const stateResult = listDimensions.stateResult as SpaceStateResult; + +// expect(stateResult.length).toBe(39); +// // expect(stateResult[0].viewable).toBe(false); +// // expect(stateResult[0].imageViewable).toBe(true); +// // expect(stateResult[8].viewable).toBe(false); +// // expect(stateResult[8].imageViewable).toBe(true); +// // expect(stateResult[9].viewable).toBe(true); +// // expect(stateResult[9].imageViewable).toBe(true); +// // expect(stateResult[19].viewable).toBe(true); +// // expect(stateResult[19].imageViewable).toBe(true); +// // expect(stateResult[20].viewable).toBe(false); +// // expect(stateResult[20].imageViewable).toBe(true); +// // expect(stateResult[28].viewable).toBe(false); +// // expect(stateResult[28].imageViewable).toBe(true); +// // expect(stateResult[29].viewable).toBe(false); +// // expect(stateResult[29].imageViewable).toBe(false); +// }); +// }); + +// describe('lifecycle', () => { +// it('initialization - empty list', () => { +// const spaceList = new ListDimensions({ +// id: 'list_group', +// keyExtractor: defaultKeyExtractor, +// data: [], +// maxToRenderPerBatch: 7, +// windowSize: 9, +// initialNumToRender: 10, +// onEndReachedThreshold: 2, +// getContainerLayout: () => ({ +// x: 0, +// y: 2000, +// width: 375, +// height: 2000, +// }), +// }); +// expect(spaceList.state).toEqual({ +// visibleStartIndex: -1, +// visibleEndIndex: -1, +// bufferedStartIndex: -1, +// bufferedEndIndex: -1, +// isEndReached: false, +// distanceFromEnd: 0, +// data: [], +// actionType: 'initial', +// }); +// expect(spaceList.stateResult).toEqual([]); + +// const recycleList = new ListDimensions({ +// id: 'list_group', +// keyExtractor: defaultKeyExtractor, +// data: [], +// recycleEnabled: true, +// maxToRenderPerBatch: 7, +// windowSize: 9, +// initialNumToRender: 10, +// onEndReachedThreshold: 2, +// getContainerLayout: () => ({ +// x: 0, +// y: 2000, +// width: 375, +// height: 2000, +// }), +// }); +// expect(recycleList.state).toEqual({ +// visibleStartIndex: -1, +// visibleEndIndex: -1, +// bufferedStartIndex: -1, +// bufferedEndIndex: -1, +// isEndReached: false, +// distanceFromEnd: 0, +// data: [], +// actionType: 'initial', +// }); +// expect(recycleList.stateResult).toEqual({ +// recycleState: [], +// spaceState: [], +// }); +// }); + +// it('initialization - data source', () => { +// const data = buildData(20); +// const spaceList = new ListDimensions({ +// data, +// id: 'list_group', +// keyExtractor: defaultKeyExtractor, +// maxToRenderPerBatch: 7, +// windowSize: 9, +// initialNumToRender: 4, +// onEndReachedThreshold: 2, +// getContainerLayout: () => ({ +// x: 0, +// y: 2000, +// width: 375, +// height: 2000, +// }), +// }); +// expect(spaceList.state).toEqual({ +// visibleStartIndex: 0, +// visibleEndIndex: 3, +// bufferedStartIndex: 0, +// bufferedEndIndex: 3, +// isEndReached: false, +// distanceFromEnd: 0, +// data: data.slice(0, 4), +// actionType: 'initial', +// }); + +// const spaceListStateResult = spaceList.stateResult as SpaceStateResult; +// // { +// // viewable: boolean; +// // imageViewable: boolean; +// // } +// expect(spaceListStateResult.length).toBe(4); +// // expect(spaceListStateResult[0].viewable).toBe(true); +// // expect(spaceListStateResult[1].viewable).toBe(true); +// // expect(spaceListStateResult[2].viewable).toBe(true); +// // expect(spaceListStateResult[3].viewable).toBe(true); + +// const recycleList = new ListDimensions({ +// id: 'list_group', +// keyExtractor: defaultKeyExtractor, +// data, +// recycleEnabled: true, +// maxToRenderPerBatch: 7, +// windowSize: 9, +// initialNumToRender: 4, +// onEndReachedThreshold: 2, +// getContainerLayout: () => ({ +// x: 0, +// y: 2000, +// width: 375, +// height: 2000, +// }), +// }); + +// expect(recycleList.state).toEqual({ +// visibleStartIndex: 0, +// visibleEndIndex: 3, +// bufferedStartIndex: 0, +// bufferedEndIndex: 3, +// isEndReached: false, +// distanceFromEnd: 0, +// data: data.slice(0, 4), +// actionType: 'initial', +// }); + +// const recycleListStateResult = +// recycleList.stateResult as RecycleStateResult; + +// expect(recycleListStateResult.spaceState.length).toBe(4); +// // expect(recycleListStateResult.spaceState[0].viewable).toBe(true); +// // expect(recycleListStateResult.spaceState[1].viewable).toBe(true); +// // expect(recycleListStateResult.spaceState[2].viewable).toBe(true); +// // expect(recycleListStateResult.spaceState[3].viewable).toBe(true); +// }); + +// it('initialization - update data source', () => { +// const data = buildData(20); +// const spaceList = new ListDimensions({ +// data: [], +// id: 'list_group', +// keyExtractor: defaultKeyExtractor, +// maxToRenderPerBatch: 7, +// windowSize: 9, +// initialNumToRender: 4, +// onEndReachedThreshold: 2, +// getContainerLayout: () => ({ +// x: 0, +// y: 2000, +// width: 375, +// height: 2000, +// }), +// }); + +// expect(spaceList.state).toEqual({ +// visibleStartIndex: -1, +// visibleEndIndex: -1, +// bufferedStartIndex: -1, +// bufferedEndIndex: -1, +// isEndReached: false, +// distanceFromEnd: 0, +// data: [], +// actionType: 'initial', +// }); + +// spaceList.setData(data); + +// expect(spaceList.state).toEqual({ +// visibleStartIndex: 0, +// visibleEndIndex: 3, +// bufferedStartIndex: 0, +// bufferedEndIndex: 3, +// isEndReached: false, +// distanceFromEnd: 0, +// data: data.slice(0, 4), +// actionType: 'initial', +// }); + +// const spaceListStateResult = spaceList.stateResult as SpaceStateResult; +// expect(spaceListStateResult.length).toBe(4); + +// const recycleList = new ListDimensions({ +// id: 'list_group', +// keyExtractor: defaultKeyExtractor, +// data: [], +// recycleEnabled: true, +// maxToRenderPerBatch: 7, +// windowSize: 5, +// initialNumToRender: 4, +// onEndReachedThreshold: 2, +// getContainerLayout: () => ({ +// x: 0, +// y: 2000, +// width: 375, +// height: 2000, +// }), +// }); + +// expect(recycleList.state).toEqual({ +// visibleStartIndex: -1, +// visibleEndIndex: -1, +// bufferedStartIndex: -1, +// bufferedEndIndex: -1, +// isEndReached: false, +// distanceFromEnd: 0, +// data: [], +// actionType: 'initial', +// }); + +// recycleList.setData(data); + +// expect(recycleList.state).toEqual({ +// visibleStartIndex: 0, +// visibleEndIndex: 3, +// bufferedStartIndex: 0, +// bufferedEndIndex: 3, +// isEndReached: false, +// distanceFromEnd: 0, +// data: data.slice(0, 4), +// actionType: 'initial', +// }); + +// const recycleListStateResult = +// recycleList.stateResult as RecycleStateResult; + +// expect(recycleListStateResult.spaceState.length).toBe(4); +// // expect(recycleListStateResult.spaceState[0].viewable).toBe(true); +// // expect(recycleListStateResult.spaceState[1].viewable).toBe(true); +// // expect(recycleListStateResult.spaceState[2].viewable).toBe(true); +// // expect(recycleListStateResult.spaceState[3].viewable).toBe(true); +// }); + +// it('initialization - update data source (initialNumToRender: 10)', () => { +// const data = buildData(100); +// const spaceList = new ListDimensions({ +// data: [], +// id: 'list_group', +// keyExtractor: defaultKeyExtractor, +// maxToRenderPerBatch: 7, +// windowSize: 5, +// initialNumToRender: 10, +// onEndReachedThreshold: 2, +// getItemLayout: (item, index) => ({ +// length: 100, +// index, +// }), +// getContainerLayout: () => ({ +// x: 0, +// y: 2000, +// width: 375, +// height: 2000, +// }), +// }); + +// expect(spaceList.state).toEqual({ +// visibleStartIndex: -1, +// visibleEndIndex: -1, +// bufferedStartIndex: -1, +// bufferedEndIndex: -1, +// isEndReached: false, +// distanceFromEnd: 0, +// data: [], +// actionType: 'initial', +// }); + +// spaceList.setData(data); + +// expect(spaceList.state).toEqual({ +// visibleStartIndex: 0, +// visibleEndIndex: 9, +// bufferedStartIndex: 0, +// bufferedEndIndex: 9, +// isEndReached: false, +// distanceFromEnd: 0, +// data: data.slice(0, 10), +// actionType: 'initial', +// }); + +// let spaceListStateResult = spaceList.stateResult as SpaceStateResult; +// expect(spaceListStateResult.length).toBe(10); +// // expect(spaceListStateResult[0].viewable).toBe(true); +// // expect(spaceListStateResult[1].viewable).toBe(true); +// // expect(spaceListStateResult[2].viewable).toBe(true); +// // expect(spaceListStateResult[3].viewable).toBe(true); + +// // @ts-ignore +// spaceList.updateScrollMetrics({ +// offset: 3009, +// visibleLength: 926, +// contentLength: 10000, +// }); + +// expect(spaceList.state).toEqual({ +// visibleStartIndex: 10, +// visibleEndIndex: 19, +// bufferedStartIndex: 0, +// bufferedEndIndex: 37, +// isEndReached: false, +// distanceFromEnd: 6065, +// data: data.slice(0, 100), +// actionType: 'recalculate', +// }); + +// expect(spaceList.stateResult[38].key).toBe(buildStateTokenIndexKey(38, 99)); +// expect(spaceList.stateResult[38].length).toBe(6200); +// spaceListStateResult = spaceList.stateResult as SpaceStateResult; +// // expect(spaceListStateResult[9].viewable).toBe(false); +// // expect(spaceListStateResult[10].viewable).toBe(true); +// // expect(spaceListStateResult[11].viewable).toBe(true); +// // expect(spaceListStateResult[12].viewable).toBe(true); +// // expect(spaceListStateResult[19].viewable).toBe(true); +// // expect(spaceListStateResult[20].viewable).toBe(false); +// }); + +// it('initialization - update data source (initialNumToRender: 10) and use viewabilityConfig', () => { +// const data = buildData(100); +// const spaceList = new ListDimensions({ +// data: [], +// id: 'list_group', +// keyExtractor: defaultKeyExtractor, +// maxToRenderPerBatch: 7, +// windowSize: 5, +// initialNumToRender: 10, +// onEndReachedThreshold: 2, +// getItemLayout: (item, index) => ({ +// length: 100, +// index, +// }), +// getContainerLayout: () => ({ +// x: 0, +// y: 2000, +// width: 375, +// height: 2000, +// }), +// viewabilityConfigCallbackPairs: [ +// { +// viewabilityConfig: { +// viewport: 1, +// name: 'imageViewable', +// viewAreaCoveragePercentThreshold: 20, +// }, +// }, +// { +// viewabilityConfig: { +// name: 'viewable', +// viewAreaCoveragePercentThreshold: 30, +// }, +// }, +// ], +// }); + +// expect(spaceList.state).toEqual({ +// visibleStartIndex: -1, +// visibleEndIndex: -1, +// bufferedStartIndex: -1, +// bufferedEndIndex: -1, +// isEndReached: false, +// distanceFromEnd: 0, +// data: [], +// actionType: 'initial', +// }); + +// spaceList.setData(data); + +// expect(spaceList.state).toEqual({ +// visibleStartIndex: 0, +// visibleEndIndex: 9, +// bufferedStartIndex: 0, +// bufferedEndIndex: 9, +// isEndReached: false, +// distanceFromEnd: 0, +// data: data.slice(0, 10), +// actionType: 'initial', +// }); + +// let spaceListStateResult = spaceList.stateResult as SpaceStateResult; + +// expect(spaceListStateResult.length).toBe(10); +// // expect(spaceListStateResult[0].viewable).toBe(true); +// // expect(spaceListStateResult[0].imageViewable).toBe(true); +// // expect(spaceListStateResult[1].viewable).toBe(true); +// // expect(spaceListStateResult[1].imageViewable).toBe(true); +// // expect(spaceListStateResult[2].viewable).toBe(true); +// // expect(spaceListStateResult[2].imageViewable).toBe(true); +// // expect(spaceListStateResult[3].viewable).toBe(true); +// // expect(spaceListStateResult[3].imageViewable).toBe(true); +// // expect(spaceListStateResult[9].viewable).toBe(true); +// // expect(spaceListStateResult[9].imageViewable).toBe(true); + +// // @ts-ignore +// spaceList.updateScrollMetrics({ +// offset: 3009, +// visibleLength: 926, +// contentLength: 10000, +// }); + +// expect(spaceList.state).toEqual({ +// visibleStartIndex: 10, +// visibleEndIndex: 19, +// bufferedStartIndex: 0, +// bufferedEndIndex: 37, +// isEndReached: false, +// distanceFromEnd: 6065, +// data: data.slice(0, 100), +// actionType: 'recalculate', +// }); + +// expect(spaceList.stateResult[38].key).toBe(buildStateTokenIndexKey(38, 99)); +// expect(spaceList.stateResult[38].length).toBe(6200); +// spaceListStateResult = spaceList.stateResult as SpaceStateResult; +// }); +// }); + +// describe('updateScrollMetrics', () => { +// it('setData will trigger updateScrollMetrics', () => { +// const data = buildData(100); + +// const list = new ListDimensions({ +// data: [], +// id: 'list_group', +// keyExtractor: defaultKeyExtractor, +// maxToRenderPerBatch: 7, +// windowSize: 2, +// initialNumToRender: 4, +// onEndReachedThreshold: 2, +// getContainerLayout: () => ({ +// x: 0, +// y: 0, +// width: 375, +// height: 2000, +// }), +// viewabilityConfigCallbackPairs: [ +// { +// viewabilityConfig: { +// viewport: 1, +// name: 'imageViewable', +// viewAreaCoveragePercentThreshold: 20, +// }, +// }, +// { +// viewabilityConfig: { +// name: 'viewable', +// viewAreaCoveragePercentThreshold: 30, +// }, +// }, +// ], +// }); + +// expect(list.state).toEqual({ +// visibleStartIndex: -1, +// visibleEndIndex: -1, +// bufferedStartIndex: -1, +// bufferedEndIndex: -1, +// isEndReached: false, +// distanceFromEnd: 0, +// data: [], +// actionType: 'initial', +// }); + +// list.setData(data); + +// expect(list.state).toEqual({ +// visibleStartIndex: 0, +// visibleEndIndex: 3, +// bufferedStartIndex: 0, +// bufferedEndIndex: 3, +// isEndReached: false, +// distanceFromEnd: 0, +// data: data.slice(0, 4), +// actionType: 'initial', +// }); +// }); + +// it('setFinalKeyItemLayout will not trigger updateScrollMetrics', () => { +// const data = buildData(100); + +// const list = new ListDimensions({ +// data: [], +// id: 'list_group', +// keyExtractor: defaultKeyExtractor, +// maxToRenderPerBatch: 7, +// windowSize: 2, +// initialNumToRender: 4, +// onEndReachedThreshold: 2, +// getContainerLayout: () => ({ +// x: 0, +// y: 0, +// width: 375, +// height: 2000, +// }), +// viewabilityConfigCallbackPairs: [ +// { +// viewabilityConfig: { +// viewport: 1, +// name: 'imageViewable', +// viewAreaCoveragePercentThreshold: 20, +// }, +// }, +// { +// viewabilityConfig: { +// name: 'viewable', +// viewAreaCoveragePercentThreshold: 30, +// }, +// }, +// ], +// }); + +// expect(list.state).toEqual({ +// visibleStartIndex: -1, +// visibleEndIndex: -1, +// bufferedStartIndex: -1, +// bufferedEndIndex: -1, +// isEndReached: false, +// distanceFromEnd: 0, +// data: [], +// actionType: 'initial', +// }); + +// list.setData(data); + +// expect(list.state).toEqual({ +// visibleStartIndex: 0, +// visibleEndIndex: 3, +// bufferedStartIndex: 0, +// bufferedEndIndex: 3, +// isEndReached: false, +// distanceFromEnd: 0, +// data: data.slice(0, 4), +// actionType: 'initial', +// }); + +// list.setFinalKeyItemLayout('3', 100); + +// expect(list.state).toEqual({ +// visibleStartIndex: 0, +// visibleEndIndex: 3, +// bufferedStartIndex: 0, +// bufferedEndIndex: 3, +// isEndReached: false, +// distanceFromEnd: 0, +// data: data.slice(0, 4), +// actionType: 'initial', +// }); + +// // @ts-ignore +// list.updateScrollMetrics({ +// offset: 0, +// visibleLength: 926, +// contentLength: 1000, +// }); + +// expect(list.state).toEqual({ +// visibleStartIndex: 0, +// visibleEndIndex: 3, +// bufferedStartIndex: 0, +// bufferedEndIndex: 7, +// isEndReached: true, +// distanceFromEnd: 74, +// data: data.slice(0, 8), +// actionType: 'hydrationWithBatchUpdate', +// }); +// }); + +// it('If offset, visibleLength, contentLength not change, updateScrollMetrics will use `state` directly', () => { +// const data = buildData(100); + +// const list = new ListDimensions({ +// data: [], +// id: 'list_group', +// keyExtractor: defaultKeyExtractor, +// maxToRenderPerBatch: 7, +// windowSize: 2, +// initialNumToRender: 4, +// onEndReachedThreshold: 2, +// getContainerLayout: () => ({ +// x: 0, +// y: 0, +// width: 375, +// height: 2000, +// }), +// viewabilityConfigCallbackPairs: [ +// { +// viewabilityConfig: { +// viewport: 1, +// name: 'imageViewable', +// viewAreaCoveragePercentThreshold: 20, +// }, +// }, +// { +// viewabilityConfig: { +// name: 'viewable', +// viewAreaCoveragePercentThreshold: 30, +// }, +// }, +// ], +// }); + +// expect(list.state).toEqual({ +// visibleStartIndex: -1, +// visibleEndIndex: -1, +// bufferedStartIndex: -1, +// bufferedEndIndex: -1, +// isEndReached: false, +// distanceFromEnd: 0, +// data: [], +// actionType: 'initial', +// }); + +// list.setData(data); + +// expect(list.state).toEqual({ +// visibleStartIndex: 0, +// visibleEndIndex: 3, +// bufferedStartIndex: 0, +// bufferedEndIndex: 3, +// isEndReached: false, +// distanceFromEnd: 0, +// data: data.slice(0, 4), +// actionType: 'initial', +// }); + +// list.setFinalKeyItemLayout('3', 100); + +// expect(list.state).toEqual({ +// visibleStartIndex: 0, +// visibleEndIndex: 3, +// bufferedStartIndex: 0, +// bufferedEndIndex: 3, +// isEndReached: false, +// distanceFromEnd: 0, +// data: data.slice(0, 4), +// actionType: 'initial', +// }); + +// // @ts-ignore +// list.updateScrollMetrics({ +// offset: 0, +// visibleLength: 926, +// contentLength: 1000, +// }); + +// expect(list.state).toEqual({ +// visibleStartIndex: 0, +// visibleEndIndex: 3, +// bufferedStartIndex: 0, +// bufferedEndIndex: 7, +// isEndReached: true, +// distanceFromEnd: 74, +// data: data.slice(0, 8), +// actionType: 'hydrationWithBatchUpdate', +// }); + +// list.setFinalKeyItemLayout('4', 100); + +// // @ts-ignore +// list.updateScrollMetrics({ +// offset: 0, +// visibleLength: 926, +// contentLength: 1000, +// }); + +// expect(list.state).toEqual({ +// visibleStartIndex: 0, +// visibleEndIndex: 3, +// bufferedStartIndex: 0, +// bufferedEndIndex: 7, +// isEndReached: true, +// distanceFromEnd: 74, +// data: data.slice(0, 8), +// actionType: 'hydrationWithBatchUpdate', +// }); + +// // @ts-ignore +// list.updateScrollMetrics({ +// offset: 0, +// visibleLength: 926, +// contentLength: 1001, +// }); + +// expect(list.state).toEqual({ +// visibleStartIndex: 0, +// visibleEndIndex: 4, +// bufferedStartIndex: 0, +// bufferedEndIndex: 8, +// isEndReached: true, +// distanceFromEnd: 75, +// data: data.slice(0, 9), +// actionType: 'hydrationWithBatchUpdate', +// }); +// }); + +// it('Usage of `_offsetTriggerCachedState`, ', () => { +// const data = buildData(100); + +// const list = new ListDimensions({ +// data: [], +// id: 'list_group', +// keyExtractor: defaultKeyExtractor, +// maxToRenderPerBatch: 7, +// windowSize: 2, +// initialNumToRender: 4, +// onEndReachedThreshold: 2, +// getContainerLayout: () => ({ +// x: 0, +// y: 0, +// width: 375, +// height: 2000, +// }), +// viewabilityConfigCallbackPairs: [ +// { +// viewabilityConfig: { +// viewport: 1, +// name: 'imageViewable', +// viewAreaCoveragePercentThreshold: 20, +// }, +// }, +// { +// viewabilityConfig: { +// name: 'viewable', +// viewAreaCoveragePercentThreshold: 30, +// }, +// }, +// ], +// }); + +// expect(list.state).toEqual({ +// visibleStartIndex: -1, +// visibleEndIndex: -1, +// bufferedStartIndex: -1, +// bufferedEndIndex: -1, +// isEndReached: false, +// distanceFromEnd: 0, +// data: [], +// actionType: 'initial', +// }); + +// list.setData(data); + +// expect(list.state).toEqual({ +// visibleStartIndex: 0, +// visibleEndIndex: 3, +// bufferedStartIndex: 0, +// bufferedEndIndex: 3, +// isEndReached: false, +// distanceFromEnd: 0, +// data: data.slice(0, 4), +// actionType: 'initial', +// }); + +// list.setFinalKeyItemLayout('3', 100); + +// expect(list.state).toEqual({ +// visibleStartIndex: 0, +// visibleEndIndex: 3, +// bufferedStartIndex: 0, +// bufferedEndIndex: 3, +// isEndReached: false, +// distanceFromEnd: 0, +// data: data.slice(0, 4), +// actionType: 'initial', +// }); + +// // @ts-ignore +// list.updateScrollMetrics({ +// offset: 0, +// visibleLength: 926, +// contentLength: 1000, +// }); + +// expect(list.state).toEqual({ +// visibleStartIndex: 0, +// visibleEndIndex: 3, +// bufferedStartIndex: 0, +// bufferedEndIndex: 7, +// isEndReached: true, +// distanceFromEnd: 74, +// data: data.slice(0, 8), +// actionType: 'hydrationWithBatchUpdate', +// }); + +// // to simulate _offsetTriggerCachedState not set, update scrollMetrics only +// // @ts-ignore +// list.scrollMetrics = { +// offset: 1, +// visibleLength: 926, +// contentLength: 1000, +// }; + +// // @ts-ignore +// list.updateScrollMetrics({ +// offset: 1, +// visibleLength: 926, +// contentLength: 1000, +// }); + +// expect(list.state).toEqual({ +// visibleStartIndex: 3, +// visibleEndIndex: 3, +// bufferedStartIndex: 0, +// bufferedEndIndex: 10, +// isEndReached: true, +// distanceFromEnd: 73, +// data: data.slice(0, 11), +// actionType: 'hydrationWithBatchUpdate', +// }); +// }); +// }); + +// describe('data update', () => { +// beforeEach(() => { +// resetContext(); +// // tell vitest we use mocked time +// vi.useFakeTimers(); +// }); +// afterEach(() => { +// // restoring date after each test run +// vi.useRealTimers(); +// }); + +// it.only('delete a data item (without layout): setData will trigger state update', () => { +// const data = buildData(20); +// const spaceList = new ListDimensions({ +// data: [], +// id: 'list_group', +// keyExtractor: defaultKeyExtractor, +// maxToRenderPerBatch: 10, +// windowSize: 5, +// initialNumToRender: 4, +// onEndReachedThreshold: 2, +// getContainerLayout: () => ({ +// x: 0, +// y: 2000, +// width: 375, +// height: 2000, +// }), +// }); +// spaceList.setData(data); + +// spaceList.updateScrollMetrics({ +// offset: 2000, +// visibleLength: 926, +// contentLength: 3500, +// }); + +// expect(spaceList.state).toEqual({ +// visibleStartIndex: 0, +// visibleEndIndex: 3, +// bufferedStartIndex: 0, +// bufferedEndIndex: 3, +// isEndReached: false, +// distanceFromEnd: 0, +// data: data.slice(0, 4), +// actionType: 'initial', +// }); + +// expect(spaceList.state).toEqual({ +// visibleStartIndex: -1, +// visibleEndIndex: -1, +// bufferedStartIndex: 0, +// bufferedEndIndex: 9, +// isEndReached: true, +// distanceFromEnd: -926, +// data: data.slice(0, 10), +// actionType: 'hydrationWithBatchUpdate', +// }); + +// const _data = data.slice(); +// _data.splice(1, 1); + +// spaceList.setData(_data); +// vi.runAllTimers(); + +// expect(spaceList.state).toEqual({ +// visibleStartIndex: -1, +// visibleEndIndex: -1, +// bufferedStartIndex: 0, +// bufferedEndIndex: 9, +// isEndReached: true, +// distanceFromEnd: -926, +// data: [].concat(data[0], data.slice(2, 11)), +// actionType: 'hydrationWithBatchUpdate', +// }); +// }); + +// it('delete a data item (with layout): setData will trigger state update', () => { +// const data = buildData(20); +// const spaceList = new ListDimensions({ +// data: [], +// id: 'list_group', +// keyExtractor: defaultKeyExtractor, +// maxToRenderPerBatch: 10, +// windowSize: 5, +// initialNumToRender: 4, +// onEndReachedThreshold: 2, +// getItemLayout: (data, index) => ({ +// length: 100, +// index, +// }), +// getContainerLayout: () => ({ +// x: 0, +// y: 2000, +// width: 375, +// height: 2000, +// }), +// }); +// spaceList.setData(data); + +// expect(spaceList.state).toEqual({ +// visibleStartIndex: 0, +// visibleEndIndex: 3, +// bufferedStartIndex: 0, +// bufferedEndIndex: 3, +// isEndReached: false, +// distanceFromEnd: 0, +// data: data.slice(0, 4), +// actionType: 'initial', +// }); + +// // @ts-ignore +// spaceList.updateScrollMetrics({ +// offset: 0, +// visibleLength: 926, +// contentLength: 0, +// }); + +// expect(spaceList.state).toEqual({ +// visibleStartIndex: -1, +// visibleEndIndex: -1, +// bufferedStartIndex: 0, +// bufferedEndIndex: 9, +// isEndReached: true, +// distanceFromEnd: -926, +// data: data.slice(), +// actionType: 'hydrationWithBatchUpdate', +// }); + +// const _data = data.slice(); +// _data.splice(1, 1); + +// spaceList.setData(_data); +// vi.runAllTimers(); + +// // data should be updated +// expect(spaceList.state).toEqual({ +// visibleStartIndex: -1, +// visibleEndIndex: -1, +// bufferedStartIndex: 0, +// bufferedEndIndex: 9, +// isEndReached: true, +// distanceFromEnd: -926, +// data: [].concat(data[0], data.slice(2)), +// actionType: 'hydrationWithBatchUpdate', +// }); +// }); +// }); diff --git a/model/list-dimensions/src/__test__/reducer.test.ts b/model/list-dimensions/src/__test__/reducer.test.ts new file mode 100644 index 00000000..97490e0d --- /dev/null +++ b/model/list-dimensions/src/__test__/reducer.test.ts @@ -0,0 +1,135 @@ +import ListDimensions from '../ListDimensions'; +// import ListGroupDimensions from '../ListGroupDimensions'; +import Batchinator from '@x-oasis/batchinator'; +import { defaultKeyExtractor } from '@infinite-list/utils'; +import { ActionType } from '@infinite-list/state'; +import { context as itemMetaContext } from '@infinite-list/item-meta'; +import { vi, describe, it, expect, beforeEach } from 'vitest'; +const buildData = (count: number) => + new Array(count).fill(1).map((v, index) => ({ + key: index, + })); + +vi.useFakeTimers(); + +vi.spyOn(Batchinator.prototype, 'schedule').mockImplementation(function ( + ...args +) { + // eslint-disable-next-line prefer-spread + this._callback.apply(this, args); +}); + +testSuite(false); + +function testSuite(isFixedLength: boolean) { + describe('reducer', () => { + beforeAll(() => { + vi.useFakeTimers({ toFake: ['requestIdleCallback'] }); + }); + beforeEach(() => { + const keys = Object.keys(itemMetaContext); + keys.forEach((key) => { + delete itemMetaContext[key]; + }); + }); + + it('if visibleStartIndex and visibleEndIndex not change, then return directly', () => { + const data = buildData(100); + + const list = new ListDimensions({ + data: [], + id: 'list_group', + keyExtractor: defaultKeyExtractor, + maxToRenderPerBatch: 7, + windowSize: 2, + recycleEnabled: true, + initialNumToRender: 4, + getContainerLayout: () => ({ + x: 0, + y: 0, + width: 375, + height: 2000, + }), + viewabilityConfigCallbackPairs: [ + { + viewabilityConfig: { + viewport: 1, + name: 'imageViewable', + viewAreaCoveragePercentThreshold: 20, + }, + }, + { + viewabilityConfig: { + name: 'viewable', + viewAreaCoveragePercentThreshold: 30, + }, + }, + ], + }); + + expect(list.state).toEqual({ + visibleStartIndex: -1, + visibleEndIndex: -1, + bufferedStartIndex: -1, + bufferedEndIndex: -1, + isEndReached: false, + distanceFromEnd: 0, + actionType: 'initial', + }); + + list.setData(data); + + list.updateScrollMetrics({ + offset: 0, + visibleLength: 926, + contentLength: 1000, + }); + + list.setFinalKeyItemLayout('3', 100, true); + + expect(list.state).toEqual({ + visibleStartIndex: 0, + visibleEndIndex: 12, + bufferedStartIndex: 0, + bufferedEndIndex: 7, + isEndReached: true, + distanceFromEnd: 74, + actionType: 'hydrationWithBatchUpdate', + }); + + list.updateScrollMetrics({ + offset: 0, + visibleLength: 926, + contentLength: 1000, + }); + + const listState = list.state; + + expect(listState).toEqual({ + visibleStartIndex: 0, + visibleEndIndex: 12, + bufferedStartIndex: 0, + bufferedEndIndex: 7, + isEndReached: true, + distanceFromEnd: 74, + actionType: 'hydrationWithBatchUpdate', + }); + + list.updateScrollMetrics({ + offset: 0, + visibleLength: 926, + contentLength: 1001, + }); + + expect(list.state).toEqual({ + visibleStartIndex: 0, + visibleEndIndex: 12, + bufferedStartIndex: 0, + bufferedEndIndex: 7, + isEndReached: true, + distanceFromEnd: 75, + actionType: 'hydrationWithBatchUpdate', + }); + }); + }); +} diff --git a/model/list-dimensions/src/index.ts b/model/list-dimensions/src/index.ts new file mode 100644 index 00000000..8e523449 --- /dev/null +++ b/model/list-dimensions/src/index.ts @@ -0,0 +1 @@ +export { default as ListDimensions } from './ListDimensions'; diff --git a/model/list-dimensions/src/state/index.ts b/model/list-dimensions/src/state/index.ts new file mode 100644 index 00000000..1b432c7c --- /dev/null +++ b/model/list-dimensions/src/state/index.ts @@ -0,0 +1,100 @@ +import { ReducerResult } from '@infinite-list/state'; + +import fixVisibleRange from './middleware/fixVisibleRange'; +import fixInitialBufferedRange from './middleware/fixInitialBufferedRange'; +import fixBufferedRange from './middleware/fixBufferedRange'; + +import { createStore as _createStore } from '@infinite-list/state'; + +export function createStore() { + return _createStore({ + initial: (middleware, applyMiddleware) => { + const { resolveIndexRange, hydrateOnEndReached, resolveInitialState } = + middleware; + + applyMiddleware([ + resolveIndexRange, + hydrateOnEndReached, + fixVisibleRange, + fixInitialBufferedRange, + resolveInitialState, + ]); + }, + hydrationWithBatchUpdate: (middleware, applyMiddleware) => { + const { + preCheck, + resolveIndexRange, + hydrateOnEndReached, + resolveMaxIndex, + makeIndexMeaningful, + } = middleware; + + applyMiddleware([ + preCheck, + resolveIndexRange, + hydrateOnEndReached, + resolveMaxIndex, + fixBufferedRange, + fixVisibleRange, + makeIndexMeaningful, + ]); + }, + recalculate: (middleware, applyMiddleware) => { + const { + preCheck, + resolveIndexRange, + hydrateOnEndReached, + resolveMaxIndex, + makeIndexMeaningful, + } = middleware; + + applyMiddleware([ + preCheck, + resolveIndexRange, + hydrateOnEndReached, + resolveMaxIndex, + fixBufferedRange, + fixVisibleRange, + makeIndexMeaningful, + ]); + }, + scrollDown: (middleware, applyMiddleware) => { + const { + preCheck, + resolveIndexRange, + hydrateOnEndReached, + resolveMaxIndex, + makeIndexMeaningful, + } = middleware; + + applyMiddleware([ + preCheck, + resolveIndexRange, + hydrateOnEndReached, + resolveMaxIndex, + fixBufferedRange, + fixVisibleRange, + makeIndexMeaningful, + ]); + }, + scrollUp: (middleware, applyMiddleware) => { + const { + preCheck, + resolveIndexRange, + hydrateOnEndReached, + resolveMaxIndex, + makeIndexMeaningful, + } = middleware; + + applyMiddleware([ + preCheck, + resolveIndexRange, + hydrateOnEndReached, + resolveMaxIndex, + fixBufferedRange, + fixVisibleRange, + makeIndexMeaningful, + ]); + }, + }); +} diff --git a/model/list-dimensions/src/state/middleware/fixBufferedRange.ts b/model/list-dimensions/src/state/middleware/fixBufferedRange.ts new file mode 100644 index 00000000..60f8aac4 --- /dev/null +++ b/model/list-dimensions/src/state/middleware/fixBufferedRange.ts @@ -0,0 +1,74 @@ +// import Dimension from '../../Dimension'; +// import ListDimensionsModel from '../../ListDimensionsModel'; +// import ListDimensions from '../../ListDimensions'; +// import ListGroupDimensions from '../../ListGroupDimensions'; +import { ActionPayload, Ctx, ReducerResult } from '@infinite-list/state'; +import { isValidMetaLayout } from '@infinite-list/item-meta'; +import { log } from '@infinite-list/utils'; + +// recalculate buffer +export default ( + state: State, + payload: ActionPayload, + ctx: Ctx +) => { + const { dimension } = payload; + + const { visibleIndexRange, bufferedIndexRange, maxIndex } = ctx; + + const maxToRenderPerBatch = dimension.maxToRenderPerBatch; + let _nextBufferedEndIndex = bufferedIndexRange.endIndex; + + // if (dimension instanceof ListGroupDimensions) { + // let count = 0; + // // start from visibleIndexRange which means the below has high priority + // // but... if jump to a position, two directions should be considered... + // for ( + // let startIndex = visibleIndexRange.startIndex; + // startIndex <= Math.min(_nextBufferedEndIndex, maxIndex); + // startIndex++ + // ) { + // const dimensionInfo = dimension.getFinalIndexIndexInfo(startIndex); + // const currentDimension = dimensionInfo?.dimensions; + + // if (currentDimension instanceof Dimension) { + // if (currentDimension?.getIgnoredToPerBatch()) continue; + // const meta = currentDimension.getMeta(); + // if (!isValidMetaLayout(meta)) count++; + // } + + // if (currentDimension instanceof ListDimensionsModel) { + // const meta = currentDimension.getIndexItemMeta( + // dimensionInfo?.index || -1 + // ); + // if (!isValidMetaLayout(meta)) count++; + // } + + // if (count >= maxToRenderPerBatch) { + // _nextBufferedEndIndex = startIndex; + // break; + // } + // } + // ctx.bufferedIndexRange.endIndex = _nextBufferedEndIndex; + // } + + // if (dimension instanceof ListDimensions) { + let count = 0; + for ( + let startIndex = visibleIndexRange.startIndex; + startIndex <= Math.min(_nextBufferedEndIndex, maxIndex); + startIndex++ + ) { + const meta = dimension.getIndexItemMeta(startIndex); + if (!meta) continue; + if (!isValidMetaLayout(meta)) count++; + + if (count >= maxToRenderPerBatch) { + _nextBufferedEndIndex = startIndex; + break; + } + } + log.info('fixBufferedRange ', _nextBufferedEndIndex); + ctx.bufferedIndexRange.endIndex = _nextBufferedEndIndex; + // } +}; diff --git a/model/list-dimensions/src/state/middleware/fixInitialBufferedRange.ts b/model/list-dimensions/src/state/middleware/fixInitialBufferedRange.ts new file mode 100644 index 00000000..13b29c9d --- /dev/null +++ b/model/list-dimensions/src/state/middleware/fixInitialBufferedRange.ts @@ -0,0 +1,50 @@ +import { ActionPayload, Ctx, ReducerResult } from '@infinite-list/state'; +import { isValidMetaLayout } from '@infinite-list/item-meta'; +import { log } from '@infinite-list/utils'; + +// recalculate buffer +export default ( + state: State, + payload: ActionPayload, + ctx: Ctx +) => { + const { dimension } = payload; + + const { visibleIndexRange, bufferedIndexRange, maxIndex } = ctx; + + const initialNumToRender = dimension.initialNumToRender; + + const { startIndex, endIndex } = visibleIndexRange; + + if (endIndex - startIndex >= initialNumToRender) { + ctx.bufferedIndexRange.startIndex = startIndex; + ctx.bufferedIndexRange.endIndex = endIndex; + return; + } + + // on initial, maxToRenderPerBatch should be the minimum + const maxToRenderPerBatch = + initialNumToRender > 0 + ? Math.min(dimension.maxToRenderPerBatch, initialNumToRender) + : dimension.maxToRenderPerBatch; + let _nextBufferedEndIndex = bufferedIndexRange.endIndex; + + let count = 0; + for ( + let startIndex = visibleIndexRange.startIndex; + startIndex <= Math.min(_nextBufferedEndIndex, maxIndex); + startIndex++ + ) { + const meta = dimension.getIndexItemMeta(startIndex); + if (!meta) continue; + if (!isValidMetaLayout(meta)) count++; + + if (count >= maxToRenderPerBatch) { + _nextBufferedEndIndex = startIndex; + break; + } + // } + log.info('fixInitialBufferedRange ', _nextBufferedEndIndex); + ctx.bufferedIndexRange.endIndex = _nextBufferedEndIndex; + } +}; diff --git a/model/list-dimensions/src/state/middleware/fixVisibleRange.ts b/model/list-dimensions/src/state/middleware/fixVisibleRange.ts new file mode 100644 index 00000000..ac452f09 --- /dev/null +++ b/model/list-dimensions/src/state/middleware/fixVisibleRange.ts @@ -0,0 +1,67 @@ +// import Dimension from '../../Dimension'; +// import ListGroupDimensions from '../../ListGroupDimensions'; +// import ListDimensionsModel from '../../ListDimensionsModel'; +// import ListDimensions from '../../ListDimensions'; +import { ActionPayload, Ctx, ReducerResult } from '@infinite-list/state'; +// import { isValidMetaLayout } from '../../ItemMeta'; +// import { info } from '../../utils/logger'; +import { log } from '@infinite-list/utils'; + +export default ( + state: State, + payload: ActionPayload, + ctx: Ctx +) => { + // const { dimension } = payload; + const { visibleIndexRange } = ctx; + const { startIndex, endIndex } = visibleIndexRange; + let nextStartIndex = startIndex; + + // if (dimension instanceof ListGroupDimensions) { + // // for (nextStartIndex; nextStartIndex < endIndex; nextStartIndex++) { + // // const dimensionsInfo = dimension.getFinalIndexIndexInfo(nextStartIndex); + // // if (!dimensionsInfo) continue; + // // const { dimensions: currentDimensions, index: currentIndex } = + // // dimensionsInfo; + // // if (currentDimensions instanceof Dimension) { + // // // ignore `ignoredToPerBatch` item + // // if (currentDimensions?.getIgnoredToPerBatch()) { + // // continue; + // // } + // // const meta = currentDimensions.getMeta(); + // // if (!isValidMetaLayout(meta)) break; + // // } + // // if (currentDimensions instanceof ListDimensionsModel) { + // // const meta = currentDimensions.getIndexItemMeta(currentIndex); + // // if (!isValidMetaLayout(meta)) break; + // // } + // // } + // // if (ctx.visibleIndexRange.endIndex !== nextStartIndex) { + // // info( + // // 'middleware fixVisibleRange endIndex set from ', + // // endIndex, + // // ' to ', + // // nextStartIndex + // // ); + // // ctx.visibleIndexRange.endIndex = nextStartIndex; + // // } + // } + + // if (dimension instanceof ListDimensions) { + for (nextStartIndex; nextStartIndex < endIndex; nextStartIndex++) { + // const meta = dimension.getIndexItemMeta(nextStartIndex); + // if (!meta) continue; + // if (!isValidMetaLayout(meta)) break; + } + + if (ctx.visibleIndexRange.endIndex !== nextStartIndex) { + log.info( + 'middleware fixVisibleRange endIndex set from ', + endIndex, + ' to ', + nextStartIndex + ); + ctx.visibleIndexRange.endIndex = nextStartIndex; + } + // } +}; diff --git a/model/list-dimensions/src/types/generic.types.ts b/model/list-dimensions/src/types/generic.types.ts new file mode 100644 index 00000000..297f824d --- /dev/null +++ b/model/list-dimensions/src/types/generic.types.ts @@ -0,0 +1,4 @@ +export type GenericItemT = { + [key: string]: any; +}; +export type GenericStateResult = any; diff --git a/model/list-dimensions/src/types/index.ts b/model/list-dimensions/src/types/index.ts new file mode 100644 index 00000000..34112944 --- /dev/null +++ b/model/list-dimensions/src/types/index.ts @@ -0,0 +1,2 @@ +export * from './scrollMetrics.types'; +export * from './generic.types'; diff --git a/model/list-dimensions/src/types/scrollMetrics.types.ts b/model/list-dimensions/src/types/scrollMetrics.types.ts new file mode 100644 index 00000000..9b779202 --- /dev/null +++ b/model/list-dimensions/src/types/scrollMetrics.types.ts @@ -0,0 +1,50 @@ +export interface ScrollRectangle { + left: number; + top: number; + bottom: number; + right: number; +} + +export interface ScrollPoint { + x: number; + y: number; +} + +export interface ScrollVelocity { + x: number; + y: number; +} + +export interface ScrollSize { + height: number; + width: number; +} +export type ScrollEventMetrics = { + contentInset: ScrollRectangle; + contentOffset: ScrollPoint; + contentSize: ScrollSize; + layoutMeasurement: ScrollSize; + velocity?: ScrollVelocity | undefined; + zoomScale: number; + /** + * @platform ios + */ + targetContentOffset?: ScrollPoint | undefined; +}; + +export type ScrollMetrics = { + contentLength: number; + offset: number; + visibleLength: number; + + // not used + dOffset?: number; + dt?: number; + timestamp?: number; + velocity?: number; +}; + +export type ContentSize = { + width: number; + height: number; +}; diff --git a/model/list-dimensions/tsconfig.json b/model/list-dimensions/tsconfig.json new file mode 100644 index 00000000..8d9d5912 --- /dev/null +++ b/model/list-dimensions/tsconfig.json @@ -0,0 +1,22 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "commonjs", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ] +} diff --git a/model/list-dimensions/tsconfig.lib.json b/model/list-dimensions/tsconfig.lib.json new file mode 100644 index 00000000..ce3b531c --- /dev/null +++ b/model/list-dimensions/tsconfig.lib.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "declaration": true, + "types": ["node"] + }, + "include": ["src/**/*.ts"], + "exclude": ["vite.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"] +} diff --git a/model/list-dimensions/tsconfig.spec.json b/model/list-dimensions/tsconfig.spec.json new file mode 100644 index 00000000..3c002c21 --- /dev/null +++ b/model/list-dimensions/tsconfig.spec.json @@ -0,0 +1,26 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "types": [ + "vitest/globals", + "vitest/importMeta", + "vite/client", + "node", + "vitest" + ] + }, + "include": [ + "vite.config.ts", + "vitest.config.ts", + "src/**/*.test.ts", + "src/**/*.spec.ts", + "src/**/*.test.tsx", + "src/**/*.spec.tsx", + "src/**/*.test.js", + "src/**/*.spec.js", + "src/**/*.test.jsx", + "src/**/*.spec.jsx", + "src/**/*.d.ts" + ] +} diff --git a/model/list-dimensions/vite.config.ts b/model/list-dimensions/vite.config.ts new file mode 100644 index 00000000..2a2f4026 --- /dev/null +++ b/model/list-dimensions/vite.config.ts @@ -0,0 +1,28 @@ +import { defineConfig } from 'vite'; + +import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin'; +import { nxCopyAssetsPlugin } from '@nx/vite/plugins/nx-copy-assets.plugin'; + +export default defineConfig({ + root: __dirname, + cacheDir: '../../node_modules/.vite/model/list-dimensions', + + plugins: [nxViteTsPaths(), nxCopyAssetsPlugin(['*.md'])], + + // Uncomment this if you are using workers. + // worker: { + // plugins: [ nxViteTsPaths() ], + // }, + + test: { + watch: false, + globals: true, + environment: 'node', + include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], + reporters: ['default'], + coverage: { + reportsDirectory: '../../coverage/model/list-dimensions', + provider: 'v8', + }, + }, +}); diff --git a/model/masonry-dimensions/.swcrc b/model/masonry-dimensions/.swcrc new file mode 100644 index 00000000..28e88ec1 --- /dev/null +++ b/model/masonry-dimensions/.swcrc @@ -0,0 +1,29 @@ +{ + "jsc": { + "target": "es2017", + "parser": { + "syntax": "typescript", + "decorators": true, + "dynamicImport": true + }, + "transform": { + "decoratorMetadata": true, + "legacyDecorator": true + }, + "keepClassNames": true, + "externalHelpers": true, + "loose": true + }, + "module": { + "type": "es6" + }, + "sourceMaps": true, + "exclude": [ + "jest.config.ts", + ".*\\.spec.tsx?$", + ".*\\.test.tsx?$", + "./src/jest-setup.ts$", + "./**/jest-setup.ts$", + ".*.js$" + ] +} diff --git a/model/masonry-dimensions/README.md b/model/masonry-dimensions/README.md new file mode 100644 index 00000000..229bf35a --- /dev/null +++ b/model/masonry-dimensions/README.md @@ -0,0 +1,11 @@ +# masonry-dimensions + +This library was generated with [Nx](https://nx.dev). + +## Building + +Run `nx build masonry-dimensions` to build the library. + +## Running unit tests + +Run `nx test masonry-dimensions` to execute the unit tests via [Vitest](https://vitest.dev/). diff --git a/model/masonry-dimensions/eslint.config.js b/model/masonry-dimensions/eslint.config.js new file mode 100644 index 00000000..6e58c36a --- /dev/null +++ b/model/masonry-dimensions/eslint.config.js @@ -0,0 +1,22 @@ +const baseConfig = require('../../eslint.config.js'); + +module.exports = [ + ...baseConfig, + { + files: ['**/*.json'], + rules: { + '@nx/dependency-checks': [ + 'error', + { + ignoredFiles: [ + '{projectRoot}/eslint.config.{js,cjs,mjs}', + '{projectRoot}/vite.config.{js,ts,mjs,mts}', + ], + }, + ], + }, + languageOptions: { + parser: require('jsonc-eslint-parser'), + }, + }, +]; diff --git a/model/masonry-dimensions/package.json b/model/masonry-dimensions/package.json new file mode 100644 index 00000000..7758daf1 --- /dev/null +++ b/model/masonry-dimensions/package.json @@ -0,0 +1,16 @@ +{ + "name": "@infinite-list/masonry-dimensions", + "version": "0.0.1", + "dependencies": { + "@x-oasis/batchinator": "^0.1.14", + "@x-oasis/default-boolean-value": "^0.1.14", + "@x-oasis/default-value": "^0.1.35", + "@x-oasis/layout-equal": "^0.1.16", + "@x-oasis/prefix-interval-tree": "^0.2.4", + "@infinite-list/dimensions-model": "workspace:*", + "@infinite-list/state": "workspace:*", + "@infinite-list/strategies": "workspace:*" + }, + "main": "./index.cjs", + "module": "./index.js" +} diff --git a/model/masonry-dimensions/project.json b/model/masonry-dimensions/project.json new file mode 100644 index 00000000..7b4fad8e --- /dev/null +++ b/model/masonry-dimensions/project.json @@ -0,0 +1,28 @@ +{ + "name": "masonry-dimensions", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "model/masonry-dimensions/src", + "projectType": "library", + "release": { + "version": { + "generatorOptions": { + "packageRoot": "dist/{projectRoot}", + "currentVersionResolver": "git-tag" + } + } + }, + "tags": [], + "targets": { + "nx-release-publish": { + "options": { + "packageRoot": "dist/{projectRoot}" + } + }, + "test": { + "executor": "@nx/vite:test", + "options": { + "config": "packages/data-model/vite.config.ts" + } + } + } +} diff --git a/model/masonry-dimensions/rollup.config.js b/model/masonry-dimensions/rollup.config.js new file mode 100644 index 00000000..8c0170b2 --- /dev/null +++ b/model/masonry-dimensions/rollup.config.js @@ -0,0 +1,17 @@ +const { withNx } = require('@nx/rollup/with-nx'); + +module.exports = withNx( + { + main: './src/index.ts', + outputPath: '../../dist/model/masonry-dimensions', + tsConfig: './tsconfig.lib.json', + compiler: 'swc', + format: ['cjs', 'esm'], + assets: [{ input: '.', output: '.', glob: '*.md' }], + }, + { + // Provide additional rollup configuration here. See: https://rollupjs.org/configuration-options + // e.g. + // output: { sourcemap: true }, + } +); diff --git a/model/masonry-dimensions/src/MasonryDimensionStrategy.ts b/model/masonry-dimensions/src/MasonryDimensionStrategy.ts new file mode 100644 index 00000000..d619d8f6 --- /dev/null +++ b/model/masonry-dimensions/src/MasonryDimensionStrategy.ts @@ -0,0 +1,196 @@ +import { BaseImpl } from '@infinite-list/strategies'; +import { ItemLayout, IndexToOffsetMap } from '@infinite-list/dimensions-model'; + +import { + GenericItemT, + ScrollMetrics, + MasonryIndexInfo, + MasonryDimensionStrategyProps, +} from './types'; +import MasonryDimensionsModel from './MasonryDimensionsModel'; +import { ReducerResult, createStore } from '@infinite-list/state'; + +/** + * a lite ListDimensionsModel version + */ +class MasonryDimensionStrategy< + ItemT extends GenericItemT = GenericItemT +> extends BaseImpl { + readonly columnIndex: number; + readonly _dataModel: MasonryDimensionsModel; + + constructor(props: MasonryDimensionStrategyProps) { + super({ + ...props, + store: createStore(), + }); + const { columnIndex, dataModel } = props; + this.columnIndex = columnIndex; + this._dataModel = dataModel; + } + + getData() { + return this._dataModel.getDataSource(this.columnIndex); + } + + override getDataLength(): number { + return this.getData().length; + } + + getTotalLength() { + const intervalTree = this._dataModel.getColumnIntervalTree( + this.columnIndex + ); + return intervalTree?.getMaxUsefulLength() ? intervalTree?.getHeap()[1] : 0; + } + + getReflowItemsLength() { + const intervalTree = this._dataModel.getColumnIntervalTree( + this.columnIndex + ); + return intervalTree?.getMaxUsefulLength() || 0; + } + + getFinalItemKey(item: ItemT) { + return this._dataModel.getFinalItemKey(item) || ''; + } + + getFinalIndexItemMeta(index: number) { + return this._dataModel.getColumnIndexItemMeta(this.columnIndex, index); + // return this._dataModel.getIndexItemMeta(index); + } + + getFinalItemMeta(item: ItemT) { + return this._dataModel.getFinalItemMeta(item); + } + + getFinalIndexItemLength(index: number) { + const itemMeta = this.getFinalIndexItemMeta(index); + if (itemMeta) return itemMeta.getFinalItemLength(); + return 0; + } + + /** + * + * @param index + * @param exclusive + * @returns + */ + getIndexKeyOffset(indexInColumn: number, exclusive?: boolean) { + return this._dataModel.getColumnIndexKeyOffset( + this.columnIndex, + indexInColumn, + exclusive + ); + } + + getFinalIndexKeyOffset(indexInColumn: number, exclusive?: boolean) { + return this.getIndexKeyOffset(indexInColumn, exclusive); + } + + /** + * + * @param index + * @param exclusive + * @returns + * + * include the last item height + */ + getFinalIndexKeyBottomOffset(index: number, exclusive?: boolean) { + const containerOffset = exclusive ? 0 : this.getContainerOffset(); + const height = this._dataModel.getColumnTotalLength(this.columnIndex); + return containerOffset + (typeof height === 'number' ? height : 0); + } + + /** + * + * @param itemKey + * @param layout + * @param updateIntervalTree + * @returns + * + */ + setFinalKeyItemLayout( + itemKey: string, + layout: ItemLayout | number, + updateIntervalTree?: boolean + ) { + return this._dataModel.setMasonryKeyItemLayout( + itemKey, + layout, + updateIntervalTree + ); + } + + getFinalKeyIndexInfo(key: string): MasonryIndexInfo { + return { + dimensions: this._dataModel, + index: this._dataModel + .getColumnKeyIndexManager(this.columnIndex) + .getKeyIndex(key), + columnIndex: this.columnIndex, + indexInTotal: this._dataModel.getKeyIndex(key) || 0, + }; + } + + computeIndexRange(minOffset: number, maxOffset: number) { + const intervalTree = this._dataModel.getColumnIntervalTree( + this.columnIndex + ); + return intervalTree.computeRange(minOffset, maxOffset); + } + + getFinalIndexRangeOffsetMap( + /** + * startIndex is index in column + */ + startIndexInColumn: number, + endIndexInColumn: number, + exclusive?: boolean + ) { + const indexToOffsetMap: IndexToOffsetMap = {}; + + let startOffset = this.getFinalIndexKeyOffset( + startIndexInColumn, + exclusive + ); + + for (let index = startIndexInColumn; index <= endIndexInColumn; index++) { + const itemMeta = this.getFinalIndexItemMeta(index); + + if (!itemMeta) continue; + + indexToOffsetMap[index] = startOffset; + + if (itemMeta?.isApproximateLayout) { + indexToOffsetMap[index] = this.itemOffsetBeforeLayoutReady; + } else { + indexToOffsetMap[index] = startOffset; + } + + startOffset += itemMeta?.getFinalItemLength(); + } + return indexToOffsetMap; + } + + onDataSourceChanged() { + this.updateScrollMetrics(this._scrollMetrics); + } + + onItemLayoutChanged() { + this.updateScrollMetrics(this._scrollMetrics); + } + + updateScrollMetrics( + _scrollMetrics?: ScrollMetrics, + _options?: { + useCache?: boolean; + flush?: boolean; + } + ) { + this._scrollMetrics = _scrollMetrics || this._scrollMetrics; + this._updateScrollMetrics(this._scrollMetrics, _options); + } +} + +export default MasonryDimensionStrategy; diff --git a/model/masonry-dimensions/src/MasonryDimensions.ts b/model/masonry-dimensions/src/MasonryDimensions.ts new file mode 100644 index 00000000..12683ffb --- /dev/null +++ b/model/masonry-dimensions/src/MasonryDimensions.ts @@ -0,0 +1,258 @@ +import defaultBooleanValue from '@x-oasis/default-boolean-value'; +import Batchinator from '@x-oasis/batchinator'; +import { ListDimensionsModel } from '@infinite-list/dimensions-model'; + +import { + GenericItemT, + MasonryDimensionsProps, + MasonryIndexInfo, + MasonryStateListener, + ScrollMetrics, + DimensionsModelContainer, +} from './types'; +import { ItemLayout } from '@infinite-list/dimensions-model'; + +import { KeysChangedType } from '@infinite-list/base-dimensions'; + +import MasonryDimensionsModel from './MasonryDimensionsModel'; +import { OnEndReachedHelper } from '@infinite-list/viewable'; + +import { chunkifyDataSource } from './utils'; + +import { DISPATCH_METRICS_THRESHOLD } from './common'; +const DEFAULT_MASONRY_COLUMN = 2; +let count = 0; + +/** + * MasonryDimensions -> MasonryDimensionsModel -> init data -> get changedType + * ↓ + * chunkify data source <- onListDimensionsModelDataChanged <- MasonryDimensions + * ↓ + * MasonryDimensionsModel -> patch chunk data -> MasonryDimensions -> dispatchMetrics + * ↓ + * render view + */ +class MasonryDimensions + implements DimensionsModelContainer +{ + readonly id: string; + private _dataModel: MasonryDimensionsModel; + public _scrollMetrics?: ScrollMetrics; + public stateListener?: MasonryStateListener; + private _dispatchMetricsBatchinator: Batchinator; + readonly onEndReachedHelper: OnEndReachedHelper; + + constructor(props: MasonryDimensionsProps) { + const { + onEndReached, + stateListener, + onEndReachedThreshold, + onEndReachedTimeoutThreshold, + distanceFromEndThresholdValue, + onEndReachedHandlerTimeoutThreshold, + maxCountOfHandleOnEndReachedAfterStillness, + } = props; + + this.id = `__masonry_${count++}__`; + this.stateListener = stateListener; + + this.onEndReachedHelper = new OnEndReachedHelper({ + id: this.id, + onEndReached, + onEndReachedThreshold, + onEndReachedTimeoutThreshold, + distanceFromEndThresholdValue, + onEndReachedHandlerTimeoutThreshold, + maxCountOfHandleOnEndReachedAfterStillness, + }); + + const { dispatchMetricsThreshold = DISPATCH_METRICS_THRESHOLD } = props; + + this._dispatchMetricsBatchinator = new Batchinator( + this.dispatchMetrics.bind(this), + dispatchMetricsThreshold + ); + + this._dataModel = new MasonryDimensionsModel({ + column: DEFAULT_MASONRY_COLUMN, + // @ts-ignore [TODO] + container: this, + recycleEnabled: true, + manuallyApplyInitialData: true, + // @ts-ignore [TODO] + onListDimensionsModelDataChanged: + this.onListDimensionsModelDataChanged.bind(this), + ...props, + + initialNumToRender: 0, + }); + } + + getDataModel() { + return this._dataModel; + } + + /** + * required, to receive item layout from rendering + * TODO: pay attention !!! on update item layout, the columnInterval tree + * layout should be updated as well + */ + setFinalKeyItemLayout( + itemKey: string, + layout: ItemLayout | number, + updateIntervalTree?: boolean + ) { + return this._dataModel.setMasonryKeyItemLayout( + itemKey, + layout, + updateIntervalTree + ); + // return this._dataModel.setKeyItemLayout( + // itemKey, + // layout, + // updateIntervalTree + // ); + } + + /** + * + * @param data revoked on source data changed + */ + setData(data: ItemT[]) { + this._dataModel.setData(data); + } + + onListDimensionsModelDataChanged(props: { + dataModel: ListDimensionsModel; + dataChangedType: KeysChangedType; + data: ItemT[]; + oldData: ItemT[]; + }) { + const { dataChangedType, data, oldData, dataModel } = props; + const nextDataModel = dataModel as MasonryDimensionsModel; + + const chunks = chunkifyDataSource({ + data, + oldData, + dataChangedType, + masonryDataModel: nextDataModel, + }); + nextDataModel.setDataSource(chunks); + } + + // triggered due to item layout change... + onItemLayoutChanged() { + this._dispatchMetricsBatchinator.schedule(); + } + + onDataSourceChanged() { + this._dispatchMetricsBatchinator.schedule(); + } + + /** + * + * @param key + * @returns + * + * TODO: should return valid info, or will cause recycler return empty + */ + getFinalKeyIndexInfo(key: string): MasonryIndexInfo { + const indexInTotal = this._dataModel.getKeyIndex(key); + const columnIndex = this._dataModel.getKeyColumnIndex(key); + const index = this._dataModel.getKeyIndexInColumn(key); + return { + dimensions: this as any, + columnIndex, + indexInTotal, + index, + }; + } + + onColumnDataChange() { + this._dispatchMetricsBatchinator.schedule(); + } + + // TODO: + dispatchMetrics( + scrollMetrics: ScrollMetrics | undefined = this._scrollMetrics + ) { + if (!scrollMetrics) return; + + if (typeof this.stateListener === 'function') { + const stateResults = this._dataModel.getStrategies().map((strategy) => { + const stateResult = strategy.dispatchMetrics(scrollMetrics); + return stateResult; + }); + this.stateListener(stateResults); + } + } + + addStateListener(listener: MasonryStateListener) { + if (typeof listener === 'function') this.stateListener = listener; + return () => { + if (typeof listener === 'function') this.stateListener = undefined; + }; + } + + setScrollMetrics(scrollMetrics: ScrollMetrics) { + this._scrollMetrics = scrollMetrics; + // if (!this._scrollMetrics && scrollMetrics) { + // this.attemptToHandleEndReached(); + // } + } + + dispatchScrollMetricsEnabled() { + return true; + // return ( + // this.selector.getDispatchScrollMetricsEnabledStatus() && + // ListSpyUtils.selector.getDispatchScrollMetricsEnabledStatus() + // ); + } + + _updateScrollMetrics( + _scrollMetrics?: ScrollMetrics, + _options?: { + useCache?: boolean; + flush?: boolean; + } + ) { + const scrollMetrics = _scrollMetrics || this._scrollMetrics; + const flush = defaultBooleanValue(_options?.flush, false); + + if (!scrollMetrics) return; + if (!this.dispatchScrollMetricsEnabled()) { + this.setScrollMetrics(scrollMetrics); + return; + } + + this.setScrollMetrics(scrollMetrics); + + if (flush) { + this._dispatchMetricsBatchinator.flush(scrollMetrics); + } else { + this._dispatchMetricsBatchinator.schedule(scrollMetrics); + } + + return; + } + + /** + * + * @param _scrollMetrics + * @param _options + * + * trigger children MasonryDimensionStrategy should run on same pace; + */ + updateScrollMetrics( + _scrollMetrics?: ScrollMetrics, + _options?: { + useCache?: boolean; + flush?: boolean; + } + ) { + this._scrollMetrics = _scrollMetrics || this._scrollMetrics; + this._updateScrollMetrics(this._scrollMetrics, _options); + } +} + +export default MasonryDimensions; diff --git a/model/masonry-dimensions/src/MasonryDimensionsModel.ts b/model/masonry-dimensions/src/MasonryDimensionsModel.ts new file mode 100644 index 00000000..3769d6c9 --- /dev/null +++ b/model/masonry-dimensions/src/MasonryDimensionsModel.ts @@ -0,0 +1,322 @@ +import PrefixIntervalTree from '@x-oasis/prefix-interval-tree'; +import layoutEqual from '@x-oasis/layout-equal'; +import { ItemLayout } from '@infinite-list/dimensions-model'; +import { ListDimensionsModel } from '@infinite-list/dimensions-model'; + +import { + GenericItemT, + // ItemLayout, + MasonryDimensionsModelProps, + // ListDimensionsModel, +} from './types'; +import MasonryDimensionStrategy from './MasonryDimensionStrategy'; +import defaultValue from '@x-oasis/default-value'; +import { KeyIndexManager } from '@infinite-list/utils'; +import { LAYOUT_EQUAL_CORRECTION_VALUE } from './common'; + +/** + * The key point is how to decorate `columnIntervalTree` and `columnKeyIndexManager` + * value. + */ +class MasonryDimensionsModel< + ItemT extends GenericItemT = GenericItemT +> extends ListDimensionsModel { + readonly column: number; + private _columnDataSource: ItemT[][]; + private _columnIntervalTree: PrefixIntervalTree[]; + private _columnKeyIndexManager: KeyIndexManager[]; + private _strategies: MasonryDimensionStrategy[]; + + constructor(props: MasonryDimensionsModelProps) { + super(props); + const { column = 2 } = props; + const [strategies, dataSource, intervalTrees, keyIndexManagers] = + this.initColumnValues(column, props); + this.column = column; + this._strategies = strategies; + this._columnDataSource = dataSource; + this._columnIntervalTree = intervalTrees; + this._columnKeyIndexManager = keyIndexManagers; + this.setData(props.data); + } + + getColumn() { + return this.column; + } + + getColumnDataSource() { + return this._columnDataSource; + } + + getStrategies() { + return this._strategies; + } + + initColumnValues( + column: number, + props: MasonryDimensionsModelProps + ): [ + MasonryDimensionStrategy[], + ItemT[][], + PrefixIntervalTree[], + KeyIndexManager[] + ] { + const dataSource: ItemT[][] = []; + const intervalTrees: PrefixIntervalTree[] = []; + const keyIndexManagers: KeyIndexManager[] = []; + const strategies: MasonryDimensionStrategy[] = []; + for (let idx = 0; idx < column; idx++) { + dataSource.push([]); + intervalTrees.push(new PrefixIntervalTree(100)); + keyIndexManagers.push(new KeyIndexManager()); + strategies.push( + new MasonryDimensionStrategy({ + columnIndex: idx, + dataModel: this, + recycleEnabled: true, + ...props, + }) + ); + } + return [strategies, dataSource, intervalTrees, keyIndexManagers]; + } + + setDataSource(dataSource: ItemT[][]) { + dataSource.forEach((data, index) => { + this._columnDataSource[index] = data; + }); + } + + getDataSource(columnIndex: number) { + return this._columnDataSource[columnIndex]; + } + + getColumnIntervalTree(columnIndex: number) { + return this._columnIntervalTree[columnIndex]; + } + + setColumnIntervalTree(columnIndex: number, intervalTree: PrefixIntervalTree) { + this._columnIntervalTree[columnIndex] = intervalTree; + } + + getColumnKeyIndexManager(columnIndex: number) { + return this._columnKeyIndexManager[columnIndex]; + } + + setColumnKeyIndexManager( + columnIndex: number, + keyIndexManager: KeyIndexManager + ) { + this._columnKeyIndexManager[columnIndex] = keyIndexManager; + } + + getColumnIndexItemMeta(columnIndex: number, indexInColumn: number) { + const keyIndexManager = this._columnKeyIndexManager[columnIndex]; + const itemKey = keyIndexManager.getIndexKey(indexInColumn); + return this.getKeyMeta(itemKey); + } + + getColumnStrategy(index: number) { + return this._strategies[index]; + } + + setMasonryKeyItemLayout( + itemKey: string, + layout: ItemLayout | number, + updateIntervalTree?: boolean + ) { + // masonry list interval is no need to update.. + // this.setKeyItemLayout( + // itemKey, + // layout, + // false + // ); + + this.setColumnKeyItemLayout(itemKey, layout, updateIntervalTree); + return true; + } + + getColumnIndexKeyOffset( + columnIndex: number, + indexInColumn: number, + exclusive?: boolean + ) { + const intervalTree = this._columnIntervalTree[columnIndex]; + const listOffset = exclusive ? 0 : this.getContainerOffset(); + + if (typeof indexInColumn === 'number') { + return ( + listOffset + + (indexInColumn >= intervalTree.getMaxUsefulLength() + ? intervalTree.getHeap()[1] + : intervalTree.sumUntil(indexInColumn)) + ); + } + return 0; + } + + // should be overrided, or will cause error + override getKeyItemOffset(key: string, exclusive?: boolean) { + const columnIndex = this.getKeyColumnIndex(key); + const index = this.getKeyIndexInColumn(key); + const listOffset = exclusive ? 0 : this.getContainerOffset(); + const intervalTree = this.getColumnIntervalTree(columnIndex); + + if (typeof index === 'number') { + return ( + listOffset + + (index >= intervalTree.getMaxUsefulLength() + ? intervalTree.getHeap()[1] + : intervalTree.sumUntil(index)) + ); + } + return 0; + } + + /** + * + */ + getKeyColumnIndex(key: string) { + for (let columnIndex = 0; columnIndex < this.column; columnIndex++) { + const indexManager = this.getColumnKeyIndexManager(columnIndex); + if (indexManager.hasKey(key)) { + return columnIndex; + } + } + return 0; + } + + /** + * return index in column; comparing with `getKeyIndex` which will return index in total + */ + getKeyIndexInColumn(key: string) { + const columnIndex = this.getKeyColumnIndex(key); + const keyIndexManager = this.getColumnKeyIndexManager(columnIndex); + return defaultValue(keyIndexManager.getKeyIndex(key), -1); + } + + getColumnTotalLength(columnIndex: number) { + const intervalTree = this._columnIntervalTree[columnIndex]; + return intervalTree.getMaxUsefulLength() ? intervalTree.getHeap()[1] : 0; + } + + /** + * + * @param key string, itemKey + * @param info + * @param updateIntervalTree target IntervalTree, now this property is used in + * MasonryList + * @returns boolean value, true for updating intervalTree successfully. + */ + setColumnKeyItemLayout( + key: string, + info: ItemLayout | number, + updateIntervalTree?: boolean + ) { + const columnIndex = this.getKeyColumnIndex(key); + + if (columnIndex === -1) { + return; + } + + const data = this.getColumnDataSource()[columnIndex]; + const intervalTree = this.getColumnIntervalTree(columnIndex); + + const _update = + typeof updateIntervalTree === 'boolean' ? updateIntervalTree : true; + + // if (!falsy) { + // if (this._parentItemsDimensions) + // return this._parentItemsDimensions.setKeyItemLayout(key, info, _update); + // return false; + // } + const index = this.getKeyIndexInColumn(key); + // const item = this._data[index]; + const meta = this.getKeyMeta(key); + // const meta = this.getItemMeta(item, index); + + if (!meta) return false; + + if (typeof info === 'number') { + let length = this.normalizeLengthNumber(info); + meta.isApproximateLayout = false; + + if ( + Math.abs( + length - (this._selectValue.selectLength(meta.getLayout() || {}) || 0) + ) > LAYOUT_EQUAL_CORRECTION_VALUE + ) { + this._selectValue.setLength(meta.ensureLayout(), length); + + // if (index !== this._data.length - 1) { + if (index !== data.length - 1) { + meta.setUseSeparatorLength(true); + // length = meta.getSeparatorLength() + length; + } else { + meta.setUseSeparatorLength(false); + } + + length = meta.getFinalItemLength(); + + if (_update) { + intervalTree.set(index, length); + // this.setIntervalTreeValue(index, length); + + // TODO: the following is specific logic in MasonryList + this.triggerOwnerRecalculateLayout(); + + return true; + } + } else if (meta.isApproximateLayout) { + // 比如换了一个item的话,不会触发更新 + this.triggerOwnerRecalculateLayout(); + } + + return false; + } + const _info = this.normalizeLengthInfo(info); + const metaLayout = meta.getLayout(); + + if ( + !metaLayout || + !layoutEqual(metaLayout, _info as ItemLayout, { + keysToCheck: this.horizontal ? ['width'] : ['height'], + correctionValue: LAYOUT_EQUAL_CORRECTION_VALUE, + }) + ) { + meta.isApproximateLayout = false; + const currentLength = this._selectValue.selectLength( + meta.getLayout() || {} + ); + let length = this._selectValue.selectLength((_info as ItemLayout) || {}); + meta.setLayout(_info as ItemLayout); + // 只有关心的值发生变化时,才会再次触发setIntervalTreeValue + if (currentLength !== length && _update) { + if (index !== data.length - 1) { + // if (index !== this._data.length - 1) { + meta.setUseSeparatorLength(true); + // length = meta.getSeparatorLength() + length; + } else { + meta.setUseSeparatorLength(false); + } + + length = meta.getFinalItemLength(); + + intervalTree.set(index, length); + + // TODO: the following is specific logic in MasonryList + this.triggerOwnerRecalculateLayout(); + // this.setIntervalTreeValue(index, length); + return true; + } + } else if (meta.isApproximateLayout) { + meta.isApproximateLayout = false; + // 比如换了一个item的话,不会触发更新 + this.triggerOwnerRecalculateLayout(); + } + + return false; + } +} + +export default MasonryDimensionsModel; diff --git a/model/masonry-dimensions/src/__test__/MasonryDimensions.test.ts b/model/masonry-dimensions/src/__test__/MasonryDimensions.test.ts new file mode 100644 index 00000000..a132bd3a --- /dev/null +++ b/model/masonry-dimensions/src/__test__/MasonryDimensions.test.ts @@ -0,0 +1,268 @@ +import MasonryDimensions from '../MasonryDimensions'; +import Batchinator from '@x-oasis/batchinator'; +import { resetContext } from '@infinite-list/item-meta'; +import { vi, describe, it, beforeEach, expect } from 'vitest'; +import { MasonryStateResults } from '../types'; +const buildData = (count: number, startIndex = 0) => + new Array(count).fill(1).map((v, index) => ({ + key: index + startIndex, + })); + +type DataItem = { + key: number; +}; + +vi.spyOn(Batchinator.prototype, 'schedule').mockImplementation(function ( + ...args +) { + // eslint-disable-next-line prefer-spread + this._callback.apply(this, args); +}); + +describe('basic', () => { + beforeEach(() => { + resetContext(); + }); + + it('constructor', () => { + const initialData = buildData(4); + const masonryDimensions = new MasonryDimensions({ + data: initialData, + id: 'masonry', + keyExtractor: (item) => `${item.key}`, + }); + const dataModel = masonryDimensions.getDataModel(); + expect(dataModel.getColumn()).toBe(2); + expect(dataModel.getColumnDataSource()).toEqual([ + [{ key: 0 }, { key: 2 }], + [{ key: 1 }, { key: 3 }], + ]); + }); + it('constructor - initialNumToRender should be 0', () => { + const initialData = buildData(4); + const masonryDimensions = new MasonryDimensions({ + data: initialData, + id: 'masonry', + initialNumToRender: 10, + keyExtractor: (item) => `${item.key}`, + }); + const dataModel = masonryDimensions.getDataModel(); + expect(dataModel.initialNumToRender).toBe(0); + }); + + it('constructor -- append data', () => { + const initialData = buildData(4); + const masonryDimensions = new MasonryDimensions({ + data: initialData, + id: 'masonry', + keyExtractor: (item) => `${item.key}`, + }); + const dataModel = masonryDimensions.getDataModel(); + expect(dataModel.getColumn()).toBe(2); + expect(dataModel.getColumnDataSource()).toEqual([ + [{ key: 0 }, { key: 2 }], + [{ key: 1 }, { key: 3 }], + ]); + const nextData = buildData(6, 4); + masonryDimensions.setData(([] as DataItem[]).concat(initialData, nextData)); + + expect(dataModel.getColumnDataSource()).toEqual([ + [{ key: 0 }, { key: 2 }, { key: 4 }, { key: 6 }, { key: 8 }], + [{ key: 1 }, { key: 3 }, { key: 5 }, { key: 7 }, { key: 9 }], + ]); + }); + + it('constructor -- set new data', () => { + const initialData = buildData(4); + const masonryDimensions = new MasonryDimensions({ + data: initialData, + id: 'masonry', + keyExtractor: (item) => `${item.key}`, + }); + const dataModel = masonryDimensions.getDataModel(); + expect(dataModel.getColumn()).toBe(2); + expect(dataModel.getColumnDataSource()).toEqual([ + [{ key: 0 }, { key: 2 }], + [{ key: 1 }, { key: 3 }], + ]); + const nextData = buildData(6, 4); + + masonryDimensions.setData(nextData); + + expect(dataModel.getColumnDataSource()).toEqual([ + [{ key: 4 }, { key: 6 }, { key: 8 }], + [{ key: 5 }, { key: 7 }, { key: 9 }], + ]); + }); + + it('updateScrollMetrics', () => { + const initialData = buildData(60); + const masonryDimensions = new MasonryDimensions({ + data: initialData, + id: 'masonry', + keyExtractor: (item) => `${item.key}`, + getContainerLayout: () => ({ + x: 0, + y: 0, + width: 375, + height: 500, + }), + initialNumToRender: 4, + }); + + expect( + masonryDimensions.getDataModel().getColumnDataSource()[0].length + ).toBe(30); + expect( + masonryDimensions.getDataModel().getColumnDataSource()[1].length + ).toBe(30); + + let stateResult: MasonryStateResults = []; + + masonryDimensions.addStateListener( + (stateResults: MasonryStateResults) => { + stateResult = stateResults; + // const first = stateResults[0][0]; + // console.log('state result - ', stateResult[1][0].recycleState.map(state => state.targetKey)); + } + ); + // const dataModel = masonryDimensions.getDataModel(); + masonryDimensions.updateScrollMetrics({ + offset: 0, + visibleLength: 926, + contentLength: 3500, + }); + + expect( + stateResult[0][0].recycleState.map((state) => state.targetKey) + ).toEqual([ + '0', + '2', + '4', + '6', + '8', + '10', + '12', + '14', + '16', + '18', + '20', + '22', + '24', + '26', + '28', + '30', + '32', + '34', + '36', + '38', + ]); + expect(stateResult[0][0].spaceState.map((state) => state.key)).toEqual([ + 'space_0_28', + ]); + + expect( + stateResult[1][0].recycleState.map((state) => state.targetKey) + ).toEqual([ + '1', + '3', + '5', + '7', + '9', + '11', + '13', + '15', + '17', + '19', + '21', + '23', + '25', + '27', + '29', + '31', + '33', + '35', + '37', + '39', + ]); + expect(stateResult[1][0].spaceState.map((state) => state.key)).toEqual([ + 'space_0_28', + ]); + + masonryDimensions.updateScrollMetrics({ + offset: 400, + visibleLength: 926, + contentLength: 3500, + }); + + expect( + stateResult[0][1].recycleState.map((state) => state.targetKey) + ).toEqual([ + '0', + '2', + '4', + '6', + '8', + '10', + '12', + '14', + '16', + '18', + '20', + '22', + '24', + '26', + '28', + '30', + '32', + '34', + '36', + '38', + ]); + }); +}); + +describe('operations', () => { + it('getKeyIndexInfo', () => { + const initialData = buildData(4); + const masonryDimensions = new MasonryDimensions({ + data: initialData, + id: 'masonry', + keyExtractor: (item) => `${item.key}`, + }); + + expect(masonryDimensions.getFinalKeyIndexInfo('2')).toEqual({ + dimensions: masonryDimensions, + columnIndex: 0, + indexInTotal: 2, + index: 1, + }); + expect(masonryDimensions.getFinalKeyIndexInfo('1')).toEqual({ + dimensions: masonryDimensions, + columnIndex: 1, + indexInTotal: 1, + index: 0, + }); + }); + + it('should update itemLayout and columnIntervalTree', () => { + const initialData = buildData(4); + const masonryDimensions = new MasonryDimensions({ + data: initialData, + id: 'masonry', + keyExtractor: (item) => `${item.key}`, + }); + const dataModel = masonryDimensions.getDataModel(); + expect(dataModel.getKeyItemOffset('0')).toBe(0); + expect(dataModel.getKeyItemOffset('1')).toBe(0); + expect(dataModel.getKeyItemOffset('2')).toBe(80); + expect(dataModel.getKeyItemOffset('3')).toBe(80); + + expect(dataModel.getKeyIndexInColumn('0')).toBe(0); + + masonryDimensions.setFinalKeyItemLayout('0', 200); + + expect(dataModel.getKeyItemOffset('2')).toBe(200); + expect(dataModel.getKeyItemOffset('3')).toBe(80); + }); +}); diff --git a/model/masonry-dimensions/src/common.ts b/model/masonry-dimensions/src/common.ts new file mode 100644 index 00000000..13db7f33 --- /dev/null +++ b/model/masonry-dimensions/src/common.ts @@ -0,0 +1,2 @@ +export const DISPATCH_METRICS_THRESHOLD = 16; +export const LAYOUT_EQUAL_CORRECTION_VALUE = 0.5; diff --git a/model/masonry-dimensions/src/index.ts b/model/masonry-dimensions/src/index.ts new file mode 100644 index 00000000..d3265831 --- /dev/null +++ b/model/masonry-dimensions/src/index.ts @@ -0,0 +1,2 @@ +export { default as MasonryDimensions } from './MasonryDimensions'; +export * from './types'; diff --git a/model/masonry-dimensions/src/types/Container.types.ts b/model/masonry-dimensions/src/types/Container.types.ts new file mode 100644 index 00000000..87bdd338 --- /dev/null +++ b/model/masonry-dimensions/src/types/Container.types.ts @@ -0,0 +1,23 @@ +import { GenericItemT } from './generic.types'; +import { ListIndexInfo } from '@infinite-list/item-meta'; + +export interface DimensionsModelContainer< + ItemT extends GenericItemT = GenericItemT +> { + /** + * + * @param itemKey + * @param listKey + * @returns + * + * used in ItemMeta to get + */ + getFinalKeyIndexInfo: ( + itemKey: string, + listKey: string + ) => ListIndexInfo; + + onItemLayoutChanged: () => void; + + onDataSourceChanged: () => void; +} diff --git a/model/masonry-dimensions/src/types/generic.types.ts b/model/masonry-dimensions/src/types/generic.types.ts new file mode 100644 index 00000000..297f824d --- /dev/null +++ b/model/masonry-dimensions/src/types/generic.types.ts @@ -0,0 +1,4 @@ +export type GenericItemT = { + [key: string]: any; +}; +export type GenericStateResult = any; diff --git a/model/masonry-dimensions/src/types/index.ts b/model/masonry-dimensions/src/types/index.ts new file mode 100644 index 00000000..a99dad0c --- /dev/null +++ b/model/masonry-dimensions/src/types/index.ts @@ -0,0 +1,4 @@ +export * from './scrollMetrics.types'; +export * from './generic.types'; +export * from './masonry.types'; +export * from './Container.types'; diff --git a/model/masonry-dimensions/src/types/masonry.types.ts b/model/masonry-dimensions/src/types/masonry.types.ts new file mode 100644 index 00000000..5cd02666 --- /dev/null +++ b/model/masonry-dimensions/src/types/masonry.types.ts @@ -0,0 +1,47 @@ +import { ListDimensionsModelProps } from '@infinite-list/dimensions-model'; + +import { GenericItemT } from './generic.types'; +import MasonryDimensionsModel from '../MasonryDimensionsModel'; +import { ListIndexInfo } from '@infinite-list/item-meta'; + +import { + ListStateResult, + ListBaseDimensionsProps, +} from '@infinite-list/strategies'; + +export interface MasonryDimensionsProps< + ItemT extends GenericItemT = GenericItemT +> extends Omit, 'store' | 'container'> { + column?: number; + stateListener?: MasonryStateListener; +} + +export interface MasonryDimensionsModelProps< + ItemT extends GenericItemT = GenericItemT +> extends Omit, 'store'> { + column?: number; + // container: MasonryDimensions +} + +export type MasonryColumnStateResults< + ItemT extends GenericItemT = GenericItemT +> = [ListStateResult, ListStateResult]; +export type MasonryStateResults = + MasonryColumnStateResults[]; + +export type MasonryStateListener = ( + stateResults: MasonryStateResults +) => void; + +export interface MasonryDimensionStrategyProps< + ItemT extends GenericItemT = GenericItemT +> extends Omit { + columnIndex: number; + dataModel: MasonryDimensionsModel; +} + +export interface MasonryIndexInfo + extends ListIndexInfo { + columnIndex: number; + indexInTotal: number; +} diff --git a/model/masonry-dimensions/src/types/scrollMetrics.types.ts b/model/masonry-dimensions/src/types/scrollMetrics.types.ts new file mode 100644 index 00000000..9b779202 --- /dev/null +++ b/model/masonry-dimensions/src/types/scrollMetrics.types.ts @@ -0,0 +1,50 @@ +export interface ScrollRectangle { + left: number; + top: number; + bottom: number; + right: number; +} + +export interface ScrollPoint { + x: number; + y: number; +} + +export interface ScrollVelocity { + x: number; + y: number; +} + +export interface ScrollSize { + height: number; + width: number; +} +export type ScrollEventMetrics = { + contentInset: ScrollRectangle; + contentOffset: ScrollPoint; + contentSize: ScrollSize; + layoutMeasurement: ScrollSize; + velocity?: ScrollVelocity | undefined; + zoomScale: number; + /** + * @platform ios + */ + targetContentOffset?: ScrollPoint | undefined; +}; + +export type ScrollMetrics = { + contentLength: number; + offset: number; + visibleLength: number; + + // not used + dOffset?: number; + dt?: number; + timestamp?: number; + velocity?: number; +}; + +export type ContentSize = { + width: number; + height: number; +}; diff --git a/model/masonry-dimensions/src/utils.ts b/model/masonry-dimensions/src/utils.ts new file mode 100644 index 00000000..0860d0fd --- /dev/null +++ b/model/masonry-dimensions/src/utils.ts @@ -0,0 +1,160 @@ +import { GenericItemT } from './types'; +import { KeysChangedType } from '@infinite-list/base-dimensions'; + +import MasonryDimensionsModel from './MasonryDimensionsModel'; +// import KeyIndexManager from '../utils/KeyIndexManager'; +import { KeyIndexManager } from '@infinite-list/utils'; +import PrefixIntervalTree from '@x-oasis/prefix-interval-tree'; + +/** + * + * @param props + * @returns + * + * when to cause chunkifyDataSource: + * 1: init data + * 2: update data + * 3: update item layout + * + * pay attention, on this step, the child strategy related `intervalTree` and + * `keyIndexManagers` should be shuffled... + */ +export const chunkifyDataSource = < + ItemT extends GenericItemT = GenericItemT +>(props: { + data: ItemT[]; + oldData: ItemT[]; + masonryDataModel: MasonryDimensionsModel; + dataChangedType: KeysChangedType; +}) => { + const { data, oldData, masonryDataModel, dataChangedType } = props; + + const columnDataModels = masonryDataModel.getStrategies(); + + if (dataChangedType === KeysChangedType.Equal) { + return columnDataModels.map((dataModel) => dataModel.getData()); + } + + let startIndex = 0; + // as temp values + let lengthList: number[] = []; + // as temp values + const dataSource: ItemT[][] = []; + + const shouldShuffle = + [KeysChangedType.Append, KeysChangedType.Initial].indexOf( + dataChangedType + ) === -1; + + if (!shouldShuffle) { + startIndex = oldData.length; + lengthList = columnDataModels.map((dataModel) => { + dataSource.push([]); + const length = dataModel.getTotalLength(); + + if (typeof length === 'number') return length; + if (typeof length === 'string') return parseFloat(length); + return 0; + }); + } else { + for (let index = 0; index < columnDataModels.length; index++) { + dataSource.push([]); + lengthList.push(0); + } + } + + const findMinLengthColumnIndex = () => { + let minValue = lengthList[0] || 0; + let minIndex = 0; + for (let index = 1; index < lengthList.length; index++) { + const nextValue = lengthList[index]; + if (nextValue < minValue) { + minValue = nextValue; + minIndex = index; + } + } + return minIndex; + }; + let minIndex = findMinLengthColumnIndex(); + + for (let idx = startIndex; idx < data.length; idx++) { + const item = data[idx]; + const currentListLength = lengthList[minIndex]; + dataSource[minIndex].push(item); + const itemMeta = masonryDataModel.getItemMeta(item, idx); + // separatorLength should be included + const itemLength = itemMeta?.getFinalItemLength() || 0; + + lengthList[minIndex] = currentListLength + itemLength; + + const nextInfo = findMinLengthColumnIndex(); + minIndex = nextInfo; + } + + dataSource.forEach((data, columnIndex) => { + const len = data.length; + + if (!shouldShuffle) { + const keyIndexManager = + masonryDataModel.getColumnKeyIndexManager(columnIndex); + const intervalTree = masonryDataModel.getColumnIntervalTree(columnIndex); + data.forEach((item, index) => { + // TODO: index is not the correct value + const itemMeta = masonryDataModel.getItemMeta(item, index); + const key = itemMeta?.getKey(); + if (key) { + keyIndexManager.setKeyIndex(key, index); + keyIndexManager.setIndexKey(index, key); + } + if (itemMeta?.getLayout()) { + // const itemLength = this._selectValue.selectLength(meta.getLayout()); + // 最后一个不包含separatorLength + if (index === len - 1) { + itemMeta.setUseSeparatorLength(false); + } else { + itemMeta.setUseSeparatorLength(true); + } + + const length = itemMeta.getFinalItemLength(); + + intervalTree.drySet(index, length); + } + }); + + intervalTree.applyUpdate(); + + const oldData = columnDataModels[columnIndex].getData(); + dataSource[columnIndex] = ([] as ItemT[]).concat(oldData, data); + } else { + // `keyIndexManager` and `intervalTree` are lately created... + const keyIndexManager = new KeyIndexManager(); + const intervalTree = new PrefixIntervalTree(100); + + data.forEach((item, index) => { + // TODO: index is not the correct value + const itemMeta = masonryDataModel.getItemMeta(item, index); + const key = itemMeta?.getKey(); + if (key) { + keyIndexManager.setKeyIndex(key, index); + keyIndexManager.setIndexKey(index, key); + } + if (itemMeta?.getLayout()) { + // const itemLength = this._selectValue.selectLength(meta.getLayout()); + // 最后一个不包含separatorLength + if (index === len - 1) { + itemMeta.setUseSeparatorLength(false); + } else { + itemMeta.setUseSeparatorLength(true); + } + + const length = itemMeta.getFinalItemLength(); + intervalTree.drySet(index, length); + } + }); + intervalTree.applyUpdate(); + masonryDataModel.setColumnIntervalTree(columnIndex, intervalTree); + masonryDataModel.setColumnKeyIndexManager(columnIndex, keyIndexManager); + } + }); + return dataSource; +}; diff --git a/model/masonry-dimensions/tsconfig.json b/model/masonry-dimensions/tsconfig.json new file mode 100644 index 00000000..8d9d5912 --- /dev/null +++ b/model/masonry-dimensions/tsconfig.json @@ -0,0 +1,22 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "commonjs", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ] +} diff --git a/model/masonry-dimensions/tsconfig.lib.json b/model/masonry-dimensions/tsconfig.lib.json new file mode 100644 index 00000000..ce3b531c --- /dev/null +++ b/model/masonry-dimensions/tsconfig.lib.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "declaration": true, + "types": ["node"] + }, + "include": ["src/**/*.ts"], + "exclude": ["vite.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"] +} diff --git a/model/masonry-dimensions/tsconfig.spec.json b/model/masonry-dimensions/tsconfig.spec.json new file mode 100644 index 00000000..3c002c21 --- /dev/null +++ b/model/masonry-dimensions/tsconfig.spec.json @@ -0,0 +1,26 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "types": [ + "vitest/globals", + "vitest/importMeta", + "vite/client", + "node", + "vitest" + ] + }, + "include": [ + "vite.config.ts", + "vitest.config.ts", + "src/**/*.test.ts", + "src/**/*.spec.ts", + "src/**/*.test.tsx", + "src/**/*.spec.tsx", + "src/**/*.test.js", + "src/**/*.spec.js", + "src/**/*.test.jsx", + "src/**/*.spec.jsx", + "src/**/*.d.ts" + ] +} diff --git a/model/masonry-dimensions/vite.config.ts b/model/masonry-dimensions/vite.config.ts new file mode 100644 index 00000000..0f8f5b3d --- /dev/null +++ b/model/masonry-dimensions/vite.config.ts @@ -0,0 +1,28 @@ +import { defineConfig } from 'vite'; + +import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin'; +import { nxCopyAssetsPlugin } from '@nx/vite/plugins/nx-copy-assets.plugin'; + +export default defineConfig({ + root: __dirname, + cacheDir: '../../node_modules/.vite/model/masonry-dimensions', + + plugins: [nxViteTsPaths(), nxCopyAssetsPlugin(['*.md'])], + + // Uncomment this if you are using workers. + // worker: { + // plugins: [ nxViteTsPaths() ], + // }, + + test: { + watch: false, + globals: true, + environment: 'node', + include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], + reporters: ['default'], + coverage: { + reportsDirectory: '../../coverage/model/masonry-dimensions', + provider: 'v8', + }, + }, +}); diff --git a/model/pseudo-list-dimensions/.swcrc b/model/pseudo-list-dimensions/.swcrc new file mode 100644 index 00000000..28e88ec1 --- /dev/null +++ b/model/pseudo-list-dimensions/.swcrc @@ -0,0 +1,29 @@ +{ + "jsc": { + "target": "es2017", + "parser": { + "syntax": "typescript", + "decorators": true, + "dynamicImport": true + }, + "transform": { + "decoratorMetadata": true, + "legacyDecorator": true + }, + "keepClassNames": true, + "externalHelpers": true, + "loose": true + }, + "module": { + "type": "es6" + }, + "sourceMaps": true, + "exclude": [ + "jest.config.ts", + ".*\\.spec.tsx?$", + ".*\\.test.tsx?$", + "./src/jest-setup.ts$", + "./**/jest-setup.ts$", + ".*.js$" + ] +} diff --git a/model/pseudo-list-dimensions/README.md b/model/pseudo-list-dimensions/README.md new file mode 100644 index 00000000..6c81f797 --- /dev/null +++ b/model/pseudo-list-dimensions/README.md @@ -0,0 +1,11 @@ +# pseudo-list-dimensions + +This library was generated with [Nx](https://nx.dev). + +## Building + +Run `nx build pseudo-list-dimensions` to build the library. + +## Running unit tests + +Run `nx test pseudo-list-dimensions` to execute the unit tests via [Vitest](https://vitest.dev/). diff --git a/model/pseudo-list-dimensions/eslint.config.js b/model/pseudo-list-dimensions/eslint.config.js new file mode 100644 index 00000000..6e58c36a --- /dev/null +++ b/model/pseudo-list-dimensions/eslint.config.js @@ -0,0 +1,22 @@ +const baseConfig = require('../../eslint.config.js'); + +module.exports = [ + ...baseConfig, + { + files: ['**/*.json'], + rules: { + '@nx/dependency-checks': [ + 'error', + { + ignoredFiles: [ + '{projectRoot}/eslint.config.{js,cjs,mjs}', + '{projectRoot}/vite.config.{js,ts,mjs,mts}', + ], + }, + ], + }, + languageOptions: { + parser: require('jsonc-eslint-parser'), + }, + }, +]; diff --git a/model/pseudo-list-dimensions/package.json b/model/pseudo-list-dimensions/package.json new file mode 100644 index 00000000..84e237e7 --- /dev/null +++ b/model/pseudo-list-dimensions/package.json @@ -0,0 +1,7 @@ +{ + "name": "@infinite-list/pseudo-list-dimensions", + "version": "0.0.1", + "dependencies": {}, + "main": "./index.cjs", + "module": "./index.js" +} diff --git a/model/pseudo-list-dimensions/project.json b/model/pseudo-list-dimensions/project.json new file mode 100644 index 00000000..06f3b6d4 --- /dev/null +++ b/model/pseudo-list-dimensions/project.json @@ -0,0 +1,22 @@ +{ + "name": "pseudo-list-dimensions", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "model/pseudo-list-dimensions/src", + "projectType": "library", + "release": { + "version": { + "generatorOptions": { + "packageRoot": "dist/{projectRoot}", + "currentVersionResolver": "git-tag" + } + } + }, + "tags": [], + "targets": { + "nx-release-publish": { + "options": { + "packageRoot": "dist/{projectRoot}" + } + } + } +} diff --git a/model/pseudo-list-dimensions/rollup.config.js b/model/pseudo-list-dimensions/rollup.config.js new file mode 100644 index 00000000..6efe4350 --- /dev/null +++ b/model/pseudo-list-dimensions/rollup.config.js @@ -0,0 +1,17 @@ +const { withNx } = require('@nx/rollup/with-nx'); + +module.exports = withNx( + { + main: './src/index.ts', + outputPath: '../../dist/model/pseudo-list-dimensions', + tsConfig: './tsconfig.lib.json', + compiler: 'swc', + format: ['cjs', 'esm'], + assets: [{ input: '.', output: '.', glob: '*.md' }], + }, + { + // Provide additional rollup configuration here. See: https://rollupjs.org/configuration-options + // e.g. + // output: { sourcemap: true }, + } +); diff --git a/model/pseudo-list-dimensions/src/PseudoListDimensions.ts b/model/pseudo-list-dimensions/src/PseudoListDimensions.ts new file mode 100644 index 00000000..566845f0 --- /dev/null +++ b/model/pseudo-list-dimensions/src/PseudoListDimensions.ts @@ -0,0 +1,192 @@ +// import BaseDimensions from './BaseDimensions'; +// import ItemMeta from './ItemMeta'; +// import PrefixIntervalTree from '@x-oasis/prefix-interval-tree'; +// import layoutEqual from '@x-oasis/layout-equal'; + +// import { +// IndexInfo, +// ItemLayout, +// KeysChangedType, +// PseudoListDimensionsProps, +// } from './types'; +// class PseudoListDimensions extends BaseDimensions { +// constructor(props: PseudoListDimensionsProps) { +// super({ +// ...props, +// isIntervalTreeItems: true, +// }); +// const { indexKeys } = props; +// this.setIndexKeys(indexKeys); +// } + +// setIndexKeys(keys: Array) { +// const keysChangedType = this.resolveKeysChangedType(keys); + +// switch (keysChangedType) { +// case KeysChangedType.Equal: +// break; +// case KeysChangedType.Append: +// this.append(keys); +// break; +// case KeysChangedType.Add: +// case KeysChangedType.Remove: +// case KeysChangedType.Reorder: +// this.shuffle(keys); +// break; +// } +// this.keyIndexManager.setIndexKeys(keys); +// // this._indexKeys = keys; +// } + +// getIndexInfo(key: string): IndexInfo { +// const info = {} as IndexInfo; +// // info.index = this._indexKeys.indexOf(key); +// info.index = this.keyIndexManager.findIndex(key); +// return info; +// } + +// createItemMeta(key: string) { +// const meta = ItemMeta.spawn({ +// key, +// owner: this, +// separatorLength: 0, +// canIUseRIC: this.canIUseRIC, +// layout: { x: 0, y: 0, height: 0, width: 0 }, +// }); +// return meta; +// } + +// pump( +// _keys: Array, +// baseIndex = 0, +// keyToIndexMap: Map, +// keyToIndexArray: Array, +// keyToMetaMap: Map, +// intervalTree: PrefixIntervalTree +// ) { +// const keys = _keys.slice(baseIndex); +// const len = keys.length; +// for (let index = 0; index < len; index++) { +// const currentIndex = index + baseIndex; +// const itemKey = keys[index]; +// const meta = this.getKeyMeta(itemKey) || this.createItemMeta(itemKey); +// const itemLength = this._selectValue.selectLength(meta.getLayout()!); + +// keyToIndexMap.set(itemKey, currentIndex); +// keyToIndexArray[currentIndex] = itemKey; +// keyToMetaMap.set(itemKey, meta); +// intervalTree.set(currentIndex, itemLength); +// } +// } + +// append(keys: Array) { +// // const baseIndex = this._indexKeys.length; +// const baseIndex = this.keyIndexManager.getIndexKeysLength(); +// this.pump( +// keys, +// baseIndex, +// this.keyIndexManager.keyToIndexMap, +// this.keyIndexManager.indexKeys, +// // this._keyToIndexMap, +// // this._indexKeys, +// this._keyToMetaMap, +// this.intervalTree +// ); +// } + +// shuffle(keys: Array) { +// const itemIntervalTree = this.createIntervalTree(); +// const keyToIndexMap = new Map(); +// const keyToIndexArray: string[] = []; +// const keyToMetaMap = new Map(); +// this.pump( +// keys, +// 0, +// keyToIndexMap, +// keyToIndexArray, +// keyToMetaMap, +// itemIntervalTree +// ); +// this.keyIndexManager.setIndexKeys(keyToIndexArray); +// this.keyIndexManager.setKeyToIndexMap(keyToIndexMap); +// // this._indexKeys = keyToIndexArray; +// // this._keyToIndexMap = keyToIndexMap; +// this._keyToMetaMap = keyToMetaMap; +// this.intervalTree = itemIntervalTree; +// } + +// override resolveKeysChangedType(keys: Array) { +// // const oldLen = this._indexKeys.length; +// const oldLen = this.keyIndexManager.getIndexKeysLength(); +// const newLen = keys.length; + +// if (oldLen > newLen) return KeysChangedType.Remove; +// for (let index = 0; index < oldLen; index++) { +// // const currentKey = this._indexKeys[index]; +// const currentKey = this.keyIndexManager.getIndexKey(index); +// const nextKey = keys[index]; +// if (currentKey !== nextKey) { +// if (oldLen === newLen) return KeysChangedType.Reorder; +// return KeysChangedType.Add; +// } +// } + +// if (oldLen === newLen) return KeysChangedType.Equal; +// return KeysChangedType.Append; +// } + +// _setKeyItemLayout( +// key: string, +// info: ItemLayout | number, +// updateIntervalTree?: boolean +// ) { +// const index = this.getKeyIndex(key); +// const meta = this.getKeyMeta(key); +// const _update = +// typeof updateIntervalTree === 'boolean' ? updateIntervalTree : true; + +// if (!meta) return false; + +// if (typeof info === 'number') { +// const length = this.normalizeLengthNumber(info); +// if ( +// meta && +// this._selectValue.selectLength(meta.getLayout()!) !== length +// ) { +// this._selectValue.setLength(meta.getLayout()!, length); +// if (_update) { +// this.setIntervalTreeValue(index, length); +// return true; +// } +// } +// return false; +// } + +// const _info = this.normalizeLengthInfo(info); + +// if (!layoutEqual(meta.getLayout()!, _info as ItemLayout)) { +// const currentLength = this._selectValue.selectLength( +// meta.getLayout() || {} +// ); +// const length = this._selectValue.selectLength( +// (_info as ItemLayout) || {} +// ); +// meta.setLayout(_info as ItemLayout); + +// if (currentLength !== length && _update) { +// this.setIntervalTreeValue(index, length); +// return true; +// } +// } + +// return false; +// } + +// computeIndexRangeMeta() { +// return []; +// } +// } + +// export default PseudoListDimensions; + +export default () => null; diff --git a/model/pseudo-list-dimensions/src/index.ts b/model/pseudo-list-dimensions/src/index.ts new file mode 100644 index 00000000..ce95dad8 --- /dev/null +++ b/model/pseudo-list-dimensions/src/index.ts @@ -0,0 +1 @@ +export { default as PseudoListDimensions } from './PseudoListDimensions'; diff --git a/model/pseudo-list-dimensions/tsconfig.json b/model/pseudo-list-dimensions/tsconfig.json new file mode 100644 index 00000000..8d9d5912 --- /dev/null +++ b/model/pseudo-list-dimensions/tsconfig.json @@ -0,0 +1,22 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "commonjs", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ] +} diff --git a/model/pseudo-list-dimensions/tsconfig.lib.json b/model/pseudo-list-dimensions/tsconfig.lib.json new file mode 100644 index 00000000..ce3b531c --- /dev/null +++ b/model/pseudo-list-dimensions/tsconfig.lib.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "declaration": true, + "types": ["node"] + }, + "include": ["src/**/*.ts"], + "exclude": ["vite.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"] +} diff --git a/model/pseudo-list-dimensions/tsconfig.spec.json b/model/pseudo-list-dimensions/tsconfig.spec.json new file mode 100644 index 00000000..3c002c21 --- /dev/null +++ b/model/pseudo-list-dimensions/tsconfig.spec.json @@ -0,0 +1,26 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "types": [ + "vitest/globals", + "vitest/importMeta", + "vite/client", + "node", + "vitest" + ] + }, + "include": [ + "vite.config.ts", + "vitest.config.ts", + "src/**/*.test.ts", + "src/**/*.spec.ts", + "src/**/*.test.tsx", + "src/**/*.spec.tsx", + "src/**/*.test.js", + "src/**/*.spec.js", + "src/**/*.test.jsx", + "src/**/*.spec.jsx", + "src/**/*.d.ts" + ] +} diff --git a/model/pseudo-list-dimensions/vite.config.ts b/model/pseudo-list-dimensions/vite.config.ts new file mode 100644 index 00000000..3cfa1bf5 --- /dev/null +++ b/model/pseudo-list-dimensions/vite.config.ts @@ -0,0 +1,28 @@ +import { defineConfig } from 'vite'; + +import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin'; +import { nxCopyAssetsPlugin } from '@nx/vite/plugins/nx-copy-assets.plugin'; + +export default defineConfig({ + root: __dirname, + cacheDir: '../../node_modules/.vite/model/pseudo-list-dimensions', + + plugins: [nxViteTsPaths(), nxCopyAssetsPlugin(['*.md'])], + + // Uncomment this if you are using workers. + // worker: { + // plugins: [ nxViteTsPaths() ], + // }, + + test: { + watch: false, + globals: true, + environment: 'node', + include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], + reporters: ['default'], + coverage: { + reportsDirectory: '../../coverage/model/pseudo-list-dimensions', + provider: 'v8', + }, + }, +}); diff --git a/nx.json b/nx.json index 29c536bc..e0073aa1 100644 --- a/nx.json +++ b/nx.json @@ -52,7 +52,18 @@ "generators": { "@nx/react": { "library": { + "style": "css", + "linter": "eslint", "unitTestRunner": "vitest" + }, + "application": { + "babel": true, + "style": "css", + "linter": "eslint", + "bundler": "vite" + }, + "component": { + "style": "css" } } }, @@ -61,6 +72,11 @@ "cache": true, "dependsOn": ["^build"], "inputs": ["default", "^default"] + }, + "@nx/vite:build": { + "cache": true, + "dependsOn": ["^build"], + "inputs": ["default", "^default"] } }, "release": { diff --git a/package.json b/package.json index 1b893195..917e3f5d 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "build": "nx run-many -t build", "test": "nx run-many -t test", "lint": "eslint --ext js,ts,tsx .", + "format": "nx run-many -t prettier --write ", "prepare": "husky install", "version": "changeset version && pnpm install --no-frozen-lockfile", "publish": "pnpm publish -r --access public", @@ -52,15 +53,17 @@ "@react-native/babel-preset": "^0.74.83", "@react-native/metro-config": "^0.74.83", "@storybook/addon-interactions": "^8.2.8", - "@storybook/core-server": "^8.2.8", + "@storybook/core-server": "8.4.7", "@storybook/jest": "^0.2.3", - "@storybook/react": "^8.2.8", - "@storybook/react-vite": "^8.2.8", + "@storybook/react": "8.4.7", + "@storybook/react-vite": "8.4.7", "@storybook/test-runner": "^0.13.0", "@storybook/testing-library": "^0.2.2", "@swc-node/register": "~1.9.1", + "@swc/cli": "~0.3.12", "@swc/core": "~1.5.7", "@swc/helpers": "~0.5.11", + "@swc/jest": "~0.2.36", "@testing-library/jest-native": "~5.4.3", "@testing-library/react": "15.0.6", "@testing-library/react-native": "~12.5.0", @@ -82,6 +85,7 @@ "husky": "^8.0.1", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", + "jest-environment-node": "^29.7.0", "jest-react-native": "18.0.0", "jsdom": "~22.1.0", "lint-staged": "^13.0.3", @@ -92,7 +96,8 @@ "react-test-renderer": "18.2.0", "rimraf": "^3.0.2", "rollup": "^4.14.0", - "storybook": "^8.2.8", + "storybook": "8.4.7", + "swc-loader": "0.1.15", "ts-jest": "^29.1.0", "ts-node": "10.9.1", "tslib": "^2.3.0", @@ -119,4 +124,4 @@ "nx": { "includedScripts": [] } -} \ No newline at end of file +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 505bea52..e343e899 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,4 +1,4 @@ -lockfileVersion: '9.0' +lockfileVersion: '6.0' settings: autoInstallPeers: true @@ -10,10 +10,10 @@ importers: dependencies: '@babel/runtime': specifier: ^7.25.7 - version: 7.25.7 + version: 7.26.0 '@storybook/addon-essentials': specifier: ^8.4.7 - version: 8.4.7(@types/react@18.3.1)(storybook@8.3.3)(webpack-sources@3.2.3) + version: 8.4.7(@types/react@18.3.1)(storybook@8.4.7) react: specifier: 18.3.1 version: 18.3.1 @@ -22,98 +22,104 @@ importers: version: 18.3.1(react@18.3.1) react-native: specifier: 0.74.1 - version: 0.74.1(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(@types/react@18.3.1)(react@18.3.1) + version: 0.74.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0)(@types/react@18.3.1)(react@18.3.1) devDependencies: '@babel/core': specifier: ^7.14.5 - version: 7.25.2 + version: 7.26.0 '@babel/preset-react': specifier: ^7.14.5 - version: 7.24.7(@babel/core@7.25.2) + version: 7.26.3(@babel/core@7.26.0) '@changesets/cli': specifier: ^2.27.8 - version: 2.27.8 + version: 2.27.11 '@eslint/js': specifier: ^9.8.0 - version: 9.11.1 + version: 9.17.0 '@nx/eslint': specifier: 19.8.0 - version: 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.11.1)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(verdaccio@5.32.2(typanion@3.14.0)) + version: 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(eslint@9.17.0)(nx@19.8.0)(verdaccio@5.33.0) '@nx/eslint-plugin': specifier: 19.8.0 - version: 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(@typescript-eslint/parser@8.7.0(eslint@9.11.1)(typescript@5.5.4))(eslint-config-prettier@9.1.0(eslint@9.11.1))(eslint@9.11.1)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0)) + version: 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(@typescript-eslint/parser@8.18.1)(eslint-config-prettier@9.1.0)(eslint@9.17.0)(nx@19.8.0)(typescript@5.5.4)(verdaccio@5.33.0) '@nx/jest': specifier: 19.8.0 - version: 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0)) + version: 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(nx@19.8.0)(ts-node@10.9.1)(typescript@5.5.4)(verdaccio@5.33.0) '@nx/js': specifier: 19.8.0 - version: 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0)) + version: 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(nx@19.8.0)(typescript@5.5.4)(verdaccio@5.33.0) '@nx/react': specifier: 19.8.0 - version: 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.11.1)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0))(vue-tsc@1.8.27(typescript@5.5.4))(webpack@5.95.0(@swc/core@1.5.29(@swc/helpers@0.5.13))(esbuild@0.17.19)) + version: 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(eslint@9.17.0)(nx@19.8.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.4)(verdaccio@5.33.0)(webpack@5.97.1) '@nx/react-native': specifier: 19.8.0 - version: 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.11.1)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0))(vue-tsc@1.8.27(typescript@5.5.4))(webpack@5.95.0(@swc/core@1.5.29(@swc/helpers@0.5.13))(esbuild@0.17.19)) + version: 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(eslint@9.17.0)(nx@19.8.0)(react-dom@18.3.1)(react@18.3.1)(ts-node@10.9.1)(typescript@5.5.4)(verdaccio@5.33.0)(webpack@5.97.1) '@nx/rollup': specifier: 19.8.0 - version: 19.8.0(@babel/core@7.25.2)(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/babel__core@7.20.5)(@types/node@18.16.9)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0)) + version: 19.8.0(@babel/core@7.26.0)(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(nx@19.8.0)(ts-node@10.9.1)(typescript@5.5.4)(verdaccio@5.33.0) '@nx/storybook': specifier: 19.8.0 - version: 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.11.1)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0)) + version: 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(eslint@9.17.0)(nx@19.8.0)(typescript@5.5.4)(verdaccio@5.33.0) '@nx/vite': specifier: 19.8.0 - version: 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0))(vite@5.4.8(@types/node@18.16.9)(terser@5.33.0))(vitest@1.6.0) + version: 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(nx@19.8.0)(typescript@5.5.4)(verdaccio@5.33.0)(vite@5.4.11)(vitest@1.6.0) '@nx/web': specifier: 19.8.0 - version: 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0)) + version: 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(nx@19.8.0)(typescript@5.5.4)(verdaccio@5.33.0) '@react-native-community/cli-platform-android': specifier: ~13.6.6 - version: 13.6.6 + version: 13.6.9 '@react-native/babel-preset': specifier: ^0.74.83 - version: 0.74.83(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2)) + version: 0.74.88(@babel/core@7.26.0)(@babel/preset-env@7.26.0) '@react-native/metro-config': specifier: ^0.74.83 - version: 0.74.88(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2)) + version: 0.74.88(@babel/core@7.26.0)(@babel/preset-env@7.26.0) '@storybook/addon-interactions': specifier: ^8.2.8 - version: 8.3.3(storybook@8.3.3) + version: 8.4.7(storybook@8.4.7) '@storybook/core-server': - specifier: ^8.2.8 - version: 8.3.3(storybook@8.3.3) + specifier: 8.4.7 + version: 8.4.7(storybook@8.4.7) '@storybook/jest': specifier: ^0.2.3 version: 0.2.3 '@storybook/react': - specifier: ^8.2.8 - version: 8.3.3(@storybook/test@8.3.3(storybook@8.3.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3)(typescript@5.5.4) + specifier: 8.4.7 + version: 8.4.7(react-dom@18.3.1)(react@18.3.1)(storybook@8.4.7)(typescript@5.5.4) '@storybook/react-vite': - specifier: ^8.2.8 - version: 8.3.3(@storybook/test@8.3.3(storybook@8.3.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.22.4)(storybook@8.3.3)(typescript@5.5.4)(vite@5.4.8(@types/node@18.16.9)(terser@5.33.0))(webpack-sources@3.2.3) + specifier: 8.4.7 + version: 8.4.7(react-dom@18.3.1)(react@18.3.1)(rollup@4.29.1)(storybook@8.4.7)(typescript@5.5.4)(vite@5.4.11) '@storybook/test-runner': specifier: ^0.13.0 - version: 0.13.0(@swc/helpers@0.5.13)(@types/node@18.16.9)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4)) + version: 0.13.0(@swc/helpers@0.5.15)(@types/node@18.16.9)(ts-node@10.9.1) '@storybook/testing-library': specifier: ^0.2.2 version: 0.2.2 '@swc-node/register': specifier: ~1.9.1 - version: 1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4) + version: 1.9.2(@swc/core@1.5.29)(@swc/types@0.1.17)(typescript@5.5.4) + '@swc/cli': + specifier: ~0.3.12 + version: 0.3.14(@swc/core@1.5.29) '@swc/core': specifier: ~1.5.7 - version: 1.5.29(@swc/helpers@0.5.13) + version: 1.5.29(@swc/helpers@0.5.15) '@swc/helpers': specifier: ~0.5.11 - version: 0.5.13 + version: 0.5.15 + '@swc/jest': + specifier: ~0.2.36 + version: 0.2.37(@swc/core@1.5.29) '@testing-library/jest-native': specifier: ~5.4.3 - version: 5.4.3(react-native@0.74.1(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(@types/react@18.3.1)(react@18.3.1))(react-test-renderer@18.2.0(react@18.3.1))(react@18.3.1) + version: 5.4.3(react-native@0.74.1)(react-test-renderer@18.2.0)(react@18.3.1) '@testing-library/react': specifier: 15.0.6 - version: 15.0.6(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 15.0.6(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1) '@testing-library/react-native': specifier: ~12.5.0 - version: 12.5.3(jest@29.7.0(@types/node@18.16.9)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4)))(react-native@0.74.1(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(@types/react@18.3.1)(react@18.3.1))(react-test-renderer@18.2.0(react@18.3.1))(react@18.3.1) + version: 12.5.3(jest@29.7.0)(react-native@0.74.1)(react-test-renderer@18.2.0)(react@18.3.1) '@types/jest': specifier: ^29.5.12 version: 29.5.14 @@ -128,10 +134,10 @@ importers: version: 18.3.0 '@types/react-native': specifier: ^0.73.0 - version: 0.73.0(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(@types/react@18.3.1)(react@18.3.1) + version: 0.73.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0)(@types/react@18.3.1)(react@18.3.1) '@vitejs/plugin-react': specifier: ^4.2.0 - version: 4.3.1(vite@5.4.8(@types/node@18.16.9)(terser@5.33.0)) + version: 4.3.4(vite@5.4.11) '@vitest/coverage-v8': specifier: ^1.0.4 version: 1.6.0(vitest@1.6.0) @@ -140,55 +146,58 @@ importers: version: 1.6.0(vitest@1.6.0) babel-jest: specifier: ^29.7.0 - version: 29.7.0(@babel/core@7.25.2) + version: 29.7.0(@babel/core@7.26.0) eslint: specifier: ^9.8.0 - version: 9.11.1 + version: 9.17.0 eslint-config-prettier: specifier: ^9.0.0 - version: 9.1.0(eslint@9.11.1) + version: 9.1.0(eslint@9.17.0) eslint-plugin-import: specifier: 2.30.0 - version: 2.30.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1)(typescript@5.5.4))(eslint@9.11.1) + version: 2.30.0(@typescript-eslint/parser@8.18.1)(eslint@9.17.0) eslint-plugin-jsx-a11y: specifier: 6.7.1 - version: 6.7.1(eslint@9.11.1) + version: 6.7.1(eslint@9.17.0) eslint-plugin-react: specifier: 7.35.0 - version: 7.35.0(eslint@9.11.1) + version: 7.35.0(eslint@9.17.0) eslint-plugin-react-hooks: specifier: 4.6.0 - version: 4.6.0(eslint@9.11.1) + version: 4.6.0(eslint@9.17.0) husky: specifier: ^8.0.1 version: 8.0.3 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@18.16.9)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4)) + version: 29.7.0(@types/node@18.16.9)(ts-node@10.9.1) jest-environment-jsdom: specifier: ^29.7.0 version: 29.7.0 + jest-environment-node: + specifier: ^29.7.0 + version: 29.7.0 jest-react-native: specifier: 18.0.0 - version: 18.0.0(react-native@0.74.1(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(@types/react@18.3.1)(react@18.3.1)) + version: 18.0.0(react-native@0.74.1) jsdom: specifier: ~22.1.0 version: 22.1.0 lint-staged: specifier: ^13.0.3 - version: 13.3.0(enquirer@2.4.1) + version: 13.3.0 nx: specifier: 19.8.0 - version: 19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)) + version: 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29) prettier: specifier: ^2.8.4 version: 2.8.8 react-native-svg: specifier: 15.3.0 - version: 15.3.0(react-native@0.74.1(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(@types/react@18.3.1)(react@18.3.1))(react@18.3.1) + version: 15.3.0(react-native@0.74.1)(react@18.3.1) react-native-svg-transformer: specifier: 1.3.0 - version: 1.3.0(react-native-svg@15.3.0(react-native@0.74.1(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(@types/react@18.3.1)(react@18.3.1))(react@18.3.1))(react-native@0.74.1(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(@types/react@18.3.1)(react@18.3.1))(typescript@5.5.4) + version: 1.3.0(react-native-svg@15.3.0)(react-native@0.74.1)(typescript@5.5.4) react-test-renderer: specifier: 18.2.0 version: 18.2.0(react@18.3.1) @@ -197,43 +206,315 @@ importers: version: 3.0.2 rollup: specifier: ^4.14.0 - version: 4.22.4 + version: 4.29.1 storybook: - specifier: ^8.2.8 - version: 8.3.3 + specifier: 8.4.7 + version: 8.4.7(prettier@2.8.8) + swc-loader: + specifier: 0.1.15 + version: 0.1.15(@swc/core@1.5.29)(webpack@5.97.1) ts-jest: specifier: ^29.1.0 - version: 29.2.5(@babel/core@7.25.2)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.2))(esbuild@0.17.19)(jest@29.7.0(@types/node@18.16.9)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4)))(typescript@5.5.4) + version: 29.2.5(@babel/core@7.26.0)(babel-jest@29.7.0)(esbuild@0.17.19)(jest@29.7.0)(typescript@5.5.4) ts-node: specifier: 10.9.1 - version: 10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4) + version: 10.9.1(@swc/core@1.5.29)(@types/node@18.16.9)(typescript@5.5.4) tslib: specifier: ^2.3.0 - version: 2.7.0 + version: 2.8.1 tsup: specifier: ^6.6.3 - version: 6.7.0(@swc/core@1.5.29(@swc/helpers@0.5.13))(postcss@8.4.47)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4) + version: 6.7.0(@swc/core@1.5.29)(postcss@8.4.49)(ts-node@10.9.1)(typescript@5.5.4) typescript: specifier: ~5.5.2 version: 5.5.4 typescript-eslint: specifier: ^8.0.0 - version: 8.7.0(eslint@9.11.1)(typescript@5.5.4) + version: 8.18.1(eslint@9.17.0)(typescript@5.5.4) verdaccio: specifier: ^5.0.4 - version: 5.32.2(typanion@3.14.0) + version: 5.33.0(typanion@3.14.0) vite: specifier: ^5.0.0 - version: 5.4.8(@types/node@18.16.9)(terser@5.33.0) + version: 5.4.11(@types/node@18.16.9) vite-plugin-dts: specifier: ~3.8.1 - version: 3.8.3(@types/node@18.16.9)(rollup@4.22.4)(typescript@5.5.4)(vite@5.4.8(@types/node@18.16.9)(terser@5.33.0)) + version: 3.8.3(@types/node@18.16.9)(rollup@4.29.1)(typescript@5.5.4)(vite@5.4.11) vite-tsconfig-paths: specifier: 4.0.5 version: 4.0.5(typescript@5.5.4) vitest: specifier: ^1.3.1 - version: 1.6.0(@types/node@18.16.9)(@vitest/ui@1.6.0)(jsdom@22.1.0)(terser@5.33.0) + version: 1.6.0(@types/node@18.16.9)(@vitest/ui@1.6.0)(jsdom@22.1.0) + + core/base-dimensions: + dependencies: + '@infinite-list/container': + specifier: workspace:* + version: link:../container + '@infinite-list/item-meta': + specifier: workspace:* + version: link:../item-meta + '@infinite-list/utils': + specifier: workspace:* + version: link:../utils + '@infinite-list/viewable': + specifier: workspace:* + version: link:../viewable + '@x-oasis/prefix-interval-tree': + specifier: ^0.2.4 + version: 0.2.4 + + core/container: + dependencies: + '@x-oasis/select-value': + specifier: ^0.1.14 + version: 0.1.35 + + core/dimensions-model: + dependencies: + '@infinite-list/base-dimensions': + specifier: workspace:* + version: link:../base-dimensions + '@infinite-list/item-meta': + specifier: workspace:* + version: link:../item-meta + '@infinite-list/types': + specifier: workspace:* + version: link:../types + '@infinite-list/viewable': + specifier: workspace:* + version: link:../viewable + '@x-oasis/default-boolean-value': + specifier: ^0.1.14 + version: 0.1.35 + '@x-oasis/layout-equal': + specifier: ^0.1.16 + version: 0.1.35 + '@x-oasis/prefix-interval-tree': + specifier: ^0.2.4 + version: 0.2.4 + '@x-oasis/recycler': + specifier: ^0.1.37 + version: 0.1.38 + + core/item-meta: + dependencies: + '@infinite-list/viewable': + specifier: workspace:* + version: link:../viewable + '@x-oasis/batchinator': + specifier: ^0.1.14 + version: 0.1.35 + '@x-oasis/default-boolean-value': + specifier: ^0.1.14 + version: 0.1.35 + '@x-oasis/get-map-key-by-value': + specifier: ^0.1.34 + version: 0.1.35 + '@x-oasis/noop': + specifier: ^0.1.14 + version: 0.1.35 + + core/state: + dependencies: + '@infinite-list/types': + specifier: workspace:* + version: link:../types + '@x-oasis/default-boolean-value': + specifier: ^0.1.14 + version: 0.1.35 + '@x-oasis/default-value': + specifier: ^0.1.35 + version: 0.1.35 + + core/strategies: + dependencies: + '@infinite-list/types': + specifier: workspace:* + version: link:../types + '@x-oasis/batchinator': + specifier: ^0.1.14 + version: 0.1.35 + '@x-oasis/default-boolean-value': + specifier: ^0.1.14 + version: 0.1.35 + '@x-oasis/default-value': + specifier: ^0.1.35 + version: 0.1.35 + '@x-oasis/is-clamped': + specifier: ^0.1.14 + version: 0.1.35 + '@x-oasis/recycler': + specifier: ^0.1.37 + version: 0.1.38 + + core/types: + dependencies: + '@x-oasis/batchinator': + specifier: ^0.1.14 + version: 0.1.35 + '@x-oasis/select-value': + specifier: ^0.1.14 + version: 0.1.35 + + core/utils: + dependencies: + '@x-oasis/batchinate-last': + specifier: ^0.1.14 + version: 0.1.35 + + core/viewable: + dependencies: + '@x-oasis/batchinator': + specifier: ^0.1.14 + version: 0.1.35 + '@x-oasis/is-clamped': + specifier: ^0.1.14 + version: 0.1.35 + '@x-oasis/resolve-changed': + specifier: ^0.1.14 + version: 0.1.35 + '@x-oasis/unique-array-object': + specifier: ^0.1.14 + version: 0.1.35 + + model/dimension: + dependencies: + '@infinite-list/container': + specifier: workspace:* + version: link:../../core/container + '@infinite-list/item-meta': + specifier: workspace:* + version: link:../../core/item-meta + '@x-oasis/default-boolean-value': + specifier: ^0.1.14 + version: 0.1.35 + '@x-oasis/is-object': + specifier: ^0.1.35 + version: 0.1.35 + '@x-oasis/layout-equal': + specifier: ^0.1.16 + version: 0.1.35 + + model/group-dimensions: + dependencies: + '@infinite-list/base-dimensions': + specifier: workspace:* + version: link:../../core/base-dimensions + '@infinite-list/dimension': + specifier: workspace:* + version: link:../dimension + '@infinite-list/item-meta': + specifier: workspace:* + version: link:../../core/item-meta + '@infinite-list/items-dimensions': + specifier: workspace:* + version: link:../items-dimensions + '@infinite-list/state': + specifier: workspace:* + version: link:../../core/state + '@infinite-list/strategies': + specifier: workspace:* + version: link:../../core/strategies + '@infinite-list/utils': + specifier: workspace:* + version: link:../../core/utils + '@x-oasis/batchinator': + specifier: ^0.1.14 + version: 0.1.35 + '@x-oasis/default-boolean-value': + specifier: ^0.1.14 + version: 0.1.35 + '@x-oasis/find-last-index': + specifier: ^0.1.34 + version: 0.1.35 + '@x-oasis/is-clamped': + specifier: ^0.1.14 + version: 0.1.35 + '@x-oasis/layout-equal': + specifier: ^0.1.16 + version: 0.1.35 + '@x-oasis/prefix-interval-tree': + specifier: ^0.2.4 + version: 0.2.4 + '@x-oasis/shallow-array-equal': + specifier: ^0.1.14 + version: 0.1.35 + + model/items-dimensions: + dependencies: + '@infinite-list/base-dimensions': + specifier: workspace:* + version: link:../../core/base-dimensions + '@infinite-list/container': + specifier: workspace:* + version: link:../../core/container + '@infinite-list/item-meta': + specifier: workspace:* + version: link:../../core/item-meta + '@infinite-list/utils': + specifier: workspace:* + version: link:../../core/utils + '@infinite-list/viewable': + specifier: workspace:* + version: link:../../core/viewable + '@x-oasis/batchinator': + specifier: ^0.1.14 + version: 0.1.35 + '@x-oasis/layout-equal': + specifier: ^0.1.16 + version: 0.1.35 + '@x-oasis/select-value': + specifier: ^0.1.14 + version: 0.1.35 + + model/list-dimensions: + dependencies: + '@infinite-list/dimensions-model': + specifier: workspace:* + version: link:../../core/dimensions-model + '@infinite-list/state': + specifier: workspace:* + version: link:../../core/state + '@infinite-list/strategies': + specifier: workspace:* + version: link:../../core/strategies + '@x-oasis/batchinator': + specifier: ^0.1.14 + version: 0.1.35 + '@x-oasis/prefix-interval-tree': + specifier: ^0.2.4 + version: 0.2.4 + + model/masonry-dimensions: + dependencies: + '@infinite-list/dimensions-model': + specifier: workspace:* + version: link:../../core/dimensions-model + '@infinite-list/state': + specifier: workspace:* + version: link:../../core/state + '@infinite-list/strategies': + specifier: workspace:* + version: link:../../core/strategies + '@x-oasis/batchinator': + specifier: ^0.1.14 + version: 0.1.35 + '@x-oasis/default-boolean-value': + specifier: ^0.1.14 + version: 0.1.35 + '@x-oasis/default-value': + specifier: ^0.1.35 + version: 0.1.35 + '@x-oasis/layout-equal': + specifier: ^0.1.16 + version: 0.1.35 + '@x-oasis/prefix-interval-tree': + specifier: ^0.2.4 + version: 0.2.4 + + model/pseudo-list-dimensions: {} packages/benchmark: devDependencies: @@ -242,7 +523,7 @@ importers: version: 4.4.1 tsdx: specifier: ^0.14.1 - version: 0.14.1(@types/babel__core@7.20.5)(@types/node@22.7.3) + version: 0.14.1(@types/node@18.16.9) packages/data-model: dependencies: @@ -287,7 +568,7 @@ importers: version: 0.2.4 '@x-oasis/recycler': specifier: ^0.1.37 - version: 0.1.37 + version: 0.1.38 '@x-oasis/resolve-changed': specifier: ^0.1.14 version: 0.1.35 @@ -308,7 +589,7 @@ importers: version: 6.0.0 tslib: specifier: ^2.3.0 - version: 2.7.0 + version: 2.8.1 packages/react: dependencies: @@ -350,13 +631,10 @@ importers: version: 18.2.0 react-native: specifier: 0.74.1 - version: 0.74.1(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(@types/react@18.3.1)(react@18.2.0) + version: 0.74.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0)(@types/react@18.3.1)(react@18.2.0) ui/group: dependencies: - '@infinite-list/data-model': - specifier: workspace:* - version: link:../../packages/data-model '@infinite-list/scroller': specifier: workspace:* version: link:../scroller @@ -371,13 +649,13 @@ importers: version: 18.2.0 react-native: specifier: 0.74.1 - version: 0.74.1(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(@types/react@18.3.1)(react@18.2.0) + version: 0.74.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0)(@types/react@18.3.1)(react@18.2.0) ui/list: dependencies: - '@infinite-list/data-model': + '@infinite-list/list-dimensions': specifier: workspace:* - version: link:../../packages/data-model + version: link:../../model/list-dimensions '@infinite-list/scroller': specifier: workspace:* version: link:../scroller @@ -386,13 +664,13 @@ importers: version: 18.2.0 react-native: specifier: 0.74.1 - version: 0.74.1(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(@types/react@18.3.1)(react@18.2.0) + version: 0.74.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0)(@types/react@18.3.1)(react@18.2.0) ui/masonry: dependencies: - '@infinite-list/data-model': + '@infinite-list/masonry-dimensions': specifier: workspace:* - version: link:../../packages/data-model + version: link:../../model/masonry-dimensions '@infinite-list/scroller': specifier: workspace:* version: link:../scroller @@ -401,7 +679,7 @@ importers: version: 18.2.0 react-native: specifier: 0.74.1 - version: 0.74.1(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(@types/react@18.3.1)(react@18.2.0) + version: 0.74.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0)(@types/react@18.3.1)(react@18.2.0) ui/scroller: dependencies: @@ -431,12223 +709,1474 @@ importers: version: 18.2.0 react-native: specifier: 0.74.1 - version: 0.74.1(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(@types/react@18.3.1)(react@18.2.0) + version: 0.74.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0)(@types/react@18.3.1)(react@18.2.0) packages: - '@adobe/css-tools@4.4.0': - resolution: {integrity: sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ==} + /@adobe/css-tools@4.4.1: + resolution: {integrity: sha512-12WGKBQzjUAI4ayyF4IAtfw2QR/IDoqk6jTddXDhtYTJF9ASmoE1zst7cVtP0aL/F1jUJL5r+JxKXKEgHNbEUQ==} + dev: true - '@ampproject/remapping@2.3.0': + /@ampproject/remapping@2.3.0: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 - '@babel/code-frame@7.24.7': - resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} - engines: {node: '>=6.9.0'} - - '@babel/code-frame@7.25.7': - resolution: {integrity: sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==} - engines: {node: '>=6.9.0'} - - '@babel/compat-data@7.25.4': - resolution: {integrity: sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==} - engines: {node: '>=6.9.0'} - - '@babel/compat-data@7.25.8': - resolution: {integrity: sha512-ZsysZyXY4Tlx+Q53XdnOFmqwfB9QDTHYxaZYajWRoBLuLEAwI2UIbtxOjWh/cFaa9IKUlcB+DDuoskLuKu56JA==} - engines: {node: '>=6.9.0'} - - '@babel/core@7.25.2': - resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} - engines: {node: '>=6.9.0'} - - '@babel/generator@7.25.6': - resolution: {integrity: sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==} - engines: {node: '>=6.9.0'} - - '@babel/generator@7.25.7': - resolution: {integrity: sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-annotate-as-pure@7.24.7': - resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-annotate-as-pure@7.25.7': - resolution: {integrity: sha512-4xwU8StnqnlIhhioZf1tqnVWeQ9pvH/ujS8hRfw/WOza+/a+1qv69BWNy+oY231maTCWgKWhfBU7kDpsds6zAA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-builder-binary-assignment-operator-visitor@7.24.7': - resolution: {integrity: sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==} + /@babel/code-frame@7.26.2: + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.25.9 + js-tokens: 4.0.0 + picocolors: 1.1.1 - '@babel/helper-builder-binary-assignment-operator-visitor@7.25.7': - resolution: {integrity: sha512-12xfNeKNH7jubQNm7PAkzlLwEmCs1tfuX3UjIw6vP6QXi+leKh6+LyC/+Ed4EIQermwd58wsyh070yjDHFlNGg==} + /@babel/compat-data@7.26.3: + resolution: {integrity: sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.25.2': - resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} + /@babel/core@7.26.0: + resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.3 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helpers': 7.26.0 + '@babel/parser': 7.26.3 + '@babel/template': 7.25.9 + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.3 + convert-source-map: 2.0.0 + debug: 4.4.0 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color - '@babel/helper-compilation-targets@7.25.7': - resolution: {integrity: sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A==} + /@babel/generator@7.26.3: + resolution: {integrity: sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/parser': 7.26.3 + '@babel/types': 7.26.3 + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.1.0 - '@babel/helper-create-class-features-plugin@7.25.4': - resolution: {integrity: sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ==} + /@babel/helper-annotate-as-pure@7.25.9: + resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + dependencies: + '@babel/types': 7.26.3 - '@babel/helper-create-class-features-plugin@7.25.7': - resolution: {integrity: sha512-bD4WQhbkx80mAyj/WCm4ZHcF4rDxkoLFO6ph8/5/mQ3z4vAzltQXAmbc7GvVJx5H+lk5Mi5EmbTeox5nMGCsbw==} + /@babel/helper-compilation-targets@7.25.9: + resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + dependencies: + '@babel/compat-data': 7.26.3 + '@babel/helper-validator-option': 7.25.9 + browserslist: 4.24.3 + lru-cache: 5.1.1 + semver: 6.3.1 - '@babel/helper-create-regexp-features-plugin@7.25.2': - resolution: {integrity: sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==} + /@babel/helper-create-class-features-plugin@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/traverse': 7.26.4 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color - '@babel/helper-create-regexp-features-plugin@7.25.7': - resolution: {integrity: sha512-byHhumTj/X47wJ6C6eLpK7wW/WBEcnUeb7D0FNc/jFQnQVw7DOso3Zz5u9x/zLrFVkHa89ZGDbkAa1D54NdrCQ==} + /@babel/helper-create-regexp-features-plugin@7.26.3(@babel/core@7.26.0): + resolution: {integrity: sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + regexpu-core: 6.2.0 + semver: 6.3.1 - '@babel/helper-define-polyfill-provider@0.0.3': + /@babel/helper-define-polyfill-provider@0.0.3(@babel/core@7.26.0): resolution: {integrity: sha512-dULDd/APiP4JowYDAMosecKOi/1v+UId99qhBGiO3myM29KtAVKS/R3x3OJJNBR0FeYB1BcYb2dCwkhqvxWXXQ==} peerDependencies: '@babel/core': ^7.4.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.26.4 + debug: 4.4.0 + lodash.debounce: 4.0.8 + resolve: 1.22.10 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true - '@babel/helper-define-polyfill-provider@0.6.2': - resolution: {integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - '@babel/helper-environment-visitor@7.24.7': - resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-member-expression-to-functions@7.24.8': - resolution: {integrity: sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-member-expression-to-functions@7.25.7': - resolution: {integrity: sha512-O31Ssjd5K6lPbTX9AAYpSKrZmLeagt9uwschJd+Ixo6QiRyfpvgtVQp8qrDR9UNFjZ8+DO34ZkdrN+BnPXemeA==} - engines: {node: '>=6.9.0'} + /@babel/helper-define-polyfill-provider@0.6.3(@babel/core@7.26.0): + resolution: {integrity: sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + debug: 4.4.0 + lodash.debounce: 4.0.8 + resolve: 1.22.10 + transitivePeerDependencies: + - supports-color - '@babel/helper-module-imports@7.24.7': - resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} + /@babel/helper-environment-visitor@7.24.7: + resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.26.3 - '@babel/helper-module-imports@7.25.7': - resolution: {integrity: sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw==} + /@babel/helper-member-expression-to-functions@7.25.9: + resolution: {integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.3 + transitivePeerDependencies: + - supports-color - '@babel/helper-module-transforms@7.25.2': - resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} + /@babel/helper-module-imports@7.25.9: + resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + dependencies: + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.3 + transitivePeerDependencies: + - supports-color - '@babel/helper-module-transforms@7.25.7': - resolution: {integrity: sha512-k/6f8dKG3yDz/qCwSM+RKovjMix563SLxQFo0UhRNo239SP6n9u5/eLtKD6EAjwta2JHJ49CsD8pms2HdNiMMQ==} + /@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0): + resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.26.4 + transitivePeerDependencies: + - supports-color - '@babel/helper-optimise-call-expression@7.24.7': - resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==} - engines: {node: '>=6.9.0'} - - '@babel/helper-optimise-call-expression@7.25.7': - resolution: {integrity: sha512-VAwcwuYhv/AT+Vfr28c9y6SHzTan1ryqrydSTFGjU0uDJHw3uZ+PduI8plCLkRsDnqK2DMEDmwrOQRsK/Ykjng==} - engines: {node: '>=6.9.0'} - - '@babel/helper-plugin-utils@7.24.8': - resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-plugin-utils@7.25.7': - resolution: {integrity: sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-remap-async-to-generator@7.25.0': - resolution: {integrity: sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==} + /@babel/helper-optimise-call-expression@7.25.9: + resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + dependencies: + '@babel/types': 7.26.3 - '@babel/helper-remap-async-to-generator@7.25.7': - resolution: {integrity: sha512-kRGE89hLnPfcz6fTrlNU+uhgcwv0mBE4Gv3P9Ke9kLVJYpi4AMVVEElXvB5CabrPZW4nCM8P8UyyjrzCM0O2sw==} + /@babel/helper-plugin-utils@7.25.9: + resolution: {integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@babel/helper-replace-supers@7.25.0': - resolution: {integrity: sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==} + /@babel/helper-remap-async-to-generator@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-wrap-function': 7.25.9 + '@babel/traverse': 7.26.4 + transitivePeerDependencies: + - supports-color - '@babel/helper-replace-supers@7.25.7': - resolution: {integrity: sha512-iy8JhqlUW9PtZkd4pHM96v6BdJ66Ba9yWSE4z0W4TvSZwLBPkyDsiIU3ENe4SmrzRBs76F7rQXTy1lYC49n6Lw==} + /@babel/helper-replace-supers@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/traverse': 7.26.4 + transitivePeerDependencies: + - supports-color - '@babel/helper-simple-access@7.24.7': - resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-simple-access@7.25.7': - resolution: {integrity: sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-skip-transparent-expression-wrappers@7.24.7': - resolution: {integrity: sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-skip-transparent-expression-wrappers@7.25.7': - resolution: {integrity: sha512-pPbNbchZBkPMD50K0p3JGcFMNLVUCuU/ABybm/PGNj4JiHrpmNyqqCphBk4i19xXtNV0JhldQJJtbSW5aUvbyA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-string-parser@7.24.8': - resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-string-parser@7.25.7': - resolution: {integrity: sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-identifier@7.24.7': - resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-identifier@7.25.7': - resolution: {integrity: sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-option@7.24.8': - resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-option@7.25.7': - resolution: {integrity: sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ==} + /@babel/helper-skip-transparent-expression-wrappers@7.25.9: + resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.3 + transitivePeerDependencies: + - supports-color - '@babel/helper-wrap-function@7.25.0': - resolution: {integrity: sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==} + /@babel/helper-string-parser@7.25.9: + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} engines: {node: '>=6.9.0'} - '@babel/helper-wrap-function@7.25.7': - resolution: {integrity: sha512-MA0roW3JF2bD1ptAaJnvcabsVlNQShUaThyJbCDD4bCp8NEgiFvpoqRI2YS22hHlc2thjO/fTg2ShLMC3jygAg==} + /@babel/helper-validator-identifier@7.25.9: + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.25.6': - resolution: {integrity: sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==} + /@babel/helper-validator-option@7.25.9: + resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} engines: {node: '>=6.9.0'} - '@babel/highlight@7.24.7': - resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} + /@babel/helper-wrap-function@7.25.9: + resolution: {integrity: sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.25.9 + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.3 + transitivePeerDependencies: + - supports-color - '@babel/highlight@7.25.7': - resolution: {integrity: sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==} + /@babel/helpers@7.26.0: + resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.25.9 + '@babel/types': 7.26.3 - '@babel/parser@7.25.6': - resolution: {integrity: sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/parser@7.25.8': - resolution: {integrity: sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==} + /@babel/parser@7.26.3: + resolution: {integrity: sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==} engines: {node: '>=6.0.0'} hasBin: true + dependencies: + '@babel/types': 7.26.3 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.3': - resolution: {integrity: sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.7': - resolution: {integrity: sha512-UV9Lg53zyebzD1DwQoT9mzkEKa922LNUp5YkTJ6Uta0RbyXaQNUgcvSt7qIu1PpPzVb6rd10OVNTzkyBGeVmxQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.0': - resolution: {integrity: sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.7': - resolution: {integrity: sha512-GDDWeVLNxRIkQTnJn2pDOM1pkCgYdSqPeT1a9vh9yIqu2uzzgw1zcqEb+IJOhy+dTBMlNdThrDIksr2o09qrrQ==} + /@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.26.4 + transitivePeerDependencies: + - supports-color - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.0': - resolution: {integrity: sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==} + /@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.7': - resolution: {integrity: sha512-wxyWg2RYaSUYgmd9MR0FyRGyeOMQE/Uzr1wzd/g5cf5bwi9A4v6HFdDm7y1MgDtod/fLOSTZY6jDgV0xU9d5bA==} + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7': - resolution: {integrity: sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.13.0 - - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.7': - resolution: {integrity: sha512-Xwg6tZpLxc4iQjorYsyGMyfJE7nP5MV8t/Ka58BgiA7Jw0fRqQNcANlLfdJ/yvBt9z9LD2We+BEkT7vLqZRWng==} + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.0': - resolution: {integrity: sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.7': - resolution: {integrity: sha512-UVATLMidXrnH+GMUIuxq55nejlj02HP7F5ETyBONzP6G87fPBogG4CH6kxrSrdIuAjdwNO9VzyaYsrZPscWUrw==} + /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.26.4 + transitivePeerDependencies: + - supports-color - '@babel/plugin-proposal-async-generator-functions@7.20.7': + /@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.26.0): resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead. peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color - '@babel/plugin-proposal-class-properties@7.18.6': + /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.26.0): resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color - '@babel/plugin-proposal-decorators@7.24.7': - resolution: {integrity: sha512-RL9GR0pUG5Kc8BUWLNDm2T5OpYwSX15r98I0IkgmRQTXuELq/OynH8xtMTMvTJFjXbMWFVTKtYkTaYQsuAwQlQ==} + /@babel/plugin-proposal-decorators@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-smkNLL/O1ezy9Nhy4CNosc4Va+1wo5w4gzSZeLe6y6dM4mmHfYOCPolXQPHQxonZCF+ZyebxN9vqOolkYrSn5g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-decorators': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + dev: true - '@babel/plugin-proposal-export-default-from@7.24.7': - resolution: {integrity: sha512-CcmFwUJ3tKhLjPdt4NP+SHMshebytF8ZTYOv5ZDpkzq2sin80Wb5vJrGt8fhPrORQCfoSa0LAxC/DW+GAC5+Hw==} + /@babel/plugin-proposal-export-default-from@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-ykqgwNfSnNOB+C8fV5X4mG3AVmvu+WVxcaU9xHHtBb7PCrPeweMmPjGsn8eMaeJg6SJuoUuZENeeSWaarWqonQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-proposal-logical-assignment-operators@7.20.7': + /@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.26.0): resolution: {integrity: sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-logical-assignment-operators instead. peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.0) - '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6': + /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.26.0): resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-proposal-numeric-separator@7.18.6': + /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.26.0): resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead. peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.0) - '@babel/plugin-proposal-object-rest-spread@7.20.7': + /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.26.0): resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead. peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.26.3 + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-proposal-optional-catch-binding@7.18.6': + /@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.26.0): resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead. peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-proposal-optional-chaining@7.21.0': + /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.26.0): resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0): resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 - '@babel/plugin-syntax-async-generators@7.8.4': + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.26.0): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-bigint@7.8.3': + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.26.0): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: true - '@babel/plugin-syntax-class-properties@7.12.13': + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.26.0): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: true - '@babel/plugin-syntax-class-static-block@7.14.5': + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.26.0): resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: true - '@babel/plugin-syntax-decorators@7.24.7': - resolution: {integrity: sha512-Ui4uLJJrRV1lb38zg1yYTmRKmiZLiftDEvZN2iq3kd9kUFU+PttmzTbAFC2ucRk/XJmtek6G23gPsuZbhrT8fQ==} + /@babel/plugin-syntax-decorators@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-ryzI0McXUPJnRCvMo4lumIKZUzhYUO/ScI+Mz4YVaTLt04DHNSjEUjKVvbzQjZFLuod/cYEc07mJWhzl6v4DPg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: true - '@babel/plugin-syntax-dynamic-import@7.8.3': + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.26.0): resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-export-default-from@7.24.7': - resolution: {integrity: sha512-bTPz4/635WQ9WhwsyPdxUJDVpsi/X9BMmy/8Rf/UAlOO4jSql4CxUCjWI5PiM+jG+c4LVPTScoTw80geFj9+Bw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-export-namespace-from@7.8.3': - resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-flow@7.24.7': - resolution: {integrity: sha512-9G8GYT/dxn/D1IIKOUBmGX0mnmj46mGH9NnZyJLwtCpgh5f7D2VbuKodb+2s9m1Yavh1s7ASQN8lf0eqrb1LTw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-assertions@7.25.6': - resolution: {integrity: sha512-aABl0jHw9bZ2karQ/uUD6XP4u0SG22SJrOHFoL6XB1R7dTovOP4TzTlsxOYC5yQ1pdscVK2JTUnF6QL3ARoAiQ==} + /@babel/plugin-syntax-export-default-from@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-9MhJ/SMTsVqsd69GyQg89lYR4o9T+oDGv5F6IsigxxqFVOyR/IflDLYP8WDI1l8fkhNGGktqkvL5qwNCtGEpgQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-import-assertions@7.25.7': - resolution: {integrity: sha512-ZvZQRmME0zfJnDQnVBKYzHxXT7lYBB3Revz1GuS7oLXWMgqUPX4G+DDbT30ICClht9WKV34QVrZhSw6WdklwZQ==} + /@babel/plugin-syntax-flow@7.26.0(@babel/core@7.26.0): + resolution: {integrity: sha512-B+O2DnPc0iG+YXFqOxv2WNuNU97ToWjOomUQ78DouOENWUaM5sVrmet9mcomUGQFwpJd//gvUagXBSdzO1fRKg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-import-attributes@7.25.6': - resolution: {integrity: sha512-sXaDXaJN9SNLymBdlWFA+bjzBhFD617ZaFiY13dGt7TVslVvVgA6fkZOP7Ki3IGElC45lwHdOTrCtKZGVAWeLQ==} + /@babel/plugin-syntax-import-assertions@7.26.0(@babel/core@7.26.0): + resolution: {integrity: sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-import-attributes@7.25.7': - resolution: {integrity: sha512-AqVo+dguCgmpi/3mYBdu9lkngOBlQ2w2vnNpa6gfiCxQZLzV4ZbhsXitJ2Yblkoe1VQwtHSaNmIaGll/26YWRw==} + /@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.0): + resolution: {integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-import-meta@7.10.4': + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.26.0): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: true - '@babel/plugin-syntax-json-strings@7.8.3': + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.26.0): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: true - '@babel/plugin-syntax-jsx@7.24.7': - resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} + /@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-logical-assignment-operators@7.10.4': + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.26.0): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.26.0): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-numeric-separator@7.10.4': + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.26.0): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-object-rest-spread@7.8.3': + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.26.0): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-optional-catch-binding@7.8.3': + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.26.0): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-optional-chaining@7.8.3': + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.26.0): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-private-property-in-object@7.14.5': + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.26.0): resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: true - '@babel/plugin-syntax-top-level-await@7.14.5': + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.26.0): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: true - '@babel/plugin-syntax-typescript@7.25.4': - resolution: {integrity: sha512-uMOCoHVU52BsSWxPOMVv5qKRdeSlPuImUCB2dlPuBSU+W2/ROE7/Zg8F2Kepbk+8yBa68LlRKxO+xgEVWorsDg==} + /@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-unicode-sets-regex@7.18.6': + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.26.0): resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-arrow-functions@7.24.7': - resolution: {integrity: sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==} + /@babel/plugin-transform-arrow-functions@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-arrow-functions@7.25.7': - resolution: {integrity: sha512-EJN2mKxDwfOUCPxMO6MUI58RN3ganiRAG/MS/S3HfB6QFNjroAMelQo/gybyYq97WerCBAZoyrAoW8Tzdq2jWg==} + /@babel/plugin-transform-async-generator-functions@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0) + '@babel/traverse': 7.26.4 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-async-generator-functions@7.25.4': - resolution: {integrity: sha512-jz8cV2XDDTqjKPwVPJBIjORVEmSGYhdRa8e5k5+vN+uwcjSrSxUaebBRa4ko1jqNF2uxyg8G6XYk30Jv285xzg==} + /@babel/plugin-transform-async-to-generator@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-async-generator-functions@7.25.8': - resolution: {integrity: sha512-9ypqkozyzpG+HxlH4o4gdctalFGIjjdufzo7I2XPda0iBnZ6a+FO0rIEQcdSPXp02CkvGsII1exJhmROPQd5oA==} + /@babel/plugin-transform-block-scoped-functions@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-async-to-generator@7.24.7': - resolution: {integrity: sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==} + /@babel/plugin-transform-block-scoping@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-async-to-generator@7.25.7': - resolution: {integrity: sha512-ZUCjAavsh5CESCmi/xCpX1qcCaAglzs/7tmuvoFnJgA1dM7gQplsguljoTg+Ru8WENpX89cQyAtWoaE0I3X3Pg==} + /@babel/plugin-transform-class-properties@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-block-scoped-functions@7.24.7': - resolution: {integrity: sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==} + /@babel/plugin-transform-class-static-block@7.26.0(@babel/core@7.26.0): + resolution: {integrity: sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': ^7.12.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-block-scoped-functions@7.25.7': - resolution: {integrity: sha512-xHttvIM9fvqW+0a3tZlYcZYSBpSWzGBFIt/sYG3tcdSzBB8ZeVgz2gBP7Df+sM0N1850jrviYSSeUuc+135dmQ==} + /@babel/plugin-transform-classes@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) + '@babel/traverse': 7.26.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-block-scoping@7.25.0': - resolution: {integrity: sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==} + /@babel/plugin-transform-computed-properties@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/template': 7.25.9 - '@babel/plugin-transform-block-scoping@7.25.7': - resolution: {integrity: sha512-ZEPJSkVZaeTFG/m2PARwLZQ+OG0vFIhPlKHK/JdIMy8DbRJ/htz6LRrTFtdzxi9EHmcwbNPAKDnadpNSIW+Aow==} + /@babel/plugin-transform-destructuring@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-class-properties@7.25.4': - resolution: {integrity: sha512-nZeZHyCWPfjkdU5pA/uHiTaDAFUEqkpzf1YoQT2NeSynCGYq9rxfyI3XpQbfx/a0hSnFH6TGlEXvae5Vi7GD8g==} + /@babel/plugin-transform-dotall-regex@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-class-properties@7.25.7': - resolution: {integrity: sha512-mhyfEW4gufjIqYFo9krXHJ3ElbFLIze5IDp+wQTxoPd+mwFb1NxatNAwmv8Q8Iuxv7Zc+q8EkiMQwc9IhyGf4g==} + /@babel/plugin-transform-duplicate-keys@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-class-static-block@7.24.7': - resolution: {integrity: sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==} + /@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.12.0 + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-class-static-block@7.25.8': - resolution: {integrity: sha512-e82gl3TCorath6YLf9xUwFehVvjvfqFhdOo4+0iVIVju+6XOi5XHkqB3P2AXnSwoeTX0HBoXq5gJFtvotJzFnQ==} + /@babel/plugin-transform-dynamic-import@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.12.0 + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-classes@7.25.4': - resolution: {integrity: sha512-oexUfaQle2pF/b6E0dwsxQtAol9TLSO88kQvym6HHBWFliV2lGdrPieX+WgMRLSJDVzdYywk7jXbLPuO2KLTLg==} + /@babel/plugin-transform-exponentiation-operator@7.26.3(@babel/core@7.26.0): + resolution: {integrity: sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-classes@7.25.7': - resolution: {integrity: sha512-9j9rnl+YCQY0IGoeipXvnk3niWicIB6kCsWRGLwX241qSXpbA4MKxtp/EdvFxsc4zI5vqfLxzOd0twIJ7I99zg==} + /@babel/plugin-transform-export-namespace-from@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-computed-properties@7.24.7': - resolution: {integrity: sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==} + /@babel/plugin-transform-flow-strip-types@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-/VVukELzPDdci7UUsWQaSkhgnjIWXnIyRpM02ldxaVoFK96c41So8JcKT3m0gYjyv7j5FNPGS5vfELrWalkbDA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-flow': 7.26.0(@babel/core@7.26.0) - '@babel/plugin-transform-computed-properties@7.25.7': - resolution: {integrity: sha512-QIv+imtM+EtNxg/XBKL3hiWjgdLjMOmZ+XzQwSgmBfKbfxUjBzGgVPklUuE55eq5/uVoh8gg3dqlrwR/jw3ZeA==} + /@babel/plugin-transform-for-of@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-destructuring@7.24.8': - resolution: {integrity: sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==} + /@babel/plugin-transform-function-name@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.26.4 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-destructuring@7.25.7': - resolution: {integrity: sha512-xKcfLTlJYUczdaM1+epcdh1UGewJqr9zATgrNHcLBcV2QmfvPPEixo/sK/syql9cEmbr7ulu5HMFG5vbbt/sEA==} + /@babel/plugin-transform-json-strings@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-dotall-regex@7.24.7': - resolution: {integrity: sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==} + /@babel/plugin-transform-literals@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-dotall-regex@7.25.7': - resolution: {integrity: sha512-kXzXMMRzAtJdDEgQBLF4oaiT6ZCU3oWHgpARnTKDAqPkDJ+bs3NrZb310YYevR5QlRo3Kn7dzzIdHbZm1VzJdQ==} + /@babel/plugin-transform-logical-assignment-operators@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-duplicate-keys@7.24.7': - resolution: {integrity: sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==} + /@babel/plugin-transform-member-expression-literals@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-duplicate-keys@7.25.7': - resolution: {integrity: sha512-by+v2CjoL3aMnWDOyCIg+yxU9KXSRa9tN6MbqggH5xvymmr9p4AMjYkNlQy4brMceBnUyHZ9G8RnpvT8wP7Cfg==} + /@babel/plugin-transform-modules-amd@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.0': - resolution: {integrity: sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g==} + /@babel/plugin-transform-modules-commonjs@7.26.3(@babel/core@7.26.0): + resolution: {integrity: sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0 + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.7': - resolution: {integrity: sha512-HvS6JF66xSS5rNKXLqkk7L9c/jZ/cdIVIcoPVrnl8IsVpLggTjXs8OWekbLHs/VtYDDh5WXnQyeE3PPUGm22MA==} + /@babel/plugin-transform-modules-systemjs@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0 + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.26.4 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-dynamic-import@7.24.7': - resolution: {integrity: sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==} + /@babel/plugin-transform-modules-umd@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-dynamic-import@7.25.8': - resolution: {integrity: sha512-gznWY+mr4ZQL/EWPcbBQUP3BXS5FwZp8RUOw06BaRn8tQLzN4XLIxXejpHN9Qo8x8jjBmAAKp6FoS51AgkSA/A==} + /@babel/plugin-transform-named-capturing-groups-regex@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-exponentiation-operator@7.24.7': - resolution: {integrity: sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==} + /@babel/plugin-transform-new-target@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-exponentiation-operator@7.25.7': - resolution: {integrity: sha512-yjqtpstPfZ0h/y40fAXRv2snciYr0OAoMXY/0ClC7tm4C/nG5NJKmIItlaYlLbIVAWNfrYuy9dq1bE0SbX0PEg==} + /@babel/plugin-transform-nullish-coalescing-operator@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-export-namespace-from@7.24.7': - resolution: {integrity: sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==} + /@babel/plugin-transform-numeric-separator@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-export-namespace-from@7.25.8': - resolution: {integrity: sha512-sPtYrduWINTQTW7FtOy99VCTWp4H23UX7vYcut7S4CIMEXU+54zKX9uCoGkLsWXteyaMXzVHgzWbLfQ1w4GZgw==} + /@babel/plugin-transform-object-rest-spread@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-flow-strip-types@7.25.2': - resolution: {integrity: sha512-InBZ0O8tew5V0K6cHcQ+wgxlrjOw1W4wDXLkOTjLRD8GYhTSkxTVBtdy3MMtvYBrbAWa1Qm3hNoTc1620Yj+Mg==} + /@babel/plugin-transform-object-super@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-for-of@7.24.7': - resolution: {integrity: sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==} + /@babel/plugin-transform-optional-catch-binding@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-for-of@7.25.7': - resolution: {integrity: sha512-n/TaiBGJxYFWvpJDfsxSj9lEEE44BFM1EPGz4KEiTipTgkoFVVcCmzAL3qA7fdQU96dpo4gGf5HBx/KnDvqiHw==} + /@babel/plugin-transform-optional-chaining@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-function-name@7.25.1': - resolution: {integrity: sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==} + /@babel/plugin-transform-parameters@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-function-name@7.25.7': - resolution: {integrity: sha512-5MCTNcjCMxQ63Tdu9rxyN6cAWurqfrDZ76qvVPrGYdBxIj+EawuuxTu/+dgJlhK5eRz3v1gLwp6XwS8XaX2NiQ==} + /@babel/plugin-transform-private-methods@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-json-strings@7.24.7': - resolution: {integrity: sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==} + /@babel/plugin-transform-private-property-in-object@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-json-strings@7.25.8': - resolution: {integrity: sha512-4OMNv7eHTmJ2YXs3tvxAfa/I43di+VcF+M4Wt66c88EAED1RoGaf1D64cL5FkRpNL+Vx9Hds84lksWvd/wMIdA==} + /@babel/plugin-transform-property-literals@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-literals@7.25.2': - resolution: {integrity: sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==} + /@babel/plugin-transform-react-constant-elements@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-Ncw2JFsJVuvfRsa2lSHiC55kETQVLSnsYGQ1JDDwkUeWGTL/8Tom8aLTnlqgoeuopWrbbGndrc9AlLYrIosrow==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: true - '@babel/plugin-transform-literals@7.25.7': - resolution: {integrity: sha512-fwzkLrSu2fESR/cm4t6vqd7ebNIopz2QHGtjoU+dswQo/P6lwAG04Q98lliE3jkz/XqnbGFLnUcE0q0CVUf92w==} + /@babel/plugin-transform-react-display-name@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-logical-assignment-operators@7.24.7': - resolution: {integrity: sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==} + /@babel/plugin-transform-react-jsx-development@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + dev: true - '@babel/plugin-transform-logical-assignment-operators@7.25.8': - resolution: {integrity: sha512-f5W0AhSbbI+yY6VakT04jmxdxz+WsID0neG7+kQZbCOjuyJNdL5Nn4WIBm4hRpKnUcO9lP0eipUhFN12JpoH8g==} + /@babel/plugin-transform-react-jsx-self@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-member-expression-literals@7.24.7': - resolution: {integrity: sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==} + /@babel/plugin-transform-react-jsx-source@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-member-expression-literals@7.25.7': - resolution: {integrity: sha512-Std3kXwpXfRV0QtQy5JJcRpkqP8/wG4XL7hSKZmGlxPlDqmpXtEPRmhF7ztnlTCtUN3eXRUJp+sBEZjaIBVYaw==} + /@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) + '@babel/types': 7.26.3 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-modules-amd@7.24.7': - resolution: {integrity: sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==} + /@babel/plugin-transform-react-pure-annotations@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + dev: true - '@babel/plugin-transform-modules-amd@7.25.7': - resolution: {integrity: sha512-CgselSGCGzjQvKzghCvDTxKHP3iooenLpJDO842ehn5D2G5fJB222ptnDwQho0WjEvg7zyoxb9P+wiYxiJX5yA==} + /@babel/plugin-transform-regenerator@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + regenerator-transform: 0.15.2 - '@babel/plugin-transform-modules-commonjs@7.24.8': - resolution: {integrity: sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-commonjs@7.25.7': - resolution: {integrity: sha512-L9Gcahi0kKFYXvweO6n0wc3ZG1ChpSFdgG+eV1WYZ3/dGbJK7vvk91FgGgak8YwRgrCuihF8tE/Xg07EkL5COg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-systemjs@7.25.0': - resolution: {integrity: sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-systemjs@7.25.7': - resolution: {integrity: sha512-t9jZIvBmOXJsiuyOwhrIGs8dVcD6jDyg2icw1VL4A/g+FnWyJKwUfSSU2nwJuMV2Zqui856El9u+ElB+j9fV1g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-umd@7.24.7': - resolution: {integrity: sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-umd@7.25.7': - resolution: {integrity: sha512-p88Jg6QqsaPh+EB7I9GJrIqi1Zt4ZBHUQtjw3z1bzEXcLh6GfPqzZJ6G+G1HBGKUNukT58MnKG7EN7zXQBCODw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-named-capturing-groups-regex@7.24.7': - resolution: {integrity: sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-named-capturing-groups-regex@7.25.7': - resolution: {integrity: sha512-BtAT9LzCISKG3Dsdw5uso4oV1+v2NlVXIIomKJgQybotJY3OwCwJmkongjHgwGKoZXd0qG5UZ12JUlDQ07W6Ow==} + /@babel/plugin-transform-regexp-modifiers@7.26.0(@babel/core@7.26.0): + resolution: {integrity: sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-new-target@7.24.7': - resolution: {integrity: sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-new-target@7.25.7': - resolution: {integrity: sha512-CfCS2jDsbcZaVYxRFo2qtavW8SpdzmBXC2LOI4oO0rP+JSRDxxF3inF4GcPsLgfb5FjkhXG5/yR/lxuRs2pySA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-nullish-coalescing-operator@7.24.7': - resolution: {integrity: sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-nullish-coalescing-operator@7.25.8': - resolution: {integrity: sha512-Z7WJJWdQc8yCWgAmjI3hyC+5PXIubH9yRKzkl9ZEG647O9szl9zvmKLzpbItlijBnVhTUf1cpyWBsZ3+2wjWPQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-numeric-separator@7.24.7': - resolution: {integrity: sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-numeric-separator@7.25.8': - resolution: {integrity: sha512-rm9a5iEFPS4iMIy+/A/PiS0QN0UyjPIeVvbU5EMZFKJZHt8vQnasbpo3T3EFcxzCeYO0BHfc4RqooCZc51J86Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-object-rest-spread@7.24.7': - resolution: {integrity: sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-object-rest-spread@7.25.8': - resolution: {integrity: sha512-LkUu0O2hnUKHKE7/zYOIjByMa4VRaV2CD/cdGz0AxU9we+VA3kDDggKEzI0Oz1IroG+6gUP6UmWEHBMWZU316g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-object-super@7.24.7': - resolution: {integrity: sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-object-super@7.25.7': - resolution: {integrity: sha512-pWT6UXCEW3u1t2tcAGtE15ornCBvopHj9Bps9D2DsH15APgNVOTwwczGckX+WkAvBmuoYKRCFa4DK+jM8vh5AA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-optional-catch-binding@7.24.7': - resolution: {integrity: sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-optional-catch-binding@7.25.8': - resolution: {integrity: sha512-EbQYweoMAHOn7iJ9GgZo14ghhb9tTjgOc88xFgYngifx7Z9u580cENCV159M4xDh3q/irbhSjZVpuhpC2gKBbg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-optional-chaining@7.24.8': - resolution: {integrity: sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-optional-chaining@7.25.8': - resolution: {integrity: sha512-q05Bk7gXOxpTHoQ8RSzGSh/LHVB9JEIkKnk3myAWwZHnYiTGYtbdrYkIsS8Xyh4ltKf7GNUSgzs/6P2bJtBAQg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-parameters@7.24.7': - resolution: {integrity: sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-parameters@7.25.7': - resolution: {integrity: sha512-FYiTvku63me9+1Nz7TOx4YMtW3tWXzfANZtrzHhUZrz4d47EEtMQhzFoZWESfXuAMMT5mwzD4+y1N8ONAX6lMQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-private-methods@7.25.4': - resolution: {integrity: sha512-ao8BG7E2b/URaUQGqN3Tlsg+M3KlHY6rJ1O1gXAEUnZoyNQnvKyH87Kfg+FoxSeyWUB8ISZZsC91C44ZuBFytw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-private-methods@7.25.7': - resolution: {integrity: sha512-KY0hh2FluNxMLwOCHbxVOKfdB5sjWG4M183885FmaqWWiGMhRZq4DQRKH6mHdEucbJnyDyYiZNwNG424RymJjA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-private-property-in-object@7.24.7': - resolution: {integrity: sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-private-property-in-object@7.25.8': - resolution: {integrity: sha512-8Uh966svuB4V8RHHg0QJOB32QK287NBksJOByoKmHMp1TAobNniNalIkI2i5IPj5+S9NYCG4VIjbEuiSN8r+ow==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-property-literals@7.24.7': - resolution: {integrity: sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-property-literals@7.25.7': - resolution: {integrity: sha512-lQEeetGKfFi0wHbt8ClQrUSUMfEeI3MMm74Z73T9/kuz990yYVtfofjf3NuA42Jy3auFOpbjDyCSiIkTs1VIYw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-constant-elements@7.25.1': - resolution: {integrity: sha512-SLV/giH/V4SmloZ6Dt40HjTGTAIkxn33TVIHxNGNvo8ezMhrxBkzisj4op1KZYPIOHFLqhv60OHvX+YRu4xbmQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-display-name@7.24.7': - resolution: {integrity: sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-jsx-development@7.24.7': - resolution: {integrity: sha512-QG9EnzoGn+Qar7rxuW+ZOsbWOt56FvvI93xInqsZDC5fsekx1AlIO4KIJ5M+D0p0SqSH156EpmZyXq630B8OlQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-jsx-self@7.24.7': - resolution: {integrity: sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-jsx-source@7.24.7': - resolution: {integrity: sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-jsx@7.25.2': - resolution: {integrity: sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-pure-annotations@7.24.7': - resolution: {integrity: sha512-PLgBVk3fzbmEjBJ/u8kFzOqS9tUeDjiaWud/rRym/yjCo/M9cASPlnrd2ZmmZpQT40fOOrvR8jh+n8jikrOhNA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-regenerator@7.24.7': - resolution: {integrity: sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-regenerator@7.25.7': - resolution: {integrity: sha512-mgDoQCRjrY3XK95UuV60tZlFCQGXEtMg8H+IsW72ldw1ih1jZhzYXbJvghmAEpg5UVhhnCeia1CkGttUvCkiMQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-reserved-words@7.24.7': - resolution: {integrity: sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-reserved-words@7.25.7': - resolution: {integrity: sha512-3OfyfRRqiGeOvIWSagcwUTVk2hXBsr/ww7bLn6TRTuXnexA+Udov2icFOxFX9abaj4l96ooYkcNN1qi2Zvqwng==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-runtime@7.25.4': - resolution: {integrity: sha512-8hsyG+KUYGY0coX6KUCDancA0Vw225KJ2HJO0yCNr1vq5r+lJTleDaJf0K7iOhjw4SWhu03TMBzYTJ9krmzULQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-shorthand-properties@7.24.7': - resolution: {integrity: sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-shorthand-properties@7.25.7': - resolution: {integrity: sha512-uBbxNwimHi5Bv3hUccmOFlUy3ATO6WagTApenHz9KzoIdn0XeACdB12ZJ4cjhuB2WSi80Ez2FWzJnarccriJeA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-spread@7.24.7': - resolution: {integrity: sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-spread@7.25.7': - resolution: {integrity: sha512-Mm6aeymI0PBh44xNIv/qvo8nmbkpZze1KvR8MkEqbIREDxoiWTi18Zr2jryfRMwDfVZF9foKh060fWgni44luw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-sticky-regex@7.24.7': - resolution: {integrity: sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-sticky-regex@7.25.7': - resolution: {integrity: sha512-ZFAeNkpGuLnAQ/NCsXJ6xik7Id+tHuS+NT+ue/2+rn/31zcdnupCdmunOizEaP0JsUmTFSTOPoQY7PkK2pttXw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-template-literals@7.24.7': - resolution: {integrity: sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-template-literals@7.25.7': - resolution: {integrity: sha512-SI274k0nUsFFmyQupiO7+wKATAmMFf8iFgq2O+vVFXZ0SV9lNfT1NGzBEhjquFmD8I9sqHLguH+gZVN3vww2AA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-typeof-symbol@7.24.8': - resolution: {integrity: sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-typeof-symbol@7.25.7': - resolution: {integrity: sha512-OmWmQtTHnO8RSUbL0NTdtpbZHeNTnm68Gj5pA4Y2blFNh+V4iZR68V1qL9cI37J21ZN7AaCnkfdHtLExQPf2uA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-typescript@7.25.2': - resolution: {integrity: sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-escapes@7.24.7': - resolution: {integrity: sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-escapes@7.25.7': - resolution: {integrity: sha512-BN87D7KpbdiABA+t3HbVqHzKWUDN3dymLaTnPFAMyc8lV+KN3+YzNhVRNdinaCPA4AUqx7ubXbQ9shRjYBl3SQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-property-regex@7.24.7': - resolution: {integrity: sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-property-regex@7.25.7': - resolution: {integrity: sha512-IWfR89zcEPQGB/iB408uGtSPlQd3Jpq11Im86vUgcmSTcoWAiQMCTOa2K2yNNqFJEBVICKhayctee65Ka8OB0w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-regex@7.24.7': - resolution: {integrity: sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==} + /@babel/plugin-transform-reserved-words@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-unicode-regex@7.25.7': - resolution: {integrity: sha512-8JKfg/hiuA3qXnlLx8qtv5HWRbgyFx2hMMtpDDuU2rTckpKkGu4ycK5yYHwuEa16/quXfoxHBIApEsNyMWnt0g==} + /@babel/plugin-transform-runtime@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-nZp7GlEl+yULJrClz0SwHPqir3lc0zsPrDHQUcxGspSL7AKrexNSEfTbfqnDNJUO13bgKyfuOLMF8Xqtu8j3YQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + babel-plugin-polyfill-corejs2: 0.4.12(@babel/core@7.26.0) + babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.26.0) + babel-plugin-polyfill-regenerator: 0.6.3(@babel/core@7.26.0) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-unicode-sets-regex@7.25.4': - resolution: {integrity: sha512-qesBxiWkgN1Q+31xUE9RcMk79eOXXDCv6tfyGMRSs4RGlioSg2WVyQAm07k726cSE56pa+Kb0y9epX2qaXzTvA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-unicode-sets-regex@7.25.7': - resolution: {integrity: sha512-YRW8o9vzImwmh4Q3Rffd09bH5/hvY0pxg+1H1i0f7APoUeg12G7+HhLj9ZFNIrYkgBXhIijPJ+IXypN0hLTIbw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/preset-env@7.25.4': - resolution: {integrity: sha512-W9Gyo+KmcxjGahtt3t9fb14vFRWvPpu5pT6GBlovAK6BTBcxgjfVMSQCfJl4oi35ODrxP6xx2Wr8LNST57Mraw==} + /@babel/plugin-transform-shorthand-properties@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/preset-env@7.25.8': - resolution: {integrity: sha512-58T2yulDHMN8YMUxiLq5YmWUnlDCyY1FsHM+v12VMx+1/FlrUj5tY50iDCpofFQEM8fMYOaY9YRvym2jcjn1Dg==} + /@babel/plugin-transform-spread@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color - '@babel/preset-flow@7.24.7': - resolution: {integrity: sha512-NL3Lo0NorCU607zU3NwRyJbpaB6E3t0xtd3LfAQKDfkeX4/ggcDXvkmkW42QWT5owUeW/jAe4hn+2qvkV1IbfQ==} + /@babel/plugin-transform-sticky-regex@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/preset-modules@0.1.6-no-external-plugins': - resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} - peerDependencies: - '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 - - '@babel/preset-react@7.24.7': - resolution: {integrity: sha512-AAH4lEkpmzFWrGVlHaxJB7RLH21uPQ9+He+eFLWHmF9IuFQVugz8eAsamaW0DXRrTfco5zj1wWtpdcXJUOfsag==} + /@babel/plugin-transform-template-literals@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/preset-typescript@7.24.7': - resolution: {integrity: sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ==} + /@babel/plugin-transform-typeof-symbol@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/register@7.24.6': - resolution: {integrity: sha512-WSuFCc2wCqMeXkz/i3yfAAsxwWflEgbVkZzivgAmXl/MxrXeoYFZOOPllbC8R8WTF7u61wSRQtDVZ1879cdu6w==} + /@babel/plugin-transform-typescript@7.26.3(@babel/core@7.26.0): + resolution: {integrity: sha512-6+5hpdr6mETwSKjmJUdYw0EIkATiQhnELWlE3kJFBwSg/BGIVwVaVbX+gOXBCdc7Ln1RXZxyWGecIXhUfnl7oA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - - '@babel/regjsgen@0.8.0': - resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} - - '@babel/runtime@7.25.7': - resolution: {integrity: sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==} - engines: {node: '>=6.9.0'} - - '@babel/template@7.25.0': - resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} - engines: {node: '>=6.9.0'} - - '@babel/template@7.25.7': - resolution: {integrity: sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==} - engines: {node: '>=6.9.0'} - - '@babel/traverse@7.25.6': - resolution: {integrity: sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==} - engines: {node: '>=6.9.0'} - - '@babel/traverse@7.25.7': - resolution: {integrity: sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.25.6': - resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.25.8': - resolution: {integrity: sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==} - engines: {node: '>=6.9.0'} - - '@base2/pretty-print-object@1.0.1': - resolution: {integrity: sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==} - - '@bcoe/v8-coverage@0.2.3': - resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - - '@changesets/apply-release-plan@7.0.5': - resolution: {integrity: sha512-1cWCk+ZshEkSVEZrm2fSj1Gz8sYvxgUL4Q78+1ZZqeqfuevPTPk033/yUZ3df8BKMohkqqHfzj0HOOrG0KtXTw==} - - '@changesets/assemble-release-plan@6.0.4': - resolution: {integrity: sha512-nqICnvmrwWj4w2x0fOhVj2QEGdlUuwVAwESrUo5HLzWMI1rE5SWfsr9ln+rDqWB6RQ2ZyaMZHUcU7/IRaUJS+Q==} - - '@changesets/changelog-git@0.2.0': - resolution: {integrity: sha512-bHOx97iFI4OClIT35Lok3sJAwM31VbUM++gnMBV16fdbtBhgYu4dxsphBF/0AZZsyAHMrnM0yFcj5gZM1py6uQ==} - - '@changesets/cli@2.27.8': - resolution: {integrity: sha512-gZNyh+LdSsI82wBSHLQ3QN5J30P4uHKJ4fXgoGwQxfXwYFTJzDdvIJasZn8rYQtmKhyQuiBj4SSnLuKlxKWq4w==} - hasBin: true - - '@changesets/config@3.0.3': - resolution: {integrity: sha512-vqgQZMyIcuIpw9nqFIpTSNyc/wgm/Lu1zKN5vECy74u95Qx/Wa9g27HdgO4NkVAaq+BGA8wUc/qvbvVNs93n6A==} - - '@changesets/errors@0.2.0': - resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} - - '@changesets/get-dependents-graph@2.1.2': - resolution: {integrity: sha512-sgcHRkiBY9i4zWYBwlVyAjEM9sAzs4wYVwJUdnbDLnVG3QwAaia1Mk5P8M7kraTOZN+vBET7n8KyB0YXCbFRLQ==} - - '@changesets/get-release-plan@4.0.4': - resolution: {integrity: sha512-SicG/S67JmPTrdcc9Vpu0wSQt7IiuN0dc8iR5VScnnTVPfIaLvKmEGRvIaF0kcn8u5ZqLbormZNTO77bCEvyWw==} - - '@changesets/get-version-range-type@0.4.0': - resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} - - '@changesets/git@3.0.1': - resolution: {integrity: sha512-pdgHcYBLCPcLd82aRcuO0kxCDbw/yISlOtkmwmE8Odo1L6hSiZrBOsRl84eYG7DRCab/iHnOkWqExqc4wxk2LQ==} - - '@changesets/logger@0.1.1': - resolution: {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==} - - '@changesets/parse@0.4.0': - resolution: {integrity: sha512-TS/9KG2CdGXS27S+QxbZXgr8uPsP4yNJYb4BC2/NeFUj80Rni3TeD2qwWmabymxmrLo7JEsytXH1FbpKTbvivw==} - - '@changesets/pre@2.0.1': - resolution: {integrity: sha512-vvBJ/If4jKM4tPz9JdY2kGOgWmCowUYOi5Ycv8dyLnEE8FgpYYUo1mgJZxcdtGGP3aG8rAQulGLyyXGSLkIMTQ==} - - '@changesets/read@0.6.1': - resolution: {integrity: sha512-jYMbyXQk3nwP25nRzQQGa1nKLY0KfoOV7VLgwucI0bUO8t8ZLCr6LZmgjXsiKuRDc+5A6doKPr9w2d+FEJ55zQ==} - - '@changesets/should-skip-package@0.1.1': - resolution: {integrity: sha512-H9LjLbF6mMHLtJIc/eHR9Na+MifJ3VxtgP/Y+XLn4BF7tDTEN1HNYtH6QMcjP1uxp9sjaFYmW8xqloaCi/ckTg==} - - '@changesets/types@4.1.0': - resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} - - '@changesets/types@6.0.0': - resolution: {integrity: sha512-b1UkfNulgKoWfqyHtzKS5fOZYSJO+77adgL7DLRDr+/7jhChN+QcHnbjiQVOz/U+Ts3PGNySq7diAItzDgugfQ==} - - '@changesets/write@0.3.2': - resolution: {integrity: sha512-kDxDrPNpUgsjDbWBvUo27PzKX4gqeKOlhibaOXDJA6kuBisGqNHv/HwGJrAu8U/dSf8ZEFIeHIPtvSlZI1kULw==} - - '@cnakazawa/watch@1.0.4': - resolution: {integrity: sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==} - engines: {node: '>=0.1.95'} - hasBin: true - - '@cspotcode/source-map-support@0.8.1': - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} - - '@cypress/request@3.0.1': - resolution: {integrity: sha512-TWivJlJi8ZDx2wGOw1dbLuHJKUYX7bWySw377nlnGOW3hP9/MUKIsEdXT/YngWxVdgNCHRBmFlBipE+5/2ZZlQ==} - engines: {node: '>= 6'} - - '@emnapi/core@1.2.0': - resolution: {integrity: sha512-E7Vgw78I93we4ZWdYCb4DGAwRROGkMIXk7/y87UmANR+J6qsWusmC3gLt0H+O0KOt5e6O38U8oJamgbudrES/w==} - - '@emnapi/runtime@1.2.0': - resolution: {integrity: sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==} - - '@emnapi/wasi-threads@1.0.1': - resolution: {integrity: sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==} - - '@esbuild/aix-ppc64@0.21.5': - resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - - '@esbuild/android-arm64@0.17.19': - resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm64@0.18.20': - resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm64@0.21.5': - resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm@0.17.19': - resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - - '@esbuild/android-arm@0.18.20': - resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - - '@esbuild/android-arm@0.21.5': - resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.17.19': - resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - - '@esbuild/android-x64@0.18.20': - resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - - '@esbuild/android-x64@0.21.5': - resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - - '@esbuild/darwin-arm64@0.17.19': - resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-arm64@0.18.20': - resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-arm64@0.21.5': - resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.17.19': - resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - - '@esbuild/darwin-x64@0.18.20': - resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - - '@esbuild/darwin-x64@0.21.5': - resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.17.19': - resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-arm64@0.18.20': - resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-arm64@0.21.5': - resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.17.19': - resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.18.20': - resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.21.5': - resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.17.19': - resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm64@0.18.20': - resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm64@0.21.5': - resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.17.19': - resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-arm@0.18.20': - resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-arm@0.21.5': - resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.17.19': - resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-ia32@0.18.20': - resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-ia32@0.21.5': - resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.17.19': - resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-loong64@0.18.20': - resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-loong64@0.21.5': - resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.17.19': - resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-mips64el@0.18.20': - resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-mips64el@0.21.5': - resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.17.19': - resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-ppc64@0.18.20': - resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-ppc64@0.21.5': - resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.17.19': - resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-riscv64@0.18.20': - resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-riscv64@0.21.5': - resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.17.19': - resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-s390x@0.18.20': - resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-s390x@0.21.5': - resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-x64@0.17.19': - resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - '@esbuild/linux-x64@0.18.20': - resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - '@esbuild/linux-x64@0.21.5': - resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-x64@0.17.19': - resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.18.20': - resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.21.5': - resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-x64@0.17.19': - resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.18.20': - resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.21.5': - resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - - '@esbuild/sunos-x64@0.17.19': - resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - - '@esbuild/sunos-x64@0.18.20': - resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - - '@esbuild/sunos-x64@0.21.5': - resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.17.19': - resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-arm64@0.18.20': - resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-arm64@0.21.5': - resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-ia32@0.17.19': - resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-ia32@0.18.20': - resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-ia32@0.21.5': - resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-x64@0.17.19': - resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - - '@esbuild/win32-x64@0.18.20': - resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - - '@esbuild/win32-x64@0.21.5': - resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - - '@eslint-community/eslint-utils@4.4.0': - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - - '@eslint-community/regexpp@4.11.1': - resolution: {integrity: sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - - '@eslint/compat@1.1.1': - resolution: {integrity: sha512-lpHyRyplhGPL5mGEh6M9O5nnKk0Gz4bFI+Zu6tKlPpDUN7XshWvH9C/px4UVm87IAANE0W81CEsNGbS1KlzXpA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/config-array@0.18.0': - resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/core@0.6.0': - resolution: {integrity: sha512-8I2Q8ykA4J0x0o7cg67FPVnehcqWTBehu/lmY+bolPFHGjh49YzGBMXTvpqVgEbBdvNCSxj6iFgiIyHzf03lzg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/eslintrc@3.1.0': - resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/js@9.11.1': - resolution: {integrity: sha512-/qu+TWz8WwPWc7/HcIJKi+c+MOm46GdVaSlTTQcaqaL53+GsoA6MxWp5PtTx48qbSP7ylM1Kn7nhvkugfJvRSA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/object-schema@2.1.4': - resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/plugin-kit@0.2.0': - resolution: {integrity: sha512-vH9PiIMMwvhCx31Af3HiGzsVNULDbyVkHXwlemn/B0TFj/00ho3y55efXrUZTfQipxoHC5u4xq6zblww1zm1Ig==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@hapi/hoek@9.3.0': - resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} - - '@hapi/topo@5.1.0': - resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} - - '@humanwhocodes/module-importer@1.0.1': - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - - '@humanwhocodes/retry@0.3.0': - resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==} - engines: {node: '>=18.18'} - - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - - '@isaacs/ttlcache@1.4.1': - resolution: {integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==} - engines: {node: '>=12'} - - '@istanbuljs/load-nyc-config@1.1.0': - resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} - engines: {node: '>=8'} - - '@istanbuljs/schema@0.1.3': - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} - - '@jest/console@25.5.0': - resolution: {integrity: sha512-T48kZa6MK1Y6k4b89sexwmSF4YLeZS/Udqg3Jj3jG/cHH+N/sLFCEoXEDMOKugJQ9FxPN1osxIknvKkxt6MKyw==} - engines: {node: '>= 8.3'} - - '@jest/console@28.1.3': - resolution: {integrity: sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - - '@jest/console@29.7.0': - resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/core@25.5.4': - resolution: {integrity: sha512-3uSo7laYxF00Dg/DMgbn4xMJKmDdWvZnf89n8Xj/5/AeQ2dOQmn6b6Hkj/MleyzZWXpwv+WSdYWl4cLsy2JsoA==} - engines: {node: '>= 8.3'} - - '@jest/core@28.1.3': - resolution: {integrity: sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - '@jest/core@29.7.0': - resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - '@jest/create-cache-key-function@29.7.0': - resolution: {integrity: sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/environment@25.5.0': - resolution: {integrity: sha512-U2VXPEqL07E/V7pSZMSQCvV5Ea4lqOlT+0ZFijl/i316cRMHvZ4qC+jBdryd+lmRetjQo0YIQr6cVPNxxK87mA==} - engines: {node: '>= 8.3'} - - '@jest/environment@28.1.3': - resolution: {integrity: sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - - '@jest/environment@29.7.0': - resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/expect-utils@28.1.3': - resolution: {integrity: sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - - '@jest/expect-utils@29.7.0': - resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/expect@28.1.3': - resolution: {integrity: sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - - '@jest/expect@29.7.0': - resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/fake-timers@25.5.0': - resolution: {integrity: sha512-9y2+uGnESw/oyOI3eww9yaxdZyHq7XvprfP/eeoCsjqKYts2yRlsHS/SgjPDV8FyMfn2nbMy8YzUk6nyvdLOpQ==} - engines: {node: '>= 8.3'} - - '@jest/fake-timers@28.1.3': - resolution: {integrity: sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - - '@jest/fake-timers@29.7.0': - resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/globals@25.5.2': - resolution: {integrity: sha512-AgAS/Ny7Q2RCIj5kZ+0MuKM1wbF0WMLxbCVl/GOMoCNbODRdJ541IxJ98xnZdVSZXivKpJlNPIWa3QmY0l4CXA==} - engines: {node: '>= 8.3'} - - '@jest/globals@28.1.3': - resolution: {integrity: sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - - '@jest/globals@29.7.0': - resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/reporters@25.5.1': - resolution: {integrity: sha512-3jbd8pPDTuhYJ7vqiHXbSwTJQNavczPs+f1kRprRDxETeE3u6srJ+f0NPuwvOmk+lmunZzPkYWIFZDLHQPkviw==} - engines: {node: '>= 8.3'} - - '@jest/reporters@28.1.3': - resolution: {integrity: sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - '@jest/reporters@29.7.0': - resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - '@jest/schemas@28.1.3': - resolution: {integrity: sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - - '@jest/schemas@29.6.3': - resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/source-map@25.5.0': - resolution: {integrity: sha512-eIGx0xN12yVpMcPaVpjXPnn3N30QGJCJQSkEDUt9x1fI1Gdvb07Ml6K5iN2hG7NmMP6FDmtPEssE3z6doOYUwQ==} - engines: {node: '>= 8.3'} - - '@jest/source-map@28.1.2': - resolution: {integrity: sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - - '@jest/source-map@29.6.3': - resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/test-result@25.5.0': - resolution: {integrity: sha512-oV+hPJgXN7IQf/fHWkcS99y0smKLU2czLBJ9WA0jHITLst58HpQMtzSYxzaBvYc6U5U6jfoMthqsUlUlbRXs0A==} - engines: {node: '>= 8.3'} - - '@jest/test-result@28.1.3': - resolution: {integrity: sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - - '@jest/test-result@29.7.0': - resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/test-sequencer@25.5.4': - resolution: {integrity: sha512-pTJGEkSeg1EkCO2YWq6hbFvKNXk8ejqlxiOg1jBNLnWrgXOkdY6UmqZpwGFXNnRt9B8nO1uWMzLLZ4eCmhkPNA==} - engines: {node: '>= 8.3'} - - '@jest/test-sequencer@28.1.3': - resolution: {integrity: sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - - '@jest/test-sequencer@29.7.0': - resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/transform@25.5.1': - resolution: {integrity: sha512-Y8CEoVwXb4QwA6Y/9uDkn0Xfz0finGkieuV0xkdF9UtZGJeLukD5nLkaVrVsODB1ojRWlaoD0AJZpVHCSnJEvg==} - engines: {node: '>= 8.3'} - - '@jest/transform@28.1.3': - resolution: {integrity: sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - - '@jest/transform@29.7.0': - resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/types@25.5.0': - resolution: {integrity: sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==} - engines: {node: '>= 8.3'} - - '@jest/types@26.6.2': - resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==} - engines: {node: '>= 10.14.2'} - - '@jest/types@27.5.1': - resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - - '@jest/types@28.1.3': - resolution: {integrity: sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - - '@jest/types@29.6.3': - resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@joshwooding/vite-plugin-react-docgen-typescript@0.3.0': - resolution: {integrity: sha512-2D6y7fNvFmsLmRt6UCOFJPvFoPMJGT0Uh1Wg0RaigUp7kdQPs6yYn8Dmx6GZkOH/NW0yMTwRz/p0SRMMRo50vA==} - peerDependencies: - typescript: '>= 4.3.x' - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 - peerDependenciesMeta: - typescript: - optional: true - - '@jridgewell/gen-mapping@0.3.5': - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} - engines: {node: '>=6.0.0'} - - '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - - '@jridgewell/set-array@1.2.1': - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} - - '@jridgewell/source-map@0.3.6': - resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} - - '@jridgewell/sourcemap-codec@1.5.0': - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - - '@jridgewell/trace-mapping@0.3.25': - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - - '@jridgewell/trace-mapping@0.3.9': - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - - '@manypkg/find-root@1.1.0': - resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} - - '@manypkg/get-packages@1.1.3': - resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} - - '@mdx-js/react@3.1.0': - resolution: {integrity: sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ==} - peerDependencies: - '@types/react': '>=16' - react: '>=16' - - '@microsoft/api-extractor-model@7.28.13': - resolution: {integrity: sha512-39v/JyldX4MS9uzHcdfmjjfS6cYGAoXV+io8B5a338pkHiSt+gy2eXQ0Q7cGFJ7quSa1VqqlMdlPrB6sLR/cAw==} - - '@microsoft/api-extractor@7.43.0': - resolution: {integrity: sha512-GFhTcJpB+MI6FhvXEI9b2K0snulNLWHqC/BbcJtyNYcKUiw7l3Lgis5ApsYncJ0leALX7/of4XfmXk+maT111w==} - hasBin: true - - '@microsoft/tsdoc-config@0.16.2': - resolution: {integrity: sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==} - - '@microsoft/tsdoc@0.14.2': - resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==} - - '@module-federation/bridge-react-webpack-plugin@0.6.6': - resolution: {integrity: sha512-NANaSOKem+1t/Fbd1GjXnStJRe7O33ya+FR/yYkTUd1H5hmlzVDNo/lYxYuUl3O/gH9Lnlr2Gf9unyWoIW0wHw==} - - '@module-federation/data-prefetch@0.6.6': - resolution: {integrity: sha512-rakEHrg2pqbOqJ3uWT2p3kgTCOxBQdEIqmew3XBAXTZ0NblZtkXeMHupcW/W6+ccvbPdn/T/PSICx9HHSvfEVg==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - - '@module-federation/dts-plugin@0.6.6': - resolution: {integrity: sha512-sNCghGgrpCOOVk2xpzgAGAFeo2ONcv6eAnEfe7Q2gD7R6NrGgOrB5KVhN/uWIzFJG8tqNfSSjam+woTyrrayfg==} - peerDependencies: - typescript: ^4.9.0 || ^5.0.0 - vue-tsc: '>=1.0.24' - peerDependenciesMeta: - vue-tsc: - optional: true - - '@module-federation/enhanced@0.6.6': - resolution: {integrity: sha512-gGU1tjaksk5Q5X2zpVb/OmlwvKwVVjTXreuFwkK0Z+9QKM9jbu0B/tPSh6sqibPFeu1yM2HOFlOHJhvFs1PmsA==} - peerDependencies: - typescript: ^4.9.0 || ^5.0.0 - vue-tsc: '>=1.0.24' - webpack: ^5.0.0 - peerDependenciesMeta: - typescript: - optional: true - vue-tsc: - optional: true - webpack: - optional: true - - '@module-federation/managers@0.6.6': - resolution: {integrity: sha512-ryj2twbQmo2KhwKn1xYivpaW94l5wfplDU9FwVvW0wc8hC2lJnuGhoiZqXKL7lNaBrZXge3b43Zlgx5OnFfr6A==} - - '@module-federation/manifest@0.6.6': - resolution: {integrity: sha512-45ol0fC8RS2d+0iEt5zdp0vctE2CiOfA2kCmOFz79K33occi8sKmyevfSeZGckZy54NiMnLFteIYBsyIa+g7gg==} - - '@module-federation/rspack@0.6.6': - resolution: {integrity: sha512-30X6QPrJ/eCcmUL4GQ06Z9bQwURBnJI0607Fw2ufmAbhDA0PJFtg7NFFfXzsdChms1ACVbgvgfBH8SJg8j3wBg==} - peerDependencies: - typescript: ^4.9.0 || ^5.0.0 - vue-tsc: '>=1.0.24' - peerDependenciesMeta: - typescript: - optional: true - vue-tsc: - optional: true - - '@module-federation/runtime-tools@0.6.6': - resolution: {integrity: sha512-w2qHa41p6rADWMS1yBjpqNhaLZ4R5oRy9OYGPe6ywjh+8oqbiBl1CfQglcgEBIpHktEjV/upsgsnjHSdJBdeZw==} - - '@module-federation/runtime@0.6.6': - resolution: {integrity: sha512-QsKHUV2HALRzL6mPCdJEZTDuPReKC8MMXf+/VMCtQPp6JhLEjZIO06bfEZqXMbTbTYlMzntIwu1tGCbtJRZDOQ==} - - '@module-federation/sdk@0.6.6': - resolution: {integrity: sha512-tUv2kPi0FvplcpGi/g4nITAYVAR1RUZ6QvP71T8inmRZSrfcvk1QpGJiL36IjuS67SM3VAoXS0iJ2WX1Rgjvhg==} - - '@module-federation/third-party-dts-extractor@0.6.6': - resolution: {integrity: sha512-xX9p17PpElzATNEulwlJJT731xST7T7OUIDSkkIghp/ICDmZd6WhYJvNBto7xbpaj5SIB7Ocdj4chNGv0xdYPw==} - - '@module-federation/webpack-bundler-runtime@0.6.6': - resolution: {integrity: sha512-0UnY9m1fBgHwTpacYWbht1jB5X4Iqspiu1q8kfjUrv6y+R224//ydUFYYO8xfWx4V9SGQFKlU8XFH0FP/r0Hng==} - - '@napi-rs/wasm-runtime@0.2.4': - resolution: {integrity: sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==} - - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - - '@nrwl/cypress@19.8.0': - resolution: {integrity: sha512-e9/XiZtEz3hBnr8tCy9S6TwEaXVf1djbk+JPvFuYWIwSLBDhfkpgd+2FLsX7kTw1KNvG6APbnG5HiUi6mSlTAg==} - - '@nrwl/devkit@19.8.0': - resolution: {integrity: sha512-LehpQ2D1687+JWaUpW84NPuXsQuPosmts66LShPT4+6KozB4gd0hJGAXNXpjNs9CUfLyNf8rRdEeqNjWnPYEmA==} - - '@nrwl/eslint-plugin-nx@19.8.0': - resolution: {integrity: sha512-tQU+kokxOylFz6/Ffl/FyVswLLiHNAvo6Afd+QEajQPn9CWGKolXSHGGva9skMKDjWtzOWAz1BjgpUf0nfHEFQ==} - - '@nrwl/jest@19.8.0': - resolution: {integrity: sha512-+OOBsOfSNJtdrxwNSCNCF7kVga4SaS5aTkXNyDlQztlF+ccEOoafEfbV5g4gMUTF06VnXsvoC5M46xmC4Y9zTQ==} - - '@nrwl/js@19.8.0': - resolution: {integrity: sha512-agmIwKD6zK0l+aIEhDv3VuPW10rn5fhHeif3k5q9EgT47QL2gCNzU54oYpuXoKeenJCsDMzOEkJb1IsglVas6g==} - - '@nrwl/react-native@19.8.0': - resolution: {integrity: sha512-bNqvEQrvB3oEtorZ3k9+skaAv9+BEBiI3EmHQSxVhPzTzVeGzN3LYrJWgqcDp7B73SjWoWvTvQ15yJOrwGpEbw==} - - '@nrwl/react@19.8.0': - resolution: {integrity: sha512-kpRUDzGc/2wq84WDYAnrulyzoCDMshxQTn7XnXtpgIuXQy9gIHU8W2n+pbBQTqagBsZvML0zZQevrKlcZX1PBQ==} - - '@nrwl/rollup@19.8.0': - resolution: {integrity: sha512-xChcUsiWmMyrthyqQUgyLxyDP2lBe0oHXi6t78KEokKfSSFuzWmoYZjlG5EeZ3XhG18wRD7/q60cFcQTNBQ+6w==} - - '@nrwl/storybook@19.8.0': - resolution: {integrity: sha512-aMI9sMAGVVN+ILnsQFWgx/HkDRu7ImuSu75abL8viHfwhmpjwBBiHJK2K9XgjrIfnc0PdlAKjNEGjWxnprq/Xw==} - - '@nrwl/tao@19.8.0': - resolution: {integrity: sha512-tybyYdhHNfyBRb8SOc/SasT1iwjYkp/QibS8L3ayTvpvvzJpNr8BpuTznQWIkaIjilflmcdHl+rMiQDqwABqpg==} - hasBin: true - - '@nrwl/vite@19.8.0': - resolution: {integrity: sha512-Nux7PN5HYFnSbVj0lVIhgMRkfJ7AYRBr8lXDsJBFboxUtmnPGpG5aV6o/9Fu2XD/eiLBsHCmMcusqkD0+jCvMA==} - - '@nrwl/web@19.8.0': - resolution: {integrity: sha512-rYADRAx2x88iiQdqRBbFN1m9pjBwBhT7v9XCKnZRjt/vRbjszBA73WlYpiZ41FqLwpJ9BgKITDYgQ9L0V4DpGw==} - - '@nrwl/workspace@19.8.0': - resolution: {integrity: sha512-HSN0GML7RaVUSRD3lOc07atCjs4Vzs3Jgs9/7+zFtldKsmsY4GzYIWpJ4G6IDl9u3YJwTKtRmuj5BVI7G+ZGmw==} - - '@nx/cypress@19.8.0': - resolution: {integrity: sha512-BeV/EqWTgzVwE0GyusrLzjRwiAmQ5GOSPWIXaxOWQIni4HUAIANLHPqv4JIXBzQlL9kFt+KF+3QqSIwDDOvonQ==} - peerDependencies: - cypress: '>= 3 < 14' - peerDependenciesMeta: - cypress: - optional: true - - '@nx/devkit@19.8.0': - resolution: {integrity: sha512-nPaKHF0m2KONlt8GXjN9EhFo+NOvJnFcK6ujKFFLAyZ4TACY4F1FCjSHFTjYI82j+WukzuyjSmY9wzxYughWIQ==} - peerDependencies: - nx: '>= 17 <= 20' - - '@nx/eslint-plugin@19.8.0': - resolution: {integrity: sha512-hu+6gz2halk2Qv6W/ALiGwFumGdhRnzdd9SBiW8YsGurdWxWWYMqO+/qnyeoyRptonAxL6kcTPeB4RHnPYnfdQ==} - peerDependencies: - '@typescript-eslint/parser': ^6.13.2 || ^7.0.0 || ^8.0.0 - eslint-config-prettier: ^9.0.0 - peerDependenciesMeta: - eslint-config-prettier: - optional: true - - '@nx/eslint@19.8.0': - resolution: {integrity: sha512-a1xmLeMMPruxjHAHj7zb+qB2tTJ9knfDCKpmvrxsa3dYdNd/W0ECMV1CG2gNfxK1ukH7fUa1AvV9ph6f8/3CNg==} - peerDependencies: - '@zkochan/js-yaml': 0.0.7 - eslint: ^8.0.0 || ^9.0.0 - peerDependenciesMeta: - '@zkochan/js-yaml': - optional: true - - '@nx/jest@19.8.0': - resolution: {integrity: sha512-CB8HlfCD+eovfi163I1hWjRcaM2uTpxaI0IwmfE9ddWRxyhw4VfsH0QYg9I6HUjJz0ZVl6qOd5a+98rnfJewwg==} - - '@nx/js@19.8.0': - resolution: {integrity: sha512-gexu1nYN3Hl3+yNuowgfd3sW5uooMKx9Dg6FPWWn/27+eJlTny5A2nQ3YR85yKRiJbNEP23am4le788pyVq2MQ==} - peerDependencies: - verdaccio: ^5.0.4 - peerDependenciesMeta: - verdaccio: - optional: true - - '@nx/linter@19.8.0': - resolution: {integrity: sha512-v7jftcKnQLwz+ohlRR4EdbBXVumAFLzusNjnnpxYaCP7Vy4RK4qNZuLn4xANURhRgv/KlJBa+6TL9TttHpvT7g==} - - '@nx/nx-darwin-arm64@19.8.0': - resolution: {integrity: sha512-JWtBb6ndCdGE+RBIwKN85BZnX41lFGsFxnsmot71GeAj/g7Cb0PM2qcmxawoy8yLPTBGZhb+eHER3z3nDIqRog==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - - '@nx/nx-darwin-x64@19.8.0': - resolution: {integrity: sha512-NcNaqbbStBkyahLaoKFtW6nEdjCjYT5ZOmGjc6UpAx1Y3pkk/FcIOYJRCBxwuOsRRsEAyeVcHPdYrouZmV+6Yw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - - '@nx/nx-freebsd-x64@19.8.0': - resolution: {integrity: sha512-QXHRnMW5LrpYvtmdFRL2CRgX9CWDccrs2xhQNNzcgsLgL87Wte5kjDoJJN4GQjtrmjD3Q93w67CE9lhqnpXBvQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [freebsd] - - '@nx/nx-linux-arm-gnueabihf@19.8.0': - resolution: {integrity: sha512-VjZOLMxz0gT+0AdDygxQS0Vvi3AcEzO3y9o9WdGKKaDVUDycrFn72X+ZbvFoio1dF7S1s2TbmOlR09Bu1yTgGg==} - engines: {node: '>= 10'} - cpu: [arm] - os: [linux] - - '@nx/nx-linux-arm64-gnu@19.8.0': - resolution: {integrity: sha512-sCSrXkSmEfDUDGLESXB3eHXECAIYz9nosFZpCggyUP1vgF/QcV40fHnV38nrFbKaVHuoaxy43RgnD+I3o6sDSw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - - '@nx/nx-linux-arm64-musl@19.8.0': - resolution: {integrity: sha512-F3xEe7NGjsVKZTVlvUiUOTmCzxteRsQH2SSsYXyAfgJ42P3eZPc9HgeLx6RByjC/NBCwc7XEECMP1FjQgQXHVw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - - '@nx/nx-linux-x64-gnu@19.8.0': - resolution: {integrity: sha512-4uYuE+LvxOFXvi9z9ueJSVrME5D383SHNCjs6jYwc9KovCsmL5oPVXRieoE4/hYI4lrjly+CrAnPZU1P7ocBiw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - '@nx/nx-linux-x64-musl@19.8.0': - resolution: {integrity: sha512-9UDEGjOvNt+m+kMBCAB7CGisSwv05Xvaq8K3NJ+xM5GPG74EkQel24mSoIJfm/6zmDkdZCiRzNN9VRjOjzOz6Q==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - '@nx/nx-win32-arm64-msvc@19.8.0': - resolution: {integrity: sha512-JVzm0KjyLZY5ponBukZ/b35wttW0b3LB0nqaiiHY7WKwSzo+m0UGEYHD/Yk6rKA0RRZN2wQVeIzLeWfYcZYrhA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - - '@nx/nx-win32-x64-msvc@19.8.0': - resolution: {integrity: sha512-IRLhMZIInvp9okLsjnj76zaz8iaMovtLr6MHIFOOPIMsZYRhqQTArF5Os/NqEezeYYxvX6YZ5hKYe0xQO7A5LA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - - '@nx/react-native@19.8.0': - resolution: {integrity: sha512-kXKIvwoAjS03lYBQ5GjE4gCRFa19IdCHIBjmepcAsaH0mGu3gUHkDtswMA46bkLQk7/V5nsf09M7T9pCaO7/BA==} - - '@nx/react@19.8.0': - resolution: {integrity: sha512-YK+UE56aw4ddRESI2O5PtMQiWPzeyJo5YLvVlrayKHatmO0be8aWgBRL0TNsxCTD9FfDcbviGxA13JdCXJ777g==} - - '@nx/rollup@19.8.0': - resolution: {integrity: sha512-UHEVlZp7TsHXyt5sdLhHfn6Dh5ufoVAfz5h651Dx+f6no+lZwvZe54IPq7HzPL8aJ/gh8OrSEsQ+8MDP2s+JWw==} - - '@nx/storybook@19.8.0': - resolution: {integrity: sha512-Sobofeub7ZRkMY2hSi3aC6/aEn742Xy9UWZ1y0DRMW8VIfCVhPYGHLLLflMfGymctrm+r4IsUjYxd7l6q6Kl6g==} - - '@nx/vite@19.8.0': - resolution: {integrity: sha512-Krok+zalc6as1w+V+D/mmY+vh5qKdkvz4omMds2k3d+RQNxIb7Mh78ueGVQr5zRtR9CKSSPvDMtUklnjDlp1SQ==} - peerDependencies: - vite: ^5.0.0 - vitest: ^1.3.1 || ^2.0.0 - - '@nx/web@19.8.0': - resolution: {integrity: sha512-eP+NsnVlUAil35B6MuE5AGLPrruhlKNbkjYgExEwMEMVqFykvXY7drsxy2nhkmHJoO0IAG7emIQj+ZuFdUdKMw==} - - '@nx/workspace@19.8.0': - resolution: {integrity: sha512-8/NHRuJAqurNaFIUuSZdV8qNqiFykXlHjPp6E4raNmB8seIKYJVeYZgw9D7d5piOuLHA3o0JWSKJQ3nBElfCBw==} - - '@phenomnomnominal/tsquery@5.0.1': - resolution: {integrity: sha512-3nVv+e2FQwsW8Aw6qTU6f+1rfcJ3hrcnvH/mu9i8YhxO+9sqbOfpL8m6PbET5+xKOlz/VSbp0RoYWYCtIsnmuA==} - peerDependencies: - typescript: ^3 || ^4 || ^5 - - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - - '@polka/url@1.0.0-next.28': - resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==} - - '@react-native-community/cli-clean@13.6.6': - resolution: {integrity: sha512-cBwJTwl0NyeA4nyMxbhkWZhxtILYkbU3TW3k8AXLg+iGphe0zikYMGB3T+haTvTc6alTyEFwPbimk9bGIqkjAQ==} - - '@react-native-community/cli-config@13.6.6': - resolution: {integrity: sha512-mbG425zCKr8JZhv/j11382arezwS/70juWMsn8j2lmrGTrP1cUdW0MF15CCIFtJsqyK3Qs+FTmqttRpq81QfSg==} - - '@react-native-community/cli-debugger-ui@13.6.6': - resolution: {integrity: sha512-Vv9u6eS4vKSDAvdhA0OiQHoA7y39fiPIgJ6biT32tN4avHDtxlc6TWZGiqv7g98SBvDWvoVAmdPLcRf3kU+c8g==} - - '@react-native-community/cli-doctor@13.6.6': - resolution: {integrity: sha512-TWZb5g6EmQe2Ua2TEWNmyaEayvlWH4GmdD9ZC+p8EpKFpB1NpDGMK6sXbpb42TDvwZg5s4TDRplK0PBEA/SVDg==} - - '@react-native-community/cli-hermes@13.6.6': - resolution: {integrity: sha512-La5Ie+NGaRl3klei6WxKoOxmCUSGGxpOk6vU5pEGf0/O7ky+Ay0io+zXYUZqlNMi/cGpO7ZUijakBYOB/uyuFg==} - - '@react-native-community/cli-platform-android@13.6.6': - resolution: {integrity: sha512-/tMwkBeNxh84syiSwNlYtmUz/Ppc+HfKtdopL/5RB+fd3SV1/5/NPNjMlyLNgFKnpxvKCInQ7dnl6jGHJjeHjg==} - - '@react-native-community/cli-platform-apple@13.6.6': - resolution: {integrity: sha512-bOmSSwoqNNT3AmCRZXEMYKz1Jf1l2F86Nhs7qBcXdY/sGiJ+Flng564LOqvdAlVLTbkgz47KjNKCS2pP4Jg0Mg==} - - '@react-native-community/cli-platform-ios@13.6.6': - resolution: {integrity: sha512-vjDnRwhlSN5ryqKTas6/DPkxuouuyFBAqAROH4FR1cspTbn6v78JTZKDmtQy9JMMo7N5vZj1kASU5vbFep9IOQ==} - - '@react-native-community/cli-server-api@13.6.6': - resolution: {integrity: sha512-ZtCXxoFlM7oDv3iZ3wsrT3SamhtUJuIkX2WePLPlN5bcbq7zimbPm2lHyicNJtpcGQ5ymsgpUWPCNZsWQhXBqQ==} - - '@react-native-community/cli-tools@13.6.6': - resolution: {integrity: sha512-ptOnn4AJczY5njvbdK91k4hcYazDnGtEPrqIwEI+k/CTBHNdb27Rsm2OZ7ye6f7otLBqF8gj/hK6QzJs8CEMgw==} - - '@react-native-community/cli-types@13.6.6': - resolution: {integrity: sha512-733iaYzlmvNK7XYbnWlMjdE+2k0hlTBJW071af/xb6Bs+hbJqBP9c03FZuYH2hFFwDDntwj05bkri/P7VgSxug==} - - '@react-native-community/cli@13.6.6': - resolution: {integrity: sha512-IqclB7VQ84ye8Fcs89HOpOscY4284VZg2pojHNl8H0Lzd4DadXJWQoxC7zWm8v2f8eyeX2kdhxp2ETD5tceIgA==} - engines: {node: '>=18'} - hasBin: true - - '@react-native/assets-registry@0.74.83': - resolution: {integrity: sha512-2vkLMVnp+YTZYTNSDIBZojSsjz8sl5PscP3j4GcV6idD8V978SZfwFlk8K0ti0BzRs11mzL0Pj17km597S/eTQ==} - engines: {node: '>=18'} - - '@react-native/babel-plugin-codegen@0.74.83': - resolution: {integrity: sha512-+S0st3t4Ro00bi9gjT1jnK8qTFOU+CwmziA7U9odKyWrCoRJrgmrvogq/Dr1YXlpFxexiGIupGut1VHxr+fxJA==} - engines: {node: '>=18'} - - '@react-native/babel-plugin-codegen@0.74.88': - resolution: {integrity: sha512-hul4gPU09q7K0amhzhZnG3EVxeCXjP2l1x/zdgtliRRB8Nq7Za8YkM7dy84X+Vv4UC9G1nzxIbibsKeLsY1N4A==} - engines: {node: '>=18'} - - '@react-native/babel-preset@0.74.83': - resolution: {integrity: sha512-KJuu3XyVh3qgyUer+rEqh9a/JoUxsDOzkJNfRpDyXiAyjDRoVch60X/Xa/NcEQ93iCVHAWs0yQ+XGNGIBCYE6g==} - engines: {node: '>=18'} - peerDependencies: - '@babel/core': '*' - - '@react-native/babel-preset@0.74.88': - resolution: {integrity: sha512-SQODiFGlyblFTvdvePUDrQ+qlSzhcOm7It/yW2CVKxw5zRUf50+Cj3DBkRFhQDqF3ri2EnWsLnJ3oNE7hqDUxg==} - engines: {node: '>=18'} - peerDependencies: - '@babel/core': '*' - - '@react-native/codegen@0.74.83': - resolution: {integrity: sha512-GgvgHS3Aa2J8/mp1uC/zU8HuTh8ZT5jz7a4mVMWPw7+rGyv70Ba8uOVBq6UH2Q08o617IATYc+0HfyzAfm4n0w==} - engines: {node: '>=18'} - peerDependencies: - '@babel/preset-env': ^7.1.6 - - '@react-native/codegen@0.74.88': - resolution: {integrity: sha512-HMk/LCrSdUof9DZFaB2bK0soKyAF6XiCg2LG7WFjEkUDXayeiB4p7IsHISJWY4bYg7cMPZ0fiZMRaBP2vXJxgg==} - engines: {node: '>=18'} - peerDependencies: - '@babel/preset-env': ^7.1.6 - - '@react-native/community-cli-plugin@0.74.83': - resolution: {integrity: sha512-7GAFjFOg1mFSj8bnFNQS4u8u7+QtrEeflUIDVZGEfBZQ3wMNI5ycBzbBGycsZYiq00Xvoc6eKFC7kvIaqeJpUQ==} - engines: {node: '>=18'} - - '@react-native/debugger-frontend@0.74.83': - resolution: {integrity: sha512-RGQlVUegBRxAUF9c1ss1ssaHZh6CO+7awgtI9sDeU0PzDZY/40ImoPD5m0o0SI6nXoVzbPtcMGzU+VO590pRfA==} - engines: {node: '>=18'} - - '@react-native/dev-middleware@0.74.83': - resolution: {integrity: sha512-UH8iriqnf7N4Hpi20D7M2FdvSANwTVStwFCSD7VMU9agJX88Yk0D1T6Meh2RMhUu4kY2bv8sTkNRm7LmxvZqgA==} - engines: {node: '>=18'} - - '@react-native/gradle-plugin@0.74.83': - resolution: {integrity: sha512-Pw2BWVyOHoBuJVKxGVYF6/GSZRf6+v1Ygc+ULGz5t20N8qzRWPa2fRZWqoxsN7TkNLPsECYY8gooOl7okOcPAQ==} - engines: {node: '>=18'} - - '@react-native/js-polyfills@0.74.83': - resolution: {integrity: sha512-/t74n8r6wFhw4JEoOj3bN71N1NDLqaawB75uKAsSjeCwIR9AfCxlzZG0etsXtOexkY9KMeZIQ7YwRPqUdNXuqw==} - engines: {node: '>=18'} - - '@react-native/js-polyfills@0.74.88': - resolution: {integrity: sha512-6KljxfNKAz2b2uXqxagKbytb3MvUujAmfvuubKOoCLAiLbs8CYKW0OV1FqVLYUEXXw5GEDhXcVzQxxFuDlMafQ==} - engines: {node: '>=18'} - - '@react-native/metro-babel-transformer@0.74.83': - resolution: {integrity: sha512-hGdx5N8diu8y+GW/ED39vTZa9Jx1di2ZZ0aapbhH4egN1agIAusj5jXTccfNBwwWF93aJ5oVbRzfteZgjbutKg==} - engines: {node: '>=18'} - peerDependencies: - '@babel/core': '*' - - '@react-native/metro-babel-transformer@0.74.88': - resolution: {integrity: sha512-r7Er162iLpQce3ODQzNVS+PnjglJoHZ4l0NeaVMB4w45DIgKM4hC2vI6a/fzyFm9C6N+QY4P2i2RSkwjXVuBlQ==} - engines: {node: '>=18'} - peerDependencies: - '@babel/core': '*' - - '@react-native/metro-config@0.74.88': - resolution: {integrity: sha512-GYBVb+987onsGcycad7jW7P4lBpeuj2TIhuOcKJcvRSID59w3OPb54hi8P04Cn9fMWGunWDxb8IvpkAbffzlCw==} - engines: {node: '>=18'} - - '@react-native/normalize-colors@0.74.83': - resolution: {integrity: sha512-jhCY95gRDE44qYawWVvhTjTplW1g+JtKTKM3f8xYT1dJtJ8QWv+gqEtKcfmOHfDkSDaMKG0AGBaDTSK8GXLH8Q==} - - '@react-native/virtualized-lists@0.74.83': - resolution: {integrity: sha512-rmaLeE34rj7py4FxTod7iMTC7BAsm+HrGA8WxYmEJeyTV7WSaxAkosKoYBz8038mOiwnG9VwA/7FrB6bEQvn1A==} - engines: {node: '>=18'} - peerDependencies: - '@types/react': ^18.2.6 - react: '*' - react-native: '*' - peerDependenciesMeta: - '@types/react': - optional: true - - '@rnx-kit/chromium-edge-launcher@1.0.0': - resolution: {integrity: sha512-lzD84av1ZQhYUS+jsGqJiCMaJO2dn9u+RTT9n9q6D3SaKVwWqv+7AoRKqBu19bkwyE+iFRl1ymr40QS90jVFYg==} - engines: {node: '>=14.15'} - - '@rollup/plugin-babel@5.3.1': - resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} - engines: {node: '>= 10.0.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@types/babel__core': ^7.1.9 - rollup: ^1.20.0||^2.0.0 - peerDependenciesMeta: - '@types/babel__core': - optional: true - - '@rollup/plugin-babel@6.0.4': - resolution: {integrity: sha512-YF7Y52kFdFT/xVSuVdjkV5ZdX/3YtmX0QulG+x0taQOtJdHYzVU61aSSkAgVJ7NOv6qPkIYiJSgSWWN/DM5sGw==} - engines: {node: '>=14.0.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@types/babel__core': ^7.1.9 - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - '@types/babel__core': - optional: true - rollup: - optional: true - - '@rollup/plugin-commonjs@11.1.0': - resolution: {integrity: sha512-Ycr12N3ZPN96Fw2STurD21jMqzKwL9QuFhms3SD7KKRK7oaXUsBU9Zt0jL/rOPHiPYisI21/rXGO3jr9BnLHUA==} - engines: {node: '>= 8.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0 - - '@rollup/plugin-commonjs@25.0.8': - resolution: {integrity: sha512-ZEZWTK5n6Qde0to4vS9Mr5x/0UZoqCxPVR9KRUjU4kA2sO7GEUn1fop0DAwpO6z0Nw/kJON9bDmSxdWxO/TT1A==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.68.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-image@3.0.3': - resolution: {integrity: sha512-qXWQwsXpvD4trSb8PeFPFajp8JLpRtqqOeNYRUKnEQNHm7e5UP7fuSRcbjQAJ7wDZBbnJvSdY5ujNBQd9B1iFg==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-json@4.1.0': - resolution: {integrity: sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==} - peerDependencies: - rollup: ^1.20.0 || ^2.0.0 - - '@rollup/plugin-json@6.1.0': - resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-node-resolve@15.3.0': - resolution: {integrity: sha512-9eO5McEICxMzJpDW9OnMYSv4Sta3hmt7VtBFz5zR9273suNOydOyq/FrGeGy+KsTRFm8w0SLVhzig2ILFT63Ag==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.78.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-node-resolve@9.0.0': - resolution: {integrity: sha512-gPz+utFHLRrd41WMP13Jq5mqqzHL3OXrfj3/MkSyB6UBIcuNt9j60GCbarzMzdf1VHFpOxfQh/ez7wyadLMqkg==} - engines: {node: '>= 10.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0 - - '@rollup/plugin-replace@2.4.2': - resolution: {integrity: sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==} - peerDependencies: - rollup: ^1.20.0 || ^2.0.0 - - '@rollup/pluginutils@3.1.0': - resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} - engines: {node: '>= 8.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0 - - '@rollup/pluginutils@4.2.1': - resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} - engines: {node: '>= 8.0.0'} - - '@rollup/pluginutils@5.1.2': - resolution: {integrity: sha512-/FIdS3PyZ39bjZlwqFnWqCOVnW7o963LtKMwQOD0NhQqw22gSr2YY1afu3FxRip4ZCZNsD5jq6Aaz6QV3D/Njw==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/rollup-android-arm-eabi@4.22.4': - resolution: {integrity: sha512-Fxamp4aEZnfPOcGA8KSNEohV8hX7zVHOemC8jVBoBUHu5zpJK/Eu3uJwt6BMgy9fkvzxDaurgj96F/NiLukF2w==} - cpu: [arm] - os: [android] - - '@rollup/rollup-android-arm64@4.22.4': - resolution: {integrity: sha512-VXoK5UMrgECLYaMuGuVTOx5kcuap1Jm8g/M83RnCHBKOqvPPmROFJGQaZhGccnsFtfXQ3XYa4/jMCJvZnbJBdA==} - cpu: [arm64] - os: [android] - - '@rollup/rollup-darwin-arm64@4.22.4': - resolution: {integrity: sha512-xMM9ORBqu81jyMKCDP+SZDhnX2QEVQzTcC6G18KlTQEzWK8r/oNZtKuZaCcHhnsa6fEeOBionoyl5JsAbE/36Q==} - cpu: [arm64] - os: [darwin] - - '@rollup/rollup-darwin-x64@4.22.4': - resolution: {integrity: sha512-aJJyYKQwbHuhTUrjWjxEvGnNNBCnmpHDvrb8JFDbeSH3m2XdHcxDd3jthAzvmoI8w/kSjd2y0udT+4okADsZIw==} - cpu: [x64] - os: [darwin] - - '@rollup/rollup-linux-arm-gnueabihf@4.22.4': - resolution: {integrity: sha512-j63YtCIRAzbO+gC2L9dWXRh5BFetsv0j0va0Wi9epXDgU/XUi5dJKo4USTttVyK7fGw2nPWK0PbAvyliz50SCQ==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm-musleabihf@4.22.4': - resolution: {integrity: sha512-dJnWUgwWBX1YBRsuKKMOlXCzh2Wu1mlHzv20TpqEsfdZLb3WoJW2kIEsGwLkroYf24IrPAvOT/ZQ2OYMV6vlrg==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm64-gnu@4.22.4': - resolution: {integrity: sha512-AdPRoNi3NKVLolCN/Sp4F4N1d98c4SBnHMKoLuiG6RXgoZ4sllseuGioszumnPGmPM2O7qaAX/IJdeDU8f26Aw==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-arm64-musl@4.22.4': - resolution: {integrity: sha512-Gl0AxBtDg8uoAn5CCqQDMqAx22Wx22pjDOjBdmG0VIWX3qUBHzYmOKh8KXHL4UpogfJ14G4wk16EQogF+v8hmA==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-powerpc64le-gnu@4.22.4': - resolution: {integrity: sha512-3aVCK9xfWW1oGQpTsYJJPF6bfpWfhbRnhdlyhak2ZiyFLDaayz0EP5j9V1RVLAAxlmWKTDfS9wyRyY3hvhPoOg==} - cpu: [ppc64] - os: [linux] - - '@rollup/rollup-linux-riscv64-gnu@4.22.4': - resolution: {integrity: sha512-ePYIir6VYnhgv2C5Xe9u+ico4t8sZWXschR6fMgoPUK31yQu7hTEJb7bCqivHECwIClJfKgE7zYsh1qTP3WHUA==} - cpu: [riscv64] - os: [linux] - - '@rollup/rollup-linux-s390x-gnu@4.22.4': - resolution: {integrity: sha512-GqFJ9wLlbB9daxhVlrTe61vJtEY99/xB3C8e4ULVsVfflcpmR6c8UZXjtkMA6FhNONhj2eA5Tk9uAVw5orEs4Q==} - cpu: [s390x] - os: [linux] - - '@rollup/rollup-linux-x64-gnu@4.22.4': - resolution: {integrity: sha512-87v0ol2sH9GE3cLQLNEy0K/R0pz1nvg76o8M5nhMR0+Q+BBGLnb35P0fVz4CQxHYXaAOhE8HhlkaZfsdUOlHwg==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-linux-x64-musl@4.22.4': - resolution: {integrity: sha512-UV6FZMUgePDZrFjrNGIWzDo/vABebuXBhJEqrHxrGiU6HikPy0Z3LfdtciIttEUQfuDdCn8fqh7wiFJjCNwO+g==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-win32-arm64-msvc@4.22.4': - resolution: {integrity: sha512-BjI+NVVEGAXjGWYHz/vv0pBqfGoUH0IGZ0cICTn7kB9PyjrATSkX+8WkguNjWoj2qSr1im/+tTGRaY+4/PdcQw==} - cpu: [arm64] - os: [win32] - - '@rollup/rollup-win32-ia32-msvc@4.22.4': - resolution: {integrity: sha512-SiWG/1TuUdPvYmzmYnmd3IEifzR61Tragkbx9D3+R8mzQqDBz8v+BvZNDlkiTtI9T15KYZhP0ehn3Dld4n9J5g==} - cpu: [ia32] - os: [win32] - - '@rollup/rollup-win32-x64-msvc@4.22.4': - resolution: {integrity: sha512-j8pPKp53/lq9lMXN57S8cFz0MynJk8OWNuUnXct/9KCpKU7DgU3bYMJhwWmcqC0UU29p8Lr0/7KEVcaM6bf47Q==} - cpu: [x64] - os: [win32] - - '@rtsao/scc@1.1.0': - resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} - - '@rushstack/node-core-library@4.0.2': - resolution: {integrity: sha512-hyES82QVpkfQMeBMteQUnrhASL/KHPhd7iJ8euduwNJG4mu2GSOKybf0rOEjOm1Wz7CwJEUm9y0yD7jg2C1bfg==} - peerDependencies: - '@types/node': '*' - peerDependenciesMeta: - '@types/node': - optional: true - - '@rushstack/rig-package@0.5.2': - resolution: {integrity: sha512-mUDecIJeH3yYGZs2a48k+pbhM6JYwWlgjs2Ca5f2n1G2/kgdgP9D/07oglEGf6mRyXEnazhEENeYTSNDRCwdqA==} - - '@rushstack/terminal@0.10.0': - resolution: {integrity: sha512-UbELbXnUdc7EKwfH2sb8ChqNgapUOdqcCIdQP4NGxBpTZV2sQyeekuK3zmfQSa/MN+/7b4kBogl2wq0vpkpYGw==} - peerDependencies: - '@types/node': '*' - peerDependenciesMeta: - '@types/node': - optional: true - - '@rushstack/ts-command-line@4.19.1': - resolution: {integrity: sha512-J7H768dgcpG60d7skZ5uSSwyCZs/S2HrWP1Ds8d1qYAyaaeJmpmmLr9BVw97RjFzmQPOYnoXcKA4GkqDCkduQg==} - - '@sideway/address@4.1.5': - resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} - - '@sideway/formula@3.0.1': - resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} - - '@sideway/pinpoint@2.0.0': - resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} - - '@sinclair/typebox@0.24.51': - resolution: {integrity: sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==} - - '@sinclair/typebox@0.27.8': - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - - '@sinonjs/commons@1.8.6': - resolution: {integrity: sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==} - - '@sinonjs/commons@3.0.1': - resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} - - '@sinonjs/fake-timers@10.3.0': - resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} - - '@sinonjs/fake-timers@9.1.2': - resolution: {integrity: sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==} - - '@storybook/addon-actions@8.4.7': - resolution: {integrity: sha512-mjtD5JxcPuW74T6h7nqMxWTvDneFtokg88p6kQ5OnC1M259iAXb//yiSZgu/quunMHPCXSiqn4FNOSgASTSbsA==} - peerDependencies: - storybook: ^8.4.7 - - '@storybook/addon-backgrounds@8.4.7': - resolution: {integrity: sha512-I4/aErqtFiazcoWyKafOAm3bLpxTj6eQuH/woSbk1Yx+EzN+Dbrgx1Updy8//bsNtKkcrXETITreqHC+a57DHQ==} - peerDependencies: - storybook: ^8.4.7 - - '@storybook/addon-controls@8.4.7': - resolution: {integrity: sha512-377uo5IsJgXLnQLJixa47+11V+7Wn9KcDEw+96aGCBCfLbWNH8S08tJHHnSu+jXg9zoqCAC23MetntVp6LetHA==} - peerDependencies: - storybook: ^8.4.7 - - '@storybook/addon-docs@8.4.7': - resolution: {integrity: sha512-NwWaiTDT5puCBSUOVuf6ME7Zsbwz7Y79WF5tMZBx/sLQ60vpmJVQsap6NSjvK1Ravhc21EsIXqemAcBjAWu80w==} - peerDependencies: - storybook: ^8.4.7 - - '@storybook/addon-essentials@8.4.7': - resolution: {integrity: sha512-+BtZHCBrYtQKILtejKxh0CDRGIgTl9PumfBOKRaihYb4FX1IjSAxoV/oo/IfEjlkF5f87vouShWsRa8EUauFDw==} - peerDependencies: - storybook: ^8.4.7 - - '@storybook/addon-highlight@8.4.7': - resolution: {integrity: sha512-whQIDBd3PfVwcUCrRXvCUHWClXe9mQ7XkTPCdPo4B/tZ6Z9c6zD8JUHT76ddyHivixFLowMnA8PxMU6kCMAiNw==} - peerDependencies: - storybook: ^8.4.7 - - '@storybook/addon-interactions@8.3.3': - resolution: {integrity: sha512-3w5tpCGYdF33wF44xEhTS3Zmcwd6nITtwy5q+PJvHCJAm3fpjzL3xrjtlHKDvXNwYacJPRCbWKn2QwtxZIdN0g==} - peerDependencies: - storybook: ^8.3.3 - - '@storybook/addon-measure@8.4.7': - resolution: {integrity: sha512-QfvqYWDSI5F68mKvafEmZic3SMiK7zZM8VA0kTXx55hF/+vx61Mm0HccApUT96xCXIgmwQwDvn9gS4TkX81Dmw==} - peerDependencies: - storybook: ^8.4.7 - - '@storybook/addon-outline@8.4.7': - resolution: {integrity: sha512-6LYRqUZxSodmAIl8icr585Oi8pmzbZ90aloZJIpve+dBAzo7ydYrSQxxoQEVltXbKf3VeVcrs64ouAYqjisMYA==} - peerDependencies: - storybook: ^8.4.7 - - '@storybook/addon-toolbars@8.4.7': - resolution: {integrity: sha512-OSfdv5UZs+NdGB+nZmbafGUWimiweJ/56gShlw8Neo/4jOJl1R3rnRqqY7MYx8E4GwoX+i3GF5C3iWFNQqlDcw==} - peerDependencies: - storybook: ^8.4.7 - - '@storybook/addon-viewport@8.4.7': - resolution: {integrity: sha512-hvczh/jjuXXcOogih09a663sRDDSATXwbE866al1DXgbDFraYD/LxX/QDb38W9hdjU9+Qhx8VFIcNWoMQns5HQ==} - peerDependencies: - storybook: ^8.4.7 - - '@storybook/blocks@8.4.7': - resolution: {integrity: sha512-+QH7+JwXXXIyP3fRCxz/7E2VZepAanXJM7G8nbR3wWsqWgrRp4Wra6MvybxAYCxU7aNfJX5c+RW84SNikFpcIA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.4.7 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - - '@storybook/builder-vite@8.3.3': - resolution: {integrity: sha512-3yTXCLaB6bzhoPH3PqtacKkcaC1uV4L+IHTf1Zypx1NO1pLZHyhYf0T7dIOxTh2JZfqu1Pm9hTvOmWfR12m+9w==} - peerDependencies: - '@preact/preset-vite': '*' - storybook: ^8.3.3 - typescript: '>= 4.3.x' - vite: ^4.0.0 || ^5.0.0 - vite-plugin-glimmerx: '*' - peerDependenciesMeta: - '@preact/preset-vite': - optional: true - typescript: - optional: true - vite-plugin-glimmerx: - optional: true - - '@storybook/channels@7.6.20': - resolution: {integrity: sha512-4hkgPSH6bJclB2OvLnkZOGZW1WptJs09mhQ6j6qLjgBZzL/ZdD6priWSd7iXrmPiN5TzUobkG4P4Dp7FjkiO7A==} - - '@storybook/client-logger@7.6.20': - resolution: {integrity: sha512-NwG0VIJQCmKrSaN5GBDFyQgTAHLNishUPLW1NrzqTDNAhfZUoef64rPQlinbopa0H4OXmlB+QxbQIb3ubeXmSQ==} - - '@storybook/components@8.3.3': - resolution: {integrity: sha512-i2JYtesFGkdu+Hwuj+o9fLuO3yo+LPT1/8o5xBVYtEqsgDtEAyuRUWjSz8d8NPtzloGPOv5kvR6MokWDfbeMfw==} - peerDependencies: - storybook: ^8.3.3 - - '@storybook/core-common@7.6.20': - resolution: {integrity: sha512-8H1zPWPjcmeD4HbDm4FDD0WLsfAKGVr566IZ4hG+h3iWVW57II9JW9MLBtiR2LPSd8u7o0kw64lwRGmtCO1qAw==} - - '@storybook/core-events@7.6.20': - resolution: {integrity: sha512-tlVDuVbDiNkvPDFAu+0ou3xBBYbx9zUURQz4G9fAq0ScgBOs/bpzcRrFb4mLpemUViBAd47tfZKdH4MAX45KVQ==} - - '@storybook/core-server@8.3.3': - resolution: {integrity: sha512-irR44iQ+I5ULJ2smRIglWmia9W/ioLsYxeH7/b2kA1TiTZE3GigizWQFlGzJf20snn1OKZ3f3CVpIlqT2Rh1aw==} - peerDependencies: - storybook: ^8.3.3 - - '@storybook/core@8.3.3': - resolution: {integrity: sha512-pmf2bP3fzh45e56gqOuBT8sDX05hGdUKIZ/hcI84d5xmd6MeHiPW8th2v946wCHcxHzxib2/UU9vQUh+mB4VNw==} - - '@storybook/csf-plugin@8.3.3': - resolution: {integrity: sha512-7AD7ojpXr3THqpTcEI4K7oKUfSwt1hummgL/cASuQvEPOwAZCVZl2gpGtKxcXhtJXTkn3GMCAvlYMoe7O/1YWw==} - peerDependencies: - storybook: ^8.3.3 - - '@storybook/csf-plugin@8.4.7': - resolution: {integrity: sha512-Fgogplu4HImgC+AYDcdGm1rmL6OR1rVdNX1Be9C/NEXwOCpbbBwi0BxTf/2ZxHRk9fCeaPEcOdP5S8QHfltc1g==} - peerDependencies: - storybook: ^8.4.7 - - '@storybook/csf-tools@7.6.20': - resolution: {integrity: sha512-rwcwzCsAYh/m/WYcxBiEtLpIW5OH1ingxNdF/rK9mtGWhJxXRDV8acPkFrF8rtFWIVKoOCXu5USJYmc3f2gdYQ==} - - '@storybook/csf@0.1.11': - resolution: {integrity: sha512-dHYFQH3mA+EtnCkHXzicbLgsvzYjcDJ1JWsogbItZogkPHgSJM/Wr71uMkcvw8v9mmCyP4NpXJuu6bPoVsOnzg==} - - '@storybook/expect@28.1.3-5': - resolution: {integrity: sha512-lS1oJnY1qTAxnH87C765NdfvGhksA6hBcbUVI5CHiSbNsEtr456wtg/z+dT9XlPriq1D5t2SgfNL9dBAoIGyIA==} - deprecated: In Storybook 8, this package functionality has been integrated to a new package called @storybook/test, which uses Vitest APIs for an improved experience. When upgrading to Storybook 8 with 'npx storybook@latest upgrade', you will get prompted and will get an automigration for the new package. Please migrate when you can. - - '@storybook/global@5.0.0': - resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} - - '@storybook/icons@1.3.0': - resolution: {integrity: sha512-Nz/UzeYQdUZUhacrPyfkiiysSjydyjgg/p0P9HxB4p/WaJUUjMAcaoaLgy3EXx61zZJ3iD36WPuDkZs5QYrA0A==} - engines: {node: '>=14.0.0'} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - - '@storybook/instrumenter@8.3.3': - resolution: {integrity: sha512-ZiODB9EwCQkl4PBxGJjBHXRTLxcNs68ZZvR+xeMr0eMFzzlJG+trXoX5kK95oA4BFhGN+3uM0Zl3MoRjBtJTNA==} - peerDependencies: - storybook: ^8.3.3 - - '@storybook/jest@0.2.3': - resolution: {integrity: sha512-ov5izrmbAFObzKeh9AOC5MlmFxAcf0o5i6YFGae9sDx6DGh6alXsRM+chIbucVkUwVHVlSzdfbLDEFGY/ShaYw==} - deprecated: In Storybook 8, this package functionality has been integrated to a new package called @storybook/test, which uses Vitest APIs for an improved experience. When upgrading to Storybook 8 with 'npx storybook@latest upgrade', you will get prompted and will get an automigration for the new package. Please migrate when you can. - - '@storybook/manager-api@8.3.3': - resolution: {integrity: sha512-Na4U+McOeVUJAR6qzJfQ6y2Qt0kUgEDUriNoAn+curpoKPTmIaZ79RAXBzIqBl31VyQKknKpZbozoRGf861YaQ==} - peerDependencies: - storybook: ^8.3.3 - - '@storybook/node-logger@7.6.20': - resolution: {integrity: sha512-l2i4qF1bscJkOplNffcRTsgQWYR7J51ewmizj5YrTM8BK6rslWT1RntgVJWB1RgPqvx6VsCz1gyP3yW1oKxvYw==} - - '@storybook/preview-api@7.6.20': - resolution: {integrity: sha512-3ic2m9LDZEPwZk02wIhNc3n3rNvbi7VDKn52hDXfAxnL5EYm7yDICAkaWcVaTfblru2zn0EDJt7ROpthscTW5w==} - - '@storybook/preview-api@8.3.3': - resolution: {integrity: sha512-GP2QlaF3BBQGAyo248N7549YkTQjCentsc1hUvqPnFWU4xfjkejbnFk8yLaIw0VbYbL7jfd7npBtjZ+6AnphMQ==} - peerDependencies: - storybook: ^8.3.3 - - '@storybook/react-dom-shim@8.3.3': - resolution: {integrity: sha512-0dPC9K7+K5+X/bt3GwYmh+pCpisUyKVjWsI+PkzqGnWqaXFakzFakjswowIAIO1rf7wYZR591x3ehUAyL2bJiQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.3.3 - - '@storybook/react-dom-shim@8.4.7': - resolution: {integrity: sha512-6bkG2jvKTmWrmVzCgwpTxwIugd7Lu+2btsLAqhQSzDyIj2/uhMNp8xIMr/NBDtLgq3nomt9gefNa9xxLwk/OMg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.4.7 - - '@storybook/react-vite@8.3.3': - resolution: {integrity: sha512-vzOqVaA/rv+X5J17eWKxdZztMKEKfsCSP8pNNmrqXWxK3pSlW0fAPxtn1kw3UNxGtAv71pcqvaCUtTJKqI1PYA==} - engines: {node: '>=18.0.0'} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.3.3 - vite: ^4.0.0 || ^5.0.0 - - '@storybook/react@8.3.3': - resolution: {integrity: sha512-fHOW/mNqI+sZWttGOE32Q+rAIbN7/Oib091cmE8usOM0z0vPNpywUBtqC2cCQH39vp19bhTsQaSsTcoBSweAHw==} - engines: {node: '>=18.0.0'} - peerDependencies: - '@storybook/test': 8.3.3 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.3.3 - typescript: '>= 4.2.x' - peerDependenciesMeta: - '@storybook/test': - optional: true - typescript: - optional: true - - '@storybook/test-runner@0.13.0': - resolution: {integrity: sha512-QIbfgia/iBy7PeUIwCYtPcyeZCHd21ebaPoMNIsRfwUW+VC12J4iG8cGDfOE7MGbMVz1Uu0elAEBB8NGP/YBtQ==} - hasBin: true - - '@storybook/test@8.3.3': - resolution: {integrity: sha512-uZ8nMIovfI2ry989K2+cYAeEVD/3dpjj2+Rbmy7DiZWWVhFALfmqaTRkzZfShLmlH0TFv+rfcBPihGccBtw0FQ==} - peerDependencies: - storybook: ^8.3.3 - - '@storybook/testing-library@0.2.2': - resolution: {integrity: sha512-L8sXFJUHmrlyU2BsWWZGuAjv39Jl1uAqUHdxmN42JY15M4+XCMjGlArdCCjDe1wpTSW6USYISA9axjZojgtvnw==} - deprecated: In Storybook 8, this package functionality has been integrated to a new package called @storybook/test, which uses Vitest APIs for an improved experience. When upgrading to Storybook 8 with 'npx storybook@latest upgrade', you will get prompted and will get an automigration for the new package. Please migrate when you can. - - '@storybook/theming@8.3.3': - resolution: {integrity: sha512-gWJKetI6XJQgkrvvry4ez10+jLaGNCQKi5ygRPM9N+qrjA3BB8F2LCuFUTBuisa4l64TILDNjfwP/YTWV5+u5A==} - peerDependencies: - storybook: ^8.3.3 - - '@storybook/types@7.6.20': - resolution: {integrity: sha512-GncdY3x0LpbhmUAAJwXYtJDUQEwfF175gsjH0/fxPkxPoV7Sef9TM41jQLJW/5+6TnZoCZP/+aJZTJtq3ni23Q==} - - '@svgr/babel-plugin-add-jsx-attribute@8.0.0': - resolution: {integrity: sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==} - engines: {node: '>=14'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@svgr/babel-plugin-remove-jsx-attribute@8.0.0': - resolution: {integrity: sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==} - engines: {node: '>=14'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0': - resolution: {integrity: sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==} - engines: {node: '>=14'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0': - resolution: {integrity: sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==} - engines: {node: '>=14'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@svgr/babel-plugin-svg-dynamic-title@8.0.0': - resolution: {integrity: sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==} - engines: {node: '>=14'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@svgr/babel-plugin-svg-em-dimensions@8.0.0': - resolution: {integrity: sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==} - engines: {node: '>=14'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@svgr/babel-plugin-transform-react-native-svg@8.1.0': - resolution: {integrity: sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==} - engines: {node: '>=14'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@svgr/babel-plugin-transform-svg-component@8.0.0': - resolution: {integrity: sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==} - engines: {node: '>=12'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@svgr/babel-preset@8.1.0': - resolution: {integrity: sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==} - engines: {node: '>=14'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@svgr/core@8.1.0': - resolution: {integrity: sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==} - engines: {node: '>=14'} - - '@svgr/hast-util-to-babel-ast@8.0.0': - resolution: {integrity: sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==} - engines: {node: '>=14'} - - '@svgr/plugin-jsx@8.1.0': - resolution: {integrity: sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==} - engines: {node: '>=14'} - peerDependencies: - '@svgr/core': '*' - - '@svgr/plugin-svgo@8.1.0': - resolution: {integrity: sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==} - engines: {node: '>=14'} - peerDependencies: - '@svgr/core': '*' - - '@svgr/webpack@8.1.0': - resolution: {integrity: sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==} - engines: {node: '>=14'} - - '@swc-node/core@1.13.3': - resolution: {integrity: sha512-OGsvXIid2Go21kiNqeTIn79jcaX4l0G93X2rAnas4LFoDyA9wAwVK7xZdm+QsKoMn5Mus2yFLCc4OtX2dD/PWA==} - engines: {node: '>= 10'} - peerDependencies: - '@swc/core': '>= 1.4.13' - '@swc/types': '>= 0.1' - - '@swc-node/register@1.9.2': - resolution: {integrity: sha512-BBjg0QNuEEmJSoU/++JOXhrjWdu3PTyYeJWsvchsI0Aqtj8ICkz/DqlwtXbmZVZ5vuDPpTfFlwDBZe81zgShMA==} - peerDependencies: - '@swc/core': '>= 1.4.13' - typescript: '>= 4.3' - - '@swc-node/sourcemap-support@0.5.1': - resolution: {integrity: sha512-JxIvIo/Hrpv0JCHSyRpetAdQ6lB27oFYhv0PKCNf1g2gUXOjpeR1exrXccRxLMuAV5WAmGFBwRnNOJqN38+qtg==} - - '@swc/core-darwin-arm64@1.5.29': - resolution: {integrity: sha512-6F/sSxpHaq3nzg2ADv9FHLi4Fu2A8w8vP8Ich8gIl16D2htStlwnaPmCLjRswO+cFkzgVqy/l01gzNGWd4DFqA==} - engines: {node: '>=10'} - cpu: [arm64] - os: [darwin] - - '@swc/core-darwin-x64@1.5.29': - resolution: {integrity: sha512-rF/rXkvUOTdTIfoYbmszbSUGsCyvqACqy1VeP3nXONS+LxFl4bRmRcUTRrblL7IE5RTMCKUuPbqbQSE2hK7bqg==} - engines: {node: '>=10'} - cpu: [x64] - os: [darwin] - - '@swc/core-linux-arm-gnueabihf@1.5.29': - resolution: {integrity: sha512-2OAPL8iWBsmmwkjGXqvuUhbmmoLxS1xNXiMq87EsnCNMAKohGc7wJkdAOUL6J/YFpean/vwMWg64rJD4pycBeg==} - engines: {node: '>=10'} - cpu: [arm] - os: [linux] - - '@swc/core-linux-arm64-gnu@1.5.29': - resolution: {integrity: sha512-eH/Q9+8O5qhSxMestZnhuS1xqQMr6M7SolZYxiXJqxArXYILLCF+nq2R9SxuMl0CfjHSpb6+hHPk/HXy54eIRA==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - - '@swc/core-linux-arm64-musl@1.5.29': - resolution: {integrity: sha512-TERh2OICAJz+SdDIK9+0GyTUwF6r4xDlFmpoiHKHrrD/Hh3u+6Zue0d7jQ/he/i80GDn4tJQkHlZys+RZL5UZg==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - - '@swc/core-linux-x64-gnu@1.5.29': - resolution: {integrity: sha512-WMDPqU7Ji9dJpA+Llek2p9t7pcy7Bob8ggPUvgsIlv3R/eesF9DIzSbrgl6j3EAEPB9LFdSafsgf6kT/qnvqFg==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - - '@swc/core-linux-x64-musl@1.5.29': - resolution: {integrity: sha512-DO14glwpdKY4POSN0201OnGg1+ziaSVr6/RFzuSLggshwXeeyVORiHv3baj7NENhJhWhUy3NZlDsXLnRFkmhHQ==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - - '@swc/core-win32-arm64-msvc@1.5.29': - resolution: {integrity: sha512-V3Y1+a1zG1zpYXUMqPIHEMEOd+rHoVnIpO/KTyFwAmKVu8v+/xPEVx/AGoYE67x4vDAAvPQrKI3Aokilqa5yVg==} - engines: {node: '>=10'} - cpu: [arm64] - os: [win32] - - '@swc/core-win32-ia32-msvc@1.5.29': - resolution: {integrity: sha512-OrM6yfXw4wXhnVFosOJzarw0Fdz5Y0okgHfn9oFbTPJhoqxV5Rdmd6kXxWu2RiVKs6kGSJFZXHDeUq2w5rTIMg==} - engines: {node: '>=10'} - cpu: [ia32] - os: [win32] - - '@swc/core-win32-x64-msvc@1.5.29': - resolution: {integrity: sha512-eD/gnxqKyZQQR0hR7TMkIlJ+nCF9dzYmVVNbYZWuA1Xy94aBPUsEk3Uw3oG7q6R3ErrEUPP0FNf2ztEnv+I+dw==} - engines: {node: '>=10'} - cpu: [x64] - os: [win32] - - '@swc/core@1.5.29': - resolution: {integrity: sha512-nvTtHJI43DUSOAf3h9XsqYg8YXKc0/N4il9y4j0xAkO0ekgDNo+3+jbw6MInawjKJF9uulyr+f5bAutTsOKVlw==} - engines: {node: '>=10'} - peerDependencies: - '@swc/helpers': '*' - peerDependenciesMeta: - '@swc/helpers': - optional: true - - '@swc/counter@0.1.3': - resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - - '@swc/helpers@0.5.13': - resolution: {integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==} - - '@swc/jest@0.2.36': - resolution: {integrity: sha512-8X80dp81ugxs4a11z1ka43FPhP+/e+mJNXJSxiNYk8gIX/jPBtY4gQTrKu/KIoco8bzKuPI5lUxjfLiGsfvnlw==} - engines: {npm: '>= 7.0.0'} - peerDependencies: - '@swc/core': '*' - - '@swc/types@0.1.12': - resolution: {integrity: sha512-wBJA+SdtkbFhHjTMYH+dEH1y4VpfGdAc2Kw/LK09i9bXd/K6j6PkDcFCEzb6iVfZMkPRrl/q0e3toqTAJdkIVA==} - - '@testing-library/dom@10.4.0': - resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} - engines: {node: '>=18'} - - '@testing-library/dom@9.3.4': - resolution: {integrity: sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==} - engines: {node: '>=14'} - - '@testing-library/jest-dom@6.5.0': - resolution: {integrity: sha512-xGGHpBXYSHUUr6XsKBfs85TWlYKpTc37cSBBVrXcib2MkHLboWlkClhWF37JKlDb9KEq3dHs+f2xR7XJEWGBxA==} - engines: {node: '>=14', npm: '>=6', yarn: '>=1'} - - '@testing-library/jest-native@5.4.3': - resolution: {integrity: sha512-/sSDGaOuE+PJ1Z9Kp4u7PQScSVVXGud59I/qsBFFJvIbcn4P6yYw6cBnBmbPF+X9aRIsTJRDl6gzw5ZkJNm66w==} - peerDependencies: - react: '>=16.0.0' - react-native: '>=0.59' - react-test-renderer: '>=16.0.0' - - '@testing-library/react-native@12.5.3': - resolution: {integrity: sha512-wSaplzjx51OVJI7MU8Mi2kxwfW0dYETn3jqSVHxtIXmEnmlWXk6f69sEaBbzdp6iDzhFB5E6rDWveqf5V/ap2A==} - peerDependencies: - jest: '>=28.0.0' - react: '>=16.8.0' - react-native: '>=0.59' - react-test-renderer: '>=16.8.0' - peerDependenciesMeta: - jest: - optional: true - - '@testing-library/react@15.0.6': - resolution: {integrity: sha512-UlbazRtEpQClFOiYp+1BapMT+xyqWMnE+hh9tn5DQ6gmlE7AIZWcGpzZukmDZuFk3By01oiqOf8lRedLS4k6xQ==} - engines: {node: '>=18'} - peerDependencies: - '@types/react': ^18.0.0 - react: ^18.0.0 - react-dom: ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@testing-library/user-event@14.5.2': - resolution: {integrity: sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==} - engines: {node: '>=12', npm: '>=6'} - peerDependencies: - '@testing-library/dom': '>=7.21.4' - - '@tootallnate/once@2.0.0': - resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} - engines: {node: '>= 10'} - - '@trysound/sax@0.2.0': - resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} - engines: {node: '>=10.13.0'} - - '@tsconfig/node10@1.0.11': - resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} - - '@tsconfig/node12@1.0.11': - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - - '@tsconfig/node14@1.0.3': - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - - '@tsconfig/node16@1.0.4': - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - - '@tybys/wasm-util@0.9.0': - resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} - - '@types/argparse@1.0.38': - resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} - - '@types/aria-query@5.0.4': - resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} - - '@types/babel__core@7.20.5': - resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} - - '@types/babel__generator@7.6.8': - resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} - - '@types/babel__template@7.4.4': - resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - - '@types/babel__traverse@7.20.6': - resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} - - '@types/body-parser@1.19.5': - resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} - - '@types/connect@3.4.38': - resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} - - '@types/doctrine@0.0.9': - resolution: {integrity: sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==} - - '@types/escodegen@0.0.6': - resolution: {integrity: sha512-AjwI4MvWx3HAOaZqYsjKWyEObT9lcVV0Y0V8nXo6cXzN8ZiMxVhf6F3d/UNvXVGKrEzL/Dluc5p+y9GkzlTWig==} - - '@types/eslint-visitor-keys@1.0.0': - resolution: {integrity: sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==} - - '@types/estree@0.0.39': - resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} - - '@types/estree@0.0.51': - resolution: {integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==} - - '@types/estree@1.0.5': - resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - - '@types/estree@1.0.6': - resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} - - '@types/express-serve-static-core@4.19.6': - resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} - - '@types/express@4.17.21': - resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} - - '@types/find-cache-dir@3.2.1': - resolution: {integrity: sha512-frsJrz2t/CeGifcu/6uRo4b+SzAwT4NYCVPu1GN8IB9XTzrpPkGuV0tmh9mN+/L0PklAlsC3u5Fxt0ju00LXIw==} - - '@types/fs-extra@8.1.5': - resolution: {integrity: sha512-0dzKcwO+S8s2kuF5Z9oUWatQJj5Uq/iqphEtE3GQJVRRYm/tD1LglU2UnXi2A8jLq5umkGouOXOR9y0n613ZwQ==} - - '@types/glob@7.2.0': - resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} - - '@types/graceful-fs@4.1.9': - resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} - - '@types/http-errors@2.0.4': - resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} - - '@types/http-proxy@1.17.15': - resolution: {integrity: sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==} - - '@types/istanbul-lib-coverage@2.0.6': - resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} - - '@types/istanbul-lib-report@3.0.3': - resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} - - '@types/istanbul-reports@1.1.2': - resolution: {integrity: sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==} - - '@types/istanbul-reports@3.0.4': - resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} - - '@types/jest@25.2.3': - resolution: {integrity: sha512-JXc1nK/tXHiDhV55dvfzqtmP4S3sy3T3ouV2tkViZgxY/zeUkcpQcQPGRlgF4KmWzWW5oiWYSZwtCB+2RsE4Fw==} - - '@types/jest@28.1.3': - resolution: {integrity: sha512-Tsbjk8Y2hkBaY/gJsataeb4q9Mubw9EOz7+4RjPkzD5KjTvHHs7cpws22InaoXxAVAhF5HfFbzJjo6oKWqSZLw==} - - '@types/jest@29.5.14': - resolution: {integrity: sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==} - - '@types/jsdom@20.0.1': - resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} - - '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - - '@types/json5@0.0.29': - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - - '@types/mdx@2.0.13': - resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} - - '@types/mime@1.3.5': - resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} - - '@types/minimatch@5.1.2': - resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} - - '@types/node-fetch@2.6.11': - resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==} - - '@types/node-forge@1.3.11': - resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} - - '@types/node@12.20.55': - resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - - '@types/node@16.18.109': - resolution: {integrity: sha512-PxPCTJDDwBrigapKYIRHegNOMfKTeQUkZMJt+mkEwHf2rskRylueIqaHyAHfcpmFIFi7wq7f/X8Se/5hIVREvg==} - - '@types/node@18.16.9': - resolution: {integrity: sha512-IeB32oIV4oGArLrd7znD2rkHQ6EDCM+2Sr76dJnrHwv9OHBTTM6nuDLK9bmikXzPa0ZlWMWtRGo/Uw4mrzQedA==} - - '@types/node@22.7.3': - resolution: {integrity: sha512-qXKfhXXqGTyBskvWEzJZPUxSslAiLaB6JGP1ic/XTH9ctGgzdgYguuLP1C601aRTSDNlLb0jbKqXjZ48GNraSA==} - - '@types/normalize-package-data@2.4.4': - resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} - - '@types/parse-json@4.0.2': - resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} - - '@types/prettier@1.19.1': - resolution: {integrity: sha512-5qOlnZscTn4xxM5MeGXAMOsIOIKIbh9e85zJWfBRVPlRMEVawzoPhINYbRGkBZCI8LxvBe7tJCdWiarA99OZfQ==} - - '@types/prettier@2.7.3': - resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} - - '@types/pretty-hrtime@1.0.3': - resolution: {integrity: sha512-nj39q0wAIdhwn7DGUyT9irmsKK1tV0bd5WFEhgpqNTMFZ8cE+jieuTphCW0tfdm47S2zVT5mr09B28b1chmQMA==} - - '@types/prop-types@15.7.13': - resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==} - - '@types/qs@6.9.16': - resolution: {integrity: sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A==} - - '@types/range-parser@1.2.7': - resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} - - '@types/react-dom@18.3.0': - resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==} - - '@types/react-native@0.73.0': - resolution: {integrity: sha512-6ZRPQrYM72qYKGWidEttRe6M5DZBEV5F+MHMHqd4TTYx0tfkcdrUFGdef6CCxY0jXU7wldvd/zA/b0A/kTeJmA==} - deprecated: This is a stub types definition. react-native provides its own type definitions, so you do not need this installed. - - '@types/react@17.0.82': - resolution: {integrity: sha512-wTW8Lu/PARGPFE8tOZqCvprOKg5sen/2uS03yKn2xbCDFP9oLncm7vMDQ2+dEQXHVIXrOpW6u72xUXEXO0ypSw==} - - '@types/react@18.3.1': - resolution: {integrity: sha512-V0kuGBX3+prX+DQ/7r2qsv1NsdfnCLnTgnRJ1pYnxykBhGMz+qj+box5lq7XsO5mtZsBqpjwwTu/7wszPfMBcw==} - - '@types/resolve@1.17.1': - resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} - - '@types/resolve@1.20.2': - resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} - - '@types/resolve@1.20.6': - resolution: {integrity: sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==} - - '@types/scheduler@0.16.8': - resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} - - '@types/semver@7.5.8': - resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} - - '@types/send@0.17.4': - resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} - - '@types/serve-static@1.15.7': - resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} - - '@types/stack-utils@1.0.1': - resolution: {integrity: sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==} - - '@types/stack-utils@2.0.3': - resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} - - '@types/tough-cookie@4.0.5': - resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} - - '@types/uuid@9.0.8': - resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} - - '@types/wait-on@5.3.4': - resolution: {integrity: sha512-EBsPjFMrFlMbbUFf9D1Fp+PAB2TwmUn7a3YtHyD9RLuTIk1jDd8SxXVAoez2Ciy+8Jsceo2MYEYZzJ/DvorOKw==} - - '@types/yargs-parser@21.0.3': - resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - - '@types/yargs@15.0.19': - resolution: {integrity: sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==} - - '@types/yargs@16.0.9': - resolution: {integrity: sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==} - - '@types/yargs@17.0.33': - resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} - - '@typescript-eslint/eslint-plugin@2.34.0': - resolution: {integrity: sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} - peerDependencies: - '@typescript-eslint/parser': ^2.0.0 - eslint: ^5.0.0 || ^6.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/eslint-plugin@8.7.0': - resolution: {integrity: sha512-RIHOoznhA3CCfSTFiB6kBGLQtB/sox+pJ6jeFu6FxJvqL8qRxq/FfGO/UhsGgQM9oGdXkV4xUgli+dt26biB6A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 - eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/experimental-utils@2.34.0': - resolution: {integrity: sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} - peerDependencies: - eslint: '*' - - '@typescript-eslint/parser@2.34.0': - resolution: {integrity: sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} - peerDependencies: - eslint: ^5.0.0 || ^6.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/parser@8.7.0': - resolution: {integrity: sha512-lN0btVpj2unxHlNYLI//BQ7nzbMJYBVQX5+pbNXvGYazdlgYonMn4AhhHifQ+J4fGRYA/m1DjaQjx+fDetqBOQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/scope-manager@8.7.0': - resolution: {integrity: sha512-87rC0k3ZlDOuz82zzXRtQ7Akv3GKhHs0ti4YcbAJtaomllXoSO8hi7Ix3ccEvCd824dy9aIX+j3d2UMAfCtVpg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/type-utils@8.7.0': - resolution: {integrity: sha512-tl0N0Mj3hMSkEYhLkjREp54OSb/FI6qyCzfiiclvJvOqre6hsZTGSnHtmFLDU8TIM62G7ygEa1bI08lcuRwEnQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/types@8.7.0': - resolution: {integrity: sha512-LLt4BLHFwSfASHSF2K29SZ+ZCsbQOM+LuarPjRUuHm+Qd09hSe3GCeaQbcCr+Mik+0QFRmep/FyZBO6fJ64U3w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/typescript-estree@2.34.0': - resolution: {integrity: sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/typescript-estree@8.7.0': - resolution: {integrity: sha512-MC8nmcGHsmfAKxwnluTQpNqceniT8SteVwd2voYlmiSWGOtjvGXdPl17dYu2797GVscK30Z04WRM28CrKS9WOg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/utils@8.7.0': - resolution: {integrity: sha512-ZbdUdwsl2X/s3CiyAu3gOlfQzpbuG3nTWKPoIvAu1pu5r8viiJvv2NPN2AqArL35NCYtw/lrPPfM4gxrMLNLPw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - - '@typescript-eslint/visitor-keys@8.7.0': - resolution: {integrity: sha512-b1tx0orFCCh/THWPQa2ZwWzvOeyzzp36vkJYOpVg0u8UVOIsfVrnuC9FqAw9gRKn+rG2VmWQ/zDJZzkxUnj/XQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@verdaccio/auth@8.0.0-next-8.1': - resolution: {integrity: sha512-sPmHdnYuRSMgABCsTJEfz8tb/smONsWVg0g4KK2QycyYZ/A+RwZLV1JLiQb4wzu9zvS0HSloqWqkWlyNHW3mtw==} - engines: {node: '>=18'} - - '@verdaccio/commons-api@10.2.0': - resolution: {integrity: sha512-F/YZANu4DmpcEV0jronzI7v2fGVWkQ5Mwi+bVmV+ACJ+EzR0c9Jbhtbe5QyLUuzR97t8R5E/Xe53O0cc2LukdQ==} - engines: {node: '>=8'} - - '@verdaccio/config@8.0.0-next-8.1': - resolution: {integrity: sha512-goDVOH4e8xMUxjHybJpi5HwIecVFqzJ9jeNFrRUgtUUn0PtFuNMHgxOeqDKRVboZhc5HK90yed8URK/1O6VsUw==} - engines: {node: '>=14'} - - '@verdaccio/core@8.0.0-next-8.1': - resolution: {integrity: sha512-kQRCB2wgXEh8H88G51eQgAFK9IxmnBtkQ8sY5FbmB6PbBkyHrbGcCp+2mtRqqo36j0W1VAlfM3XzoknMy6qQnw==} - engines: {node: '>=14'} - - '@verdaccio/file-locking@10.3.1': - resolution: {integrity: sha512-oqYLfv3Yg3mAgw9qhASBpjD50osj2AX4IwbkUtyuhhKGyoFU9eZdrbeW6tpnqUnj6yBMtAPm2eGD4BwQuX400g==} - engines: {node: '>=12'} - - '@verdaccio/file-locking@13.0.0-next-8.0': - resolution: {integrity: sha512-28XRwpKiE3Z6KsnwE7o8dEM+zGWOT+Vef7RVJyUlG176JVDbGGip3HfCmFioE1a9BklLyGEFTu6D69BzfbRkzA==} - engines: {node: '>=12'} - - '@verdaccio/loaders@8.0.0-next-8.1': - resolution: {integrity: sha512-mqGCUBs862g8mICZwX8CG92p1EZ1Un0DJ2DB7+iVu2TYaEeKoHoIdafabVdiYrbOjLcAOOBrMKE1Wnn14eLxpA==} - engines: {node: '>=18'} - - '@verdaccio/local-storage-legacy@11.0.2': - resolution: {integrity: sha512-7AXG7qlcVFmF+Nue2oKaraprGRtaBvrQIOvc/E89+7hAe399V01KnZI6E/ET56u7U9fq0MSlp92HBcdotlpUXg==} - engines: {node: '>=12'} - - '@verdaccio/logger-7@8.0.0-next-8.1': - resolution: {integrity: sha512-V+/B1Wnct3IZ90q6HkI1a3dqbS0ds7s/5WPrS5cmBeLEw78/OGgF76XkhI2+lett7Un1CjVow7mcebOWcZ/Sqw==} - engines: {node: '>=12'} - - '@verdaccio/logger-commons@8.0.0-next-8.1': - resolution: {integrity: sha512-jCge//RT4uaK7MarhpzcJeJ5Uvtu/DbJ1wvJQyGiFe+9AvxDGm3EUFXvawLFZ0lzYhmLt1nvm7kevcc3vOm2ZQ==} - engines: {node: '>=12'} - - '@verdaccio/logger-prettify@8.0.0-next-8.0': - resolution: {integrity: sha512-7mAFHZF2NPTubrOXYp2+fbMjRW5MMWXMeS3LcpupMAn5uPp6jkKEM8NC4IVJEevC5Ph4vPVZqpoPDpgXHEaV3Q==} - engines: {node: '>=12'} - - '@verdaccio/logger@8.0.0-next-8.1': - resolution: {integrity: sha512-w5kR0/umQkfH2F4PK5Fz9T6z3xz+twewawKLPTUfAgrVAOiWxcikGhhcHWhSGiJ0lPqIa+T0VYuLWMeVeDirGw==} - engines: {node: '>=18'} - - '@verdaccio/middleware@8.0.0-next-8.1': - resolution: {integrity: sha512-GpAdJYky1WmOERpxPoCkVSwTTJIsVAjqf2a2uQNvi7R3UZhs059JKhWcZjJMVCGV0uz9xgQvtb3DEuYGHqyaOg==} - engines: {node: '>=12'} - - '@verdaccio/search-indexer@8.0.0-next-8.0': - resolution: {integrity: sha512-VS9axVt8XAueiPceVCgaj9nlvYj5s/T4MkAILSf2rVZeFFOMUyxU3mddUCajSHzL+YpqCuzLLL9865sRRzOJ9w==} - engines: {node: '>=12'} - - '@verdaccio/signature@8.0.0-next-8.0': - resolution: {integrity: sha512-klcc2UlCvQxXDV65Qewo2rZOfv7S1y8NekS/8uurSaCTjU35T+fz+Pbqz1S9XK9oQlMp4vCQ7w3iMPWQbvphEQ==} - engines: {node: '>=14'} - - '@verdaccio/streams@10.2.1': - resolution: {integrity: sha512-OojIG/f7UYKxC4dYX8x5ax8QhRx1b8OYUAMz82rUottCuzrssX/4nn5QE7Ank0DUSX3C9l/HPthc4d9uKRJqJQ==} - engines: {node: '>=12', npm: '>=5'} - - '@verdaccio/tarball@13.0.0-next-8.1': - resolution: {integrity: sha512-58uimU2Bqt9+s+9ixy7wK/nPCqbOXhhhr/MQjl+otIlsUhSeATndhFzEctz/W+4MhUDg0tUnE9HC2yeNHHAo1Q==} - engines: {node: '>=14'} - - '@verdaccio/ui-theme@8.0.0-next-8.1': - resolution: {integrity: sha512-9PxV8+jE2Tr+iy9DQW/bzny4YqOlW0mCZ9ct6jhcUW4GdfzU//gY2fBN/DDtQVmfbTy8smuj4Enyv5f0wCsnYg==} - - '@verdaccio/url@13.0.0-next-8.1': - resolution: {integrity: sha512-h6pkJf+YtogImKgOrmPP9UVG3p3gtb67gqkQU0bZnK+SEKQt6Rkek/QvtJ8MbmciagYS18bDhpI8DxqLHjDfZQ==} - engines: {node: '>=12'} - - '@verdaccio/utils@7.0.1-next-8.1': - resolution: {integrity: sha512-cyJdRrVa+8CS7UuIQb3K3IJFjMe64v38tYiBnohSmhRbX7dX9IT3jWbjrwkqWh4KeS1CS6BYENrGG1evJ2ggrQ==} - engines: {node: '>=12'} - - '@vitejs/plugin-react@4.3.1': - resolution: {integrity: sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - vite: ^4.2.0 || ^5.0.0 - - '@vitest/coverage-v8@1.6.0': - resolution: {integrity: sha512-KvapcbMY/8GYIG0rlwwOKCVNRc0OL20rrhFkg/CHNzncV03TE2XWvO5w9uZYoxNiMEBacAJt3unSOiZ7svePew==} - peerDependencies: - vitest: 1.6.0 - - '@vitest/expect@1.6.0': - resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} - - '@vitest/expect@2.0.5': - resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==} - - '@vitest/pretty-format@2.0.5': - resolution: {integrity: sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==} - - '@vitest/pretty-format@2.1.1': - resolution: {integrity: sha512-SjxPFOtuINDUW8/UkElJYQSFtnWX7tMksSGW0vfjxMneFqxVr8YJ979QpMbDW7g+BIiq88RAGDjf7en6rvLPPQ==} - - '@vitest/runner@1.6.0': - resolution: {integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==} - - '@vitest/snapshot@1.6.0': - resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==} - - '@vitest/spy@1.6.0': - resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} - - '@vitest/spy@2.0.5': - resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==} - - '@vitest/ui@1.6.0': - resolution: {integrity: sha512-k3Lyo+ONLOgylctiGovRKy7V4+dIN2yxstX3eY5cWFXH6WP+ooVX79YSyi0GagdTQzLmT43BF27T0s6dOIPBXA==} - peerDependencies: - vitest: 1.6.0 - - '@vitest/utils@1.6.0': - resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} - - '@vitest/utils@2.0.5': - resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==} - - '@vitest/utils@2.1.1': - resolution: {integrity: sha512-Y6Q9TsI+qJ2CC0ZKj6VBb+T8UPz593N113nnUykqwANqhgf3QkZeHFlusgKLTqrnVHbj/XDKZcDHol+dxVT+rQ==} - - '@volar/language-core@1.11.1': - resolution: {integrity: sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==} - - '@volar/source-map@1.11.1': - resolution: {integrity: sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==} - - '@volar/typescript@1.11.1': - resolution: {integrity: sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==} - - '@vue/compiler-core@3.5.8': - resolution: {integrity: sha512-Uzlxp91EPjfbpeO5KtC0KnXPkuTfGsNDeaKQJxQN718uz+RqDYarEf7UhQJGK+ZYloD2taUbHTI2J4WrUaZQNA==} - - '@vue/compiler-dom@3.5.8': - resolution: {integrity: sha512-GUNHWvoDSbSa5ZSHT9SnV5WkStWfzJwwTd6NMGzilOE/HM5j+9EB9zGXdtu/fCNEmctBqMs6C9SvVPpVPuk1Eg==} - - '@vue/language-core@1.8.27': - resolution: {integrity: sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@vue/shared@3.5.8': - resolution: {integrity: sha512-mJleSWbAGySd2RJdX1RBtcrUBX6snyOc0qHpgk3lGi4l9/P/3ny3ELqFWqYdkXIwwNN/kdm8nD9ky8o6l/Lx2A==} - - '@webassemblyjs/ast@1.12.1': - resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} - - '@webassemblyjs/floating-point-hex-parser@1.11.6': - resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} - - '@webassemblyjs/helper-api-error@1.11.6': - resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} - - '@webassemblyjs/helper-buffer@1.12.1': - resolution: {integrity: sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==} - - '@webassemblyjs/helper-numbers@1.11.6': - resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} - - '@webassemblyjs/helper-wasm-bytecode@1.11.6': - resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} - - '@webassemblyjs/helper-wasm-section@1.12.1': - resolution: {integrity: sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==} - - '@webassemblyjs/ieee754@1.11.6': - resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} - - '@webassemblyjs/leb128@1.11.6': - resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} - - '@webassemblyjs/utf8@1.11.6': - resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} - - '@webassemblyjs/wasm-edit@1.12.1': - resolution: {integrity: sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==} - - '@webassemblyjs/wasm-gen@1.12.1': - resolution: {integrity: sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==} - - '@webassemblyjs/wasm-opt@1.12.1': - resolution: {integrity: sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==} - - '@webassemblyjs/wasm-parser@1.12.1': - resolution: {integrity: sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==} - - '@webassemblyjs/wast-printer@1.12.1': - resolution: {integrity: sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==} - - '@x-oasis/batchinate-last@0.1.35': - resolution: {integrity: sha512-+YELtwndkTu3mtL8pKKJvJXa0b6PlPpWh6lbwtiDvMSlzz2lTC57AAt9HDq6cSlIFzEG7AUcPagSKt9EwyFF2Q==} - - '@x-oasis/batchinator@0.1.35': - resolution: {integrity: sha512-2FPn56U+zzV+G0Fpuut+DF8WSROBy19Rw1YuWuyrwGyL/v29ujvdh+AUwyywcITSJk/OC15ghfPMy1oLw/y6/w==} - - '@x-oasis/capitalize@0.1.35': - resolution: {integrity: sha512-UcFOothNKAYkyAvpTkzmrRWIrZdwC1atyKXH03RyJdoCSJUN88CNUHnxn2h2+K+opOiZxBmMGgACwUeKOVJayg==} - - '@x-oasis/default-boolean-value@0.1.35': - resolution: {integrity: sha512-XAauacjZlfYgGcm0yl3JmAsVqaC7eYnDuT9DkZktlkYaMhlwWWEPfwEjETTRjNpqRPWSNnw8WvjTNcGuo4aRQw==} - - '@x-oasis/default-value@0.1.35': - resolution: {integrity: sha512-SmdgeZ1hAeK7naG+ut26OhOIZBAE+v2z5EdfooJskr/nAaLL81ZJZYDCMBvmnpS613Ud/9Q2+JEQnfDCJJbZmA==} - - '@x-oasis/find-last-index@0.1.35': - resolution: {integrity: sha512-jGG84OPhKEw4K0ECkgZbutnt1WPRecxgh3O2oJwX2algDmMQAWjRfol+6tg5kjpiml0QTFi9nN/Teakmr3eQ0w==} - - '@x-oasis/get-map-key-by-value@0.1.35': - resolution: {integrity: sha512-CAyHbBVJqlJLDu/dXgrRXFl3jfLwBeiSc/j/zUE1SXDoWF4BqWZlz5MgSUllFfbnafjUW2jMlZdaA+VJpJp9Kg==} - - '@x-oasis/heap@0.1.35': - resolution: {integrity: sha512-KyHhox7rnQNsydBAxNYQltbEFqVKODTupfTCI9qth4dPIwWh6tLtuGL6PBGFXzAPrB/4NMh186E6aE+zoeXBBg==} - - '@x-oasis/integer-buffer-set@0.1.36': - resolution: {integrity: sha512-kpaImsAq1c7+aPS735A7XSO6EujLNw+Fzjp8GY072LRmNIuVuP4r65DySAEu3JVxmL0x2et3WOM3XZiSL7HcWw==} - - '@x-oasis/invariant@0.1.35': - resolution: {integrity: sha512-E2VNNgMXAfmmHWqA29zkap0mpUi4tc3Kq21hq5UYS0IQcweZJvO+KeVCIf9ADAre8cW7Sx5yBLEP6aTlSm1dnw==} - - '@x-oasis/is-clamped@0.1.35': - resolution: {integrity: sha512-9NKBqYefUnCpJrA4hc/2//jCjYLVCLrcAIraPH750+88fKjQg6ddXEImvV/+xhz050OJcm4oBq7KaBQo0RWxaw==} - - '@x-oasis/is-object@0.1.35': - resolution: {integrity: sha512-Dqb8kPyTHQNtKiXRpxJSHRbSxar6iKihn88NRGflss/Xu1CnFNbyShUH6i2IH5UJCO4zEQHiemAHWySnA4Jetg==} - - '@x-oasis/is-ref@0.1.35': - resolution: {integrity: sha512-yfnDNUGuZlYZNToj2eynYu4iTGmhRLJ+LpreksJcYW0eoJnh3PLm2fEIw4Vloq72j79OXwwxEOaRbeZkH1aDFQ==} - - '@x-oasis/is@0.1.39': - resolution: {integrity: sha512-va/6+C33k3/Au24WJwJwuS1oy5JA+Sd7hb0ohb0jjRoTzEA3kb5TQGl6gnhsD84ZDEf5jMaNvTz6KCizAP6VVQ==} - - '@x-oasis/layout-equal@0.1.35': - resolution: {integrity: sha512-FjzliFGkzsoi3K3aThxKi9zZOVsgw40dgRxADeE4UlhUxhnqkTi2cXxvrExurR1jJNZkz3vwOE7Xu1ssXOIBwQ==} - - '@x-oasis/noop@0.1.35': - resolution: {integrity: sha512-HOzkGw1JVLWThPWGQYGCmcT8bf+3DbiXIkjCpS4lv0kR3hjTCF3z2Fl966ph3Qtny0rW9RQeBtMknchWUnXcNw==} - - '@x-oasis/omit@0.1.35': - resolution: {integrity: sha512-pG3R9b1OSVIDKZnApclMKiJmVHuuRQd10zB6Y6xPzW9rDjO+kuk0mPz7eYMv5lK+Ko3ZImBYJV+pvC6441aVYw==} - - '@x-oasis/prefix-interval-tree@0.2.4': - resolution: {integrity: sha512-oE4dasiGw78tmh/YFh9ezsbukO+4+9wuiuxR9jTgnSC6qhVZaSmJmXOFZyKHsz2ddsqh/CcoBgEAUeQc3wpchw==} - - '@x-oasis/recycler@0.1.37': - resolution: {integrity: sha512-R7ASQzTnjqiQF6iymFKAvgQFjPyz7lZOETgDOLXK/yB0++iY2v1vLbT/tWTuxeKIpb1zX41ut3j/D5E/5/WF0w==} - - '@x-oasis/resolve-changed@0.1.35': - resolution: {integrity: sha512-wgGsN6Bth81LlcsjB4jX3jxaluRHYiS9pTRaHw+m8D9WGwSnwNuL4feN/9JdEr3S0bOGiAf7ISN+t5rEQF5Urg==} - - '@x-oasis/return-hook@0.1.35': - resolution: {integrity: sha512-HDg0r86+/gBVkqtDgqrsvCSb8LykNhSpqb5dhEDdgP/ZRdT5FOeZz8XfXGa6Fze1XhbPgS0Dq6Ej2zJaS/FGlA==} - - '@x-oasis/select-value@0.1.35': - resolution: {integrity: sha512-iB14Ja6JWado+Ndj0vkqn6qBysvpSQjOol9NCsKOiqiWqvx4FNV7LSWkCXdYFTBtNxkVyOeTfZNFVfvKBmf9yg==} - - '@x-oasis/shallow-array-equal@0.1.35': - resolution: {integrity: sha512-RLcfd2YxvBcYIyOO1XnRu35obK61Dow894eQxUcWWP3XRTaK5lMbMwhDXfjAR/MeoC0+zKQruOhGgS24u1zGew==} - - '@x-oasis/shallow-equal@0.1.38': - resolution: {integrity: sha512-TXHqtJ7TXn/QORGH38sOmJ1bgvJKSUrRDKVvkcUyrjdJLd29P4szwYmPZ7E9HWMBj9FRBFTVWOJSagESgyO3Ew==} - - '@x-oasis/throttle@0.1.35': - resolution: {integrity: sha512-L/uiT2TR4MLdP2ucEE6eh4Tan94ePJ6/fA2AGkEwFc4geV7+OWzVydl89JJtVsG3N7/OV/NYp/9vfyZqtbt4gA==} - - '@x-oasis/to-string@0.1.35': - resolution: {integrity: sha512-v6pNsaZ7+UGz995stUEe7YrDRbVIAUcybD70NePXaZiEqhe0TErTWFQ55K8I9ii3UAGfxP4/7twT+1iSacaxNw==} - - '@x-oasis/unique-array-object@0.1.35': - resolution: {integrity: sha512-MxSexUwtrLDwDPF/qHrtNmHoxtE61Kac1J4Me1l2uwiv6bgdII4ZFGCVClsxIFtry1+2x7kS+pRnRHP/k37gJw==} - - '@xtuc/ieee754@1.2.0': - resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} - - '@xtuc/long@4.2.2': - resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - - '@yarnpkg/lockfile@1.1.0': - resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} - - '@yarnpkg/parsers@3.0.0-rc.46': - resolution: {integrity: sha512-aiATs7pSutzda/rq8fnuPwTglyVwjM22bNnK2ZgjrpAjQHSSl3lztd2f9evst1W/qnC58DRz7T7QndUDumAR4Q==} - engines: {node: '>=14.15.0'} - - '@zkochan/js-yaml@0.0.7': - resolution: {integrity: sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==} - hasBin: true - - JSONStream@1.3.5: - resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} - hasBin: true - - abab@2.0.6: - resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} - deprecated: Use your platform's native atob() and btoa() methods instead - - abort-controller@3.0.0: - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} - engines: {node: '>=6.5'} - - accepts@1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} - engines: {node: '>= 0.6'} - - acorn-globals@4.3.4: - resolution: {integrity: sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==} - - acorn-globals@7.0.1: - resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} - - acorn-import-attributes@1.9.5: - resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} - peerDependencies: - acorn: ^8 - - acorn-jsx@5.3.2: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - - acorn-walk@6.2.0: - resolution: {integrity: sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==} - engines: {node: '>=0.4.0'} - - acorn-walk@7.2.0: - resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} - engines: {node: '>=0.4.0'} - - acorn-walk@8.3.4: - resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} - engines: {node: '>=0.4.0'} - - acorn@6.4.2: - resolution: {integrity: sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==} - engines: {node: '>=0.4.0'} - hasBin: true - - acorn@7.4.1: - resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} - engines: {node: '>=0.4.0'} - hasBin: true - - acorn@8.12.1: - resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} - engines: {node: '>=0.4.0'} - hasBin: true - - address@1.2.2: - resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} - engines: {node: '>= 10.0.0'} - - adm-zip@0.5.16: - 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'} - - aggregate-error@3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} - - ajv-keywords@3.5.2: - resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} - peerDependencies: - ajv: ^6.9.1 - - ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - - ajv@8.17.1: - resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - - anser@1.4.10: - resolution: {integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==} - - ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} - - ansi-escapes@3.2.0: - resolution: {integrity: sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==} - engines: {node: '>=4'} - - ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} - - ansi-escapes@5.0.0: - resolution: {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==} - engines: {node: '>=12'} - - ansi-escapes@6.2.1: - resolution: {integrity: sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==} - engines: {node: '>=14.16'} - - ansi-fragments@0.2.1: - resolution: {integrity: sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==} - - ansi-regex@3.0.1: - resolution: {integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==} - engines: {node: '>=4'} - - 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'} - - ansi-regex@6.1.0: - resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} - engines: {node: '>=12'} - - ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - - any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - - anymatch@2.0.0: - resolution: {integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - apache-md5@1.1.8: - resolution: {integrity: sha512-FCAJojipPn0bXjuEpjOOOMN8FZDkxfWWp4JGN9mifU2IhxvKyXZYqpzPHdnTSUpmPDy+tsslB6Z1g+Vg6nVbYA==} - engines: {node: '>=8'} - - app-root-dir@1.0.2: - resolution: {integrity: sha512-jlpIfsOoNoafl92Sz//64uQHGSyMrD2vYG5d8o2a4qGvyNCvXur7bzIsWtAC/6flI2RYAp3kv8rsfBtaLm7w0g==} - - appdirsjs@1.2.7: - resolution: {integrity: sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==} - - append-transform@2.0.0: - resolution: {integrity: sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==} - engines: {node: '>=8'} - - archy@1.0.0: - resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} - - 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==} - - aria-query@5.1.3: - resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} - - aria-query@5.3.0: - resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} - - aria-query@5.3.2: - resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} - engines: {node: '>= 0.4'} - - arr-diff@4.0.0: - resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==} - engines: {node: '>=0.10.0'} - - arr-flatten@1.1.0: - resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} - engines: {node: '>=0.10.0'} - - arr-union@3.1.0: - resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} - engines: {node: '>=0.10.0'} - - array-buffer-byte-length@1.0.1: - resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} - engines: {node: '>= 0.4'} - - array-equal@1.0.2: - resolution: {integrity: sha512-gUHx76KtnhEgB3HOuFYiCm3FIdEs6ocM2asHvNTkfu/Y09qQVrrVVaOKENmS2KkSaGoxgXNqC+ZVtR/n0MOkSA==} - - array-flatten@1.1.1: - resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} - - array-includes@3.1.8: - resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} - engines: {node: '>= 0.4'} - - array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - - array-unique@0.3.2: - resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} - engines: {node: '>=0.10.0'} - - array.prototype.findlast@1.2.5: - resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} - engines: {node: '>= 0.4'} - - array.prototype.findlastindex@1.2.5: - resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} - engines: {node: '>= 0.4'} - - array.prototype.flat@1.3.2: - resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} - engines: {node: '>= 0.4'} - - array.prototype.flatmap@1.3.2: - resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} - engines: {node: '>= 0.4'} - - array.prototype.tosorted@1.1.4: - resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} - engines: {node: '>= 0.4'} - - arraybuffer.prototype.slice@1.0.3: - resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} - engines: {node: '>= 0.4'} - - asap@2.0.6: - resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - - asn1@0.2.6: - resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} - - assert-plus@1.0.0: - resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} - engines: {node: '>=0.8'} - - assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - - assertion-error@2.0.1: - resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} - engines: {node: '>=12'} - - assign-symbols@1.0.0: - resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} - engines: {node: '>=0.10.0'} - - ast-types-flow@0.0.7: - resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} - - ast-types-flow@0.0.8: - resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} - - ast-types@0.15.2: - resolution: {integrity: sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==} - engines: {node: '>=4'} - - ast-types@0.16.1: - resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} - engines: {node: '>=4'} - - astral-regex@1.0.0: - resolution: {integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==} - engines: {node: '>=4'} - - async-limiter@1.0.1: - resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} - - async@2.6.4: - resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} - - async@3.2.4: - resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} - - async@3.2.5: - resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} - - async@3.2.6: - resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} - - asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - - asyncro@3.0.0: - resolution: {integrity: sha512-nEnWYfrBmA3taTiuiOoZYmgJ/CNrSoQLeLs29SeLcPu60yaw/mHDBHV0iOZ051fTvsTHxpCY+gXibqT9wbQYfg==} - - at-least-node@1.0.0: - resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} - engines: {node: '>= 4.0.0'} - - atob@2.1.2: - resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} - engines: {node: '>= 4.5.0'} - hasBin: true - - atomic-sleep@1.0.0: - resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} - engines: {node: '>=8.0.0'} - - autoprefixer@10.4.20: - resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - - available-typed-arrays@1.0.7: - resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} - engines: {node: '>= 0.4'} - - aws-sign2@0.7.0: - resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} - - aws4@1.13.2: - resolution: {integrity: sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==} - - axe-core@4.10.0: - resolution: {integrity: sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==} - engines: {node: '>=4'} - - axios@0.21.4: - resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} - - axios@1.7.7: - resolution: {integrity: sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==} - - axobject-query@3.2.4: - resolution: {integrity: sha512-aPTElBrbifBU1krmZxGZOlBkslORe7Ll7+BDnI50Wy4LgOt69luMgevkDfTq1O/ZgprooPCtWpjCwKSZw/iZ4A==} - engines: {node: '>= 0.4'} - - axobject-query@4.1.0: - resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} - engines: {node: '>= 0.4'} - - b4a@1.6.7: - resolution: {integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==} - - babel-core@7.0.0-bridge.0: - resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - babel-eslint@10.1.0: - resolution: {integrity: sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==} - engines: {node: '>=6'} - deprecated: babel-eslint is now @babel/eslint-parser. This package will no longer receive updates. - peerDependencies: - eslint: '>= 4.12.1' - - babel-jest@25.5.1: - resolution: {integrity: sha512-9dA9+GmMjIzgPnYtkhBg73gOo/RHqPmLruP3BaGL4KEX3Dwz6pI8auSN8G8+iuEG90+GSswyKvslN+JYSaacaQ==} - engines: {node: '>= 8.3'} - peerDependencies: - '@babel/core': ^7.0.0 - - babel-jest@28.1.3: - resolution: {integrity: sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - peerDependencies: - '@babel/core': ^7.8.0 - - babel-jest@29.7.0: - resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.8.0 - - babel-plugin-annotate-pure-calls@0.4.0: - resolution: {integrity: sha512-oi4M/PWUJOU9ZyRGoPTfPMqdyMp06jbJAomd3RcyYuzUtBOddv98BqLm96Lucpi2QFoQHkdGQt0ACvw7VzVEQA==} - peerDependencies: - '@babel/core': ^6.0.0-0 || 7.x - - babel-plugin-const-enum@1.2.0: - resolution: {integrity: sha512-o1m/6iyyFnp9MRsK1dHF3bneqyf3AlM2q3A/YbgQr2pCat6B6XJVDv2TXqzfY2RYUi4mak6WAksSBPlyYGx9dg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - babel-plugin-dev-expression@0.2.3: - resolution: {integrity: sha512-rP5LK9QQTzCW61nVVzw88En1oK8t8gTsIeC6E61oelxNsU842yMjF0G1MxhvUpCkxCEIj7sE8/e5ieTheT//uw==} - peerDependencies: - '@babel/core': ^7.0.0 - - babel-plugin-istanbul@6.1.1: - resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} - engines: {node: '>=8'} - - babel-plugin-jest-hoist@25.5.0: - resolution: {integrity: sha512-u+/W+WAjMlvoocYGTwthAiQSxDcJAyHpQ6oWlHdFZaaN+Rlk8Q7iiwDPg2lN/FyJtAYnKjFxbn7xus4HCFkg5g==} - engines: {node: '>= 8.3'} - - babel-plugin-jest-hoist@28.1.3: - resolution: {integrity: sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - - babel-plugin-jest-hoist@29.6.3: - resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - babel-plugin-macros@2.8.0: - resolution: {integrity: sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==} - - babel-plugin-polyfill-corejs2@0.4.11: - resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - babel-plugin-polyfill-corejs3@0.10.6: - resolution: {integrity: sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - babel-plugin-polyfill-regenerator@0.0.4: - resolution: {integrity: sha512-+/uCzO9JTYVZVGCpZpVAQkgPGt2zkR0VYiZvJ4aVoCe4ccgpKvNQqcjzAgQzSsjK64Jhc5hvrCR3l0087BevkA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - babel-plugin-polyfill-regenerator@0.6.2: - resolution: {integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - babel-plugin-transform-async-to-promises@0.8.18: - resolution: {integrity: sha512-WpOrF76nUHijnNn10eBGOHZmXQC8JYRME9rOLxStOga7Av2VO53ehVFvVNImMksVtQuL2/7ZNxEgxnx7oo/3Hw==} - - babel-plugin-transform-flow-enums@0.0.2: - resolution: {integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==} - - babel-plugin-transform-rename-import@2.3.0: - resolution: {integrity: sha512-dPgJoT57XC0PqSnLgl2FwNvxFrWlspatX2dkk7yjKQj5HHGw071vAcOf+hqW8ClqcBDMvEbm6mevn5yHAD8mlQ==} - - babel-plugin-transform-typescript-metadata@0.3.2: - resolution: {integrity: sha512-mWEvCQTgXQf48yDqgN7CH50waTyYBeP2Lpqx4nNWab9sxEpdXVeKgfj1qYI2/TgUPQtNFZ85i3PemRtnXVYYJg==} - peerDependencies: - '@babel/core': ^7 - '@babel/traverse': ^7 - peerDependenciesMeta: - '@babel/traverse': - optional: true - - babel-preset-current-node-syntax@0.1.4: - resolution: {integrity: sha512-5/INNCYhUGqw7VbVjT/hb3ucjgkVHKXY7lX3ZjlN4gm565VyFmJUrJ/h+h16ECVB38R/9SF6aACydpKMLZ/c9w==} - peerDependencies: - '@babel/core': ^7.0.0 - - babel-preset-current-node-syntax@1.1.0: - resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} - peerDependencies: - '@babel/core': ^7.0.0 - - babel-preset-jest@25.5.0: - resolution: {integrity: sha512-8ZczygctQkBU+63DtSOKGh7tFL0CeCuz+1ieud9lJ1WPQ9O6A1a/r+LGn6Y705PA6whHQ3T1XuB/PmpfNYf8Fw==} - engines: {node: '>= 8.3'} - peerDependencies: - '@babel/core': ^7.0.0 - - babel-preset-jest@28.1.3: - resolution: {integrity: sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - peerDependencies: - '@babel/core': ^7.0.0 - - babel-preset-jest@29.6.3: - resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.0.0 - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - bare-events@2.5.0: - resolution: {integrity: sha512-/E8dDe9dsbLyh2qrZ64PEPadOQ0F4gbl1sUJOrmph7xOiIxfY8vwab/4bFLh4Y88/Hk/ujKcrQKc+ps0mv873A==} - - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - - base@0.11.2: - resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} - engines: {node: '>=0.10.0'} - - basic-auth@2.0.1: - resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} - engines: {node: '>= 0.8'} - - bcrypt-pbkdf@1.0.2: - resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} - - bcryptjs@2.4.3: - resolution: {integrity: sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==} - - better-opn@3.0.2: - resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==} - engines: {node: '>=12.0.0'} - - better-path-resolve@1.0.0: - resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} - engines: {node: '>=4'} - - big.js@5.2.2: - resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} - - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - - bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - - body-parser@1.20.3: - resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - - boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - - braces@2.3.2: - resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} - engines: {node: '>=0.10.0'} - - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - - browser-assert@1.2.1: - resolution: {integrity: sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==} - - browser-process-hrtime@1.0.0: - resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} - - browser-resolve@1.11.3: - resolution: {integrity: sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==} - - browserify-zlib@0.1.4: - resolution: {integrity: sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==} - - browserslist@4.24.0: - resolution: {integrity: sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - - bs-logger@0.2.6: - resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} - engines: {node: '>= 6'} - - bser@2.1.1: - resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} - - btoa@1.2.1: - resolution: {integrity: sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==} - engines: {node: '>= 0.4.0'} - hasBin: true - - buffer-equal-constant-time@1.0.1: - resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} - - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - - buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - - buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - - builtin-modules@3.3.0: - resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} - engines: {node: '>=6'} - - bundle-require@4.2.1: - resolution: {integrity: sha512-7Q/6vkyYAwOmQNRw75x+4yRtZCZJXUDmHHlFdkiV0wgv/reNjtJwpu1jPJ0w2kbEpIM0uoKI3S4/f39dU7AjSA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - peerDependencies: - esbuild: '>=0.17' - - bytes@3.0.0: - resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} - engines: {node: '>= 0.8'} - - bytes@3.1.2: - resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} - engines: {node: '>= 0.8'} - - cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} - - cache-base@1.0.1: - resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} - engines: {node: '>=0.10.0'} - - cache-content-type@1.0.1: - resolution: {integrity: sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==} - engines: {node: '>= 6.0.0'} - - caching-transform@4.0.0: - resolution: {integrity: sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==} - engines: {node: '>=8'} - - call-bind@1.0.7: - resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} - engines: {node: '>= 0.4'} - - caller-callsite@2.0.0: - resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} - engines: {node: '>=4'} - - caller-path@2.0.0: - resolution: {integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==} - engines: {node: '>=4'} - - callsites@2.0.0: - resolution: {integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==} - engines: {node: '>=4'} - - callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - - camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - - camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - - can-bind-to-host@1.1.2: - resolution: {integrity: sha512-CqsgmaqiyFRNtP17Ihqa/uHbZxRirntNVNl/kJz31DLKuNRfzvzionkLoUSkElQ6Cz+cpXKA3mhHq4tjbieujA==} - hasBin: true - - caniuse-api@3.0.0: - resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - - caniuse-lite@1.0.30001663: - resolution: {integrity: sha512-o9C3X27GLKbLeTYZ6HBOLU1tsAcBZsLis28wrVzddShCS16RujjHp9GDHKZqrB3meE0YjhawvMFsGb/igqiPzA==} - - capture-exit@2.0.0: - resolution: {integrity: sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==} - engines: {node: 6.* || 8.* || >= 10.*} - - caseless@0.12.0: - resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} - - chai@4.5.0: - resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} - engines: {node: '>=4'} - - chai@5.1.1: - resolution: {integrity: sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==} - engines: {node: '>=12'} - - chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - - chalk@3.0.0: - resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} - engines: {node: '>=8'} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - chalk@5.3.0: - resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - - char-regex@1.0.2: - resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} - engines: {node: '>=10'} - - char-regex@2.0.1: - resolution: {integrity: sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw==} - engines: {node: '>=12.20'} - - chardet@0.7.0: - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - - check-error@1.0.3: - resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} - - check-error@2.1.1: - resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} - engines: {node: '>= 16'} - - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - - chrome-launcher@0.15.2: - resolution: {integrity: sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==} - engines: {node: '>=12.13.0'} - hasBin: true - - chrome-trace-event@1.0.4: - resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} - engines: {node: '>=6.0'} - - ci-info@2.0.0: - resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} - - ci-info@3.9.0: - resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} - engines: {node: '>=8'} - - cjs-module-lexer@1.4.1: - resolution: {integrity: sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==} - - class-utils@0.3.6: - resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} - engines: {node: '>=0.10.0'} - - clean-stack@2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} - - cli-cursor@2.1.0: - resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==} - engines: {node: '>=4'} - - cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} - - cli-cursor@4.0.0: - resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - cli-spinners@1.3.1: - resolution: {integrity: sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==} - engines: {node: '>=4'} - - cli-spinners@2.6.1: - resolution: {integrity: sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==} - engines: {node: '>=6'} - - cli-spinners@2.9.2: - resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} - engines: {node: '>=6'} - - cli-truncate@3.1.0: - resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - cli-width@3.0.0: - resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} - engines: {node: '>= 10'} - - clipanion@4.0.0-rc.3: - resolution: {integrity: sha512-+rJOJMt2N6Oikgtfqmo/Duvme7uz3SIedL2b6ycgCztQMiTfr3aQh2DDyLHl+QUPClKMNpSg3gDJFvNQYIcq1g==} - peerDependencies: - typanion: '*' - - cliui@6.0.0: - resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} - - cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} - - clone-deep@4.0.1: - resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} - engines: {node: '>=6'} - - clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - - co@4.6.0: - resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} - engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - - collect-v8-coverage@1.0.2: - resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} - - collection-visit@1.0.0: - resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} - engines: {node: '>=0.10.0'} - - color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - colord@2.9.3: - resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} - - colorette@1.4.0: - resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} - - colorette@2.0.20: - resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - - columnify@1.6.0: - resolution: {integrity: sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==} - engines: {node: '>=8.0.0'} - - combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - - command-exists@1.2.9: - resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} - - commander@11.0.0: - resolution: {integrity: sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==} - engines: {node: '>=16'} - - commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - - commander@3.0.2: - resolution: {integrity: sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==} - - commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - - commander@5.1.0: - resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} - engines: {node: '>= 6'} - - commander@7.2.0: - resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} - engines: {node: '>= 10'} - - commander@9.5.0: - resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} - engines: {node: ^12.20.0 || >=14} - - commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - - component-emitter@1.3.1: - resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==} - - compressible@2.0.18: - resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} - engines: {node: '>= 0.6'} - - compression@1.7.4: - resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} - engines: {node: '>= 0.8.0'} - - computeds@0.0.1: - resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==} - - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - - concat-with-sourcemaps@1.1.0: - resolution: {integrity: sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==} - - confbox@0.1.7: - resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} - - confusing-browser-globals@1.0.11: - resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} - - connect@3.7.0: - resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} - engines: {node: '>= 0.10.0'} - - content-disposition@0.5.4: - resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} - engines: {node: '>= 0.6'} - - 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-signature@1.0.6: - resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} - - cookie@0.6.0: - resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} - engines: {node: '>= 0.6'} - - cookies@0.9.1: - resolution: {integrity: sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw==} - engines: {node: '>= 0.8'} - - copy-descriptor@0.1.1: - resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} - engines: {node: '>=0.10.0'} - - core-js-compat@3.38.1: - resolution: {integrity: sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==} - - core-js@3.37.1: - resolution: {integrity: sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw==} - - core-util-is@1.0.2: - resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} - - core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - - cors@2.8.5: - resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} - engines: {node: '>= 0.10'} - - corser@2.0.1: - resolution: {integrity: sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==} - engines: {node: '>= 0.4.0'} - - cosmiconfig@5.2.1: - resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==} - engines: {node: '>=4'} - - cosmiconfig@6.0.0: - resolution: {integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==} - engines: {node: '>=8'} - - cosmiconfig@8.3.6: - resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} - engines: {node: '>=14'} - peerDependencies: - typescript: '>=4.9.5' - peerDependenciesMeta: - typescript: - optional: true - - create-jest@29.7.0: - resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - - create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - - cron-parser@4.9.0: - resolution: {integrity: sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==} - engines: {node: '>=12.0.0'} - - cross-spawn@5.1.0: - resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} - - cross-spawn@6.0.5: - resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} - engines: {node: '>=4.8'} - - cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - - crypto-random-string@2.0.0: - resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} - engines: {node: '>=8'} - - css-declaration-sorter@6.4.1: - resolution: {integrity: sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==} - engines: {node: ^10 || ^12 || >=14} - peerDependencies: - postcss: ^8.0.9 - - css-select@4.3.0: - resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} - - css-select@5.1.0: - resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} - - css-tree@1.1.3: - resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} - engines: {node: '>=8.0.0'} - - css-tree@2.2.1: - resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} - - css-tree@2.3.1: - resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} - - css-what@6.1.0: - resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} - engines: {node: '>= 6'} - - css.escape@1.5.1: - resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} - - cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true - - cssnano-preset-default@5.2.14: - resolution: {integrity: sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - cssnano-utils@3.1.0: - resolution: {integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - cssnano@5.1.15: - resolution: {integrity: sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - csso@4.2.0: - resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} - engines: {node: '>=8.0.0'} - - csso@5.0.5: - resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} - - cssom@0.3.8: - resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} - - cssom@0.4.4: - resolution: {integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==} - - cssom@0.5.0: - resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} - - cssstyle@2.3.0: - resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} - engines: {node: '>=8'} - - cssstyle@3.0.0: - resolution: {integrity: sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==} - engines: {node: '>=14'} - - csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - - cwd@0.10.0: - resolution: {integrity: sha512-YGZxdTTL9lmLkCUTpg4j0zQ7IhRB5ZmqNBbGCl3Tg6MP/d5/6sY7L5mmTjzbc6JKgVZYiqTQTNhPFsbXNGlRaA==} - engines: {node: '>=0.8'} - - damerau-levenshtein@1.0.8: - resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} - - dashdash@1.14.1: - resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} - engines: {node: '>=0.10'} - - data-urls@1.1.0: - resolution: {integrity: sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==} - - data-urls@3.0.2: - resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} - engines: {node: '>=12'} - - data-urls@4.0.0: - resolution: {integrity: sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==} - engines: {node: '>=14'} - - data-view-buffer@1.0.1: - resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} - engines: {node: '>= 0.4'} - - data-view-byte-length@1.0.1: - resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} - engines: {node: '>= 0.4'} - - data-view-byte-offset@1.0.0: - resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} - engines: {node: '>= 0.4'} - - date-format@4.0.14: - resolution: {integrity: sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==} - engines: {node: '>=4.0'} - - dayjs@1.11.13: - resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} - - de-indent@1.0.2: - resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} - - debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@4.3.7: - resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - - decimal.js@10.4.3: - resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} - - decode-uri-component@0.2.2: - resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} - engines: {node: '>=0.10'} - - dedent@0.7.0: - resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} - - dedent@1.5.3: - resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} - peerDependencies: - babel-plugin-macros: ^3.1.0 - peerDependenciesMeta: - babel-plugin-macros: - optional: true - - deep-eql@4.1.4: - resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} - engines: {node: '>=6'} - - deep-eql@5.0.2: - resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} - engines: {node: '>=6'} - - deep-equal@1.0.1: - resolution: {integrity: sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==} - - deep-equal@2.2.3: - resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} - engines: {node: '>= 0.4'} - - deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - - deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} - - default-require-extensions@3.0.1: - resolution: {integrity: sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==} - engines: {node: '>=8'} - - defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} - - define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} - - define-lazy-prop@2.0.0: - resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} - engines: {node: '>=8'} - - define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} - - define-property@0.2.5: - resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==} - engines: {node: '>=0.10.0'} - - define-property@1.0.0: - resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==} - engines: {node: '>=0.10.0'} - - define-property@2.0.2: - resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} - engines: {node: '>=0.10.0'} - - del@6.1.1: - resolution: {integrity: sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==} - engines: {node: '>=10'} - - delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - - delegates@1.0.0: - resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} - - denodeify@1.2.1: - resolution: {integrity: sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==} - - depd@1.1.2: - resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} - engines: {node: '>= 0.6'} - - depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} - - dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} - - destroy@1.2.0: - resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - - detect-indent@6.1.0: - resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} - engines: {node: '>=8'} - - detect-newline@3.1.0: - resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} - engines: {node: '>=8'} - - detect-port@1.6.1: - resolution: {integrity: sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==} - engines: {node: '>= 4.0.0'} - hasBin: true - - diff-sequences@25.2.6: - resolution: {integrity: sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg==} - engines: {node: '>= 8.3'} - - diff-sequences@28.1.1: - resolution: {integrity: sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - - diff-sequences@29.6.3: - resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - - diffable-html@4.1.0: - resolution: {integrity: sha512-++kyNek+YBLH8cLXS+iTj/Hiy2s5qkRJEJ8kgu/WHbFrVY2vz9xPFUT+fii2zGF0m1CaojDlQJjkfrCt7YWM1g==} - - dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - - doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} - - doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - - dom-accessibility-api@0.5.16: - resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} - - dom-accessibility-api@0.6.3: - resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} - - dom-serializer@0.2.2: - resolution: {integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==} - - dom-serializer@1.4.1: - resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} - - dom-serializer@2.0.0: - resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} - - domelementtype@1.3.1: - resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==} - - domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - - domexception@1.0.1: - resolution: {integrity: sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==} - deprecated: Use your platform's native DOMException instead - - domexception@4.0.0: - resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} - engines: {node: '>=12'} - deprecated: Use your platform's native DOMException instead - - domhandler@2.4.2: - resolution: {integrity: sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==} - - domhandler@4.3.1: - resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} - engines: {node: '>= 4'} - - domhandler@5.0.3: - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} - engines: {node: '>= 4'} - - domutils@1.7.0: - resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==} - - domutils@2.8.0: - resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} - - domutils@3.1.0: - resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} - - dot-case@3.0.4: - resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} - - dotenv-expand@10.0.0: - resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==} - engines: {node: '>=12'} - - dotenv-expand@11.0.6: - resolution: {integrity: sha512-8NHi73otpWsZGBSZwwknTXS5pqMOrk9+Ssrna8xCaxkzEpU9OTf9R5ArQGVw03//Zmk9MOwLPng9WwndvpAJ5g==} - engines: {node: '>=12'} - - dotenv@16.4.5: - resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} - engines: {node: '>=12'} - - duplexer@0.1.2: - resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} - - duplexify@3.7.1: - resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} - - duplexify@4.1.3: - resolution: {integrity: sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==} - - eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - - ecc-jsbn@0.1.2: - resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} - - ecdsa-sig-formatter@1.0.11: - resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} - - ee-first@1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - - ejs@3.1.10: - resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} - engines: {node: '>=0.10.0'} - hasBin: true - - electron-to-chromium@1.5.28: - resolution: {integrity: sha512-VufdJl+rzaKZoYVUijN13QcXVF5dWPZANeFTLNy+OSpHdDL5ynXTF35+60RSBbaQYB1ae723lQXHCrf4pyLsMw==} - - emittery@0.10.2: - resolution: {integrity: sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==} - engines: {node: '>=12'} - - emittery@0.13.1: - resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} - engines: {node: '>=12'} - - emoji-regex@7.0.3: - resolution: {integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - - emojis-list@3.0.0: - resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} - engines: {node: '>= 4'} - - encodeurl@1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} - engines: {node: '>= 0.8'} - - encodeurl@2.0.0: - resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} - engines: {node: '>= 0.8'} - - end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - - enhanced-resolve@5.17.1: - resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} - engines: {node: '>=10.13.0'} - - enquirer@2.3.6: - resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} - engines: {node: '>=8.6'} - - enquirer@2.4.1: - resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} - engines: {node: '>=8.6'} - - entities@1.1.2: - resolution: {integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==} - - entities@2.2.0: - resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} - - entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - - envinfo@7.13.0: - resolution: {integrity: sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==} - engines: {node: '>=4'} - hasBin: true - - envinfo@7.14.0: - resolution: {integrity: sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==} - engines: {node: '>=4'} - hasBin: true - - error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - - error-stack-parser@2.1.4: - resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} - - errorhandler@1.5.1: - resolution: {integrity: sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==} - engines: {node: '>= 0.8'} - - es-abstract@1.23.3: - resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} - engines: {node: '>= 0.4'} - - es-define-property@1.0.0: - resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} - engines: {node: '>= 0.4'} - - es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - - es-get-iterator@1.1.3: - resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} - - es-iterator-helpers@1.0.19: - resolution: {integrity: sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==} - engines: {node: '>= 0.4'} - - es-module-lexer@1.5.4: - resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} - - es-object-atoms@1.0.0: - resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} - engines: {node: '>= 0.4'} - - es-set-tostringtag@2.0.3: - resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} - engines: {node: '>= 0.4'} - - es-shim-unscopables@1.0.2: - resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} - - es-to-primitive@1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} - engines: {node: '>= 0.4'} - - es6-error@4.1.1: - resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} - - esbuild-register@3.6.0: - resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==} - peerDependencies: - esbuild: '>=0.12 <1' - - esbuild@0.17.19: - resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} - engines: {node: '>=12'} - hasBin: true - - esbuild@0.18.20: - resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} - engines: {node: '>=12'} - hasBin: true - - esbuild@0.21.5: - resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} - engines: {node: '>=12'} - hasBin: true - - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - - escape-html@1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - - escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - - escape-string-regexp@2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} - - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - escodegen@1.14.3: - resolution: {integrity: sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==} - engines: {node: '>=4.0'} - hasBin: true - - escodegen@2.1.0: - resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} - engines: {node: '>=6.0'} - hasBin: true - - eslint-config-prettier@6.15.0: - resolution: {integrity: sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw==} - hasBin: true - peerDependencies: - eslint: '>=3.14.1' - - eslint-config-prettier@9.1.0: - resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' - - eslint-config-react-app@5.2.1: - resolution: {integrity: sha512-pGIZ8t0mFLcV+6ZirRgYK6RVqUIKRIi9MmgzUEmrIknsn3AdO0I32asO86dJgloHq+9ZPl8UIg8mYrvgP5u2wQ==} - peerDependencies: - '@typescript-eslint/eslint-plugin': 2.x - '@typescript-eslint/parser': 2.x - babel-eslint: 10.x - eslint: 6.x - eslint-plugin-flowtype: 3.x || 4.x - eslint-plugin-import: 2.x - eslint-plugin-jsx-a11y: 6.x - eslint-plugin-react: 7.x - eslint-plugin-react-hooks: 1.x || 2.x - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - eslint-import-resolver-node@0.3.9: - resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - - eslint-module-utils@2.11.1: - resolution: {integrity: sha512-EwcbfLOhwVMAfatfqLecR2yv3dE5+kQ8kx+Rrt0DvDXEVwW86KQ/xbMDQhtp5l42VXukD5SOF8mQQHbaNtO0CQ==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true - - eslint-plugin-flowtype@3.13.0: - resolution: {integrity: sha512-bhewp36P+t7cEV0b6OdmoRWJCBYRiHFlqPZAG1oS3SF+Y0LQkeDvFSM4oxoxvczD1OdONCXMlJfQFiWLcV9urw==} - engines: {node: '>=4'} - peerDependencies: - eslint: '>=5.0.0' - - eslint-plugin-import@2.30.0: - resolution: {integrity: sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - - eslint-plugin-jsx-a11y@6.10.0: - resolution: {integrity: sha512-ySOHvXX8eSN6zz8Bywacm7CvGNhUtdjvqfQDVe6020TUK34Cywkw7m0KsCCk1Qtm9G1FayfTN1/7mMYnYO2Bhg==} - engines: {node: '>=4.0'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 - - eslint-plugin-jsx-a11y@6.7.1: - resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} - engines: {node: '>=4.0'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - - eslint-plugin-prettier@3.4.1: - resolution: {integrity: sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==} - engines: {node: '>=6.0.0'} - peerDependencies: - eslint: '>=5.0.0' - eslint-config-prettier: '*' - prettier: '>=1.13.0' - peerDependenciesMeta: - eslint-config-prettier: - optional: true - - eslint-plugin-react-hooks@2.5.1: - resolution: {integrity: sha512-Y2c4b55R+6ZzwtTppKwSmK/Kar8AdLiC2f9NADCuxbcTgPPg41Gyqa6b9GppgXSvCtkRw43ZE86CT5sejKC6/g==} - engines: {node: '>=7'} - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 - - eslint-plugin-react-hooks@4.6.0: - resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} - engines: {node: '>=10'} - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - - eslint-plugin-react@7.35.0: - resolution: {integrity: sha512-v501SSMOWv8gerHkk+IIQBkcGRGrO2nfybfj5pLxuJNFTPxxA3PSryhXTK+9pNbtkggheDdsC0E9Q8CuPk6JKA==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - - eslint-plugin-react@7.36.1: - resolution: {integrity: sha512-/qwbqNXZoq+VP30s1d4Nc1C5GTxjJQjk4Jzs4Wq2qzxFM7dSmuG2UkIjg2USMLh3A/aVcUNrK7v0J5U1XEGGwA==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - - eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - - eslint-scope@8.0.2: - resolution: {integrity: sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - eslint-utils@1.4.3: - resolution: {integrity: sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==} - engines: {node: '>=6'} - - eslint-utils@2.1.0: - resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} - engines: {node: '>=6'} - - eslint-visitor-keys@1.3.0: - resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} - engines: {node: '>=4'} - - eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint-visitor-keys@4.0.0: - resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - eslint@6.8.0: - resolution: {integrity: sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} - deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. - hasBin: true - - eslint@9.11.1: - resolution: {integrity: sha512-MobhYKIoAO1s1e4VUrgx1l1Sk2JBR/Gqjjgw8+mfgoLE2xwsHur4gdfTxyTgShrhvdVFTaJSgMiQBl1jv/AWxg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - hasBin: true - peerDependencies: - jiti: '*' - peerDependenciesMeta: - jiti: - optional: true - - espree@10.1.0: - resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - espree@6.2.1: - resolution: {integrity: sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==} - engines: {node: '>=6.0.0'} - - espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - - esquery@1.6.0: - resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} - engines: {node: '>=0.10'} - - esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - - estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - - estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - - estree-walker@0.6.1: - resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==} - - estree-walker@1.0.1: - resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} - - estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - - estree-walker@3.0.3: - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - - esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - - etag@1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} - - event-target-shim@5.0.1: - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} - engines: {node: '>=6'} - - eventemitter3@4.0.7: - resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} - - eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - - events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - - exec-sh@0.3.6: - resolution: {integrity: sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==} - - execa@1.0.0: - resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} - engines: {node: '>=6'} - - execa@3.4.0: - resolution: {integrity: sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==} - engines: {node: ^8.12.0 || >=9.7.0} - - execa@4.1.0: - resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} - engines: {node: '>=10'} - - execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - - execa@7.2.0: - resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} - engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} - - execa@8.0.1: - resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} - engines: {node: '>=16.17'} - - exit@0.1.2: - resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} - engines: {node: '>= 0.8.0'} - - expand-brackets@2.1.4: - resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} - engines: {node: '>=0.10.0'} - - expand-tilde@1.2.2: - resolution: {integrity: sha512-rtmc+cjLZqnu9dSYosX9EWmSJhTwpACgJQTfj4hgg2JjOD/6SIQalZrt4a3aQeh++oNxkazcaxrhPUj6+g5G/Q==} - engines: {node: '>=0.10.0'} - - expand-tilde@2.0.2: - resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} - engines: {node: '>=0.10.0'} - - expect-playwright@0.8.0: - resolution: {integrity: sha512-+kn8561vHAY+dt+0gMqqj1oY+g5xWrsuGMk4QGxotT2WS545nVqqjs37z6hrYfIuucwqthzwJfCJUEYqixyljg==} - - expect@25.5.0: - resolution: {integrity: sha512-w7KAXo0+6qqZZhovCaBVPSIqQp7/UTcx4M9uKt2m6pd2VB1voyC8JizLRqeEqud3AAVP02g+hbErDu5gu64tlA==} - engines: {node: '>= 8.3'} - - expect@28.1.3: - resolution: {integrity: sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - - expect@29.7.0: - resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - exponential-backoff@3.1.1: - resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} - - express-rate-limit@5.5.1: - resolution: {integrity: sha512-MTjE2eIbHv5DyfuFz4zLYWxpqVhEhkTiwFGuB74Q9CSou2WHO52nlE5y3Zlg6SIsiYUIPj6ifFxnkPz6O3sIUg==} - - express@4.21.0: - resolution: {integrity: sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==} - engines: {node: '>= 0.10.0'} - - extend-shallow@2.0.1: - resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} - engines: {node: '>=0.10.0'} - - extend-shallow@3.0.2: - resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} - engines: {node: '>=0.10.0'} - - extend@3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - - extendable-error@0.1.7: - resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} - - external-editor@3.1.0: - resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} - engines: {node: '>=4'} - - extglob@2.0.4: - resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} - engines: {node: '>=0.10.0'} - - extsprintf@1.3.0: - resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} - engines: {'0': node >=0.6.0} - - fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - - fast-diff@1.3.0: - resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - - fast-fifo@1.3.2: - resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} - - fast-glob@3.2.7: - resolution: {integrity: sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==} - engines: {node: '>=8'} - - fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} - - fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - - fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - - fast-redact@3.5.0: - resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} - engines: {node: '>=6'} - - fast-safe-stringify@2.1.1: - resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} - - fast-uri@3.0.2: - resolution: {integrity: sha512-GR6f0hD7XXyNJa25Tb9BuIdN0tdr+0BMi6/CJPH3wJO1JjNG3n/VsSw38AwRdKZABm8lGbPfakLRkYzx2V9row==} - - fast-xml-parser@4.5.0: - resolution: {integrity: sha512-/PlTQCI96+fZMAOLMZK4CWG1ItCbfZ/0jx7UIJFChPNrx7tcEgerUgWbeieCM9MfHInUDyK8DWYZ+YrywDJuTg==} - hasBin: true - - fastq@1.17.1: - resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} - - fb-watchman@2.0.2: - resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} - - fflate@0.8.2: - resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} - - figures@3.2.0: - resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} - engines: {node: '>=8'} - - file-entry-cache@5.0.1: - resolution: {integrity: sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==} - engines: {node: '>=4'} - - file-entry-cache@8.0.0: - resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} - engines: {node: '>=16.0.0'} - - file-loader@6.2.0: - resolution: {integrity: sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==} - engines: {node: '>= 10.13.0'} - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - - file-system-cache@2.3.0: - resolution: {integrity: sha512-l4DMNdsIPsVnKrgEXbJwDJsA5mB8rGwHYERMgqQx/xAUtChPJMre1bXBzDEqqVbWv9AIbFezXMxeEkZDSrXUOQ==} - - filelist@1.0.4: - resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} - - fill-range@4.0.0: - resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==} - engines: {node: '>=0.10.0'} - - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - - finalhandler@1.1.2: - resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} - engines: {node: '>= 0.8'} - - finalhandler@1.3.1: - resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} - engines: {node: '>= 0.8'} - - find-cache-dir@2.1.0: - resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} - engines: {node: '>=6'} - - find-cache-dir@3.3.2: - resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} - engines: {node: '>=8'} - - find-file-up@0.1.3: - resolution: {integrity: sha512-mBxmNbVyjg1LQIIpgO8hN+ybWBgDQK8qjht+EbrTCGmmPV/sc7RF1i9stPTD6bpvXZywBdrwRYxhSdJv867L6A==} - engines: {node: '>=0.10.0'} - - find-file-up@2.0.1: - resolution: {integrity: sha512-qVdaUhYO39zmh28/JLQM5CoYN9byEOKEH4qfa8K1eNV17W0UUMJ9WgbR/hHFH+t5rcl+6RTb5UC7ck/I+uRkpQ==} - engines: {node: '>=8'} - - find-pkg@0.1.2: - resolution: {integrity: sha512-0rnQWcFwZr7eO0513HahrWafsc3CTFioEB7DRiEYCUM/70QXSY8f3mCST17HXLcPvEhzH/Ty/Bxd72ZZsr/yvw==} - engines: {node: '>=0.10.0'} - - find-pkg@2.0.0: - resolution: {integrity: sha512-WgZ+nKbELDa6N3i/9nrHeNznm+lY3z4YfhDDWgW+5P0pdmMj26bxaxU11ookgY3NyP9GC7HvZ9etp0jRFqGEeQ==} - engines: {node: '>=8'} - - find-process@1.4.7: - resolution: {integrity: sha512-/U4CYp1214Xrp3u3Fqr9yNynUrr5Le4y0SsJh2lMDDSbpwYSz3M2SMWQC+wqcx79cN8PQtHQIL8KnuY9M66fdg==} - hasBin: true - - find-up@3.0.0: - resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} - engines: {node: '>=6'} - - find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - flat-cache@2.0.1: - resolution: {integrity: sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==} - engines: {node: '>=4'} - - flat-cache@4.0.1: - resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} - engines: {node: '>=16'} - - flat@5.0.2: - resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} - hasBin: true - - flatted@2.0.2: - resolution: {integrity: sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==} - - flatted@3.3.1: - resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} - - flow-enums-runtime@0.0.6: - resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==} - - flow-parser@0.246.0: - resolution: {integrity: sha512-WHRizzSrWFTcKo7cVcbP3wzZVhzsoYxoWqbnH4z+JXGqrjVmnsld6kBZWVlB200PwD5ur8r+HV3KUDxv3cHhOQ==} - engines: {node: '>=0.4.0'} - - follow-redirects@1.15.9: - resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - - for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - - for-in@1.0.2: - resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} - engines: {node: '>=0.10.0'} - - foreground-child@2.0.0: - resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} - engines: {node: '>=8.0.0'} - - foreground-child@3.3.0: - resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} - engines: {node: '>=14'} - - forever-agent@0.6.1: - resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} - - form-data@2.3.3: - resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} - engines: {node: '>= 0.12'} - - form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} - engines: {node: '>= 6'} - - forwarded@0.2.0: - resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} - engines: {node: '>= 0.6'} - - fraction.js@4.3.7: - resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - - fragment-cache@0.2.1: - resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} - engines: {node: '>=0.10.0'} - - fresh@0.5.2: - resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} - engines: {node: '>= 0.6'} - - fromentries@1.3.2: - resolution: {integrity: sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==} - - front-matter@4.0.2: - resolution: {integrity: sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==} - - fs-constants@1.0.0: - resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - - fs-exists-sync@0.1.0: - resolution: {integrity: sha512-cR/vflFyPZtrN6b38ZyWxpWdhlXrzZEBawlpBQMq7033xVY7/kg0GDMBK5jg8lDYQckdJ5x/YC88lM3C7VMsLg==} - engines: {node: '>=0.10.0'} - - fs-extra@10.1.0: - resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} - engines: {node: '>=12'} - - fs-extra@11.1.1: - resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} - engines: {node: '>=14.14'} - - fs-extra@11.2.0: - resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} - engines: {node: '>=14.14'} - - fs-extra@7.0.1: - resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} - engines: {node: '>=6 <7 || >=8'} - - fs-extra@8.1.0: - 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==} - - fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - - function.prototype.name@1.1.6: - resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} - engines: {node: '>= 0.4'} - - functional-red-black-tree@1.0.1: - resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} - - functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - - generic-names@4.0.0: - resolution: {integrity: sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==} - - gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - - get-func-name@2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - - get-intrinsic@1.2.4: - resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} - engines: {node: '>= 0.4'} - - get-package-type@0.1.0: - resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} - engines: {node: '>=8.0.0'} - - get-stdin@6.0.0: - resolution: {integrity: sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==} - engines: {node: '>=4'} - - get-stream@4.1.0: - resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} - engines: {node: '>=6'} - - get-stream@5.2.0: - resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} - engines: {node: '>=8'} - - get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - - get-stream@8.0.1: - resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} - engines: {node: '>=16'} - - get-symbol-description@1.0.2: - resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} - engines: {node: '>= 0.4'} - - get-value@2.0.6: - resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} - engines: {node: '>=0.10.0'} - - getpass@0.1.7: - resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - - glob-promise@4.2.2: - resolution: {integrity: sha512-xcUzJ8NWN5bktoTIX7eOclO1Npxd/dyVqUJxlLIDasT4C7KZyqlPIwkdJ0Ypiy3p2ZKahTjK4M9uC3sNSfNMzw==} - engines: {node: '>=12'} - peerDependencies: - glob: ^7.1.6 - - glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - - glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} - hasBin: true - - glob@6.0.4: - resolution: {integrity: sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==} - deprecated: Glob versions prior to v9 are no longer supported - - glob@7.1.4: - resolution: {integrity: sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==} - deprecated: Glob versions prior to v9 are no longer supported - - glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported - - glob@8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} - engines: {node: '>=12'} - deprecated: Glob versions prior to v9 are no longer supported - - glob@9.3.5: - resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==} - engines: {node: '>=16 || 14 >=14.17'} - - global-modules@0.2.3: - resolution: {integrity: sha512-JeXuCbvYzYXcwE6acL9V2bAOeSIGl4dD+iwLY9iUx2VBJJ80R18HCn+JCwHM9Oegdfya3lEkGCdaRkSyc10hDA==} - engines: {node: '>=0.10.0'} - - global-modules@1.0.0: - resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==} - engines: {node: '>=0.10.0'} - - global-prefix@0.1.5: - resolution: {integrity: sha512-gOPiyxcD9dJGCEArAhF4Hd0BAqvAe/JzERP7tYumE4yIkmIedPUVXcJFWbV3/p/ovIIvKjkrTk+f1UVkq7vvbw==} - engines: {node: '>=0.10.0'} - - global-prefix@1.0.2: - resolution: {integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==} - engines: {node: '>=0.10.0'} - - globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - - globals@12.4.0: - resolution: {integrity: sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==} - engines: {node: '>=8'} - - globals@14.0.0: - resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} - engines: {node: '>=18'} - - globals@15.9.0: - resolution: {integrity: sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==} - engines: {node: '>=18'} - - globalthis@1.0.4: - resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} - engines: {node: '>= 0.4'} - - globalyzer@0.1.0: - resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} - - globby@10.0.1: - resolution: {integrity: sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==} - 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==} - - gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} - - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - - graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - - growly@1.3.0: - resolution: {integrity: sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==} - - gunzip-maybe@1.4.2: - resolution: {integrity: sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw==} - hasBin: true - - handlebars@4.7.8: - resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} - engines: {node: '>=0.4.7'} - hasBin: true - - har-schema@2.0.0: - resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} - engines: {node: '>=4'} - - har-validator@5.1.5: - resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} - engines: {node: '>=6'} - deprecated: this library is no longer supported - - harmony-reflect@1.6.2: - resolution: {integrity: sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==} - - has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - - has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - - has-proto@1.0.3: - resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} - engines: {node: '>= 0.4'} - - has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} - - has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} - - has-value@0.3.1: - resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==} - engines: {node: '>=0.10.0'} - - has-value@1.0.0: - resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==} - engines: {node: '>=0.10.0'} - - has-values@0.1.4: - resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==} - engines: {node: '>=0.10.0'} - - has-values@1.0.0: - resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==} - engines: {node: '>=0.10.0'} - - has@1.0.4: - resolution: {integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==} - engines: {node: '>= 0.4.0'} - - hasha@5.2.2: - resolution: {integrity: sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==} - engines: {node: '>=8'} - - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - - he@1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true - - hermes-estree@0.19.1: - resolution: {integrity: sha512-daLGV3Q2MKk8w4evNMKwS8zBE/rcpA800nu1Q5kM08IKijoSnPe9Uo1iIxzPKRkn95IxxsgBMPeYHt3VG4ej2g==} - - hermes-estree@0.23.1: - resolution: {integrity: sha512-eT5MU3f5aVhTqsfIReZ6n41X5sYn4IdQL0nvz6yO+MMlPxw49aSARHLg/MSehQftyjnrE8X6bYregzSumqc6cg==} - - hermes-parser@0.19.1: - resolution: {integrity: sha512-Vp+bXzxYJWrpEuJ/vXxUsLnt0+y4q9zyi4zUlkLqD8FKv4LjIfOvP69R/9Lty3dCyKh0E2BU7Eypqr63/rKT/A==} - - hermes-parser@0.23.1: - resolution: {integrity: sha512-oxl5h2DkFW83hT4DAUJorpah8ou4yvmweUzLJmmr6YV2cezduCdlil1AvU/a/xSsAFo4WUcNA4GoV5Bvq6JffA==} - - hermes-profile-transformer@0.0.6: - resolution: {integrity: sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==} - engines: {node: '>=8'} - - homedir-polyfill@1.0.3: - resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} - engines: {node: '>=0.10.0'} - - hosted-git-info@2.8.9: - resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - - hosted-git-info@7.0.2: - resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} - engines: {node: ^16.14.0 || >=18.0.0} - - html-encoding-sniffer@1.0.2: - resolution: {integrity: sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==} - - html-encoding-sniffer@3.0.0: - resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} - engines: {node: '>=12'} - - html-escaper@2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - - html-tags@3.3.1: - resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} - engines: {node: '>=8'} - - htmlparser2@3.10.1: - resolution: {integrity: sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==} - - http-assert@1.5.0: - resolution: {integrity: sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==} - engines: {node: '>= 0.8'} - - http-errors@1.8.1: - resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} - engines: {node: '>= 0.6'} - - http-errors@2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} - engines: {node: '>= 0.8'} - - http-proxy-agent@5.0.0: - resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} - engines: {node: '>= 6'} - - http-proxy-middleware@3.0.2: - resolution: {integrity: sha512-fBLFpmvDzlxdckwZRjM0wWtwDZ4KBtQ8NFqhrFKoEtK4myzuiumBuNTxD+F4cVbXfOZljIbrynmvByofDzT7Ag==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - http-proxy@1.18.1: - resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} - engines: {node: '>=8.0.0'} - - http-server@14.1.1: - resolution: {integrity: sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==} - engines: {node: '>=12'} - hasBin: true - - http-signature@1.2.0: - resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} - engines: {node: '>=0.8', npm: '>=1.3.7'} - - http-signature@1.3.6: - resolution: {integrity: sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==} - engines: {node: '>=0.10'} - - http-status-codes@2.2.0: - resolution: {integrity: sha512-feERVo9iWxvnejp3SEfm/+oNG517npqL2/PIA8ORjyOZjGC7TwCRQsZylciLS64i6pJ0wRYz3rkXLRwbtFa8Ng==} - - http-status-codes@2.3.0: - resolution: {integrity: sha512-RJ8XvFvpPM/Dmc5SV+dC4y5PCeOhT3x1Hq0NU3rjGeg5a/CqlhZ7uudknPwZFz4aeAXDcbAyaeP7GAo9lvngtA==} - - https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} - - human-id@1.0.2: - resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} - - human-signals@1.1.1: - resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} - engines: {node: '>=8.12.0'} - - human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - - human-signals@4.3.1: - resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} - engines: {node: '>=14.18.0'} - - human-signals@5.0.0: - resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} - engines: {node: '>=16.17.0'} - - humanize-duration@3.32.1: - resolution: {integrity: sha512-inh5wue5XdfObhu/IGEMiA1nUXigSGcaKNemcbLRKa7jXYGDZXr3LoT9pTIzq2hPEbld7w/qv9h+ikWGz8fL1g==} - - husky@8.0.3: - resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} - engines: {node: '>=14'} - hasBin: true - - iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - - iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} - - icss-replace-symbols@1.1.0: - resolution: {integrity: sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==} - - icss-utils@5.1.0: - resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - - identity-obj-proxy@3.0.0: - resolution: {integrity: sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==} - engines: {node: '>=4'} - - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - - ignore@4.0.6: - resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} - engines: {node: '>= 4'} - - ignore@5.3.2: - resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} - engines: {node: '>= 4'} - - image-size@1.1.1: - resolution: {integrity: sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==} - engines: {node: '>=16.x'} - hasBin: true - - import-cwd@3.0.0: - resolution: {integrity: sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==} - engines: {node: '>=8'} - - import-fresh@2.0.0: - resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} - engines: {node: '>=4'} - - import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} - - import-from@3.0.0: - resolution: {integrity: sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==} - engines: {node: '>=8'} - - import-lazy@4.0.0: - resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} - engines: {node: '>=8'} - - import-local@3.2.0: - resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} - engines: {node: '>=8'} - hasBin: true - - imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - - indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - - inquirer@7.3.3: - resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==} - engines: {node: '>=8.0.0'} - - internal-slot@1.0.7: - resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} - engines: {node: '>= 0.4'} - - interpret@1.4.0: - resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} - engines: {node: '>= 0.10'} - - invariant@2.2.4: - resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} - - ip-regex@2.1.0: - resolution: {integrity: sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==} - engines: {node: '>=4'} - - ipaddr.js@1.9.1: - resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} - engines: {node: '>= 0.10'} - - is-accessor-descriptor@1.0.1: - resolution: {integrity: sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==} - engines: {node: '>= 0.10'} - - is-arguments@1.1.1: - resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} - engines: {node: '>= 0.4'} - - is-array-buffer@3.0.4: - resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} - engines: {node: '>= 0.4'} - - is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - - is-async-function@2.0.0: - resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} - engines: {node: '>= 0.4'} - - is-bigint@1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-boolean-object@1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} - engines: {node: '>= 0.4'} - - is-buffer@1.1.6: - resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} - - is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - - is-ci@2.0.0: - resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==} - hasBin: true - - is-core-module@2.15.1: - resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} - engines: {node: '>= 0.4'} - - is-data-descriptor@1.0.1: - resolution: {integrity: sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==} - engines: {node: '>= 0.4'} - - is-data-view@1.0.1: - resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} - engines: {node: '>= 0.4'} - - is-date-object@1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} - engines: {node: '>= 0.4'} - - is-deflate@1.0.0: - resolution: {integrity: sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ==} - - is-descriptor@0.1.7: - resolution: {integrity: sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==} - engines: {node: '>= 0.4'} - - is-descriptor@1.0.3: - resolution: {integrity: sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==} - engines: {node: '>= 0.4'} - - is-directory@0.3.1: - resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} - engines: {node: '>=0.10.0'} - - is-docker@2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: true - - is-extendable@0.1.1: - resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} - engines: {node: '>=0.10.0'} - - is-extendable@1.0.1: - resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} - engines: {node: '>=0.10.0'} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-finalizationregistry@1.0.2: - resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} - - is-fullwidth-code-point@2.0.0: - resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} - engines: {node: '>=4'} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - is-fullwidth-code-point@4.0.0: - resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} - engines: {node: '>=12'} - - is-generator-fn@2.1.0: - resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} - engines: {node: '>=6'} - - is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} - engines: {node: '>= 0.4'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-gzip@1.0.0: - resolution: {integrity: sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ==} - engines: {node: '>=0.10.0'} - - is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} - - is-map@2.0.3: - resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} - engines: {node: '>= 0.4'} - - is-module@1.0.0: - resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} - - is-negative-zero@2.0.3: - resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} - engines: {node: '>= 0.4'} - - is-number-object@1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} - engines: {node: '>= 0.4'} - - is-number@3.0.0: - resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==} - engines: {node: '>=0.10.0'} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-path-cwd@2.2.0: - resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} - engines: {node: '>=6'} - - is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - - is-plain-object@2.0.4: - resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} - engines: {node: '>=0.10.0'} - - is-plain-object@3.0.1: - resolution: {integrity: sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==} - engines: {node: '>=0.10.0'} - - is-plain-object@5.0.0: - resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} - engines: {node: '>=0.10.0'} - - is-potential-custom-element-name@1.0.1: - resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} - - is-promise@2.2.2: - resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} - - is-reference@1.2.1: - resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} - - is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} - - is-set@2.0.3: - resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} - engines: {node: '>= 0.4'} - - is-shared-array-buffer@1.0.3: - resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} - engines: {node: '>= 0.4'} - - is-stream@1.1.0: - resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} - engines: {node: '>=0.10.0'} - - is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - - is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - is-string@1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} - - is-subdir@1.2.0: - resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} - engines: {node: '>=4'} - - is-symbol@1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} - engines: {node: '>= 0.4'} - - is-typed-array@1.1.13: - resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} - 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'} - - is-weakmap@2.0.2: - resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} - engines: {node: '>= 0.4'} - - is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} - - is-weakset@2.0.3: - resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} - engines: {node: '>= 0.4'} - - is-windows@0.2.0: - resolution: {integrity: sha512-n67eJYmXbniZB7RF4I/FTjK1s6RPOCTxhYrVYLRaCt3lF0mpWZPKr3T2LSZAqyjQsxR2qMmGYXXzK0YWwcPM1Q==} - engines: {node: '>=0.10.0'} - - is-windows@1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} - - is-wsl@1.1.0: - resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} - engines: {node: '>=4'} - - is-wsl@2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} - - isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - - isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - isobject@2.1.0: - resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} - engines: {node: '>=0.10.0'} - - isobject@3.0.1: - resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} - engines: {node: '>=0.10.0'} - - isomorphic-ws@5.0.0: - resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} - peerDependencies: - ws: '*' - - isstream@0.1.2: - resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} - - istanbul-lib-coverage@3.2.2: - resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} - engines: {node: '>=8'} - - istanbul-lib-hook@3.0.0: - resolution: {integrity: sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==} - engines: {node: '>=8'} - - istanbul-lib-instrument@4.0.3: - resolution: {integrity: sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==} - engines: {node: '>=8'} - - istanbul-lib-instrument@5.2.1: - resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} - engines: {node: '>=8'} - - istanbul-lib-instrument@6.0.3: - resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} - engines: {node: '>=10'} - - istanbul-lib-processinfo@2.0.3: - resolution: {integrity: sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==} - engines: {node: '>=8'} - - istanbul-lib-report@3.0.1: - resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} - engines: {node: '>=10'} - - istanbul-lib-source-maps@4.0.1: - resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} - engines: {node: '>=10'} - - istanbul-lib-source-maps@5.0.6: - resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} - engines: {node: '>=10'} - - istanbul-reports@3.1.7: - resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} - engines: {node: '>=8'} - - iterator.prototype@1.1.2: - resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} - - jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - - jake@10.9.2: - resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} - engines: {node: '>=10'} - hasBin: true - - jest-changed-files@25.5.0: - resolution: {integrity: sha512-EOw9QEqapsDT7mKF162m8HFzRPbmP8qJQny6ldVOdOVBz3ACgPm/1nAn5fPQ/NDaYhX/AHkrGwwkCncpAVSXcw==} - engines: {node: '>= 8.3'} - - jest-changed-files@28.1.3: - resolution: {integrity: sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - - jest-changed-files@29.7.0: - resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-circus@28.1.3: - resolution: {integrity: sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - - jest-circus@29.7.0: - resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-cli@25.5.4: - resolution: {integrity: sha512-rG8uJkIiOUpnREh1768/N3n27Cm+xPFkSNFO91tgg+8o2rXeVLStz+vkXkGr4UtzH6t1SNbjwoiswd7p4AhHTw==} - engines: {node: '>= 8.3'} - hasBin: true - - jest-cli@28.1.3: - resolution: {integrity: sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - jest-cli@29.7.0: - resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - jest-config@25.5.4: - resolution: {integrity: sha512-SZwR91SwcdK6bz7Gco8qL7YY2sx8tFJYzvg216DLihTWf+LKY/DoJXpM9nTzYakSyfblbqeU48p/p7Jzy05Atg==} - engines: {node: '>= 8.3'} - - jest-config@28.1.3: - resolution: {integrity: sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - peerDependencies: - '@types/node': '*' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - ts-node: - optional: true - - jest-config@29.7.0: - resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@types/node': '*' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - ts-node: - optional: true - - jest-diff@25.5.0: - resolution: {integrity: sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A==} - engines: {node: '>= 8.3'} - - jest-diff@28.1.3: - resolution: {integrity: sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - - jest-diff@29.7.0: - resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-docblock@25.3.0: - resolution: {integrity: sha512-aktF0kCar8+zxRHxQZwxMy70stc9R1mOmrLsT5VO3pIT0uzGRSDAXxSlz4NqQWpuLjPpuMhPRl7H+5FRsvIQAg==} - engines: {node: '>= 8.3'} - - jest-docblock@28.1.1: - resolution: {integrity: sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - - jest-docblock@29.7.0: - resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-each@25.5.0: - resolution: {integrity: sha512-QBogUxna3D8vtiItvn54xXde7+vuzqRrEeaw8r1s+1TG9eZLVJE5ZkKoSUlqFwRjnlaA4hyKGiu9OlkFIuKnjA==} - engines: {node: '>= 8.3'} - - jest-each@28.1.3: - resolution: {integrity: sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - - jest-each@29.7.0: - resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-environment-jsdom@25.5.0: - resolution: {integrity: sha512-7Jr02ydaq4jaWMZLY+Skn8wL5nVIYpWvmeatOHL3tOcV3Zw8sjnPpx+ZdeBfc457p8jCR9J6YCc+Lga0oIy62A==} - engines: {node: '>= 8.3'} - - jest-environment-jsdom@29.7.0: - resolution: {integrity: sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - - jest-environment-node@25.5.0: - resolution: {integrity: sha512-iuxK6rQR2En9EID+2k+IBs5fCFd919gVVK5BeND82fYeLWPqvRcFNPKu9+gxTwfB5XwBGBvZ0HFQa+cHtIoslA==} - engines: {node: '>= 8.3'} - - jest-environment-node@28.1.3: - resolution: {integrity: sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - - jest-environment-node@29.7.0: - resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-get-type@25.2.6: - resolution: {integrity: sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==} - engines: {node: '>= 8.3'} - - jest-get-type@28.0.2: - resolution: {integrity: sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - - jest-get-type@29.6.3: - resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-haste-map@25.5.1: - resolution: {integrity: sha512-dddgh9UZjV7SCDQUrQ+5t9yy8iEgKc1AKqZR9YDww8xsVOtzPQSMVLDChc21+g29oTRexb9/B0bIlZL+sWmvAQ==} - engines: {node: '>= 8.3'} - - jest-haste-map@28.1.3: - resolution: {integrity: sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - - jest-haste-map@29.7.0: - resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-jasmine2@25.5.4: - resolution: {integrity: sha512-9acbWEfbmS8UpdcfqnDO+uBUgKa/9hcRh983IHdM+pKmJPL77G0sWAAK0V0kr5LK3a8cSBfkFSoncXwQlRZfkQ==} - engines: {node: '>= 8.3'} - - jest-junit@14.0.1: - resolution: {integrity: sha512-h7/wwzPbllgpQhhVcRzRC76/cc89GlazThoV1fDxcALkf26IIlRsu/AcTG64f4nR2WPE3Cbd+i/sVf+NCUHrWQ==} - engines: {node: '>=10.12.0'} - - jest-leak-detector@25.5.0: - resolution: {integrity: sha512-rV7JdLsanS8OkdDpZtgBf61L5xZ4NnYLBq72r6ldxahJWWczZjXawRsoHyXzibM5ed7C2QRjpp6ypgwGdKyoVA==} - engines: {node: '>= 8.3'} - - jest-leak-detector@28.1.3: - resolution: {integrity: sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - - jest-leak-detector@29.7.0: - resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-matcher-utils@25.5.0: - resolution: {integrity: sha512-VWI269+9JS5cpndnpCwm7dy7JtGQT30UHfrnM3mXl22gHGt/b7NkjBqXfbhZ8V4B7ANUsjK18PlSBmG0YH7gjw==} - engines: {node: '>= 8.3'} - - jest-matcher-utils@28.1.3: - resolution: {integrity: sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - - jest-matcher-utils@29.7.0: - resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-message-util@25.5.0: - resolution: {integrity: sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA==} - engines: {node: '>= 8.3'} - - jest-message-util@28.1.3: - resolution: {integrity: sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - - jest-message-util@29.7.0: - resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-mock@25.5.0: - resolution: {integrity: sha512-eXWuTV8mKzp/ovHc5+3USJMYsTBhyQ+5A1Mak35dey/RG8GlM4YWVylZuGgVXinaW6tpvk/RSecmF37FKUlpXA==} - engines: {node: '>= 8.3'} - - jest-mock@27.5.1: - resolution: {integrity: sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - - jest-mock@28.1.3: - resolution: {integrity: sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - - jest-mock@29.7.0: - resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-playwright-preset@2.0.0: - resolution: {integrity: sha512-pV5ruTJJMen3lwshUL4dlSqLlP8z4q9MXqWJkmy+sB6HYfzXoqBHzhl+5hslznhnSVTe4Dwu+reiiwcUJpYUbw==} - peerDependencies: - jest: ^28.0.0 - jest-circus: ^28.0.0 - jest-environment-node: ^28.0.0 - jest-runner: ^28.0.0 - - jest-pnp-resolver@1.2.3: - resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} - engines: {node: '>=6'} - peerDependencies: - jest-resolve: '*' - peerDependenciesMeta: - jest-resolve: - optional: true - - jest-process-manager@0.3.1: - resolution: {integrity: sha512-x9W54UgZ7IkzUHgXtnI1x4GKOVjxtwW0CA/7yGbTHtT/YhENO0Lic2yfVyC/gekn7OIEMcQmy0L1r9WLQABfqw==} - - jest-react-native@18.0.0: - resolution: {integrity: sha512-BPL0WBX1kx+qo4KB92o82pcq4uFXH6gmYtN7DDj+etMK6pvtWwPFWpvT9JHmaS96wP5Xf9Vq2ilAxXycgHeMog==} - peerDependencies: - react-native: '>=0.38.0' - - jest-regex-util@25.2.6: - resolution: {integrity: sha512-KQqf7a0NrtCkYmZZzodPftn7fL1cq3GQAFVMn5Hg8uKx/fIenLEobNanUxb7abQ1sjADHBseG/2FGpsv/wr+Qw==} - engines: {node: '>= 8.3'} - - jest-regex-util@28.0.2: - resolution: {integrity: sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - - jest-regex-util@29.6.3: - resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-resolve-dependencies@25.5.4: - resolution: {integrity: sha512-yFmbPd+DAQjJQg88HveObcGBA32nqNZ02fjYmtL16t1xw9bAttSn5UGRRhzMHIQbsep7znWvAvnD4kDqOFM0Uw==} - engines: {node: '>= 8.3'} - - jest-resolve-dependencies@28.1.3: - resolution: {integrity: sha512-qa0QO2Q0XzQoNPouMbCc7Bvtsem8eQgVPNkwn9LnS+R2n8DaVDPL/U1gngC0LTl1RYXJU0uJa2BMC2DbTfFrHA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - - jest-resolve-dependencies@29.7.0: - resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-resolve@25.5.1: - resolution: {integrity: sha512-Hc09hYch5aWdtejsUZhA+vSzcotf7fajSlPA6EZPE1RmPBAD39XtJhvHWFStid58iit4IPDLI/Da4cwdDmAHiQ==} - engines: {node: '>= 8.3'} - - jest-resolve@28.1.3: - resolution: {integrity: sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - - jest-resolve@29.7.0: - resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-runner@25.5.4: - resolution: {integrity: sha512-V/2R7fKZo6blP8E9BL9vJ8aTU4TH2beuqGNxHbxi6t14XzTb+x90B3FRgdvuHm41GY8ch4xxvf0ATH4hdpjTqg==} - engines: {node: '>= 8.3'} - - jest-runner@28.1.3: - resolution: {integrity: sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - - jest-runner@29.7.0: - resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-runtime@25.5.4: - resolution: {integrity: sha512-RWTt8LeWh3GvjYtASH2eezkc8AehVoWKK20udV6n3/gC87wlTbE1kIA+opCvNWyyPeBs6ptYsc6nyHUb1GlUVQ==} - engines: {node: '>= 8.3'} - hasBin: true - - jest-runtime@28.1.3: - resolution: {integrity: sha512-NU+881ScBQQLc1JHG5eJGU7Ui3kLKrmwCPPtYsJtBykixrM2OhVQlpMmFWJjMyDfdkGgBMNjXCGB/ebzsgNGQw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - - jest-runtime@29.7.0: - resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-serializer-html@7.1.0: - resolution: {integrity: sha512-xYL2qC7kmoYHJo8MYqJkzrl/Fdlx+fat4U1AqYg+kafqwcKPiMkOcjWHPKhueuNEgr+uemhGc+jqXYiwCyRyLA==} - - jest-serializer@25.5.0: - resolution: {integrity: sha512-LxD8fY1lByomEPflwur9o4e2a5twSQ7TaVNLlFUuToIdoJuBt8tzHfCsZ42Ok6LkKXWzFWf3AGmheuLAA7LcCA==} - engines: {node: '>= 8.3'} - - jest-snapshot@25.5.1: - resolution: {integrity: sha512-C02JE1TUe64p2v1auUJ2ze5vcuv32tkv9PyhEb318e8XOKF7MOyXdJ7kdjbvrp3ChPLU2usI7Rjxs97Dj5P0uQ==} - engines: {node: '>= 8.3'} - - jest-snapshot@28.1.3: - resolution: {integrity: sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - - jest-snapshot@29.7.0: - resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-util@25.5.0: - resolution: {integrity: sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA==} - engines: {node: '>= 8.3'} - - jest-util@28.1.3: - resolution: {integrity: sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - - jest-util@29.7.0: - resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-validate@25.5.0: - resolution: {integrity: sha512-okUFKqhZIpo3jDdtUXUZ2LxGUZJIlfdYBvZb1aczzxrlyMlqdnnws9MOxezoLGhSaFc2XYaHNReNQfj5zPIWyQ==} - engines: {node: '>= 8.3'} - - jest-validate@28.1.3: - resolution: {integrity: sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - - jest-validate@29.7.0: - resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-watch-typeahead@0.5.0: - resolution: {integrity: sha512-4r36w9vU8+rdg48hj0Z7TvcSqVP6Ao8dk04grlHQNgduyCB0SqrI0xWIl85ZhXrzYvxQ0N5H+rRLAejkQzEHeQ==} - - jest-watch-typeahead@2.2.2: - resolution: {integrity: sha512-+QgOFW4o5Xlgd6jGS5X37i08tuuXNW8X0CV9WNFi+3n8ExCIP+E1melYhvYLjv5fE6D0yyzk74vsSO8I6GqtvQ==} - engines: {node: ^14.17.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - jest: ^27.0.0 || ^28.0.0 || ^29.0.0 - - jest-watcher@25.5.0: - resolution: {integrity: sha512-XrSfJnVASEl+5+bb51V0Q7WQx65dTSk7NL4yDdVjPnRNpM0hG+ncFmDYJo9O8jaSRcAitVbuVawyXCRoxGrT5Q==} - engines: {node: '>= 8.3'} - - jest-watcher@28.1.3: - resolution: {integrity: sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - - jest-watcher@29.7.0: - resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-worker@24.9.0: - resolution: {integrity: sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==} - engines: {node: '>= 6'} - - jest-worker@25.5.0: - resolution: {integrity: sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==} - engines: {node: '>= 8.3'} - - jest-worker@27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} - - jest-worker@28.1.3: - resolution: {integrity: sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - - jest-worker@29.7.0: - resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest@25.5.4: - resolution: {integrity: sha512-hHFJROBTqZahnO+X+PMtT6G2/ztqAZJveGqz//FnWWHurizkD05PQGzRZOhF3XP6z7SJmL+5tCfW8qV06JypwQ==} - engines: {node: '>= 8.3'} - hasBin: true - - jest@28.1.3: - resolution: {integrity: sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - jest@29.7.0: - resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - jju@1.4.0: - resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} - - joi@17.13.3: - resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} - - joycon@3.1.1: - resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} - engines: {node: '>=10'} - - jpjs@1.2.1: - resolution: {integrity: sha512-GxJWybWU4NV0RNKi6EIqk6IRPOTqd/h+U7sbtyuD7yUISUzV78LdHnq2xkevJsTlz/EImux4sWj+wfMiwKLkiw==} - - js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - - js-tokens@9.0.0: - resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} - - js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - - jsbn@0.1.1: - resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} - - jsc-android@250231.0.0: - resolution: {integrity: sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw==} - - jsc-safe-url@0.2.4: - resolution: {integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==} - - jscodeshift@0.14.0: - resolution: {integrity: sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==} - hasBin: true - peerDependencies: - '@babel/preset-env': ^7.1.6 - - jsdoc-type-pratt-parser@4.1.0: - resolution: {integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==} - engines: {node: '>=12.0.0'} - - jsdom@15.2.1: - resolution: {integrity: sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g==} - engines: {node: '>=8'} - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - - jsdom@20.0.3: - resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} - engines: {node: '>=14'} - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - - jsdom@22.1.0: - resolution: {integrity: sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==} - engines: {node: '>=16'} - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - - jsesc@0.5.0: - resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} - hasBin: true - - jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - - jsesc@3.0.2: - resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} - engines: {node: '>=6'} - hasBin: true - - 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-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - - json-schema@0.4.0: - resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} - - json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - - json-stringify-safe@5.0.1: - resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} - - json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true - - json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - - jsonc-eslint-parser@2.4.0: - resolution: {integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - jsonc-parser@3.2.0: - resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} - - jsonfile@4.0.0: - resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} - - jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - - jsonparse@1.3.1: - resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} - engines: {'0': node >= 0.2.0} - - jsonwebtoken@9.0.2: - resolution: {integrity: sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==} - engines: {node: '>=12', npm: '>=6'} - - jsprim@1.4.2: - resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} - engines: {node: '>=0.6.0'} - - jsprim@2.0.2: - resolution: {integrity: sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==} - engines: {'0': node >=0.6.0} - - jsx-ast-utils@3.3.5: - resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} - engines: {node: '>=4.0'} - - jwa@1.4.1: - resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==} - - jws@3.2.2: - resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} - - keygrip@1.1.0: - resolution: {integrity: sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==} - engines: {node: '>= 0.6'} - - keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - - kind-of@3.2.2: - resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} - engines: {node: '>=0.10.0'} - - kind-of@4.0.0: - resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==} - engines: {node: '>=0.10.0'} - - kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - - kleur@3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} - - kleur@4.1.5: - resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} - engines: {node: '>=6'} - - koa-compose@4.1.0: - resolution: {integrity: sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==} - - koa-convert@2.0.0: - resolution: {integrity: sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==} - engines: {node: '>= 10'} - - koa@2.15.3: - resolution: {integrity: sha512-j/8tY9j5t+GVMLeioLaxweJiKUayFhlGqNTzf2ZGwL0ZCQijd2RLHK0SLW5Tsko8YyyqCZC2cojIb0/s62qTAg==} - engines: {node: ^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4} - - kolorist@1.8.0: - resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} - - language-subtag-registry@0.3.23: - resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} - - language-tags@1.0.5: - resolution: {integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==} - - language-tags@1.0.9: - resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} - engines: {node: '>=0.10'} - - lazy-universal-dotenv@4.0.0: - resolution: {integrity: sha512-aXpZJRnTkpK6gQ/z4nk+ZBLd/Qdp118cvPruLSIQzQNRhKwEcdXCOzXuF55VDqIiuAaY3UGZ10DJtvZzDcvsxg==} - engines: {node: '>=14.0.0'} - - leven@3.1.0: - resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} - engines: {node: '>=6'} - - levn@0.3.0: - resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} - engines: {node: '>= 0.8.0'} - - levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - - lighthouse-logger@1.4.2: - resolution: {integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==} - - lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} - - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - - lines-and-columns@2.0.3: - resolution: {integrity: sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - lint-staged@13.3.0: - resolution: {integrity: sha512-mPRtrYnipYYv1FEE134ufbWpeggNTo+O/UPzngoaKzbzHAthvR55am+8GfHTnqNRQVRRrYQLGW9ZyUoD7DsBHQ==} - engines: {node: ^16.14.0 || >=18.0.0} - hasBin: true - - listr2@6.6.1: - resolution: {integrity: sha512-+rAXGHh0fkEWdXBmX+L6mmfmXmXvDGEKzkjxO+8mP3+nI/r/CWznVBvsibXdxda9Zz0OW2e2ikphN3OwCT/jSg==} - engines: {node: '>=16.0.0'} - peerDependencies: - enquirer: '>= 2.3.0 < 3' - peerDependenciesMeta: - enquirer: - optional: true - - load-tsconfig@0.2.5: - resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - loader-runner@4.3.0: - resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} - engines: {node: '>=6.11.5'} - - loader-utils@2.0.4: - resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} - engines: {node: '>=8.9.0'} - - loader-utils@3.3.1: - resolution: {integrity: sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==} - engines: {node: '>= 12.13.0'} - - local-pkg@0.5.0: - resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} - engines: {node: '>=14'} - - locate-path@3.0.0: - resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} - engines: {node: '>=6'} - - locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - lockfile@1.0.4: - resolution: {integrity: sha512-cvbTwETRfsFh4nHsL1eGWapU1XFi5Ot9E85sWAwia7Y7EgB7vfqcZhTKZ+l7hCGxSPoushMv5GKhT5PdLv03WA==} - - lodash.camelcase@4.3.0: - resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} - - lodash.clonedeepwith@4.5.0: - resolution: {integrity: sha512-QRBRSxhbtsX1nc0baxSkkK5WlVTTm/s48DSukcGcWZwIyI8Zz+lB+kFiELJXtzfH4Aj6kMWQ1VWW4U5uUDgZMA==} - - lodash.debounce@4.0.8: - resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - - lodash.flattendeep@4.4.0: - resolution: {integrity: sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==} - - lodash.get@4.4.2: - resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} - - lodash.includes@4.3.0: - resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} - - lodash.isboolean@3.0.3: - resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} - - lodash.isequal@4.5.0: - resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} - - lodash.isinteger@4.0.4: - resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} - - lodash.isnumber@3.0.3: - resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} - - lodash.isplainobject@4.0.6: - resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} - - lodash.isstring@4.0.1: - resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} - - lodash.memoize@4.1.2: - resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} - - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - - lodash.once@4.1.1: - resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} - - lodash.sortby@4.7.0: - resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} - - lodash.startcase@4.4.0: - resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} - - lodash.throttle@4.1.1: - resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} - - lodash.uniq@4.5.0: - resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} - - lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - - log-symbols@3.0.0: - resolution: {integrity: sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==} - engines: {node: '>=8'} - - log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - - log-update@2.3.0: - resolution: {integrity: sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg==} - engines: {node: '>=4'} - - log-update@5.0.1: - resolution: {integrity: sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - log4js@6.9.1: - resolution: {integrity: sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==} - engines: {node: '>=8.0'} - - logkitty@0.7.1: - resolution: {integrity: sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==} - hasBin: true - - lolex@5.1.2: - resolution: {integrity: sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A==} - - long-timeout@0.1.1: - resolution: {integrity: sha512-BFRuQUqc7x2NWxfJBCyUrN8iYUYznzL9JROmRz1gZ6KlOIgmoD+njPVbb+VNn2nGMKggMsK79iUNErillsrx7w==} - - loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true - - loupe@2.3.7: - resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} - - loupe@3.1.1: - resolution: {integrity: sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==} - - lowdb@1.0.0: - resolution: {integrity: sha512-2+x8esE/Wb9SQ1F9IHaYWfsC9FIecLOPrK4g17FGEayjUWH172H6nwicRovGvSE2CPZouc2MCIqCI7h9d+GftQ==} - engines: {node: '>=4'} - - lower-case@2.0.2: - resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} - - lru-cache@10.4.3: - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - - lru-cache@4.1.5: - resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} - - lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - - lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - - lru-cache@7.18.3: - resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} - engines: {node: '>=12'} - - luxon@3.5.0: - resolution: {integrity: sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==} - engines: {node: '>=12'} - - lz-string@1.5.0: - resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} - hasBin: true - - magic-string@0.25.9: - resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} - - magic-string@0.27.0: - resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} - engines: {node: '>=12'} - - magic-string@0.30.11: - resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} - - magicast@0.3.5: - resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} - - make-dir@2.1.0: - resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} - engines: {node: '>=6'} - - 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@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - - makeerror@1.0.12: - resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} - - map-cache@0.2.2: - resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} - engines: {node: '>=0.10.0'} - - map-or-similar@1.5.0: - resolution: {integrity: sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==} - - map-visit@1.0.0: - resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==} - engines: {node: '>=0.10.0'} - - marky@1.2.5: - resolution: {integrity: sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==} - - mdn-data@2.0.14: - resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} - - mdn-data@2.0.28: - resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} - - mdn-data@2.0.30: - resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} - - media-typer@0.3.0: - resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} - engines: {node: '>= 0.6'} - - memoize-one@5.2.1: - resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} - - memoize-one@6.0.0: - resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} - - memoizerific@1.11.3: - resolution: {integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==} - - merge-descriptors@1.0.3: - resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} - - merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - - methods@1.1.2: - resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} - engines: {node: '>= 0.6'} - - metro-babel-transformer@0.80.12: - resolution: {integrity: sha512-YZziRs0MgA3pzCkkvOoQRXjIoVjvrpi/yRlJnObyIvMP6lFdtyG4nUGIwGY9VXnBvxmXD6mPY2e+NSw6JAyiRg==} - engines: {node: '>=18'} - - metro-cache-key@0.80.12: - resolution: {integrity: sha512-o4BspKnugg/pE45ei0LGHVuBJXwRgruW7oSFAeSZvBKA/sGr0UhOGY3uycOgWInnS3v5yTTfiBA9lHlNRhsvGA==} - engines: {node: '>=18'} - - metro-cache@0.80.12: - resolution: {integrity: sha512-p5kNHh2KJ0pbQI/H7ZBPCEwkyNcSz7OUkslzsiIWBMPQGFJ/xArMwkV7I+GJcWh+b4m6zbLxE5fk6fqbVK1xGA==} - engines: {node: '>=18'} - - metro-config@0.80.12: - resolution: {integrity: sha512-4rwOWwrhm62LjB12ytiuR5NgK1ZBNr24/He8mqCsC+HXZ+ATbrewLNztzbAZHtFsrxP4D4GLTGgh96pCpYLSAQ==} - engines: {node: '>=18'} - - metro-core@0.80.12: - resolution: {integrity: sha512-QqdJ/yAK+IpPs2HU/h5v2pKEdANBagSsc6DRSjnwSyJsCoHlmyJKCaCJ7KhWGx+N4OHxh37hoA8fc2CuZbx0Fw==} - engines: {node: '>=18'} - - metro-file-map@0.80.12: - resolution: {integrity: sha512-sYdemWSlk66bWzW2wp79kcPMzwuG32x1ZF3otI0QZTmrnTaaTiGyhE66P1z6KR4n2Eu5QXiABa6EWbAQv0r8bw==} - engines: {node: '>=18'} - - metro-minify-terser@0.80.12: - resolution: {integrity: sha512-muWzUw3y5k+9083ZoX9VaJLWEV2Jcgi+Oan0Mmb/fBNMPqP9xVDuy4pOMn/HOiGndgfh/MK7s4bsjkyLJKMnXQ==} - engines: {node: '>=18'} - - metro-resolver@0.80.12: - resolution: {integrity: sha512-PR24gYRZnYHM3xT9pg6BdbrGbM/Cu1TcyIFBVlAk7qDAuHkUNQ1nMzWumWs+kwSvtd9eZGzHoucGJpTUEeLZAw==} - engines: {node: '>=18'} - - metro-runtime@0.80.12: - resolution: {integrity: sha512-LIx7+92p5rpI0i6iB4S4GBvvLxStNt6fF0oPMaUd1Weku7jZdfkCZzmrtDD9CSQ6EPb0T9NUZoyXIxlBa3wOCw==} - engines: {node: '>=18'} - - metro-source-map@0.80.12: - resolution: {integrity: sha512-o+AXmE7hpvM8r8MKsx7TI21/eerYYy2DCDkWfoBkv+jNkl61khvDHlQn0cXZa6lrcNZiZkl9oHSMcwLLIrFmpw==} - engines: {node: '>=18'} - - metro-symbolicate@0.80.12: - resolution: {integrity: sha512-/dIpNdHksXkGHZXARZpL7doUzHqSNxgQ8+kQGxwpJuHnDhGkENxB5PS2QBaTDdEcmyTMjS53CN1rl9n1gR6fmw==} - engines: {node: '>=18'} - hasBin: true - - metro-transform-plugins@0.80.12: - resolution: {integrity: sha512-WQWp00AcZvXuQdbjQbx1LzFR31IInlkCDYJNRs6gtEtAyhwpMMlL2KcHmdY+wjDO9RPcliZ+Xl1riOuBecVlPA==} - engines: {node: '>=18'} - - metro-transform-worker@0.80.12: - resolution: {integrity: sha512-KAPFN1y3eVqEbKLx1I8WOarHPqDMUa8WelWxaJCNKO/yHCP26zELeqTJvhsQup+8uwB6EYi/sp0b6TGoh6lOEA==} - engines: {node: '>=18'} - - metro@0.80.12: - resolution: {integrity: sha512-1UsH5FzJd9quUsD1qY+zUG4JY3jo3YEMxbMYH9jT6NK3j4iORhlwTK8fYTfAUBhDKjgLfKjAh7aoazNE23oIRA==} - engines: {node: '>=18'} - hasBin: true - - micromatch@3.1.10: - resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} - engines: {node: '>=0.10.0'} - - micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} - - micromatch@4.0.8: - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} - engines: {node: '>=8.6'} - - mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - - mime-db@1.53.0: - resolution: {integrity: sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==} - engines: {node: '>= 0.6'} - - mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - - mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true - - mime@2.6.0: - resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} - engines: {node: '>=4.0.0'} - hasBin: true - - mime@3.0.0: - resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} - engines: {node: '>=10.0.0'} - hasBin: true - - mimic-fn@1.2.0: - resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==} - engines: {node: '>=4'} - - mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - - mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - - min-indent@1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} - - mini-svg-data-uri@1.4.4: - resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==} - hasBin: true - - minimatch@3.0.8: - resolution: {integrity: sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==} - - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - - minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} - - minimatch@7.4.6: - resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} - engines: {node: '>=10'} - - minimatch@8.0.4: - resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==} - engines: {node: '>=16 || 14 >=14.17'} - - minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} - engines: {node: '>=16 || 14 >=14.17'} - - minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} - engines: {node: '>=16 || 14 >=14.17'} - - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - minipass@4.2.8: - resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} - engines: {node: '>=8'} - - minipass@7.1.2: - resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} - engines: {node: '>=16 || 14 >=14.17'} - - mixin-deep@1.3.2: - resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} - engines: {node: '>=0.10.0'} - - mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - - mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - - mlly@1.7.1: - resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} - - mri@1.2.0: - resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} - engines: {node: '>=4'} - - mrmime@2.0.0: - resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} - engines: {node: '>=10'} - - ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - muggle-string@0.3.1: - resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==} - - mute-stream@0.0.8: - resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} - - mv@2.1.1: - resolution: {integrity: sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==} - engines: {node: '>=0.8.0'} - - mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - - nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - nanomatch@1.2.13: - resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} - engines: {node: '>=0.10.0'} - - natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - - ncp@2.0.0: - resolution: {integrity: sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==} - hasBin: true - - negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} - - neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - - nice-try@1.0.5: - resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} - - no-case@3.0.4: - resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} - - nocache@3.0.4: - resolution: {integrity: sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==} - engines: {node: '>=12.0.0'} - - node-abort-controller@3.1.1: - resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} - - node-dir@0.1.17: - resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==} - engines: {node: '>= 0.10.5'} - - node-fetch@2.6.7: - resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - 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-forge@1.3.1: - resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} - engines: {node: '>= 6.13.0'} - - node-int64@0.4.0: - resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - - node-machine-id@1.1.12: - resolution: {integrity: sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==} - - node-notifier@6.0.0: - resolution: {integrity: sha512-SVfQ/wMw+DesunOm5cKqr6yDcvUTDl/yc97ybGHMrteNEY6oekXpNpS3lZwgLlwz0FLgHoiW28ZpmBHUDg37cw==} - - node-preload@0.2.1: - resolution: {integrity: sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==} - engines: {node: '>=8'} - - node-releases@2.0.18: - resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} - - node-schedule@2.1.1: - resolution: {integrity: sha512-OXdegQq03OmXEjt2hZP33W2YPs/E5BcFQks46+G2gAxs4gHOIVD1u7EqlYLYSKsaIpyKCK9Gbk0ta1/gjRSMRQ==} - engines: {node: '>=6'} - - node-stream-zip@1.15.0: - resolution: {integrity: sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==} - engines: {node: '>=0.12.0'} - - normalize-package-data@2.5.0: - resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} - - normalize-path@2.1.1: - resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} - engines: {node: '>=0.10.0'} - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} - - normalize-url@6.1.0: - resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} - engines: {node: '>=10'} - - npm-package-arg@11.0.1: - resolution: {integrity: sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ==} - engines: {node: ^16.14.0 || >=18.0.0} - - npm-run-path@2.0.2: - resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} - engines: {node: '>=4'} - - npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - - npm-run-path@5.3.0: - resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - - nullthrows@1.1.1: - resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} - - nwsapi@2.2.12: - resolution: {integrity: sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==} - - nx@19.8.0: - resolution: {integrity: sha512-zD1ZvkfxECrd9QnvUyAUVLESmjl0bpIhB1gLcYN2BqsCkB1vkngbxIvXDorI98keOVEfHzeuwNSkufQNls1hug==} - hasBin: true - peerDependencies: - '@swc-node/register': ^1.8.0 - '@swc/core': ^1.3.85 - peerDependenciesMeta: - '@swc-node/register': - optional: true - '@swc/core': - optional: true - - nyc@15.1.0: - resolution: {integrity: sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==} - engines: {node: '>=8.9'} - hasBin: true - - oauth-sign@0.9.0: - resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} - - ob1@0.80.12: - resolution: {integrity: sha512-VMArClVT6LkhUGpnuEoBuyjG9rzUyEzg4PDkav6wK1cLhOK02gPCYFxoiB4mqVnrMhDpIzJcrGNAMVi9P+hXrw==} - engines: {node: '>=18'} - - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - - object-copy@0.1.0: - resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==} - engines: {node: '>=0.10.0'} - - object-inspect@1.13.2: - resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} - engines: {node: '>= 0.4'} - - object-is@1.1.6: - resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} - engines: {node: '>= 0.4'} - - object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - - object-visit@1.0.1: - resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==} - engines: {node: '>=0.10.0'} - - object.assign@4.1.5: - resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} - engines: {node: '>= 0.4'} - - object.entries@1.1.8: - resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} - engines: {node: '>= 0.4'} - - object.fromentries@2.0.8: - resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} - engines: {node: '>= 0.4'} - - object.groupby@1.0.3: - resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} - engines: {node: '>= 0.4'} - - object.pick@1.3.0: - resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} - engines: {node: '>=0.10.0'} - - object.values@1.2.0: - resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} - engines: {node: '>= 0.4'} - - on-exit-leak-free@0.2.0: - resolution: {integrity: sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==} - - on-exit-leak-free@2.1.2: - resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} - engines: {node: '>=14.0.0'} - - on-finished@2.3.0: - resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} - engines: {node: '>= 0.8'} - - on-finished@2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} - engines: {node: '>= 0.8'} - - on-headers@1.0.2: - resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} - engines: {node: '>= 0.8'} - - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - - onetime@2.0.1: - resolution: {integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==} - engines: {node: '>=4'} - - onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - - onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} - - only@0.0.2: - resolution: {integrity: sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==} - - open@6.4.0: - resolution: {integrity: sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==} - engines: {node: '>=8'} - - 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'} - - opener@1.5.2: - resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} - hasBin: true - - optionator@0.8.3: - resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} - engines: {node: '>= 0.8.0'} - - optionator@0.9.4: - resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} - engines: {node: '>= 0.8.0'} - - ora@4.1.1: - resolution: {integrity: sha512-sjYP8QyVWBpBZWD6Vr1M/KwknSw6kJOz41tvGMlwWeClHBtYKTbHMki1PsLZnxKpXMPbTKv9b3pjQu3REib96A==} - engines: {node: '>=8'} - - ora@5.3.0: - resolution: {integrity: sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==} - engines: {node: '>=10'} - - ora@5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} - engines: {node: '>=10'} - - os-homedir@1.0.2: - resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==} - engines: {node: '>=0.10.0'} - - os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - - outdent@0.5.0: - resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} - - p-each-series@2.2.0: - resolution: {integrity: sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==} - engines: {node: '>=8'} - - p-filter@2.1.0: - resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} - engines: {node: '>=8'} - - p-finally@1.0.0: - resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} - engines: {node: '>=4'} - - p-finally@2.0.1: - resolution: {integrity: sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==} - engines: {node: '>=8'} - - 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'} - - p-limit@5.0.0: - resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} - engines: {node: '>=18'} - - p-locate@3.0.0: - resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} - engines: {node: '>=6'} - - p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - p-map@2.1.0: - resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} - engines: {node: '>=6'} - - p-map@3.0.0: - resolution: {integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==} - engines: {node: '>=8'} - - p-map@4.0.0: - resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} - engines: {node: '>=10'} - - p-queue@6.6.2: - resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} - engines: {node: '>=8'} - - p-timeout@3.2.0: - resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} - engines: {node: '>=8'} - - p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - - package-hash@4.0.0: - resolution: {integrity: sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==} - engines: {node: '>=8'} - - package-json-from-dist@1.0.0: - resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} - - package-manager-detector@0.2.0: - resolution: {integrity: sha512-E385OSk9qDcXhcM9LNSe4sdhx8a9mAPrZ4sMLW+tmxl5ZuGtPUcdFu+MPP2jbgiWAZ6Pfe5soGFMd+0Db5Vrog==} - - pako@0.2.9: - resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} - - parent-module@1.0.1: - 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'} - - parse-passwd@1.0.0: - resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} - engines: {node: '>=0.10.0'} - - parse5@5.1.0: - resolution: {integrity: sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==} - - parse5@7.1.2: - resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} - - parseurl@1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} - engines: {node: '>= 0.8'} - - pascal-case@3.1.2: - resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} - - pascalcase@0.1.1: - resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} - engines: {node: '>=0.10.0'} - - path-browserify@1.0.1: - resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} - - path-dirname@1.0.2: - resolution: {integrity: sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==} - - 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'} - - path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - - path-key@2.0.1: - resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} - engines: {node: '>=4'} - - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - - path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - - path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} - - path-to-regexp@0.1.10: - resolution: {integrity: sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==} - - path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - - pathe@1.1.2: - resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} - - pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - - pathval@2.0.0: - resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} - engines: {node: '>= 14.16'} - - peek-stream@1.1.3: - resolution: {integrity: sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==} - - performance-now@2.1.0: - resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} - - picocolors@1.1.0: - resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - pidtree@0.6.0: - resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} - engines: {node: '>=0.10'} - hasBin: true - - pify@3.0.0: - resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} - engines: {node: '>=4'} - - pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} - - pify@5.0.0: - resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==} - engines: {node: '>=10'} - - pino-abstract-transport@0.5.0: - resolution: {integrity: sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==} - - pino-abstract-transport@1.1.0: - resolution: {integrity: sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA==} - - pino-std-serializers@4.0.0: - resolution: {integrity: sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==} - - pino-std-serializers@6.2.2: - resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==} - - pino@7.11.0: - resolution: {integrity: sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==} - hasBin: true - - pino@8.17.2: - resolution: {integrity: sha512-LA6qKgeDMLr2ux2y/YiUt47EfgQ+S9LznBWOJdN3q1dx2sv0ziDLUBeVpyVv17TEcGCBuWf0zNtg3M5m1NhhWQ==} - hasBin: true - - pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} - - pkg-dir@3.0.0: - resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} - engines: {node: '>=6'} - - pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} - - pkg-dir@5.0.0: - resolution: {integrity: sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==} - engines: {node: '>=10'} - - pkg-types@1.2.0: - resolution: {integrity: sha512-+ifYuSSqOQ8CqP4MbZA5hDpb97n3E8SVWdJe+Wms9kj745lmd3b7EZJiqvmLwAlmRfjrI7Hi5z3kdBJ93lFNPA==} - - pkginfo@0.4.1: - resolution: {integrity: sha512-8xCNE/aT/EXKenuMDZ+xTVwkT8gsoHN2z/Q29l80u0ppGEXVvsKRzNMbtKhg8LS8k1tJLAHHylf6p4VFmP6XUQ==} - engines: {node: '>= 0.4.0'} - - playwright-core@1.47.2: - resolution: {integrity: sha512-3JvMfF+9LJfe16l7AbSmU555PaTl2tPyQsVInqm3id16pdDfvZ8TTZ/pyzmkbDrZTQefyzU7AIHlZqQnxpqHVQ==} - engines: {node: '>=18'} - hasBin: true - - playwright@1.47.2: - resolution: {integrity: sha512-nx1cLMmQWqmA3UsnjaaokyoUpdVaaDhJhMoxX2qj3McpjnsqFHs516QAKYhqHAgOP+oCFTEOCOAaD1RgD/RQfA==} - engines: {node: '>=18'} - hasBin: true - - pn@1.1.0: - resolution: {integrity: sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==} - - polished@4.3.1: - resolution: {integrity: sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==} - engines: {node: '>=10'} - - portfinder@1.0.32: - resolution: {integrity: sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==} - engines: {node: '>= 0.12.0'} - - posix-character-classes@0.1.1: - resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} - engines: {node: '>=0.10.0'} - - possible-typed-array-names@1.0.0: - resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} - engines: {node: '>= 0.4'} - - postcss-calc@8.2.4: - resolution: {integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==} - peerDependencies: - postcss: ^8.2.2 - - postcss-colormin@5.3.1: - resolution: {integrity: sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-convert-values@5.1.3: - resolution: {integrity: sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-discard-comments@5.1.2: - resolution: {integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-discard-duplicates@5.1.0: - resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-discard-empty@5.1.1: - resolution: {integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-discard-overridden@5.1.0: - resolution: {integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-load-config@3.1.4: - resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} - engines: {node: '>= 10'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - - postcss-merge-longhand@5.1.7: - resolution: {integrity: sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-merge-rules@5.1.4: - resolution: {integrity: sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-minify-font-values@5.1.0: - resolution: {integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-minify-gradients@5.1.1: - resolution: {integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-minify-params@5.1.4: - resolution: {integrity: sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-minify-selectors@5.2.1: - resolution: {integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-modules-extract-imports@3.1.0: - resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - - postcss-modules-local-by-default@4.1.0: - resolution: {integrity: sha512-rm0bdSv4jC3BDma3s9H19ZddW0aHX6EoqwDYU2IfZhRN+53QrufTRo2IdkAbRqLx4R2IYbZnbjKKxg4VN5oU9Q==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - - postcss-modules-scope@3.2.1: - resolution: {integrity: sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - - postcss-modules-values@4.0.0: - resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - - postcss-modules@4.3.1: - resolution: {integrity: sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q==} - peerDependencies: - postcss: ^8.0.0 - - postcss-normalize-charset@5.1.0: - resolution: {integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-normalize-display-values@5.1.0: - resolution: {integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-normalize-positions@5.1.1: - resolution: {integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-normalize-repeat-style@5.1.1: - resolution: {integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-normalize-string@5.1.0: - resolution: {integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-normalize-timing-functions@5.1.0: - resolution: {integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-normalize-unicode@5.1.1: - resolution: {integrity: sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-normalize-url@5.1.0: - resolution: {integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-normalize-whitespace@5.1.1: - resolution: {integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-ordered-values@5.1.3: - resolution: {integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-reduce-initial@5.1.2: - resolution: {integrity: sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-reduce-transforms@5.1.0: - resolution: {integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-selector-parser@6.1.2: - resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} - engines: {node: '>=4'} - - postcss-selector-parser@7.0.0: - resolution: {integrity: sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==} - engines: {node: '>=4'} - - postcss-svgo@5.1.0: - resolution: {integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-unique-selectors@5.1.1: - resolution: {integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - - postcss@8.4.47: - resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} - engines: {node: ^10 || ^12 || >=14} - - prelude-ls@1.1.2: - resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} - engines: {node: '>= 0.8.0'} - - prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - - prettier-linter-helpers@1.0.0: - resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} - engines: {node: '>=6.0.0'} - - prettier@1.19.1: - resolution: {integrity: sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==} - engines: {node: '>=4'} - hasBin: true - - prettier@2.8.8: - resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} - engines: {node: '>=10.13.0'} - hasBin: true - - pretty-format@25.5.0: - resolution: {integrity: sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==} - engines: {node: '>= 8.3'} - - pretty-format@26.6.2: - resolution: {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==} - engines: {node: '>= 10'} - - pretty-format@27.5.1: - resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - - pretty-format@28.1.3: - resolution: {integrity: sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - - pretty-format@29.7.0: - resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - pretty-hrtime@1.0.3: - resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==} - engines: {node: '>= 0.8'} - - proc-log@3.0.0: - resolution: {integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - - process-on-spawn@1.0.0: - resolution: {integrity: sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==} - engines: {node: '>=8'} - - process-warning@1.0.0: - resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} - - process-warning@3.0.0: - resolution: {integrity: sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==} - - process@0.11.10: - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} - engines: {node: '>= 0.6.0'} - - progress-estimator@0.2.2: - resolution: {integrity: sha512-GF76Ac02MTJD6o2nMNtmtOFjwWCnHcvXyn5HOWPQnEMO8OTLw7LAvNmrwe8LmdsB+eZhwUu9fX/c9iQnBxWaFA==} - - progress@2.0.3: - resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} - engines: {node: '>=0.4.0'} - - promise.series@0.2.0: - resolution: {integrity: sha512-VWQJyU2bcDTgZw8kpfBpB/ejZASlCrzwz5f2hjb/zlujOEB4oeiAhHygAWq8ubsX2GVkD4kCU5V2dwOTaCY5EQ==} - engines: {node: '>=0.12'} - - promise@8.3.0: - resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} - - prompts@2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} - engines: {node: '>= 6'} - - prop-types@15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - - proxy-addr@2.0.7: - resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} - engines: {node: '>= 0.10'} - - proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - - pseudomap@1.0.2: - resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} - - psl@1.9.0: - resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} - - pump@2.0.1: - resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==} - - pump@3.0.2: - resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} - - pumpify@1.5.1: - resolution: {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==} - - punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} - - pure-rand@6.1.0: - resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} - - qs@6.10.4: - resolution: {integrity: sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==} - engines: {node: '>=0.6'} - - qs@6.13.0: - resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} - engines: {node: '>=0.6'} - - qs@6.5.3: - resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} - engines: {node: '>=0.6'} - - querystring@0.2.1: - resolution: {integrity: sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==} - engines: {node: '>=0.4.x'} - deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. - - querystringify@2.2.0: - resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} - - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - - queue-tick@1.0.1: - resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} - - queue@6.0.2: - resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} - - quick-format-unescaped@4.0.4: - resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} - - rambda@9.3.0: - resolution: {integrity: sha512-cl/7DCCKNxmsbc0dXZTJTY08rvDdzLhVfE6kPBson1fWzDapLzv0RKSzjpmAqP53fkQqAvq05gpUVHTrUNsuxg==} - - ramda@0.29.0: - resolution: {integrity: sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA==} - - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - - range-parser@1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} - engines: {node: '>= 0.6'} - - raw-body@2.5.2: - resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} - engines: {node: '>= 0.8'} - - react-devtools-core@5.3.1: - resolution: {integrity: sha512-7FSb9meX0btdBQLwdFOwt6bGqvRPabmVMMslv8fgoSPqXyuGpgQe36kx8gR86XPw7aV1yVouTp6fyZ0EH+NfUw==} - - react-docgen-typescript@2.2.2: - resolution: {integrity: sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==} - peerDependencies: - typescript: '>= 4.3.x' - - react-docgen@7.0.3: - resolution: {integrity: sha512-i8aF1nyKInZnANZ4uZrH49qn1paRgBZ7wZiCNBMnenlPzEv0mRl+ShpTVEI6wZNl8sSc79xZkivtgLKQArcanQ==} - engines: {node: '>=16.14.0'} - - react-dom@18.3.1: - resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} - peerDependencies: - react: ^18.3.1 - - react-element-to-jsx-string@15.0.0: - resolution: {integrity: sha512-UDg4lXB6BzlobN60P8fHWVPX3Kyw8ORrTeBtClmIlGdkOOE+GYQSFvmEU5iLLpwp/6v42DINwNcwOhOLfQ//FQ==} - peerDependencies: - react: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0 - react-dom: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0 - - react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - - react-is@17.0.2: - resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - - react-is@18.1.0: - resolution: {integrity: sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==} - - react-is@18.3.1: - resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} - - react-native-svg-transformer@1.3.0: - resolution: {integrity: sha512-SV92uRjENDuanHLVuLy2Sdvt6f8vu7qnG8vC9CwBiAXV0BpWN4/wPvfc+r2WPAkcctRZLLOvrGnGA2o8nZd0cg==} - peerDependencies: - react-native: '>=0.59.0' - react-native-svg: '>=12.0.0' - - react-native-svg@15.3.0: - resolution: {integrity: sha512-mBHu/fdlzUbpGX8SZFxgbKvK/sgqLfDLP8uh8G7Us+zJgdjO8OSEeqHQs+kPRdQmdLJQiqPJX2WXgCl7ToTWqw==} - peerDependencies: - react: '*' - react-native: '*' - - react-native@0.74.1: - resolution: {integrity: sha512-0H2XpmghwOtfPpM2LKqHIN7gxy+7G/r1hwJHKLV6uoyXGC/gCojRtoo5NqyKrWpFC8cqyT6wTYCLuG7CxEKilg==} - engines: {node: '>=18'} - hasBin: true - peerDependencies: - '@types/react': ^18.2.6 - react: 18.2.0 - peerDependenciesMeta: - '@types/react': - optional: true - - react-refresh@0.14.2: - resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} - engines: {node: '>=0.10.0'} - - react-shallow-renderer@16.15.0: - resolution: {integrity: sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==} - peerDependencies: - react: ^16.0.0 || ^17.0.0 || ^18.0.0 - - react-test-renderer@18.2.0: - resolution: {integrity: sha512-JWD+aQ0lh2gvh4NM3bBM42Kx+XybOxCpgYK7F8ugAlpaTSnWsX+39Z4XkOykGZAHrjwwTZT3x3KxswVWxHPUqA==} - peerDependencies: - react: ^18.2.0 - - react@18.2.0: - resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} - engines: {node: '>=0.10.0'} - - react@18.3.1: - resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} - engines: {node: '>=0.10.0'} - - read-pkg-up@7.0.1: - resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} - engines: {node: '>=8'} - - read-pkg@5.2.0: - resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} - engines: {node: '>=8'} - - read-yaml-file@1.1.0: - resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} - engines: {node: '>=6'} - - readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - - readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - - readable-stream@4.5.2: - resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - readline@1.3.0: - resolution: {integrity: sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==} - - real-require@0.1.0: - resolution: {integrity: sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==} - engines: {node: '>= 12.13.0'} - - real-require@0.2.0: - resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} - engines: {node: '>= 12.13.0'} - - realpath-native@2.0.0: - resolution: {integrity: sha512-v1SEYUOXXdbBZK8ZuNgO4TBjamPsiSgcFr0aP+tEKpQZK8vooEUqV6nm6Cv502mX4NF2EfsnVqtNAHG+/6Ur1Q==} - engines: {node: '>=8'} - - recast@0.21.5: - resolution: {integrity: sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==} - engines: {node: '>= 4'} - - recast@0.23.9: - resolution: {integrity: sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==} - engines: {node: '>= 4'} - - rechoir@0.6.2: - resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} - engines: {node: '>= 0.10'} - - redent@3.0.0: - resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} - engines: {node: '>=8'} - - reflect.getprototypeof@1.0.6: - resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==} - engines: {node: '>= 0.4'} - - regenerate-unicode-properties@10.2.0: - resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==} - engines: {node: '>=4'} - - regenerate@1.4.2: - resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - - regenerator-runtime@0.13.11: - resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - - regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - - regenerator-transform@0.15.2: - resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} - - regex-not@1.0.2: - resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} - engines: {node: '>=0.10.0'} - - regexp.prototype.flags@1.5.2: - resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} - engines: {node: '>= 0.4'} - - regexpp@2.0.1: - resolution: {integrity: sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==} - engines: {node: '>=6.5.0'} - - regexpp@3.2.0: - resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} - engines: {node: '>=8'} - - regexpu-core@5.3.2: - resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} - engines: {node: '>=4'} - - regexpu-core@6.1.1: - resolution: {integrity: sha512-k67Nb9jvwJcJmVpw0jPttR1/zVfnKf8Km0IPatrU/zJ5XeG3+Slx0xLXs9HByJSzXzrlz5EDvN6yLNMDc2qdnw==} - engines: {node: '>=4'} - - regjsgen@0.8.0: - resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} - - regjsparser@0.11.1: - resolution: {integrity: sha512-1DHODs4B8p/mQHU9kr+jv8+wIC9mtG4eBHxWxIq5mhjE3D5oORhCc6deRKzTjs9DcfRFmj9BHSDguZklqCGFWQ==} - hasBin: true - - regjsparser@0.9.1: - resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} - hasBin: true - - release-zalgo@1.0.0: - resolution: {integrity: sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==} - engines: {node: '>=4'} - - remove-trailing-separator@1.1.0: - resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} - - repeat-element@1.1.4: - resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==} - engines: {node: '>=0.10.0'} - - repeat-string@1.6.1: - resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} - engines: {node: '>=0.10'} - - request-promise-core@1.1.4: - resolution: {integrity: sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==} - engines: {node: '>=0.10.0'} - peerDependencies: - request: ^2.34 - - request-promise-native@1.0.9: - resolution: {integrity: sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==} - engines: {node: '>=0.12.0'} - deprecated: request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142 - peerDependencies: - request: ^2.34 - - request@2.88.2: - resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} - engines: {node: '>= 6'} - deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 - - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - - require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - - require-main-filename@2.0.0: - resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - - requires-port@1.0.0: - resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} - - resolve-cwd@3.0.0: - resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} - engines: {node: '>=8'} - - resolve-dir@0.1.1: - resolution: {integrity: sha512-QxMPqI6le2u0dCLyiGzgy92kjkkL6zO0XyvHzjdTNH3zM6e5Hz3BwG6+aEyNgiQ5Xz6PwTwgQEj3U50dByPKIA==} - engines: {node: '>=0.10.0'} - - resolve-dir@1.0.1: - resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==} - engines: {node: '>=0.10.0'} - - resolve-from@3.0.0: - resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} - engines: {node: '>=4'} - - resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - - resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - - resolve-url@0.2.1: - resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} - deprecated: https://github.com/lydell/resolve-url#deprecated - - resolve.exports@1.1.0: - resolution: {integrity: sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==} - engines: {node: '>=10'} - - resolve.exports@1.1.1: - resolution: {integrity: sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==} - engines: {node: '>=10'} - - resolve.exports@2.0.2: - resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} - engines: {node: '>=10'} - - resolve@1.1.7: - resolution: {integrity: sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==} - - resolve@1.17.0: - resolution: {integrity: sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==} - - resolve@1.19.0: - resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} - - resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} - hasBin: true - - resolve@2.0.0-next.5: - resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} - hasBin: true - - restore-cursor@2.0.0: - resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==} - engines: {node: '>=4'} - - restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} - - restore-cursor@4.0.0: - resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - ret@0.1.15: - resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} - engines: {node: '>=0.12'} - - reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - - rfdc@1.4.1: - resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - - rimraf@2.4.5: - resolution: {integrity: sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - - rimraf@2.6.3: - resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - - rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - - rimraf@4.4.1: - resolution: {integrity: sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==} - engines: {node: '>=14'} - hasBin: true - - rollup-plugin-copy@3.5.0: - resolution: {integrity: sha512-wI8D5dvYovRMx/YYKtUNt3Yxaw4ORC9xo6Gt9t22kveWz1enG9QrhVlagzwrxSC455xD1dHMKhIJkbsQ7d48BA==} - engines: {node: '>=8.3'} - - rollup-plugin-postcss@4.0.2: - resolution: {integrity: sha512-05EaY6zvZdmvPUDi3uCcAQoESDcYnv8ogJJQRp6V5kZ6J6P7uAVJlrTZcaaA20wTH527YTnKfkAoPxWI/jPp4w==} - engines: {node: '>=10'} - peerDependencies: - postcss: 8.x - - rollup-plugin-sourcemaps@0.6.3: - resolution: {integrity: sha512-paFu+nT1xvuO1tPFYXGe+XnQvg4Hjqv/eIhG8i5EspfYYPBKL57X7iVbfv55aNVASg3dzWvES9dmWsL2KhfByw==} - engines: {node: '>=10.0.0'} - peerDependencies: - '@types/node': '>=10.0.0' - rollup: '>=0.31.2' - peerDependenciesMeta: - '@types/node': - optional: true - - rollup-plugin-terser@5.3.1: - resolution: {integrity: sha512-1pkwkervMJQGFYvM9nscrUoncPwiKR/K+bHdjv6PFgRo3cgPHoRT83y2Aa3GvINj4539S15t/tpFPb775TDs6w==} - deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser - peerDependencies: - rollup: '>=0.66.0 <3' - - rollup-plugin-typescript2@0.27.3: - resolution: {integrity: sha512-gmYPIFmALj9D3Ga1ZbTZAKTXq1JKlTQBtj299DXhqYz9cL3g/AQfUvbb2UhH+Nf++cCq941W2Mv7UcrcgLzJJg==} - peerDependencies: - rollup: '>=1.26.3' - typescript: '>=2.4.0' - - rollup-plugin-typescript2@0.36.0: - resolution: {integrity: sha512-NB2CSQDxSe9+Oe2ahZbf+B4bh7pHwjV5L+RSYpCu7Q5ROuN94F9b6ioWwKfz3ueL3KTtmX4o2MUH2cgHDIEUsw==} - peerDependencies: - rollup: '>=1.26.3' - typescript: '>=2.4.0' - - rollup-pluginutils@2.8.2: - resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} - - rollup@1.32.1: - resolution: {integrity: sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A==} - hasBin: true - - rollup@3.29.5: - resolution: {integrity: sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} - hasBin: true - - rollup@4.22.4: - resolution: {integrity: sha512-vD8HJ5raRcWOyymsR6Z3o6+RzfEPCnVLMFJ6vRslO1jt4LO6dUo5Qnpg7y4RkZFM2DMe3WUirkI5c16onjrc6A==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - - rrweb-cssom@0.6.0: - resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} - - rsvp@4.8.5: - resolution: {integrity: sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==} - engines: {node: 6.* || >= 7.*} - - run-async@2.4.1: - resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} - engines: {node: '>=0.12.0'} - - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - - rxjs@6.6.7: - resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} - engines: {npm: '>=2.0.0'} - - sade@1.8.1: - resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} - engines: {node: '>=6'} - - safe-array-concat@1.1.2: - resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} - engines: {node: '>=0.4'} - - safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - safe-identifier@0.4.2: - resolution: {integrity: sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w==} - - safe-regex-test@1.0.3: - resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} - engines: {node: '>= 0.4'} - - safe-regex@1.1.0: - resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} - - safe-stable-stringify@2.5.0: - resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} - engines: {node: '>=10'} - - safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - - sane@4.1.0: - resolution: {integrity: sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==} - engines: {node: 6.* || 8.* || >= 10.*} - deprecated: some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added - hasBin: true - - saxes@3.1.11: - resolution: {integrity: sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==} - engines: {node: '>=8'} - - saxes@6.0.0: - resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} - engines: {node: '>=v12.22.7'} - - scheduler@0.23.2: - resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} - - scheduler@0.24.0-canary-efb381bbf-20230505: - resolution: {integrity: sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA==} - - schema-utils@3.3.0: - resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} - engines: {node: '>= 10.13.0'} - - secure-compare@3.0.1: - resolution: {integrity: sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==} - - selfsigned@2.4.1: - resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} - engines: {node: '>=10'} - - semver@5.7.2: - resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} - hasBin: true - - semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - - semver@7.5.4: - resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} - engines: {node: '>=10'} - hasBin: true - - semver@7.6.3: - resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} - engines: {node: '>=10'} - hasBin: true - - send@0.19.0: - resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} - engines: {node: '>= 0.8.0'} - - serialize-error@2.1.0: - resolution: {integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==} - engines: {node: '>=0.10.0'} - - serialize-javascript@4.0.0: - resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==} - - serialize-javascript@6.0.2: - resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - - serve-static@1.16.2: - resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} - engines: {node: '>= 0.8.0'} - - set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - - set-function-length@1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} - - set-function-name@2.0.2: - resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} - engines: {node: '>= 0.4'} - - set-value@2.0.1: - resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} - engines: {node: '>=0.10.0'} - - setprototypeof@1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - - shallow-clone@3.0.1: - resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} - engines: {node: '>=8'} - - shebang-command@1.2.0: - resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} - engines: {node: '>=0.10.0'} - - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - - shebang-regex@1.0.0: - resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} - engines: {node: '>=0.10.0'} - - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - shell-quote@1.8.1: - resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} - - shelljs@0.8.5: - resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} - engines: {node: '>=4'} - hasBin: true - - shellwords@0.1.1: - resolution: {integrity: sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==} - - side-channel@1.0.6: - resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} - engines: {node: '>= 0.4'} - - siginfo@2.0.0: - resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} - - 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'} - - sirv@2.0.4: - resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} - engines: {node: '>= 10'} - - sisteransi@1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - - slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - - slash@5.1.0: - resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} - engines: {node: '>=14.16'} - - slice-ansi@2.1.0: - resolution: {integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==} - engines: {node: '>=6'} - - slice-ansi@5.0.0: - resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} - engines: {node: '>=12'} - - snake-case@3.0.4: - resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} - - snapdragon-node@2.1.1: - resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} - engines: {node: '>=0.10.0'} - - snapdragon-util@3.0.1: - resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==} - engines: {node: '>=0.10.0'} - - snapdragon@0.8.2: - resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} - engines: {node: '>=0.10.0'} - - sonic-boom@2.8.0: - resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==} - - sonic-boom@3.8.0: - resolution: {integrity: sha512-ybz6OYOUjoQQCQ/i4LU8kaToD8ACtYP+Cj5qd2AO36bwbdewxWJ3ArmJ2cr6AvxlL2o0PqnCcPGUgkILbfkaCA==} - - sonic-boom@3.8.1: - resolution: {integrity: sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg==} - - sorted-array-functions@1.3.0: - resolution: {integrity: sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA==} - - source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} - engines: {node: '>=0.10.0'} - - source-map-resolve@0.5.3: - resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} - deprecated: See https://github.com/lydell/source-map-resolve#deprecated - - source-map-resolve@0.6.0: - resolution: {integrity: sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==} - deprecated: See https://github.com/lydell/source-map-resolve#deprecated - - source-map-support@0.5.13: - resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} - - source-map-support@0.5.19: - resolution: {integrity: sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==} - - source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - - source-map-url@0.4.1: - resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} - deprecated: See https://github.com/lydell/source-map-url#deprecated - - source-map@0.5.7: - resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} - engines: {node: '>=0.10.0'} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - source-map@0.7.4: - resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} - engines: {node: '>= 8'} - - source-map@0.8.0-beta.0: - resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} - engines: {node: '>= 8'} - - sourcemap-codec@1.4.8: - resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} - deprecated: Please use @jridgewell/sourcemap-codec instead - - spawn-wrap@2.0.0: - resolution: {integrity: sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==} - engines: {node: '>=8'} - - spawnd@5.0.0: - resolution: {integrity: sha512-28+AJr82moMVWolQvlAIv3JcYDkjkFTEmfDc503wxrF5l2rQ3dFz6DpbXp3kD4zmgGGldfM4xM4v1sFj/ZaIOA==} - - spawndamnit@2.0.0: - resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} - - spdx-correct@3.2.0: - resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} - - spdx-exceptions@2.5.0: - resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} - - spdx-expression-parse@3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - - spdx-license-ids@3.0.20: - resolution: {integrity: sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==} - - split-string@3.1.0: - resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} - engines: {node: '>=0.10.0'} - - split2@4.2.0: - resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} - engines: {node: '>= 10.x'} - - sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - - sshpk@1.18.0: - resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==} - engines: {node: '>=0.10.0'} - hasBin: true - - stable@0.1.8: - resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} - deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' - - stack-utils@1.0.5: - resolution: {integrity: sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ==} - engines: {node: '>=8'} - - stack-utils@2.0.6: - resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} - engines: {node: '>=10'} - - stackback@0.0.2: - resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - - stackframe@1.3.4: - resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} - - stacktrace-parser@0.1.10: - resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} - engines: {node: '>=6'} - - static-extend@0.1.2: - resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} - engines: {node: '>=0.10.0'} - - statuses@1.5.0: - resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} - engines: {node: '>= 0.6'} - - statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} - engines: {node: '>= 0.8'} - - std-env@3.7.0: - resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} - - stealthy-require@1.1.1: - resolution: {integrity: sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==} - engines: {node: '>=0.10.0'} - - steno@0.4.4: - resolution: {integrity: sha512-EEHMVYHNXFHfGtgjNITnka0aHhiAlo93F7z2/Pwd+g0teG9CnM3JIINM7hVVB5/rhw9voufD7Wukwgtw2uqh6w==} - - stop-iteration-iterator@1.0.0: - resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} - engines: {node: '>= 0.4'} - - storybook@8.3.3: - resolution: {integrity: sha512-FG2KAVQN54T9R6voudiEftehtkXtLO+YVGP2gBPfacEdDQjY++ld7kTbHzpTT/bpCDx7Yq3dqOegLm9arVJfYw==} - hasBin: true - - stream-shift@1.0.3: - resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} - - streamroller@3.1.5: - resolution: {integrity: sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==} - engines: {node: '>=8.0'} - - streamx@2.20.1: - resolution: {integrity: sha512-uTa0mU6WUC65iUvzKH4X9hEdvSW7rbPxPtwfWiLMSj3qTdQbAiUboZTxauKfpFuGIGa1C2BYijZ7wgdUXICJhA==} - - string-argv@0.3.2: - resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} - engines: {node: '>=0.6.19'} - - string-hash@1.1.3: - resolution: {integrity: sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==} - - string-length@3.1.0: - resolution: {integrity: sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA==} - engines: {node: '>=8'} - - string-length@4.0.2: - resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} - engines: {node: '>=10'} - - string-length@5.0.1: - resolution: {integrity: sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==} - engines: {node: '>=12.20'} - - string-width@2.1.1: - resolution: {integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==} - engines: {node: '>=4'} - - string-width@3.1.0: - resolution: {integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==} - engines: {node: '>=6'} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - - string.prototype.includes@2.0.0: - resolution: {integrity: sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg==} - - string.prototype.matchall@4.0.11: - resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} - engines: {node: '>= 0.4'} - - string.prototype.repeat@1.0.0: - resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} - - string.prototype.trim@1.2.9: - resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} - engines: {node: '>= 0.4'} - - string.prototype.trimend@1.0.8: - resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} - - string.prototype.trimstart@1.0.8: - resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} - engines: {node: '>= 0.4'} - - string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - - string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - - strip-ansi@4.0.0: - resolution: {integrity: sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==} - engines: {node: '>=4'} - - 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'} - - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - - strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - - strip-bom@4.0.0: - resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} - engines: {node: '>=8'} - - strip-eof@1.0.0: - resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} - engines: {node: '>=0.10.0'} - - strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - - strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - - strip-indent@3.0.0: - resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} - engines: {node: '>=8'} - - strip-indent@4.0.0: - resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==} - engines: {node: '>=12'} - - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - strip-literal@2.1.0: - resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} - - strnum@1.0.5: - resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} - - strong-log-transformer@2.1.0: - resolution: {integrity: sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==} - engines: {node: '>=4'} - hasBin: true - - style-inject@0.3.0: - resolution: {integrity: sha512-IezA2qp+vcdlhJaVm5SOdPPTUu0FCEqfNSli2vRuSIBbu5Nq5UvygTk/VzeCqfLz2Atj3dVII5QBKGZRZ0edzw==} - - stylehacks@5.1.1: - resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: ^8.2.15 - - sucrase@3.35.0: - resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - - sudo-prompt@9.2.1: - resolution: {integrity: sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==} - - supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - - supports-color@6.1.0: - resolution: {integrity: sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==} - engines: {node: '>=6'} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - 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'} - - svg-parser@2.0.4: - resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==} - - svgo@2.8.0: - resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} - engines: {node: '>=10.13.0'} - hasBin: true - - svgo@3.3.2: - resolution: {integrity: sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==} - engines: {node: '>=14.0.0'} - hasBin: true - - symbol-tree@3.2.4: - resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - - synchronous-promise@2.0.17: - resolution: {integrity: sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g==} - - table@5.4.6: - resolution: {integrity: sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==} - engines: {node: '>=6.0.0'} - - tapable@2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} - engines: {node: '>=6'} - - tar-stream@2.2.0: - resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} - engines: {node: '>=6'} - - tar-stream@3.1.7: - resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} - - telejson@7.2.0: - resolution: {integrity: sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==} - - temp-dir@2.0.0: - resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} - engines: {node: '>=8'} - - temp@0.8.4: - resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} - engines: {node: '>=6.0.0'} - - tempy@1.0.1: - resolution: {integrity: sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==} - engines: {node: '>=10'} - - term-size@2.2.1: - resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} - engines: {node: '>=8'} - - terminal-link@2.1.1: - resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} - engines: {node: '>=8'} - - terser-webpack-plugin@5.3.10: - resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: ^5.1.0 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true - - terser@4.8.1: - resolution: {integrity: sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==} - engines: {node: '>=6.0.0'} - hasBin: true - - terser@5.33.0: - resolution: {integrity: sha512-JuPVaB7s1gdFKPKTelwUyRq5Sid2A3Gko2S0PncwdBq7kN9Ti9HPWDQ06MPsEDGsZeVESjKEnyGy68quBk1w6g==} - engines: {node: '>=10'} - hasBin: true - - test-exclude@6.0.0: - resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} - engines: {node: '>=8'} - - text-decoder@1.2.0: - resolution: {integrity: sha512-n1yg1mOj9DNpk3NeZOx7T6jchTbyJS3i3cucbNN6FcdPriMZx7NsgrGpWWdWZZGxD7ES1XB+3uoqHMgOKaN+fg==} - - text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - - thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} - - thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - - thread-stream@0.15.2: - resolution: {integrity: sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==} - - thread-stream@2.7.0: - resolution: {integrity: sha512-qQiRWsU/wvNolI6tbbCKd9iKaTnCXsTwVxhhKM6nctPdujTyztjlbUkUTUymidWcMnZ5pWR0ej4a0tjsW021vw==} - - throat@5.0.0: - resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} - - through2@2.0.5: - resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} - - through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - - tiny-glob@0.2.9: - resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} - - tiny-invariant@1.3.3: - resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} - - tinybench@2.9.0: - resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} - - tinypool@0.8.4: - resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} - engines: {node: '>=14.0.0'} - - tinyrainbow@1.2.0: - resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} - engines: {node: '>=14.0.0'} - - tinyspy@2.2.1: - resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} - engines: {node: '>=14.0.0'} - - tinyspy@3.0.2: - resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} - engines: {node: '>=14.0.0'} - - tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} - - tmp@0.2.3: - resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} - engines: {node: '>=14.14'} - - tmpl@1.0.5: - resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - - to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - - to-object-path@0.3.0: - resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==} - engines: {node: '>=0.10.0'} - - to-regex-range@2.1.1: - resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==} - engines: {node: '>=0.10.0'} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - to-regex@3.0.2: - resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} - engines: {node: '>=0.10.0'} - - toidentifier@1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} - - totalist@3.0.1: - resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} - engines: {node: '>=6'} - - tough-cookie@2.5.0: - resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} - engines: {node: '>=0.8'} - - tough-cookie@3.0.1: - resolution: {integrity: sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==} - 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==} - - tr46@1.0.1: - resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} - - tr46@3.0.0: - resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} - engines: {node: '>=12'} - - tr46@4.1.1: - resolution: {integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==} - engines: {node: '>=14'} - - tree-kill@1.2.2: - resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} - hasBin: true - - ts-api-utils@1.3.0: - resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} - engines: {node: '>=16'} - peerDependencies: - typescript: '>=4.2.0' - - ts-dedent@2.2.0: - resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} - engines: {node: '>=6.10'} - - ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - - ts-jest@25.5.1: - resolution: {integrity: sha512-kHEUlZMK8fn8vkxDjwbHlxXRB9dHYpyzqKIGDNxbzs+Rz+ssNDSDNusEK8Fk/sDd4xE6iKoQLfFkFVaskmTJyw==} - engines: {node: '>= 8'} - hasBin: true - peerDependencies: - jest: '>=25 <26' - typescript: '>=3.4 <4.0' - - ts-jest@29.2.5: - resolution: {integrity: sha512-KD8zB2aAZrcKIdGk4OwpJggeLcH1FgrICqDSROWqlnJXGCXK4Mn6FcdK2B6670Xr73lHMG1kHw8R87A0ecZ+vA==} - engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@babel/core': '>=7.0.0-beta.0 <8' - '@jest/transform': ^29.0.0 - '@jest/types': ^29.0.0 - babel-jest: ^29.0.0 - esbuild: '*' - jest: ^29.0.0 - typescript: '>=4.3 <6' - peerDependenciesMeta: - '@babel/core': - optional: true - '@jest/transform': - optional: true - '@jest/types': - optional: true - babel-jest: - optional: true - esbuild: - optional: true - - ts-node@10.9.1: - resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - - tsconfck@2.1.2: - resolution: {integrity: sha512-ghqN1b0puy3MhhviwO2kGF8SeMDNhEbnKxjK7h6+fvY9JAxqvXi8y5NAHSQv687OVboS2uZIByzGd45/YxrRHg==} - engines: {node: ^14.13.1 || ^16 || >=18} - hasBin: true - peerDependencies: - typescript: ^4.3.5 || ^5.0.0 - peerDependenciesMeta: - typescript: - optional: true - - tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} - - tsconfig-paths@4.2.0: - resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} - engines: {node: '>=6'} - - tsdx@0.14.1: - resolution: {integrity: sha512-keHmFdCL2kx5nYFlBdbE3639HQ2v9iGedAFAajobrUTH2wfX0nLPdDhbHv+GHLQZqf0c5ur1XteE8ek/+Eyj5w==} - engines: {node: '>=10'} - hasBin: true - - tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - - tslib@2.0.1: - resolution: {integrity: sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==} - - tslib@2.7.0: - resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} - - tsscmp@1.0.6: - resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} - engines: {node: '>=0.6.x'} - - tsup@6.7.0: - resolution: {integrity: sha512-L3o8hGkaHnu5TdJns+mCqFsDBo83bJ44rlK7e6VdanIvpea4ArPcU3swWGsLVbXak1PqQx/V+SSmFPujBK+zEQ==} - engines: {node: '>=14.18'} - hasBin: true - peerDependencies: - '@swc/core': ^1 - postcss: ^8.4.12 - typescript: '>=4.1.0' - peerDependenciesMeta: - '@swc/core': - optional: true - postcss: - optional: true - typescript: - optional: true - - tsutils@3.21.0: - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - - tunnel-agent@0.6.0: - resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} - - tweetnacl@0.14.5: - resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} - - typanion@3.14.0: - resolution: {integrity: sha512-ZW/lVMRabETuYCd9O9ZvMhAh8GslSqaUjxmK/JLPCh6l73CvLBiuXswj/+7LdnWOgYsQ130FqLzFz5aGT4I3Ug==} - - type-check@0.3.2: - resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} - engines: {node: '>= 0.8.0'} - - type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - - type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} - - type-detect@4.1.0: - resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} - engines: {node: '>=4'} - - type-fest@0.16.0: - resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==} - engines: {node: '>=10'} - - type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} - - type-fest@0.6.0: - resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} - engines: {node: '>=8'} - - type-fest@0.7.1: - resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} - engines: {node: '>=8'} - - type-fest@0.8.1: - resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} - engines: {node: '>=8'} - - type-fest@1.4.0: - resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} - engines: {node: '>=10'} - - type-fest@2.19.0: - resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} - engines: {node: '>=12.20'} - - type-is@1.6.18: - resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} - engines: {node: '>= 0.6'} - - typed-array-buffer@1.0.2: - resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} - engines: {node: '>= 0.4'} - - typed-array-byte-length@1.0.1: - resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} - engines: {node: '>= 0.4'} - - typed-array-byte-offset@1.0.2: - resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} - engines: {node: '>= 0.4'} - - typed-array-length@1.0.6: - resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} - engines: {node: '>= 0.4'} - - typedarray-to-buffer@3.1.5: - resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - - typescript-eslint@8.7.0: - resolution: {integrity: sha512-nEHbEYJyHwsuf7c3V3RS7Saq+1+la3i0ieR3qP0yjqWSzVmh8Drp47uOl9LjbPANac4S7EFSqvcYIKXUUwIfIQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - typescript@3.9.10: - resolution: {integrity: sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==} - engines: {node: '>=4.2.0'} - hasBin: true - - typescript@5.4.2: - resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} - engines: {node: '>=14.17'} - hasBin: true - - typescript@5.4.5: - resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} - engines: {node: '>=14.17'} - hasBin: true - - typescript@5.5.4: - resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} - engines: {node: '>=14.17'} - hasBin: true - - ufo@1.5.4: - resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} - - uglify-js@3.19.3: - resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} - engines: {node: '>=0.8.0'} - hasBin: true - - unbox-primitive@1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} - - undici-types@6.19.8: - resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - - unicode-canonical-property-names-ecmascript@2.0.1: - resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} - engines: {node: '>=4'} - - unicode-match-property-ecmascript@2.0.0: - resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} - engines: {node: '>=4'} - - unicode-match-property-value-ecmascript@2.2.0: - resolution: {integrity: sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==} - engines: {node: '>=4'} - - unicode-property-aliases-ecmascript@2.1.0: - resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} - engines: {node: '>=4'} - - union-value@1.0.1: - resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} - engines: {node: '>=0.10.0'} - - union@0.5.0: - resolution: {integrity: sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==} - engines: {node: '>= 0.8.0'} - - unique-string@2.0.0: - resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} - engines: {node: '>=8'} - - universalify@0.1.2: - 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'} - - unix-crypt-td-js@1.1.4: - resolution: {integrity: sha512-8rMeVYWSIyccIJscb9NdCfZKSRBKYTeVnwmiRYT2ulE3qd1RaDQ0xQDP+rI3ccIWbhu/zuo5cgN8z73belNZgw==} - - unpipe@1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} - engines: {node: '>= 0.8'} - - unplugin@1.14.1: - resolution: {integrity: sha512-lBlHbfSFPToDYp9pjXlUEFVxYLaue9f9T1HC+4OHlmj+HnMDdz9oZY+erXfoCe/5V/7gKUSY2jpXPb9S7f0f/w==} - engines: {node: '>=14.0.0'} - peerDependencies: - webpack-sources: ^3 - peerDependenciesMeta: - webpack-sources: - optional: true - - unset-value@1.0.0: - resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} - engines: {node: '>=0.10.0'} - - upath@2.0.1: - resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==} - engines: {node: '>=4'} - - update-browserslist-db@1.1.0: - resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - - uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - - urix@0.1.0: - resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} - deprecated: Please see https://github.com/lydell/urix#deprecated - - url-join@4.0.1: - resolution: {integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==} - - url-parse@1.5.10: - resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} - - use@3.1.1: - resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} - engines: {node: '>=0.10.0'} - - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - util@0.12.5: - resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} - - utils-merge@1.0.1: - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} - engines: {node: '>= 0.4.0'} - - uuid@3.4.0: - resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} - deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. - hasBin: true - - uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - - 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==} - - v8-compile-cache@2.4.0: - resolution: {integrity: sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==} - - v8-to-istanbul@4.1.4: - resolution: {integrity: sha512-Rw6vJHj1mbdK8edjR7+zuJrpDtKIgNdAvTSAcpYfgMIw+u2dPDntD3dgN4XQFLU2/fvFQdzj+EeSGfd/jnY5fQ==} - engines: {node: 8.x.x || >=10.10.0} - - v8-to-istanbul@9.3.0: - resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} - engines: {node: '>=10.12.0'} - - validate-npm-package-license@3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - - validate-npm-package-name@5.0.1: - resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - validator@13.12.0: - resolution: {integrity: sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==} - engines: {node: '>= 0.10'} - - vary@1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} - - verdaccio-audit@13.0.0-next-8.1: - resolution: {integrity: sha512-EEfUeC1kHuErtwF9FC670W+EXHhcl+iuigONkcprwRfkPxmdBs+Hx36745hgAMZ9SCqedNECaycnGF3tZ3VYfw==} - engines: {node: '>=12'} - - verdaccio-htpasswd@13.0.0-next-8.1: - resolution: {integrity: sha512-BfvmO+ZdbwfttOwrdTPD6Bccr1ZfZ9Tk/9wpXamxdWB/XPWlk3FtyGsvqCmxsInRLPhQ/FSk9c3zRCGvICTFYg==} - engines: {node: '>=12'} - - verdaccio@5.32.2: - resolution: {integrity: sha512-QnVYIUvwB884fwVcA/D+x7AabsRPlTPyYAKMtExm8kJjiH+s2LGK2qX2o3I4VmYXqBR3W9b8gEnyQnGwQhUPsw==} - engines: {node: '>=14'} - hasBin: true - - verror@1.10.0: - resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} - engines: {'0': node >=0.6.0} - - vite-node@1.6.0: - resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - - vite-plugin-dts@3.8.3: - resolution: {integrity: sha512-yRHiRosQw7MXdOhmcrVI+kRiB8YEShbSxnADNteK4eZGdEoyOkMHihvO5XOAVlOq8ng9sIqu8vVefDK1zcj3qw==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - typescript: '*' - vite: '*' - peerDependenciesMeta: - vite: - optional: true - - vite-tsconfig-paths@4.0.5: - resolution: {integrity: sha512-/L/eHwySFYjwxoYt1WRJniuK/jPv+WGwgRGBYx3leciR5wBeqntQpUE6Js6+TJemChc+ter7fDBKieyEWDx4yQ==} - - vite@5.4.8: - resolution: {integrity: sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - sass-embedded: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - - vitest@1.6.0: - resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 1.6.0 - '@vitest/ui': 1.6.0 - happy-dom: '*' - jsdom: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@types/node': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - - vlq@1.0.1: - resolution: {integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==} - - vue-template-compiler@2.7.16: - resolution: {integrity: sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==} - - vue-tsc@1.8.27: - resolution: {integrity: sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==} - hasBin: true - peerDependencies: - typescript: '*' - - w3c-hr-time@1.0.2: - resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} - deprecated: Use your platform's native performance.now() and performance.timeOrigin. - - w3c-xmlserializer@1.1.2: - resolution: {integrity: sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==} - - w3c-xmlserializer@4.0.0: - resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} - engines: {node: '>=14'} - - wait-on@5.3.0: - resolution: {integrity: sha512-DwrHrnTK+/0QFaB9a8Ol5Lna3k7WvUR4jzSKmz0YaPBpuN2sACyiPVKVfj6ejnjcajAcvn3wlbTyMIn9AZouOg==} - engines: {node: '>=8.9.0'} - hasBin: true - - wait-port@0.2.14: - resolution: {integrity: sha512-kIzjWcr6ykl7WFbZd0TMae8xovwqcqbx6FM9l+7agOgUByhzdjfzZBPK2CPufldTOMxbUivss//Sh9MFawmPRQ==} - engines: {node: '>=8'} - hasBin: true - - walker@1.0.8: - resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} - - watchpack@2.4.2: - resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==} - engines: {node: '>=10.13.0'} - - wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - - webidl-conversions@4.0.2: - resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} - - webidl-conversions@7.0.0: - resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} - engines: {node: '>=12'} - - webpack-sources@3.2.3: - resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} - engines: {node: '>=10.13.0'} - - webpack-virtual-modules@0.6.2: - resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - - webpack@5.95.0: - resolution: {integrity: sha512-2t3XstrKULz41MNMBF+cJ97TyHdyQ8HCt//pqErqDvNjU9YQBnZxIHa11VXsi7F3mb5/aO2tuDxdeTPdU7xu9Q==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true - - whatwg-encoding@1.0.5: - resolution: {integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==} - - whatwg-encoding@2.0.0: - resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} - engines: {node: '>=12'} - - whatwg-fetch@3.6.20: - resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} - - whatwg-mimetype@2.3.0: - resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==} - - whatwg-mimetype@3.0.0: - resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} - engines: {node: '>=12'} - - whatwg-url@11.0.0: - resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} - engines: {node: '>=12'} - - whatwg-url@12.0.1: - resolution: {integrity: sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==} - engines: {node: '>=14'} - - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - - whatwg-url@7.1.0: - resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} - - which-boxed-primitive@1.0.2: - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} - - which-builtin-type@1.1.4: - resolution: {integrity: sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==} - engines: {node: '>= 0.4'} - - which-collection@1.0.2: - resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} - engines: {node: '>= 0.4'} - - which-module@2.0.1: - resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} - - which-typed-array@1.1.15: - resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} - engines: {node: '>= 0.4'} - - which@1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - why-is-node-running@2.3.0: - resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} - engines: {node: '>=8'} - hasBin: true - - word-wrap@1.2.5: - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} - engines: {node: '>=0.10.0'} - - wordwrap@1.0.0: - resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} - - wrap-ansi@3.0.1: - resolution: {integrity: sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ==} - engines: {node: '>=4'} - - wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - write-file-atomic@2.4.3: - resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} - - write-file-atomic@3.0.3: - resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} - - write-file-atomic@4.0.2: - resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - write@1.0.3: - resolution: {integrity: sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==} - engines: {node: '>=4'} - - ws@6.2.3: - resolution: {integrity: sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@7.5.10: - resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@8.17.1: - resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - xml-name-validator@3.0.0: - resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==} - - xml-name-validator@4.0.0: - resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} - engines: {node: '>=12'} - - xml@1.0.1: - resolution: {integrity: sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==} - - xmlchars@2.2.0: - resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} - - xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - - y18n@4.0.3: - resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - - yallist@2.1.2: - resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} - - yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - - yaml@1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} - engines: {node: '>= 6'} - - yaml@2.3.1: - resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} - engines: {node: '>= 14'} - - yaml@2.5.1: - resolution: {integrity: sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==} - engines: {node: '>= 14'} - hasBin: true - - yargs-parser@18.1.3: - resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} - engines: {node: '>=6'} - - yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - - yargs@15.4.1: - resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} - engines: {node: '>=8'} - - yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} - - ylru@1.4.0: - resolution: {integrity: sha512-2OQsPNEmBCvXuFlIni/a+Rn+R2pHW9INm0BxXJ4hVDA8TirqMj+J/Rp9ItLatT/5pZqWwefVrTQcHpixsxnVlA==} - engines: {node: '>= 4.0.0'} - - yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - - yocto-queue@1.1.1: - resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} - engines: {node: '>=12.20'} - - z-schema@5.0.5: - resolution: {integrity: sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==} - engines: {node: '>=8.0.0'} - hasBin: true - -snapshots: - - '@adobe/css-tools@4.4.0': {} - - '@ampproject/remapping@2.3.0': - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - - '@babel/code-frame@7.24.7': - dependencies: - '@babel/highlight': 7.24.7 - picocolors: 1.1.0 - - '@babel/code-frame@7.25.7': - dependencies: - '@babel/highlight': 7.25.7 - picocolors: 1.1.0 - - '@babel/compat-data@7.25.4': {} - - '@babel/compat-data@7.25.8': {} - - '@babel/core@7.25.2': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.24.7 - '@babel/generator': 7.25.6 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) - '@babel/helpers': 7.25.6 - '@babel/parser': 7.25.6 - '@babel/template': 7.25.0 - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 - convert-source-map: 2.0.0 - debug: 4.3.7 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/generator@7.25.6': - dependencies: - '@babel/types': 7.25.6 - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 2.5.2 - - '@babel/generator@7.25.7': - dependencies: - '@babel/types': 7.25.8 - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 3.0.2 - - '@babel/helper-annotate-as-pure@7.24.7': - dependencies: - '@babel/types': 7.25.6 - - '@babel/helper-annotate-as-pure@7.25.7': - dependencies: - '@babel/types': 7.25.8 - - '@babel/helper-builder-binary-assignment-operator-visitor@7.24.7': - dependencies: - '@babel/traverse': 7.25.7 - '@babel/types': 7.25.8 - transitivePeerDependencies: - - supports-color - - '@babel/helper-builder-binary-assignment-operator-visitor@7.25.7': - dependencies: - '@babel/traverse': 7.25.7 - '@babel/types': 7.25.8 - transitivePeerDependencies: - - supports-color - - '@babel/helper-compilation-targets@7.25.2': - dependencies: - '@babel/compat-data': 7.25.4 - '@babel/helper-validator-option': 7.24.8 - browserslist: 4.24.0 - lru-cache: 5.1.1 - semver: 6.3.1 - - '@babel/helper-compilation-targets@7.25.7': - dependencies: - '@babel/compat-data': 7.25.8 - '@babel/helper-validator-option': 7.25.7 - browserslist: 4.24.0 - lru-cache: 5.1.1 - semver: 6.3.1 - - '@babel/helper-create-class-features-plugin@7.25.4(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-member-expression-to-functions': 7.24.8 - '@babel/helper-optimise-call-expression': 7.24.7 - '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2) - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/traverse': 7.25.6 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/helper-create-class-features-plugin@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.25.7 - '@babel/helper-member-expression-to-functions': 7.25.7 - '@babel/helper-optimise-call-expression': 7.25.7 - '@babel/helper-replace-supers': 7.25.7(@babel/core@7.25.2) - '@babel/helper-skip-transparent-expression-wrappers': 7.25.7 - '@babel/traverse': 7.25.7 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/helper-create-regexp-features-plugin@7.25.2(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 - regexpu-core: 5.3.2 - semver: 6.3.1 - - '@babel/helper-create-regexp-features-plugin@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.25.7 - regexpu-core: 6.1.1 - semver: 6.3.1 - - '@babel/helper-define-polyfill-provider@0.0.3(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-module-imports': 7.24.7 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/traverse': 7.25.6 - debug: 4.3.7 - lodash.debounce: 4.0.8 - resolve: 1.22.8 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - debug: 4.3.7 - lodash.debounce: 4.0.8 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color - - '@babel/helper-environment-visitor@7.24.7': - dependencies: - '@babel/types': 7.25.8 - - '@babel/helper-member-expression-to-functions@7.24.8': - dependencies: - '@babel/traverse': 7.25.7 - '@babel/types': 7.25.8 - transitivePeerDependencies: - - supports-color - - '@babel/helper-member-expression-to-functions@7.25.7': - dependencies: - '@babel/traverse': 7.25.7 - '@babel/types': 7.25.8 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-imports@7.24.7': - dependencies: - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-imports@7.25.7': - dependencies: - '@babel/traverse': 7.25.7 - '@babel/types': 7.25.8 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-imports': 7.24.7 - '@babel/helper-simple-access': 7.24.7 - '@babel/helper-validator-identifier': 7.24.7 - '@babel/traverse': 7.25.6 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-transforms@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-imports': 7.25.7 - '@babel/helper-simple-access': 7.25.7 - '@babel/helper-validator-identifier': 7.25.7 - '@babel/traverse': 7.25.7 - transitivePeerDependencies: - - supports-color - - '@babel/helper-optimise-call-expression@7.24.7': - dependencies: - '@babel/types': 7.25.8 - - '@babel/helper-optimise-call-expression@7.25.7': - dependencies: - '@babel/types': 7.25.8 - - '@babel/helper-plugin-utils@7.24.8': {} - - '@babel/helper-plugin-utils@7.25.7': {} - - '@babel/helper-remap-async-to-generator@7.25.0(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-wrap-function': 7.25.0 - '@babel/traverse': 7.25.7 - transitivePeerDependencies: - - supports-color - - '@babel/helper-remap-async-to-generator@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.25.7 - '@babel/helper-wrap-function': 7.25.7 - '@babel/traverse': 7.25.7 - transitivePeerDependencies: - - supports-color - - '@babel/helper-replace-supers@7.25.0(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-member-expression-to-functions': 7.24.8 - '@babel/helper-optimise-call-expression': 7.24.7 - '@babel/traverse': 7.25.7 - transitivePeerDependencies: - - supports-color - - '@babel/helper-replace-supers@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-member-expression-to-functions': 7.25.7 - '@babel/helper-optimise-call-expression': 7.25.7 - '@babel/traverse': 7.25.7 - transitivePeerDependencies: - - supports-color - - '@babel/helper-simple-access@7.24.7': - dependencies: - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 - transitivePeerDependencies: - - supports-color - - '@babel/helper-simple-access@7.25.7': - dependencies: - '@babel/traverse': 7.25.7 - '@babel/types': 7.25.8 - transitivePeerDependencies: - - supports-color - - '@babel/helper-skip-transparent-expression-wrappers@7.24.7': - dependencies: - '@babel/traverse': 7.25.7 - '@babel/types': 7.25.8 - transitivePeerDependencies: - - supports-color - - '@babel/helper-skip-transparent-expression-wrappers@7.25.7': - dependencies: - '@babel/traverse': 7.25.7 - '@babel/types': 7.25.8 - transitivePeerDependencies: - - supports-color - - '@babel/helper-string-parser@7.24.8': {} - - '@babel/helper-string-parser@7.25.7': {} - - '@babel/helper-validator-identifier@7.24.7': {} - - '@babel/helper-validator-identifier@7.25.7': {} - - '@babel/helper-validator-option@7.24.8': {} - - '@babel/helper-validator-option@7.25.7': {} - - '@babel/helper-wrap-function@7.25.0': - dependencies: - '@babel/template': 7.25.7 - '@babel/traverse': 7.25.7 - '@babel/types': 7.25.8 - transitivePeerDependencies: - - supports-color - - '@babel/helper-wrap-function@7.25.7': - dependencies: - '@babel/template': 7.25.7 - '@babel/traverse': 7.25.7 - '@babel/types': 7.25.8 - transitivePeerDependencies: - - supports-color - - '@babel/helpers@7.25.6': - dependencies: - '@babel/template': 7.25.0 - '@babel/types': 7.25.6 - - '@babel/highlight@7.24.7': - dependencies: - '@babel/helper-validator-identifier': 7.24.7 - chalk: 2.4.2 - js-tokens: 4.0.0 - picocolors: 1.1.0 - - '@babel/highlight@7.25.7': - dependencies: - '@babel/helper-validator-identifier': 7.25.7 - chalk: 2.4.2 - js-tokens: 4.0.0 - picocolors: 1.1.0 - - '@babel/parser@7.25.6': - dependencies: - '@babel/types': 7.25.6 - - '@babel/parser@7.25.8': - dependencies: - '@babel/types': 7.25.8 - - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.3(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/traverse': 7.25.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/traverse': 7.25.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.0(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.0(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.7 - '@babel/plugin-transform-optional-chaining': 7.25.8(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.0(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/traverse': 7.25.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/traverse': 7.25.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-remap-async-to-generator': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.25.4(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-proposal-decorators@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.25.4(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-decorators': 7.24.7(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-proposal-export-default-from@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-export-default-from': 7.24.7(@babel/core@7.25.2) - - '@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) - - '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) - - '@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) - - '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.25.2)': - dependencies: - '@babel/compat-data': 7.25.8 - '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-transform-parameters': 7.25.7(@babel/core@7.25.2) - - '@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) - - '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.7 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-decorators@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-export-default-from@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-flow@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-syntax-import-assertions@7.25.6(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-import-assertions@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-syntax-import-attributes@7.25.6(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-import-attributes@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-typescript@7.25.4(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-arrow-functions@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-arrow-functions@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-async-generator-functions@7.25.4(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-remap-async-to-generator': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) - '@babel/traverse': 7.25.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-async-generator-functions@7.25.8(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-remap-async-to-generator': 7.25.7(@babel/core@7.25.2) - '@babel/traverse': 7.25.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-async-to-generator@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-imports': 7.24.7 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-remap-async-to-generator': 7.25.0(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-async-to-generator@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-imports': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-remap-async-to-generator': 7.25.7(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-block-scoped-functions@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-block-scoped-functions@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-block-scoping@7.25.0(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-block-scoping@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-class-properties@7.25.4(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.25.4(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-class-properties@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.25.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.25.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-class-static-block@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.25.4(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-class-static-block@7.25.8(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.25.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.25.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-classes@7.25.4(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2) - '@babel/traverse': 7.25.7 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-classes@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.25.7 - '@babel/helper-compilation-targets': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-replace-supers': 7.25.7(@babel/core@7.25.2) - '@babel/traverse': 7.25.7 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-computed-properties@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/template': 7.25.0 - - '@babel/plugin-transform-computed-properties@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/template': 7.25.7 - - '@babel/plugin-transform-destructuring@7.24.8(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-destructuring@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-dotall-regex@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-dotall-regex@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-duplicate-keys@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-duplicate-keys@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.0(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-dynamic-import@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.2) - - '@babel/plugin-transform-dynamic-import@7.25.8(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-exponentiation-operator@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.24.7 - '@babel/helper-plugin-utils': 7.24.8 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-exponentiation-operator@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-export-namespace-from@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.25.2) - - '@babel/plugin-transform-export-namespace-from@7.25.8(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-flow-strip-types@7.25.2(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.25.2) - - '@babel/plugin-transform-for-of@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-for-of@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-function-name@7.25.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/traverse': 7.25.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-function-name@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/traverse': 7.25.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-json-strings@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2) - - '@babel/plugin-transform-json-strings@7.25.8(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-literals@7.25.2(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-literals@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-logical-assignment-operators@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) - - '@babel/plugin-transform-logical-assignment-operators@7.25.8(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-member-expression-literals@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-member-expression-literals@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-modules-amd@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-amd@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-transforms': 7.25.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.25.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-commonjs@7.24.8(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-simple-access': 7.24.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-commonjs@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-transforms': 7.25.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-simple-access': 7.25.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-systemjs@7.25.0(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-validator-identifier': 7.24.7 - '@babel/traverse': 7.25.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-systemjs@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-transforms': 7.25.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-validator-identifier': 7.25.7 - '@babel/traverse': 7.25.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-umd@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-umd@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-transforms': 7.25.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.25.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-named-capturing-groups-regex@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-named-capturing-groups-regex@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-new-target@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-new-target@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-nullish-coalescing-operator@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) - - '@babel/plugin-transform-nullish-coalescing-operator@7.25.8(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-numeric-separator@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) - - '@babel/plugin-transform-numeric-separator@7.25.8(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-object-rest-spread@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.25.2) - - '@babel/plugin-transform-object-rest-spread@7.25.8(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-parameters': 7.25.7(@babel/core@7.25.2) - - '@babel/plugin-transform-object-super@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-object-super@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-replace-supers': 7.25.7(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-optional-catch-binding@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) - - '@babel/plugin-transform-optional-catch-binding@7.25.8(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-optional-chaining@7.24.8(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-optional-chaining@7.25.8(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-parameters@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-parameters@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-private-methods@7.25.4(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.25.4(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-private-methods@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.25.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.25.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-private-property-in-object@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-create-class-features-plugin': 7.25.4(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-private-property-in-object@7.25.8(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.25.7 - '@babel/helper-create-class-features-plugin': 7.25.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.25.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-property-literals@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-property-literals@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-react-constant-elements@7.25.1(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-react-display-name@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-react-jsx-development@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-react-jsx@7.25.2(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-module-imports': 7.24.7 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) - '@babel/types': 7.25.6 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-react-pure-annotations@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-regenerator@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - regenerator-transform: 0.15.2 - - '@babel/plugin-transform-regenerator@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - regenerator-transform: 0.15.2 - - '@babel/plugin-transform-reserved-words@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-reserved-words@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-runtime@7.25.4(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-imports': 7.24.7 - '@babel/helper-plugin-utils': 7.24.8 - babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.25.2) - babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.25.2) - babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.25.2) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-shorthand-properties@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-shorthand-properties@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-spread@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-spread@7.25.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-sticky-regex@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-sticky-regex@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-template-literals@7.24.7(@babel/core@7.25.2)': + /@babel/plugin-transform-unicode-escapes@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-template-literals@7.25.7(@babel/core@7.25.2)': + /@babel/plugin-transform-unicode-property-regex@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-typeof-symbol@7.24.8(@babel/core@7.25.2)': + /@babel/plugin-transform-unicode-regex@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-typeof-symbol@7.25.7(@babel/core@7.25.2)': + /@babel/plugin-transform-unicode-sets-regex@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.26.3(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-typescript@7.25.2(@babel/core@7.25.2)': + /@babel/preset-env@7.26.0(@babel/core@7.26.0): + resolution: {integrity: sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-create-class-features-plugin': 7.25.4(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/plugin-syntax-typescript': 7.25.4(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-unicode-escapes@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-unicode-escapes@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-unicode-property-regex@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-unicode-property-regex@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-unicode-regex@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-unicode-regex@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-unicode-sets-regex@7.25.4(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-unicode-sets-regex@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/preset-env@7.25.4(@babel/core@7.25.2)': - dependencies: - '@babel/compat-data': 7.25.4 - '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-validator-option': 7.24.8 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.3(@babel/core@7.25.2) - '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.2) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.25.2) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.2) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-import-assertions': 7.25.6(@babel/core@7.25.2) - '@babel/plugin-syntax-import-attributes': 7.25.6(@babel/core@7.25.2) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.2) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.25.2) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.25.2) - '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-async-generator-functions': 7.25.4(@babel/core@7.25.2) - '@babel/plugin-transform-async-to-generator': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-block-scoped-functions': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-block-scoping': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-transform-class-properties': 7.25.4(@babel/core@7.25.2) - '@babel/plugin-transform-class-static-block': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-classes': 7.25.4(@babel/core@7.25.2) - '@babel/plugin-transform-computed-properties': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-destructuring': 7.24.8(@babel/core@7.25.2) - '@babel/plugin-transform-dotall-regex': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-duplicate-keys': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-transform-dynamic-import': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-exponentiation-operator': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-export-namespace-from': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-for-of': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-function-name': 7.25.1(@babel/core@7.25.2) - '@babel/plugin-transform-json-strings': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-literals': 7.25.2(@babel/core@7.25.2) - '@babel/plugin-transform-logical-assignment-operators': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-member-expression-literals': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-modules-amd': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.25.2) - '@babel/plugin-transform-modules-systemjs': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-transform-modules-umd': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-named-capturing-groups-regex': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-new-target': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-nullish-coalescing-operator': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-numeric-separator': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-object-rest-spread': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-object-super': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-optional-catch-binding': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.25.2) - '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-private-methods': 7.25.4(@babel/core@7.25.2) - '@babel/plugin-transform-private-property-in-object': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-property-literals': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-regenerator': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-reserved-words': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-spread': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-sticky-regex': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-template-literals': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-typeof-symbol': 7.24.8(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-escapes': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-property-regex': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-regex': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-sets-regex': 7.25.4(@babel/core@7.25.2) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.25.2) - babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.25.2) - babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.25.2) - babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.25.2) - core-js-compat: 3.38.1 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/preset-env@7.25.8(@babel/core@7.25.2)': - dependencies: - '@babel/compat-data': 7.25.8 - '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-validator-option': 7.25.7 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.2) - '@babel/plugin-syntax-import-assertions': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-syntax-import-attributes': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.25.2) - '@babel/plugin-transform-arrow-functions': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-async-generator-functions': 7.25.8(@babel/core@7.25.2) - '@babel/plugin-transform-async-to-generator': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-block-scoped-functions': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-block-scoping': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-class-properties': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-class-static-block': 7.25.8(@babel/core@7.25.2) - '@babel/plugin-transform-classes': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-computed-properties': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-destructuring': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-dotall-regex': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-duplicate-keys': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-dynamic-import': 7.25.8(@babel/core@7.25.2) - '@babel/plugin-transform-exponentiation-operator': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-export-namespace-from': 7.25.8(@babel/core@7.25.2) - '@babel/plugin-transform-for-of': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-function-name': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-json-strings': 7.25.8(@babel/core@7.25.2) - '@babel/plugin-transform-literals': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-logical-assignment-operators': 7.25.8(@babel/core@7.25.2) - '@babel/plugin-transform-member-expression-literals': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-modules-amd': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-modules-commonjs': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-modules-systemjs': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-modules-umd': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-named-capturing-groups-regex': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-new-target': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-nullish-coalescing-operator': 7.25.8(@babel/core@7.25.2) - '@babel/plugin-transform-numeric-separator': 7.25.8(@babel/core@7.25.2) - '@babel/plugin-transform-object-rest-spread': 7.25.8(@babel/core@7.25.2) - '@babel/plugin-transform-object-super': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-optional-catch-binding': 7.25.8(@babel/core@7.25.2) - '@babel/plugin-transform-optional-chaining': 7.25.8(@babel/core@7.25.2) - '@babel/plugin-transform-parameters': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-private-methods': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-private-property-in-object': 7.25.8(@babel/core@7.25.2) - '@babel/plugin-transform-property-literals': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-regenerator': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-reserved-words': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-shorthand-properties': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-spread': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-sticky-regex': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-template-literals': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-typeof-symbol': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-escapes': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-property-regex': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-regex': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-sets-regex': 7.25.7(@babel/core@7.25.2) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.25.2) - babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.25.2) - babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.25.2) - babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.25.2) - core-js-compat: 3.38.1 + '@babel/compat-data': 7.26.3 + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0) + '@babel/plugin-syntax-import-assertions': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.26.0) + '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-async-generator-functions': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-block-scoped-functions': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-class-static-block': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-dotall-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-duplicate-keys': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-dynamic-import': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-exponentiation-operator': 7.26.3(@babel/core@7.26.0) + '@babel/plugin-transform-export-namespace-from': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-for-of': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-json-strings': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-logical-assignment-operators': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-member-expression-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-amd': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.0) + '@babel/plugin-transform-modules-systemjs': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-umd': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-new-target': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-nullish-coalescing-operator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-numeric-separator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-object-rest-spread': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-object-super': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-optional-catch-binding': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-private-property-in-object': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-property-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-regenerator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-regexp-modifiers': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-transform-reserved-words': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-template-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-typeof-symbol': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-escapes': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-property-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-sets-regex': 7.25.9(@babel/core@7.26.0) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.26.0) + babel-plugin-polyfill-corejs2: 0.4.12(@babel/core@7.26.0) + babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.26.0) + babel-plugin-polyfill-regenerator: 0.6.3(@babel/core@7.26.0) + core-js-compat: 3.39.0 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/preset-flow@7.24.7(@babel/core@7.25.2)': + /@babel/preset-flow@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-EASHsAhE+SSlEzJ4bzfusnXSHiU+JfAYzj+jbw2vgQKgq5HrUr8qs+vgtiEL5dOH6sEweI+PNt2D7AqrDSHyqQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-validator-option': 7.25.7 - '@babel/plugin-transform-flow-strip-types': 7.25.2(@babel/core@7.25.2) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-transform-flow-strip-types': 7.25.9(@babel/core@7.26.0) - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.25.2)': + /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.26.0): + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/types': 7.25.6 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/types': 7.26.3 esutils: 2.0.3 - '@babel/preset-react@7.24.7(@babel/core@7.25.2)': + /@babel/preset-react@7.26.3(@babel/core@7.26.0): + resolution: {integrity: sha512-Nl03d6T9ky516DGK2YMxrTqvnpUW63TnJMOMonj+Zae0JiPC5BC9xPMSL6L8fiSpA5vP88qfygavVQvnLp+6Cw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-validator-option': 7.24.8 - '@babel/plugin-transform-react-display-name': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.25.2) - '@babel/plugin-transform-react-jsx-development': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-react-pure-annotations': 7.24.7(@babel/core@7.25.2) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-transform-react-display-name': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-react-jsx-development': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-react-pure-annotations': 7.25.9(@babel/core@7.26.0) transitivePeerDependencies: - supports-color + dev: true - '@babel/preset-typescript@7.24.7(@babel/core@7.25.2)': + /@babel/preset-typescript@7.26.0(@babel/core@7.26.0): + resolution: {integrity: sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-validator-option': 7.24.8 - '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.25.2) - '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.25.2) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.0) + '@babel/plugin-transform-typescript': 7.26.3(@babel/core@7.26.0) transitivePeerDependencies: - supports-color - '@babel/register@7.24.6(@babel/core@7.25.2)': + /@babel/register@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-8D43jXtGsYmEeDvm4MWHYUpWf8iiXgWYx3fW7E7Wb7Oe6FWqJPl5K6TuFW0dOwNZzEE5rjlaSJYH9JjrUKJszA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 clone-deep: 4.0.1 find-cache-dir: 2.1.0 make-dir: 2.1.0 pirates: 4.0.6 source-map-support: 0.5.21 - '@babel/regjsgen@0.8.0': {} - - '@babel/runtime@7.25.7': + /@babel/runtime@7.26.0: + resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==} + engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.14.1 - '@babel/template@7.25.0': - dependencies: - '@babel/code-frame': 7.24.7 - '@babel/parser': 7.25.6 - '@babel/types': 7.25.6 - - '@babel/template@7.25.7': - dependencies: - '@babel/code-frame': 7.25.7 - '@babel/parser': 7.25.8 - '@babel/types': 7.25.8 - - '@babel/traverse@7.25.6': + /@babel/template@7.25.9: + resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} + engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.24.7 - '@babel/generator': 7.25.6 - '@babel/parser': 7.25.6 - '@babel/template': 7.25.0 - '@babel/types': 7.25.6 - debug: 4.3.7 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.26.3 + '@babel/types': 7.26.3 - '@babel/traverse@7.25.7': + /@babel/traverse@7.26.4: + resolution: {integrity: sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==} + engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.25.7 - '@babel/generator': 7.25.7 - '@babel/parser': 7.25.8 - '@babel/template': 7.25.7 - '@babel/types': 7.25.8 - debug: 4.3.7 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.3 + '@babel/parser': 7.26.3 + '@babel/template': 7.25.9 + '@babel/types': 7.26.3 + debug: 4.4.0 globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/types@7.25.6': - dependencies: - '@babel/helper-string-parser': 7.24.8 - '@babel/helper-validator-identifier': 7.24.7 - to-fast-properties: 2.0.0 - - '@babel/types@7.25.8': + /@babel/types@7.26.3: + resolution: {integrity: sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==} + engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-string-parser': 7.25.7 - '@babel/helper-validator-identifier': 7.25.7 - to-fast-properties: 2.0.0 - - '@base2/pretty-print-object@1.0.1': {} + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 - '@bcoe/v8-coverage@0.2.3': {} + /@bcoe/v8-coverage@0.2.3: + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + dev: true - '@changesets/apply-release-plan@7.0.5': + /@changesets/apply-release-plan@7.0.7: + resolution: {integrity: sha512-qnPOcmmmnD0MfMg9DjU1/onORFyRpDXkMMl2IJg9mECY6RnxL3wN0TCCc92b2sXt1jt8DgjAUUsZYGUGTdYIXA==} dependencies: - '@changesets/config': 3.0.3 + '@changesets/config': 3.0.5 '@changesets/get-version-range-type': 0.4.0 - '@changesets/git': 3.0.1 + '@changesets/git': 3.0.2 '@changesets/should-skip-package': 0.1.1 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 @@ -12658,8 +2187,10 @@ snapshots: prettier: 2.8.8 resolve-from: 5.0.0 semver: 7.6.3 + dev: true - '@changesets/assemble-release-plan@6.0.4': + /@changesets/assemble-release-plan@6.0.5: + resolution: {integrity: sha512-IgvBWLNKZd6k4t72MBTBK3nkygi0j3t3zdC1zrfusYo0KpdsvnDjrMM9vPnTCLCMlfNs55jRL4gIMybxa64FCQ==} dependencies: '@changesets/errors': 0.2.0 '@changesets/get-dependents-graph': 2.1.2 @@ -12667,45 +2198,50 @@ snapshots: '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 semver: 7.6.3 + dev: true - '@changesets/changelog-git@0.2.0': + /@changesets/changelog-git@0.2.0: + resolution: {integrity: sha512-bHOx97iFI4OClIT35Lok3sJAwM31VbUM++gnMBV16fdbtBhgYu4dxsphBF/0AZZsyAHMrnM0yFcj5gZM1py6uQ==} dependencies: '@changesets/types': 6.0.0 + dev: true - '@changesets/cli@2.27.8': + /@changesets/cli@2.27.11: + resolution: {integrity: sha512-1QislpE+nvJgSZZo9+Lj3Lno5pKBgN46dAV8IVxKJy9wX8AOrs9nn5pYVZuDpoxWJJCALmbfOsHkyxujgetQSg==} + hasBin: true dependencies: - '@changesets/apply-release-plan': 7.0.5 - '@changesets/assemble-release-plan': 6.0.4 + '@changesets/apply-release-plan': 7.0.7 + '@changesets/assemble-release-plan': 6.0.5 '@changesets/changelog-git': 0.2.0 - '@changesets/config': 3.0.3 + '@changesets/config': 3.0.5 '@changesets/errors': 0.2.0 '@changesets/get-dependents-graph': 2.1.2 - '@changesets/get-release-plan': 4.0.4 - '@changesets/git': 3.0.1 + '@changesets/get-release-plan': 4.0.6 + '@changesets/git': 3.0.2 '@changesets/logger': 0.1.1 '@changesets/pre': 2.0.1 - '@changesets/read': 0.6.1 + '@changesets/read': 0.6.2 '@changesets/should-skip-package': 0.1.1 '@changesets/types': 6.0.0 '@changesets/write': 0.3.2 '@manypkg/get-packages': 1.1.3 - '@types/semver': 7.5.8 ansi-colors: 4.1.3 ci-info: 3.9.0 enquirer: 2.4.1 external-editor: 3.1.0 fs-extra: 7.0.1 mri: 1.2.0 - outdent: 0.5.0 p-limit: 2.3.0 - package-manager-detector: 0.2.0 - picocolors: 1.1.0 + package-manager-detector: 0.2.8 + picocolors: 1.1.1 resolve-from: 5.0.0 semver: 7.6.3 - spawndamnit: 2.0.0 + spawndamnit: 3.0.1 term-size: 2.2.1 + dev: true - '@changesets/config@3.0.3': + /@changesets/config@3.0.5: + resolution: {integrity: sha512-QyXLSSd10GquX7hY0Mt4yQFMEeqnO5z/XLpbIr4PAkNNoQNKwDyiSrx4yd749WddusH1v3OSiA0NRAYmH/APpQ==} dependencies: '@changesets/errors': 0.2.0 '@changesets/get-dependents-graph': 2.1.2 @@ -12714,89 +2250,125 @@ snapshots: '@manypkg/get-packages': 1.1.3 fs-extra: 7.0.1 micromatch: 4.0.8 + dev: true - '@changesets/errors@0.2.0': + /@changesets/errors@0.2.0: + resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} dependencies: extendable-error: 0.1.7 + dev: true - '@changesets/get-dependents-graph@2.1.2': + /@changesets/get-dependents-graph@2.1.2: + resolution: {integrity: sha512-sgcHRkiBY9i4zWYBwlVyAjEM9sAzs4wYVwJUdnbDLnVG3QwAaia1Mk5P8M7kraTOZN+vBET7n8KyB0YXCbFRLQ==} dependencies: '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 - picocolors: 1.1.0 + picocolors: 1.1.1 semver: 7.6.3 + dev: true - '@changesets/get-release-plan@4.0.4': + /@changesets/get-release-plan@4.0.6: + resolution: {integrity: sha512-FHRwBkY7Eili04Y5YMOZb0ezQzKikTka4wL753vfUA5COSebt7KThqiuCN9BewE4/qFGgF/5t3AuzXx1/UAY4w==} dependencies: - '@changesets/assemble-release-plan': 6.0.4 - '@changesets/config': 3.0.3 + '@changesets/assemble-release-plan': 6.0.5 + '@changesets/config': 3.0.5 '@changesets/pre': 2.0.1 - '@changesets/read': 0.6.1 + '@changesets/read': 0.6.2 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 + dev: true - '@changesets/get-version-range-type@0.4.0': {} + /@changesets/get-version-range-type@0.4.0: + resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} + dev: true - '@changesets/git@3.0.1': + /@changesets/git@3.0.2: + resolution: {integrity: sha512-r1/Kju9Y8OxRRdvna+nxpQIsMsRQn9dhhAZt94FLDeu0Hij2hnOozW8iqnHBgvu+KdnJppCveQwK4odwfw/aWQ==} dependencies: '@changesets/errors': 0.2.0 '@manypkg/get-packages': 1.1.3 is-subdir: 1.2.0 micromatch: 4.0.8 - spawndamnit: 2.0.0 + spawndamnit: 3.0.1 + dev: true - '@changesets/logger@0.1.1': + /@changesets/logger@0.1.1: + resolution: {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==} dependencies: - picocolors: 1.1.0 + picocolors: 1.1.1 + dev: true - '@changesets/parse@0.4.0': + /@changesets/parse@0.4.0: + resolution: {integrity: sha512-TS/9KG2CdGXS27S+QxbZXgr8uPsP4yNJYb4BC2/NeFUj80Rni3TeD2qwWmabymxmrLo7JEsytXH1FbpKTbvivw==} dependencies: '@changesets/types': 6.0.0 js-yaml: 3.14.1 + dev: true - '@changesets/pre@2.0.1': + /@changesets/pre@2.0.1: + resolution: {integrity: sha512-vvBJ/If4jKM4tPz9JdY2kGOgWmCowUYOi5Ycv8dyLnEE8FgpYYUo1mgJZxcdtGGP3aG8rAQulGLyyXGSLkIMTQ==} dependencies: '@changesets/errors': 0.2.0 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 fs-extra: 7.0.1 + dev: true - '@changesets/read@0.6.1': + /@changesets/read@0.6.2: + resolution: {integrity: sha512-wjfQpJvryY3zD61p8jR87mJdyx2FIhEcdXhKUqkja87toMrP/3jtg/Yg29upN+N4Ckf525/uvV7a4tzBlpk6gg==} dependencies: - '@changesets/git': 3.0.1 + '@changesets/git': 3.0.2 '@changesets/logger': 0.1.1 '@changesets/parse': 0.4.0 '@changesets/types': 6.0.0 fs-extra: 7.0.1 p-filter: 2.1.0 - picocolors: 1.1.0 + picocolors: 1.1.1 + dev: true - '@changesets/should-skip-package@0.1.1': + /@changesets/should-skip-package@0.1.1: + resolution: {integrity: sha512-H9LjLbF6mMHLtJIc/eHR9Na+MifJ3VxtgP/Y+XLn4BF7tDTEN1HNYtH6QMcjP1uxp9sjaFYmW8xqloaCi/ckTg==} dependencies: '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 + dev: true - '@changesets/types@4.1.0': {} + /@changesets/types@4.1.0: + resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} + dev: true - '@changesets/types@6.0.0': {} + /@changesets/types@6.0.0: + resolution: {integrity: sha512-b1UkfNulgKoWfqyHtzKS5fOZYSJO+77adgL7DLRDr+/7jhChN+QcHnbjiQVOz/U+Ts3PGNySq7diAItzDgugfQ==} + dev: true - '@changesets/write@0.3.2': + /@changesets/write@0.3.2: + resolution: {integrity: sha512-kDxDrPNpUgsjDbWBvUo27PzKX4gqeKOlhibaOXDJA6kuBisGqNHv/HwGJrAu8U/dSf8ZEFIeHIPtvSlZI1kULw==} dependencies: '@changesets/types': 6.0.0 fs-extra: 7.0.1 human-id: 1.0.2 prettier: 2.8.8 + dev: true - '@cnakazawa/watch@1.0.4': + /@cnakazawa/watch@1.0.4: + resolution: {integrity: sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==} + engines: {node: '>=0.1.95'} + hasBin: true dependencies: exec-sh: 0.3.6 minimist: 1.2.8 + dev: true - '@cspotcode/source-map-support@0.8.1': + /@cspotcode/source-map-support@0.8.1: + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} dependencies: '@jridgewell/trace-mapping': 0.3.9 + dev: true - '@cypress/request@3.0.1': + /@cypress/request@3.0.6: + resolution: {integrity: sha512-fi0eVdCOtKu5Ed6+E8mYxUF6ZTFJDZvHogCBelM0xVXmrDEkyM22gRArQzq1YcHPm1V47Vf/iAD+WgVdUlJCGg==} + engines: {node: '>= 6'} dependencies: aws-sign2: 0.7.0 aws4: 1.13.2 @@ -12804,257 +2376,894 @@ snapshots: combined-stream: 1.0.8 extend: 3.0.2 forever-agent: 0.6.1 - form-data: 2.3.3 - http-signature: 1.3.6 + form-data: 4.0.1 + http-signature: 1.4.0 is-typedarray: 1.0.0 isstream: 0.1.2 json-stringify-safe: 5.0.1 mime-types: 2.1.35 performance-now: 2.1.0 - qs: 6.10.4 + qs: 6.13.0 safe-buffer: 5.2.1 - tough-cookie: 4.1.4 + tough-cookie: 5.0.0 tunnel-agent: 0.6.0 uuid: 8.3.2 + dev: true - '@emnapi/core@1.2.0': + /@emnapi/core@1.3.1: + resolution: {integrity: sha512-pVGjBIt1Y6gg3EJN8jTcfpP/+uuRksIo055oE/OBkDNcjZqVbfkWCksG1Jp4yZnj3iKWyWX8fdG/j6UDYPbFog==} dependencies: '@emnapi/wasi-threads': 1.0.1 - tslib: 2.7.0 + tslib: 2.8.1 + dev: true - '@emnapi/runtime@1.2.0': + /@emnapi/runtime@1.3.1: + resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==} dependencies: - tslib: 2.7.0 + tslib: 2.8.1 + dev: true - '@emnapi/wasi-threads@1.0.1': + /@emnapi/wasi-threads@1.0.1: + resolution: {integrity: sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==} dependencies: - tslib: 2.7.0 + tslib: 2.8.1 + dev: true + + /@esbuild/aix-ppc64@0.21.5: + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + requiresBuild: true + dev: true + optional: true + + /@esbuild/aix-ppc64@0.24.2: + resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + requiresBuild: true + optional: true + + /@esbuild/android-arm64@0.17.19: + resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64@0.18.20: + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64@0.21.5: + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64@0.24.2: + resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + requiresBuild: true + optional: true + + /@esbuild/android-arm@0.17.19: + resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.18.20: + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.21.5: + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.24.2: + resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + requiresBuild: true + optional: true + + /@esbuild/android-x64@0.17.19: + resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.18.20: + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.21.5: + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.24.2: + resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + requiresBuild: true + optional: true + + /@esbuild/darwin-arm64@0.17.19: + resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.18.20: + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.21.5: + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.24.2: + resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + optional: true + + /@esbuild/darwin-x64@0.17.19: + resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true - '@esbuild/aix-ppc64@0.21.5': + /@esbuild/darwin-x64@0.18.20: + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.21.5: + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.24.2: + resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + requiresBuild: true + optional: true + + /@esbuild/freebsd-arm64@0.17.19: + resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.18.20: + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.21.5: + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.24.2: + resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true optional: true - '@esbuild/android-arm64@0.17.19': + /@esbuild/freebsd-x64@0.17.19: + resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true optional: true - '@esbuild/android-arm64@0.18.20': + /@esbuild/freebsd-x64@0.18.20: + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true optional: true - '@esbuild/android-arm64@0.21.5': + /@esbuild/freebsd-x64@0.21.5: + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true optional: true - '@esbuild/android-arm@0.17.19': + /@esbuild/freebsd-x64@0.24.2: + resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + requiresBuild: true optional: true - '@esbuild/android-arm@0.18.20': + /@esbuild/linux-arm64@0.17.19: + resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/android-arm@0.21.5': + /@esbuild/linux-arm64@0.18.20: + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/android-x64@0.17.19': + /@esbuild/linux-arm64@0.21.5: + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/android-x64@0.18.20': + /@esbuild/linux-arm64@0.24.2: + resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + requiresBuild: true optional: true - '@esbuild/android-x64@0.21.5': + /@esbuild/linux-arm@0.17.19: + resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/darwin-arm64@0.17.19': + /@esbuild/linux-arm@0.18.20: + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/darwin-arm64@0.18.20': + /@esbuild/linux-arm@0.21.5: + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/darwin-arm64@0.21.5': + /@esbuild/linux-arm@0.24.2: + resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + requiresBuild: true optional: true - '@esbuild/darwin-x64@0.17.19': + /@esbuild/linux-ia32@0.17.19: + resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/darwin-x64@0.18.20': + /@esbuild/linux-ia32@0.18.20: + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/darwin-x64@0.21.5': + /@esbuild/linux-ia32@0.21.5: + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/freebsd-arm64@0.17.19': + /@esbuild/linux-ia32@0.24.2: + resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + requiresBuild: true optional: true - '@esbuild/freebsd-arm64@0.18.20': + /@esbuild/linux-loong64@0.17.19: + resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/freebsd-arm64@0.21.5': + /@esbuild/linux-loong64@0.18.20: + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/freebsd-x64@0.17.19': + /@esbuild/linux-loong64@0.21.5: + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/freebsd-x64@0.18.20': + /@esbuild/linux-loong64@0.24.2: + resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + requiresBuild: true optional: true - '@esbuild/freebsd-x64@0.21.5': + /@esbuild/linux-mips64el@0.17.19: + resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-arm64@0.17.19': + /@esbuild/linux-mips64el@0.18.20: + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-arm64@0.18.20': + /@esbuild/linux-mips64el@0.21.5: + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-arm64@0.21.5': + /@esbuild/linux-mips64el@0.24.2: + resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + requiresBuild: true optional: true - '@esbuild/linux-arm@0.17.19': + /@esbuild/linux-ppc64@0.17.19: + resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-arm@0.18.20': + /@esbuild/linux-ppc64@0.18.20: + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-arm@0.21.5': + /@esbuild/linux-ppc64@0.21.5: + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-ia32@0.17.19': + /@esbuild/linux-ppc64@0.24.2: + resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + requiresBuild: true optional: true - '@esbuild/linux-ia32@0.18.20': + /@esbuild/linux-riscv64@0.17.19: + resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-ia32@0.21.5': + /@esbuild/linux-riscv64@0.18.20: + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-loong64@0.17.19': + /@esbuild/linux-riscv64@0.21.5: + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-loong64@0.18.20': + /@esbuild/linux-riscv64@0.24.2: + resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + requiresBuild: true optional: true - '@esbuild/linux-loong64@0.21.5': + /@esbuild/linux-s390x@0.17.19: + resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-mips64el@0.17.19': + /@esbuild/linux-s390x@0.18.20: + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-mips64el@0.18.20': + /@esbuild/linux-s390x@0.21.5: + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-mips64el@0.21.5': + /@esbuild/linux-s390x@0.24.2: + resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + requiresBuild: true optional: true - '@esbuild/linux-ppc64@0.17.19': + /@esbuild/linux-x64@0.17.19: + resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-ppc64@0.18.20': + /@esbuild/linux-x64@0.18.20: + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-ppc64@0.21.5': + /@esbuild/linux-x64@0.21.5: + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-riscv64@0.17.19': + /@esbuild/linux-x64@0.24.2: + resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + requiresBuild: true optional: true - '@esbuild/linux-riscv64@0.18.20': + /@esbuild/netbsd-arm64@0.24.2: + resolution: {integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + requiresBuild: true optional: true - '@esbuild/linux-riscv64@0.21.5': + /@esbuild/netbsd-x64@0.17.19: + resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-s390x@0.17.19': + /@esbuild/netbsd-x64@0.18.20: + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-s390x@0.18.20': + /@esbuild/netbsd-x64@0.21.5: + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-s390x@0.21.5': + /@esbuild/netbsd-x64@0.24.2: + resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + requiresBuild: true optional: true - '@esbuild/linux-x64@0.17.19': + /@esbuild/openbsd-arm64@0.24.2: + resolution: {integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + requiresBuild: true optional: true - '@esbuild/linux-x64@0.18.20': + /@esbuild/openbsd-x64@0.17.19: + resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true optional: true - '@esbuild/linux-x64@0.21.5': + /@esbuild/openbsd-x64@0.18.20: + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true optional: true - '@esbuild/netbsd-x64@0.17.19': + /@esbuild/openbsd-x64@0.21.5: + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true optional: true - '@esbuild/netbsd-x64@0.18.20': + /@esbuild/openbsd-x64@0.24.2: + resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + requiresBuild: true optional: true - '@esbuild/netbsd-x64@0.21.5': + /@esbuild/sunos-x64@0.17.19: + resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true optional: true - '@esbuild/openbsd-x64@0.17.19': + /@esbuild/sunos-x64@0.18.20: + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true optional: true - '@esbuild/openbsd-x64@0.18.20': + /@esbuild/sunos-x64@0.21.5: + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true optional: true - '@esbuild/openbsd-x64@0.21.5': + /@esbuild/sunos-x64@0.24.2: + resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + requiresBuild: true optional: true - '@esbuild/sunos-x64@0.17.19': + /@esbuild/win32-arm64@0.17.19: + resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true optional: true - '@esbuild/sunos-x64@0.18.20': + /@esbuild/win32-arm64@0.18.20: + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true optional: true - '@esbuild/sunos-x64@0.21.5': + /@esbuild/win32-arm64@0.21.5: + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true optional: true - '@esbuild/win32-arm64@0.17.19': + /@esbuild/win32-arm64@0.24.2: + resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + requiresBuild: true optional: true - '@esbuild/win32-arm64@0.18.20': + /@esbuild/win32-ia32@0.17.19: + resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true optional: true - '@esbuild/win32-arm64@0.21.5': + /@esbuild/win32-ia32@0.18.20: + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true optional: true - '@esbuild/win32-ia32@0.17.19': + /@esbuild/win32-ia32@0.21.5: + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true optional: true - '@esbuild/win32-ia32@0.18.20': + /@esbuild/win32-ia32@0.24.2: + resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + requiresBuild: true optional: true - '@esbuild/win32-ia32@0.21.5': + /@esbuild/win32-x64@0.17.19: + resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true optional: true - '@esbuild/win32-x64@0.17.19': + /@esbuild/win32-x64@0.18.20: + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true optional: true - '@esbuild/win32-x64@0.18.20': + /@esbuild/win32-x64@0.21.5: + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true optional: true - '@esbuild/win32-x64@0.21.5': + /@esbuild/win32-x64@0.24.2: + resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + requiresBuild: true optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@9.11.1)': + /@eslint-community/eslint-utils@4.4.1(eslint@9.17.0): + resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 9.11.1 + eslint: 9.17.0 eslint-visitor-keys: 3.4.3 + dev: true - '@eslint-community/regexpp@4.11.1': {} + /@eslint-community/regexpp@4.12.1: + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true - '@eslint/compat@1.1.1': {} + /@eslint/compat@1.2.4(eslint@9.17.0): + resolution: {integrity: sha512-S8ZdQj/N69YAtuqFt7653jwcvuUj131+6qGLUyDqfDg1OIoBQ66OCuXC473YQfO2AaxITTutiRQiDwoo7ZLYyg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^9.10.0 + peerDependenciesMeta: + eslint: + optional: true + dependencies: + eslint: 9.17.0 + dev: true - '@eslint/config-array@0.18.0': + /@eslint/config-array@0.19.1: + resolution: {integrity: sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: - '@eslint/object-schema': 2.1.4 - debug: 4.3.7 + '@eslint/object-schema': 2.1.5 + debug: 4.4.0 minimatch: 3.1.2 transitivePeerDependencies: - supports-color + dev: true - '@eslint/core@0.6.0': {} + /@eslint/core@0.9.1: + resolution: {integrity: sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dependencies: + '@types/json-schema': 7.0.15 + dev: true - '@eslint/eslintrc@3.1.0': + /@eslint/eslintrc@3.2.0: + resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: ajv: 6.12.6 - debug: 4.3.7 - espree: 10.1.0 + debug: 4.4.0 + espree: 10.3.0 globals: 14.0.0 ignore: 5.3.2 import-fresh: 3.3.0 @@ -13063,55 +3272,107 @@ snapshots: strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color + dev: true - '@eslint/js@9.11.1': {} + /@eslint/js@9.17.0: + resolution: {integrity: sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: true - '@eslint/object-schema@2.1.4': {} + /@eslint/object-schema@2.1.5: + resolution: {integrity: sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: true - '@eslint/plugin-kit@0.2.0': + /@eslint/plugin-kit@0.2.4: + resolution: {integrity: sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: levn: 0.4.1 + dev: true - '@hapi/hoek@9.3.0': {} + /@hapi/hoek@9.3.0: + resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} - '@hapi/topo@5.1.0': + /@hapi/topo@5.1.0: + resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} dependencies: '@hapi/hoek': 9.3.0 - '@humanwhocodes/module-importer@1.0.1': {} + /@humanfs/core@0.19.1: + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + dev: true + + /@humanfs/node@0.16.6: + resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + engines: {node: '>=18.18.0'} + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.3.1 + dev: true + + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: true + + /@humanwhocodes/retry@0.3.1: + resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} + engines: {node: '>=18.18'} + dev: true - '@humanwhocodes/retry@0.3.0': {} + /@humanwhocodes/retry@0.4.1: + resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==} + engines: {node: '>=18.18'} + dev: true - '@isaacs/cliui@8.0.2': + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} dependencies: string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 + string-width-cjs: /string-width@4.2.3 strip-ansi: 7.1.0 - strip-ansi-cjs: strip-ansi@6.0.1 + strip-ansi-cjs: /strip-ansi@6.0.1 wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + dev: true - '@isaacs/ttlcache@1.4.1': {} + /@isaacs/ttlcache@1.4.1: + resolution: {integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==} + engines: {node: '>=12'} - '@istanbuljs/load-nyc-config@1.1.0': + /@istanbuljs/load-nyc-config@1.1.0: + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} dependencies: camelcase: 5.3.1 find-up: 4.1.0 get-package-type: 0.1.0 js-yaml: 3.14.1 resolve-from: 5.0.0 + dev: true - '@istanbuljs/schema@0.1.3': {} + /@istanbuljs/schema@0.1.3: + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + dev: true - '@jest/console@25.5.0': + /@jest/console@25.5.0: + resolution: {integrity: sha512-T48kZa6MK1Y6k4b89sexwmSF4YLeZS/Udqg3Jj3jG/cHH+N/sLFCEoXEDMOKugJQ9FxPN1osxIknvKkxt6MKyw==} + engines: {node: '>= 8.3'} dependencies: '@jest/types': 25.5.0 chalk: 3.0.0 jest-message-util: 25.5.0 jest-util: 25.5.0 slash: 3.0.0 + dev: true - '@jest/console@28.1.3': + /@jest/console@28.1.3: + resolution: {integrity: sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@jest/types': 28.1.3 '@types/node': 18.16.9 @@ -13119,8 +3380,11 @@ snapshots: jest-message-util: 28.1.3 jest-util: 28.1.3 slash: 3.0.0 + dev: true - '@jest/console@29.7.0': + /@jest/console@29.7.0: + resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 '@types/node': 18.16.9 @@ -13128,8 +3392,11 @@ snapshots: jest-message-util: 29.7.0 jest-util: 29.7.0 slash: 3.0.0 + dev: true - '@jest/core@25.5.4': + /@jest/core@25.5.4: + resolution: {integrity: sha512-3uSo7laYxF00Dg/DMgbn4xMJKmDdWvZnf89n8Xj/5/AeQ2dOQmn6b6Hkj/MleyzZWXpwv+WSdYWl4cLsy2JsoA==} + engines: {node: '>= 8.3'} dependencies: '@jest/console': 25.5.0 '@jest/reporters': 25.5.1 @@ -13164,8 +3431,16 @@ snapshots: - canvas - supports-color - utf-8-validate + dev: true - '@jest/core@28.1.3(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4))': + /@jest/core@28.1.3(ts-node@10.9.1): + resolution: {integrity: sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true dependencies: '@jest/console': 28.1.3 '@jest/reporters': 28.1.3 @@ -13179,7 +3454,7 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 28.1.3 - jest-config: 28.1.3(@types/node@18.16.9)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4)) + jest-config: 28.1.3(@types/node@18.16.9)(ts-node@10.9.1) jest-haste-map: 28.1.3 jest-message-util: 28.1.3 jest-regex-util: 28.0.2 @@ -13199,8 +3474,16 @@ snapshots: transitivePeerDependencies: - supports-color - ts-node + dev: true - '@jest/core@29.7.0(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4))': + /@jest/core@29.7.0(ts-node@10.9.1): + resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 @@ -13214,7 +3497,7 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@18.16.9)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4)) + jest-config: 29.7.0(@types/node@18.16.9)(ts-node@10.9.1) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -13234,62 +3517,90 @@ snapshots: - babel-plugin-macros - supports-color - ts-node + dev: true - '@jest/create-cache-key-function@29.7.0': + /@jest/create-cache-key-function@29.7.0: + resolution: {integrity: sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@jest/environment@25.5.0': + /@jest/environment@25.5.0: + resolution: {integrity: sha512-U2VXPEqL07E/V7pSZMSQCvV5Ea4lqOlT+0ZFijl/i316cRMHvZ4qC+jBdryd+lmRetjQo0YIQr6cVPNxxK87mA==} + engines: {node: '>= 8.3'} dependencies: '@jest/fake-timers': 25.5.0 '@jest/types': 25.5.0 jest-mock: 25.5.0 + dev: true - '@jest/environment@28.1.3': + /@jest/environment@28.1.3: + resolution: {integrity: sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@jest/fake-timers': 28.1.3 '@jest/types': 28.1.3 '@types/node': 18.16.9 jest-mock: 28.1.3 + dev: true - '@jest/environment@29.7.0': + /@jest/environment@29.7.0: + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 '@types/node': 18.16.9 jest-mock: 29.7.0 - '@jest/expect-utils@28.1.3': + /@jest/expect-utils@28.1.3: + resolution: {integrity: sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: jest-get-type: 28.0.2 + dev: true - '@jest/expect-utils@29.7.0': + /@jest/expect-utils@29.7.0: + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-get-type: 29.6.3 + dev: true - '@jest/expect@28.1.3': + /@jest/expect@28.1.3: + resolution: {integrity: sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: expect: 28.1.3 jest-snapshot: 28.1.3 transitivePeerDependencies: - supports-color + dev: true - '@jest/expect@29.7.0': + /@jest/expect@29.7.0: + resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: expect: 29.7.0 jest-snapshot: 29.7.0 transitivePeerDependencies: - supports-color + dev: true - '@jest/fake-timers@25.5.0': + /@jest/fake-timers@25.5.0: + resolution: {integrity: sha512-9y2+uGnESw/oyOI3eww9yaxdZyHq7XvprfP/eeoCsjqKYts2yRlsHS/SgjPDV8FyMfn2nbMy8YzUk6nyvdLOpQ==} + engines: {node: '>= 8.3'} dependencies: '@jest/types': 25.5.0 jest-message-util: 25.5.0 jest-mock: 25.5.0 jest-util: 25.5.0 lolex: 5.1.2 + dev: true - '@jest/fake-timers@28.1.3': + /@jest/fake-timers@28.1.3: + resolution: {integrity: sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@jest/types': 28.1.3 '@sinonjs/fake-timers': 9.1.2 @@ -13297,8 +3608,11 @@ snapshots: jest-message-util: 28.1.3 jest-mock: 28.1.3 jest-util: 28.1.3 + dev: true - '@jest/fake-timers@29.7.0': + /@jest/fake-timers@29.7.0: + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 @@ -13307,21 +3621,29 @@ snapshots: jest-mock: 29.7.0 jest-util: 29.7.0 - '@jest/globals@25.5.2': + /@jest/globals@25.5.2: + resolution: {integrity: sha512-AgAS/Ny7Q2RCIj5kZ+0MuKM1wbF0WMLxbCVl/GOMoCNbODRdJ541IxJ98xnZdVSZXivKpJlNPIWa3QmY0l4CXA==} + engines: {node: '>= 8.3'} dependencies: '@jest/environment': 25.5.0 '@jest/types': 25.5.0 expect: 25.5.0 + dev: true - '@jest/globals@28.1.3': + /@jest/globals@28.1.3: + resolution: {integrity: sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@jest/environment': 28.1.3 '@jest/expect': 28.1.3 '@jest/types': 28.1.3 transitivePeerDependencies: - supports-color + dev: true - '@jest/globals@29.7.0': + /@jest/globals@29.7.0: + resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/environment': 29.7.0 '@jest/expect': 29.7.0 @@ -13329,8 +3651,11 @@ snapshots: jest-mock: 29.7.0 transitivePeerDependencies: - supports-color + dev: true - '@jest/reporters@25.5.1': + /@jest/reporters@25.5.1: + resolution: {integrity: sha512-3jbd8pPDTuhYJ7vqiHXbSwTJQNavczPs+f1kRprRDxETeE3u6srJ+f0NPuwvOmk+lmunZzPkYWIFZDLHQPkviw==} + engines: {node: '>= 8.3'} dependencies: '@bcoe/v8-coverage': 0.2.3 '@jest/console': 25.5.0 @@ -13360,8 +3685,16 @@ snapshots: node-notifier: 6.0.0 transitivePeerDependencies: - supports-color + dev: true - '@jest/reporters@28.1.3': + /@jest/reporters@28.1.3: + resolution: {integrity: sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true dependencies: '@bcoe/v8-coverage': 0.2.3 '@jest/console': 28.1.3 @@ -13390,8 +3723,16 @@ snapshots: v8-to-istanbul: 9.3.0 transitivePeerDependencies: - supports-color + dev: true - '@jest/reporters@29.7.0': + /@jest/reporters@29.7.0: + resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true dependencies: '@bcoe/v8-coverage': 0.2.3 '@jest/console': 29.7.0 @@ -13419,55 +3760,81 @@ snapshots: v8-to-istanbul: 9.3.0 transitivePeerDependencies: - supports-color + dev: true - '@jest/schemas@28.1.3': + /@jest/schemas@28.1.3: + resolution: {integrity: sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@sinclair/typebox': 0.24.51 + dev: true - '@jest/schemas@29.6.3': + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@sinclair/typebox': 0.27.8 - '@jest/source-map@25.5.0': + /@jest/source-map@25.5.0: + resolution: {integrity: sha512-eIGx0xN12yVpMcPaVpjXPnn3N30QGJCJQSkEDUt9x1fI1Gdvb07Ml6K5iN2hG7NmMP6FDmtPEssE3z6doOYUwQ==} + engines: {node: '>= 8.3'} dependencies: callsites: 3.1.0 graceful-fs: 4.2.11 source-map: 0.6.1 + dev: true - '@jest/source-map@28.1.2': + /@jest/source-map@28.1.2: + resolution: {integrity: sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@jridgewell/trace-mapping': 0.3.25 callsites: 3.1.0 graceful-fs: 4.2.11 + dev: true - '@jest/source-map@29.6.3': + /@jest/source-map@29.6.3: + resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jridgewell/trace-mapping': 0.3.25 callsites: 3.1.0 graceful-fs: 4.2.11 + dev: true - '@jest/test-result@25.5.0': + /@jest/test-result@25.5.0: + resolution: {integrity: sha512-oV+hPJgXN7IQf/fHWkcS99y0smKLU2czLBJ9WA0jHITLst58HpQMtzSYxzaBvYc6U5U6jfoMthqsUlUlbRXs0A==} + engines: {node: '>= 8.3'} dependencies: '@jest/console': 25.5.0 '@jest/types': 25.5.0 '@types/istanbul-lib-coverage': 2.0.6 collect-v8-coverage: 1.0.2 + dev: true - '@jest/test-result@28.1.3': + /@jest/test-result@28.1.3: + resolution: {integrity: sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@jest/console': 28.1.3 '@jest/types': 28.1.3 '@types/istanbul-lib-coverage': 2.0.6 collect-v8-coverage: 1.0.2 + dev: true - '@jest/test-result@29.7.0': + /@jest/test-result@29.7.0: + resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/console': 29.7.0 '@jest/types': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 collect-v8-coverage: 1.0.2 + dev: true - '@jest/test-sequencer@25.5.4': + /@jest/test-sequencer@25.5.4: + resolution: {integrity: sha512-pTJGEkSeg1EkCO2YWq6hbFvKNXk8ejqlxiOg1jBNLnWrgXOkdY6UmqZpwGFXNnRt9B8nO1uWMzLLZ4eCmhkPNA==} + engines: {node: '>= 8.3'} dependencies: '@jest/test-result': 25.5.0 graceful-fs: 4.2.11 @@ -13479,24 +3846,33 @@ snapshots: - canvas - supports-color - utf-8-validate + dev: true - '@jest/test-sequencer@28.1.3': + /@jest/test-sequencer@28.1.3: + resolution: {integrity: sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@jest/test-result': 28.1.3 graceful-fs: 4.2.11 jest-haste-map: 28.1.3 slash: 3.0.0 + dev: true - '@jest/test-sequencer@29.7.0': + /@jest/test-sequencer@29.7.0: + resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/test-result': 29.7.0 graceful-fs: 4.2.11 jest-haste-map: 29.7.0 slash: 3.0.0 + dev: true - '@jest/transform@25.5.1': + /@jest/transform@25.5.1: + resolution: {integrity: sha512-Y8CEoVwXb4QwA6Y/9uDkn0Xfz0finGkieuV0xkdF9UtZGJeLukD5nLkaVrVsODB1ojRWlaoD0AJZpVHCSnJEvg==} + engines: {node: '>= 8.3'} dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 '@jest/types': 25.5.0 babel-plugin-istanbul: 6.1.1 chalk: 3.0.0 @@ -13514,10 +3890,13 @@ snapshots: write-file-atomic: 3.0.3 transitivePeerDependencies: - supports-color + dev: true - '@jest/transform@28.1.3': + /@jest/transform@28.1.3: + resolution: {integrity: sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 '@jest/types': 28.1.3 '@jridgewell/trace-mapping': 0.3.25 babel-plugin-istanbul: 6.1.1 @@ -13534,10 +3913,13 @@ snapshots: write-file-atomic: 4.0.2 transitivePeerDependencies: - supports-color + dev: true - '@jest/transform@29.7.0': + /@jest/transform@29.7.0: + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.25 babel-plugin-istanbul: 6.1.1 @@ -13554,15 +3936,21 @@ snapshots: write-file-atomic: 4.0.2 transitivePeerDependencies: - supports-color + dev: true - '@jest/types@25.5.0': + /@jest/types@25.5.0: + resolution: {integrity: sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==} + engines: {node: '>= 8.3'} dependencies: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 1.1.2 '@types/yargs': 15.0.19 chalk: 3.0.0 + dev: true - '@jest/types@26.6.2': + /@jest/types@26.6.2: + resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==} + engines: {node: '>= 10.14.2'} dependencies: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 @@ -13570,15 +3958,20 @@ snapshots: '@types/yargs': 15.0.19 chalk: 4.1.2 - '@jest/types@27.5.1': + /@jest/types@27.5.1: + resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 '@types/node': 18.16.9 '@types/yargs': 16.0.9 chalk: 4.1.2 + dev: true - '@jest/types@28.1.3': + /@jest/types@28.1.3: + resolution: {integrity: sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@jest/schemas': 28.1.3 '@types/istanbul-lib-coverage': 2.0.6 @@ -13586,8 +3979,11 @@ snapshots: '@types/node': 18.16.9 '@types/yargs': 17.0.33 chalk: 4.1.2 + dev: true - '@jest/types@29.6.3': + /@jest/types@29.6.3: + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 @@ -13596,74 +3992,103 @@ snapshots: '@types/yargs': 17.0.33 chalk: 4.1.2 - '@joshwooding/vite-plugin-react-docgen-typescript@0.3.0(typescript@5.5.4)(vite@5.4.8(@types/node@18.16.9)(terser@5.33.0))': + /@joshwooding/vite-plugin-react-docgen-typescript@0.4.2(typescript@5.5.4)(vite@5.4.11): + resolution: {integrity: sha512-feQ+ntr+8hbVudnsTUapiMN9q8T90XA1d5jn9QzY09sNoj4iD9wi0PY1vsBFTda4ZjEaxRK9S81oarR2nj7TFQ==} + peerDependencies: + typescript: '>= 4.3.x' + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 + peerDependenciesMeta: + typescript: + optional: true dependencies: - glob: 7.2.3 - glob-promise: 4.2.2(glob@7.2.3) magic-string: 0.27.0 react-docgen-typescript: 2.2.2(typescript@5.5.4) - vite: 5.4.8(@types/node@18.16.9)(terser@5.33.0) - optionalDependencies: typescript: 5.5.4 + vite: 5.4.11(@types/node@18.16.9) + dev: true - '@jridgewell/gen-mapping@0.3.5': + /@jridgewell/gen-mapping@0.3.8: + resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} + engines: {node: '>=6.0.0'} dependencies: '@jridgewell/set-array': 1.2.1 '@jridgewell/sourcemap-codec': 1.5.0 '@jridgewell/trace-mapping': 0.3.25 - '@jridgewell/resolve-uri@3.1.2': {} + /@jridgewell/resolve-uri@3.1.2: + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} - '@jridgewell/set-array@1.2.1': {} + /@jridgewell/set-array@1.2.1: + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} - '@jridgewell/source-map@0.3.6': + /@jridgewell/source-map@0.3.6: + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} dependencies: - '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 - '@jridgewell/sourcemap-codec@1.5.0': {} + /@jridgewell/sourcemap-codec@1.5.0: + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - '@jridgewell/trace-mapping@0.3.25': + /@jridgewell/trace-mapping@0.3.25: + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} dependencies: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping@0.3.9': + /@jridgewell/trace-mapping@0.3.9: + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} dependencies: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 + dev: true - '@manypkg/find-root@1.1.0': + /@manypkg/find-root@1.1.0: + resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 '@types/node': 12.20.55 find-up: 4.1.0 fs-extra: 8.1.0 + dev: true - '@manypkg/get-packages@1.1.3': + /@manypkg/get-packages@1.1.3: + resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 '@changesets/types': 4.1.0 '@manypkg/find-root': 1.1.0 fs-extra: 8.1.0 globby: 11.1.0 read-yaml-file: 1.1.0 + dev: true - '@mdx-js/react@3.1.0(@types/react@18.3.1)(react@18.3.1)': + /@mdx-js/react@3.1.0(@types/react@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ==} + peerDependencies: + '@types/react': '>=16' + react: '>=16' dependencies: '@types/mdx': 2.0.13 '@types/react': 18.3.1 react: 18.3.1 + dev: false - '@microsoft/api-extractor-model@7.28.13(@types/node@18.16.9)': + /@microsoft/api-extractor-model@7.28.13(@types/node@18.16.9): + resolution: {integrity: sha512-39v/JyldX4MS9uzHcdfmjjfS6cYGAoXV+io8B5a338pkHiSt+gy2eXQ0Q7cGFJ7quSa1VqqlMdlPrB6sLR/cAw==} dependencies: '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 '@rushstack/node-core-library': 4.0.2(@types/node@18.16.9) transitivePeerDependencies: - '@types/node' + dev: true - '@microsoft/api-extractor@7.43.0(@types/node@18.16.9)': + /@microsoft/api-extractor@7.43.0(@types/node@18.16.9): + resolution: {integrity: sha512-GFhTcJpB+MI6FhvXEI9b2K0snulNLWHqC/BbcJtyNYcKUiw7l3Lgis5ApsYncJ0leALX7/of4XfmXk+maT111w==} + hasBin: true dependencies: '@microsoft/api-extractor-model': 7.28.13(@types/node@18.16.9) '@microsoft/tsdoc': 0.14.2 @@ -13674,78 +4099,107 @@ snapshots: '@rushstack/ts-command-line': 4.19.1(@types/node@18.16.9) lodash: 4.17.21 minimatch: 3.0.8 - resolve: 1.22.8 + resolve: 1.22.10 semver: 7.5.4 source-map: 0.6.1 typescript: 5.4.2 transitivePeerDependencies: - '@types/node' + dev: true - '@microsoft/tsdoc-config@0.16.2': + /@microsoft/tsdoc-config@0.16.2: + resolution: {integrity: sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==} dependencies: '@microsoft/tsdoc': 0.14.2 ajv: 6.12.6 jju: 1.4.0 resolve: 1.19.0 + dev: true - '@microsoft/tsdoc@0.14.2': {} + /@microsoft/tsdoc@0.14.2: + resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==} + dev: true - '@module-federation/bridge-react-webpack-plugin@0.6.6': + /@module-federation/bridge-react-webpack-plugin@0.6.16: + resolution: {integrity: sha512-AQj20lUL5fmdz4un56W3VF8naZaRDmztczl+/j4Qa69JAaUbbZK6zZJ3NEjx0cNzpiq/mGmG9Vik3V4rI/4BUA==} dependencies: - '@module-federation/sdk': 0.6.6 + '@module-federation/sdk': 0.6.16 '@types/semver': 7.5.8 semver: 7.6.3 + dev: true - '@module-federation/data-prefetch@0.6.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + /@module-federation/data-prefetch@0.6.16(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-m5SNKlAkB2FFCs2cl6LWqo6s2NZ7HuCrp6QrrMzuKjB6EddvKojVQxOzrWdcMLs1vESy6fyU4M4U7PxSojw6Ww==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' dependencies: - '@module-federation/runtime': 0.6.6 - '@module-federation/sdk': 0.6.6 + '@module-federation/runtime': 0.6.16 + '@module-federation/sdk': 0.6.16 fs-extra: 9.1.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) + dev: true - '@module-federation/dts-plugin@0.6.6(typescript@5.5.4)(vue-tsc@1.8.27(typescript@5.5.4))': + /@module-federation/dts-plugin@0.6.16(typescript@5.5.4): + resolution: {integrity: sha512-XM6+EYVrS2Q/ZW0u9cH0sJT5t5SQHRjzmW7JWdPv0+wKGCA15WtRMc55boM4Wan7jXJZf+JeD5QLXWiSjaJdnw==} + peerDependencies: + typescript: ^4.9.0 || ^5.0.0 + vue-tsc: '>=1.0.24' + peerDependenciesMeta: + vue-tsc: + optional: true dependencies: - '@module-federation/managers': 0.6.6 - '@module-federation/sdk': 0.6.6 - '@module-federation/third-party-dts-extractor': 0.6.6 + '@module-federation/error-codes': 0.6.14 + '@module-federation/managers': 0.6.16 + '@module-federation/sdk': 0.6.16 + '@module-federation/third-party-dts-extractor': 0.6.16 adm-zip: 0.5.16 ansi-colors: 4.1.3 - axios: 1.7.7 + axios: 1.7.9 chalk: 3.0.0 fs-extra: 9.1.0 - isomorphic-ws: 5.0.0(ws@8.17.1) + isomorphic-ws: 5.0.0(ws@8.18.0) koa: 2.15.3 lodash.clonedeepwith: 4.5.0 log4js: 6.9.1 node-schedule: 2.1.1 - rambda: 9.3.0 + rambda: 9.4.1 typescript: 5.5.4 - ws: 8.17.1 - optionalDependencies: - vue-tsc: 1.8.27(typescript@5.5.4) + ws: 8.18.0 transitivePeerDependencies: - bufferutil - debug - supports-color - utf-8-validate + dev: true - '@module-federation/enhanced@0.6.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)(vue-tsc@1.8.27(typescript@5.5.4))(webpack@5.95.0(@swc/core@1.5.29(@swc/helpers@0.5.13))(esbuild@0.17.19))': + /@module-federation/enhanced@0.6.16(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.4)(webpack@5.97.1): + resolution: {integrity: sha512-5MqA35WGvPmCScT/xNnheR4RBa2oYHkLpeVjOA0xg0PeUTC7aSfGRLsntzFeyzLITSjbVTupK2YwmjiZr3Z0LQ==} + peerDependencies: + typescript: ^4.9.0 || ^5.0.0 + vue-tsc: '>=1.0.24' + webpack: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + vue-tsc: + optional: true + webpack: + optional: true dependencies: - '@module-federation/bridge-react-webpack-plugin': 0.6.6 - '@module-federation/data-prefetch': 0.6.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@module-federation/dts-plugin': 0.6.6(typescript@5.5.4)(vue-tsc@1.8.27(typescript@5.5.4)) - '@module-federation/managers': 0.6.6 - '@module-federation/manifest': 0.6.6(typescript@5.5.4)(vue-tsc@1.8.27(typescript@5.5.4)) - '@module-federation/rspack': 0.6.6(typescript@5.5.4)(vue-tsc@1.8.27(typescript@5.5.4)) - '@module-federation/runtime-tools': 0.6.6 - '@module-federation/sdk': 0.6.6 + '@module-federation/bridge-react-webpack-plugin': 0.6.16 + '@module-federation/data-prefetch': 0.6.16(react-dom@18.3.1)(react@18.3.1) + '@module-federation/dts-plugin': 0.6.16(typescript@5.5.4) + '@module-federation/managers': 0.6.16 + '@module-federation/manifest': 0.6.16(typescript@5.5.4) + '@module-federation/rspack': 0.6.16(typescript@5.5.4) + '@module-federation/runtime-tools': 0.6.16 + '@module-federation/sdk': 0.6.16 btoa: 1.2.1 - upath: 2.0.1 - optionalDependencies: typescript: 5.5.4 - vue-tsc: 1.8.27(typescript@5.5.4) - webpack: 5.95.0(@swc/core@1.5.29(@swc/helpers@0.5.13))(esbuild@0.17.19) + upath: 2.0.1 + webpack: 5.97.1(@swc/core@1.5.29)(esbuild@0.17.19) transitivePeerDependencies: - bufferutil - debug @@ -13753,18 +4207,26 @@ snapshots: - react-dom - supports-color - utf-8-validate + dev: true - '@module-federation/managers@0.6.6': + /@module-federation/error-codes@0.6.14: + resolution: {integrity: sha512-ik+ezloFkxmE5atqTUG9lRr9xV5EcKDjH+MZba2IJQT5cZIM6o2ThTC45E013N4SCleaGxBtIGoPLZJzT4xa0Q==} + dev: true + + /@module-federation/managers@0.6.16: + resolution: {integrity: sha512-9oqJT0F61GhaFE4EFgJjVyQlD8ohXxMJBS9UGCKC6nHd3+PI4NBWGN2D+alBOwvwtt3LhtssbVH8H8HZEM1GnQ==} dependencies: - '@module-federation/sdk': 0.6.6 + '@module-federation/sdk': 0.6.16 find-pkg: 2.0.0 fs-extra: 9.1.0 + dev: true - '@module-federation/manifest@0.6.6(typescript@5.5.4)(vue-tsc@1.8.27(typescript@5.5.4))': + /@module-federation/manifest@0.6.16(typescript@5.5.4): + resolution: {integrity: sha512-YjOk+1uR6E5qIEWiy35IrMyEy+rDGI5nJd+6MQobkXG40DK94mdPxJ7TSCozj/bpZ9SadCxXRCkMiE/gTkryAQ==} dependencies: - '@module-federation/dts-plugin': 0.6.6(typescript@5.5.4)(vue-tsc@1.8.27(typescript@5.5.4)) - '@module-federation/managers': 0.6.6 - '@module-federation/sdk': 0.6.6 + '@module-federation/dts-plugin': 0.6.16(typescript@5.5.4) + '@module-federation/managers': 0.6.16 + '@module-federation/sdk': 0.6.16 chalk: 3.0.0 find-pkg: 2.0.0 transitivePeerDependencies: @@ -13774,67 +4236,287 @@ snapshots: - typescript - utf-8-validate - vue-tsc + dev: true - '@module-federation/rspack@0.6.6(typescript@5.5.4)(vue-tsc@1.8.27(typescript@5.5.4))': + /@module-federation/rspack@0.6.16(typescript@5.5.4): + resolution: {integrity: sha512-9nQAyw7QvgXJYPTQseyQ31qQtSlo0VsppQOyFLstLITzgWWugN7cN8cGAriUKYBI78THuX+lp1mdgsNTBvxJPA==} + peerDependencies: + typescript: ^4.9.0 || ^5.0.0 + vue-tsc: '>=1.0.24' + peerDependenciesMeta: + typescript: + optional: true + vue-tsc: + optional: true dependencies: - '@module-federation/bridge-react-webpack-plugin': 0.6.6 - '@module-federation/dts-plugin': 0.6.6(typescript@5.5.4)(vue-tsc@1.8.27(typescript@5.5.4)) - '@module-federation/managers': 0.6.6 - '@module-federation/manifest': 0.6.6(typescript@5.5.4)(vue-tsc@1.8.27(typescript@5.5.4)) - '@module-federation/runtime-tools': 0.6.6 - '@module-federation/sdk': 0.6.6 - optionalDependencies: + '@module-federation/bridge-react-webpack-plugin': 0.6.16 + '@module-federation/dts-plugin': 0.6.16(typescript@5.5.4) + '@module-federation/managers': 0.6.16 + '@module-federation/manifest': 0.6.16(typescript@5.5.4) + '@module-federation/runtime-tools': 0.6.16 + '@module-federation/sdk': 0.6.16 typescript: 5.5.4 - vue-tsc: 1.8.27(typescript@5.5.4) transitivePeerDependencies: - bufferutil - debug - supports-color - utf-8-validate + dev: true - '@module-federation/runtime-tools@0.6.6': + /@module-federation/runtime-tools@0.6.16: + resolution: {integrity: sha512-AIaxnx99tVYppYCgdJQz43mrGZ2pPJtC7YEIjuQV+UnSORj+d/GOIqF88MDx3i7siFcQ4zrT5BVtEWhXcJdv0g==} dependencies: - '@module-federation/runtime': 0.6.6 - '@module-federation/webpack-bundler-runtime': 0.6.6 + '@module-federation/runtime': 0.6.16 + '@module-federation/webpack-bundler-runtime': 0.6.16 + dev: true - '@module-federation/runtime@0.6.6': + /@module-federation/runtime@0.6.16: + resolution: {integrity: sha512-3oFDRkolGwiXuQz+wzX3YzBWI9so0+K05YRf0TEdJguj3W/v/AMrBCz7W4c4O/wSK45Kuqd4lHKhCyKWRPyhOw==} dependencies: - '@module-federation/sdk': 0.6.6 + '@module-federation/error-codes': 0.6.14 + '@module-federation/sdk': 0.6.16 + dev: true - '@module-federation/sdk@0.6.6': {} + /@module-federation/sdk@0.6.16: + resolution: {integrity: sha512-rzQH/v9bVc032lzV4j1IGYRc5gszwzBevYBBDJf3oNLwkY2kIDUJ99OWvq3aaPJoE0jEWPVe3K5iNc+dZe4tMQ==} + dependencies: + isomorphic-rslog: 0.0.5 + dev: true - '@module-federation/third-party-dts-extractor@0.6.6': + /@module-federation/third-party-dts-extractor@0.6.16: + resolution: {integrity: sha512-F4W8QBlPLNY22TGjUWA+FyFYN6wVgGKhefd170A8BOqv2gB1yhm6OIEmDnO6TwfDfQQebVCcAu23AzLzgS5eCg==} dependencies: find-pkg: 2.0.0 fs-extra: 9.1.0 resolve: 1.22.8 + dev: true - '@module-federation/webpack-bundler-runtime@0.6.6': + /@module-federation/webpack-bundler-runtime@0.6.16: + resolution: {integrity: sha512-Tpi251DApEaQ62KCaJCh1RU1SZTUcVh8lx2zotn/YOMZdw83IzYu3PYYA1V0Eg5jVe6I2GmGH52pJPCtwbgjqA==} dependencies: - '@module-federation/runtime': 0.6.6 - '@module-federation/sdk': 0.6.6 + '@module-federation/runtime': 0.6.16 + '@module-federation/sdk': 0.6.16 + dev: true + + /@mole-inc/bin-wrapper@8.0.1: + resolution: {integrity: sha512-sTGoeZnjI8N4KS+sW2AN95gDBErhAguvkw/tWdCjeM8bvxpz5lqrnd0vOJABA1A+Ic3zED7PYoLP/RANLgVotA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + bin-check: 4.1.0 + bin-version-check: 5.1.0 + content-disposition: 0.5.4 + ext-name: 5.0.0 + file-type: 17.1.6 + filenamify: 5.1.1 + got: 11.8.6 + os-filter-obj: 2.0.0 + dev: true + + /@napi-rs/nice-android-arm-eabi@1.0.1: + resolution: {integrity: sha512-5qpvOu5IGwDo7MEKVqqyAxF90I6aLj4n07OzpARdgDRfz8UbBztTByBp0RC59r3J1Ij8uzYi6jI7r5Lws7nn6w==} + engines: {node: '>= 10'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@napi-rs/nice-android-arm64@1.0.1: + resolution: {integrity: sha512-GqvXL0P8fZ+mQqG1g0o4AO9hJjQaeYG84FRfZaYjyJtZZZcMjXW5TwkL8Y8UApheJgyE13TQ4YNUssQaTgTyvA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@napi-rs/nice-darwin-arm64@1.0.1: + resolution: {integrity: sha512-91k3HEqUl2fsrz/sKkuEkscj6EAj3/eZNCLqzD2AA0TtVbkQi8nqxZCZDMkfklULmxLkMxuUdKe7RvG/T6s2AA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@napi-rs/nice-darwin-x64@1.0.1: + resolution: {integrity: sha512-jXnMleYSIR/+TAN/p5u+NkCA7yidgswx5ftqzXdD5wgy/hNR92oerTXHc0jrlBisbd7DpzoaGY4cFD7Sm5GlgQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@napi-rs/nice-freebsd-x64@1.0.1: + resolution: {integrity: sha512-j+iJ/ezONXRQsVIB/FJfwjeQXX7A2tf3gEXs4WUGFrJjpe/z2KB7sOv6zpkm08PofF36C9S7wTNuzHZ/Iiccfw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@napi-rs/nice-linux-arm-gnueabihf@1.0.1: + resolution: {integrity: sha512-G8RgJ8FYXYkkSGQwywAUh84m946UTn6l03/vmEXBYNJxQJcD+I3B3k5jmjFG/OPiU8DfvxutOP8bi+F89MCV7Q==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@napi-rs/nice-linux-arm64-gnu@1.0.1: + resolution: {integrity: sha512-IMDak59/W5JSab1oZvmNbrms3mHqcreaCeClUjwlwDr0m3BoR09ZiN8cKFBzuSlXgRdZ4PNqCYNeGQv7YMTjuA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true + optional: true + + /@napi-rs/nice-linux-arm64-musl@1.0.1: + resolution: {integrity: sha512-wG8fa2VKuWM4CfjOjjRX9YLIbysSVV1S3Kgm2Fnc67ap/soHBeYZa6AGMeR5BJAylYRjnoVOzV19Cmkco3QEPw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [musl] + requiresBuild: true + dev: true + optional: true + + /@napi-rs/nice-linux-ppc64-gnu@1.0.1: + resolution: {integrity: sha512-lxQ9WrBf0IlNTCA9oS2jg/iAjQyTI6JHzABV664LLrLA/SIdD+I1i3Mjf7TsnoUbgopBcCuDztVLfJ0q9ubf6Q==} + engines: {node: '>= 10'} + cpu: [ppc64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true + optional: true + + /@napi-rs/nice-linux-riscv64-gnu@1.0.1: + resolution: {integrity: sha512-3xs69dO8WSWBb13KBVex+yvxmUeEsdWexxibqskzoKaWx9AIqkMbWmE2npkazJoopPKX2ULKd8Fm9veEn0g4Ig==} + engines: {node: '>= 10'} + cpu: [riscv64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true + optional: true + + /@napi-rs/nice-linux-s390x-gnu@1.0.1: + resolution: {integrity: sha512-lMFI3i9rlW7hgToyAzTaEybQYGbQHDrpRkg+1gJWEpH0PLAQoZ8jiY0IzakLfNWnVda1eTYYlxxFYzW8Rqczkg==} + engines: {node: '>= 10'} + cpu: [s390x] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true + optional: true + + /@napi-rs/nice-linux-x64-gnu@1.0.1: + resolution: {integrity: sha512-XQAJs7DRN2GpLN6Fb+ZdGFeYZDdGl2Fn3TmFlqEL5JorgWKrQGRUrpGKbgZ25UeZPILuTKJ+OowG2avN8mThBA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true + optional: true + + /@napi-rs/nice-linux-x64-musl@1.0.1: + resolution: {integrity: sha512-/rodHpRSgiI9o1faq9SZOp/o2QkKQg7T+DK0R5AkbnI/YxvAIEHf2cngjYzLMQSQgUhxym+LFr+UGZx4vK4QdQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [musl] + requiresBuild: true + dev: true + optional: true + + /@napi-rs/nice-win32-arm64-msvc@1.0.1: + resolution: {integrity: sha512-rEcz9vZymaCB3OqEXoHnp9YViLct8ugF+6uO5McifTedjq4QMQs3DHz35xBEGhH3gJWEsXMUbzazkz5KNM5YUg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@napi-rs/nice-win32-ia32-msvc@1.0.1: + resolution: {integrity: sha512-t7eBAyPUrWL8su3gDxw9xxxqNwZzAqKo0Szv3IjVQd1GpXXVkb6vBBQUuxfIYaXMzZLwlxRQ7uzM2vdUE9ULGw==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@napi-rs/nice-win32-x64-msvc@1.0.1: + resolution: {integrity: sha512-JlF+uDcatt3St2ntBG8H02F1mM45i5SF9W+bIKiReVE6wiy3o16oBP/yxt+RZ+N6LbCImJXJ6bXNO2kn9AXicg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@napi-rs/nice@1.0.1: + resolution: {integrity: sha512-zM0mVWSXE0a0h9aKACLwKmD6nHcRiKrPpCfvaKqG1CqDEyjEawId0ocXxVzPMCAm6kkWr2P025msfxXEnt8UGQ==} + engines: {node: '>= 10'} + requiresBuild: true + optionalDependencies: + '@napi-rs/nice-android-arm-eabi': 1.0.1 + '@napi-rs/nice-android-arm64': 1.0.1 + '@napi-rs/nice-darwin-arm64': 1.0.1 + '@napi-rs/nice-darwin-x64': 1.0.1 + '@napi-rs/nice-freebsd-x64': 1.0.1 + '@napi-rs/nice-linux-arm-gnueabihf': 1.0.1 + '@napi-rs/nice-linux-arm64-gnu': 1.0.1 + '@napi-rs/nice-linux-arm64-musl': 1.0.1 + '@napi-rs/nice-linux-ppc64-gnu': 1.0.1 + '@napi-rs/nice-linux-riscv64-gnu': 1.0.1 + '@napi-rs/nice-linux-s390x-gnu': 1.0.1 + '@napi-rs/nice-linux-x64-gnu': 1.0.1 + '@napi-rs/nice-linux-x64-musl': 1.0.1 + '@napi-rs/nice-win32-arm64-msvc': 1.0.1 + '@napi-rs/nice-win32-ia32-msvc': 1.0.1 + '@napi-rs/nice-win32-x64-msvc': 1.0.1 + dev: true + optional: true - '@napi-rs/wasm-runtime@0.2.4': + /@napi-rs/wasm-runtime@0.2.4: + resolution: {integrity: sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==} dependencies: - '@emnapi/core': 1.2.0 - '@emnapi/runtime': 1.2.0 + '@emnapi/core': 1.3.1 + '@emnapi/runtime': 1.3.1 '@tybys/wasm-util': 0.9.0 + dev: true - '@nodelib/fs.scandir@2.1.5': + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 - '@nodelib/fs.stat@2.0.5': {} + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} - '@nodelib/fs.walk@1.2.8': + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} dependencies: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - '@nrwl/cypress@19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.11.1)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0))': + /@nrwl/cypress@19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(eslint@9.17.0)(nx@19.8.0)(typescript@5.5.4)(verdaccio@5.33.0): + resolution: {integrity: sha512-e9/XiZtEz3hBnr8tCy9S6TwEaXVf1djbk+JPvFuYWIwSLBDhfkpgd+2FLsX7kTw1KNvG6APbnG5HiUi6mSlTAg==} dependencies: - '@nx/cypress': 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.11.1)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0)) + '@nx/cypress': 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(eslint@9.17.0)(nx@19.8.0)(typescript@5.5.4)(verdaccio@5.33.0) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -13849,16 +4531,20 @@ snapshots: - supports-color - typescript - verdaccio + dev: true - '@nrwl/devkit@19.8.0(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))': + /@nrwl/devkit@19.8.0(nx@19.8.0): + resolution: {integrity: sha512-LehpQ2D1687+JWaUpW84NPuXsQuPosmts66LShPT4+6KozB4gd0hJGAXNXpjNs9CUfLyNf8rRdEeqNjWnPYEmA==} dependencies: - '@nx/devkit': 19.8.0(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))) + '@nx/devkit': 19.8.0(nx@19.8.0) transitivePeerDependencies: - nx + dev: true - '@nrwl/eslint-plugin-nx@19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(@typescript-eslint/parser@8.7.0(eslint@9.11.1)(typescript@5.5.4))(eslint-config-prettier@9.1.0(eslint@9.11.1))(eslint@9.11.1)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0))': + /@nrwl/eslint-plugin-nx@19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(@typescript-eslint/parser@8.18.1)(eslint-config-prettier@9.1.0)(eslint@9.17.0)(nx@19.8.0)(typescript@5.5.4)(verdaccio@5.33.0): + resolution: {integrity: sha512-tQU+kokxOylFz6/Ffl/FyVswLLiHNAvo6Afd+QEajQPn9CWGKolXSHGGva9skMKDjWtzOWAz1BjgpUf0nfHEFQ==} dependencies: - '@nx/eslint-plugin': 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(@typescript-eslint/parser@8.7.0(eslint@9.11.1)(typescript@5.5.4))(eslint-config-prettier@9.1.0(eslint@9.11.1))(eslint@9.11.1)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0)) + '@nx/eslint-plugin': 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(@typescript-eslint/parser@8.18.1)(eslint-config-prettier@9.1.0)(eslint@9.17.0)(nx@19.8.0)(typescript@5.5.4)(verdaccio@5.33.0) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -13873,10 +4559,12 @@ snapshots: - supports-color - typescript - verdaccio + dev: true - '@nrwl/jest@19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0))': + /@nrwl/jest@19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(nx@19.8.0)(ts-node@10.9.1)(typescript@5.5.4)(verdaccio@5.33.0): + resolution: {integrity: sha512-+OOBsOfSNJtdrxwNSCNCF7kVga4SaS5aTkXNyDlQztlF+ccEOoafEfbV5g4gMUTF06VnXsvoC5M46xmC4Y9zTQ==} dependencies: - '@nx/jest': 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0)) + '@nx/jest': 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(nx@19.8.0)(ts-node@10.9.1)(typescript@5.5.4)(verdaccio@5.33.0) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -13891,10 +4579,12 @@ snapshots: - ts-node - typescript - verdaccio + dev: true - '@nrwl/js@19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(typescript@5.4.5)(verdaccio@5.32.2(typanion@3.14.0))': + /@nrwl/js@19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(nx@19.8.0)(typescript@5.4.5)(verdaccio@5.33.0): + resolution: {integrity: sha512-agmIwKD6zK0l+aIEhDv3VuPW10rn5fhHeif3k5q9EgT47QL2gCNzU54oYpuXoKeenJCsDMzOEkJb1IsglVas6g==} dependencies: - '@nx/js': 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(typescript@5.4.5)(verdaccio@5.32.2(typanion@3.14.0)) + '@nx/js': 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(nx@19.8.0)(typescript@5.4.5)(verdaccio@5.33.0) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -13906,10 +4596,12 @@ snapshots: - supports-color - typescript - verdaccio + dev: true - '@nrwl/js@19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0))': + /@nrwl/js@19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(nx@19.8.0)(typescript@5.5.4)(verdaccio@5.33.0): + resolution: {integrity: sha512-agmIwKD6zK0l+aIEhDv3VuPW10rn5fhHeif3k5q9EgT47QL2gCNzU54oYpuXoKeenJCsDMzOEkJb1IsglVas6g==} dependencies: - '@nx/js': 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0)) + '@nx/js': 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(nx@19.8.0)(typescript@5.5.4)(verdaccio@5.33.0) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -13921,10 +4613,12 @@ snapshots: - supports-color - typescript - verdaccio + dev: true - '@nrwl/react-native@19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.11.1)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0))(vue-tsc@1.8.27(typescript@5.5.4))(webpack@5.95.0(@swc/core@1.5.29(@swc/helpers@0.5.13))(esbuild@0.17.19))': + /@nrwl/react-native@19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(eslint@9.17.0)(nx@19.8.0)(react-dom@18.3.1)(react@18.3.1)(ts-node@10.9.1)(typescript@5.5.4)(verdaccio@5.33.0)(webpack@5.97.1): + resolution: {integrity: sha512-bNqvEQrvB3oEtorZ3k9+skaAv9+BEBiI3EmHQSxVhPzTzVeGzN3LYrJWgqcDp7B73SjWoWvTvQ15yJOrwGpEbw==} dependencies: - '@nx/react-native': 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.11.1)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0))(vue-tsc@1.8.27(typescript@5.5.4))(webpack@5.95.0(@swc/core@1.5.29(@swc/helpers@0.5.13))(esbuild@0.17.19)) + '@nx/react-native': 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(eslint@9.17.0)(nx@19.8.0)(react-dom@18.3.1)(react@18.3.1)(ts-node@10.9.1)(typescript@5.5.4)(verdaccio@5.33.0)(webpack@5.97.1) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -13948,10 +4642,12 @@ snapshots: - verdaccio - vue-tsc - webpack + dev: true - '@nrwl/react@19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.11.1)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0))(vue-tsc@1.8.27(typescript@5.5.4))(webpack@5.95.0(@swc/core@1.5.29(@swc/helpers@0.5.13))(esbuild@0.17.19))': + /@nrwl/react@19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(eslint@9.17.0)(nx@19.8.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.4)(verdaccio@5.33.0)(webpack@5.97.1): + resolution: {integrity: sha512-kpRUDzGc/2wq84WDYAnrulyzoCDMshxQTn7XnXtpgIuXQy9gIHU8W2n+pbBQTqagBsZvML0zZQevrKlcZX1PBQ==} dependencies: - '@nx/react': 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.11.1)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0))(vue-tsc@1.8.27(typescript@5.5.4))(webpack@5.95.0(@swc/core@1.5.29(@swc/helpers@0.5.13))(esbuild@0.17.19)) + '@nx/react': 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(eslint@9.17.0)(nx@19.8.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.4)(verdaccio@5.33.0)(webpack@5.97.1) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -13971,10 +4667,12 @@ snapshots: - verdaccio - vue-tsc - webpack + dev: true - '@nrwl/rollup@19.8.0(@babel/core@7.25.2)(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/babel__core@7.20.5)(@types/node@18.16.9)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0))': + /@nrwl/rollup@19.8.0(@babel/core@7.26.0)(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(nx@19.8.0)(ts-node@10.9.1)(typescript@5.5.4)(verdaccio@5.33.0): + resolution: {integrity: sha512-xChcUsiWmMyrthyqQUgyLxyDP2lBe0oHXi6t78KEokKfSSFuzWmoYZjlG5EeZ3XhG18wRD7/q60cFcQTNBQ+6w==} dependencies: - '@nx/rollup': 19.8.0(@babel/core@7.25.2)(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/babel__core@7.20.5)(@types/node@18.16.9)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0)) + '@nx/rollup': 19.8.0(@babel/core@7.26.0)(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(nx@19.8.0)(ts-node@10.9.1)(typescript@5.5.4)(verdaccio@5.33.0) transitivePeerDependencies: - '@babel/core' - '@babel/traverse' @@ -13989,10 +4687,12 @@ snapshots: - ts-node - typescript - verdaccio + dev: true - '@nrwl/storybook@19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.11.1)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0))': + /@nrwl/storybook@19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(eslint@9.17.0)(nx@19.8.0)(typescript@5.5.4)(verdaccio@5.33.0): + resolution: {integrity: sha512-aMI9sMAGVVN+ILnsQFWgx/HkDRu7ImuSu75abL8viHfwhmpjwBBiHJK2K9XgjrIfnc0PdlAKjNEGjWxnprq/Xw==} dependencies: - '@nx/storybook': 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.11.1)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0)) + '@nx/storybook': 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(eslint@9.17.0)(nx@19.8.0)(typescript@5.5.4)(verdaccio@5.33.0) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -14007,19 +4707,24 @@ snapshots: - supports-color - typescript - verdaccio + dev: true - '@nrwl/tao@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))': + /@nrwl/tao@19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29): + resolution: {integrity: sha512-tybyYdhHNfyBRb8SOc/SasT1iwjYkp/QibS8L3ayTvpvvzJpNr8BpuTznQWIkaIjilflmcdHl+rMiQDqwABqpg==} + hasBin: true dependencies: - nx: 19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)) - tslib: 2.7.0 + nx: 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29) + tslib: 2.8.1 transitivePeerDependencies: - '@swc-node/register' - '@swc/core' - debug + dev: true - '@nrwl/vite@19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0))(vite@5.4.8(@types/node@18.16.9)(terser@5.33.0))(vitest@1.6.0)': + /@nrwl/vite@19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(nx@19.8.0)(typescript@5.5.4)(verdaccio@5.33.0)(vite@5.4.11)(vitest@1.6.0): + resolution: {integrity: sha512-Nux7PN5HYFnSbVj0lVIhgMRkfJ7AYRBr8lXDsJBFboxUtmnPGpG5aV6o/9Fu2XD/eiLBsHCmMcusqkD0+jCvMA==} dependencies: - '@nx/vite': 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0))(vite@5.4.8(@types/node@18.16.9)(terser@5.33.0))(vitest@1.6.0) + '@nx/vite': 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(nx@19.8.0)(typescript@5.5.4)(verdaccio@5.33.0)(vite@5.4.11)(vitest@1.6.0) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -14033,10 +4738,12 @@ snapshots: - verdaccio - vite - vitest + dev: true - '@nrwl/web@19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0))': + /@nrwl/web@19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(nx@19.8.0)(typescript@5.5.4)(verdaccio@5.33.0): + resolution: {integrity: sha512-rYADRAx2x88iiQdqRBbFN1m9pjBwBhT7v9XCKnZRjt/vRbjszBA73WlYpiZ41FqLwpJ9BgKITDYgQ9L0V4DpGw==} dependencies: - '@nx/web': 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0)) + '@nx/web': 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(nx@19.8.0)(typescript@5.5.4)(verdaccio@5.33.0) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -14048,24 +4755,33 @@ snapshots: - supports-color - typescript - verdaccio + dev: true - '@nrwl/workspace@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))': + /@nrwl/workspace@19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29): + resolution: {integrity: sha512-HSN0GML7RaVUSRD3lOc07atCjs4Vzs3Jgs9/7+zFtldKsmsY4GzYIWpJ4G6IDl9u3YJwTKtRmuj5BVI7G+ZGmw==} dependencies: - '@nx/workspace': 19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)) + '@nx/workspace': 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29) transitivePeerDependencies: - '@swc-node/register' - '@swc/core' - debug + dev: true - '@nx/cypress@19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.11.1)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0))': + /@nx/cypress@19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(eslint@9.17.0)(nx@19.8.0)(typescript@5.5.4)(verdaccio@5.33.0): + resolution: {integrity: sha512-BeV/EqWTgzVwE0GyusrLzjRwiAmQ5GOSPWIXaxOWQIni4HUAIANLHPqv4JIXBzQlL9kFt+KF+3QqSIwDDOvonQ==} + peerDependencies: + cypress: '>= 3 < 14' + peerDependenciesMeta: + cypress: + optional: true dependencies: - '@nrwl/cypress': 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.11.1)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0)) - '@nx/devkit': 19.8.0(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))) - '@nx/eslint': 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.11.1)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(verdaccio@5.32.2(typanion@3.14.0)) - '@nx/js': 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0)) + '@nrwl/cypress': 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(eslint@9.17.0)(nx@19.8.0)(typescript@5.5.4)(verdaccio@5.33.0) + '@nx/devkit': 19.8.0(nx@19.8.0) + '@nx/eslint': 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(eslint@9.17.0)(nx@19.8.0)(verdaccio@5.33.0) + '@nx/js': 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(nx@19.8.0)(typescript@5.5.4)(verdaccio@5.33.0) '@phenomnomnominal/tsquery': 5.0.1(typescript@5.5.4) detect-port: 1.6.1 - tslib: 2.7.0 + tslib: 2.8.1 transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -14079,37 +4795,48 @@ snapshots: - supports-color - typescript - verdaccio + dev: true - '@nx/devkit@19.8.0(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))': + /@nx/devkit@19.8.0(nx@19.8.0): + resolution: {integrity: sha512-nPaKHF0m2KONlt8GXjN9EhFo+NOvJnFcK6ujKFFLAyZ4TACY4F1FCjSHFTjYI82j+WukzuyjSmY9wzxYughWIQ==} + peerDependencies: + nx: '>= 17 <= 20' dependencies: - '@nrwl/devkit': 19.8.0(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))) + '@nrwl/devkit': 19.8.0(nx@19.8.0) ejs: 3.1.10 enquirer: 2.3.6 ignore: 5.3.2 minimatch: 9.0.3 - nx: 19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)) + nx: 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29) semver: 7.6.3 tmp: 0.2.3 - tslib: 2.7.0 + tslib: 2.8.1 yargs-parser: 21.1.1 + dev: true - '@nx/eslint-plugin@19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(@typescript-eslint/parser@8.7.0(eslint@9.11.1)(typescript@5.5.4))(eslint-config-prettier@9.1.0(eslint@9.11.1))(eslint@9.11.1)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0))': + /@nx/eslint-plugin@19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(@typescript-eslint/parser@8.18.1)(eslint-config-prettier@9.1.0)(eslint@9.17.0)(nx@19.8.0)(typescript@5.5.4)(verdaccio@5.33.0): + resolution: {integrity: sha512-hu+6gz2halk2Qv6W/ALiGwFumGdhRnzdd9SBiW8YsGurdWxWWYMqO+/qnyeoyRptonAxL6kcTPeB4RHnPYnfdQ==} + peerDependencies: + '@typescript-eslint/parser': ^6.13.2 || ^7.0.0 || ^8.0.0 + eslint-config-prettier: ^9.0.0 + peerDependenciesMeta: + eslint-config-prettier: + optional: true dependencies: - '@eslint/compat': 1.1.1 - '@nrwl/eslint-plugin-nx': 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(@typescript-eslint/parser@8.7.0(eslint@9.11.1)(typescript@5.5.4))(eslint-config-prettier@9.1.0(eslint@9.11.1))(eslint@9.11.1)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0)) - '@nx/devkit': 19.8.0(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))) - '@nx/js': 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0)) - '@typescript-eslint/parser': 8.7.0(eslint@9.11.1)(typescript@5.5.4) - '@typescript-eslint/type-utils': 8.7.0(eslint@9.11.1)(typescript@5.5.4) - '@typescript-eslint/utils': 8.7.0(eslint@9.11.1)(typescript@5.5.4) + '@eslint/compat': 1.2.4(eslint@9.17.0) + '@nrwl/eslint-plugin-nx': 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(@typescript-eslint/parser@8.18.1)(eslint-config-prettier@9.1.0)(eslint@9.17.0)(nx@19.8.0)(typescript@5.5.4)(verdaccio@5.33.0) + '@nx/devkit': 19.8.0(nx@19.8.0) + '@nx/js': 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(nx@19.8.0)(typescript@5.5.4)(verdaccio@5.33.0) + '@typescript-eslint/parser': 8.18.1(eslint@9.17.0)(typescript@5.5.4) + '@typescript-eslint/type-utils': 8.18.1(eslint@9.17.0)(typescript@5.5.4) + '@typescript-eslint/utils': 8.18.1(eslint@9.17.0)(typescript@5.5.4) chalk: 4.1.2 confusing-browser-globals: 1.0.11 - globals: 15.9.0 + eslint-config-prettier: 9.1.0(eslint@9.17.0) + globals: 15.14.0 jsonc-eslint-parser: 2.4.0 semver: 7.6.3 - tslib: 2.7.0 - optionalDependencies: - eslint-config-prettier: 9.1.0(eslint@9.11.1) + tslib: 2.8.1 transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -14122,18 +4849,24 @@ snapshots: - supports-color - typescript - verdaccio + dev: true - '@nx/eslint@19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.11.1)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(verdaccio@5.32.2(typanion@3.14.0))': + /@nx/eslint@19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(eslint@9.17.0)(nx@19.8.0)(verdaccio@5.33.0): + resolution: {integrity: sha512-a1xmLeMMPruxjHAHj7zb+qB2tTJ9knfDCKpmvrxsa3dYdNd/W0ECMV1CG2gNfxK1ukH7fUa1AvV9ph6f8/3CNg==} + peerDependencies: + '@zkochan/js-yaml': 0.0.7 + eslint: ^8.0.0 || ^9.0.0 + peerDependenciesMeta: + '@zkochan/js-yaml': + optional: true dependencies: - '@nx/devkit': 19.8.0(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))) - '@nx/js': 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(typescript@5.4.5)(verdaccio@5.32.2(typanion@3.14.0)) - '@nx/linter': 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.11.1)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(verdaccio@5.32.2(typanion@3.14.0)) - eslint: 9.11.1 + '@nx/devkit': 19.8.0(nx@19.8.0) + '@nx/js': 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(nx@19.8.0)(typescript@5.4.5)(verdaccio@5.33.0) + '@nx/linter': 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(eslint@9.17.0)(nx@19.8.0)(verdaccio@5.33.0) + eslint: 9.17.0 semver: 7.6.3 - tslib: 2.7.0 + tslib: 2.8.1 typescript: 5.4.5 - optionalDependencies: - '@zkochan/js-yaml': 0.0.7 transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -14144,24 +4877,26 @@ snapshots: - nx - supports-color - verdaccio + dev: true - '@nx/jest@19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0))': + /@nx/jest@19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(nx@19.8.0)(ts-node@10.9.1)(typescript@5.5.4)(verdaccio@5.33.0): + resolution: {integrity: sha512-CB8HlfCD+eovfi163I1hWjRcaM2uTpxaI0IwmfE9ddWRxyhw4VfsH0QYg9I6HUjJz0ZVl6qOd5a+98rnfJewwg==} dependencies: '@jest/reporters': 29.7.0 '@jest/test-result': 29.7.0 - '@nrwl/jest': 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0)) - '@nx/devkit': 19.8.0(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))) - '@nx/js': 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0)) + '@nrwl/jest': 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(nx@19.8.0)(ts-node@10.9.1)(typescript@5.5.4)(verdaccio@5.33.0) + '@nx/devkit': 19.8.0(nx@19.8.0) + '@nx/js': 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(nx@19.8.0)(typescript@5.5.4)(verdaccio@5.33.0) '@phenomnomnominal/tsquery': 5.0.1(typescript@5.5.4) chalk: 4.1.2 identity-obj-proxy: 3.0.0 - jest-config: 29.7.0(@types/node@18.16.9)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4)) + jest-config: 29.7.0(@types/node@18.16.9)(ts-node@10.9.1) jest-resolve: 29.7.0 jest-util: 29.7.0 minimatch: 9.0.3 resolve.exports: 1.1.0 semver: 7.6.3 - tslib: 2.7.0 + tslib: 2.8.1 yargs-parser: 21.1.1 transitivePeerDependencies: - '@babel/traverse' @@ -14177,22 +4912,29 @@ snapshots: - ts-node - typescript - verdaccio + dev: true - '@nx/js@19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(typescript@5.4.5)(verdaccio@5.32.2(typanion@3.14.0))': - dependencies: - '@babel/core': 7.25.2 - '@babel/plugin-proposal-decorators': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-class-properties': 7.25.4(@babel/core@7.25.2) - '@babel/plugin-transform-runtime': 7.25.4(@babel/core@7.25.2) - '@babel/preset-env': 7.25.4(@babel/core@7.25.2) - '@babel/preset-typescript': 7.24.7(@babel/core@7.25.2) - '@babel/runtime': 7.25.7 - '@nrwl/js': 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(typescript@5.4.5)(verdaccio@5.32.2(typanion@3.14.0)) - '@nx/devkit': 19.8.0(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))) - '@nx/workspace': 19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)) - babel-plugin-const-enum: 1.2.0(@babel/core@7.25.2) + /@nx/js@19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(nx@19.8.0)(typescript@5.4.5)(verdaccio@5.33.0): + resolution: {integrity: sha512-gexu1nYN3Hl3+yNuowgfd3sW5uooMKx9Dg6FPWWn/27+eJlTny5A2nQ3YR85yKRiJbNEP23am4le788pyVq2MQ==} + peerDependencies: + verdaccio: ^5.0.4 + peerDependenciesMeta: + verdaccio: + optional: true + dependencies: + '@babel/core': 7.26.0 + '@babel/plugin-proposal-decorators': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-runtime': 7.25.9(@babel/core@7.26.0) + '@babel/preset-env': 7.26.0(@babel/core@7.26.0) + '@babel/preset-typescript': 7.26.0(@babel/core@7.26.0) + '@babel/runtime': 7.26.0 + '@nrwl/js': 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(nx@19.8.0)(typescript@5.4.5)(verdaccio@5.33.0) + '@nx/devkit': 19.8.0(nx@19.8.0) + '@nx/workspace': 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29) + babel-plugin-const-enum: 1.2.0(@babel/core@7.26.0) babel-plugin-macros: 2.8.0 - babel-plugin-transform-typescript-metadata: 0.3.2(@babel/core@7.25.2)(@babel/traverse@7.25.7) + babel-plugin-transform-typescript-metadata: 0.3.2(@babel/core@7.26.0) chalk: 4.1.2 columnify: 1.6.0 detect-port: 1.6.1 @@ -14206,11 +4948,10 @@ snapshots: ora: 5.3.0 semver: 7.6.3 source-map-support: 0.5.19 - ts-node: 10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.4.5) + ts-node: 10.9.1(@swc/core@1.5.29)(@types/node@18.16.9)(typescript@5.4.5) tsconfig-paths: 4.2.0 - tslib: 2.7.0 - optionalDependencies: - verdaccio: 5.32.2(typanion@3.14.0) + tslib: 2.8.1 + verdaccio: 5.33.0(typanion@3.14.0) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -14221,22 +4962,29 @@ snapshots: - nx - supports-color - typescript + dev: true - '@nx/js@19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0))': - dependencies: - '@babel/core': 7.25.2 - '@babel/plugin-proposal-decorators': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-class-properties': 7.25.4(@babel/core@7.25.2) - '@babel/plugin-transform-runtime': 7.25.4(@babel/core@7.25.2) - '@babel/preset-env': 7.25.4(@babel/core@7.25.2) - '@babel/preset-typescript': 7.24.7(@babel/core@7.25.2) - '@babel/runtime': 7.25.7 - '@nrwl/js': 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0)) - '@nx/devkit': 19.8.0(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))) - '@nx/workspace': 19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)) - babel-plugin-const-enum: 1.2.0(@babel/core@7.25.2) + /@nx/js@19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(nx@19.8.0)(typescript@5.5.4)(verdaccio@5.33.0): + resolution: {integrity: sha512-gexu1nYN3Hl3+yNuowgfd3sW5uooMKx9Dg6FPWWn/27+eJlTny5A2nQ3YR85yKRiJbNEP23am4le788pyVq2MQ==} + peerDependencies: + verdaccio: ^5.0.4 + peerDependenciesMeta: + verdaccio: + optional: true + dependencies: + '@babel/core': 7.26.0 + '@babel/plugin-proposal-decorators': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-runtime': 7.25.9(@babel/core@7.26.0) + '@babel/preset-env': 7.26.0(@babel/core@7.26.0) + '@babel/preset-typescript': 7.26.0(@babel/core@7.26.0) + '@babel/runtime': 7.26.0 + '@nrwl/js': 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(nx@19.8.0)(typescript@5.5.4)(verdaccio@5.33.0) + '@nx/devkit': 19.8.0(nx@19.8.0) + '@nx/workspace': 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29) + babel-plugin-const-enum: 1.2.0(@babel/core@7.26.0) babel-plugin-macros: 2.8.0 - babel-plugin-transform-typescript-metadata: 0.3.2(@babel/core@7.25.2)(@babel/traverse@7.25.7) + babel-plugin-transform-typescript-metadata: 0.3.2(@babel/core@7.26.0) chalk: 4.1.2 columnify: 1.6.0 detect-port: 1.6.1 @@ -14250,11 +4998,10 @@ snapshots: ora: 5.3.0 semver: 7.6.3 source-map-support: 0.5.19 - ts-node: 10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4) + ts-node: 10.9.1(@swc/core@1.5.29)(@types/node@18.16.9)(typescript@5.5.4) tsconfig-paths: 4.2.0 - tslib: 2.7.0 - optionalDependencies: - verdaccio: 5.32.2(typanion@3.14.0) + tslib: 2.8.1 + verdaccio: 5.33.0(typanion@3.14.0) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -14265,10 +5012,12 @@ snapshots: - nx - supports-color - typescript + dev: true - '@nx/linter@19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.11.1)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(verdaccio@5.32.2(typanion@3.14.0))': + /@nx/linter@19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(eslint@9.17.0)(nx@19.8.0)(verdaccio@5.33.0): + resolution: {integrity: sha512-v7jftcKnQLwz+ohlRR4EdbBXVumAFLzusNjnnpxYaCP7Vy4RK4qNZuLn4xANURhRgv/KlJBa+6TL9TttHpvT7g==} dependencies: - '@nx/eslint': 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.11.1)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(verdaccio@5.32.2(typanion@3.14.0)) + '@nx/eslint': 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(eslint@9.17.0)(nx@19.8.0)(verdaccio@5.33.0) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -14281,49 +5030,115 @@ snapshots: - nx - supports-color - verdaccio + dev: true - '@nx/nx-darwin-arm64@19.8.0': + /@nx/nx-darwin-arm64@19.8.0: + resolution: {integrity: sha512-JWtBb6ndCdGE+RBIwKN85BZnX41lFGsFxnsmot71GeAj/g7Cb0PM2qcmxawoy8yLPTBGZhb+eHER3z3nDIqRog==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true optional: true - '@nx/nx-darwin-x64@19.8.0': + /@nx/nx-darwin-x64@19.8.0: + resolution: {integrity: sha512-NcNaqbbStBkyahLaoKFtW6nEdjCjYT5ZOmGjc6UpAx1Y3pkk/FcIOYJRCBxwuOsRRsEAyeVcHPdYrouZmV+6Yw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true optional: true - '@nx/nx-freebsd-x64@19.8.0': + /@nx/nx-freebsd-x64@19.8.0: + resolution: {integrity: sha512-QXHRnMW5LrpYvtmdFRL2CRgX9CWDccrs2xhQNNzcgsLgL87Wte5kjDoJJN4GQjtrmjD3Q93w67CE9lhqnpXBvQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true optional: true - '@nx/nx-linux-arm-gnueabihf@19.8.0': + /@nx/nx-linux-arm-gnueabihf@19.8.0: + resolution: {integrity: sha512-VjZOLMxz0gT+0AdDygxQS0Vvi3AcEzO3y9o9WdGKKaDVUDycrFn72X+ZbvFoio1dF7S1s2TbmOlR09Bu1yTgGg==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true optional: true - '@nx/nx-linux-arm64-gnu@19.8.0': + /@nx/nx-linux-arm64-gnu@19.8.0: + resolution: {integrity: sha512-sCSrXkSmEfDUDGLESXB3eHXECAIYz9nosFZpCggyUP1vgF/QcV40fHnV38nrFbKaVHuoaxy43RgnD+I3o6sDSw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true optional: true - '@nx/nx-linux-arm64-musl@19.8.0': + /@nx/nx-linux-arm64-musl@19.8.0: + resolution: {integrity: sha512-F3xEe7NGjsVKZTVlvUiUOTmCzxteRsQH2SSsYXyAfgJ42P3eZPc9HgeLx6RByjC/NBCwc7XEECMP1FjQgQXHVw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [musl] + requiresBuild: true + dev: true optional: true - '@nx/nx-linux-x64-gnu@19.8.0': + /@nx/nx-linux-x64-gnu@19.8.0: + resolution: {integrity: sha512-4uYuE+LvxOFXvi9z9ueJSVrME5D383SHNCjs6jYwc9KovCsmL5oPVXRieoE4/hYI4lrjly+CrAnPZU1P7ocBiw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true optional: true - '@nx/nx-linux-x64-musl@19.8.0': + /@nx/nx-linux-x64-musl@19.8.0: + resolution: {integrity: sha512-9UDEGjOvNt+m+kMBCAB7CGisSwv05Xvaq8K3NJ+xM5GPG74EkQel24mSoIJfm/6zmDkdZCiRzNN9VRjOjzOz6Q==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [musl] + requiresBuild: true + dev: true optional: true - '@nx/nx-win32-arm64-msvc@19.8.0': + /@nx/nx-win32-arm64-msvc@19.8.0: + resolution: {integrity: sha512-JVzm0KjyLZY5ponBukZ/b35wttW0b3LB0nqaiiHY7WKwSzo+m0UGEYHD/Yk6rKA0RRZN2wQVeIzLeWfYcZYrhA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true optional: true - '@nx/nx-win32-x64-msvc@19.8.0': + /@nx/nx-win32-x64-msvc@19.8.0: + resolution: {integrity: sha512-IRLhMZIInvp9okLsjnj76zaz8iaMovtLr6MHIFOOPIMsZYRhqQTArF5Os/NqEezeYYxvX6YZ5hKYe0xQO7A5LA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true optional: true - '@nx/react-native@19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.11.1)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0))(vue-tsc@1.8.27(typescript@5.5.4))(webpack@5.95.0(@swc/core@1.5.29(@swc/helpers@0.5.13))(esbuild@0.17.19))': + /@nx/react-native@19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(eslint@9.17.0)(nx@19.8.0)(react-dom@18.3.1)(react@18.3.1)(ts-node@10.9.1)(typescript@5.5.4)(verdaccio@5.33.0)(webpack@5.97.1): + resolution: {integrity: sha512-kXKIvwoAjS03lYBQ5GjE4gCRFa19IdCHIBjmepcAsaH0mGu3gUHkDtswMA46bkLQk7/V5nsf09M7T9pCaO7/BA==} dependencies: - '@nrwl/react-native': 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.11.1)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0))(vue-tsc@1.8.27(typescript@5.5.4))(webpack@5.95.0(@swc/core@1.5.29(@swc/helpers@0.5.13))(esbuild@0.17.19)) - '@nx/devkit': 19.8.0(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))) - '@nx/eslint': 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.11.1)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(verdaccio@5.32.2(typanion@3.14.0)) - '@nx/jest': 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0)) - '@nx/js': 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0)) - '@nx/react': 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.11.1)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0))(vue-tsc@1.8.27(typescript@5.5.4))(webpack@5.95.0(@swc/core@1.5.29(@swc/helpers@0.5.13))(esbuild@0.17.19)) - '@nx/workspace': 19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)) + '@nrwl/react-native': 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(eslint@9.17.0)(nx@19.8.0)(react-dom@18.3.1)(react@18.3.1)(ts-node@10.9.1)(typescript@5.5.4)(verdaccio@5.33.0)(webpack@5.97.1) + '@nx/devkit': 19.8.0(nx@19.8.0) + '@nx/eslint': 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(eslint@9.17.0)(nx@19.8.0)(verdaccio@5.33.0) + '@nx/jest': 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(nx@19.8.0)(ts-node@10.9.1)(typescript@5.5.4)(verdaccio@5.33.0) + '@nx/js': 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(nx@19.8.0)(typescript@5.5.4)(verdaccio@5.33.0) + '@nx/react': 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(eslint@9.17.0)(nx@19.8.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.4)(verdaccio@5.33.0)(webpack@5.97.1) + '@nx/workspace': 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29) ajv: 8.17.1 chalk: 4.1.2 - enhanced-resolve: 5.17.1 + enhanced-resolve: 5.18.0 fs-extra: 11.2.0 glob: 7.1.4 ignore: 5.3.2 @@ -14331,7 +5146,7 @@ snapshots: metro-resolver: 0.80.12 node-fetch: 2.7.0 tsconfig-paths: 4.2.0 - tslib: 2.7.0 + tslib: 2.8.1 transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -14355,23 +5170,25 @@ snapshots: - verdaccio - vue-tsc - webpack + dev: true - '@nx/react@19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.11.1)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0))(vue-tsc@1.8.27(typescript@5.5.4))(webpack@5.95.0(@swc/core@1.5.29(@swc/helpers@0.5.13))(esbuild@0.17.19))': + /@nx/react@19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(eslint@9.17.0)(nx@19.8.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.4)(verdaccio@5.33.0)(webpack@5.97.1): + resolution: {integrity: sha512-YK+UE56aw4ddRESI2O5PtMQiWPzeyJo5YLvVlrayKHatmO0be8aWgBRL0TNsxCTD9FfDcbviGxA13JdCXJ777g==} dependencies: - '@module-federation/enhanced': 0.6.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)(vue-tsc@1.8.27(typescript@5.5.4))(webpack@5.95.0(@swc/core@1.5.29(@swc/helpers@0.5.13))(esbuild@0.17.19)) - '@nrwl/react': 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.11.1)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0))(vue-tsc@1.8.27(typescript@5.5.4))(webpack@5.95.0(@swc/core@1.5.29(@swc/helpers@0.5.13))(esbuild@0.17.19)) - '@nx/devkit': 19.8.0(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))) - '@nx/eslint': 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.11.1)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(verdaccio@5.32.2(typanion@3.14.0)) - '@nx/js': 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0)) - '@nx/web': 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0)) + '@module-federation/enhanced': 0.6.16(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.4)(webpack@5.97.1) + '@nrwl/react': 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(eslint@9.17.0)(nx@19.8.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.5.4)(verdaccio@5.33.0)(webpack@5.97.1) + '@nx/devkit': 19.8.0(nx@19.8.0) + '@nx/eslint': 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(eslint@9.17.0)(nx@19.8.0)(verdaccio@5.33.0) + '@nx/js': 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(nx@19.8.0)(typescript@5.5.4)(verdaccio@5.33.0) + '@nx/web': 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(nx@19.8.0)(typescript@5.5.4)(verdaccio@5.33.0) '@phenomnomnominal/tsquery': 5.0.1(typescript@5.5.4) '@svgr/webpack': 8.1.0(typescript@5.5.4) chalk: 4.1.2 - express: 4.21.0 - file-loader: 6.2.0(webpack@5.95.0(@swc/core@1.5.29(@swc/helpers@0.5.13))(esbuild@0.17.19)) - http-proxy-middleware: 3.0.2 + express: 4.21.2 + file-loader: 6.2.0(webpack@5.97.1) + http-proxy-middleware: 3.0.3 minimatch: 9.0.3 - tslib: 2.7.0 + tslib: 2.8.1 transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -14391,27 +5208,29 @@ snapshots: - verdaccio - vue-tsc - webpack + dev: true - '@nx/rollup@19.8.0(@babel/core@7.25.2)(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/babel__core@7.20.5)(@types/node@18.16.9)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0))': - dependencies: - '@nrwl/rollup': 19.8.0(@babel/core@7.25.2)(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/babel__core@7.20.5)(@types/node@18.16.9)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0)) - '@nx/devkit': 19.8.0(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))) - '@nx/js': 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0)) - '@rollup/plugin-babel': 6.0.4(@babel/core@7.25.2)(@types/babel__core@7.20.5)(rollup@4.22.4) - '@rollup/plugin-commonjs': 25.0.8(rollup@4.22.4) - '@rollup/plugin-image': 3.0.3(rollup@4.22.4) - '@rollup/plugin-json': 6.1.0(rollup@4.22.4) - '@rollup/plugin-node-resolve': 15.3.0(rollup@4.22.4) - autoprefixer: 10.4.20(postcss@8.4.47) + /@nx/rollup@19.8.0(@babel/core@7.26.0)(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(nx@19.8.0)(ts-node@10.9.1)(typescript@5.5.4)(verdaccio@5.33.0): + resolution: {integrity: sha512-UHEVlZp7TsHXyt5sdLhHfn6Dh5ufoVAfz5h651Dx+f6no+lZwvZe54IPq7HzPL8aJ/gh8OrSEsQ+8MDP2s+JWw==} + dependencies: + '@nrwl/rollup': 19.8.0(@babel/core@7.26.0)(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(nx@19.8.0)(ts-node@10.9.1)(typescript@5.5.4)(verdaccio@5.33.0) + '@nx/devkit': 19.8.0(nx@19.8.0) + '@nx/js': 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(nx@19.8.0)(typescript@5.5.4)(verdaccio@5.33.0) + '@rollup/plugin-babel': 6.0.4(@babel/core@7.26.0)(rollup@4.29.1) + '@rollup/plugin-commonjs': 25.0.8(rollup@4.29.1) + '@rollup/plugin-image': 3.0.3(rollup@4.29.1) + '@rollup/plugin-json': 6.1.0(rollup@4.29.1) + '@rollup/plugin-node-resolve': 15.3.1(rollup@4.29.1) + autoprefixer: 10.4.20(postcss@8.4.49) babel-plugin-transform-async-to-promises: 0.8.18 chalk: 4.1.2 minimatch: 9.0.3 - postcss: 8.4.47 - rollup: 4.22.4 + postcss: 8.4.49 + rollup: 4.29.1 rollup-plugin-copy: 3.5.0 - rollup-plugin-postcss: 4.0.2(postcss@8.4.47)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4)) - rollup-plugin-typescript2: 0.36.0(rollup@4.22.4)(typescript@5.5.4) - tslib: 2.7.0 + rollup-plugin-postcss: 4.0.2(postcss@8.4.49)(ts-node@10.9.1) + rollup-plugin-typescript2: 0.36.0(rollup@4.29.1)(typescript@5.5.4) + tslib: 2.8.1 transitivePeerDependencies: - '@babel/core' - '@babel/traverse' @@ -14426,17 +5245,19 @@ snapshots: - ts-node - typescript - verdaccio + dev: true - '@nx/storybook@19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.11.1)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0))': + /@nx/storybook@19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(eslint@9.17.0)(nx@19.8.0)(typescript@5.5.4)(verdaccio@5.33.0): + resolution: {integrity: sha512-Sobofeub7ZRkMY2hSi3aC6/aEn742Xy9UWZ1y0DRMW8VIfCVhPYGHLLLflMfGymctrm+r4IsUjYxd7l6q6Kl6g==} dependencies: - '@nrwl/storybook': 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.11.1)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0)) - '@nx/cypress': 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.11.1)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0)) - '@nx/devkit': 19.8.0(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))) - '@nx/eslint': 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@9.11.1)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(verdaccio@5.32.2(typanion@3.14.0)) - '@nx/js': 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0)) + '@nrwl/storybook': 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(eslint@9.17.0)(nx@19.8.0)(typescript@5.5.4)(verdaccio@5.33.0) + '@nx/cypress': 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(eslint@9.17.0)(nx@19.8.0)(typescript@5.5.4)(verdaccio@5.33.0) + '@nx/devkit': 19.8.0(nx@19.8.0) + '@nx/eslint': 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(eslint@9.17.0)(nx@19.8.0)(verdaccio@5.33.0) + '@nx/js': 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(nx@19.8.0)(typescript@5.5.4)(verdaccio@5.33.0) '@phenomnomnominal/tsquery': 5.0.1(typescript@5.5.4) semver: 7.6.3 - tslib: 2.7.0 + tslib: 2.8.1 transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -14451,19 +5272,24 @@ snapshots: - supports-color - typescript - verdaccio + dev: true - '@nx/vite@19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0))(vite@5.4.8(@types/node@18.16.9)(terser@5.33.0))(vitest@1.6.0)': + /@nx/vite@19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(nx@19.8.0)(typescript@5.5.4)(verdaccio@5.33.0)(vite@5.4.11)(vitest@1.6.0): + resolution: {integrity: sha512-Krok+zalc6as1w+V+D/mmY+vh5qKdkvz4omMds2k3d+RQNxIb7Mh78ueGVQr5zRtR9CKSSPvDMtUklnjDlp1SQ==} + peerDependencies: + vite: ^5.0.0 + vitest: ^1.3.1 || ^2.0.0 dependencies: - '@nrwl/vite': 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0))(vite@5.4.8(@types/node@18.16.9)(terser@5.33.0))(vitest@1.6.0) - '@nx/devkit': 19.8.0(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))) - '@nx/js': 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0)) + '@nrwl/vite': 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(nx@19.8.0)(typescript@5.5.4)(verdaccio@5.33.0)(vite@5.4.11)(vitest@1.6.0) + '@nx/devkit': 19.8.0(nx@19.8.0) + '@nx/js': 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(nx@19.8.0)(typescript@5.5.4)(verdaccio@5.33.0) '@phenomnomnominal/tsquery': 5.0.1(typescript@5.5.4) - '@swc/helpers': 0.5.13 + '@swc/helpers': 0.5.15 enquirer: 2.3.6 minimatch: 9.0.3 tsconfig-paths: 4.2.0 - vite: 5.4.8(@types/node@18.16.9)(terser@5.33.0) - vitest: 1.6.0(@types/node@18.16.9)(@vitest/ui@1.6.0)(jsdom@22.1.0)(terser@5.33.0) + vite: 5.4.11(@types/node@18.16.9) + vitest: 1.6.0(@types/node@18.16.9)(@vitest/ui@1.6.0)(jsdom@22.1.0) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -14475,16 +5301,18 @@ snapshots: - supports-color - typescript - verdaccio + dev: true - '@nx/web@19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0))': + /@nx/web@19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(nx@19.8.0)(typescript@5.5.4)(verdaccio@5.33.0): + resolution: {integrity: sha512-eP+NsnVlUAil35B6MuE5AGLPrruhlKNbkjYgExEwMEMVqFykvXY7drsxy2nhkmHJoO0IAG7emIQj+ZuFdUdKMw==} dependencies: - '@nrwl/web': 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0)) - '@nx/devkit': 19.8.0(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))) - '@nx/js': 19.8.0(@babel/traverse@7.25.7)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)))(typescript@5.5.4)(verdaccio@5.32.2(typanion@3.14.0)) + '@nrwl/web': 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(nx@19.8.0)(typescript@5.5.4)(verdaccio@5.33.0) + '@nx/devkit': 19.8.0(nx@19.8.0) + '@nx/js': 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29)(@types/node@18.16.9)(nx@19.8.0)(typescript@5.5.4)(verdaccio@5.33.0) chalk: 4.1.2 detect-port: 1.6.1 http-server: 14.1.1 - tslib: 2.7.0 + tslib: 2.8.1 transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -14496,32 +5324,46 @@ snapshots: - supports-color - typescript - verdaccio + dev: true - '@nx/workspace@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))': + /@nx/workspace@19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29): + resolution: {integrity: sha512-8/NHRuJAqurNaFIUuSZdV8qNqiFykXlHjPp6E4raNmB8seIKYJVeYZgw9D7d5piOuLHA3o0JWSKJQ3nBElfCBw==} dependencies: - '@nrwl/workspace': 19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)) - '@nx/devkit': 19.8.0(nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13))) + '@nrwl/workspace': 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29) + '@nx/devkit': 19.8.0(nx@19.8.0) chalk: 4.1.2 enquirer: 2.3.6 - nx: 19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)) - tslib: 2.7.0 + nx: 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29) + tslib: 2.8.1 yargs-parser: 21.1.1 transitivePeerDependencies: - '@swc-node/register' - '@swc/core' - debug + dev: true - '@phenomnomnominal/tsquery@5.0.1(typescript@5.5.4)': + /@phenomnomnominal/tsquery@5.0.1(typescript@5.5.4): + resolution: {integrity: sha512-3nVv+e2FQwsW8Aw6qTU6f+1rfcJ3hrcnvH/mu9i8YhxO+9sqbOfpL8m6PbET5+xKOlz/VSbp0RoYWYCtIsnmuA==} + peerDependencies: + typescript: ^3 || ^4 || ^5 dependencies: esquery: 1.6.0 typescript: 5.5.4 + dev: true - '@pkgjs/parseargs@0.11.0': + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + dev: true optional: true - '@polka/url@1.0.0-next.28': {} + /@polka/url@1.0.0-next.28: + resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==} + dev: true - '@react-native-community/cli-clean@13.6.6': + /@react-native-community/cli-clean@13.6.6: + resolution: {integrity: sha512-cBwJTwl0NyeA4nyMxbhkWZhxtILYkbU3TW3k8AXLg+iGphe0zikYMGB3T+haTvTc6alTyEFwPbimk9bGIqkjAQ==} dependencies: '@react-native-community/cli-tools': 13.6.6 chalk: 4.1.2 @@ -14530,7 +5372,8 @@ snapshots: transitivePeerDependencies: - encoding - '@react-native-community/cli-config@13.6.6': + /@react-native-community/cli-config@13.6.6: + resolution: {integrity: sha512-mbG425zCKr8JZhv/j11382arezwS/70juWMsn8j2lmrGTrP1cUdW0MF15CCIFtJsqyK3Qs+FTmqttRpq81QfSg==} dependencies: '@react-native-community/cli-tools': 13.6.6 chalk: 4.1.2 @@ -14541,13 +5384,15 @@ snapshots: transitivePeerDependencies: - encoding - '@react-native-community/cli-debugger-ui@13.6.6': + /@react-native-community/cli-debugger-ui@13.6.6: + resolution: {integrity: sha512-Vv9u6eS4vKSDAvdhA0OiQHoA7y39fiPIgJ6biT32tN4avHDtxlc6TWZGiqv7g98SBvDWvoVAmdPLcRf3kU+c8g==} dependencies: serve-static: 1.16.2 transitivePeerDependencies: - supports-color - '@react-native-community/cli-doctor@13.6.6': + /@react-native-community/cli-doctor@13.6.6: + resolution: {integrity: sha512-TWZb5g6EmQe2Ua2TEWNmyaEayvlWH4GmdD9ZC+p8EpKFpB1NpDGMK6sXbpb42TDvwZg5s4TDRplK0PBEA/SVDg==} dependencies: '@react-native-community/cli-config': 13.6.6 '@react-native-community/cli-platform-android': 13.6.6 @@ -14565,11 +5410,12 @@ snapshots: semver: 7.6.3 strip-ansi: 5.2.0 wcwidth: 1.0.1 - yaml: 2.5.1 + yaml: 2.6.1 transitivePeerDependencies: - encoding - '@react-native-community/cli-hermes@13.6.6': + /@react-native-community/cli-hermes@13.6.6: + resolution: {integrity: sha512-La5Ie+NGaRl3klei6WxKoOxmCUSGGxpOk6vU5pEGf0/O7ky+Ay0io+zXYUZqlNMi/cGpO7ZUijakBYOB/uyuFg==} dependencies: '@react-native-community/cli-platform-android': 13.6.6 '@react-native-community/cli-tools': 13.6.6 @@ -14578,39 +5424,56 @@ snapshots: transitivePeerDependencies: - encoding - '@react-native-community/cli-platform-android@13.6.6': + /@react-native-community/cli-platform-android@13.6.6: + resolution: {integrity: sha512-/tMwkBeNxh84syiSwNlYtmUz/Ppc+HfKtdopL/5RB+fd3SV1/5/NPNjMlyLNgFKnpxvKCInQ7dnl6jGHJjeHjg==} dependencies: '@react-native-community/cli-tools': 13.6.6 chalk: 4.1.2 execa: 5.1.1 fast-glob: 3.3.2 - fast-xml-parser: 4.5.0 + fast-xml-parser: 4.5.1 + logkitty: 0.7.1 + transitivePeerDependencies: + - encoding + + /@react-native-community/cli-platform-android@13.6.9: + resolution: {integrity: sha512-9KsYGdr08QhdvT3Ht7e8phQB3gDX9Fs427NJe0xnoBh+PDPTI2BD5ks5ttsH8CzEw8/P6H8tJCHq6hf2nxd9cw==} + dependencies: + '@react-native-community/cli-tools': 13.6.9 + chalk: 4.1.2 + execa: 5.1.1 + fast-glob: 3.3.2 + fast-xml-parser: 4.5.1 logkitty: 0.7.1 transitivePeerDependencies: - encoding + dev: true - '@react-native-community/cli-platform-apple@13.6.6': + /@react-native-community/cli-platform-apple@13.6.6: + resolution: {integrity: sha512-bOmSSwoqNNT3AmCRZXEMYKz1Jf1l2F86Nhs7qBcXdY/sGiJ+Flng564LOqvdAlVLTbkgz47KjNKCS2pP4Jg0Mg==} dependencies: '@react-native-community/cli-tools': 13.6.6 chalk: 4.1.2 execa: 5.1.1 fast-glob: 3.3.2 - fast-xml-parser: 4.5.0 + fast-xml-parser: 4.5.1 ora: 5.4.1 transitivePeerDependencies: - encoding - '@react-native-community/cli-platform-ios@13.6.6': + /@react-native-community/cli-platform-ios@13.6.6: + resolution: {integrity: sha512-vjDnRwhlSN5ryqKTas6/DPkxuouuyFBAqAROH4FR1cspTbn6v78JTZKDmtQy9JMMo7N5vZj1kASU5vbFep9IOQ==} dependencies: '@react-native-community/cli-platform-apple': 13.6.6 transitivePeerDependencies: - encoding - '@react-native-community/cli-server-api@13.6.6': + /@react-native-community/cli-server-api@13.6.6: + resolution: {integrity: sha512-ZtCXxoFlM7oDv3iZ3wsrT3SamhtUJuIkX2WePLPlN5bcbq7zimbPm2lHyicNJtpcGQ5ymsgpUWPCNZsWQhXBqQ==} dependencies: '@react-native-community/cli-debugger-ui': 13.6.6 '@react-native-community/cli-tools': 13.6.6 - compression: 1.7.4 + compression: 1.7.5 connect: 3.7.0 errorhandler: 1.5.1 nocache: 3.0.4 @@ -14623,7 +5486,25 @@ snapshots: - supports-color - utf-8-validate - '@react-native-community/cli-tools@13.6.6': + /@react-native-community/cli-tools@13.6.6: + resolution: {integrity: sha512-ptOnn4AJczY5njvbdK91k4hcYazDnGtEPrqIwEI+k/CTBHNdb27Rsm2OZ7ye6f7otLBqF8gj/hK6QzJs8CEMgw==} + dependencies: + appdirsjs: 1.2.7 + chalk: 4.1.2 + execa: 5.1.1 + find-up: 5.0.0 + mime: 2.6.0 + node-fetch: 2.7.0 + open: 6.4.0 + ora: 5.4.1 + semver: 7.6.3 + shell-quote: 1.8.2 + sudo-prompt: 9.2.1 + transitivePeerDependencies: + - encoding + + /@react-native-community/cli-tools@13.6.9: + resolution: {integrity: sha512-OXaSjoN0mZVw3nrAwcY1PC0uMfyTd9fz7Cy06dh+EJc+h0wikABsVRzV8cIOPrVV+PPEEXE0DBrH20T2puZzgQ==} dependencies: appdirsjs: 1.2.7 chalk: 4.1.2 @@ -14634,16 +5515,21 @@ snapshots: open: 6.4.0 ora: 5.4.1 semver: 7.6.3 - shell-quote: 1.8.1 + shell-quote: 1.8.2 sudo-prompt: 9.2.1 transitivePeerDependencies: - encoding + dev: true - '@react-native-community/cli-types@13.6.6': + /@react-native-community/cli-types@13.6.6: + resolution: {integrity: sha512-733iaYzlmvNK7XYbnWlMjdE+2k0hlTBJW071af/xb6Bs+hbJqBP9c03FZuYH2hFFwDDntwj05bkri/P7VgSxug==} dependencies: joi: 17.13.3 - '@react-native-community/cli@13.6.6': + /@react-native-community/cli@13.6.6: + resolution: {integrity: sha512-IqclB7VQ84ye8Fcs89HOpOscY4284VZg2pojHNl8H0Lzd4DadXJWQoxC7zWm8v2f8eyeX2kdhxp2ETD5tceIgA==} + engines: {node: '>=18'} + hasBin: true dependencies: '@react-native-community/cli-clean': 13.6.6 '@react-native-community/cli-config': 13.6.6 @@ -14668,153 +5554,180 @@ snapshots: - supports-color - utf-8-validate - '@react-native/assets-registry@0.74.83': {} + /@react-native/assets-registry@0.74.83: + resolution: {integrity: sha512-2vkLMVnp+YTZYTNSDIBZojSsjz8sl5PscP3j4GcV6idD8V978SZfwFlk8K0ti0BzRs11mzL0Pj17km597S/eTQ==} + engines: {node: '>=18'} - '@react-native/babel-plugin-codegen@0.74.83(@babel/preset-env@7.25.8(@babel/core@7.25.2))': + /@react-native/babel-plugin-codegen@0.74.83(@babel/preset-env@7.26.0): + resolution: {integrity: sha512-+S0st3t4Ro00bi9gjT1jnK8qTFOU+CwmziA7U9odKyWrCoRJrgmrvogq/Dr1YXlpFxexiGIupGut1VHxr+fxJA==} + engines: {node: '>=18'} dependencies: - '@react-native/codegen': 0.74.83(@babel/preset-env@7.25.8(@babel/core@7.25.2)) + '@react-native/codegen': 0.74.83(@babel/preset-env@7.26.0) transitivePeerDependencies: - '@babel/preset-env' - supports-color - '@react-native/babel-plugin-codegen@0.74.88(@babel/preset-env@7.25.8(@babel/core@7.25.2))': + /@react-native/babel-plugin-codegen@0.74.88(@babel/preset-env@7.26.0): + resolution: {integrity: sha512-hul4gPU09q7K0amhzhZnG3EVxeCXjP2l1x/zdgtliRRB8Nq7Za8YkM7dy84X+Vv4UC9G1nzxIbibsKeLsY1N4A==} + engines: {node: '>=18'} dependencies: - '@react-native/codegen': 0.74.88(@babel/preset-env@7.25.8(@babel/core@7.25.2)) + '@react-native/codegen': 0.74.88(@babel/preset-env@7.26.0) transitivePeerDependencies: - '@babel/preset-env' - supports-color + dev: true - '@react-native/babel-preset@0.74.83(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))': - dependencies: - '@babel/core': 7.25.2 - '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.25.2) - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.25.2) - '@babel/plugin-proposal-export-default-from': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-proposal-logical-assignment-operators': 7.20.7(@babel/core@7.25.2) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.25.2) - '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.25.2) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.25.2) - '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.25.2) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.25.2) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-export-default-from': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-transform-arrow-functions': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-async-to-generator': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-block-scoping': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-classes': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-computed-properties': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-destructuring': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-flow-strip-types': 7.25.2(@babel/core@7.25.2) - '@babel/plugin-transform-function-name': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-literals': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-modules-commonjs': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-named-capturing-groups-regex': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-parameters': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-private-methods': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-private-property-in-object': 7.25.8(@babel/core@7.25.2) - '@babel/plugin-transform-react-display-name': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.25.2) - '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-runtime': 7.25.4(@babel/core@7.25.2) - '@babel/plugin-transform-shorthand-properties': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-spread': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-sticky-regex': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-regex': 7.25.7(@babel/core@7.25.2) - '@babel/template': 7.25.7 - '@react-native/babel-plugin-codegen': 0.74.83(@babel/preset-env@7.25.8(@babel/core@7.25.2)) - babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.25.2) + /@react-native/babel-preset@0.74.83(@babel/core@7.26.0)(@babel/preset-env@7.26.0): + resolution: {integrity: sha512-KJuu3XyVh3qgyUer+rEqh9a/JoUxsDOzkJNfRpDyXiAyjDRoVch60X/Xa/NcEQ93iCVHAWs0yQ+XGNGIBCYE6g==} + engines: {node: '>=18'} + peerDependencies: + '@babel/core': '*' + dependencies: + '@babel/core': 7.26.0 + '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.26.0) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.26.0) + '@babel/plugin-proposal-export-default-from': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-proposal-logical-assignment-operators': 7.20.7(@babel/core@7.26.0) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.26.0) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.26.0) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.26.0) + '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.26.0) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.26.0) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-export-default-from': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-syntax-flow': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-flow-strip-types': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.0) + '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-private-property-in-object': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-react-display-name': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-runtime': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-typescript': 7.26.3(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.0) + '@babel/template': 7.25.9 + '@react-native/babel-plugin-codegen': 0.74.83(@babel/preset-env@7.26.0) + babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.26.0) react-refresh: 0.14.2 transitivePeerDependencies: - '@babel/preset-env' - supports-color - '@react-native/babel-preset@0.74.88(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))': - dependencies: - '@babel/core': 7.25.2 - '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.25.2) - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.25.2) - '@babel/plugin-proposal-export-default-from': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-proposal-logical-assignment-operators': 7.20.7(@babel/core@7.25.2) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.25.2) - '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.25.2) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.25.2) - '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.25.2) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.25.2) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-export-default-from': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-transform-arrow-functions': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-async-to-generator': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-block-scoping': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-classes': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-computed-properties': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-destructuring': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-flow-strip-types': 7.25.2(@babel/core@7.25.2) - '@babel/plugin-transform-function-name': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-literals': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-modules-commonjs': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-named-capturing-groups-regex': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-parameters': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-private-methods': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-private-property-in-object': 7.25.8(@babel/core@7.25.2) - '@babel/plugin-transform-react-display-name': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.25.2) - '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-runtime': 7.25.4(@babel/core@7.25.2) - '@babel/plugin-transform-shorthand-properties': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-spread': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-sticky-regex': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-regex': 7.25.7(@babel/core@7.25.2) - '@babel/template': 7.25.7 - '@react-native/babel-plugin-codegen': 0.74.88(@babel/preset-env@7.25.8(@babel/core@7.25.2)) - babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.25.2) + /@react-native/babel-preset@0.74.88(@babel/core@7.26.0)(@babel/preset-env@7.26.0): + resolution: {integrity: sha512-SQODiFGlyblFTvdvePUDrQ+qlSzhcOm7It/yW2CVKxw5zRUf50+Cj3DBkRFhQDqF3ri2EnWsLnJ3oNE7hqDUxg==} + engines: {node: '>=18'} + peerDependencies: + '@babel/core': '*' + dependencies: + '@babel/core': 7.26.0 + '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.26.0) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.26.0) + '@babel/plugin-proposal-export-default-from': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-proposal-logical-assignment-operators': 7.20.7(@babel/core@7.26.0) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.26.0) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.26.0) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.26.0) + '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.26.0) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.26.0) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-export-default-from': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-syntax-flow': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-flow-strip-types': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.0) + '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-private-property-in-object': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-react-display-name': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-runtime': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-typescript': 7.26.3(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.0) + '@babel/template': 7.25.9 + '@react-native/babel-plugin-codegen': 0.74.88(@babel/preset-env@7.26.0) + babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.26.0) react-refresh: 0.14.2 transitivePeerDependencies: - '@babel/preset-env' - supports-color + dev: true - '@react-native/codegen@0.74.83(@babel/preset-env@7.25.8(@babel/core@7.25.2))': + /@react-native/codegen@0.74.83(@babel/preset-env@7.26.0): + resolution: {integrity: sha512-GgvgHS3Aa2J8/mp1uC/zU8HuTh8ZT5jz7a4mVMWPw7+rGyv70Ba8uOVBq6UH2Q08o617IATYc+0HfyzAfm4n0w==} + engines: {node: '>=18'} + peerDependencies: + '@babel/preset-env': ^7.1.6 dependencies: - '@babel/parser': 7.25.8 - '@babel/preset-env': 7.25.8(@babel/core@7.25.2) + '@babel/parser': 7.26.3 + '@babel/preset-env': 7.26.0(@babel/core@7.26.0) glob: 7.2.3 hermes-parser: 0.19.1 invariant: 2.2.4 - jscodeshift: 0.14.0(@babel/preset-env@7.25.8(@babel/core@7.25.2)) + jscodeshift: 0.14.0(@babel/preset-env@7.26.0) mkdirp: 0.5.6 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color - '@react-native/codegen@0.74.88(@babel/preset-env@7.25.8(@babel/core@7.25.2))': + /@react-native/codegen@0.74.88(@babel/preset-env@7.26.0): + resolution: {integrity: sha512-HMk/LCrSdUof9DZFaB2bK0soKyAF6XiCg2LG7WFjEkUDXayeiB4p7IsHISJWY4bYg7cMPZ0fiZMRaBP2vXJxgg==} + engines: {node: '>=18'} + peerDependencies: + '@babel/preset-env': ^7.1.6 dependencies: - '@babel/parser': 7.25.8 - '@babel/preset-env': 7.25.8(@babel/core@7.25.2) + '@babel/parser': 7.26.3 + '@babel/preset-env': 7.26.0(@babel/core@7.26.0) glob: 7.2.3 hermes-parser: 0.19.1 invariant: 2.2.4 - jscodeshift: 0.14.0(@babel/preset-env@7.25.8(@babel/core@7.25.2)) + jscodeshift: 0.14.0(@babel/preset-env@7.26.0) mkdirp: 0.5.6 nullthrows: 1.1.1 yargs: 17.7.2 transitivePeerDependencies: - supports-color + dev: true - '@react-native/community-cli-plugin@0.74.83(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))': + /@react-native/community-cli-plugin@0.74.83(@babel/core@7.26.0)(@babel/preset-env@7.26.0): + resolution: {integrity: sha512-7GAFjFOg1mFSj8bnFNQS4u8u7+QtrEeflUIDVZGEfBZQ3wMNI5ycBzbBGycsZYiq00Xvoc6eKFC7kvIaqeJpUQ==} + engines: {node: '>=18'} dependencies: '@react-native-community/cli-server-api': 13.6.6 '@react-native-community/cli-tools': 13.6.6 '@react-native/dev-middleware': 0.74.83 - '@react-native/metro-babel-transformer': 0.74.83(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2)) + '@react-native/metro-babel-transformer': 0.74.83(@babel/core@7.26.0)(@babel/preset-env@7.26.0) chalk: 4.1.2 execa: 5.1.1 metro: 0.80.12 @@ -14831,9 +5744,13 @@ snapshots: - supports-color - utf-8-validate - '@react-native/debugger-frontend@0.74.83': {} + /@react-native/debugger-frontend@0.74.83: + resolution: {integrity: sha512-RGQlVUegBRxAUF9c1ss1ssaHZh6CO+7awgtI9sDeU0PzDZY/40ImoPD5m0o0SI6nXoVzbPtcMGzU+VO590pRfA==} + engines: {node: '>=18'} - '@react-native/dev-middleware@0.74.83': + /@react-native/dev-middleware@0.74.83: + resolution: {integrity: sha512-UH8iriqnf7N4Hpi20D7M2FdvSANwTVStwFCSD7VMU9agJX88Yk0D1T6Meh2RMhUu4kY2bv8sTkNRm7LmxvZqgA==} + engines: {node: '>=18'} dependencies: '@isaacs/ttlcache': 1.4.1 '@react-native/debugger-frontend': 0.74.83 @@ -14854,66 +5771,103 @@ snapshots: - supports-color - utf-8-validate - '@react-native/gradle-plugin@0.74.83': {} + /@react-native/gradle-plugin@0.74.83: + resolution: {integrity: sha512-Pw2BWVyOHoBuJVKxGVYF6/GSZRf6+v1Ygc+ULGz5t20N8qzRWPa2fRZWqoxsN7TkNLPsECYY8gooOl7okOcPAQ==} + engines: {node: '>=18'} - '@react-native/js-polyfills@0.74.83': {} + /@react-native/js-polyfills@0.74.83: + resolution: {integrity: sha512-/t74n8r6wFhw4JEoOj3bN71N1NDLqaawB75uKAsSjeCwIR9AfCxlzZG0etsXtOexkY9KMeZIQ7YwRPqUdNXuqw==} + engines: {node: '>=18'} - '@react-native/js-polyfills@0.74.88': {} + /@react-native/js-polyfills@0.74.88: + resolution: {integrity: sha512-6KljxfNKAz2b2uXqxagKbytb3MvUujAmfvuubKOoCLAiLbs8CYKW0OV1FqVLYUEXXw5GEDhXcVzQxxFuDlMafQ==} + engines: {node: '>=18'} + dev: true - '@react-native/metro-babel-transformer@0.74.83(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))': + /@react-native/metro-babel-transformer@0.74.83(@babel/core@7.26.0)(@babel/preset-env@7.26.0): + resolution: {integrity: sha512-hGdx5N8diu8y+GW/ED39vTZa9Jx1di2ZZ0aapbhH4egN1agIAusj5jXTccfNBwwWF93aJ5oVbRzfteZgjbutKg==} + engines: {node: '>=18'} + peerDependencies: + '@babel/core': '*' dependencies: - '@babel/core': 7.25.2 - '@react-native/babel-preset': 0.74.83(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2)) + '@babel/core': 7.26.0 + '@react-native/babel-preset': 0.74.83(@babel/core@7.26.0)(@babel/preset-env@7.26.0) hermes-parser: 0.19.1 nullthrows: 1.1.1 transitivePeerDependencies: - '@babel/preset-env' - supports-color - '@react-native/metro-babel-transformer@0.74.88(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))': + /@react-native/metro-babel-transformer@0.74.88(@babel/core@7.26.0)(@babel/preset-env@7.26.0): + resolution: {integrity: sha512-r7Er162iLpQce3ODQzNVS+PnjglJoHZ4l0NeaVMB4w45DIgKM4hC2vI6a/fzyFm9C6N+QY4P2i2RSkwjXVuBlQ==} + engines: {node: '>=18'} + peerDependencies: + '@babel/core': '*' dependencies: - '@babel/core': 7.25.2 - '@react-native/babel-preset': 0.74.88(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2)) + '@babel/core': 7.26.0 + '@react-native/babel-preset': 0.74.88(@babel/core@7.26.0)(@babel/preset-env@7.26.0) hermes-parser: 0.19.1 nullthrows: 1.1.1 transitivePeerDependencies: - '@babel/preset-env' - supports-color + dev: true - '@react-native/metro-config@0.74.88(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))': + /@react-native/metro-config@0.74.88(@babel/core@7.26.0)(@babel/preset-env@7.26.0): + resolution: {integrity: sha512-GYBVb+987onsGcycad7jW7P4lBpeuj2TIhuOcKJcvRSID59w3OPb54hi8P04Cn9fMWGunWDxb8IvpkAbffzlCw==} + engines: {node: '>=18'} dependencies: '@react-native/js-polyfills': 0.74.88 - '@react-native/metro-babel-transformer': 0.74.88(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2)) + '@react-native/metro-babel-transformer': 0.74.88(@babel/core@7.26.0)(@babel/preset-env@7.26.0) metro-config: 0.80.12 metro-runtime: 0.80.12 transitivePeerDependencies: - '@babel/core' - '@babel/preset-env' - - bufferutil - supports-color - - utf-8-validate + dev: true - '@react-native/normalize-colors@0.74.83': {} + /@react-native/normalize-colors@0.74.83: + resolution: {integrity: sha512-jhCY95gRDE44qYawWVvhTjTplW1g+JtKTKM3f8xYT1dJtJ8QWv+gqEtKcfmOHfDkSDaMKG0AGBaDTSK8GXLH8Q==} - '@react-native/virtualized-lists@0.74.83(@types/react@18.3.1)(react-native@0.74.1(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(@types/react@18.3.1)(react@18.2.0))(react@18.2.0)': + /@react-native/virtualized-lists@0.74.83(@types/react@18.3.1)(react-native@0.74.1)(react@18.2.0): + resolution: {integrity: sha512-rmaLeE34rj7py4FxTod7iMTC7BAsm+HrGA8WxYmEJeyTV7WSaxAkosKoYBz8038mOiwnG9VwA/7FrB6bEQvn1A==} + engines: {node: '>=18'} + peerDependencies: + '@types/react': ^18.2.6 + react: '*' + react-native: '*' + peerDependenciesMeta: + '@types/react': + optional: true dependencies: + '@types/react': 18.3.1 invariant: 2.2.4 nullthrows: 1.1.1 react: 18.2.0 - react-native: 0.74.1(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(@types/react@18.3.1)(react@18.2.0) - optionalDependencies: - '@types/react': 18.3.1 + react-native: 0.74.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0)(@types/react@18.3.1)(react@18.2.0) + dev: false - '@react-native/virtualized-lists@0.74.83(@types/react@18.3.1)(react-native@0.74.1(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(@types/react@18.3.1)(react@18.3.1))(react@18.3.1)': + /@react-native/virtualized-lists@0.74.83(@types/react@18.3.1)(react-native@0.74.1)(react@18.3.1): + resolution: {integrity: sha512-rmaLeE34rj7py4FxTod7iMTC7BAsm+HrGA8WxYmEJeyTV7WSaxAkosKoYBz8038mOiwnG9VwA/7FrB6bEQvn1A==} + engines: {node: '>=18'} + peerDependencies: + '@types/react': ^18.2.6 + react: '*' + react-native: '*' + peerDependenciesMeta: + '@types/react': + optional: true dependencies: + '@types/react': 18.3.1 invariant: 2.2.4 nullthrows: 1.1.1 react: 18.3.1 - react-native: 0.74.1(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(@types/react@18.3.1)(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.1 + react-native: 0.74.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0)(@types/react@18.3.1)(react@18.3.1) - '@rnx-kit/chromium-edge-launcher@1.0.0': + /@rnx-kit/chromium-edge-launcher@1.0.0: + resolution: {integrity: sha512-lzD84av1ZQhYUS+jsGqJiCMaJO2dn9u+RTT9n9q6D3SaKVwWqv+7AoRKqBu19bkwyE+iFRl1ymr40QS90jVFYg==} + engines: {node: '>=14.15'} dependencies: '@types/node': 18.16.9 escape-string-regexp: 4.0.0 @@ -14924,29 +5878,51 @@ snapshots: transitivePeerDependencies: - supports-color - '@rollup/plugin-babel@5.3.1(@babel/core@7.25.2)(@types/babel__core@7.20.5)(rollup@1.32.1)': + /@rollup/plugin-babel@5.3.1(@babel/core@7.26.0)(rollup@1.32.1): + resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} + engines: {node: '>= 10.0.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@types/babel__core': ^7.1.9 + rollup: ^1.20.0||^2.0.0 + peerDependenciesMeta: + '@types/babel__core': + optional: true dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-imports': 7.24.7 + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 '@rollup/pluginutils': 3.1.0(rollup@1.32.1) rollup: 1.32.1 - optionalDependencies: - '@types/babel__core': 7.20.5 transitivePeerDependencies: - supports-color + dev: true - '@rollup/plugin-babel@6.0.4(@babel/core@7.25.2)(@types/babel__core@7.20.5)(rollup@4.22.4)': + /@rollup/plugin-babel@6.0.4(@babel/core@7.26.0)(rollup@4.29.1): + resolution: {integrity: sha512-YF7Y52kFdFT/xVSuVdjkV5ZdX/3YtmX0QulG+x0taQOtJdHYzVU61aSSkAgVJ7NOv6qPkIYiJSgSWWN/DM5sGw==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@types/babel__core': ^7.1.9 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + '@types/babel__core': + optional: true + rollup: + optional: true dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-imports': 7.25.7 - '@rollup/pluginutils': 5.1.2(rollup@4.22.4) - optionalDependencies: - '@types/babel__core': 7.20.5 - rollup: 4.22.4 + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@rollup/pluginutils': 5.1.4(rollup@4.29.1) + rollup: 4.29.1 transitivePeerDependencies: - supports-color + dev: true - '@rollup/plugin-commonjs@11.1.0(rollup@1.32.1)': + /@rollup/plugin-commonjs@11.1.0(rollup@1.32.1): + resolution: {integrity: sha512-Ycr12N3ZPN96Fw2STurD21jMqzKwL9QuFhms3SD7KKRK7oaXUsBU9Zt0jL/rOPHiPYisI21/rXGO3jr9BnLHUA==} + engines: {node: '>= 8.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0 dependencies: '@rollup/pluginutils': 3.1.0(rollup@1.32.1) commondir: 1.0.1 @@ -14954,158 +5930,346 @@ snapshots: glob: 7.2.3 is-reference: 1.2.1 magic-string: 0.25.9 - resolve: 1.22.8 + resolve: 1.22.10 rollup: 1.32.1 + dev: true - '@rollup/plugin-commonjs@25.0.8(rollup@4.22.4)': + /@rollup/plugin-commonjs@25.0.8(rollup@4.29.1): + resolution: {integrity: sha512-ZEZWTK5n6Qde0to4vS9Mr5x/0UZoqCxPVR9KRUjU4kA2sO7GEUn1fop0DAwpO6z0Nw/kJON9bDmSxdWxO/TT1A==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.68.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true dependencies: - '@rollup/pluginutils': 5.1.2(rollup@4.22.4) + '@rollup/pluginutils': 5.1.4(rollup@4.29.1) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 - magic-string: 0.30.11 - optionalDependencies: - rollup: 4.22.4 + magic-string: 0.30.17 + rollup: 4.29.1 + dev: true - '@rollup/plugin-image@3.0.3(rollup@4.22.4)': + /@rollup/plugin-image@3.0.3(rollup@4.29.1): + resolution: {integrity: sha512-qXWQwsXpvD4trSb8PeFPFajp8JLpRtqqOeNYRUKnEQNHm7e5UP7fuSRcbjQAJ7wDZBbnJvSdY5ujNBQd9B1iFg==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true dependencies: - '@rollup/pluginutils': 5.1.2(rollup@4.22.4) + '@rollup/pluginutils': 5.1.4(rollup@4.29.1) mini-svg-data-uri: 1.4.4 - optionalDependencies: - rollup: 4.22.4 + rollup: 4.29.1 + dev: true - '@rollup/plugin-json@4.1.0(rollup@1.32.1)': + /@rollup/plugin-json@4.1.0(rollup@1.32.1): + resolution: {integrity: sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==} + peerDependencies: + rollup: ^1.20.0 || ^2.0.0 dependencies: '@rollup/pluginutils': 3.1.0(rollup@1.32.1) rollup: 1.32.1 + dev: true - '@rollup/plugin-json@6.1.0(rollup@4.22.4)': + /@rollup/plugin-json@6.1.0(rollup@4.29.1): + resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true dependencies: - '@rollup/pluginutils': 5.1.2(rollup@4.22.4) - optionalDependencies: - rollup: 4.22.4 + '@rollup/pluginutils': 5.1.4(rollup@4.29.1) + rollup: 4.29.1 + dev: true - '@rollup/plugin-node-resolve@15.3.0(rollup@4.22.4)': + /@rollup/plugin-node-resolve@15.3.1(rollup@4.29.1): + resolution: {integrity: sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.78.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true dependencies: - '@rollup/pluginutils': 5.1.2(rollup@4.22.4) + '@rollup/pluginutils': 5.1.4(rollup@4.29.1) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 - resolve: 1.22.8 - optionalDependencies: - rollup: 4.22.4 + resolve: 1.22.10 + rollup: 4.29.1 + dev: true - '@rollup/plugin-node-resolve@9.0.0(rollup@1.32.1)': + /@rollup/plugin-node-resolve@9.0.0(rollup@1.32.1): + resolution: {integrity: sha512-gPz+utFHLRrd41WMP13Jq5mqqzHL3OXrfj3/MkSyB6UBIcuNt9j60GCbarzMzdf1VHFpOxfQh/ez7wyadLMqkg==} + engines: {node: '>= 10.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0 dependencies: '@rollup/pluginutils': 3.1.0(rollup@1.32.1) '@types/resolve': 1.17.1 builtin-modules: 3.3.0 deepmerge: 4.3.1 is-module: 1.0.0 - resolve: 1.22.8 + resolve: 1.22.10 rollup: 1.32.1 + dev: true - '@rollup/plugin-replace@2.4.2(rollup@1.32.1)': + /@rollup/plugin-replace@2.4.2(rollup@1.32.1): + resolution: {integrity: sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==} + peerDependencies: + rollup: ^1.20.0 || ^2.0.0 dependencies: '@rollup/pluginutils': 3.1.0(rollup@1.32.1) magic-string: 0.25.9 rollup: 1.32.1 + dev: true - '@rollup/pluginutils@3.1.0(rollup@1.32.1)': + /@rollup/pluginutils@3.1.0(rollup@1.32.1): + resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} + engines: {node: '>= 8.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0 dependencies: '@types/estree': 0.0.39 estree-walker: 1.0.1 picomatch: 2.3.1 rollup: 1.32.1 + dev: true - '@rollup/pluginutils@4.2.1': + /@rollup/pluginutils@4.2.1: + resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} + engines: {node: '>= 8.0.0'} dependencies: estree-walker: 2.0.2 picomatch: 2.3.1 + dev: true - '@rollup/pluginutils@5.1.2(rollup@4.22.4)': + /@rollup/pluginutils@5.1.4(rollup@4.29.1): + resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true dependencies: '@types/estree': 1.0.6 estree-walker: 2.0.2 - picomatch: 2.3.1 - optionalDependencies: - rollup: 4.22.4 + picomatch: 4.0.2 + rollup: 4.29.1 + dev: true + + /@rollup/rollup-android-arm-eabi@4.29.1: + resolution: {integrity: sha512-ssKhA8RNltTZLpG6/QNkCSge+7mBQGUqJRisZ2MDQcEGaK93QESEgWK2iOpIDZ7k9zPVkG5AS3ksvD5ZWxmItw==} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-android-arm64@4.29.1: + resolution: {integrity: sha512-CaRfrV0cd+NIIcVVN/jx+hVLN+VRqnuzLRmfmlzpOzB87ajixsN/+9L5xNmkaUUvEbI5BmIKS+XTwXsHEb65Ew==} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-arm64@4.29.1: + resolution: {integrity: sha512-2ORr7T31Y0Mnk6qNuwtyNmy14MunTAMx06VAPI6/Ju52W10zk1i7i5U3vlDRWjhOI5quBcrvhkCHyF76bI7kEw==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true - '@rollup/rollup-android-arm-eabi@4.22.4': + /@rollup/rollup-darwin-x64@4.29.1: + resolution: {integrity: sha512-j/Ej1oanzPjmN0tirRd5K2/nncAhS9W6ICzgxV+9Y5ZsP0hiGhHJXZ2JQ53iSSjj8m6cRY6oB1GMzNn2EUt6Ng==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true optional: true - '@rollup/rollup-android-arm64@4.22.4': + /@rollup/rollup-freebsd-arm64@4.29.1: + resolution: {integrity: sha512-91C//G6Dm/cv724tpt7nTyP+JdN12iqeXGFM1SqnljCmi5yTXriH7B1r8AD9dAZByHpKAumqP1Qy2vVNIdLZqw==} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true optional: true - '@rollup/rollup-darwin-arm64@4.22.4': + /@rollup/rollup-freebsd-x64@4.29.1: + resolution: {integrity: sha512-hEioiEQ9Dec2nIRoeHUP6hr1PSkXzQaCUyqBDQ9I9ik4gCXQZjJMIVzoNLBRGet+hIUb3CISMh9KXuCcWVW/8w==} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true optional: true - '@rollup/rollup-darwin-x64@4.22.4': + /@rollup/rollup-linux-arm-gnueabihf@4.29.1: + resolution: {integrity: sha512-Py5vFd5HWYN9zxBv3WMrLAXY3yYJ6Q/aVERoeUFwiDGiMOWsMs7FokXihSOaT/PMWUty/Pj60XDQndK3eAfE6A==} + cpu: [arm] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.22.4': + /@rollup/rollup-linux-arm-musleabihf@4.29.1: + resolution: {integrity: sha512-RiWpGgbayf7LUcuSNIbahr0ys2YnEERD4gYdISA06wa0i8RALrnzflh9Wxii7zQJEB2/Eh74dX4y/sHKLWp5uQ==} + cpu: [arm] + os: [linux] + libc: [musl] + requiresBuild: true + dev: true optional: true - '@rollup/rollup-linux-arm-musleabihf@4.22.4': + /@rollup/rollup-linux-arm64-gnu@4.29.1: + resolution: {integrity: sha512-Z80O+taYxTQITWMjm/YqNoe9d10OX6kDh8X5/rFCMuPqsKsSyDilvfg+vd3iXIqtfmp+cnfL1UrYirkaF8SBZA==} + cpu: [arm64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true optional: true - '@rollup/rollup-linux-arm64-gnu@4.22.4': + /@rollup/rollup-linux-arm64-musl@4.29.1: + resolution: {integrity: sha512-fOHRtF9gahwJk3QVp01a/GqS4hBEZCV1oKglVVq13kcK3NeVlS4BwIFzOHDbmKzt3i0OuHG4zfRP0YoG5OF/rA==} + cpu: [arm64] + os: [linux] + libc: [musl] + requiresBuild: true + dev: true optional: true - '@rollup/rollup-linux-arm64-musl@4.22.4': + /@rollup/rollup-linux-loongarch64-gnu@4.29.1: + resolution: {integrity: sha512-5a7q3tnlbcg0OodyxcAdrrCxFi0DgXJSoOuidFUzHZ2GixZXQs6Tc3CHmlvqKAmOs5eRde+JJxeIf9DonkmYkw==} + cpu: [loong64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.22.4': + /@rollup/rollup-linux-powerpc64le-gnu@4.29.1: + resolution: {integrity: sha512-9b4Mg5Yfz6mRnlSPIdROcfw1BU22FQxmfjlp/CShWwO3LilKQuMISMTtAu/bxmmrE6A902W2cZJuzx8+gJ8e9w==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true optional: true - '@rollup/rollup-linux-riscv64-gnu@4.22.4': + /@rollup/rollup-linux-riscv64-gnu@4.29.1: + resolution: {integrity: sha512-G5pn0NChlbRM8OJWpJFMX4/i8OEU538uiSv0P6roZcbpe/WfhEO+AT8SHVKfp8qhDQzaz7Q+1/ixMy7hBRidnQ==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true optional: true - '@rollup/rollup-linux-s390x-gnu@4.22.4': + /@rollup/rollup-linux-s390x-gnu@4.29.1: + resolution: {integrity: sha512-WM9lIkNdkhVwiArmLxFXpWndFGuOka4oJOZh8EP3Vb8q5lzdSCBuhjavJsw68Q9AKDGeOOIHYzYm4ZFvmWez5g==} + cpu: [s390x] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true optional: true - '@rollup/rollup-linux-x64-gnu@4.22.4': + /@rollup/rollup-linux-x64-gnu@4.29.1: + resolution: {integrity: sha512-87xYCwb0cPGZFoGiErT1eDcssByaLX4fc0z2nRM6eMtV9njAfEE6OW3UniAoDhX4Iq5xQVpE6qO9aJbCFumKYQ==} + cpu: [x64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true optional: true - '@rollup/rollup-linux-x64-musl@4.22.4': + /@rollup/rollup-linux-x64-musl@4.29.1: + resolution: {integrity: sha512-xufkSNppNOdVRCEC4WKvlR1FBDyqCSCpQeMMgv9ZyXqqtKBfkw1yfGMTUTs9Qsl6WQbJnsGboWCp7pJGkeMhKA==} + cpu: [x64] + os: [linux] + libc: [musl] + requiresBuild: true + dev: true optional: true - '@rollup/rollup-win32-arm64-msvc@4.22.4': + /@rollup/rollup-win32-arm64-msvc@4.29.1: + resolution: {integrity: sha512-F2OiJ42m77lSkizZQLuC+jiZ2cgueWQL5YC9tjo3AgaEw+KJmVxHGSyQfDUoYR9cci0lAywv2Clmckzulcq6ig==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true optional: true - '@rollup/rollup-win32-ia32-msvc@4.22.4': + /@rollup/rollup-win32-ia32-msvc@4.29.1: + resolution: {integrity: sha512-rYRe5S0FcjlOBZQHgbTKNrqxCBUmgDJem/VQTCcTnA2KCabYSWQDrytOzX7avb79cAAweNmMUb/Zw18RNd4mng==} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true optional: true - '@rollup/rollup-win32-x64-msvc@4.22.4': + /@rollup/rollup-win32-x64-msvc@4.29.1: + resolution: {integrity: sha512-+10CMg9vt1MoHj6x1pxyjPSMjHTIlqs8/tBztXvPAx24SKs9jwVnKqHJumlH/IzhaPUaj3T6T6wfZr8okdXaIg==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true optional: true - '@rtsao/scc@1.1.0': {} + /@rtsao/scc@1.1.0: + resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} + dev: true - '@rushstack/node-core-library@4.0.2(@types/node@18.16.9)': + /@rushstack/node-core-library@4.0.2(@types/node@18.16.9): + resolution: {integrity: sha512-hyES82QVpkfQMeBMteQUnrhASL/KHPhd7iJ8euduwNJG4mu2GSOKybf0rOEjOm1Wz7CwJEUm9y0yD7jg2C1bfg==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true dependencies: + '@types/node': 18.16.9 fs-extra: 7.0.1 import-lazy: 4.0.0 jju: 1.4.0 - resolve: 1.22.8 + resolve: 1.22.10 semver: 7.5.4 z-schema: 5.0.5 - optionalDependencies: - '@types/node': 18.16.9 + dev: true - '@rushstack/rig-package@0.5.2': + /@rushstack/rig-package@0.5.2: + resolution: {integrity: sha512-mUDecIJeH3yYGZs2a48k+pbhM6JYwWlgjs2Ca5f2n1G2/kgdgP9D/07oglEGf6mRyXEnazhEENeYTSNDRCwdqA==} dependencies: - resolve: 1.22.8 + resolve: 1.22.10 strip-json-comments: 3.1.1 + dev: true - '@rushstack/terminal@0.10.0(@types/node@18.16.9)': + /@rushstack/terminal@0.10.0(@types/node@18.16.9): + resolution: {integrity: sha512-UbELbXnUdc7EKwfH2sb8ChqNgapUOdqcCIdQP4NGxBpTZV2sQyeekuK3zmfQSa/MN+/7b4kBogl2wq0vpkpYGw==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true dependencies: '@rushstack/node-core-library': 4.0.2(@types/node@18.16.9) - supports-color: 8.1.1 - optionalDependencies: '@types/node': 18.16.9 + supports-color: 8.1.1 + dev: true - '@rushstack/ts-command-line@4.19.1(@types/node@18.16.9)': + /@rushstack/ts-command-line@4.19.1(@types/node@18.16.9): + resolution: {integrity: sha512-J7H768dgcpG60d7skZ5uSSwyCZs/S2HrWP1Ds8d1qYAyaaeJmpmmLr9BVw97RjFzmQPOYnoXcKA4GkqDCkduQg==} dependencies: '@rushstack/terminal': 0.10.0(@types/node@18.16.9) '@types/argparse': 1.0.38 @@ -15113,178 +6277,251 @@ snapshots: string-argv: 0.3.2 transitivePeerDependencies: - '@types/node' + dev: true - '@sideway/address@4.1.5': + /@sideway/address@4.1.5: + resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} dependencies: '@hapi/hoek': 9.3.0 - '@sideway/formula@3.0.1': {} + /@sideway/formula@3.0.1: + resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} + + /@sideway/pinpoint@2.0.0: + resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} - '@sideway/pinpoint@2.0.0': {} + /@sinclair/typebox@0.24.51: + resolution: {integrity: sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==} + dev: true - '@sinclair/typebox@0.24.51': {} + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - '@sinclair/typebox@0.27.8': {} + /@sindresorhus/is@4.6.0: + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} + dev: true - '@sinonjs/commons@1.8.6': + /@sinonjs/commons@1.8.6: + resolution: {integrity: sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==} dependencies: type-detect: 4.0.8 + dev: true - '@sinonjs/commons@3.0.1': + /@sinonjs/commons@3.0.1: + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} dependencies: type-detect: 4.0.8 - '@sinonjs/fake-timers@10.3.0': + /@sinonjs/fake-timers@10.3.0: + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} dependencies: '@sinonjs/commons': 3.0.1 - '@sinonjs/fake-timers@9.1.2': + /@sinonjs/fake-timers@9.1.2: + resolution: {integrity: sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==} dependencies: '@sinonjs/commons': 1.8.6 + dev: true - '@storybook/addon-actions@8.4.7(storybook@8.3.3)': + /@storybook/addon-actions@8.4.7(storybook@8.4.7): + resolution: {integrity: sha512-mjtD5JxcPuW74T6h7nqMxWTvDneFtokg88p6kQ5OnC1M259iAXb//yiSZgu/quunMHPCXSiqn4FNOSgASTSbsA==} + peerDependencies: + storybook: ^8.4.7 dependencies: '@storybook/global': 5.0.0 '@types/uuid': 9.0.8 dequal: 2.0.3 polished: 4.3.1 - storybook: 8.3.3 + storybook: 8.4.7(prettier@2.8.8) uuid: 9.0.1 + dev: false - '@storybook/addon-backgrounds@8.4.7(storybook@8.3.3)': + /@storybook/addon-backgrounds@8.4.7(storybook@8.4.7): + resolution: {integrity: sha512-I4/aErqtFiazcoWyKafOAm3bLpxTj6eQuH/woSbk1Yx+EzN+Dbrgx1Updy8//bsNtKkcrXETITreqHC+a57DHQ==} + peerDependencies: + storybook: ^8.4.7 dependencies: '@storybook/global': 5.0.0 memoizerific: 1.11.3 - storybook: 8.3.3 + storybook: 8.4.7(prettier@2.8.8) ts-dedent: 2.2.0 + dev: false - '@storybook/addon-controls@8.4.7(storybook@8.3.3)': + /@storybook/addon-controls@8.4.7(storybook@8.4.7): + resolution: {integrity: sha512-377uo5IsJgXLnQLJixa47+11V+7Wn9KcDEw+96aGCBCfLbWNH8S08tJHHnSu+jXg9zoqCAC23MetntVp6LetHA==} + peerDependencies: + storybook: ^8.4.7 dependencies: '@storybook/global': 5.0.0 dequal: 2.0.3 - storybook: 8.3.3 + storybook: 8.4.7(prettier@2.8.8) ts-dedent: 2.2.0 + dev: false - '@storybook/addon-docs@8.4.7(@types/react@18.3.1)(storybook@8.3.3)(webpack-sources@3.2.3)': + /@storybook/addon-docs@8.4.7(@types/react@18.3.1)(storybook@8.4.7): + resolution: {integrity: sha512-NwWaiTDT5puCBSUOVuf6ME7Zsbwz7Y79WF5tMZBx/sLQ60vpmJVQsap6NSjvK1Ravhc21EsIXqemAcBjAWu80w==} + peerDependencies: + storybook: ^8.4.7 dependencies: '@mdx-js/react': 3.1.0(@types/react@18.3.1)(react@18.3.1) - '@storybook/blocks': 8.4.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3) - '@storybook/csf-plugin': 8.4.7(storybook@8.3.3)(webpack-sources@3.2.3) - '@storybook/react-dom-shim': 8.4.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3) + '@storybook/blocks': 8.4.7(react-dom@18.3.1)(react@18.3.1)(storybook@8.4.7) + '@storybook/csf-plugin': 8.4.7(storybook@8.4.7) + '@storybook/react-dom-shim': 8.4.7(react-dom@18.3.1)(react@18.3.1)(storybook@8.4.7) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - storybook: 8.3.3 + storybook: 8.4.7(prettier@2.8.8) ts-dedent: 2.2.0 transitivePeerDependencies: - '@types/react' - - webpack-sources - - '@storybook/addon-essentials@8.4.7(@types/react@18.3.1)(storybook@8.3.3)(webpack-sources@3.2.3)': - dependencies: - '@storybook/addon-actions': 8.4.7(storybook@8.3.3) - '@storybook/addon-backgrounds': 8.4.7(storybook@8.3.3) - '@storybook/addon-controls': 8.4.7(storybook@8.3.3) - '@storybook/addon-docs': 8.4.7(@types/react@18.3.1)(storybook@8.3.3)(webpack-sources@3.2.3) - '@storybook/addon-highlight': 8.4.7(storybook@8.3.3) - '@storybook/addon-measure': 8.4.7(storybook@8.3.3) - '@storybook/addon-outline': 8.4.7(storybook@8.3.3) - '@storybook/addon-toolbars': 8.4.7(storybook@8.3.3) - '@storybook/addon-viewport': 8.4.7(storybook@8.3.3) - storybook: 8.3.3 + dev: false + + /@storybook/addon-essentials@8.4.7(@types/react@18.3.1)(storybook@8.4.7): + resolution: {integrity: sha512-+BtZHCBrYtQKILtejKxh0CDRGIgTl9PumfBOKRaihYb4FX1IjSAxoV/oo/IfEjlkF5f87vouShWsRa8EUauFDw==} + peerDependencies: + storybook: ^8.4.7 + dependencies: + '@storybook/addon-actions': 8.4.7(storybook@8.4.7) + '@storybook/addon-backgrounds': 8.4.7(storybook@8.4.7) + '@storybook/addon-controls': 8.4.7(storybook@8.4.7) + '@storybook/addon-docs': 8.4.7(@types/react@18.3.1)(storybook@8.4.7) + '@storybook/addon-highlight': 8.4.7(storybook@8.4.7) + '@storybook/addon-measure': 8.4.7(storybook@8.4.7) + '@storybook/addon-outline': 8.4.7(storybook@8.4.7) + '@storybook/addon-toolbars': 8.4.7(storybook@8.4.7) + '@storybook/addon-viewport': 8.4.7(storybook@8.4.7) + storybook: 8.4.7(prettier@2.8.8) ts-dedent: 2.2.0 transitivePeerDependencies: - '@types/react' - - webpack-sources + dev: false - '@storybook/addon-highlight@8.4.7(storybook@8.3.3)': + /@storybook/addon-highlight@8.4.7(storybook@8.4.7): + resolution: {integrity: sha512-whQIDBd3PfVwcUCrRXvCUHWClXe9mQ7XkTPCdPo4B/tZ6Z9c6zD8JUHT76ddyHivixFLowMnA8PxMU6kCMAiNw==} + peerDependencies: + storybook: ^8.4.7 dependencies: '@storybook/global': 5.0.0 - storybook: 8.3.3 + storybook: 8.4.7(prettier@2.8.8) + dev: false - '@storybook/addon-interactions@8.3.3(storybook@8.3.3)': + /@storybook/addon-interactions@8.4.7(storybook@8.4.7): + resolution: {integrity: sha512-fnufT3ym8ht3HHUIRVXAH47iOJW/QOb0VSM+j269gDuvyDcY03D1civCu1v+eZLGaXPKJ8vtjr0L8zKQ/4P0JQ==} + peerDependencies: + storybook: ^8.4.7 dependencies: '@storybook/global': 5.0.0 - '@storybook/instrumenter': 8.3.3(storybook@8.3.3) - '@storybook/test': 8.3.3(storybook@8.3.3) + '@storybook/instrumenter': 8.4.7(storybook@8.4.7) + '@storybook/test': 8.4.7(storybook@8.4.7) polished: 4.3.1 - storybook: 8.3.3 + storybook: 8.4.7(prettier@2.8.8) ts-dedent: 2.2.0 + dev: true - '@storybook/addon-measure@8.4.7(storybook@8.3.3)': + /@storybook/addon-measure@8.4.7(storybook@8.4.7): + resolution: {integrity: sha512-QfvqYWDSI5F68mKvafEmZic3SMiK7zZM8VA0kTXx55hF/+vx61Mm0HccApUT96xCXIgmwQwDvn9gS4TkX81Dmw==} + peerDependencies: + storybook: ^8.4.7 dependencies: '@storybook/global': 5.0.0 - storybook: 8.3.3 + storybook: 8.4.7(prettier@2.8.8) tiny-invariant: 1.3.3 + dev: false - '@storybook/addon-outline@8.4.7(storybook@8.3.3)': + /@storybook/addon-outline@8.4.7(storybook@8.4.7): + resolution: {integrity: sha512-6LYRqUZxSodmAIl8icr585Oi8pmzbZ90aloZJIpve+dBAzo7ydYrSQxxoQEVltXbKf3VeVcrs64ouAYqjisMYA==} + peerDependencies: + storybook: ^8.4.7 dependencies: '@storybook/global': 5.0.0 - storybook: 8.3.3 + storybook: 8.4.7(prettier@2.8.8) ts-dedent: 2.2.0 + dev: false - '@storybook/addon-toolbars@8.4.7(storybook@8.3.3)': + /@storybook/addon-toolbars@8.4.7(storybook@8.4.7): + resolution: {integrity: sha512-OSfdv5UZs+NdGB+nZmbafGUWimiweJ/56gShlw8Neo/4jOJl1R3rnRqqY7MYx8E4GwoX+i3GF5C3iWFNQqlDcw==} + peerDependencies: + storybook: ^8.4.7 dependencies: - storybook: 8.3.3 + storybook: 8.4.7(prettier@2.8.8) + dev: false - '@storybook/addon-viewport@8.4.7(storybook@8.3.3)': + /@storybook/addon-viewport@8.4.7(storybook@8.4.7): + resolution: {integrity: sha512-hvczh/jjuXXcOogih09a663sRDDSATXwbE866al1DXgbDFraYD/LxX/QDb38W9hdjU9+Qhx8VFIcNWoMQns5HQ==} + peerDependencies: + storybook: ^8.4.7 dependencies: memoizerific: 1.11.3 - storybook: 8.3.3 + storybook: 8.4.7(prettier@2.8.8) + dev: false - '@storybook/blocks@8.4.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3)': + /@storybook/blocks@8.4.7(react-dom@18.3.1)(react@18.3.1)(storybook@8.4.7): + resolution: {integrity: sha512-+QH7+JwXXXIyP3fRCxz/7E2VZepAanXJM7G8nbR3wWsqWgrRp4Wra6MvybxAYCxU7aNfJX5c+RW84SNikFpcIA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.4.7 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true dependencies: - '@storybook/csf': 0.1.11 - '@storybook/icons': 1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - storybook: 8.3.3 - ts-dedent: 2.2.0 - optionalDependencies: + '@storybook/csf': 0.1.12 + '@storybook/icons': 1.3.0(react-dom@18.3.1)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) + storybook: 8.4.7(prettier@2.8.8) + ts-dedent: 2.2.0 + dev: false - '@storybook/builder-vite@8.3.3(storybook@8.3.3)(typescript@5.5.4)(vite@5.4.8(@types/node@18.16.9)(terser@5.33.0))(webpack-sources@3.2.3)': + /@storybook/builder-vite@8.4.7(storybook@8.4.7)(vite@5.4.11): + resolution: {integrity: sha512-LovyXG5VM0w7CovI/k56ZZyWCveQFVDl0m7WwetpmMh2mmFJ+uPQ35BBsgTvTfc8RHi+9Q3F58qP1MQSByXi9g==} + peerDependencies: + storybook: ^8.4.7 + vite: ^4.0.0 || ^5.0.0 || ^6.0.0 dependencies: - '@storybook/csf-plugin': 8.3.3(storybook@8.3.3)(webpack-sources@3.2.3) - '@types/find-cache-dir': 3.2.1 + '@storybook/csf-plugin': 8.4.7(storybook@8.4.7) browser-assert: 1.2.1 - es-module-lexer: 1.5.4 - express: 4.21.0 - find-cache-dir: 3.3.2 - fs-extra: 11.2.0 - magic-string: 0.30.11 - storybook: 8.3.3 + storybook: 8.4.7(prettier@2.8.8) ts-dedent: 2.2.0 - vite: 5.4.8(@types/node@18.16.9)(terser@5.33.0) - optionalDependencies: - typescript: 5.5.4 - transitivePeerDependencies: - - supports-color - - webpack-sources + vite: 5.4.11(@types/node@18.16.9) + dev: true - '@storybook/channels@7.6.20': + /@storybook/channels@7.6.20: + resolution: {integrity: sha512-4hkgPSH6bJclB2OvLnkZOGZW1WptJs09mhQ6j6qLjgBZzL/ZdD6priWSd7iXrmPiN5TzUobkG4P4Dp7FjkiO7A==} dependencies: '@storybook/client-logger': 7.6.20 '@storybook/core-events': 7.6.20 '@storybook/global': 5.0.0 - qs: 6.13.0 + qs: 6.13.1 telejson: 7.2.0 tiny-invariant: 1.3.3 + dev: true - '@storybook/client-logger@7.6.20': + /@storybook/client-logger@7.6.20: + resolution: {integrity: sha512-NwG0VIJQCmKrSaN5GBDFyQgTAHLNishUPLW1NrzqTDNAhfZUoef64rPQlinbopa0H4OXmlB+QxbQIb3ubeXmSQ==} dependencies: '@storybook/global': 5.0.0 + dev: true - '@storybook/components@8.3.3(storybook@8.3.3)': + /@storybook/components@8.4.7(storybook@8.4.7): + resolution: {integrity: sha512-uyJIcoyeMWKAvjrG9tJBUCKxr2WZk+PomgrgrUwejkIfXMO76i6jw9BwLa0NZjYdlthDv30r9FfbYZyeNPmF0g==} + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 dependencies: - storybook: 8.3.3 + storybook: 8.4.7(prettier@2.8.8) + dev: true - '@storybook/core-common@7.6.20': + /@storybook/core-common@7.6.20: + resolution: {integrity: sha512-8H1zPWPjcmeD4HbDm4FDD0WLsfAKGVr566IZ4hG+h3iWVW57II9JW9MLBtiR2LPSd8u7o0kw64lwRGmtCO1qAw==} dependencies: '@storybook/core-events': 7.6.20 '@storybook/node-logger': 7.6.20 '@storybook/types': 7.6.20 '@types/find-cache-dir': 3.2.1 '@types/node': 18.16.9 - '@types/node-fetch': 2.6.11 + '@types/node-fetch': 2.6.12 '@types/pretty-hrtime': 1.0.3 chalk: 4.1.2 esbuild: 0.18.20 @@ -15305,210 +6542,251 @@ snapshots: transitivePeerDependencies: - encoding - supports-color + dev: true - '@storybook/core-events@7.6.20': + /@storybook/core-events@7.6.20: + resolution: {integrity: sha512-tlVDuVbDiNkvPDFAu+0ou3xBBYbx9zUURQz4G9fAq0ScgBOs/bpzcRrFb4mLpemUViBAd47tfZKdH4MAX45KVQ==} dependencies: ts-dedent: 2.2.0 + dev: true - '@storybook/core-server@8.3.3(storybook@8.3.3)': + /@storybook/core-server@8.4.7(storybook@8.4.7): + resolution: {integrity: sha512-RW5R+kqRmcP+7QNTmhcrh46qWYkVpxaRlN8MmkHV52m2H5nbBrvgwc3/sb3wdgm1PEU0K5wxT0cmAMIwtnHC9Q==} + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 dependencies: - storybook: 8.3.3 + storybook: 8.4.7(prettier@2.8.8) + dev: true - '@storybook/core@8.3.3': + /@storybook/core@8.4.7(prettier@2.8.8): + resolution: {integrity: sha512-7Z8Z0A+1YnhrrSXoKKwFFI4gnsLbWzr8fnDCU6+6HlDukFYh8GHRcZ9zKfqmy6U3hw2h8H5DrHsxWfyaYUUOoA==} + peerDependencies: + prettier: ^2 || ^3 + peerDependenciesMeta: + prettier: + optional: true dependencies: - '@storybook/csf': 0.1.11 - '@types/express': 4.17.21 + '@storybook/csf': 0.1.12 better-opn: 3.0.2 browser-assert: 1.2.1 - esbuild: 0.21.5 - esbuild-register: 3.6.0(esbuild@0.21.5) - express: 4.21.0 + esbuild: 0.24.2 + esbuild-register: 3.6.0(esbuild@0.24.2) jsdoc-type-pratt-parser: 4.1.0 + prettier: 2.8.8 process: 0.11.10 recast: 0.23.9 semver: 7.6.3 util: 0.12.5 - ws: 8.17.1 + ws: 8.18.0 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - '@storybook/csf-plugin@8.3.3(storybook@8.3.3)(webpack-sources@3.2.3)': - dependencies: - storybook: 8.3.3 - unplugin: 1.14.1(webpack-sources@3.2.3) - transitivePeerDependencies: - - webpack-sources - - '@storybook/csf-plugin@8.4.7(storybook@8.3.3)(webpack-sources@3.2.3)': + /@storybook/csf-plugin@8.4.7(storybook@8.4.7): + resolution: {integrity: sha512-Fgogplu4HImgC+AYDcdGm1rmL6OR1rVdNX1Be9C/NEXwOCpbbBwi0BxTf/2ZxHRk9fCeaPEcOdP5S8QHfltc1g==} + peerDependencies: + storybook: ^8.4.7 dependencies: - storybook: 8.3.3 - unplugin: 1.14.1(webpack-sources@3.2.3) - transitivePeerDependencies: - - webpack-sources + storybook: 8.4.7(prettier@2.8.8) + unplugin: 1.16.0 - '@storybook/csf-tools@7.6.20': + /@storybook/csf-tools@7.6.20: + resolution: {integrity: sha512-rwcwzCsAYh/m/WYcxBiEtLpIW5OH1ingxNdF/rK9mtGWhJxXRDV8acPkFrF8rtFWIVKoOCXu5USJYmc3f2gdYQ==} dependencies: - '@babel/generator': 7.25.6 - '@babel/parser': 7.25.6 - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 - '@storybook/csf': 0.1.11 + '@babel/generator': 7.26.3 + '@babel/parser': 7.26.3 + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.3 + '@storybook/csf': 0.1.12 '@storybook/types': 7.6.20 fs-extra: 11.2.0 recast: 0.23.9 ts-dedent: 2.2.0 transitivePeerDependencies: - supports-color + dev: true - '@storybook/csf@0.1.11': + /@storybook/csf@0.1.12: + resolution: {integrity: sha512-9/exVhabisyIVL0VxTCxo01Tdm8wefIXKXfltAPTSr8cbLn5JAxGQ6QV3mjdecLGEOucfoVhAKtJfVHxEK1iqw==} dependencies: type-fest: 2.19.0 - '@storybook/expect@28.1.3-5': + /@storybook/expect@28.1.3-5: + resolution: {integrity: sha512-lS1oJnY1qTAxnH87C765NdfvGhksA6hBcbUVI5CHiSbNsEtr456wtg/z+dT9XlPriq1D5t2SgfNL9dBAoIGyIA==} + deprecated: In Storybook 8, this package functionality has been integrated to a new package called @storybook/test, which uses Vitest APIs for an improved experience. When upgrading to Storybook 8 with 'npx storybook@latest upgrade', you will get prompted and will get an automigration for the new package. Please migrate when you can. dependencies: '@types/jest': 28.1.3 + dev: true - '@storybook/global@5.0.0': {} + /@storybook/global@5.0.0: + resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} - '@storybook/icons@1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + /@storybook/icons@1.3.0(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-Nz/UzeYQdUZUhacrPyfkiiysSjydyjgg/p0P9HxB4p/WaJUUjMAcaoaLgy3EXx61zZJ3iD36WPuDkZs5QYrA0A==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta dependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) + dev: false - '@storybook/instrumenter@8.3.3(storybook@8.3.3)': + /@storybook/instrumenter@8.4.7(storybook@8.4.7): + resolution: {integrity: sha512-k6NSD3jaRCCHAFtqXZ7tw8jAzD/yTEWXGya+REgZqq5RCkmJ+9S4Ytp/6OhQMPtPFX23gAuJJzTQVLcCr+gjRg==} + peerDependencies: + storybook: ^8.4.7 dependencies: '@storybook/global': 5.0.0 - '@vitest/utils': 2.1.1 - storybook: 8.3.3 - util: 0.12.5 + '@vitest/utils': 2.1.8 + storybook: 8.4.7(prettier@2.8.8) + dev: true - '@storybook/jest@0.2.3': + /@storybook/jest@0.2.3: + resolution: {integrity: sha512-ov5izrmbAFObzKeh9AOC5MlmFxAcf0o5i6YFGae9sDx6DGh6alXsRM+chIbucVkUwVHVlSzdfbLDEFGY/ShaYw==} + deprecated: In Storybook 8, this package functionality has been integrated to a new package called @storybook/test, which uses Vitest APIs for an improved experience. When upgrading to Storybook 8 with 'npx storybook@latest upgrade', you will get prompted and will get an automigration for the new package. Please migrate when you can. dependencies: '@storybook/expect': 28.1.3-5 - '@testing-library/jest-dom': 6.5.0 + '@testing-library/jest-dom': 6.6.3 '@types/jest': 28.1.3 jest-mock: 27.5.1 + dev: true - '@storybook/manager-api@8.3.3(storybook@8.3.3)': + /@storybook/manager-api@8.4.7(storybook@8.4.7): + resolution: {integrity: sha512-ELqemTviCxAsZ5tqUz39sDmQkvhVAvAgiplYy9Uf15kO0SP2+HKsCMzlrm2ue2FfkUNyqbDayCPPCB0Cdn/mpQ==} + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 dependencies: - storybook: 8.3.3 + storybook: 8.4.7(prettier@2.8.8) + dev: true - '@storybook/node-logger@7.6.20': {} + /@storybook/node-logger@7.6.20: + resolution: {integrity: sha512-l2i4qF1bscJkOplNffcRTsgQWYR7J51ewmizj5YrTM8BK6rslWT1RntgVJWB1RgPqvx6VsCz1gyP3yW1oKxvYw==} + dev: true - '@storybook/preview-api@7.6.20': + /@storybook/preview-api@7.6.20: + resolution: {integrity: sha512-3ic2m9LDZEPwZk02wIhNc3n3rNvbi7VDKn52hDXfAxnL5EYm7yDICAkaWcVaTfblru2zn0EDJt7ROpthscTW5w==} dependencies: '@storybook/channels': 7.6.20 '@storybook/client-logger': 7.6.20 '@storybook/core-events': 7.6.20 - '@storybook/csf': 0.1.11 + '@storybook/csf': 0.1.12 '@storybook/global': 5.0.0 '@storybook/types': 7.6.20 - '@types/qs': 6.9.16 + '@types/qs': 6.9.17 dequal: 2.0.3 lodash: 4.17.21 memoizerific: 1.11.3 - qs: 6.13.0 + qs: 6.13.1 synchronous-promise: 2.0.17 ts-dedent: 2.2.0 util-deprecate: 1.0.2 + dev: true - '@storybook/preview-api@8.3.3(storybook@8.3.3)': - dependencies: - storybook: 8.3.3 - - '@storybook/react-dom-shim@8.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3)': + /@storybook/preview-api@8.4.7(storybook@8.4.7): + resolution: {integrity: sha512-0QVQwHw+OyZGHAJEXo6Knx+6/4er7n2rTDE5RYJ9F2E2Lg42E19pfdLlq2Jhoods2Xrclo3wj6GWR//Ahi39Eg==} + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 dependencies: - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - storybook: 8.3.3 + storybook: 8.4.7(prettier@2.8.8) + dev: true - '@storybook/react-dom-shim@8.4.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3)': + /@storybook/react-dom-shim@8.4.7(react-dom@18.3.1)(react@18.3.1)(storybook@8.4.7): + resolution: {integrity: sha512-6bkG2jvKTmWrmVzCgwpTxwIugd7Lu+2btsLAqhQSzDyIj2/uhMNp8xIMr/NBDtLgq3nomt9gefNa9xxLwk/OMg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.4.7 dependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - storybook: 8.3.3 + storybook: 8.4.7(prettier@2.8.8) - '@storybook/react-vite@8.3.3(@storybook/test@8.3.3(storybook@8.3.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.22.4)(storybook@8.3.3)(typescript@5.5.4)(vite@5.4.8(@types/node@18.16.9)(terser@5.33.0))(webpack-sources@3.2.3)': + /@storybook/react-vite@8.4.7(react-dom@18.3.1)(react@18.3.1)(rollup@4.29.1)(storybook@8.4.7)(typescript@5.5.4)(vite@5.4.11): + resolution: {integrity: sha512-iiY9iLdMXhDnilCEVxU6vQsN72pW3miaf0WSenOZRyZv3HdbpgOxI0qapOS0KCyRUnX9vTlmrSPTMchY4cAeOg==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.4.7 + vite: ^4.0.0 || ^5.0.0 || ^6.0.0 dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.3.0(typescript@5.5.4)(vite@5.4.8(@types/node@18.16.9)(terser@5.33.0)) - '@rollup/pluginutils': 5.1.2(rollup@4.22.4) - '@storybook/builder-vite': 8.3.3(storybook@8.3.3)(typescript@5.5.4)(vite@5.4.8(@types/node@18.16.9)(terser@5.33.0))(webpack-sources@3.2.3) - '@storybook/react': 8.3.3(@storybook/test@8.3.3(storybook@8.3.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3)(typescript@5.5.4) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.4.2(typescript@5.5.4)(vite@5.4.11) + '@rollup/pluginutils': 5.1.4(rollup@4.29.1) + '@storybook/builder-vite': 8.4.7(storybook@8.4.7)(vite@5.4.11) + '@storybook/react': 8.4.7(react-dom@18.3.1)(react@18.3.1)(storybook@8.4.7)(typescript@5.5.4) find-up: 5.0.0 - magic-string: 0.30.11 + magic-string: 0.30.17 react: 18.3.1 - react-docgen: 7.0.3 + react-docgen: 7.1.0 react-dom: 18.3.1(react@18.3.1) - resolve: 1.22.8 - storybook: 8.3.3 + resolve: 1.22.10 + storybook: 8.4.7(prettier@2.8.8) tsconfig-paths: 4.2.0 - vite: 5.4.8(@types/node@18.16.9)(terser@5.33.0) + vite: 5.4.11(@types/node@18.16.9) transitivePeerDependencies: - - '@preact/preset-vite' - '@storybook/test' - rollup - supports-color - typescript - - vite-plugin-glimmerx - - webpack-sources + dev: true - '@storybook/react@8.3.3(@storybook/test@8.3.3(storybook@8.3.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3)(typescript@5.5.4)': + /@storybook/react@8.4.7(react-dom@18.3.1)(react@18.3.1)(storybook@8.4.7)(typescript@5.5.4): + resolution: {integrity: sha512-nQ0/7i2DkaCb7dy0NaT95llRVNYWQiPIVuhNfjr1mVhEP7XD090p0g7eqUmsx8vfdHh2BzWEo6CoBFRd3+EXxw==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@storybook/test': 8.4.7 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.4.7 + typescript: '>= 4.2.x' + peerDependenciesMeta: + '@storybook/test': + optional: true + typescript: + optional: true dependencies: - '@storybook/components': 8.3.3(storybook@8.3.3) + '@storybook/components': 8.4.7(storybook@8.4.7) '@storybook/global': 5.0.0 - '@storybook/manager-api': 8.3.3(storybook@8.3.3) - '@storybook/preview-api': 8.3.3(storybook@8.3.3) - '@storybook/react-dom-shim': 8.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.3.3) - '@storybook/theming': 8.3.3(storybook@8.3.3) - '@types/escodegen': 0.0.6 - '@types/estree': 0.0.51 - '@types/node': 22.7.3 - acorn: 7.4.1 - acorn-jsx: 5.3.2(acorn@7.4.1) - acorn-walk: 7.2.0 - escodegen: 2.1.0 - html-tags: 3.3.1 - prop-types: 15.8.1 + '@storybook/manager-api': 8.4.7(storybook@8.4.7) + '@storybook/preview-api': 8.4.7(storybook@8.4.7) + '@storybook/react-dom-shim': 8.4.7(react-dom@18.3.1)(react@18.3.1)(storybook@8.4.7) + '@storybook/theming': 8.4.7(storybook@8.4.7) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-element-to-jsx-string: 15.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - semver: 7.6.3 - storybook: 8.3.3 - ts-dedent: 2.2.0 - type-fest: 2.19.0 - util-deprecate: 1.0.2 - optionalDependencies: - '@storybook/test': 8.3.3(storybook@8.3.3) + storybook: 8.4.7(prettier@2.8.8) typescript: 5.5.4 + dev: true - '@storybook/test-runner@0.13.0(@swc/helpers@0.5.13)(@types/node@18.16.9)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4))': + /@storybook/test-runner@0.13.0(@swc/helpers@0.5.15)(@types/node@18.16.9)(ts-node@10.9.1): + resolution: {integrity: sha512-QIbfgia/iBy7PeUIwCYtPcyeZCHd21ebaPoMNIsRfwUW+VC12J4iG8cGDfOE7MGbMVz1Uu0elAEBB8NGP/YBtQ==} + hasBin: true dependencies: - '@babel/core': 7.25.2 - '@babel/generator': 7.25.6 - '@babel/template': 7.25.0 - '@babel/types': 7.25.6 + '@babel/core': 7.26.0 + '@babel/generator': 7.26.3 + '@babel/template': 7.25.9 + '@babel/types': 7.26.3 '@storybook/core-common': 7.6.20 - '@storybook/csf': 0.1.11 + '@storybook/csf': 0.1.12 '@storybook/csf-tools': 7.6.20 '@storybook/preview-api': 7.6.20 - '@swc/core': 1.5.29(@swc/helpers@0.5.13) - '@swc/jest': 0.2.36(@swc/core@1.5.29(@swc/helpers@0.5.13)) + '@swc/core': 1.5.29(@swc/helpers@0.5.15) + '@swc/jest': 0.2.37(@swc/core@1.5.29) can-bind-to-host: 1.1.2 commander: 9.5.0 expect-playwright: 0.8.0 glob: 10.4.5 - jest: 28.1.3(@types/node@18.16.9)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4)) + jest: 28.1.3(@types/node@18.16.9)(ts-node@10.9.1) jest-circus: 28.1.3 jest-environment-node: 28.1.3 jest-junit: 14.0.1 - jest-playwright-preset: 2.0.0(jest-circus@28.1.3)(jest-environment-node@28.1.3)(jest-runner@28.1.3)(jest@28.1.3(@types/node@18.16.9)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4))) + jest-playwright-preset: 2.0.0(jest-circus@28.1.3)(jest-environment-node@28.1.3)(jest-runner@28.1.3)(jest@28.1.3) jest-runner: 28.1.3 jest-serializer-html: 7.1.0 - jest-watch-typeahead: 2.2.2(jest@28.1.3(@types/node@18.16.9)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4))) + jest-watch-typeahead: 2.2.2(jest@28.1.3) node-fetch: 2.7.0 - playwright: 1.47.2 + playwright: 1.49.1 read-pkg-up: 7.0.1 tempy: 1.0.1 ts-dedent: 2.2.0 @@ -15520,108 +6798,181 @@ snapshots: - node-notifier - supports-color - ts-node + dev: true - '@storybook/test@8.3.3(storybook@8.3.3)': + /@storybook/test@8.4.7(storybook@8.4.7): + resolution: {integrity: sha512-AhvJsu5zl3uG40itSQVuSy5WByp3UVhS6xAnme4FWRwgSxhvZjATJ3AZkkHWOYjnnk+P2/sbz/XuPli1FVCWoQ==} + peerDependencies: + storybook: ^8.4.7 dependencies: - '@storybook/csf': 0.1.11 + '@storybook/csf': 0.1.12 '@storybook/global': 5.0.0 - '@storybook/instrumenter': 8.3.3(storybook@8.3.3) + '@storybook/instrumenter': 8.4.7(storybook@8.4.7) '@testing-library/dom': 10.4.0 '@testing-library/jest-dom': 6.5.0 '@testing-library/user-event': 14.5.2(@testing-library/dom@10.4.0) '@vitest/expect': 2.0.5 '@vitest/spy': 2.0.5 - storybook: 8.3.3 - util: 0.12.5 + storybook: 8.4.7(prettier@2.8.8) + dev: true - '@storybook/testing-library@0.2.2': + /@storybook/testing-library@0.2.2: + resolution: {integrity: sha512-L8sXFJUHmrlyU2BsWWZGuAjv39Jl1uAqUHdxmN42JY15M4+XCMjGlArdCCjDe1wpTSW6USYISA9axjZojgtvnw==} + deprecated: In Storybook 8, this package functionality has been integrated to a new package called @storybook/test, which uses Vitest APIs for an improved experience. When upgrading to Storybook 8 with 'npx storybook@latest upgrade', you will get prompted and will get an automigration for the new package. Please migrate when you can. dependencies: '@testing-library/dom': 9.3.4 '@testing-library/user-event': 14.5.2(@testing-library/dom@9.3.4) ts-dedent: 2.2.0 + dev: true - '@storybook/theming@8.3.3(storybook@8.3.3)': + /@storybook/theming@8.4.7(storybook@8.4.7): + resolution: {integrity: sha512-99rgLEjf7iwfSEmdqlHkSG3AyLcK0sfExcr0jnc6rLiAkBhzuIsvcHjjUwkR210SOCgXqBPW0ZA6uhnuyppHLw==} + peerDependencies: + storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 dependencies: - storybook: 8.3.3 + storybook: 8.4.7(prettier@2.8.8) + dev: true - '@storybook/types@7.6.20': + /@storybook/types@7.6.20: + resolution: {integrity: sha512-GncdY3x0LpbhmUAAJwXYtJDUQEwfF175gsjH0/fxPkxPoV7Sef9TM41jQLJW/5+6TnZoCZP/+aJZTJtq3ni23Q==} dependencies: '@storybook/channels': 7.6.20 '@types/babel__core': 7.20.5 '@types/express': 4.17.21 file-system-cache: 2.3.0 + dev: true - '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.25.2)': + /@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.26.0): + resolution: {integrity: sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 + dev: true - '@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.25.2)': + /@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.26.0): + resolution: {integrity: sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 + dev: true - '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.25.2)': + /@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.26.0): + resolution: {integrity: sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 + dev: true - '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.25.2)': + /@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.26.0): + resolution: {integrity: sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 + dev: true - '@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.25.2)': + /@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.26.0): + resolution: {integrity: sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 + dev: true - '@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.25.2)': + /@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.26.0): + resolution: {integrity: sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 + dev: true - '@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.25.2)': + /@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.26.0): + resolution: {integrity: sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 + dev: true - '@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.25.2)': + /@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.26.0): + resolution: {integrity: sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==} + engines: {node: '>=12'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 + dev: true - '@svgr/babel-preset@8.1.0(@babel/core@7.25.2)': + /@svgr/babel-preset@8.1.0(@babel/core@7.26.0): + resolution: {integrity: sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.2 - '@svgr/babel-plugin-add-jsx-attribute': 8.0.0(@babel/core@7.25.2) - '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.25.2) - '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.25.2) - '@svgr/babel-plugin-replace-jsx-attribute-value': 8.0.0(@babel/core@7.25.2) - '@svgr/babel-plugin-svg-dynamic-title': 8.0.0(@babel/core@7.25.2) - '@svgr/babel-plugin-svg-em-dimensions': 8.0.0(@babel/core@7.25.2) - '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.25.2) - '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.25.2) - - '@svgr/core@8.1.0(typescript@5.5.4)': + '@babel/core': 7.26.0 + '@svgr/babel-plugin-add-jsx-attribute': 8.0.0(@babel/core@7.26.0) + '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.26.0) + '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.26.0) + '@svgr/babel-plugin-replace-jsx-attribute-value': 8.0.0(@babel/core@7.26.0) + '@svgr/babel-plugin-svg-dynamic-title': 8.0.0(@babel/core@7.26.0) + '@svgr/babel-plugin-svg-em-dimensions': 8.0.0(@babel/core@7.26.0) + '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.26.0) + '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.26.0) + dev: true + + /@svgr/core@8.1.0(typescript@5.5.4): + resolution: {integrity: sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==} + engines: {node: '>=14'} dependencies: - '@babel/core': 7.25.2 - '@svgr/babel-preset': 8.1.0(@babel/core@7.25.2) + '@babel/core': 7.26.0 + '@svgr/babel-preset': 8.1.0(@babel/core@7.26.0) camelcase: 6.3.0 cosmiconfig: 8.3.6(typescript@5.5.4) snake-case: 3.0.4 transitivePeerDependencies: - supports-color - typescript + dev: true - '@svgr/hast-util-to-babel-ast@8.0.0': + /@svgr/hast-util-to-babel-ast@8.0.0: + resolution: {integrity: sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==} + engines: {node: '>=14'} dependencies: - '@babel/types': 7.25.8 + '@babel/types': 7.26.3 entities: 4.5.0 + dev: true - '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0(typescript@5.5.4))': + /@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0): + resolution: {integrity: sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==} + engines: {node: '>=14'} + peerDependencies: + '@svgr/core': '*' dependencies: - '@babel/core': 7.25.2 - '@svgr/babel-preset': 8.1.0(@babel/core@7.25.2) + '@babel/core': 7.26.0 + '@svgr/babel-preset': 8.1.0(@babel/core@7.26.0) '@svgr/core': 8.1.0(typescript@5.5.4) '@svgr/hast-util-to-babel-ast': 8.0.0 svg-parser: 2.0.4 transitivePeerDependencies: - supports-color + dev: true - '@svgr/plugin-svgo@8.1.0(@svgr/core@8.1.0(typescript@5.5.4))(typescript@5.5.4)': + /@svgr/plugin-svgo@8.1.0(@svgr/core@8.1.0)(typescript@5.5.4): + resolution: {integrity: sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==} + engines: {node: '>=14'} + peerDependencies: + '@svgr/core': '*' dependencies: '@svgr/core': 8.1.0(typescript@5.5.4) cosmiconfig: 8.3.6(typescript@5.5.4) @@ -15629,79 +6980,192 @@ snapshots: svgo: 3.3.2 transitivePeerDependencies: - typescript + dev: true - '@svgr/webpack@8.1.0(typescript@5.5.4)': + /@svgr/webpack@8.1.0(typescript@5.5.4): + resolution: {integrity: sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==} + engines: {node: '>=14'} dependencies: - '@babel/core': 7.25.2 - '@babel/plugin-transform-react-constant-elements': 7.25.1(@babel/core@7.25.2) - '@babel/preset-env': 7.25.4(@babel/core@7.25.2) - '@babel/preset-react': 7.24.7(@babel/core@7.25.2) - '@babel/preset-typescript': 7.24.7(@babel/core@7.25.2) + '@babel/core': 7.26.0 + '@babel/plugin-transform-react-constant-elements': 7.25.9(@babel/core@7.26.0) + '@babel/preset-env': 7.26.0(@babel/core@7.26.0) + '@babel/preset-react': 7.26.3(@babel/core@7.26.0) + '@babel/preset-typescript': 7.26.0(@babel/core@7.26.0) '@svgr/core': 8.1.0(typescript@5.5.4) - '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.5.4)) - '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0(typescript@5.5.4))(typescript@5.5.4) + '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0) + '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0)(typescript@5.5.4) transitivePeerDependencies: - supports-color - typescript + dev: true - '@swc-node/core@1.13.3(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)': + /@swc-node/core@1.13.3(@swc/core@1.5.29)(@swc/types@0.1.17): + resolution: {integrity: sha512-OGsvXIid2Go21kiNqeTIn79jcaX4l0G93X2rAnas4LFoDyA9wAwVK7xZdm+QsKoMn5Mus2yFLCc4OtX2dD/PWA==} + engines: {node: '>= 10'} + peerDependencies: + '@swc/core': '>= 1.4.13' + '@swc/types': '>= 0.1' dependencies: - '@swc/core': 1.5.29(@swc/helpers@0.5.13) - '@swc/types': 0.1.12 + '@swc/core': 1.5.29(@swc/helpers@0.5.15) + '@swc/types': 0.1.17 + dev: true - '@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4)': + /@swc-node/register@1.9.2(@swc/core@1.5.29)(@swc/types@0.1.17)(typescript@5.5.4): + resolution: {integrity: sha512-BBjg0QNuEEmJSoU/++JOXhrjWdu3PTyYeJWsvchsI0Aqtj8ICkz/DqlwtXbmZVZ5vuDPpTfFlwDBZe81zgShMA==} + peerDependencies: + '@swc/core': '>= 1.4.13' + typescript: '>= 4.3' dependencies: - '@swc-node/core': 1.13.3(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12) + '@swc-node/core': 1.13.3(@swc/core@1.5.29)(@swc/types@0.1.17) '@swc-node/sourcemap-support': 0.5.1 - '@swc/core': 1.5.29(@swc/helpers@0.5.13) + '@swc/core': 1.5.29(@swc/helpers@0.5.15) colorette: 2.0.20 - debug: 4.3.7 + debug: 4.4.0 pirates: 4.0.6 - tslib: 2.7.0 + tslib: 2.8.1 typescript: 5.5.4 transitivePeerDependencies: - '@swc/types' - supports-color + dev: true - '@swc-node/sourcemap-support@0.5.1': + /@swc-node/sourcemap-support@0.5.1: + resolution: {integrity: sha512-JxIvIo/Hrpv0JCHSyRpetAdQ6lB27oFYhv0PKCNf1g2gUXOjpeR1exrXccRxLMuAV5WAmGFBwRnNOJqN38+qtg==} dependencies: source-map-support: 0.5.21 - tslib: 2.7.0 + tslib: 2.8.1 + dev: true - '@swc/core-darwin-arm64@1.5.29': + /@swc/cli@0.3.14(@swc/core@1.5.29): + resolution: {integrity: sha512-0vGqD6FSW67PaZUZABkA+ADKsX7OUY/PwNEz1SbQdCvVk/e4Z36Gwh7mFVBQH9RIsMonTyhV1RHkwkGnEfR3zQ==} + engines: {node: '>= 16.14.0'} + hasBin: true + peerDependencies: + '@swc/core': ^1.2.66 + chokidar: ^3.5.1 + peerDependenciesMeta: + chokidar: + optional: true + dependencies: + '@mole-inc/bin-wrapper': 8.0.1 + '@swc/core': 1.5.29(@swc/helpers@0.5.15) + '@swc/counter': 0.1.3 + commander: 8.3.0 + fast-glob: 3.3.2 + minimatch: 9.0.5 + piscina: 4.8.0 + semver: 7.6.3 + slash: 3.0.0 + source-map: 0.7.4 + dev: true + + /@swc/core-darwin-arm64@1.5.29: + resolution: {integrity: sha512-6F/sSxpHaq3nzg2ADv9FHLi4Fu2A8w8vP8Ich8gIl16D2htStlwnaPmCLjRswO+cFkzgVqy/l01gzNGWd4DFqA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true optional: true - '@swc/core-darwin-x64@1.5.29': + /@swc/core-darwin-x64@1.5.29: + resolution: {integrity: sha512-rF/rXkvUOTdTIfoYbmszbSUGsCyvqACqy1VeP3nXONS+LxFl4bRmRcUTRrblL7IE5RTMCKUuPbqbQSE2hK7bqg==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true optional: true - '@swc/core-linux-arm-gnueabihf@1.5.29': + /@swc/core-linux-arm-gnueabihf@1.5.29: + resolution: {integrity: sha512-2OAPL8iWBsmmwkjGXqvuUhbmmoLxS1xNXiMq87EsnCNMAKohGc7wJkdAOUL6J/YFpean/vwMWg64rJD4pycBeg==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true optional: true - '@swc/core-linux-arm64-gnu@1.5.29': + /@swc/core-linux-arm64-gnu@1.5.29: + resolution: {integrity: sha512-eH/Q9+8O5qhSxMestZnhuS1xqQMr6M7SolZYxiXJqxArXYILLCF+nq2R9SxuMl0CfjHSpb6+hHPk/HXy54eIRA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true optional: true - '@swc/core-linux-arm64-musl@1.5.29': + /@swc/core-linux-arm64-musl@1.5.29: + resolution: {integrity: sha512-TERh2OICAJz+SdDIK9+0GyTUwF6r4xDlFmpoiHKHrrD/Hh3u+6Zue0d7jQ/he/i80GDn4tJQkHlZys+RZL5UZg==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + libc: [musl] + requiresBuild: true + dev: true optional: true - '@swc/core-linux-x64-gnu@1.5.29': + /@swc/core-linux-x64-gnu@1.5.29: + resolution: {integrity: sha512-WMDPqU7Ji9dJpA+Llek2p9t7pcy7Bob8ggPUvgsIlv3R/eesF9DIzSbrgl6j3EAEPB9LFdSafsgf6kT/qnvqFg==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true optional: true - '@swc/core-linux-x64-musl@1.5.29': + /@swc/core-linux-x64-musl@1.5.29: + resolution: {integrity: sha512-DO14glwpdKY4POSN0201OnGg1+ziaSVr6/RFzuSLggshwXeeyVORiHv3baj7NENhJhWhUy3NZlDsXLnRFkmhHQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + libc: [musl] + requiresBuild: true + dev: true optional: true - '@swc/core-win32-arm64-msvc@1.5.29': + /@swc/core-win32-arm64-msvc@1.5.29: + resolution: {integrity: sha512-V3Y1+a1zG1zpYXUMqPIHEMEOd+rHoVnIpO/KTyFwAmKVu8v+/xPEVx/AGoYE67x4vDAAvPQrKI3Aokilqa5yVg==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true optional: true - '@swc/core-win32-ia32-msvc@1.5.29': + /@swc/core-win32-ia32-msvc@1.5.29: + resolution: {integrity: sha512-OrM6yfXw4wXhnVFosOJzarw0Fdz5Y0okgHfn9oFbTPJhoqxV5Rdmd6kXxWu2RiVKs6kGSJFZXHDeUq2w5rTIMg==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true optional: true - '@swc/core-win32-x64-msvc@1.5.29': + /@swc/core-win32-x64-msvc@1.5.29: + resolution: {integrity: sha512-eD/gnxqKyZQQR0hR7TMkIlJ+nCF9dzYmVVNbYZWuA1Xy94aBPUsEk3Uw3oG7q6R3ErrEUPP0FNf2ztEnv+I+dw==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true optional: true - '@swc/core@1.5.29(@swc/helpers@0.5.13)': + /@swc/core@1.5.29(@swc/helpers@0.5.15): + resolution: {integrity: sha512-nvTtHJI43DUSOAf3h9XsqYg8YXKc0/N4il9y4j0xAkO0ekgDNo+3+jbw6MInawjKJF9uulyr+f5bAutTsOKVlw==} + engines: {node: '>=10'} + requiresBuild: true + peerDependencies: + '@swc/helpers': '*' + peerDependenciesMeta: + '@swc/helpers': + optional: true dependencies: '@swc/counter': 0.1.3 - '@swc/types': 0.1.12 + '@swc/helpers': 0.5.15 + '@swc/types': 0.1.17 optionalDependencies: '@swc/core-darwin-arm64': 1.5.29 '@swc/core-darwin-x64': 1.5.29 @@ -15713,284 +7177,487 @@ snapshots: '@swc/core-win32-arm64-msvc': 1.5.29 '@swc/core-win32-ia32-msvc': 1.5.29 '@swc/core-win32-x64-msvc': 1.5.29 - '@swc/helpers': 0.5.13 + dev: true - '@swc/counter@0.1.3': {} + /@swc/counter@0.1.3: + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + dev: true - '@swc/helpers@0.5.13': + /@swc/helpers@0.5.15: + resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} dependencies: - tslib: 2.7.0 + tslib: 2.8.1 + dev: true - '@swc/jest@0.2.36(@swc/core@1.5.29(@swc/helpers@0.5.13))': + /@swc/jest@0.2.37(@swc/core@1.5.29): + resolution: {integrity: sha512-CR2BHhmXKGxTiFr21DYPRHQunLkX3mNIFGFkxBGji6r9uyIR5zftTOVYj1e0sFNMV2H7mf/+vpaglqaryBtqfQ==} + engines: {npm: '>= 7.0.0'} + peerDependencies: + '@swc/core': '*' dependencies: '@jest/create-cache-key-function': 29.7.0 - '@swc/core': 1.5.29(@swc/helpers@0.5.13) + '@swc/core': 1.5.29(@swc/helpers@0.5.15) '@swc/counter': 0.1.3 - jsonc-parser: 3.2.0 + jsonc-parser: 3.3.1 + dev: true - '@swc/types@0.1.12': + /@swc/types@0.1.17: + resolution: {integrity: sha512-V5gRru+aD8YVyCOMAjMpWR1Ui577DD5KSJsHP8RAxopAH22jFz6GZd/qxqjO6MJHQhcsjvjOFXyDhyLQUnMveQ==} dependencies: '@swc/counter': 0.1.3 + dev: true - '@testing-library/dom@10.4.0': + /@szmarczak/http-timer@4.0.6: + resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} + engines: {node: '>=10'} + dependencies: + defer-to-connect: 2.0.1 + dev: true + + /@testing-library/dom@10.4.0: + resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} + engines: {node: '>=18'} dependencies: - '@babel/code-frame': 7.24.7 - '@babel/runtime': 7.25.7 + '@babel/code-frame': 7.26.2 + '@babel/runtime': 7.26.0 '@types/aria-query': 5.0.4 aria-query: 5.3.0 chalk: 4.1.2 dom-accessibility-api: 0.5.16 lz-string: 1.5.0 pretty-format: 27.5.1 + dev: true - '@testing-library/dom@9.3.4': + /@testing-library/dom@9.3.4: + resolution: {integrity: sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==} + engines: {node: '>=14'} dependencies: - '@babel/code-frame': 7.24.7 - '@babel/runtime': 7.25.7 + '@babel/code-frame': 7.26.2 + '@babel/runtime': 7.26.0 '@types/aria-query': 5.0.4 aria-query: 5.1.3 chalk: 4.1.2 dom-accessibility-api: 0.5.16 lz-string: 1.5.0 pretty-format: 27.5.1 + dev: true + + /@testing-library/jest-dom@6.5.0: + resolution: {integrity: sha512-xGGHpBXYSHUUr6XsKBfs85TWlYKpTc37cSBBVrXcib2MkHLboWlkClhWF37JKlDb9KEq3dHs+f2xR7XJEWGBxA==} + engines: {node: '>=14', npm: '>=6', yarn: '>=1'} + dependencies: + '@adobe/css-tools': 4.4.1 + aria-query: 5.3.2 + chalk: 3.0.0 + css.escape: 1.5.1 + dom-accessibility-api: 0.6.3 + lodash: 4.17.21 + redent: 3.0.0 + dev: true - '@testing-library/jest-dom@6.5.0': + /@testing-library/jest-dom@6.6.3: + resolution: {integrity: sha512-IteBhl4XqYNkM54f4ejhLRJiZNqcSCoXUOG2CPK7qbD322KjQozM4kHQOfkG2oln9b9HTYqs+Sae8vBATubxxA==} + engines: {node: '>=14', npm: '>=6', yarn: '>=1'} dependencies: - '@adobe/css-tools': 4.4.0 + '@adobe/css-tools': 4.4.1 aria-query: 5.3.2 chalk: 3.0.0 css.escape: 1.5.1 dom-accessibility-api: 0.6.3 lodash: 4.17.21 redent: 3.0.0 + dev: true - '@testing-library/jest-native@5.4.3(react-native@0.74.1(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(@types/react@18.3.1)(react@18.3.1))(react-test-renderer@18.2.0(react@18.3.1))(react@18.3.1)': + /@testing-library/jest-native@5.4.3(react-native@0.74.1)(react-test-renderer@18.2.0)(react@18.3.1): + resolution: {integrity: sha512-/sSDGaOuE+PJ1Z9Kp4u7PQScSVVXGud59I/qsBFFJvIbcn4P6yYw6cBnBmbPF+X9aRIsTJRDl6gzw5ZkJNm66w==} + peerDependencies: + react: '>=16.0.0' + react-native: '>=0.59' + react-test-renderer: '>=16.0.0' dependencies: chalk: 4.1.2 jest-diff: 29.7.0 jest-matcher-utils: 29.7.0 pretty-format: 29.7.0 react: 18.3.1 - react-native: 0.74.1(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(@types/react@18.3.1)(react@18.3.1) + react-native: 0.74.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0)(@types/react@18.3.1)(react@18.3.1) react-test-renderer: 18.2.0(react@18.3.1) redent: 3.0.0 + dev: true - '@testing-library/react-native@12.5.3(jest@29.7.0(@types/node@18.16.9)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4)))(react-native@0.74.1(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(@types/react@18.3.1)(react@18.3.1))(react-test-renderer@18.2.0(react@18.3.1))(react@18.3.1)': + /@testing-library/react-native@12.5.3(jest@29.7.0)(react-native@0.74.1)(react-test-renderer@18.2.0)(react@18.3.1): + resolution: {integrity: sha512-wSaplzjx51OVJI7MU8Mi2kxwfW0dYETn3jqSVHxtIXmEnmlWXk6f69sEaBbzdp6iDzhFB5E6rDWveqf5V/ap2A==} + peerDependencies: + jest: '>=28.0.0' + react: '>=16.8.0' + react-native: '>=0.59' + react-test-renderer: '>=16.8.0' + peerDependenciesMeta: + jest: + optional: true dependencies: + jest: 29.7.0(@types/node@18.16.9)(ts-node@10.9.1) jest-matcher-utils: 29.7.0 pretty-format: 29.7.0 react: 18.3.1 - react-native: 0.74.1(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(@types/react@18.3.1)(react@18.3.1) + react-native: 0.74.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0)(@types/react@18.3.1)(react@18.3.1) react-test-renderer: 18.2.0(react@18.3.1) redent: 3.0.0 - optionalDependencies: - jest: 29.7.0(@types/node@18.16.9)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4)) + dev: true - '@testing-library/react@15.0.6(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + /@testing-library/react@15.0.6(@types/react@18.3.1)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-UlbazRtEpQClFOiYp+1BapMT+xyqWMnE+hh9tn5DQ6gmlE7AIZWcGpzZukmDZuFk3By01oiqOf8lRedLS4k6xQ==} + engines: {node: '>=18'} + peerDependencies: + '@types/react': ^18.0.0 + react: ^18.0.0 + react-dom: ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 '@testing-library/dom': 10.4.0 + '@types/react': 18.3.1 '@types/react-dom': 18.3.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.1 + dev: true - '@testing-library/user-event@14.5.2(@testing-library/dom@10.4.0)': + /@testing-library/user-event@14.5.2(@testing-library/dom@10.4.0): + resolution: {integrity: sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==} + engines: {node: '>=12', npm: '>=6'} + peerDependencies: + '@testing-library/dom': '>=7.21.4' dependencies: '@testing-library/dom': 10.4.0 + dev: true - '@testing-library/user-event@14.5.2(@testing-library/dom@9.3.4)': + /@testing-library/user-event@14.5.2(@testing-library/dom@9.3.4): + resolution: {integrity: sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==} + engines: {node: '>=12', npm: '>=6'} + peerDependencies: + '@testing-library/dom': '>=7.21.4' dependencies: '@testing-library/dom': 9.3.4 + dev: true + + /@tokenizer/token@0.3.0: + resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} + dev: true - '@tootallnate/once@2.0.0': {} + /@tootallnate/once@2.0.0: + resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} + engines: {node: '>= 10'} + dev: true - '@trysound/sax@0.2.0': {} + /@trysound/sax@0.2.0: + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} + dev: true - '@tsconfig/node10@1.0.11': {} + /@tsconfig/node10@1.0.11: + resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + dev: true - '@tsconfig/node12@1.0.11': {} + /@tsconfig/node12@1.0.11: + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + dev: true - '@tsconfig/node14@1.0.3': {} + /@tsconfig/node14@1.0.3: + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + dev: true - '@tsconfig/node16@1.0.4': {} + /@tsconfig/node16@1.0.4: + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + dev: true - '@tybys/wasm-util@0.9.0': + /@tybys/wasm-util@0.9.0: + resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} dependencies: - tslib: 2.7.0 + tslib: 2.8.1 + dev: true - '@types/argparse@1.0.38': {} + /@types/argparse@1.0.38: + resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} + dev: true - '@types/aria-query@5.0.4': {} + /@types/aria-query@5.0.4: + resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} + dev: true - '@types/babel__core@7.20.5': + /@types/babel__core@7.20.5: + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} dependencies: - '@babel/parser': 7.25.6 - '@babel/types': 7.25.6 + '@babel/parser': 7.26.3 + '@babel/types': 7.26.3 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.6 + dev: true - '@types/babel__generator@7.6.8': + /@types/babel__generator@7.6.8: + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} dependencies: - '@babel/types': 7.25.8 + '@babel/types': 7.26.3 + dev: true - '@types/babel__template@7.4.4': + /@types/babel__template@7.4.4: + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} dependencies: - '@babel/parser': 7.25.8 - '@babel/types': 7.25.8 + '@babel/parser': 7.26.3 + '@babel/types': 7.26.3 + dev: true - '@types/babel__traverse@7.20.6': + /@types/babel__traverse@7.20.6: + resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} dependencies: - '@babel/types': 7.25.8 + '@babel/types': 7.26.3 + dev: true - '@types/body-parser@1.19.5': + /@types/body-parser@1.19.5: + resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} dependencies: '@types/connect': 3.4.38 '@types/node': 18.16.9 + dev: true - '@types/connect@3.4.38': + /@types/cacheable-request@6.0.3: + resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} dependencies: + '@types/http-cache-semantics': 4.0.4 + '@types/keyv': 3.1.4 '@types/node': 18.16.9 + '@types/responselike': 1.0.3 + dev: true - '@types/doctrine@0.0.9': {} + /@types/connect@3.4.38: + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + dependencies: + '@types/node': 18.16.9 + dev: true - '@types/escodegen@0.0.6': {} + /@types/doctrine@0.0.9: + resolution: {integrity: sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==} + dev: true - '@types/eslint-visitor-keys@1.0.0': {} + /@types/eslint-scope@3.7.7: + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + dependencies: + '@types/eslint': 9.6.1 + '@types/estree': 1.0.6 + dev: true - '@types/estree@0.0.39': {} + /@types/eslint-visitor-keys@1.0.0: + resolution: {integrity: sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==} + dev: true - '@types/estree@0.0.51': {} + /@types/eslint@9.6.1: + resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} + dependencies: + '@types/estree': 1.0.6 + '@types/json-schema': 7.0.15 + dev: true - '@types/estree@1.0.5': {} + /@types/estree@0.0.39: + resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} + dev: true - '@types/estree@1.0.6': {} + /@types/estree@1.0.6: + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + dev: true - '@types/express-serve-static-core@4.19.6': + /@types/express-serve-static-core@4.19.6: + resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} dependencies: '@types/node': 18.16.9 - '@types/qs': 6.9.16 + '@types/qs': 6.9.17 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 + dev: true - '@types/express@4.17.21': + /@types/express@4.17.21: + resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} dependencies: '@types/body-parser': 1.19.5 '@types/express-serve-static-core': 4.19.6 - '@types/qs': 6.9.16 + '@types/qs': 6.9.17 '@types/serve-static': 1.15.7 + dev: true - '@types/find-cache-dir@3.2.1': {} + /@types/find-cache-dir@3.2.1: + resolution: {integrity: sha512-frsJrz2t/CeGifcu/6uRo4b+SzAwT4NYCVPu1GN8IB9XTzrpPkGuV0tmh9mN+/L0PklAlsC3u5Fxt0ju00LXIw==} + dev: true - '@types/fs-extra@8.1.5': + /@types/fs-extra@8.1.5: + resolution: {integrity: sha512-0dzKcwO+S8s2kuF5Z9oUWatQJj5Uq/iqphEtE3GQJVRRYm/tD1LglU2UnXi2A8jLq5umkGouOXOR9y0n613ZwQ==} dependencies: '@types/node': 18.16.9 + dev: true - '@types/glob@7.2.0': + /@types/glob@7.2.0: + resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 '@types/node': 18.16.9 + dev: true - '@types/graceful-fs@4.1.9': + /@types/graceful-fs@4.1.9: + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} dependencies: '@types/node': 18.16.9 + dev: true - '@types/http-errors@2.0.4': {} + /@types/http-cache-semantics@4.0.4: + resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} + dev: true - '@types/http-proxy@1.17.15': + /@types/http-errors@2.0.4: + resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} + dev: true + + /@types/http-proxy@1.17.15: + resolution: {integrity: sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==} dependencies: '@types/node': 18.16.9 + dev: true - '@types/istanbul-lib-coverage@2.0.6': {} + /@types/istanbul-lib-coverage@2.0.6: + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} - '@types/istanbul-lib-report@3.0.3': + /@types/istanbul-lib-report@3.0.3: + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} dependencies: '@types/istanbul-lib-coverage': 2.0.6 - '@types/istanbul-reports@1.1.2': + /@types/istanbul-reports@1.1.2: + resolution: {integrity: sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==} dependencies: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-lib-report': 3.0.3 + dev: true - '@types/istanbul-reports@3.0.4': + /@types/istanbul-reports@3.0.4: + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} dependencies: '@types/istanbul-lib-report': 3.0.3 - '@types/jest@25.2.3': + /@types/jest@25.2.3: + resolution: {integrity: sha512-JXc1nK/tXHiDhV55dvfzqtmP4S3sy3T3ouV2tkViZgxY/zeUkcpQcQPGRlgF4KmWzWW5oiWYSZwtCB+2RsE4Fw==} dependencies: jest-diff: 25.5.0 pretty-format: 25.5.0 + dev: true - '@types/jest@28.1.3': + /@types/jest@28.1.3: + resolution: {integrity: sha512-Tsbjk8Y2hkBaY/gJsataeb4q9Mubw9EOz7+4RjPkzD5KjTvHHs7cpws22InaoXxAVAhF5HfFbzJjo6oKWqSZLw==} dependencies: jest-matcher-utils: 28.1.3 pretty-format: 28.1.3 + dev: true - '@types/jest@29.5.14': + /@types/jest@29.5.14: + resolution: {integrity: sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==} dependencies: expect: 29.7.0 pretty-format: 29.7.0 + dev: true - '@types/jsdom@20.0.1': + /@types/jsdom@20.0.1: + resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} dependencies: '@types/node': 18.16.9 '@types/tough-cookie': 4.0.5 - parse5: 7.1.2 + parse5: 7.2.1 + dev: true + + /@types/json-schema@7.0.15: + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + dev: true - '@types/json-schema@7.0.15': {} + /@types/json5@0.0.29: + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + dev: true - '@types/json5@0.0.29': {} + /@types/keyv@3.1.4: + resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} + dependencies: + '@types/node': 18.16.9 + dev: true - '@types/mdx@2.0.13': {} + /@types/mdx@2.0.13: + resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} + dev: false - '@types/mime@1.3.5': {} + /@types/mime@1.3.5: + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + dev: true - '@types/minimatch@5.1.2': {} + /@types/minimatch@5.1.2: + resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} + dev: true - '@types/node-fetch@2.6.11': + /@types/node-fetch@2.6.12: + resolution: {integrity: sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==} dependencies: '@types/node': 18.16.9 - form-data: 4.0.0 + form-data: 4.0.1 + dev: true - '@types/node-forge@1.3.11': + /@types/node-forge@1.3.11: + resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} dependencies: '@types/node': 18.16.9 - '@types/node@12.20.55': {} - - '@types/node@16.18.109': {} - - '@types/node@18.16.9': {} + /@types/node@12.20.55: + resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + dev: true - '@types/node@22.7.3': - dependencies: - undici-types: 6.19.8 + /@types/node@18.16.9: + resolution: {integrity: sha512-IeB32oIV4oGArLrd7znD2rkHQ6EDCM+2Sr76dJnrHwv9OHBTTM6nuDLK9bmikXzPa0ZlWMWtRGo/Uw4mrzQedA==} - '@types/normalize-package-data@2.4.4': {} + /@types/normalize-package-data@2.4.4: + resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + dev: true - '@types/parse-json@4.0.2': {} + /@types/parse-json@4.0.2: + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + dev: true - '@types/prettier@1.19.1': {} + /@types/prettier@1.19.1: + resolution: {integrity: sha512-5qOlnZscTn4xxM5MeGXAMOsIOIKIbh9e85zJWfBRVPlRMEVawzoPhINYbRGkBZCI8LxvBe7tJCdWiarA99OZfQ==} + dev: true - '@types/prettier@2.7.3': {} + /@types/prettier@2.7.3: + resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} + dev: true - '@types/pretty-hrtime@1.0.3': {} + /@types/pretty-hrtime@1.0.3: + resolution: {integrity: sha512-nj39q0wAIdhwn7DGUyT9irmsKK1tV0bd5WFEhgpqNTMFZ8cE+jieuTphCW0tfdm47S2zVT5mr09B28b1chmQMA==} + dev: true - '@types/prop-types@15.7.13': {} + /@types/prop-types@15.7.14: + resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==} - '@types/qs@6.9.16': {} + /@types/qs@6.9.17: + resolution: {integrity: sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ==} + dev: true - '@types/range-parser@1.2.7': {} + /@types/range-parser@1.2.7: + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} + dev: true - '@types/react-dom@18.3.0': + /@types/react-dom@18.3.0: + resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==} dependencies: - '@types/react': 17.0.82 + '@types/react': 18.3.1 + dev: true - '@types/react-native@0.73.0(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(@types/react@18.3.1)(react@18.3.1)': + /@types/react-native@0.73.0(@babel/core@7.26.0)(@babel/preset-env@7.26.0)(@types/react@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-6ZRPQrYM72qYKGWidEttRe6M5DZBEV5F+MHMHqd4TTYx0tfkcdrUFGdef6CCxY0jXU7wldvd/zA/b0A/kTeJmA==} + deprecated: This is a stub types definition. react-native provides its own type definitions, so you do not need this installed. dependencies: - react-native: 0.74.1(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(@types/react@18.3.1)(react@18.3.1) + react-native: 0.74.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0)(@types/react@18.3.1)(react@18.3.1) transitivePeerDependencies: - '@babel/core' - '@babel/preset-env' @@ -16000,68 +7667,103 @@ snapshots: - react - supports-color - utf-8-validate + dev: true - '@types/react@17.0.82': - dependencies: - '@types/prop-types': 15.7.13 - '@types/scheduler': 0.16.8 - csstype: 3.1.3 - - '@types/react@18.3.1': + /@types/react@18.3.1: + resolution: {integrity: sha512-V0kuGBX3+prX+DQ/7r2qsv1NsdfnCLnTgnRJ1pYnxykBhGMz+qj+box5lq7XsO5mtZsBqpjwwTu/7wszPfMBcw==} dependencies: - '@types/prop-types': 15.7.13 + '@types/prop-types': 15.7.14 csstype: 3.1.3 - '@types/resolve@1.17.1': + /@types/resolve@1.17.1: + resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} dependencies: - '@types/node': 16.18.109 + '@types/node': 18.16.9 + dev: true - '@types/resolve@1.20.2': {} + /@types/resolve@1.20.2: + resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} + dev: true - '@types/resolve@1.20.6': {} + /@types/resolve@1.20.6: + resolution: {integrity: sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==} + dev: true - '@types/scheduler@0.16.8': {} + /@types/responselike@1.0.3: + resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} + dependencies: + '@types/node': 18.16.9 + dev: true - '@types/semver@7.5.8': {} + /@types/semver@7.5.8: + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + dev: true - '@types/send@0.17.4': + /@types/send@0.17.4: + resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} dependencies: '@types/mime': 1.3.5 '@types/node': 18.16.9 + dev: true - '@types/serve-static@1.15.7': + /@types/serve-static@1.15.7: + resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} dependencies: '@types/http-errors': 2.0.4 '@types/node': 18.16.9 '@types/send': 0.17.4 + dev: true - '@types/stack-utils@1.0.1': {} + /@types/stack-utils@1.0.1: + resolution: {integrity: sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==} + dev: true - '@types/stack-utils@2.0.3': {} + /@types/stack-utils@2.0.3: + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} - '@types/tough-cookie@4.0.5': {} + /@types/tough-cookie@4.0.5: + resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} + dev: true - '@types/uuid@9.0.8': {} + /@types/uuid@9.0.8: + resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} + dev: false - '@types/wait-on@5.3.4': + /@types/wait-on@5.3.4: + resolution: {integrity: sha512-EBsPjFMrFlMbbUFf9D1Fp+PAB2TwmUn7a3YtHyD9RLuTIk1jDd8SxXVAoez2Ciy+8Jsceo2MYEYZzJ/DvorOKw==} dependencies: '@types/node': 18.16.9 + dev: true - '@types/yargs-parser@21.0.3': {} + /@types/yargs-parser@21.0.3: + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - '@types/yargs@15.0.19': + /@types/yargs@15.0.19: + resolution: {integrity: sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==} dependencies: '@types/yargs-parser': 21.0.3 - '@types/yargs@16.0.9': + /@types/yargs@16.0.9: + resolution: {integrity: sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==} dependencies: '@types/yargs-parser': 21.0.3 + dev: true - '@types/yargs@17.0.33': + /@types/yargs@17.0.33: + resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@2.34.0(@typescript-eslint/parser@2.34.0(eslint@6.8.0)(typescript@3.9.10))(eslint@6.8.0)(typescript@3.9.10)': + /@typescript-eslint/eslint-plugin@2.34.0(@typescript-eslint/parser@2.34.0)(eslint@6.8.0)(typescript@3.9.10): + resolution: {integrity: sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ==} + engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + peerDependencies: + '@typescript-eslint/parser': ^2.0.0 + eslint: ^5.0.0 || ^6.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: '@typescript-eslint/experimental-utils': 2.34.0(eslint@6.8.0)(typescript@3.9.10) '@typescript-eslint/parser': 2.34.0(eslint@6.8.0)(typescript@3.9.10) @@ -16069,30 +7771,40 @@ snapshots: functional-red-black-tree: 1.0.1 regexpp: 3.2.0 tsutils: 3.21.0(typescript@3.9.10) - optionalDependencies: typescript: 3.9.10 transitivePeerDependencies: - supports-color + dev: true - '@typescript-eslint/eslint-plugin@8.7.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1)(typescript@5.5.4))(eslint@9.11.1)(typescript@5.5.4)': - dependencies: - '@eslint-community/regexpp': 4.11.1 - '@typescript-eslint/parser': 8.7.0(eslint@9.11.1)(typescript@5.5.4) - '@typescript-eslint/scope-manager': 8.7.0 - '@typescript-eslint/type-utils': 8.7.0(eslint@9.11.1)(typescript@5.5.4) - '@typescript-eslint/utils': 8.7.0(eslint@9.11.1)(typescript@5.5.4) - '@typescript-eslint/visitor-keys': 8.7.0 - eslint: 9.11.1 + /@typescript-eslint/eslint-plugin@8.18.1(@typescript-eslint/parser@8.18.1)(eslint@9.17.0)(typescript@5.5.4): + resolution: {integrity: sha512-Ncvsq5CT3Gvh+uJG0Lwlho6suwDfUXH0HztslDf5I+F2wAFAZMRwYLEorumpKLzmO2suAXZ/td1tBg4NZIi9CQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 8.18.1(eslint@9.17.0)(typescript@5.5.4) + '@typescript-eslint/scope-manager': 8.18.1 + '@typescript-eslint/type-utils': 8.18.1(eslint@9.17.0)(typescript@5.5.4) + '@typescript-eslint/utils': 8.18.1(eslint@9.17.0)(typescript@5.5.4) + '@typescript-eslint/visitor-keys': 8.18.1 + eslint: 9.17.0 graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 1.3.0(typescript@5.5.4) - optionalDependencies: + ts-api-utils: 1.4.3(typescript@5.5.4) typescript: 5.5.4 transitivePeerDependencies: - supports-color + dev: true - '@typescript-eslint/experimental-utils@2.34.0(eslint@6.8.0)(typescript@3.9.10)': + /@typescript-eslint/experimental-utils@2.34.0(eslint@6.8.0)(typescript@3.9.10): + resolution: {integrity: sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA==} + engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + peerDependencies: + eslint: '*' dependencies: '@types/json-schema': 7.0.15 '@typescript-eslint/typescript-estree': 2.34.0(typescript@3.9.10) @@ -16102,97 +7814,144 @@ snapshots: transitivePeerDependencies: - supports-color - typescript + dev: true - '@typescript-eslint/parser@2.34.0(eslint@6.8.0)(typescript@3.9.10)': + /@typescript-eslint/parser@2.34.0(eslint@6.8.0)(typescript@3.9.10): + resolution: {integrity: sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA==} + engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + peerDependencies: + eslint: ^5.0.0 || ^6.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: '@types/eslint-visitor-keys': 1.0.0 '@typescript-eslint/experimental-utils': 2.34.0(eslint@6.8.0)(typescript@3.9.10) '@typescript-eslint/typescript-estree': 2.34.0(typescript@3.9.10) eslint: 6.8.0 eslint-visitor-keys: 1.3.0 - optionalDependencies: typescript: 3.9.10 transitivePeerDependencies: - supports-color + dev: true - '@typescript-eslint/parser@8.7.0(eslint@9.11.1)(typescript@5.5.4)': - dependencies: - '@typescript-eslint/scope-manager': 8.7.0 - '@typescript-eslint/types': 8.7.0 - '@typescript-eslint/typescript-estree': 8.7.0(typescript@5.5.4) - '@typescript-eslint/visitor-keys': 8.7.0 - debug: 4.3.7 - eslint: 9.11.1 - optionalDependencies: + /@typescript-eslint/parser@8.18.1(eslint@9.17.0)(typescript@5.5.4): + resolution: {integrity: sha512-rBnTWHCdbYM2lh7hjyXqxk70wvon3p2FyaniZuey5TrcGBpfhVp0OxOa6gxr9Q9YhZFKyfbEnxc24ZnVbbUkCA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' + dependencies: + '@typescript-eslint/scope-manager': 8.18.1 + '@typescript-eslint/types': 8.18.1 + '@typescript-eslint/typescript-estree': 8.18.1(typescript@5.5.4) + '@typescript-eslint/visitor-keys': 8.18.1 + debug: 4.4.0 + eslint: 9.17.0 typescript: 5.5.4 transitivePeerDependencies: - supports-color + dev: true - '@typescript-eslint/scope-manager@8.7.0': + /@typescript-eslint/scope-manager@8.18.1: + resolution: {integrity: sha512-HxfHo2b090M5s2+/9Z3gkBhI6xBH8OJCFjH9MhQ+nnoZqxU3wNxkLT+VWXWSFWc3UF3Z+CfPAyqdCTdoXtDPCQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: - '@typescript-eslint/types': 8.7.0 - '@typescript-eslint/visitor-keys': 8.7.0 + '@typescript-eslint/types': 8.18.1 + '@typescript-eslint/visitor-keys': 8.18.1 + dev: true - '@typescript-eslint/type-utils@8.7.0(eslint@9.11.1)(typescript@5.5.4)': + /@typescript-eslint/type-utils@8.18.1(eslint@9.17.0)(typescript@5.5.4): + resolution: {integrity: sha512-jAhTdK/Qx2NJPNOTxXpMwlOiSymtR2j283TtPqXkKBdH8OAMmhiUfP0kJjc/qSE51Xrq02Gj9NY7MwK+UxVwHQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' dependencies: - '@typescript-eslint/typescript-estree': 8.7.0(typescript@5.5.4) - '@typescript-eslint/utils': 8.7.0(eslint@9.11.1)(typescript@5.5.4) - debug: 4.3.7 - ts-api-utils: 1.3.0(typescript@5.5.4) - optionalDependencies: + '@typescript-eslint/typescript-estree': 8.18.1(typescript@5.5.4) + '@typescript-eslint/utils': 8.18.1(eslint@9.17.0)(typescript@5.5.4) + debug: 4.4.0 + eslint: 9.17.0 + ts-api-utils: 1.4.3(typescript@5.5.4) typescript: 5.5.4 transitivePeerDependencies: - - eslint - supports-color + dev: true - '@typescript-eslint/types@8.7.0': {} + /@typescript-eslint/types@8.18.1: + resolution: {integrity: sha512-7uoAUsCj66qdNQNpH2G8MyTFlgerum8ubf21s3TSM3XmKXuIn+H2Sifh/ES2nPOPiYSRJWAk0fDkW0APBWcpfw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: true - '@typescript-eslint/typescript-estree@2.34.0(typescript@3.9.10)': + /@typescript-eslint/typescript-estree@2.34.0(typescript@3.9.10): + resolution: {integrity: sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg==} + engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: - debug: 4.3.7 + debug: 4.4.0 eslint-visitor-keys: 1.3.0 glob: 7.2.3 is-glob: 4.0.3 lodash: 4.17.21 semver: 7.6.3 tsutils: 3.21.0(typescript@3.9.10) - optionalDependencies: typescript: 3.9.10 transitivePeerDependencies: - supports-color + dev: true - '@typescript-eslint/typescript-estree@8.7.0(typescript@5.5.4)': + /@typescript-eslint/typescript-estree@8.18.1(typescript@5.5.4): + resolution: {integrity: sha512-z8U21WI5txzl2XYOW7i9hJhxoKKNG1kcU4RzyNvKrdZDmbjkmLBo8bgeiOJmA06kizLI76/CCBAAGlTlEeUfyg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.8.0' dependencies: - '@typescript-eslint/types': 8.7.0 - '@typescript-eslint/visitor-keys': 8.7.0 - debug: 4.3.7 + '@typescript-eslint/types': 8.18.1 + '@typescript-eslint/visitor-keys': 8.18.1 + debug: 4.4.0 fast-glob: 3.3.2 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.5.4) - optionalDependencies: + ts-api-utils: 1.4.3(typescript@5.5.4) typescript: 5.5.4 transitivePeerDependencies: - supports-color + dev: true - '@typescript-eslint/utils@8.7.0(eslint@9.11.1)(typescript@5.5.4)': + /@typescript-eslint/utils@8.18.1(eslint@9.17.0)(typescript@5.5.4): + resolution: {integrity: sha512-8vikiIj2ebrC4WRdcAdDcmnu9Q/MXXwg+STf40BVfT8exDqBCUPdypvzcUPxEqRGKg9ALagZ0UWcYCtn+4W2iQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1) - '@typescript-eslint/scope-manager': 8.7.0 - '@typescript-eslint/types': 8.7.0 - '@typescript-eslint/typescript-estree': 8.7.0(typescript@5.5.4) - eslint: 9.11.1 + '@eslint-community/eslint-utils': 4.4.1(eslint@9.17.0) + '@typescript-eslint/scope-manager': 8.18.1 + '@typescript-eslint/types': 8.18.1 + '@typescript-eslint/typescript-estree': 8.18.1(typescript@5.5.4) + eslint: 9.17.0 + typescript: 5.5.4 transitivePeerDependencies: - supports-color - - typescript + dev: true - '@typescript-eslint/visitor-keys@8.7.0': + /@typescript-eslint/visitor-keys@8.18.1: + resolution: {integrity: sha512-Vj0WLm5/ZsD013YeUKn+K0y8p1M0jPpxOkKdbD1wB0ns53a5piVY02zjf072TblEweAbcYiFiPoSMF3kp+VhhQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: - '@typescript-eslint/types': 8.7.0 - eslint-visitor-keys: 3.4.3 + '@typescript-eslint/types': 8.18.1 + eslint-visitor-keys: 4.2.0 + dev: true - '@verdaccio/auth@8.0.0-next-8.1': + /@verdaccio/auth@8.0.0-next-8.1: + resolution: {integrity: sha512-sPmHdnYuRSMgABCsTJEfz8tb/smONsWVg0g4KK2QycyYZ/A+RwZLV1JLiQb4wzu9zvS0HSloqWqkWlyNHW3mtw==} + engines: {node: '>=18'} dependencies: '@verdaccio/config': 8.0.0-next-8.1 '@verdaccio/core': 8.0.0-next-8.1 @@ -16205,13 +7964,19 @@ snapshots: verdaccio-htpasswd: 13.0.0-next-8.1 transitivePeerDependencies: - supports-color + dev: true - '@verdaccio/commons-api@10.2.0': + /@verdaccio/commons-api@10.2.0: + resolution: {integrity: sha512-F/YZANu4DmpcEV0jronzI7v2fGVWkQ5Mwi+bVmV+ACJ+EzR0c9Jbhtbe5QyLUuzR97t8R5E/Xe53O0cc2LukdQ==} + engines: {node: '>=8'} dependencies: http-errors: 2.0.0 http-status-codes: 2.2.0 + dev: true - '@verdaccio/config@8.0.0-next-8.1': + /@verdaccio/config@8.0.0-next-8.1: + resolution: {integrity: sha512-goDVOH4e8xMUxjHybJpi5HwIecVFqzJ9jeNFrRUgtUUn0PtFuNMHgxOeqDKRVboZhc5HK90yed8URK/1O6VsUw==} + engines: {node: '>=14'} dependencies: '@verdaccio/core': 8.0.0-next-8.1 '@verdaccio/utils': 7.0.1-next-8.1 @@ -16221,8 +7986,11 @@ snapshots: minimatch: 7.4.6 transitivePeerDependencies: - supports-color + dev: true - '@verdaccio/core@8.0.0-next-8.1': + /@verdaccio/core@8.0.0-next-8.1: + resolution: {integrity: sha512-kQRCB2wgXEh8H88G51eQgAFK9IxmnBtkQ8sY5FbmB6PbBkyHrbGcCp+2mtRqqo36j0W1VAlfM3XzoknMy6qQnw==} + engines: {node: '>=14'} dependencies: ajv: 8.17.1 core-js: 3.37.1 @@ -16230,24 +7998,36 @@ snapshots: http-status-codes: 2.3.0 process-warning: 1.0.0 semver: 7.6.3 + dev: true - '@verdaccio/file-locking@10.3.1': + /@verdaccio/file-locking@10.3.1: + resolution: {integrity: sha512-oqYLfv3Yg3mAgw9qhASBpjD50osj2AX4IwbkUtyuhhKGyoFU9eZdrbeW6tpnqUnj6yBMtAPm2eGD4BwQuX400g==} + engines: {node: '>=12'} dependencies: lockfile: 1.0.4 + dev: true - '@verdaccio/file-locking@13.0.0-next-8.0': + /@verdaccio/file-locking@13.0.0-next-8.0: + resolution: {integrity: sha512-28XRwpKiE3Z6KsnwE7o8dEM+zGWOT+Vef7RVJyUlG176JVDbGGip3HfCmFioE1a9BklLyGEFTu6D69BzfbRkzA==} + engines: {node: '>=12'} dependencies: lockfile: 1.0.4 + dev: true - '@verdaccio/loaders@8.0.0-next-8.1': + /@verdaccio/loaders@8.0.0-next-8.1: + resolution: {integrity: sha512-mqGCUBs862g8mICZwX8CG92p1EZ1Un0DJ2DB7+iVu2TYaEeKoHoIdafabVdiYrbOjLcAOOBrMKE1Wnn14eLxpA==} + engines: {node: '>=18'} dependencies: '@verdaccio/logger': 8.0.0-next-8.1 debug: 4.3.7 lodash: 4.17.21 transitivePeerDependencies: - supports-color + dev: true - '@verdaccio/local-storage-legacy@11.0.2': + /@verdaccio/local-storage-legacy@11.0.2: + resolution: {integrity: sha512-7AXG7qlcVFmF+Nue2oKaraprGRtaBvrQIOvc/E89+7hAe399V01KnZI6E/ET56u7U9fq0MSlp92HBcdotlpUXg==} + engines: {node: '>=12'} dependencies: '@verdaccio/commons-api': 10.2.0 '@verdaccio/file-locking': 10.3.1 @@ -16259,15 +8039,21 @@ snapshots: mkdirp: 1.0.4 transitivePeerDependencies: - supports-color + dev: true - '@verdaccio/logger-7@8.0.0-next-8.1': + /@verdaccio/logger-7@8.0.0-next-8.1: + resolution: {integrity: sha512-V+/B1Wnct3IZ90q6HkI1a3dqbS0ds7s/5WPrS5cmBeLEw78/OGgF76XkhI2+lett7Un1CjVow7mcebOWcZ/Sqw==} + engines: {node: '>=12'} dependencies: '@verdaccio/logger-commons': 8.0.0-next-8.1 pino: 7.11.0 transitivePeerDependencies: - supports-color + dev: true - '@verdaccio/logger-commons@8.0.0-next-8.1': + /@verdaccio/logger-commons@8.0.0-next-8.1: + resolution: {integrity: sha512-jCge//RT4uaK7MarhpzcJeJ5Uvtu/DbJ1wvJQyGiFe+9AvxDGm3EUFXvawLFZ0lzYhmLt1nvm7kevcc3vOm2ZQ==} + engines: {node: '>=12'} dependencies: '@verdaccio/core': 8.0.0-next-8.1 '@verdaccio/logger-prettify': 8.0.0-next-8.0 @@ -16275,23 +8061,32 @@ snapshots: debug: 4.3.7 transitivePeerDependencies: - supports-color + dev: true - '@verdaccio/logger-prettify@8.0.0-next-8.0': + /@verdaccio/logger-prettify@8.0.0-next-8.0: + resolution: {integrity: sha512-7mAFHZF2NPTubrOXYp2+fbMjRW5MMWXMeS3LcpupMAn5uPp6jkKEM8NC4IVJEevC5Ph4vPVZqpoPDpgXHEaV3Q==} + engines: {node: '>=12'} dependencies: colorette: 2.0.20 dayjs: 1.11.13 lodash: 4.17.21 pino-abstract-transport: 1.1.0 sonic-boom: 3.8.0 + dev: true - '@verdaccio/logger@8.0.0-next-8.1': + /@verdaccio/logger@8.0.0-next-8.1: + resolution: {integrity: sha512-w5kR0/umQkfH2F4PK5Fz9T6z3xz+twewawKLPTUfAgrVAOiWxcikGhhcHWhSGiJ0lPqIa+T0VYuLWMeVeDirGw==} + engines: {node: '>=18'} dependencies: '@verdaccio/logger-commons': 8.0.0-next-8.1 pino: 8.17.2 transitivePeerDependencies: - supports-color + dev: true - '@verdaccio/middleware@8.0.0-next-8.1': + /@verdaccio/middleware@8.0.0-next-8.1: + resolution: {integrity: sha512-GpAdJYky1WmOERpxPoCkVSwTTJIsVAjqf2a2uQNvi7R3UZhs059JKhWcZjJMVCGV0uz9xgQvtb3DEuYGHqyaOg==} + engines: {node: '>=12'} dependencies: '@verdaccio/config': 8.0.0-next-8.1 '@verdaccio/core': 8.0.0-next-8.1 @@ -16305,19 +8100,31 @@ snapshots: mime: 2.6.0 transitivePeerDependencies: - supports-color + dev: true - '@verdaccio/search-indexer@8.0.0-next-8.0': {} + /@verdaccio/search-indexer@8.0.0-next-8.0: + resolution: {integrity: sha512-VS9axVt8XAueiPceVCgaj9nlvYj5s/T4MkAILSf2rVZeFFOMUyxU3mddUCajSHzL+YpqCuzLLL9865sRRzOJ9w==} + engines: {node: '>=12'} + dev: true - '@verdaccio/signature@8.0.0-next-8.0': + /@verdaccio/signature@8.0.0-next-8.0: + resolution: {integrity: sha512-klcc2UlCvQxXDV65Qewo2rZOfv7S1y8NekS/8uurSaCTjU35T+fz+Pbqz1S9XK9oQlMp4vCQ7w3iMPWQbvphEQ==} + engines: {node: '>=14'} dependencies: debug: 4.3.7 jsonwebtoken: 9.0.2 transitivePeerDependencies: - supports-color + dev: true - '@verdaccio/streams@10.2.1': {} + /@verdaccio/streams@10.2.1: + resolution: {integrity: sha512-OojIG/f7UYKxC4dYX8x5ax8QhRx1b8OYUAMz82rUottCuzrssX/4nn5QE7Ank0DUSX3C9l/HPthc4d9uKRJqJQ==} + engines: {node: '>=12', npm: '>=5'} + dev: true - '@verdaccio/tarball@13.0.0-next-8.1': + /@verdaccio/tarball@13.0.0-next-8.1: + resolution: {integrity: sha512-58uimU2Bqt9+s+9ixy7wK/nPCqbOXhhhr/MQjl+otIlsUhSeATndhFzEctz/W+4MhUDg0tUnE9HC2yeNHHAo1Q==} + engines: {node: '>=14'} dependencies: '@verdaccio/core': 8.0.0-next-8.1 '@verdaccio/url': 13.0.0-next-8.1 @@ -16328,10 +8135,15 @@ snapshots: tar-stream: 3.1.7 transitivePeerDependencies: - supports-color + dev: true - '@verdaccio/ui-theme@8.0.0-next-8.1': {} + /@verdaccio/ui-theme@8.0.0-next-8.1: + resolution: {integrity: sha512-9PxV8+jE2Tr+iy9DQW/bzny4YqOlW0mCZ9ct6jhcUW4GdfzU//gY2fBN/DDtQVmfbTy8smuj4Enyv5f0wCsnYg==} + dev: true - '@verdaccio/url@13.0.0-next-8.1': + /@verdaccio/url@13.0.0-next-8.1: + resolution: {integrity: sha512-h6pkJf+YtogImKgOrmPP9UVG3p3gtb67gqkQU0bZnK+SEKQt6Rkek/QvtJ8MbmciagYS18bDhpI8DxqLHjDfZQ==} + engines: {node: '>=12'} dependencies: '@verdaccio/core': 8.0.0-next-8.1 debug: 4.3.7 @@ -16339,877 +8151,1379 @@ snapshots: validator: 13.12.0 transitivePeerDependencies: - supports-color + dev: true - '@verdaccio/utils@7.0.1-next-8.1': + /@verdaccio/utils@7.0.1-next-8.1: + resolution: {integrity: sha512-cyJdRrVa+8CS7UuIQb3K3IJFjMe64v38tYiBnohSmhRbX7dX9IT3jWbjrwkqWh4KeS1CS6BYENrGG1evJ2ggrQ==} + engines: {node: '>=12'} dependencies: '@verdaccio/core': 8.0.0-next-8.1 lodash: 4.17.21 minimatch: 7.4.6 semver: 7.6.3 + dev: true - '@vitejs/plugin-react@4.3.1(vite@5.4.8(@types/node@18.16.9)(terser@5.33.0))': + /@vitejs/plugin-react@4.3.4(vite@5.4.11): + resolution: {integrity: sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 dependencies: - '@babel/core': 7.25.2 - '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2) + '@babel/core': 7.26.0 + '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.0) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.4.8(@types/node@18.16.9)(terser@5.33.0) + vite: 5.4.11(@types/node@18.16.9) transitivePeerDependencies: - supports-color + dev: true - '@vitest/coverage-v8@1.6.0(vitest@1.6.0)': + /@vitest/coverage-v8@1.6.0(vitest@1.6.0): + resolution: {integrity: sha512-KvapcbMY/8GYIG0rlwwOKCVNRc0OL20rrhFkg/CHNzncV03TE2XWvO5w9uZYoxNiMEBacAJt3unSOiZ7svePew==} + peerDependencies: + vitest: 1.6.0 dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 - debug: 4.3.7 + debug: 4.4.0 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 5.0.6 istanbul-reports: 3.1.7 - magic-string: 0.30.11 + magic-string: 0.30.17 magicast: 0.3.5 - picocolors: 1.1.0 - std-env: 3.7.0 - strip-literal: 2.1.0 + picocolors: 1.1.1 + std-env: 3.8.0 + strip-literal: 2.1.1 test-exclude: 6.0.0 - vitest: 1.6.0(@types/node@18.16.9)(@vitest/ui@1.6.0)(jsdom@22.1.0)(terser@5.33.0) + vitest: 1.6.0(@types/node@18.16.9)(@vitest/ui@1.6.0)(jsdom@22.1.0) transitivePeerDependencies: - supports-color + dev: true - '@vitest/expect@1.6.0': + /@vitest/expect@1.6.0: + resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} dependencies: '@vitest/spy': 1.6.0 '@vitest/utils': 1.6.0 chai: 4.5.0 + dev: true - '@vitest/expect@2.0.5': + /@vitest/expect@2.0.5: + resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==} dependencies: '@vitest/spy': 2.0.5 '@vitest/utils': 2.0.5 - chai: 5.1.1 + chai: 5.1.2 tinyrainbow: 1.2.0 + dev: true - '@vitest/pretty-format@2.0.5': + /@vitest/pretty-format@2.0.5: + resolution: {integrity: sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==} dependencies: tinyrainbow: 1.2.0 + dev: true - '@vitest/pretty-format@2.1.1': + /@vitest/pretty-format@2.1.8: + resolution: {integrity: sha512-9HiSZ9zpqNLKlbIDRWOnAWqgcA7xu+8YxXSekhr0Ykab7PAYFkhkwoqVArPOtJhPmYeE2YHgKZlj3CP36z2AJQ==} dependencies: tinyrainbow: 1.2.0 + dev: true - '@vitest/runner@1.6.0': + /@vitest/runner@1.6.0: + resolution: {integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==} dependencies: '@vitest/utils': 1.6.0 p-limit: 5.0.0 pathe: 1.1.2 + dev: true - '@vitest/snapshot@1.6.0': + /@vitest/snapshot@1.6.0: + resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==} dependencies: - magic-string: 0.30.11 + magic-string: 0.30.17 pathe: 1.1.2 pretty-format: 29.7.0 + dev: true - '@vitest/spy@1.6.0': + /@vitest/spy@1.6.0: + resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} dependencies: tinyspy: 2.2.1 + dev: true - '@vitest/spy@2.0.5': + /@vitest/spy@2.0.5: + resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==} dependencies: tinyspy: 3.0.2 + dev: true - '@vitest/ui@1.6.0(vitest@1.6.0)': + /@vitest/ui@1.6.0(vitest@1.6.0): + resolution: {integrity: sha512-k3Lyo+ONLOgylctiGovRKy7V4+dIN2yxstX3eY5cWFXH6WP+ooVX79YSyi0GagdTQzLmT43BF27T0s6dOIPBXA==} + peerDependencies: + vitest: 1.6.0 dependencies: '@vitest/utils': 1.6.0 fast-glob: 3.3.2 fflate: 0.8.2 - flatted: 3.3.1 + flatted: 3.3.2 pathe: 1.1.2 - picocolors: 1.1.0 + picocolors: 1.1.1 sirv: 2.0.4 - vitest: 1.6.0(@types/node@18.16.9)(@vitest/ui@1.6.0)(jsdom@22.1.0)(terser@5.33.0) + vitest: 1.6.0(@types/node@18.16.9)(@vitest/ui@1.6.0)(jsdom@22.1.0) + dev: true - '@vitest/utils@1.6.0': + /@vitest/utils@1.6.0: + resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} dependencies: diff-sequences: 29.6.3 estree-walker: 3.0.3 loupe: 2.3.7 pretty-format: 29.7.0 + dev: true - '@vitest/utils@2.0.5': + /@vitest/utils@2.0.5: + resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==} dependencies: '@vitest/pretty-format': 2.0.5 estree-walker: 3.0.3 - loupe: 3.1.1 + loupe: 3.1.2 tinyrainbow: 1.2.0 + dev: true - '@vitest/utils@2.1.1': + /@vitest/utils@2.1.8: + resolution: {integrity: sha512-dwSoui6djdwbfFmIgbIjX2ZhIoG7Ex/+xpxyiEgIGzjliY8xGkcpITKTlp6B4MgtGkF2ilvm97cPM96XZaAgcA==} dependencies: - '@vitest/pretty-format': 2.1.1 - loupe: 3.1.1 + '@vitest/pretty-format': 2.1.8 + loupe: 3.1.2 tinyrainbow: 1.2.0 + dev: true - '@volar/language-core@1.11.1': + /@volar/language-core@1.11.1: + resolution: {integrity: sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==} dependencies: '@volar/source-map': 1.11.1 + dev: true - '@volar/source-map@1.11.1': + /@volar/source-map@1.11.1: + resolution: {integrity: sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==} dependencies: muggle-string: 0.3.1 + dev: true - '@volar/typescript@1.11.1': + /@volar/typescript@1.11.1: + resolution: {integrity: sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==} dependencies: '@volar/language-core': 1.11.1 path-browserify: 1.0.1 + dev: true - '@vue/compiler-core@3.5.8': + /@vue/compiler-core@3.5.13: + resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==} dependencies: - '@babel/parser': 7.25.8 - '@vue/shared': 3.5.8 + '@babel/parser': 7.26.3 + '@vue/shared': 3.5.13 entities: 4.5.0 estree-walker: 2.0.2 source-map-js: 1.2.1 + dev: true - '@vue/compiler-dom@3.5.8': + /@vue/compiler-dom@3.5.13: + resolution: {integrity: sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==} dependencies: - '@vue/compiler-core': 3.5.8 - '@vue/shared': 3.5.8 + '@vue/compiler-core': 3.5.13 + '@vue/shared': 3.5.13 + dev: true - '@vue/language-core@1.8.27(typescript@5.5.4)': + /@vue/language-core@1.8.27(typescript@5.5.4): + resolution: {integrity: sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: '@volar/language-core': 1.11.1 '@volar/source-map': 1.11.1 - '@vue/compiler-dom': 3.5.8 - '@vue/shared': 3.5.8 + '@vue/compiler-dom': 3.5.13 + '@vue/shared': 3.5.13 computeds: 0.0.1 minimatch: 9.0.5 muggle-string: 0.3.1 path-browserify: 1.0.1 - vue-template-compiler: 2.7.16 - optionalDependencies: typescript: 5.5.4 + vue-template-compiler: 2.7.16 + dev: true - '@vue/shared@3.5.8': {} + /@vue/shared@3.5.13: + resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==} + dev: true - '@webassemblyjs/ast@1.12.1': + /@webassemblyjs/ast@1.14.1: + resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} dependencies: - '@webassemblyjs/helper-numbers': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/helper-numbers': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + dev: true - '@webassemblyjs/floating-point-hex-parser@1.11.6': {} + /@webassemblyjs/floating-point-hex-parser@1.13.2: + resolution: {integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==} + dev: true - '@webassemblyjs/helper-api-error@1.11.6': {} + /@webassemblyjs/helper-api-error@1.13.2: + resolution: {integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==} + dev: true - '@webassemblyjs/helper-buffer@1.12.1': {} + /@webassemblyjs/helper-buffer@1.14.1: + resolution: {integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==} + dev: true - '@webassemblyjs/helper-numbers@1.11.6': + /@webassemblyjs/helper-numbers@1.13.2: + resolution: {integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==} dependencies: - '@webassemblyjs/floating-point-hex-parser': 1.11.6 - '@webassemblyjs/helper-api-error': 1.11.6 + '@webassemblyjs/floating-point-hex-parser': 1.13.2 + '@webassemblyjs/helper-api-error': 1.13.2 '@xtuc/long': 4.2.2 + dev: true - '@webassemblyjs/helper-wasm-bytecode@1.11.6': {} + /@webassemblyjs/helper-wasm-bytecode@1.13.2: + resolution: {integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==} + dev: true - '@webassemblyjs/helper-wasm-section@1.12.1': + /@webassemblyjs/helper-wasm-section@1.14.1: + resolution: {integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==} dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-buffer': 1.12.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/wasm-gen': 1.14.1 + dev: true - '@webassemblyjs/ieee754@1.11.6': + /@webassemblyjs/ieee754@1.13.2: + resolution: {integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==} dependencies: '@xtuc/ieee754': 1.2.0 + dev: true - '@webassemblyjs/leb128@1.11.6': + /@webassemblyjs/leb128@1.13.2: + resolution: {integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==} dependencies: '@xtuc/long': 4.2.2 - - '@webassemblyjs/utf8@1.11.6': {} - - '@webassemblyjs/wasm-edit@1.12.1': - dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-buffer': 1.12.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/helper-wasm-section': 1.12.1 - '@webassemblyjs/wasm-gen': 1.12.1 - '@webassemblyjs/wasm-opt': 1.12.1 - '@webassemblyjs/wasm-parser': 1.12.1 - '@webassemblyjs/wast-printer': 1.12.1 - - '@webassemblyjs/wasm-gen@1.12.1': - dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/ieee754': 1.11.6 - '@webassemblyjs/leb128': 1.11.6 - '@webassemblyjs/utf8': 1.11.6 - - '@webassemblyjs/wasm-opt@1.12.1': - dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-buffer': 1.12.1 - '@webassemblyjs/wasm-gen': 1.12.1 - '@webassemblyjs/wasm-parser': 1.12.1 - - '@webassemblyjs/wasm-parser@1.12.1': - dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-api-error': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/ieee754': 1.11.6 - '@webassemblyjs/leb128': 1.11.6 - '@webassemblyjs/utf8': 1.11.6 - - '@webassemblyjs/wast-printer@1.12.1': - dependencies: - '@webassemblyjs/ast': 1.12.1 + dev: true + + /@webassemblyjs/utf8@1.13.2: + resolution: {integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==} + dev: true + + /@webassemblyjs/wasm-edit@1.14.1: + resolution: {integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==} + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/helper-wasm-section': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-opt': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + '@webassemblyjs/wast-printer': 1.14.1 + dev: true + + /@webassemblyjs/wasm-gen@1.14.1: + resolution: {integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==} + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 + dev: true + + /@webassemblyjs/wasm-opt@1.14.1: + resolution: {integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==} + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + dev: true + + /@webassemblyjs/wasm-parser@1.14.1: + resolution: {integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==} + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-api-error': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 + dev: true + + /@webassemblyjs/wast-printer@1.14.1: + resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} + dependencies: + '@webassemblyjs/ast': 1.14.1 '@xtuc/long': 4.2.2 + dev: true - '@x-oasis/batchinate-last@0.1.35': {} + /@x-oasis/batchinate-last@0.1.35: + resolution: {integrity: sha512-+YELtwndkTu3mtL8pKKJvJXa0b6PlPpWh6lbwtiDvMSlzz2lTC57AAt9HDq6cSlIFzEG7AUcPagSKt9EwyFF2Q==} + dev: false - '@x-oasis/batchinator@0.1.35': + /@x-oasis/batchinator@0.1.35: + resolution: {integrity: sha512-2FPn56U+zzV+G0Fpuut+DF8WSROBy19Rw1YuWuyrwGyL/v29ujvdh+AUwyywcITSJk/OC15ghfPMy1oLw/y6/w==} dependencies: '@x-oasis/default-boolean-value': 0.1.35 + dev: false - '@x-oasis/capitalize@0.1.35': {} + /@x-oasis/capitalize@0.1.35: + resolution: {integrity: sha512-UcFOothNKAYkyAvpTkzmrRWIrZdwC1atyKXH03RyJdoCSJUN88CNUHnxn2h2+K+opOiZxBmMGgACwUeKOVJayg==} + dev: false - '@x-oasis/default-boolean-value@0.1.35': + /@x-oasis/default-boolean-value@0.1.35: + resolution: {integrity: sha512-XAauacjZlfYgGcm0yl3JmAsVqaC7eYnDuT9DkZktlkYaMhlwWWEPfwEjETTRjNpqRPWSNnw8WvjTNcGuo4aRQw==} dependencies: '@x-oasis/default-value': 0.1.35 + dev: false - '@x-oasis/default-value@0.1.35': {} + /@x-oasis/default-value@0.1.35: + resolution: {integrity: sha512-SmdgeZ1hAeK7naG+ut26OhOIZBAE+v2z5EdfooJskr/nAaLL81ZJZYDCMBvmnpS613Ud/9Q2+JEQnfDCJJbZmA==} + dev: false - '@x-oasis/find-last-index@0.1.35': {} + /@x-oasis/find-last-index@0.1.35: + resolution: {integrity: sha512-jGG84OPhKEw4K0ECkgZbutnt1WPRecxgh3O2oJwX2algDmMQAWjRfol+6tg5kjpiml0QTFi9nN/Teakmr3eQ0w==} + dev: false - '@x-oasis/get-map-key-by-value@0.1.35': {} + /@x-oasis/get-map-key-by-value@0.1.35: + resolution: {integrity: sha512-CAyHbBVJqlJLDu/dXgrRXFl3jfLwBeiSc/j/zUE1SXDoWF4BqWZlz5MgSUllFfbnafjUW2jMlZdaA+VJpJp9Kg==} + dev: false - '@x-oasis/heap@0.1.35': {} + /@x-oasis/heap@0.1.35: + resolution: {integrity: sha512-KyHhox7rnQNsydBAxNYQltbEFqVKODTupfTCI9qth4dPIwWh6tLtuGL6PBGFXzAPrB/4NMh186E6aE+zoeXBBg==} + dev: false - '@x-oasis/integer-buffer-set@0.1.36': + /@x-oasis/integer-buffer-set@0.1.36: + resolution: {integrity: sha512-kpaImsAq1c7+aPS735A7XSO6EujLNw+Fzjp8GY072LRmNIuVuP4r65DySAEu3JVxmL0x2et3WOM3XZiSL7HcWw==} dependencies: '@x-oasis/heap': 0.1.35 '@x-oasis/invariant': 0.1.35 '@x-oasis/is-clamped': 0.1.35 '@x-oasis/return-hook': 0.1.35 + dev: false - '@x-oasis/invariant@0.1.35': {} + /@x-oasis/invariant@0.1.35: + resolution: {integrity: sha512-E2VNNgMXAfmmHWqA29zkap0mpUi4tc3Kq21hq5UYS0IQcweZJvO+KeVCIf9ADAre8cW7Sx5yBLEP6aTlSm1dnw==} + dev: false - '@x-oasis/is-clamped@0.1.35': {} + /@x-oasis/is-clamped@0.1.35: + resolution: {integrity: sha512-9NKBqYefUnCpJrA4hc/2//jCjYLVCLrcAIraPH750+88fKjQg6ddXEImvV/+xhz050OJcm4oBq7KaBQo0RWxaw==} + dev: false - '@x-oasis/is-object@0.1.35': + /@x-oasis/is-object@0.1.35: + resolution: {integrity: sha512-Dqb8kPyTHQNtKiXRpxJSHRbSxar6iKihn88NRGflss/Xu1CnFNbyShUH6i2IH5UJCO4zEQHiemAHWySnA4Jetg==} dependencies: '@x-oasis/to-string': 0.1.35 + dev: false - '@x-oasis/is-ref@0.1.35': + /@x-oasis/is-ref@0.1.35: + resolution: {integrity: sha512-yfnDNUGuZlYZNToj2eynYu4iTGmhRLJ+LpreksJcYW0eoJnh3PLm2fEIw4Vloq72j79OXwwxEOaRbeZkH1aDFQ==} dependencies: '@x-oasis/is-object': 0.1.35 + dev: false - '@x-oasis/is@0.1.39': {} + /@x-oasis/is@0.1.39: + resolution: {integrity: sha512-va/6+C33k3/Au24WJwJwuS1oy5JA+Sd7hb0ohb0jjRoTzEA3kb5TQGl6gnhsD84ZDEf5jMaNvTz6KCizAP6VVQ==} + dev: false - '@x-oasis/layout-equal@0.1.35': {} + /@x-oasis/layout-equal@0.1.35: + resolution: {integrity: sha512-FjzliFGkzsoi3K3aThxKi9zZOVsgw40dgRxADeE4UlhUxhnqkTi2cXxvrExurR1jJNZkz3vwOE7Xu1ssXOIBwQ==} + dev: false - '@x-oasis/noop@0.1.35': {} + /@x-oasis/noop@0.1.35: + resolution: {integrity: sha512-HOzkGw1JVLWThPWGQYGCmcT8bf+3DbiXIkjCpS4lv0kR3hjTCF3z2Fl966ph3Qtny0rW9RQeBtMknchWUnXcNw==} + dev: false - '@x-oasis/omit@0.1.35': {} + /@x-oasis/omit@0.1.35: + resolution: {integrity: sha512-pG3R9b1OSVIDKZnApclMKiJmVHuuRQd10zB6Y6xPzW9rDjO+kuk0mPz7eYMv5lK+Ko3ZImBYJV+pvC6441aVYw==} + dev: false - '@x-oasis/prefix-interval-tree@0.2.4': {} + /@x-oasis/prefix-interval-tree@0.2.4: + resolution: {integrity: sha512-oE4dasiGw78tmh/YFh9ezsbukO+4+9wuiuxR9jTgnSC6qhVZaSmJmXOFZyKHsz2ddsqh/CcoBgEAUeQc3wpchw==} + dev: false - '@x-oasis/recycler@0.1.37': + /@x-oasis/recycler@0.1.38: + resolution: {integrity: sha512-IOUbHqXEFY/wM+SN9bwChmSFOd1JM5+4WfVoV9tAmDhEcK+xHZ/SY3FbiWAkFWRD34+RbT1UMaadKKIBIG4gzA==} dependencies: '@x-oasis/integer-buffer-set': 0.1.36 + dev: false - '@x-oasis/resolve-changed@0.1.35': {} + /@x-oasis/resolve-changed@0.1.35: + resolution: {integrity: sha512-wgGsN6Bth81LlcsjB4jX3jxaluRHYiS9pTRaHw+m8D9WGwSnwNuL4feN/9JdEr3S0bOGiAf7ISN+t5rEQF5Urg==} + dev: false - '@x-oasis/return-hook@0.1.35': {} + /@x-oasis/return-hook@0.1.35: + resolution: {integrity: sha512-HDg0r86+/gBVkqtDgqrsvCSb8LykNhSpqb5dhEDdgP/ZRdT5FOeZz8XfXGa6Fze1XhbPgS0Dq6Ej2zJaS/FGlA==} + dev: false - '@x-oasis/select-value@0.1.35': {} + /@x-oasis/select-value@0.1.35: + resolution: {integrity: sha512-iB14Ja6JWado+Ndj0vkqn6qBysvpSQjOol9NCsKOiqiWqvx4FNV7LSWkCXdYFTBtNxkVyOeTfZNFVfvKBmf9yg==} + dev: false - '@x-oasis/shallow-array-equal@0.1.35': {} + /@x-oasis/shallow-array-equal@0.1.35: + resolution: {integrity: sha512-RLcfd2YxvBcYIyOO1XnRu35obK61Dow894eQxUcWWP3XRTaK5lMbMwhDXfjAR/MeoC0+zKQruOhGgS24u1zGew==} + dev: false - '@x-oasis/shallow-equal@0.1.38': + /@x-oasis/shallow-equal@0.1.38: + resolution: {integrity: sha512-TXHqtJ7TXn/QORGH38sOmJ1bgvJKSUrRDKVvkcUyrjdJLd29P4szwYmPZ7E9HWMBj9FRBFTVWOJSagESgyO3Ew==} dependencies: '@x-oasis/is': 0.1.39 + dev: false - '@x-oasis/throttle@0.1.35': {} + /@x-oasis/throttle@0.1.35: + resolution: {integrity: sha512-L/uiT2TR4MLdP2ucEE6eh4Tan94ePJ6/fA2AGkEwFc4geV7+OWzVydl89JJtVsG3N7/OV/NYp/9vfyZqtbt4gA==} + dev: false - '@x-oasis/to-string@0.1.35': {} + /@x-oasis/to-string@0.1.35: + resolution: {integrity: sha512-v6pNsaZ7+UGz995stUEe7YrDRbVIAUcybD70NePXaZiEqhe0TErTWFQ55K8I9ii3UAGfxP4/7twT+1iSacaxNw==} + dev: false - '@x-oasis/unique-array-object@0.1.35': {} + /@x-oasis/unique-array-object@0.1.35: + resolution: {integrity: sha512-MxSexUwtrLDwDPF/qHrtNmHoxtE61Kac1J4Me1l2uwiv6bgdII4ZFGCVClsxIFtry1+2x7kS+pRnRHP/k37gJw==} + dev: false - '@xtuc/ieee754@1.2.0': {} + /@xtuc/ieee754@1.2.0: + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + dev: true - '@xtuc/long@4.2.2': {} + /@xtuc/long@4.2.2: + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + dev: true - '@yarnpkg/lockfile@1.1.0': {} + /@yarnpkg/lockfile@1.1.0: + resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} + dev: true - '@yarnpkg/parsers@3.0.0-rc.46': + /@yarnpkg/parsers@3.0.0-rc.46: + resolution: {integrity: sha512-aiATs7pSutzda/rq8fnuPwTglyVwjM22bNnK2ZgjrpAjQHSSl3lztd2f9evst1W/qnC58DRz7T7QndUDumAR4Q==} + engines: {node: '>=14.15.0'} dependencies: js-yaml: 3.14.1 - tslib: 2.7.0 + tslib: 2.8.1 + dev: true - '@zkochan/js-yaml@0.0.7': + /@zkochan/js-yaml@0.0.7: + resolution: {integrity: sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==} + hasBin: true dependencies: argparse: 2.0.1 + dev: true - JSONStream@1.3.5: + /JSONStream@1.3.5: + resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} + hasBin: true dependencies: jsonparse: 1.3.1 through: 2.3.8 + dev: true - abab@2.0.6: {} + /abab@2.0.6: + resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} + deprecated: Use your platform's native atob() and btoa() methods instead + dev: true - abort-controller@3.0.0: + /abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} dependencies: event-target-shim: 5.0.1 - accepts@1.3.8: + /accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} dependencies: mime-types: 2.1.35 negotiator: 0.6.3 - acorn-globals@4.3.4: + /acorn-globals@4.3.4: + resolution: {integrity: sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==} dependencies: acorn: 6.4.2 acorn-walk: 6.2.0 + dev: true - acorn-globals@7.0.1: + /acorn-globals@7.0.1: + resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} dependencies: - acorn: 8.12.1 + acorn: 8.14.0 acorn-walk: 8.3.4 + dev: true - acorn-import-attributes@1.9.5(acorn@8.12.1): - dependencies: - acorn: 8.12.1 - - acorn-jsx@5.3.2(acorn@7.4.1): + /acorn-jsx@5.3.2(acorn@7.4.1): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: acorn: 7.4.1 + dev: true - acorn-jsx@5.3.2(acorn@8.12.1): + /acorn-jsx@5.3.2(acorn@8.14.0): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.12.1 - - acorn-walk@6.2.0: {} + acorn: 8.14.0 + dev: true - acorn-walk@7.2.0: {} + /acorn-walk@6.2.0: + resolution: {integrity: sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==} + engines: {node: '>=0.4.0'} + dev: true - acorn-walk@8.3.4: + /acorn-walk@8.3.4: + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} + engines: {node: '>=0.4.0'} dependencies: - acorn: 8.12.1 + acorn: 8.14.0 + dev: true - acorn@6.4.2: {} + /acorn@6.4.2: + resolution: {integrity: sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true - acorn@7.4.1: {} + /acorn@7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true - acorn@8.12.1: {} + /acorn@8.14.0: + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} + engines: {node: '>=0.4.0'} + hasBin: true - address@1.2.2: {} + /address@1.2.2: + resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} + engines: {node: '>= 10.0.0'} + dev: true - adm-zip@0.5.16: {} + /adm-zip@0.5.16: + resolution: {integrity: sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==} + engines: {node: '>=12.0'} + dev: true - agent-base@6.0.2: + /agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} dependencies: - debug: 4.3.7 + debug: 4.4.0 transitivePeerDependencies: - supports-color + dev: true - aggregate-error@3.1.0: + /aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} dependencies: clean-stack: 2.2.0 indent-string: 4.0.0 + dev: true + + /ajv-formats@2.1.1(ajv@8.17.1): + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + dependencies: + ajv: 8.17.1 + dev: true - ajv-keywords@3.5.2(ajv@6.12.6): + /ajv-keywords@3.5.2(ajv@6.12.6): + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 dependencies: ajv: 6.12.6 + dev: true + + /ajv-keywords@5.1.0(ajv@8.17.1): + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + peerDependencies: + ajv: ^8.8.2 + dependencies: + ajv: 8.17.1 + fast-deep-equal: 3.1.3 + dev: true - ajv@6.12.6: + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 + dev: true - ajv@8.17.1: + /ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} dependencies: fast-deep-equal: 3.1.3 - fast-uri: 3.0.2 + fast-uri: 3.0.3 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 + dev: true - anser@1.4.10: {} + /anser@1.4.10: + resolution: {integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==} - ansi-colors@4.1.3: {} + /ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + dev: true - ansi-escapes@3.2.0: {} + /ansi-escapes@3.2.0: + resolution: {integrity: sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==} + engines: {node: '>=4'} + dev: true - ansi-escapes@4.3.2: + /ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} dependencies: type-fest: 0.21.3 + dev: true - ansi-escapes@5.0.0: + /ansi-escapes@5.0.0: + resolution: {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==} + engines: {node: '>=12'} dependencies: type-fest: 1.4.0 + dev: true - ansi-escapes@6.2.1: {} + /ansi-escapes@6.2.1: + resolution: {integrity: sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==} + engines: {node: '>=14.16'} + dev: true - ansi-fragments@0.2.1: + /ansi-fragments@0.2.1: + resolution: {integrity: sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==} dependencies: colorette: 1.4.0 slice-ansi: 2.1.0 strip-ansi: 5.2.0 - ansi-regex@3.0.1: {} + /ansi-regex@3.0.1: + resolution: {integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==} + engines: {node: '>=4'} + dev: true - ansi-regex@4.1.1: {} + /ansi-regex@4.1.1: + resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} + engines: {node: '>=6'} - ansi-regex@5.0.1: {} + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} - ansi-regex@6.1.0: {} + /ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + dev: true - ansi-styles@3.2.1: + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} dependencies: color-convert: 1.9.3 - ansi-styles@4.3.0: + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} dependencies: color-convert: 2.0.1 - ansi-styles@5.2.0: {} + /ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} - ansi-styles@6.2.1: {} + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: true - any-promise@1.3.0: {} + /any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + dev: true - anymatch@2.0.0: + /anymatch@2.0.0: + resolution: {integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==} dependencies: micromatch: 3.1.10 normalize-path: 2.1.1 transitivePeerDependencies: - supports-color + dev: true - anymatch@3.1.3: + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 - apache-md5@1.1.8: {} + /apache-md5@1.1.8: + resolution: {integrity: sha512-FCAJojipPn0bXjuEpjOOOMN8FZDkxfWWp4JGN9mifU2IhxvKyXZYqpzPHdnTSUpmPDy+tsslB6Z1g+Vg6nVbYA==} + engines: {node: '>=8'} + dev: true - app-root-dir@1.0.2: {} + /app-root-dir@1.0.2: + resolution: {integrity: sha512-jlpIfsOoNoafl92Sz//64uQHGSyMrD2vYG5d8o2a4qGvyNCvXur7bzIsWtAC/6flI2RYAp3kv8rsfBtaLm7w0g==} + dev: true - appdirsjs@1.2.7: {} + /appdirsjs@1.2.7: + resolution: {integrity: sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==} - append-transform@2.0.0: + /append-transform@2.0.0: + resolution: {integrity: sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==} + engines: {node: '>=8'} dependencies: default-require-extensions: 3.0.1 + dev: true + + /arch@2.2.0: + resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} + dev: true - archy@1.0.0: {} + /archy@1.0.0: + resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} + dev: true - arg@4.1.3: {} + /arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + dev: true - argparse@1.0.10: + /argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: sprintf-js: 1.0.3 - argparse@2.0.1: {} + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true - aria-query@5.1.3: + /aria-query@5.1.3: + resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} dependencies: deep-equal: 2.2.3 + dev: true - aria-query@5.3.0: + /aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} dependencies: dequal: 2.0.3 + dev: true - aria-query@5.3.2: {} + /aria-query@5.3.2: + resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} + engines: {node: '>= 0.4'} + dev: true - arr-diff@4.0.0: {} + /arr-diff@4.0.0: + resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==} + engines: {node: '>=0.10.0'} + dev: true - arr-flatten@1.1.0: {} + /arr-flatten@1.1.0: + resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} + engines: {node: '>=0.10.0'} + dev: true - arr-union@3.1.0: {} + /arr-union@3.1.0: + resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} + engines: {node: '>=0.10.0'} + dev: true - array-buffer-byte-length@1.0.1: + /array-buffer-byte-length@1.0.2: + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 - is-array-buffer: 3.0.4 + call-bound: 1.0.3 + is-array-buffer: 3.0.5 + dev: true - array-equal@1.0.2: {} + /array-equal@1.0.2: + resolution: {integrity: sha512-gUHx76KtnhEgB3HOuFYiCm3FIdEs6ocM2asHvNTkfu/Y09qQVrrVVaOKENmS2KkSaGoxgXNqC+ZVtR/n0MOkSA==} + dev: true - array-flatten@1.1.1: {} + /array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + dev: true - array-includes@3.1.8: + /array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.7 es-object-atoms: 1.0.0 - get-intrinsic: 1.2.4 - is-string: 1.0.7 + get-intrinsic: 1.2.6 + is-string: 1.1.1 + dev: true - array-union@2.1.0: {} + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: true - array-unique@0.3.2: {} + /array-unique@0.3.2: + resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} + engines: {node: '>=0.10.0'} + dev: true - array.prototype.findlast@1.2.5: + /array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.7 es-errors: 1.3.0 es-object-atoms: 1.0.0 es-shim-unscopables: 1.0.2 + dev: true - array.prototype.findlastindex@1.2.5: + /array.prototype.findlastindex@1.2.5: + resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.7 es-errors: 1.3.0 es-object-atoms: 1.0.0 es-shim-unscopables: 1.0.2 + dev: true - array.prototype.flat@1.3.2: + /array.prototype.flat@1.3.3: + resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.7 es-shim-unscopables: 1.0.2 + dev: true - array.prototype.flatmap@1.3.2: + /array.prototype.flatmap@1.3.3: + resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.7 es-shim-unscopables: 1.0.2 + dev: true - array.prototype.tosorted@1.1.4: + /array.prototype.tosorted@1.1.4: + resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.7 es-errors: 1.3.0 es-shim-unscopables: 1.0.2 + dev: true - arraybuffer.prototype.slice@1.0.3: + /arraybuffer.prototype.slice@1.0.4: + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} + engines: {node: '>= 0.4'} dependencies: - array-buffer-byte-length: 1.0.1 - call-bind: 1.0.7 + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.7 es-errors: 1.3.0 - get-intrinsic: 1.2.4 - is-array-buffer: 3.0.4 - is-shared-array-buffer: 1.0.3 + get-intrinsic: 1.2.6 + is-array-buffer: 3.0.5 + dev: true - asap@2.0.6: {} + /asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - asn1@0.2.6: + /asn1@0.2.6: + resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} dependencies: safer-buffer: 2.1.2 + dev: true - assert-plus@1.0.0: {} - - assertion-error@1.1.0: {} + /assert-plus@1.0.0: + resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} + engines: {node: '>=0.8'} + dev: true - assertion-error@2.0.1: {} + /assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + dev: true - assign-symbols@1.0.0: {} + /assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + dev: true - ast-types-flow@0.0.7: {} + /assign-symbols@1.0.0: + resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} + engines: {node: '>=0.10.0'} + dev: true - ast-types-flow@0.0.8: {} + /ast-types-flow@0.0.7: + resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} + dev: true - ast-types@0.15.2: + /ast-types@0.15.2: + resolution: {integrity: sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==} + engines: {node: '>=4'} dependencies: - tslib: 2.7.0 + tslib: 2.8.1 - ast-types@0.16.1: + /ast-types@0.16.1: + resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} + engines: {node: '>=4'} dependencies: - tslib: 2.7.0 + tslib: 2.8.1 - astral-regex@1.0.0: {} + /astral-regex@1.0.0: + resolution: {integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==} + engines: {node: '>=4'} - async-limiter@1.0.1: {} + /async-limiter@1.0.1: + resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} - async@2.6.4: + /async@2.6.4: + resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} dependencies: lodash: 4.17.21 + dev: true - async@3.2.4: {} - - async@3.2.5: {} + /async@3.2.4: + resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} + dev: true - async@3.2.6: {} + /async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + dev: true - asynckit@0.4.0: {} + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: true - asyncro@3.0.0: {} + /asyncro@3.0.0: + resolution: {integrity: sha512-nEnWYfrBmA3taTiuiOoZYmgJ/CNrSoQLeLs29SeLcPu60yaw/mHDBHV0iOZ051fTvsTHxpCY+gXibqT9wbQYfg==} + dev: true - at-least-node@1.0.0: {} + /at-least-node@1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + dev: true - atob@2.1.2: {} + /atob@2.1.2: + resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} + engines: {node: '>= 4.5.0'} + hasBin: true + dev: true - atomic-sleep@1.0.0: {} + /atomic-sleep@1.0.0: + resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} + engines: {node: '>=8.0.0'} + dev: true - autoprefixer@10.4.20(postcss@8.4.47): + /autoprefixer@10.4.20(postcss@8.4.49): + resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 dependencies: - browserslist: 4.24.0 - caniuse-lite: 1.0.30001663 + browserslist: 4.24.3 + caniuse-lite: 1.0.30001690 fraction.js: 4.3.7 normalize-range: 0.1.2 - picocolors: 1.1.0 - postcss: 8.4.47 + picocolors: 1.1.1 + postcss: 8.4.49 postcss-value-parser: 4.2.0 + dev: true - available-typed-arrays@1.0.7: + /available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} dependencies: possible-typed-array-names: 1.0.0 - aws-sign2@0.7.0: {} + /aws-sign2@0.7.0: + resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} + dev: true - aws4@1.13.2: {} + /aws4@1.13.2: + resolution: {integrity: sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==} + dev: true - axe-core@4.10.0: {} + /axe-core@4.10.2: + resolution: {integrity: sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w==} + engines: {node: '>=4'} + dev: true - axios@0.21.4: + /axios@0.21.4: + resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} dependencies: - follow-redirects: 1.15.9(debug@4.3.7) + follow-redirects: 1.15.9(debug@4.4.0) transitivePeerDependencies: - debug + dev: true - axios@1.7.7: + /axios@1.7.9: + resolution: {integrity: sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==} dependencies: - follow-redirects: 1.15.9(debug@4.3.7) - form-data: 4.0.0 + follow-redirects: 1.15.9(debug@4.4.0) + form-data: 4.0.1 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug + dev: true - axobject-query@3.2.4: {} - - axobject-query@4.1.0: {} + /axobject-query@3.2.4: + resolution: {integrity: sha512-aPTElBrbifBU1krmZxGZOlBkslORe7Ll7+BDnI50Wy4LgOt69luMgevkDfTq1O/ZgprooPCtWpjCwKSZw/iZ4A==} + engines: {node: '>= 0.4'} + dev: true - b4a@1.6.7: {} + /b4a@1.6.7: + resolution: {integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==} + dev: true - babel-core@7.0.0-bridge.0(@babel/core@7.25.2): + /babel-core@7.0.0-bridge.0(@babel/core@7.26.0): + resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 - babel-eslint@10.1.0(eslint@6.8.0): + /babel-eslint@10.1.0(eslint@6.8.0): + resolution: {integrity: sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==} + engines: {node: '>=6'} + deprecated: babel-eslint is now @babel/eslint-parser. This package will no longer receive updates. + peerDependencies: + eslint: '>= 4.12.1' dependencies: - '@babel/code-frame': 7.24.7 - '@babel/parser': 7.25.6 - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.26.3 + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.3 eslint: 6.8.0 eslint-visitor-keys: 1.3.0 - resolve: 1.22.8 + resolve: 1.22.10 transitivePeerDependencies: - supports-color + dev: true - babel-jest@25.5.1(@babel/core@7.25.2): + /babel-jest@25.5.1(@babel/core@7.26.0): + resolution: {integrity: sha512-9dA9+GmMjIzgPnYtkhBg73gOo/RHqPmLruP3BaGL4KEX3Dwz6pI8auSN8G8+iuEG90+GSswyKvslN+JYSaacaQ==} + engines: {node: '>= 8.3'} + peerDependencies: + '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 '@jest/transform': 25.5.1 '@jest/types': 25.5.0 '@types/babel__core': 7.20.5 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 25.5.0(@babel/core@7.25.2) + babel-preset-jest: 25.5.0(@babel/core@7.26.0) chalk: 3.0.0 graceful-fs: 4.2.11 slash: 3.0.0 transitivePeerDependencies: - supports-color + dev: true - babel-jest@28.1.3(@babel/core@7.25.2): + /babel-jest@28.1.3(@babel/core@7.26.0): + resolution: {integrity: sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + peerDependencies: + '@babel/core': ^7.8.0 dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 '@jest/transform': 28.1.3 '@types/babel__core': 7.20.5 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 28.1.3(@babel/core@7.25.2) + babel-preset-jest: 28.1.3(@babel/core@7.26.0) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 transitivePeerDependencies: - supports-color + dev: true - babel-jest@29.7.0(@babel/core@7.25.2): + /babel-jest@29.7.0(@babel/core@7.26.0): + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 '@jest/transform': 29.7.0 '@types/babel__core': 7.20.5 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3(@babel/core@7.25.2) + babel-preset-jest: 29.6.3(@babel/core@7.26.0) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 transitivePeerDependencies: - supports-color + dev: true - babel-plugin-annotate-pure-calls@0.4.0(@babel/core@7.25.2): + /babel-plugin-annotate-pure-calls@0.4.0(@babel/core@7.26.0): + resolution: {integrity: sha512-oi4M/PWUJOU9ZyRGoPTfPMqdyMp06jbJAomd3RcyYuzUtBOddv98BqLm96Lucpi2QFoQHkdGQt0ACvw7VzVEQA==} + peerDependencies: + '@babel/core': ^6.0.0-0 || 7.x dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 + dev: true - babel-plugin-const-enum@1.2.0(@babel/core@7.25.2): + /babel-plugin-const-enum@1.2.0(@babel/core@7.26.0): + resolution: {integrity: sha512-o1m/6iyyFnp9MRsK1dHF3bneqyf3AlM2q3A/YbgQr2pCat6B6XJVDv2TXqzfY2RYUi4mak6WAksSBPlyYGx9dg==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-typescript': 7.25.4(@babel/core@7.25.2) - '@babel/traverse': 7.25.6 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0) + '@babel/traverse': 7.26.4 transitivePeerDependencies: - supports-color + dev: true - babel-plugin-dev-expression@0.2.3(@babel/core@7.25.2): + /babel-plugin-dev-expression@0.2.3(@babel/core@7.26.0): + resolution: {integrity: sha512-rP5LK9QQTzCW61nVVzw88En1oK8t8gTsIeC6E61oelxNsU842yMjF0G1MxhvUpCkxCEIj7sE8/e5ieTheT//uw==} + peerDependencies: + '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 + dev: true - babel-plugin-istanbul@6.1.1: + /babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} dependencies: - '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-plugin-utils': 7.25.9 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-instrument: 5.2.1 test-exclude: 6.0.0 transitivePeerDependencies: - supports-color + dev: true - babel-plugin-jest-hoist@25.5.0: + /babel-plugin-jest-hoist@25.5.0: + resolution: {integrity: sha512-u+/W+WAjMlvoocYGTwthAiQSxDcJAyHpQ6oWlHdFZaaN+Rlk8Q7iiwDPg2lN/FyJtAYnKjFxbn7xus4HCFkg5g==} + engines: {node: '>= 8.3'} dependencies: - '@babel/template': 7.25.7 - '@babel/types': 7.25.8 + '@babel/template': 7.25.9 + '@babel/types': 7.26.3 '@types/babel__traverse': 7.20.6 + dev: true - babel-plugin-jest-hoist@28.1.3: + /babel-plugin-jest-hoist@28.1.3: + resolution: {integrity: sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@babel/template': 7.25.7 - '@babel/types': 7.25.8 + '@babel/template': 7.25.9 + '@babel/types': 7.26.3 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.6 + dev: true - babel-plugin-jest-hoist@29.6.3: + /babel-plugin-jest-hoist@29.6.3: + resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/template': 7.25.7 - '@babel/types': 7.25.8 + '@babel/template': 7.25.9 + '@babel/types': 7.26.3 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.6 + dev: true - babel-plugin-macros@2.8.0: + /babel-plugin-macros@2.8.0: + resolution: {integrity: sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==} dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 cosmiconfig: 6.0.0 - resolve: 1.22.8 + resolve: 1.22.10 + dev: true - babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.25.2): + /babel-plugin-polyfill-corejs2@0.4.12(@babel/core@7.26.0): + resolution: {integrity: sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/compat-data': 7.25.8 - '@babel/core': 7.25.2 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) + '@babel/compat-data': 7.26.3 + '@babel/core': 7.26.0 + '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.0) semver: 6.3.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.10.6(@babel/core@7.25.2): + /babel-plugin-polyfill-corejs3@0.10.6(@babel/core@7.26.0): + resolution: {integrity: sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.25.2 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) - core-js-compat: 3.38.1 + '@babel/core': 7.26.0 + '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.0) + core-js-compat: 3.39.0 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.0.4(@babel/core@7.25.2): + /babel-plugin-polyfill-regenerator@0.0.4(@babel/core@7.26.0): + resolution: {integrity: sha512-+/uCzO9JTYVZVGCpZpVAQkgPGt2zkR0VYiZvJ4aVoCe4ccgpKvNQqcjzAgQzSsjK64Jhc5hvrCR3l0087BevkA==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.2 - '@babel/helper-define-polyfill-provider': 0.0.3(@babel/core@7.25.2) + '@babel/core': 7.26.0 + '@babel/helper-define-polyfill-provider': 0.0.3(@babel/core@7.26.0) transitivePeerDependencies: - supports-color + dev: true - babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.25.2): + /babel-plugin-polyfill-regenerator@0.6.3(@babel/core@7.26.0): + resolution: {integrity: sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.25.2 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) + '@babel/core': 7.26.0 + '@babel/helper-define-polyfill-provider': 0.6.3(@babel/core@7.26.0) transitivePeerDependencies: - supports-color - babel-plugin-transform-async-to-promises@0.8.18: {} + /babel-plugin-transform-async-to-promises@0.8.18: + resolution: {integrity: sha512-WpOrF76nUHijnNn10eBGOHZmXQC8JYRME9rOLxStOga7Av2VO53ehVFvVNImMksVtQuL2/7ZNxEgxnx7oo/3Hw==} + dev: true - babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.25.2): + /babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.26.0): + resolution: {integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==} dependencies: - '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-syntax-flow': 7.26.0(@babel/core@7.26.0) transitivePeerDependencies: - '@babel/core' - babel-plugin-transform-rename-import@2.3.0: {} + /babel-plugin-transform-rename-import@2.3.0: + resolution: {integrity: sha512-dPgJoT57XC0PqSnLgl2FwNvxFrWlspatX2dkk7yjKQj5HHGw071vAcOf+hqW8ClqcBDMvEbm6mevn5yHAD8mlQ==} + dev: true + + /babel-plugin-transform-typescript-metadata@0.3.2(@babel/core@7.26.0): + resolution: {integrity: sha512-mWEvCQTgXQf48yDqgN7CH50waTyYBeP2Lpqx4nNWab9sxEpdXVeKgfj1qYI2/TgUPQtNFZ85i3PemRtnXVYYJg==} + peerDependencies: + '@babel/core': ^7 + '@babel/traverse': ^7 + peerDependenciesMeta: + '@babel/traverse': + optional: true + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + dev: true - babel-plugin-transform-typescript-metadata@0.3.2(@babel/core@7.25.2)(@babel/traverse@7.25.7): + /babel-preset-current-node-syntax@0.1.4(@babel/core@7.26.0): + resolution: {integrity: sha512-5/INNCYhUGqw7VbVjT/hb3ucjgkVHKXY7lX3ZjlN4gm565VyFmJUrJ/h+h16ECVB38R/9SF6aACydpKMLZ/c9w==} + peerDependencies: + '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - optionalDependencies: - '@babel/traverse': 7.25.7 - - babel-preset-current-node-syntax@0.1.4(@babel/core@7.25.2): - dependencies: - '@babel/core': 7.25.2 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.25.2) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) - - babel-preset-current-node-syntax@1.1.0(@babel/core@7.25.2): - dependencies: - '@babel/core': 7.25.2 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.25.2) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.2) - '@babel/plugin-syntax-import-attributes': 7.25.6(@babel/core@7.25.2) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.2) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.25.2) - - babel-preset-jest@25.5.0(@babel/core@7.25.2): - dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.0) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.26.0) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.26.0) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.0) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.0) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.0) + dev: true + + /babel-preset-current-node-syntax@1.1.0(@babel/core@7.26.0): + resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.0) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.26.0) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.26.0) + '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.26.0) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.0) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.0) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.0) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.26.0) + dev: true + + /babel-preset-jest@25.5.0(@babel/core@7.26.0): + resolution: {integrity: sha512-8ZczygctQkBU+63DtSOKGh7tFL0CeCuz+1ieud9lJ1WPQ9O6A1a/r+LGn6Y705PA6whHQ3T1XuB/PmpfNYf8Fw==} + engines: {node: '>= 8.3'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.26.0 babel-plugin-jest-hoist: 25.5.0 - babel-preset-current-node-syntax: 0.1.4(@babel/core@7.25.2) + babel-preset-current-node-syntax: 0.1.4(@babel/core@7.26.0) + dev: true - babel-preset-jest@28.1.3(@babel/core@7.25.2): + /babel-preset-jest@28.1.3(@babel/core@7.26.0): + resolution: {integrity: sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + peerDependencies: + '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 babel-plugin-jest-hoist: 28.1.3 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.25.2) + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.0) + dev: true - babel-preset-jest@29.6.3(@babel/core@7.25.2): + /babel-preset-jest@29.6.3(@babel/core@7.26.0): + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.25.2) + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.0) + dev: true - balanced-match@1.0.2: {} + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - bare-events@2.5.0: + /bare-events@2.5.0: + resolution: {integrity: sha512-/E8dDe9dsbLyh2qrZ64PEPadOQ0F4gbl1sUJOrmph7xOiIxfY8vwab/4bFLh4Y88/Hk/ujKcrQKc+ps0mv873A==} + requiresBuild: true + dev: true optional: true - base64-js@1.5.1: {} + /base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - base@0.11.2: + /base@0.11.2: + resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} + engines: {node: '>=0.10.0'} dependencies: cache-base: 1.0.1 class-utils: 0.3.6 @@ -17218,36 +9532,82 @@ snapshots: isobject: 3.0.1 mixin-deep: 1.3.2 pascalcase: 0.1.1 + dev: true - basic-auth@2.0.1: + /basic-auth@2.0.1: + resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} + engines: {node: '>= 0.8'} dependencies: safe-buffer: 5.1.2 + dev: true - bcrypt-pbkdf@1.0.2: + /bcrypt-pbkdf@1.0.2: + resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} dependencies: tweetnacl: 0.14.5 + dev: true - bcryptjs@2.4.3: {} + /bcryptjs@2.4.3: + resolution: {integrity: sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==} + dev: true - better-opn@3.0.2: + /better-opn@3.0.2: + resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==} + engines: {node: '>=12.0.0'} dependencies: open: 8.4.2 - better-path-resolve@1.0.0: + /better-path-resolve@1.0.0: + resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} + engines: {node: '>=4'} dependencies: is-windows: 1.0.2 + dev: true + + /big.js@5.2.2: + resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} + dev: true - big.js@5.2.2: {} + /bin-check@4.1.0: + resolution: {integrity: sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA==} + engines: {node: '>=4'} + dependencies: + execa: 0.7.0 + executable: 4.1.1 + dev: true + + /bin-version-check@5.1.0: + resolution: {integrity: sha512-bYsvMqJ8yNGILLz1KP9zKLzQ6YpljV3ln1gqhuLkUtyfGi3qXKGuK2p+U4NAvjVFzDFiBBtOpCOSFNuYYEGZ5g==} + engines: {node: '>=12'} + dependencies: + bin-version: 6.0.0 + semver: 7.6.3 + semver-truncate: 3.0.0 + dev: true + + /bin-version@6.0.0: + resolution: {integrity: sha512-nk5wEsP4RiKjG+vF+uG8lFsEn4d7Y6FVDamzzftSunXOoOcOOkzcWdKVlGgFFwlUQCj63SgnUkLLGF8v7lufhw==} + engines: {node: '>=12'} + dependencies: + execa: 5.1.1 + find-versions: 5.1.0 + dev: true - binary-extensions@2.3.0: {} + /binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + dev: true - bl@4.1.0: + /bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} dependencies: buffer: 5.7.1 inherits: 2.0.4 readable-stream: 3.6.2 - body-parser@1.20.3: + /body-parser@1.20.3: + resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} dependencies: bytes: 3.1.2 content-type: 1.0.5 @@ -17263,19 +9623,27 @@ snapshots: unpipe: 1.0.0 transitivePeerDependencies: - supports-color + dev: true - boolbase@1.0.0: {} + /boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + dev: true - brace-expansion@1.1.11: + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - brace-expansion@2.0.1: + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} dependencies: balanced-match: 1.0.2 + dev: true - braces@2.3.2: + /braces@2.3.2: + resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} + engines: {node: '>=0.10.0'} dependencies: arr-flatten: 1.1.0 array-unique: 0.3.2 @@ -17289,68 +9657,108 @@ snapshots: to-regex: 3.0.2 transitivePeerDependencies: - supports-color + dev: true - braces@3.0.3: + /braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} dependencies: fill-range: 7.1.1 - browser-assert@1.2.1: {} + /browser-assert@1.2.1: + resolution: {integrity: sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==} - browser-process-hrtime@1.0.0: {} + /browser-process-hrtime@1.0.0: + resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} + dev: true - browser-resolve@1.11.3: + /browser-resolve@1.11.3: + resolution: {integrity: sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==} dependencies: resolve: 1.1.7 + dev: true - browserify-zlib@0.1.4: + /browserify-zlib@0.1.4: + resolution: {integrity: sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==} dependencies: pako: 0.2.9 + dev: true - browserslist@4.24.0: + /browserslist@4.24.3: + resolution: {integrity: sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true dependencies: - caniuse-lite: 1.0.30001663 - electron-to-chromium: 1.5.28 - node-releases: 2.0.18 - update-browserslist-db: 1.1.0(browserslist@4.24.0) + caniuse-lite: 1.0.30001690 + electron-to-chromium: 1.5.75 + node-releases: 2.0.19 + update-browserslist-db: 1.1.1(browserslist@4.24.3) - bs-logger@0.2.6: + /bs-logger@0.2.6: + resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} + engines: {node: '>= 6'} dependencies: fast-json-stable-stringify: 2.1.0 + dev: true - bser@2.1.1: + /bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} dependencies: node-int64: 0.4.0 - btoa@1.2.1: {} + /btoa@1.2.1: + resolution: {integrity: sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==} + engines: {node: '>= 0.4.0'} + hasBin: true + dev: true - buffer-equal-constant-time@1.0.1: {} + /buffer-equal-constant-time@1.0.1: + resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} + dev: true - buffer-from@1.1.2: {} + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - buffer@5.7.1: + /buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - buffer@6.0.3: + /buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} dependencies: base64-js: 1.5.1 ieee754: 1.2.1 + dev: true - builtin-modules@3.3.0: {} + /builtin-modules@3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + dev: true - bundle-require@4.2.1(esbuild@0.17.19): + /bundle-require@4.2.1(esbuild@0.17.19): + resolution: {integrity: sha512-7Q/6vkyYAwOmQNRw75x+4yRtZCZJXUDmHHlFdkiV0wgv/reNjtJwpu1jPJ0w2kbEpIM0uoKI3S4/f39dU7AjSA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + peerDependencies: + esbuild: '>=0.17' dependencies: esbuild: 0.17.19 load-tsconfig: 0.2.5 + dev: true - bytes@3.0.0: {} - - bytes@3.1.2: {} + /bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} - cac@6.7.14: {} + /cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + dev: true - cache-base@1.0.1: + /cache-base@1.0.1: + resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} + engines: {node: '>=0.10.0'} dependencies: collection-visit: 1.0.0 component-emitter: 1.3.1 @@ -17361,61 +9769,127 @@ snapshots: to-object-path: 0.3.0 union-value: 1.0.1 unset-value: 1.0.0 + dev: true - cache-content-type@1.0.1: + /cache-content-type@1.0.1: + resolution: {integrity: sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==} + engines: {node: '>= 6.0.0'} dependencies: mime-types: 2.1.35 ylru: 1.4.0 + dev: true + + /cacheable-lookup@5.0.4: + resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} + engines: {node: '>=10.6.0'} + dev: true + + /cacheable-request@7.0.4: + resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==} + engines: {node: '>=8'} + dependencies: + clone-response: 1.0.3 + get-stream: 5.2.0 + http-cache-semantics: 4.1.1 + keyv: 4.5.4 + lowercase-keys: 2.0.0 + normalize-url: 6.1.0 + responselike: 2.0.1 + dev: true - caching-transform@4.0.0: + /caching-transform@4.0.0: + resolution: {integrity: sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==} + engines: {node: '>=8'} dependencies: hasha: 5.2.2 make-dir: 3.1.0 package-hash: 4.0.0 write-file-atomic: 3.0.3 + dev: true - call-bind@1.0.7: + /call-bind-apply-helpers@1.0.1: + resolution: {integrity: sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==} + engines: {node: '>= 0.4'} dependencies: - es-define-property: 1.0.0 es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.4 + + /call-bind@1.0.8: + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + engines: {node: '>= 0.4'} + dependencies: + call-bind-apply-helpers: 1.0.1 + es-define-property: 1.0.1 + get-intrinsic: 1.2.6 set-function-length: 1.2.2 - caller-callsite@2.0.0: + /call-bound@1.0.3: + resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind-apply-helpers: 1.0.1 + get-intrinsic: 1.2.6 + + /caller-callsite@2.0.0: + resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} + engines: {node: '>=4'} dependencies: callsites: 2.0.0 - caller-path@2.0.0: + /caller-path@2.0.0: + resolution: {integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==} + engines: {node: '>=4'} dependencies: caller-callsite: 2.0.0 - callsites@2.0.0: {} + /callsites@2.0.0: + resolution: {integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==} + engines: {node: '>=4'} - callsites@3.1.0: {} + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true - camelcase@5.3.1: {} + /camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} - camelcase@6.3.0: {} + /camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} - can-bind-to-host@1.1.2: {} + /can-bind-to-host@1.1.2: + resolution: {integrity: sha512-CqsgmaqiyFRNtP17Ihqa/uHbZxRirntNVNl/kJz31DLKuNRfzvzionkLoUSkElQ6Cz+cpXKA3mhHq4tjbieujA==} + hasBin: true + dev: true - caniuse-api@3.0.0: + /caniuse-api@3.0.0: + resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} dependencies: - browserslist: 4.24.0 - caniuse-lite: 1.0.30001663 + browserslist: 4.24.3 + caniuse-lite: 1.0.30001690 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 + dev: true - caniuse-lite@1.0.30001663: {} + /caniuse-lite@1.0.30001690: + resolution: {integrity: sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==} - capture-exit@2.0.0: + /capture-exit@2.0.0: + resolution: {integrity: sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==} + engines: {node: 6.* || 8.* || >= 10.*} dependencies: rsvp: 4.8.5 + dev: true - caseless@0.12.0: {} + /caseless@0.12.0: + resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} + dev: true - chai@4.5.0: + /chai@4.5.0: + resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} + engines: {node: '>=4'} dependencies: assertion-error: 1.1.0 check-error: 1.0.3 @@ -17424,46 +9898,81 @@ snapshots: loupe: 2.3.7 pathval: 1.1.1 type-detect: 4.1.0 + dev: true - chai@5.1.1: + /chai@5.1.2: + resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} + engines: {node: '>=12'} dependencies: assertion-error: 2.0.1 check-error: 2.1.1 deep-eql: 5.0.2 - loupe: 3.1.1 + loupe: 3.1.2 pathval: 2.0.0 + dev: true - chalk@2.4.2: + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} dependencies: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 + dev: true - chalk@3.0.0: + /chalk@3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 + dev: true - chalk@4.1.2: + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - chalk@5.3.0: {} + /chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + dev: true + + /chalk@5.4.0: + resolution: {integrity: sha512-ZkD35Mx92acjB2yNJgziGqT9oKHEOxjTBTDRpOsRWtdecL/0jM3z5kM/CTzHWvHIen1GvkM85p6TuFfDGfc8/Q==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + dev: true - char-regex@1.0.2: {} + /char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + dev: true - char-regex@2.0.1: {} + /char-regex@2.0.2: + resolution: {integrity: sha512-cbGOjAptfM2LVmWhwRFHEKTPkLwNddVmuqYZQt895yXwAsWsXObCG+YN4DGQ/JBtT4GP1a1lPPdio2z413LmTg==} + engines: {node: '>=12.20'} + dev: true - chardet@0.7.0: {} + /chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + dev: true - check-error@1.0.3: + /check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} dependencies: get-func-name: 2.0.2 + dev: true - check-error@2.1.1: {} + /check-error@2.1.1: + resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} + engines: {node: '>= 16'} + dev: true - chokidar@3.6.0: + /chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} dependencies: anymatch: 3.1.3 braces: 3.0.3 @@ -17474,8 +9983,12 @@ snapshots: readdirp: 3.6.0 optionalDependencies: fsevents: 2.3.3 + dev: true - chrome-launcher@0.15.2: + /chrome-launcher@0.15.2: + resolution: {integrity: sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==} + engines: {node: '>=12.13.0'} + hasBin: true dependencies: '@types/node': 18.16.9 escape-string-regexp: 4.0.0 @@ -17484,157 +9997,275 @@ snapshots: transitivePeerDependencies: - supports-color - chrome-trace-event@1.0.4: {} + /chrome-trace-event@1.0.4: + resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} + engines: {node: '>=6.0'} + dev: true - ci-info@2.0.0: {} + /ci-info@2.0.0: + resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} - ci-info@3.9.0: {} + /ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} - cjs-module-lexer@1.4.1: {} + /cjs-module-lexer@1.4.1: + resolution: {integrity: sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==} + dev: true - class-utils@0.3.6: + /class-utils@0.3.6: + resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} + engines: {node: '>=0.10.0'} dependencies: arr-union: 3.1.0 define-property: 0.2.5 isobject: 3.0.1 static-extend: 0.1.2 + dev: true - clean-stack@2.2.0: {} + /clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + dev: true - cli-cursor@2.1.0: + /cli-cursor@2.1.0: + resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==} + engines: {node: '>=4'} dependencies: restore-cursor: 2.0.0 + dev: true - cli-cursor@3.1.0: + /cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} dependencies: restore-cursor: 3.1.0 - cli-cursor@4.0.0: + /cli-cursor@4.0.0: + resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: restore-cursor: 4.0.0 + dev: true - cli-spinners@1.3.1: {} + /cli-spinners@1.3.1: + resolution: {integrity: sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==} + engines: {node: '>=4'} + dev: true - cli-spinners@2.6.1: {} + /cli-spinners@2.6.1: + resolution: {integrity: sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==} + engines: {node: '>=6'} + dev: true - cli-spinners@2.9.2: {} + /cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} - cli-truncate@3.1.0: + /cli-truncate@3.1.0: + resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: slice-ansi: 5.0.0 string-width: 5.1.2 + dev: true - cli-width@3.0.0: {} + /cli-width@3.0.0: + resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} + engines: {node: '>= 10'} + dev: true - clipanion@4.0.0-rc.3(typanion@3.14.0): + /clipanion@4.0.0-rc.4(typanion@3.14.0): + resolution: {integrity: sha512-CXkMQxU6s9GklO/1f714dkKBMu1lopS1WFF0B8o4AxPykR1hpozxSiUZ5ZUeBjfPgCWqbcNOtZVFhB8Lkfp1+Q==} + peerDependencies: + typanion: '*' dependencies: typanion: 3.14.0 + dev: true - cliui@6.0.0: + /cliui@6.0.0: + resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 6.2.0 - cliui@8.0.1: + /cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - clone-deep@4.0.1: + /clone-deep@4.0.1: + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} dependencies: is-plain-object: 2.0.4 kind-of: 6.0.3 shallow-clone: 3.0.1 - clone@1.0.4: {} + /clone-response@1.0.3: + resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} + dependencies: + mimic-response: 1.0.1 + dev: true + + /clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} - co@4.6.0: {} + /co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + dev: true - collect-v8-coverage@1.0.2: {} + /collect-v8-coverage@1.0.2: + resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} + dev: true - collection-visit@1.0.0: + /collection-visit@1.0.0: + resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} + engines: {node: '>=0.10.0'} dependencies: map-visit: 1.0.0 object-visit: 1.0.1 + dev: true - color-convert@1.9.3: + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 - color-convert@2.0.1: + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 - color-name@1.1.3: {} + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - color-name@1.1.4: {} + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - colord@2.9.3: {} + /colord@2.9.3: + resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} + dev: true - colorette@1.4.0: {} + /colorette@1.4.0: + resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} - colorette@2.0.20: {} + /colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + dev: true - columnify@1.6.0: + /columnify@1.6.0: + resolution: {integrity: sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==} + engines: {node: '>=8.0.0'} dependencies: strip-ansi: 6.0.1 wcwidth: 1.0.1 + dev: true - combined-stream@1.0.8: + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} dependencies: delayed-stream: 1.0.0 + dev: true + + /command-exists@1.2.9: + resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} - command-exists@1.2.9: {} + /commander@11.0.0: + resolution: {integrity: sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==} + engines: {node: '>=16'} + dev: true - commander@11.0.0: {} + /commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - commander@2.20.3: {} + /commander@3.0.2: + resolution: {integrity: sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==} + dev: true - commander@3.0.2: {} + /commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + dev: true - commander@4.1.1: {} + /commander@5.1.0: + resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} + engines: {node: '>= 6'} + dev: true - commander@5.1.0: {} + /commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + dev: true - commander@7.2.0: {} + /commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + dev: true - commander@9.5.0: {} + /commander@9.5.0: + resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} + engines: {node: ^12.20.0 || >=14} - commondir@1.0.1: {} + /commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - component-emitter@1.3.1: {} + /component-emitter@1.3.1: + resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==} + dev: true - compressible@2.0.18: + /compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} dependencies: mime-db: 1.53.0 - compression@1.7.4: + /compression@1.7.5: + resolution: {integrity: sha512-bQJ0YRck5ak3LgtnpKkiabX5pNF7tMUh1BSy2ZBOTh0Dim0BUu6aPPwByIns6/A5Prh8PufSPerMDUklpzes2Q==} + engines: {node: '>= 0.8.0'} dependencies: - accepts: 1.3.8 - bytes: 3.0.0 + bytes: 3.1.2 compressible: 2.0.18 debug: 2.6.9 + negotiator: 0.6.4 on-headers: 1.0.2 - safe-buffer: 5.1.2 + safe-buffer: 5.2.1 vary: 1.1.2 transitivePeerDependencies: - supports-color - computeds@0.0.1: {} + /computeds@0.0.1: + resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==} + dev: true - concat-map@0.0.1: {} + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - concat-with-sourcemaps@1.1.0: + /concat-with-sourcemaps@1.1.0: + resolution: {integrity: sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==} dependencies: source-map: 0.6.1 + dev: true - confbox@0.1.7: {} + /confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + dev: true - confusing-browser-globals@1.0.11: {} + /confusing-browser-globals@1.0.11: + resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} + dev: true - connect@3.7.0: + /connect@3.7.0: + resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} + engines: {node: '>= 0.10.0'} dependencies: debug: 2.6.9 finalhandler: 1.1.2 @@ -17643,75 +10274,128 @@ snapshots: transitivePeerDependencies: - supports-color - content-disposition@0.5.4: + /content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} dependencies: safe-buffer: 5.2.1 + dev: true + + /content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + dev: true - content-type@1.0.5: {} + /convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + dev: true - convert-source-map@1.9.0: {} + /convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - convert-source-map@2.0.0: {} + /cookie-signature@1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + dev: true - cookie-signature@1.0.6: {} + /cookie@0.6.0: + resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} + engines: {node: '>= 0.6'} + dev: true - cookie@0.6.0: {} + /cookie@0.7.1: + resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} + engines: {node: '>= 0.6'} + dev: true - cookies@0.9.1: + /cookies@0.9.1: + resolution: {integrity: sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw==} + engines: {node: '>= 0.8'} dependencies: depd: 2.0.0 keygrip: 1.1.0 + dev: true - copy-descriptor@0.1.1: {} + /copy-descriptor@0.1.1: + resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} + engines: {node: '>=0.10.0'} + dev: true - core-js-compat@3.38.1: + /core-js-compat@3.39.0: + resolution: {integrity: sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw==} dependencies: - browserslist: 4.24.0 + browserslist: 4.24.3 - core-js@3.37.1: {} + /core-js@3.37.1: + resolution: {integrity: sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw==} + requiresBuild: true + dev: true - core-util-is@1.0.2: {} + /core-util-is@1.0.2: + resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} + dev: true - core-util-is@1.0.3: {} + /core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - cors@2.8.5: + /cors@2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} dependencies: object-assign: 4.1.1 vary: 1.1.2 + dev: true - corser@2.0.1: {} + /corser@2.0.1: + resolution: {integrity: sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==} + engines: {node: '>= 0.4.0'} + dev: true - cosmiconfig@5.2.1: + /cosmiconfig@5.2.1: + resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==} + engines: {node: '>=4'} dependencies: import-fresh: 2.0.0 is-directory: 0.3.1 js-yaml: 3.14.1 parse-json: 4.0.0 - cosmiconfig@6.0.0: + /cosmiconfig@6.0.0: + resolution: {integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==} + engines: {node: '>=8'} dependencies: '@types/parse-json': 4.0.2 import-fresh: 3.3.0 parse-json: 5.2.0 path-type: 4.0.0 yaml: 1.10.2 + dev: true - cosmiconfig@8.3.6(typescript@5.5.4): + /cosmiconfig@8.3.6(typescript@5.5.4): + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true dependencies: import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 - optionalDependencies: typescript: 5.5.4 + dev: true - create-jest@29.7.0(@types/node@18.16.9)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4)): + /create-jest@29.7.0(@types/node@18.16.9)(ts-node@10.9.1): + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@18.16.9)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4)) + jest-config: 29.7.0(@types/node@18.16.9)(ts-node@10.9.1) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -17719,292 +10403,505 @@ snapshots: - babel-plugin-macros - supports-color - ts-node + dev: true - create-require@1.1.1: {} + /create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + dev: true - cron-parser@4.9.0: + /cron-parser@4.9.0: + resolution: {integrity: sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==} + engines: {node: '>=12.0.0'} dependencies: luxon: 3.5.0 + dev: true - cross-spawn@5.1.0: + /cross-spawn@5.1.0: + resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} dependencies: lru-cache: 4.1.5 shebang-command: 1.2.0 which: 1.3.1 + dev: true - cross-spawn@6.0.5: + /cross-spawn@6.0.6: + resolution: {integrity: sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==} + engines: {node: '>=4.8'} dependencies: nice-try: 1.0.5 path-key: 2.0.1 semver: 5.7.2 shebang-command: 1.2.0 which: 1.3.1 + dev: true - cross-spawn@7.0.3: + /cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 - crypto-random-string@2.0.0: {} + /crypto-random-string@2.0.0: + resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} + engines: {node: '>=8'} + dev: true - css-declaration-sorter@6.4.1(postcss@8.4.47): + /css-declaration-sorter@6.4.1(postcss@8.4.49): + resolution: {integrity: sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==} + engines: {node: ^10 || ^12 || >=14} + peerDependencies: + postcss: ^8.0.9 dependencies: - postcss: 8.4.47 + postcss: 8.4.49 + dev: true - css-select@4.3.0: + /css-select@4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} dependencies: boolbase: 1.0.0 css-what: 6.1.0 domhandler: 4.3.1 domutils: 2.8.0 nth-check: 2.1.1 + dev: true - css-select@5.1.0: + /css-select@5.1.0: + resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} dependencies: boolbase: 1.0.0 css-what: 6.1.0 domhandler: 5.0.3 domutils: 3.1.0 nth-check: 2.1.1 + dev: true - css-tree@1.1.3: + /css-tree@1.1.3: + resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} + engines: {node: '>=8.0.0'} dependencies: mdn-data: 2.0.14 source-map: 0.6.1 + dev: true + + /css-tree@2.2.1: + resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + dependencies: + mdn-data: 2.0.28 + source-map-js: 1.2.1 + dev: true + + /css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.2.1 + dev: true + + /css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + dev: true + + /css.escape@1.5.1: + resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} + dev: true + + /cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + dev: true - css-tree@2.2.1: + /cssnano-preset-default@5.2.14(postcss@8.4.49): + resolution: {integrity: sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - mdn-data: 2.0.28 - source-map-js: 1.2.1 - - css-tree@2.3.1: + css-declaration-sorter: 6.4.1(postcss@8.4.49) + cssnano-utils: 3.1.0(postcss@8.4.49) + postcss: 8.4.49 + postcss-calc: 8.2.4(postcss@8.4.49) + postcss-colormin: 5.3.1(postcss@8.4.49) + postcss-convert-values: 5.1.3(postcss@8.4.49) + postcss-discard-comments: 5.1.2(postcss@8.4.49) + postcss-discard-duplicates: 5.1.0(postcss@8.4.49) + postcss-discard-empty: 5.1.1(postcss@8.4.49) + postcss-discard-overridden: 5.1.0(postcss@8.4.49) + postcss-merge-longhand: 5.1.7(postcss@8.4.49) + postcss-merge-rules: 5.1.4(postcss@8.4.49) + postcss-minify-font-values: 5.1.0(postcss@8.4.49) + postcss-minify-gradients: 5.1.1(postcss@8.4.49) + postcss-minify-params: 5.1.4(postcss@8.4.49) + postcss-minify-selectors: 5.2.1(postcss@8.4.49) + postcss-normalize-charset: 5.1.0(postcss@8.4.49) + postcss-normalize-display-values: 5.1.0(postcss@8.4.49) + postcss-normalize-positions: 5.1.1(postcss@8.4.49) + postcss-normalize-repeat-style: 5.1.1(postcss@8.4.49) + postcss-normalize-string: 5.1.0(postcss@8.4.49) + postcss-normalize-timing-functions: 5.1.0(postcss@8.4.49) + postcss-normalize-unicode: 5.1.1(postcss@8.4.49) + postcss-normalize-url: 5.1.0(postcss@8.4.49) + postcss-normalize-whitespace: 5.1.1(postcss@8.4.49) + postcss-ordered-values: 5.1.3(postcss@8.4.49) + postcss-reduce-initial: 5.1.2(postcss@8.4.49) + postcss-reduce-transforms: 5.1.0(postcss@8.4.49) + postcss-svgo: 5.1.0(postcss@8.4.49) + postcss-unique-selectors: 5.1.1(postcss@8.4.49) + dev: true + + /cssnano-utils@3.1.0(postcss@8.4.49): + resolution: {integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - mdn-data: 2.0.30 - source-map-js: 1.2.1 + postcss: 8.4.49 + dev: true - css-what@6.1.0: {} - - css.escape@1.5.1: {} - - cssesc@3.0.0: {} - - cssnano-preset-default@5.2.14(postcss@8.4.47): - dependencies: - css-declaration-sorter: 6.4.1(postcss@8.4.47) - cssnano-utils: 3.1.0(postcss@8.4.47) - postcss: 8.4.47 - postcss-calc: 8.2.4(postcss@8.4.47) - postcss-colormin: 5.3.1(postcss@8.4.47) - postcss-convert-values: 5.1.3(postcss@8.4.47) - postcss-discard-comments: 5.1.2(postcss@8.4.47) - postcss-discard-duplicates: 5.1.0(postcss@8.4.47) - postcss-discard-empty: 5.1.1(postcss@8.4.47) - postcss-discard-overridden: 5.1.0(postcss@8.4.47) - postcss-merge-longhand: 5.1.7(postcss@8.4.47) - postcss-merge-rules: 5.1.4(postcss@8.4.47) - postcss-minify-font-values: 5.1.0(postcss@8.4.47) - postcss-minify-gradients: 5.1.1(postcss@8.4.47) - postcss-minify-params: 5.1.4(postcss@8.4.47) - postcss-minify-selectors: 5.2.1(postcss@8.4.47) - postcss-normalize-charset: 5.1.0(postcss@8.4.47) - postcss-normalize-display-values: 5.1.0(postcss@8.4.47) - postcss-normalize-positions: 5.1.1(postcss@8.4.47) - postcss-normalize-repeat-style: 5.1.1(postcss@8.4.47) - postcss-normalize-string: 5.1.0(postcss@8.4.47) - postcss-normalize-timing-functions: 5.1.0(postcss@8.4.47) - postcss-normalize-unicode: 5.1.1(postcss@8.4.47) - postcss-normalize-url: 5.1.0(postcss@8.4.47) - postcss-normalize-whitespace: 5.1.1(postcss@8.4.47) - postcss-ordered-values: 5.1.3(postcss@8.4.47) - postcss-reduce-initial: 5.1.2(postcss@8.4.47) - postcss-reduce-transforms: 5.1.0(postcss@8.4.47) - postcss-svgo: 5.1.0(postcss@8.4.47) - postcss-unique-selectors: 5.1.1(postcss@8.4.47) - - cssnano-utils@3.1.0(postcss@8.4.47): - dependencies: - postcss: 8.4.47 - - cssnano@5.1.15(postcss@8.4.47): - dependencies: - cssnano-preset-default: 5.2.14(postcss@8.4.47) + /cssnano@5.1.15(postcss@8.4.49): + resolution: {integrity: sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + dependencies: + cssnano-preset-default: 5.2.14(postcss@8.4.49) lilconfig: 2.1.0 - postcss: 8.4.47 + postcss: 8.4.49 yaml: 1.10.2 + dev: true - csso@4.2.0: + /csso@4.2.0: + resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} + engines: {node: '>=8.0.0'} dependencies: css-tree: 1.1.3 + dev: true - csso@5.0.5: + /csso@5.0.5: + resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} dependencies: css-tree: 2.2.1 + dev: true - cssom@0.3.8: {} + /cssom@0.3.8: + resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} + dev: true - cssom@0.4.4: {} + /cssom@0.4.4: + resolution: {integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==} + dev: true - cssom@0.5.0: {} + /cssom@0.5.0: + resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} + dev: true - cssstyle@2.3.0: + /cssstyle@2.3.0: + resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} + engines: {node: '>=8'} dependencies: cssom: 0.3.8 + dev: true - cssstyle@3.0.0: + /cssstyle@3.0.0: + resolution: {integrity: sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==} + engines: {node: '>=14'} dependencies: rrweb-cssom: 0.6.0 + dev: true - csstype@3.1.3: {} + /csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - cwd@0.10.0: + /cwd@0.10.0: + resolution: {integrity: sha512-YGZxdTTL9lmLkCUTpg4j0zQ7IhRB5ZmqNBbGCl3Tg6MP/d5/6sY7L5mmTjzbc6JKgVZYiqTQTNhPFsbXNGlRaA==} + engines: {node: '>=0.8'} dependencies: find-pkg: 0.1.2 fs-exists-sync: 0.1.0 + dev: true - damerau-levenshtein@1.0.8: {} + /damerau-levenshtein@1.0.8: + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + dev: true - dashdash@1.14.1: + /dashdash@1.14.1: + resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} + engines: {node: '>=0.10'} dependencies: assert-plus: 1.0.0 + dev: true - data-urls@1.1.0: + /data-urls@1.1.0: + resolution: {integrity: sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==} dependencies: abab: 2.0.6 whatwg-mimetype: 2.3.0 whatwg-url: 7.1.0 + dev: true - data-urls@3.0.2: + /data-urls@3.0.2: + resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} + engines: {node: '>=12'} dependencies: abab: 2.0.6 whatwg-mimetype: 3.0.0 whatwg-url: 11.0.0 + dev: true - data-urls@4.0.0: + /data-urls@4.0.0: + resolution: {integrity: sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==} + engines: {node: '>=14'} dependencies: abab: 2.0.6 whatwg-mimetype: 3.0.0 whatwg-url: 12.0.1 + dev: true - data-view-buffer@1.0.1: + /data-view-buffer@1.0.2: + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bound: 1.0.3 es-errors: 1.3.0 - is-data-view: 1.0.1 + is-data-view: 1.0.2 + dev: true - data-view-byte-length@1.0.1: + /data-view-byte-length@1.0.2: + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bound: 1.0.3 es-errors: 1.3.0 - is-data-view: 1.0.1 + is-data-view: 1.0.2 + dev: true - data-view-byte-offset@1.0.0: + /data-view-byte-offset@1.0.1: + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bound: 1.0.3 es-errors: 1.3.0 - is-data-view: 1.0.1 + is-data-view: 1.0.2 + dev: true - date-format@4.0.14: {} + /date-format@4.0.14: + resolution: {integrity: sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==} + engines: {node: '>=4.0'} + dev: true - dayjs@1.11.13: {} + /dayjs@1.11.13: + resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} - de-indent@1.0.2: {} + /de-indent@1.0.2: + resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} + dev: true - debug@2.6.9: + /debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: ms: 2.0.0 - debug@3.2.7: + /debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: ms: 2.1.3 + dev: true - debug@4.3.4: + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: ms: 2.1.2 + dev: true + + /debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + dev: true - debug@4.3.7: + /debug@4.4.0: + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: ms: 2.1.3 - decamelize@1.2.0: {} + /decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + + /decimal.js@10.4.3: + resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + dev: true - decimal.js@10.4.3: {} + /decode-uri-component@0.2.2: + resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + engines: {node: '>=0.10'} + dev: true - decode-uri-component@0.2.2: {} + /decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + dependencies: + mimic-response: 3.1.0 + dev: true - dedent@0.7.0: {} + /dedent@0.7.0: + resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + dev: true - dedent@1.5.3: {} + /dedent@1.5.3: + resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + dev: true - deep-eql@4.1.4: + /deep-eql@4.1.4: + resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} + engines: {node: '>=6'} dependencies: type-detect: 4.1.0 + dev: true - deep-eql@5.0.2: {} + /deep-eql@5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} + engines: {node: '>=6'} + dev: true - deep-equal@1.0.1: {} + /deep-equal@1.0.1: + resolution: {integrity: sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==} + dev: true - deep-equal@2.2.3: + /deep-equal@2.2.3: + resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} + engines: {node: '>= 0.4'} dependencies: - array-buffer-byte-length: 1.0.1 - call-bind: 1.0.7 + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.8 es-get-iterator: 1.1.3 - get-intrinsic: 1.2.4 - is-arguments: 1.1.1 - is-array-buffer: 3.0.4 - is-date-object: 1.0.5 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.3 + get-intrinsic: 1.2.6 + is-arguments: 1.2.0 + is-array-buffer: 3.0.5 + is-date-object: 1.1.0 + is-regex: 1.2.1 + is-shared-array-buffer: 1.0.4 isarray: 2.0.5 object-is: 1.1.6 object-keys: 1.1.1 - object.assign: 4.1.5 - regexp.prototype.flags: 1.5.2 - side-channel: 1.0.6 - which-boxed-primitive: 1.0.2 + object.assign: 4.1.7 + regexp.prototype.flags: 1.5.3 + side-channel: 1.1.0 + which-boxed-primitive: 1.1.1 which-collection: 1.0.2 - which-typed-array: 1.1.15 + which-typed-array: 1.1.18 + dev: true - deep-is@0.1.4: {} + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: true - deepmerge@4.3.1: {} + /deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} - default-require-extensions@3.0.1: + /default-require-extensions@3.0.1: + resolution: {integrity: sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==} + engines: {node: '>=8'} dependencies: strip-bom: 4.0.0 + dev: true - defaults@1.0.4: + /defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} dependencies: clone: 1.0.4 - define-data-property@1.1.4: + /defer-to-connect@2.0.1: + resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} + engines: {node: '>=10'} + dev: true + + /define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} dependencies: - es-define-property: 1.0.0 + es-define-property: 1.0.1 es-errors: 1.3.0 - gopd: 1.0.1 + gopd: 1.2.0 - define-lazy-prop@2.0.0: {} + /define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} - define-properties@1.2.1: + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} dependencies: define-data-property: 1.1.4 has-property-descriptors: 1.0.2 object-keys: 1.1.1 + dev: true - define-property@0.2.5: + /define-property@0.2.5: + resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==} + engines: {node: '>=0.10.0'} dependencies: is-descriptor: 0.1.7 + dev: true - define-property@1.0.0: + /define-property@1.0.0: + resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==} + engines: {node: '>=0.10.0'} dependencies: is-descriptor: 1.0.3 + dev: true - define-property@2.0.2: + /define-property@2.0.2: + resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} + engines: {node: '>=0.10.0'} dependencies: is-descriptor: 1.0.3 isobject: 3.0.1 + dev: true - del@6.1.1: + /del@6.1.1: + resolution: {integrity: sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==} + engines: {node: '>=10'} dependencies: globby: 11.1.0 graceful-fs: 4.2.11 @@ -18014,346 +10911,546 @@ snapshots: p-map: 4.0.0 rimraf: 3.0.2 slash: 3.0.0 + dev: true - delayed-stream@1.0.0: {} + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + dev: true - delegates@1.0.0: {} + /delegates@1.0.0: + resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + dev: true - denodeify@1.2.1: {} + /denodeify@1.2.1: + resolution: {integrity: sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==} - depd@1.1.2: {} + /depd@1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + dev: true - depd@2.0.0: {} + /depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} - dequal@2.0.3: {} + /dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} - destroy@1.2.0: {} + /destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - detect-indent@6.1.0: {} + /detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + dev: true - detect-newline@3.1.0: {} + /detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + dev: true - detect-port@1.6.1: + /detect-port@1.6.1: + resolution: {integrity: sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==} + engines: {node: '>= 4.0.0'} + hasBin: true dependencies: address: 1.2.2 - debug: 4.3.7 + debug: 4.4.0 transitivePeerDependencies: - supports-color + dev: true - diff-sequences@25.2.6: {} + /diff-sequences@25.2.6: + resolution: {integrity: sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg==} + engines: {node: '>= 8.3'} + dev: true - diff-sequences@28.1.1: {} + /diff-sequences@28.1.1: + resolution: {integrity: sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dev: true - diff-sequences@29.6.3: {} + /diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true - diff@4.0.2: {} + /diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + dev: true - diffable-html@4.1.0: + /diffable-html@4.1.0: + resolution: {integrity: sha512-++kyNek+YBLH8cLXS+iTj/Hiy2s5qkRJEJ8kgu/WHbFrVY2vz9xPFUT+fii2zGF0m1CaojDlQJjkfrCt7YWM1g==} dependencies: htmlparser2: 3.10.1 + dev: true - dir-glob@3.0.1: + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} dependencies: path-type: 4.0.0 + dev: true - doctrine@2.1.0: + /doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} dependencies: esutils: 2.0.3 + dev: true - doctrine@3.0.0: + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} dependencies: esutils: 2.0.3 + dev: true - dom-accessibility-api@0.5.16: {} + /dom-accessibility-api@0.5.16: + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + dev: true - dom-accessibility-api@0.6.3: {} + /dom-accessibility-api@0.6.3: + resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} + dev: true - dom-serializer@0.2.2: + /dom-serializer@0.2.2: + resolution: {integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==} dependencies: domelementtype: 2.3.0 entities: 2.2.0 + dev: true - dom-serializer@1.4.1: + /dom-serializer@1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} dependencies: domelementtype: 2.3.0 domhandler: 4.3.1 entities: 2.2.0 + dev: true - dom-serializer@2.0.0: + /dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} dependencies: domelementtype: 2.3.0 domhandler: 5.0.3 entities: 4.5.0 + dev: true - domelementtype@1.3.1: {} + /domelementtype@1.3.1: + resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==} + dev: true - domelementtype@2.3.0: {} + /domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + dev: true - domexception@1.0.1: + /domexception@1.0.1: + resolution: {integrity: sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==} + deprecated: Use your platform's native DOMException instead dependencies: webidl-conversions: 4.0.2 + dev: true - domexception@4.0.0: + /domexception@4.0.0: + resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} + engines: {node: '>=12'} + deprecated: Use your platform's native DOMException instead dependencies: webidl-conversions: 7.0.0 + dev: true - domhandler@2.4.2: + /domhandler@2.4.2: + resolution: {integrity: sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==} dependencies: domelementtype: 1.3.1 + dev: true - domhandler@4.3.1: + /domhandler@4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} dependencies: domelementtype: 2.3.0 + dev: true - domhandler@5.0.3: + /domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} dependencies: domelementtype: 2.3.0 + dev: true - domutils@1.7.0: + /domutils@1.7.0: + resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==} dependencies: dom-serializer: 0.2.2 domelementtype: 1.3.1 + dev: true - domutils@2.8.0: + /domutils@2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} dependencies: dom-serializer: 1.4.1 domelementtype: 2.3.0 domhandler: 4.3.1 + dev: true - domutils@3.1.0: + /domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} dependencies: dom-serializer: 2.0.0 domelementtype: 2.3.0 domhandler: 5.0.3 + dev: true - dot-case@3.0.4: + /dot-case@3.0.4: + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} dependencies: no-case: 3.0.4 - tslib: 2.7.0 + tslib: 2.8.1 + dev: true - dotenv-expand@10.0.0: {} + /dotenv-expand@10.0.0: + resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==} + engines: {node: '>=12'} + dev: true - dotenv-expand@11.0.6: + /dotenv-expand@11.0.7: + resolution: {integrity: sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==} + engines: {node: '>=12'} dependencies: - dotenv: 16.4.5 + dotenv: 16.4.7 + dev: true + + /dotenv@16.4.7: + resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} + engines: {node: '>=12'} + dev: true - dotenv@16.4.5: {} + /dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + dependencies: + call-bind-apply-helpers: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 - duplexer@0.1.2: {} + /duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + dev: true - duplexify@3.7.1: + /duplexify@3.7.1: + resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} dependencies: end-of-stream: 1.4.4 inherits: 2.0.4 readable-stream: 2.3.8 stream-shift: 1.0.3 + dev: true - duplexify@4.1.3: + /duplexify@4.1.3: + resolution: {integrity: sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==} dependencies: end-of-stream: 1.4.4 inherits: 2.0.4 readable-stream: 3.6.2 stream-shift: 1.0.3 + dev: true - eastasianwidth@0.2.0: {} + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: true - ecc-jsbn@0.1.2: + /ecc-jsbn@0.1.2: + resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} dependencies: jsbn: 0.1.1 safer-buffer: 2.1.2 + dev: true - ecdsa-sig-formatter@1.0.11: + /ecdsa-sig-formatter@1.0.11: + resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} dependencies: safe-buffer: 5.2.1 + dev: true - ee-first@1.1.1: {} + /ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - ejs@3.1.10: + /ejs@3.1.10: + resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} + engines: {node: '>=0.10.0'} + hasBin: true dependencies: jake: 10.9.2 + dev: true - electron-to-chromium@1.5.28: {} + /electron-to-chromium@1.5.75: + resolution: {integrity: sha512-Lf3++DumRE/QmweGjU+ZcKqQ+3bKkU/qjaKYhIJKEOhgIO9Xs6IiAQFkfFoj+RhgDk4LUeNsLo6plExHqSyu6Q==} - emittery@0.10.2: {} + /emittery@0.10.2: + resolution: {integrity: sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==} + engines: {node: '>=12'} + dev: true - emittery@0.13.1: {} + /emittery@0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} + dev: true - emoji-regex@7.0.3: {} + /emoji-regex@7.0.3: + resolution: {integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==} + dev: true - emoji-regex@8.0.0: {} + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - emoji-regex@9.2.2: {} + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: true - emojis-list@3.0.0: {} + /emojis-list@3.0.0: + resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} + engines: {node: '>= 4'} + dev: true - encodeurl@1.0.2: {} + /encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} - encodeurl@2.0.0: {} + /encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} - end-of-stream@1.4.4: + /end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: once: 1.4.0 + dev: true - enhanced-resolve@5.17.1: + /enhanced-resolve@5.18.0: + resolution: {integrity: sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==} + engines: {node: '>=10.13.0'} dependencies: graceful-fs: 4.2.11 tapable: 2.2.1 + dev: true - enquirer@2.3.6: + /enquirer@2.3.6: + resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} + engines: {node: '>=8.6'} dependencies: ansi-colors: 4.1.3 + dev: true - enquirer@2.4.1: + /enquirer@2.4.1: + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} + engines: {node: '>=8.6'} dependencies: ansi-colors: 4.1.3 strip-ansi: 6.0.1 + dev: true - entities@1.1.2: {} - - entities@2.2.0: {} + /entities@1.1.2: + resolution: {integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==} + dev: true - entities@4.5.0: {} + /entities@2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + dev: true - envinfo@7.13.0: {} + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + dev: true - envinfo@7.14.0: {} + /envinfo@7.14.0: + resolution: {integrity: sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==} + engines: {node: '>=4'} + hasBin: true - error-ex@1.3.2: + /error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 - error-stack-parser@2.1.4: + /error-stack-parser@2.1.4: + resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} dependencies: stackframe: 1.3.4 - errorhandler@1.5.1: + /errorhandler@1.5.1: + resolution: {integrity: sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==} + engines: {node: '>= 0.8'} dependencies: accepts: 1.3.8 escape-html: 1.0.3 - es-abstract@1.23.3: + /es-abstract@1.23.7: + resolution: {integrity: sha512-OygGC8kIcDhXX+6yAZRGLqwi2CmEXCbLQixeGUgYeR+Qwlppqmo7DIDr8XibtEBZp+fJcoYpoatp5qwLMEdcqQ==} + engines: {node: '>= 0.4'} dependencies: - array-buffer-byte-length: 1.0.1 - arraybuffer.prototype.slice: 1.0.3 + array-buffer-byte-length: 1.0.2 + arraybuffer.prototype.slice: 1.0.4 available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - data-view-buffer: 1.0.1 - data-view-byte-length: 1.0.1 - data-view-byte-offset: 1.0.0 - es-define-property: 1.0.0 + call-bind: 1.0.8 + call-bound: 1.0.3 + data-view-buffer: 1.0.2 + data-view-byte-length: 1.0.2 + data-view-byte-offset: 1.0.1 + es-define-property: 1.0.1 es-errors: 1.3.0 es-object-atoms: 1.0.0 es-set-tostringtag: 2.0.3 - es-to-primitive: 1.2.1 - function.prototype.name: 1.1.6 - get-intrinsic: 1.2.4 - get-symbol-description: 1.0.2 + es-to-primitive: 1.3.0 + function.prototype.name: 1.1.8 + get-intrinsic: 1.2.6 + get-symbol-description: 1.1.0 globalthis: 1.0.4 - gopd: 1.0.1 + gopd: 1.2.0 has-property-descriptors: 1.0.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 + has-proto: 1.2.0 + has-symbols: 1.1.0 hasown: 2.0.2 - internal-slot: 1.0.7 - is-array-buffer: 3.0.4 + internal-slot: 1.1.0 + is-array-buffer: 3.0.5 is-callable: 1.2.7 - is-data-view: 1.0.1 - is-negative-zero: 2.0.3 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.3 - is-string: 1.0.7 - is-typed-array: 1.1.13 - is-weakref: 1.0.2 - object-inspect: 1.13.2 + is-data-view: 1.0.2 + is-regex: 1.2.1 + is-shared-array-buffer: 1.0.4 + is-string: 1.1.1 + is-typed-array: 1.1.15 + is-weakref: 1.1.0 + math-intrinsics: 1.1.0 + object-inspect: 1.13.3 object-keys: 1.1.1 - object.assign: 4.1.5 - regexp.prototype.flags: 1.5.2 - safe-array-concat: 1.1.2 - safe-regex-test: 1.0.3 - string.prototype.trim: 1.2.9 - string.prototype.trimend: 1.0.8 + object.assign: 4.1.7 + regexp.prototype.flags: 1.5.3 + safe-array-concat: 1.1.3 + safe-regex-test: 1.1.0 + string.prototype.trim: 1.2.10 + string.prototype.trimend: 1.0.9 string.prototype.trimstart: 1.0.8 - typed-array-buffer: 1.0.2 - typed-array-byte-length: 1.0.1 - typed-array-byte-offset: 1.0.2 - typed-array-length: 1.0.6 - unbox-primitive: 1.0.2 - which-typed-array: 1.1.15 - - es-define-property@1.0.0: - dependencies: - get-intrinsic: 1.2.4 + typed-array-buffer: 1.0.3 + typed-array-byte-length: 1.0.3 + typed-array-byte-offset: 1.0.4 + typed-array-length: 1.0.7 + unbox-primitive: 1.1.0 + which-typed-array: 1.1.18 + dev: true + + /es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} - es-errors@1.3.0: {} + /es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} - es-get-iterator@1.1.3: + /es-get-iterator@1.1.3: + resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 - is-arguments: 1.1.1 + call-bind: 1.0.8 + get-intrinsic: 1.2.6 + has-symbols: 1.1.0 + is-arguments: 1.2.0 is-map: 2.0.3 is-set: 2.0.3 - is-string: 1.0.7 + is-string: 1.1.1 isarray: 2.0.5 - stop-iteration-iterator: 1.0.0 + stop-iteration-iterator: 1.1.0 + dev: true - es-iterator-helpers@1.0.19: + /es-iterator-helpers@1.2.1: + resolution: {integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.3 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.7 es-errors: 1.3.0 es-set-tostringtag: 2.0.3 function-bind: 1.1.2 - get-intrinsic: 1.2.4 + get-intrinsic: 1.2.6 globalthis: 1.0.4 + gopd: 1.2.0 has-property-descriptors: 1.0.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - internal-slot: 1.0.7 - iterator.prototype: 1.1.2 - safe-array-concat: 1.1.2 - - es-module-lexer@1.5.4: {} + has-proto: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + iterator.prototype: 1.1.4 + safe-array-concat: 1.1.3 + dev: true + + /es-module-lexer@1.5.4: + resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} + dev: true - es-object-atoms@1.0.0: + /es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} dependencies: es-errors: 1.3.0 - es-set-tostringtag@2.0.3: + /es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.4 + get-intrinsic: 1.2.6 has-tostringtag: 1.0.2 hasown: 2.0.2 + dev: true - es-shim-unscopables@1.0.2: + /es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} dependencies: hasown: 2.0.2 + dev: true - es-to-primitive@1.2.1: + /es-to-primitive@1.3.0: + resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} + engines: {node: '>= 0.4'} dependencies: is-callable: 1.2.7 - is-date-object: 1.0.5 - is-symbol: 1.0.4 + is-date-object: 1.1.0 + is-symbol: 1.1.1 + dev: true - es6-error@4.1.1: {} + /es6-error@4.1.1: + resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} + dev: true - esbuild-register@3.6.0(esbuild@0.18.20): + /esbuild-register@3.6.0(esbuild@0.18.20): + resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==} + peerDependencies: + esbuild: '>=0.12 <1' dependencies: - debug: 4.3.7 + debug: 4.4.0 esbuild: 0.18.20 transitivePeerDependencies: - supports-color + dev: true - esbuild-register@3.6.0(esbuild@0.21.5): + /esbuild-register@3.6.0(esbuild@0.24.2): + resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==} + peerDependencies: + esbuild: '>=0.12 <1' dependencies: - debug: 4.3.7 - esbuild: 0.21.5 + debug: 4.4.0 + esbuild: 0.24.2 transitivePeerDependencies: - supports-color - esbuild@0.17.19: + /esbuild@0.17.19: + resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true optionalDependencies: '@esbuild/android-arm': 0.17.19 '@esbuild/android-arm64': 0.17.19 @@ -18377,8 +11474,13 @@ snapshots: '@esbuild/win32-arm64': 0.17.19 '@esbuild/win32-ia32': 0.17.19 '@esbuild/win32-x64': 0.17.19 + dev: true - esbuild@0.18.20: + /esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true optionalDependencies: '@esbuild/android-arm': 0.18.20 '@esbuild/android-arm64': 0.18.20 @@ -18402,8 +11504,13 @@ snapshots: '@esbuild/win32-arm64': 0.18.20 '@esbuild/win32-ia32': 0.18.20 '@esbuild/win32-x64': 0.18.20 + dev: true - esbuild@0.21.5: + /esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true optionalDependencies: '@esbuild/aix-ppc64': 0.21.5 '@esbuild/android-arm': 0.21.5 @@ -18428,18 +11535,69 @@ snapshots: '@esbuild/win32-arm64': 0.21.5 '@esbuild/win32-ia32': 0.21.5 '@esbuild/win32-x64': 0.21.5 + dev: true + + /esbuild@0.24.2: + resolution: {integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==} + engines: {node: '>=18'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/aix-ppc64': 0.24.2 + '@esbuild/android-arm': 0.24.2 + '@esbuild/android-arm64': 0.24.2 + '@esbuild/android-x64': 0.24.2 + '@esbuild/darwin-arm64': 0.24.2 + '@esbuild/darwin-x64': 0.24.2 + '@esbuild/freebsd-arm64': 0.24.2 + '@esbuild/freebsd-x64': 0.24.2 + '@esbuild/linux-arm': 0.24.2 + '@esbuild/linux-arm64': 0.24.2 + '@esbuild/linux-ia32': 0.24.2 + '@esbuild/linux-loong64': 0.24.2 + '@esbuild/linux-mips64el': 0.24.2 + '@esbuild/linux-ppc64': 0.24.2 + '@esbuild/linux-riscv64': 0.24.2 + '@esbuild/linux-s390x': 0.24.2 + '@esbuild/linux-x64': 0.24.2 + '@esbuild/netbsd-arm64': 0.24.2 + '@esbuild/netbsd-x64': 0.24.2 + '@esbuild/openbsd-arm64': 0.24.2 + '@esbuild/openbsd-x64': 0.24.2 + '@esbuild/sunos-x64': 0.24.2 + '@esbuild/win32-arm64': 0.24.2 + '@esbuild/win32-ia32': 0.24.2 + '@esbuild/win32-x64': 0.24.2 + + /escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} - escalade@3.2.0: {} + /escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - escape-html@1.0.3: {} + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + dev: true - escape-string-regexp@1.0.5: {} + /escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} - escape-string-regexp@2.0.0: {} + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} - escape-string-regexp@4.0.0: {} + /escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + dev: true - escodegen@1.14.3: + /escodegen@1.14.3: + resolution: {integrity: sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==} + engines: {node: '>=4.0'} + hasBin: true dependencies: esprima: 4.0.1 estraverse: 4.3.0 @@ -18447,160 +11605,260 @@ snapshots: optionator: 0.8.3 optionalDependencies: source-map: 0.6.1 + dev: true - escodegen@2.1.0: + /escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} + hasBin: true dependencies: esprima: 4.0.1 estraverse: 5.3.0 esutils: 2.0.3 optionalDependencies: source-map: 0.6.1 + dev: true - eslint-config-prettier@6.15.0(eslint@6.8.0): + /eslint-config-prettier@6.15.0(eslint@6.8.0): + resolution: {integrity: sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw==} + hasBin: true + peerDependencies: + eslint: '>=3.14.1' dependencies: eslint: 6.8.0 get-stdin: 6.0.0 + dev: true - eslint-config-prettier@9.1.0(eslint@9.11.1): + /eslint-config-prettier@9.1.0(eslint@9.17.0): + resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' dependencies: - eslint: 9.11.1 + eslint: 9.17.0 + dev: true - eslint-config-react-app@5.2.1(@typescript-eslint/eslint-plugin@2.34.0(@typescript-eslint/parser@2.34.0(eslint@6.8.0)(typescript@3.9.10))(eslint@6.8.0)(typescript@3.9.10))(@typescript-eslint/parser@2.34.0(eslint@6.8.0)(typescript@3.9.10))(babel-eslint@10.1.0(eslint@6.8.0))(eslint-plugin-flowtype@3.13.0(eslint@6.8.0))(eslint-plugin-import@2.30.0(@typescript-eslint/parser@2.34.0(eslint@6.8.0)(typescript@3.9.10))(eslint@6.8.0))(eslint-plugin-jsx-a11y@6.10.0(eslint@6.8.0))(eslint-plugin-react-hooks@2.5.1(eslint@6.8.0))(eslint-plugin-react@7.36.1(eslint@6.8.0))(eslint@6.8.0)(typescript@3.9.10): + /eslint-config-react-app@5.2.1(@typescript-eslint/eslint-plugin@2.34.0)(@typescript-eslint/parser@2.34.0)(babel-eslint@10.1.0)(eslint-plugin-flowtype@3.13.0)(eslint-plugin-import@2.30.0)(eslint-plugin-jsx-a11y@6.7.1)(eslint-plugin-react-hooks@2.5.1)(eslint-plugin-react@7.35.0)(eslint@6.8.0)(typescript@3.9.10): + resolution: {integrity: sha512-pGIZ8t0mFLcV+6ZirRgYK6RVqUIKRIi9MmgzUEmrIknsn3AdO0I32asO86dJgloHq+9ZPl8UIg8mYrvgP5u2wQ==} + peerDependencies: + '@typescript-eslint/eslint-plugin': 2.x + '@typescript-eslint/parser': 2.x + babel-eslint: 10.x + eslint: 6.x + eslint-plugin-flowtype: 3.x || 4.x + eslint-plugin-import: 2.x + eslint-plugin-jsx-a11y: 6.x + eslint-plugin-react: 7.x + eslint-plugin-react-hooks: 1.x || 2.x + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: - '@typescript-eslint/eslint-plugin': 2.34.0(@typescript-eslint/parser@2.34.0(eslint@6.8.0)(typescript@3.9.10))(eslint@6.8.0)(typescript@3.9.10) + '@typescript-eslint/eslint-plugin': 2.34.0(@typescript-eslint/parser@2.34.0)(eslint@6.8.0)(typescript@3.9.10) '@typescript-eslint/parser': 2.34.0(eslint@6.8.0)(typescript@3.9.10) babel-eslint: 10.1.0(eslint@6.8.0) confusing-browser-globals: 1.0.11 eslint: 6.8.0 eslint-plugin-flowtype: 3.13.0(eslint@6.8.0) - eslint-plugin-import: 2.30.0(@typescript-eslint/parser@2.34.0(eslint@6.8.0)(typescript@3.9.10))(eslint@6.8.0) - eslint-plugin-jsx-a11y: 6.10.0(eslint@6.8.0) - eslint-plugin-react: 7.36.1(eslint@6.8.0) + eslint-plugin-import: 2.30.0(@typescript-eslint/parser@2.34.0)(eslint@6.8.0) + eslint-plugin-jsx-a11y: 6.7.1(eslint@6.8.0) + eslint-plugin-react: 7.35.0(eslint@6.8.0) eslint-plugin-react-hooks: 2.5.1(eslint@6.8.0) - optionalDependencies: typescript: 3.9.10 + dev: true - eslint-import-resolver-node@0.3.9: + /eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} dependencies: debug: 3.2.7 - is-core-module: 2.15.1 - resolve: 1.22.8 + is-core-module: 2.16.0 + resolve: 1.22.10 transitivePeerDependencies: - supports-color + dev: true - eslint-module-utils@2.11.1(@typescript-eslint/parser@2.34.0(eslint@6.8.0)(typescript@3.9.10))(eslint-import-resolver-node@0.3.9)(eslint@6.8.0): + /eslint-module-utils@2.12.0(@typescript-eslint/parser@2.34.0)(eslint-import-resolver-node@0.3.9)(eslint@6.8.0): + resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true dependencies: - debug: 3.2.7 - optionalDependencies: '@typescript-eslint/parser': 2.34.0(eslint@6.8.0)(typescript@3.9.10) + debug: 3.2.7 eslint: 6.8.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color + dev: true - eslint-module-utils@2.11.1(@typescript-eslint/parser@8.7.0(eslint@9.11.1)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint@9.11.1): + /eslint-module-utils@2.12.0(@typescript-eslint/parser@8.18.1)(eslint-import-resolver-node@0.3.9)(eslint@9.17.0): + resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true dependencies: + '@typescript-eslint/parser': 8.18.1(eslint@9.17.0)(typescript@5.5.4) debug: 3.2.7 - optionalDependencies: - '@typescript-eslint/parser': 8.7.0(eslint@9.11.1)(typescript@5.5.4) - eslint: 9.11.1 + eslint: 9.17.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color + dev: true - eslint-plugin-flowtype@3.13.0(eslint@6.8.0): + /eslint-plugin-flowtype@3.13.0(eslint@6.8.0): + resolution: {integrity: sha512-bhewp36P+t7cEV0b6OdmoRWJCBYRiHFlqPZAG1oS3SF+Y0LQkeDvFSM4oxoxvczD1OdONCXMlJfQFiWLcV9urw==} + engines: {node: '>=4'} + peerDependencies: + eslint: '>=5.0.0' dependencies: eslint: 6.8.0 lodash: 4.17.21 + dev: true - eslint-plugin-import@2.30.0(@typescript-eslint/parser@2.34.0(eslint@6.8.0)(typescript@3.9.10))(eslint@6.8.0): + /eslint-plugin-import@2.30.0(@typescript-eslint/parser@2.34.0)(eslint@6.8.0): + resolution: {integrity: sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true dependencies: '@rtsao/scc': 1.1.0 + '@typescript-eslint/parser': 2.34.0(eslint@6.8.0)(typescript@3.9.10) array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 - array.prototype.flat: 1.3.2 - array.prototype.flatmap: 1.3.2 + array.prototype.flat: 1.3.3 + array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 eslint: 6.8.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.11.1(@typescript-eslint/parser@2.34.0(eslint@6.8.0)(typescript@3.9.10))(eslint-import-resolver-node@0.3.9)(eslint@6.8.0) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@2.34.0)(eslint-import-resolver-node@0.3.9)(eslint@6.8.0) hasown: 2.0.2 - is-core-module: 2.15.1 + is-core-module: 2.16.0 is-glob: 4.0.3 minimatch: 3.1.2 object.fromentries: 2.0.8 object.groupby: 1.0.3 - object.values: 1.2.0 + object.values: 1.2.1 semver: 6.3.1 tsconfig-paths: 3.15.0 - optionalDependencies: - '@typescript-eslint/parser': 2.34.0(eslint@6.8.0)(typescript@3.9.10) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color + dev: true - eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1)(typescript@5.5.4))(eslint@9.11.1): + /eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.18.1)(eslint@9.17.0): + resolution: {integrity: sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true dependencies: '@rtsao/scc': 1.1.0 + '@typescript-eslint/parser': 8.18.1(eslint@9.17.0)(typescript@5.5.4) array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 - array.prototype.flat: 1.3.2 - array.prototype.flatmap: 1.3.2 + array.prototype.flat: 1.3.3 + array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.11.1 + eslint: 9.17.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.11.1(@typescript-eslint/parser@8.7.0(eslint@9.11.1)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint@9.11.1) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.18.1)(eslint-import-resolver-node@0.3.9)(eslint@9.17.0) hasown: 2.0.2 - is-core-module: 2.15.1 + is-core-module: 2.16.0 is-glob: 4.0.3 minimatch: 3.1.2 object.fromentries: 2.0.8 object.groupby: 1.0.3 - object.values: 1.2.0 + object.values: 1.2.1 semver: 6.3.1 tsconfig-paths: 3.15.0 - optionalDependencies: - '@typescript-eslint/parser': 8.7.0(eslint@9.11.1)(typescript@5.5.4) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color + dev: true - eslint-plugin-jsx-a11y@6.10.0(eslint@6.8.0): + /eslint-plugin-jsx-a11y@6.7.1(eslint@6.8.0): + resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - aria-query: 5.1.3 + '@babel/runtime': 7.26.0 + aria-query: 5.3.2 array-includes: 3.1.8 - array.prototype.flatmap: 1.3.2 - ast-types-flow: 0.0.8 - axe-core: 4.10.0 - axobject-query: 4.1.0 + array.prototype.flatmap: 1.3.3 + ast-types-flow: 0.0.7 + axe-core: 4.10.2 + axobject-query: 3.2.4 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - es-iterator-helpers: 1.0.19 eslint: 6.8.0 - hasown: 2.0.2 + has: 1.0.4 jsx-ast-utils: 3.3.5 - language-tags: 1.0.9 + language-tags: 1.0.5 minimatch: 3.1.2 + object.entries: 1.1.8 object.fromentries: 2.0.8 - safe-regex-test: 1.0.3 - string.prototype.includes: 2.0.0 + semver: 6.3.1 + dev: true - eslint-plugin-jsx-a11y@6.7.1(eslint@9.11.1): + /eslint-plugin-jsx-a11y@6.7.1(eslint@9.17.0): + resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 aria-query: 5.3.2 array-includes: 3.1.8 - array.prototype.flatmap: 1.3.2 + array.prototype.flatmap: 1.3.3 ast-types-flow: 0.0.7 - axe-core: 4.10.0 + axe-core: 4.10.2 axobject-query: 3.2.4 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 9.11.1 + eslint: 9.17.0 has: 1.0.4 jsx-ast-utils: 3.3.5 language-tags: 1.0.5 @@ -18608,98 +11866,153 @@ snapshots: object.entries: 1.1.8 object.fromentries: 2.0.8 semver: 6.3.1 + dev: true - eslint-plugin-prettier@3.4.1(eslint-config-prettier@6.15.0(eslint@6.8.0))(eslint@6.8.0)(prettier@1.19.1): + /eslint-plugin-prettier@3.4.1(eslint-config-prettier@6.15.0)(eslint@6.8.0)(prettier@1.19.1): + resolution: {integrity: sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==} + engines: {node: '>=6.0.0'} + peerDependencies: + eslint: '>=5.0.0' + eslint-config-prettier: '*' + prettier: '>=1.13.0' + peerDependenciesMeta: + eslint-config-prettier: + optional: true dependencies: eslint: 6.8.0 + eslint-config-prettier: 6.15.0(eslint@6.8.0) prettier: 1.19.1 prettier-linter-helpers: 1.0.0 - optionalDependencies: - eslint-config-prettier: 6.15.0(eslint@6.8.0) + dev: true - eslint-plugin-react-hooks@2.5.1(eslint@6.8.0): + /eslint-plugin-react-hooks@2.5.1(eslint@6.8.0): + resolution: {integrity: sha512-Y2c4b55R+6ZzwtTppKwSmK/Kar8AdLiC2f9NADCuxbcTgPPg41Gyqa6b9GppgXSvCtkRw43ZE86CT5sejKC6/g==} + engines: {node: '>=7'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 dependencies: eslint: 6.8.0 + dev: true - eslint-plugin-react-hooks@4.6.0(eslint@9.11.1): + /eslint-plugin-react-hooks@4.6.0(eslint@9.17.0): + resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - eslint: 9.11.1 + eslint: 9.17.0 + dev: true - eslint-plugin-react@7.35.0(eslint@9.11.1): + /eslint-plugin-react@7.35.0(eslint@6.8.0): + resolution: {integrity: sha512-v501SSMOWv8gerHkk+IIQBkcGRGrO2nfybfj5pLxuJNFTPxxA3PSryhXTK+9pNbtkggheDdsC0E9Q8CuPk6JKA==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 dependencies: array-includes: 3.1.8 array.prototype.findlast: 1.2.5 - array.prototype.flatmap: 1.3.2 + array.prototype.flatmap: 1.3.3 array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 - es-iterator-helpers: 1.0.19 - eslint: 9.11.1 + es-iterator-helpers: 1.2.1 + eslint: 6.8.0 estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 minimatch: 3.1.2 object.entries: 1.1.8 object.fromentries: 2.0.8 - object.values: 1.2.0 + object.values: 1.2.1 prop-types: 15.8.1 resolve: 2.0.0-next.5 semver: 6.3.1 - string.prototype.matchall: 4.0.11 + string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 + dev: true - eslint-plugin-react@7.36.1(eslint@6.8.0): + /eslint-plugin-react@7.35.0(eslint@9.17.0): + resolution: {integrity: sha512-v501SSMOWv8gerHkk+IIQBkcGRGrO2nfybfj5pLxuJNFTPxxA3PSryhXTK+9pNbtkggheDdsC0E9Q8CuPk6JKA==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 dependencies: array-includes: 3.1.8 array.prototype.findlast: 1.2.5 - array.prototype.flatmap: 1.3.2 + array.prototype.flatmap: 1.3.3 array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 - es-iterator-helpers: 1.0.19 - eslint: 6.8.0 + es-iterator-helpers: 1.2.1 + eslint: 9.17.0 estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 minimatch: 3.1.2 object.entries: 1.1.8 object.fromentries: 2.0.8 - object.values: 1.2.0 + object.values: 1.2.1 prop-types: 15.8.1 resolve: 2.0.0-next.5 semver: 6.3.1 - string.prototype.matchall: 4.0.11 + string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 + dev: true - eslint-scope@5.1.1: + /eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} dependencies: esrecurse: 4.3.0 estraverse: 4.3.0 + dev: true - eslint-scope@8.0.2: + /eslint-scope@8.2.0: + resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 + dev: true - eslint-utils@1.4.3: + /eslint-utils@1.4.3: + resolution: {integrity: sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==} + engines: {node: '>=6'} dependencies: eslint-visitor-keys: 1.3.0 + dev: true - eslint-utils@2.1.0: + /eslint-utils@2.1.0: + resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} + engines: {node: '>=6'} dependencies: eslint-visitor-keys: 1.3.0 + dev: true - eslint-visitor-keys@1.3.0: {} + /eslint-visitor-keys@1.3.0: + resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} + engines: {node: '>=4'} + dev: true - eslint-visitor-keys@3.4.3: {} + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true - eslint-visitor-keys@4.0.0: {} + /eslint-visitor-keys@4.2.0: + resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: true - eslint@6.8.0: + /eslint@6.8.0: + resolution: {integrity: sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==} + engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. + hasBin: true dependencies: - '@babel/code-frame': 7.24.7 + '@babel/code-frame': 7.26.2 ajv: 6.12.6 chalk: 2.4.2 - cross-spawn: 6.0.5 - debug: 4.3.7 + cross-spawn: 6.0.6 + debug: 4.4.0 doctrine: 3.0.0 eslint-scope: 5.1.1 eslint-utils: 1.4.3 @@ -18734,29 +12047,38 @@ snapshots: v8-compile-cache: 2.4.0 transitivePeerDependencies: - supports-color + dev: true - eslint@9.11.1: + /eslint@9.17.0: + resolution: {integrity: sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1) - '@eslint-community/regexpp': 4.11.1 - '@eslint/config-array': 0.18.0 - '@eslint/core': 0.6.0 - '@eslint/eslintrc': 3.1.0 - '@eslint/js': 9.11.1 - '@eslint/plugin-kit': 0.2.0 + '@eslint-community/eslint-utils': 4.4.1(eslint@9.17.0) + '@eslint-community/regexpp': 4.12.1 + '@eslint/config-array': 0.19.1 + '@eslint/core': 0.9.1 + '@eslint/eslintrc': 3.2.0 + '@eslint/js': 9.17.0 + '@eslint/plugin-kit': 0.2.4 + '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.3.0 - '@nodelib/fs.walk': 1.2.8 + '@humanwhocodes/retry': 0.4.1 '@types/estree': 1.0.6 '@types/json-schema': 7.0.15 ajv: 6.12.6 chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.7 + cross-spawn: 7.0.6 + debug: 4.4.0 escape-string-regexp: 4.0.0 - eslint-scope: 8.0.2 - eslint-visitor-keys: 4.0.0 - espree: 10.1.0 + eslint-scope: 8.2.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 esquery: 1.6.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -18766,86 +12088,149 @@ snapshots: ignore: 5.3.2 imurmurhash: 0.1.4 is-glob: 4.0.3 - is-path-inside: 3.0.3 json-stable-stringify-without-jsonify: 1.0.1 lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 optionator: 0.9.4 - strip-ansi: 6.0.1 - text-table: 0.2.0 transitivePeerDependencies: - supports-color + dev: true - espree@10.1.0: + /espree@10.3.0: + resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: - acorn: 8.12.1 - acorn-jsx: 5.3.2(acorn@8.12.1) - eslint-visitor-keys: 4.0.0 + acorn: 8.14.0 + acorn-jsx: 5.3.2(acorn@8.14.0) + eslint-visitor-keys: 4.2.0 + dev: true - espree@6.2.1: + /espree@6.2.1: + resolution: {integrity: sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==} + engines: {node: '>=6.0.0'} dependencies: acorn: 7.4.1 acorn-jsx: 5.3.2(acorn@7.4.1) eslint-visitor-keys: 1.3.0 + dev: true - espree@9.6.1: + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.12.1 - acorn-jsx: 5.3.2(acorn@8.12.1) + acorn: 8.14.0 + acorn-jsx: 5.3.2(acorn@8.14.0) eslint-visitor-keys: 3.4.3 + dev: true - esprima@4.0.1: {} + /esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true - esquery@1.6.0: + /esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 + dev: true - esrecurse@4.3.0: + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} dependencies: estraverse: 5.3.0 + dev: true - estraverse@4.3.0: {} + /estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + dev: true - estraverse@5.3.0: {} + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true - estree-walker@0.6.1: {} + /estree-walker@0.6.1: + resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==} + dev: true - estree-walker@1.0.1: {} + /estree-walker@1.0.1: + resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} + dev: true - estree-walker@2.0.2: {} + /estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + dev: true - estree-walker@3.0.3: + /estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} dependencies: '@types/estree': 1.0.6 + dev: true + + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} - esutils@2.0.3: {} + /etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} - etag@1.8.1: {} + /event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} - event-target-shim@5.0.1: {} + /eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + dev: true - eventemitter3@4.0.7: {} + /eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + dev: true - eventemitter3@5.0.1: {} + /events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + dev: true - events@3.3.0: {} + /exec-sh@0.3.6: + resolution: {integrity: sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==} + dev: true - exec-sh@0.3.6: {} + /execa@0.7.0: + resolution: {integrity: sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==} + engines: {node: '>=4'} + dependencies: + cross-spawn: 5.1.0 + get-stream: 3.0.0 + is-stream: 1.1.0 + npm-run-path: 2.0.2 + p-finally: 1.0.0 + signal-exit: 3.0.7 + strip-eof: 1.0.0 + dev: true - execa@1.0.0: + /execa@1.0.0: + resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} + engines: {node: '>=6'} dependencies: - cross-spawn: 6.0.5 + cross-spawn: 6.0.6 get-stream: 4.1.0 is-stream: 1.1.0 npm-run-path: 2.0.2 p-finally: 1.0.0 signal-exit: 3.0.7 strip-eof: 1.0.0 + dev: true - execa@3.4.0: + /execa@3.4.0: + resolution: {integrity: sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==} + engines: {node: ^8.12.0 || >=9.7.0} dependencies: - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 get-stream: 5.2.0 human-signals: 1.1.1 is-stream: 2.0.1 @@ -18855,10 +12240,13 @@ snapshots: p-finally: 2.0.1 signal-exit: 3.0.7 strip-final-newline: 2.0.0 + dev: true - execa@4.1.0: + /execa@4.1.0: + resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} + engines: {node: '>=10'} dependencies: - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 get-stream: 5.2.0 human-signals: 1.1.1 is-stream: 2.0.1 @@ -18867,10 +12255,13 @@ snapshots: onetime: 5.1.2 signal-exit: 3.0.7 strip-final-newline: 2.0.0 + dev: true - execa@5.1.1: + /execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} dependencies: - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 get-stream: 6.0.1 human-signals: 2.1.0 is-stream: 2.0.1 @@ -18880,9 +12271,11 @@ snapshots: signal-exit: 3.0.7 strip-final-newline: 2.0.0 - execa@7.2.0: + /execa@7.2.0: + resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} + engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} dependencies: - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 get-stream: 6.0.1 human-signals: 4.3.1 is-stream: 3.0.0 @@ -18891,10 +12284,13 @@ snapshots: onetime: 6.0.0 signal-exit: 3.0.7 strip-final-newline: 3.0.0 + dev: true - execa@8.0.1: + /execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} dependencies: - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 get-stream: 8.0.1 human-signals: 5.0.0 is-stream: 3.0.0 @@ -18903,10 +12299,23 @@ snapshots: onetime: 6.0.0 signal-exit: 4.1.0 strip-final-newline: 3.0.0 + dev: true + + /executable@4.1.1: + resolution: {integrity: sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==} + engines: {node: '>=4'} + dependencies: + pify: 2.3.0 + dev: true - exit@0.1.2: {} + /exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + dev: true - expand-brackets@2.1.4: + /expand-brackets@2.1.4: + resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} + engines: {node: '>=0.10.0'} dependencies: debug: 2.6.9 define-property: 0.2.5 @@ -18917,18 +12326,29 @@ snapshots: to-regex: 3.0.2 transitivePeerDependencies: - supports-color + dev: true - expand-tilde@1.2.2: + /expand-tilde@1.2.2: + resolution: {integrity: sha512-rtmc+cjLZqnu9dSYosX9EWmSJhTwpACgJQTfj4hgg2JjOD/6SIQalZrt4a3aQeh++oNxkazcaxrhPUj6+g5G/Q==} + engines: {node: '>=0.10.0'} dependencies: os-homedir: 1.0.2 + dev: true - expand-tilde@2.0.2: + /expand-tilde@2.0.2: + resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} + engines: {node: '>=0.10.0'} dependencies: homedir-polyfill: 1.0.3 + dev: true - expect-playwright@0.8.0: {} + /expect-playwright@0.8.0: + resolution: {integrity: sha512-+kn8561vHAY+dt+0gMqqj1oY+g5xWrsuGMk4QGxotT2WS545nVqqjs37z6hrYfIuucwqthzwJfCJUEYqixyljg==} + dev: true - expect@25.5.0: + /expect@25.5.0: + resolution: {integrity: sha512-w7KAXo0+6qqZZhovCaBVPSIqQp7/UTcx4M9uKt2m6pd2VB1voyC8JizLRqeEqud3AAVP02g+hbErDu5gu64tlA==} + engines: {node: '>= 8.3'} dependencies: '@jest/types': 25.5.0 ansi-styles: 4.3.0 @@ -18936,28 +12356,40 @@ snapshots: jest-matcher-utils: 25.5.0 jest-message-util: 25.5.0 jest-regex-util: 25.2.6 + dev: true - expect@28.1.3: + /expect@28.1.3: + resolution: {integrity: sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@jest/expect-utils': 28.1.3 jest-get-type: 28.0.2 jest-matcher-utils: 28.1.3 jest-message-util: 28.1.3 jest-util: 28.1.3 + dev: true - expect@29.7.0: + /expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/expect-utils': 29.7.0 jest-get-type: 29.6.3 jest-matcher-utils: 29.7.0 jest-message-util: 29.7.0 jest-util: 29.7.0 + dev: true - exponential-backoff@3.1.1: {} + /exponential-backoff@3.1.1: + resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} - express-rate-limit@5.5.1: {} + /express-rate-limit@5.5.1: + resolution: {integrity: sha512-MTjE2eIbHv5DyfuFz4zLYWxpqVhEhkTiwFGuB74Q9CSou2WHO52nlE5y3Zlg6SIsiYUIPj6ifFxnkPz6O3sIUg==} + dev: true - express@4.21.0: + /express@4.21.0: + resolution: {integrity: sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==} + engines: {node: '>= 0.10.0'} dependencies: accepts: 1.3.8 array-flatten: 1.1.1 @@ -18992,27 +12424,136 @@ snapshots: vary: 1.1.2 transitivePeerDependencies: - supports-color + dev: true + + /express@4.21.1: + resolution: {integrity: sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==} + engines: {node: '>= 0.10.0'} + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.3 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.7.1 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.3.1 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.3 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.10 + proxy-addr: 2.0.7 + qs: 6.13.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.19.0 + serve-static: 1.16.2 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /express@4.21.2: + resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} + engines: {node: '>= 0.10.0'} + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.3 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.7.1 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.3.1 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.3 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.12 + proxy-addr: 2.0.7 + qs: 6.13.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.19.0 + serve-static: 1.16.2 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + dev: true - extend-shallow@2.0.1: + /ext-list@2.2.2: + resolution: {integrity: sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==} + engines: {node: '>=0.10.0'} + dependencies: + mime-db: 1.53.0 + dev: true + + /ext-name@5.0.0: + resolution: {integrity: sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==} + engines: {node: '>=4'} + dependencies: + ext-list: 2.2.2 + sort-keys-length: 1.0.1 + dev: true + + /extend-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} dependencies: is-extendable: 0.1.1 + dev: true - extend-shallow@3.0.2: + /extend-shallow@3.0.2: + resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} + engines: {node: '>=0.10.0'} dependencies: assign-symbols: 1.0.0 is-extendable: 1.0.1 + dev: true - extend@3.0.2: {} + /extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + dev: true - extendable-error@0.1.7: {} + /extendable-error@0.1.7: + resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} + dev: true - external-editor@3.1.0: + /external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} dependencies: chardet: 0.7.0 iconv-lite: 0.4.24 tmp: 0.0.33 + dev: true - extglob@2.0.4: + /extglob@2.0.4: + resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} + engines: {node: '>=0.10.0'} dependencies: array-unique: 0.3.2 define-property: 1.0.0 @@ -19024,24 +12565,39 @@ snapshots: to-regex: 3.0.2 transitivePeerDependencies: - supports-color + dev: true - extsprintf@1.3.0: {} + /extsprintf@1.3.0: + resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} + engines: {'0': node >=0.6.0} + dev: true - fast-deep-equal@3.1.3: {} + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: true - fast-diff@1.3.0: {} + /fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + dev: true - fast-fifo@1.3.2: {} + /fast-fifo@1.3.2: + resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} + dev: true - fast-glob@3.2.7: + /fast-glob@3.2.7: + resolution: {integrity: sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==} + engines: {node: '>=8'} dependencies: '@nodelib/fs.stat': 2.0.5 '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 micromatch: 4.0.8 + dev: true - fast-glob@3.3.2: + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} dependencies: '@nodelib/fs.stat': 2.0.5 '@nodelib/fs.walk': 1.2.8 @@ -19049,69 +12605,134 @@ snapshots: merge2: 1.4.1 micromatch: 4.0.8 - fast-json-stable-stringify@2.1.0: {} + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true - fast-levenshtein@2.0.6: {} + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: true - fast-redact@3.5.0: {} + /fast-redact@3.5.0: + resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} + engines: {node: '>=6'} + dev: true - fast-safe-stringify@2.1.1: {} + /fast-safe-stringify@2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + dev: true - fast-uri@3.0.2: {} + /fast-uri@3.0.3: + resolution: {integrity: sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==} + dev: true - fast-xml-parser@4.5.0: + /fast-xml-parser@4.5.1: + resolution: {integrity: sha512-y655CeyUQ+jj7KBbYMc4FG01V8ZQqjN+gDYGJ50RtfsUB8iG9AmwmwoAgeKLJdmueKKMrH1RJ7yXHTSoczdv5w==} + hasBin: true dependencies: strnum: 1.0.5 - fastq@1.17.1: + /fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} dependencies: reusify: 1.0.4 - fb-watchman@2.0.2: + /fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} dependencies: bser: 2.1.1 - fflate@0.8.2: {} + /fflate@0.8.2: + resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} + dev: true - figures@3.2.0: + /figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} dependencies: escape-string-regexp: 1.0.5 + dev: true - file-entry-cache@5.0.1: + /file-entry-cache@5.0.1: + resolution: {integrity: sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==} + engines: {node: '>=4'} dependencies: flat-cache: 2.0.1 + dev: true - file-entry-cache@8.0.0: + /file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} dependencies: flat-cache: 4.0.1 + dev: true - file-loader@6.2.0(webpack@5.95.0(@swc/core@1.5.29(@swc/helpers@0.5.13))(esbuild@0.17.19)): + /file-loader@6.2.0(webpack@5.97.1): + resolution: {integrity: sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==} + engines: {node: '>= 10.13.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.95.0(@swc/core@1.5.29(@swc/helpers@0.5.13))(esbuild@0.17.19) + webpack: 5.97.1(@swc/core@1.5.29)(esbuild@0.17.19) + dev: true - file-system-cache@2.3.0: + /file-system-cache@2.3.0: + resolution: {integrity: sha512-l4DMNdsIPsVnKrgEXbJwDJsA5mB8rGwHYERMgqQx/xAUtChPJMre1bXBzDEqqVbWv9AIbFezXMxeEkZDSrXUOQ==} dependencies: fs-extra: 11.1.1 ramda: 0.29.0 + dev: true + + /file-type@17.1.6: + resolution: {integrity: sha512-hlDw5Ev+9e883s0pwUsuuYNu4tD7GgpUnOvykjv1Gya0ZIjuKumthDRua90VUn6/nlRKAjcxLUnHNTIUWwWIiw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + readable-web-to-node-stream: 3.0.2 + strtok3: 7.1.1 + token-types: 5.0.1 + dev: true - filelist@1.0.4: + /filelist@1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} dependencies: minimatch: 5.1.6 + dev: true + + /filename-reserved-regex@3.0.0: + resolution: {integrity: sha512-hn4cQfU6GOT/7cFHXBqeBg2TbrMBgdD0kcjLhvSQYYwm3s4B6cjvBfb7nBALJLAXqmU5xajSa7X2NnUud/VCdw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true - fill-range@4.0.0: + /filenamify@5.1.1: + resolution: {integrity: sha512-M45CbrJLGACfrPOkrTp3j2EcO9OBkKUYME0eiqOCa7i2poaklU0jhlIaMlr8ijLorT0uLAzrn3qXOp5684CkfA==} + engines: {node: '>=12.20'} + dependencies: + filename-reserved-regex: 3.0.0 + strip-outer: 2.0.0 + trim-repeated: 2.0.0 + dev: true + + /fill-range@4.0.0: + resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==} + engines: {node: '>=0.10.0'} dependencies: extend-shallow: 2.0.1 is-number: 3.0.0 repeat-string: 1.6.1 to-regex-range: 2.1.1 + dev: true - fill-range@7.1.1: + /fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 - finalhandler@1.1.2: + /finalhandler@1.1.2: + resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} + engines: {node: '>= 0.8'} dependencies: debug: 2.6.9 encodeurl: 1.0.2 @@ -19123,7 +12744,9 @@ snapshots: transitivePeerDependencies: - supports-color - finalhandler@1.3.1: + /finalhandler@1.3.1: + resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} + engines: {node: '>= 0.8'} dependencies: debug: 2.6.9 encodeurl: 2.0.0 @@ -19134,270 +12757,457 @@ snapshots: unpipe: 1.0.0 transitivePeerDependencies: - supports-color + dev: true - find-cache-dir@2.1.0: + /find-cache-dir@2.1.0: + resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} + engines: {node: '>=6'} dependencies: commondir: 1.0.1 make-dir: 2.1.0 pkg-dir: 3.0.0 - find-cache-dir@3.3.2: + /find-cache-dir@3.3.2: + resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} + engines: {node: '>=8'} dependencies: commondir: 1.0.1 make-dir: 3.1.0 pkg-dir: 4.2.0 + dev: true - find-file-up@0.1.3: + /find-file-up@0.1.3: + resolution: {integrity: sha512-mBxmNbVyjg1LQIIpgO8hN+ybWBgDQK8qjht+EbrTCGmmPV/sc7RF1i9stPTD6bpvXZywBdrwRYxhSdJv867L6A==} + engines: {node: '>=0.10.0'} dependencies: fs-exists-sync: 0.1.0 resolve-dir: 0.1.1 + dev: true - find-file-up@2.0.1: + /find-file-up@2.0.1: + resolution: {integrity: sha512-qVdaUhYO39zmh28/JLQM5CoYN9byEOKEH4qfa8K1eNV17W0UUMJ9WgbR/hHFH+t5rcl+6RTb5UC7ck/I+uRkpQ==} + engines: {node: '>=8'} dependencies: resolve-dir: 1.0.1 + dev: true - find-pkg@0.1.2: + /find-pkg@0.1.2: + resolution: {integrity: sha512-0rnQWcFwZr7eO0513HahrWafsc3CTFioEB7DRiEYCUM/70QXSY8f3mCST17HXLcPvEhzH/Ty/Bxd72ZZsr/yvw==} + engines: {node: '>=0.10.0'} dependencies: find-file-up: 0.1.3 + dev: true - find-pkg@2.0.0: + /find-pkg@2.0.0: + resolution: {integrity: sha512-WgZ+nKbELDa6N3i/9nrHeNznm+lY3z4YfhDDWgW+5P0pdmMj26bxaxU11ookgY3NyP9GC7HvZ9etp0jRFqGEeQ==} + engines: {node: '>=8'} dependencies: find-file-up: 2.0.1 + dev: true - find-process@1.4.7: + /find-process@1.4.7: + resolution: {integrity: sha512-/U4CYp1214Xrp3u3Fqr9yNynUrr5Le4y0SsJh2lMDDSbpwYSz3M2SMWQC+wqcx79cN8PQtHQIL8KnuY9M66fdg==} + hasBin: true dependencies: chalk: 4.1.2 commander: 5.1.0 - debug: 4.3.7 + debug: 4.4.0 transitivePeerDependencies: - supports-color + dev: true - find-up@3.0.0: + /find-up@3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} dependencies: locate-path: 3.0.0 - find-up@4.1.0: + /find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} dependencies: locate-path: 5.0.0 path-exists: 4.0.0 - find-up@5.0.0: + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} dependencies: locate-path: 6.0.0 path-exists: 4.0.0 - flat-cache@2.0.1: + /find-versions@5.1.0: + resolution: {integrity: sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==} + engines: {node: '>=12'} + dependencies: + semver-regex: 4.0.5 + dev: true + + /flat-cache@2.0.1: + resolution: {integrity: sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==} + engines: {node: '>=4'} dependencies: flatted: 2.0.2 rimraf: 2.6.3 write: 1.0.3 + dev: true - flat-cache@4.0.1: + /flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} dependencies: - flatted: 3.3.1 + flatted: 3.3.2 keyv: 4.5.4 + dev: true - flat@5.0.2: {} + /flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + dev: true - flatted@2.0.2: {} + /flatted@2.0.2: + resolution: {integrity: sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==} + dev: true - flatted@3.3.1: {} + /flatted@3.3.2: + resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} + dev: true - flow-enums-runtime@0.0.6: {} + /flow-enums-runtime@0.0.6: + resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==} - flow-parser@0.246.0: {} + /flow-parser@0.257.1: + resolution: {integrity: sha512-7+KYDpAXyBPD/wODhbPYO6IGUx+WwtJcLLG/r3DvbNyxaDyuYaTBKbSqeCldWQzuFcj+MsOVx2bpkEwVPB9JRw==} + engines: {node: '>=0.4.0'} - follow-redirects@1.15.9(debug@4.3.7): - optionalDependencies: - debug: 4.3.7 + /follow-redirects@1.15.9(debug@4.4.0): + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dependencies: + debug: 4.4.0 + dev: true - for-each@0.3.3: + /for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: is-callable: 1.2.7 - for-in@1.0.2: {} + /for-in@1.0.2: + resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} + engines: {node: '>=0.10.0'} + dev: true - foreground-child@2.0.0: + /foreground-child@2.0.0: + resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} + engines: {node: '>=8.0.0'} dependencies: - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 signal-exit: 3.0.7 + dev: true - foreground-child@3.3.0: + /foreground-child@3.3.0: + resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} + engines: {node: '>=14'} dependencies: - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 signal-exit: 4.1.0 + dev: true - forever-agent@0.6.1: {} + /forever-agent@0.6.1: + resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} + dev: true - form-data@2.3.3: + /form-data@2.3.3: + resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} + engines: {node: '>= 0.12'} dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 + dev: true - form-data@4.0.0: + /form-data@4.0.1: + resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==} + engines: {node: '>= 6'} dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 + dev: true - forwarded@0.2.0: {} + /forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + dev: true - fraction.js@4.3.7: {} + /fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + dev: true - fragment-cache@0.2.1: + /fragment-cache@0.2.1: + resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} + engines: {node: '>=0.10.0'} dependencies: map-cache: 0.2.2 + dev: true - fresh@0.5.2: {} + /fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} - fromentries@1.3.2: {} + /fromentries@1.3.2: + resolution: {integrity: sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==} + dev: true - front-matter@4.0.2: + /front-matter@4.0.2: + resolution: {integrity: sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==} dependencies: js-yaml: 3.14.1 + dev: true - fs-constants@1.0.0: {} + /fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + dev: true - fs-exists-sync@0.1.0: {} + /fs-exists-sync@0.1.0: + resolution: {integrity: sha512-cR/vflFyPZtrN6b38ZyWxpWdhlXrzZEBawlpBQMq7033xVY7/kg0GDMBK5jg8lDYQckdJ5x/YC88lM3C7VMsLg==} + engines: {node: '>=0.10.0'} + dev: true - fs-extra@10.1.0: + /fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} dependencies: graceful-fs: 4.2.11 jsonfile: 6.1.0 universalify: 2.0.1 + dev: true - fs-extra@11.1.1: + /fs-extra@11.1.1: + resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} + engines: {node: '>=14.14'} dependencies: graceful-fs: 4.2.11 jsonfile: 6.1.0 universalify: 2.0.1 + dev: true - fs-extra@11.2.0: + /fs-extra@11.2.0: + resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} + engines: {node: '>=14.14'} dependencies: graceful-fs: 4.2.11 jsonfile: 6.1.0 universalify: 2.0.1 + dev: true - fs-extra@7.0.1: + /fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} dependencies: graceful-fs: 4.2.11 jsonfile: 4.0.0 universalify: 0.1.2 + dev: true - fs-extra@8.1.0: + /fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} dependencies: graceful-fs: 4.2.11 jsonfile: 4.0.0 universalify: 0.1.2 - fs-extra@9.1.0: + /fs-extra@9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} dependencies: at-least-node: 1.0.0 graceful-fs: 4.2.11 jsonfile: 6.1.0 universalify: 2.0.1 + dev: true - fs.realpath@1.0.0: {} + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - fsevents@2.3.2: + /fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true optional: true - fsevents@2.3.3: + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true optional: true - function-bind@1.1.2: {} + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - function.prototype.name@1.1.6: + /function.prototype.name@1.1.8: + resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.3 define-properties: 1.2.1 - es-abstract: 1.23.3 functions-have-names: 1.2.3 + hasown: 2.0.2 + is-callable: 1.2.7 + dev: true - functional-red-black-tree@1.0.1: {} + /functional-red-black-tree@1.0.1: + resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} + dev: true - functions-have-names@1.2.3: {} + /functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: true - generic-names@4.0.0: + /generic-names@4.0.0: + resolution: {integrity: sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==} dependencies: loader-utils: 3.3.1 + dev: true - gensync@1.0.0-beta.2: {} + /gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} - get-caller-file@2.0.5: {} + /get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} - get-func-name@2.0.2: {} + /get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + dev: true - get-intrinsic@1.2.4: + /get-intrinsic@1.2.6: + resolution: {integrity: sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==} + engines: {node: '>= 0.4'} dependencies: + call-bind-apply-helpers: 1.0.1 + dunder-proto: 1.0.1 + es-define-property: 1.0.1 es-errors: 1.3.0 + es-object-atoms: 1.0.0 function-bind: 1.1.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 + gopd: 1.2.0 + has-symbols: 1.1.0 hasown: 2.0.2 + math-intrinsics: 1.1.0 + + /get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + dev: true - get-package-type@0.1.0: {} + /get-stdin@6.0.0: + resolution: {integrity: sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==} + engines: {node: '>=4'} + dev: true - get-stdin@6.0.0: {} + /get-stream@3.0.0: + resolution: {integrity: sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==} + engines: {node: '>=4'} + dev: true - get-stream@4.1.0: + /get-stream@4.1.0: + resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} + engines: {node: '>=6'} dependencies: pump: 3.0.2 + dev: true - get-stream@5.2.0: + /get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} dependencies: pump: 3.0.2 + dev: true - get-stream@6.0.1: {} + /get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} - get-stream@8.0.1: {} + /get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + dev: true - get-symbol-description@1.0.2: + /get-symbol-description@1.1.0: + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bound: 1.0.3 es-errors: 1.3.0 - get-intrinsic: 1.2.4 + get-intrinsic: 1.2.6 + dev: true - get-value@2.0.6: {} + /get-value@2.0.6: + resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} + engines: {node: '>=0.10.0'} + dev: true - getpass@0.1.7: + /getpass@0.1.7: + resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} dependencies: assert-plus: 1.0.0 + dev: true - glob-parent@5.1.2: + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 - glob-parent@6.0.2: + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} dependencies: is-glob: 4.0.3 + dev: true - glob-promise@4.2.2(glob@7.2.3): - dependencies: - '@types/glob': 7.2.0 - glob: 7.2.3 - - glob-to-regexp@0.4.1: {} + /glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + dev: true - glob@10.4.5: + /glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true dependencies: foreground-child: 3.3.0 jackspeak: 3.4.3 minimatch: 9.0.5 minipass: 7.1.2 - package-json-from-dist: 1.0.0 + package-json-from-dist: 1.0.1 path-scurry: 1.11.1 + dev: true - glob@6.0.4: + /glob@6.0.4: + resolution: {integrity: sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==} + deprecated: Glob versions prior to v9 are no longer supported dependencies: inflight: 1.0.6 inherits: 2.0.4 minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 + dev: true - glob@7.1.4: + /glob@7.1.4: + resolution: {integrity: sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==} + deprecated: Glob versions prior to v9 are no longer supported dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -19405,8 +13215,11 @@ snapshots: minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 + dev: true - glob@7.2.3: + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -19415,65 +13228,102 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 - glob@8.1.0: + /glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} + deprecated: Glob versions prior to v9 are no longer supported dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 minimatch: 5.1.6 once: 1.4.0 + dev: true - glob@9.3.5: + /glob@9.3.5: + resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==} + engines: {node: '>=16 || 14 >=14.17'} dependencies: fs.realpath: 1.0.0 minimatch: 8.0.4 minipass: 4.2.8 path-scurry: 1.11.1 + dev: true - global-modules@0.2.3: + /global-modules@0.2.3: + resolution: {integrity: sha512-JeXuCbvYzYXcwE6acL9V2bAOeSIGl4dD+iwLY9iUx2VBJJ80R18HCn+JCwHM9Oegdfya3lEkGCdaRkSyc10hDA==} + engines: {node: '>=0.10.0'} dependencies: global-prefix: 0.1.5 is-windows: 0.2.0 + dev: true - global-modules@1.0.0: + /global-modules@1.0.0: + resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==} + engines: {node: '>=0.10.0'} dependencies: global-prefix: 1.0.2 is-windows: 1.0.2 resolve-dir: 1.0.1 + dev: true - global-prefix@0.1.5: + /global-prefix@0.1.5: + resolution: {integrity: sha512-gOPiyxcD9dJGCEArAhF4Hd0BAqvAe/JzERP7tYumE4yIkmIedPUVXcJFWbV3/p/ovIIvKjkrTk+f1UVkq7vvbw==} + engines: {node: '>=0.10.0'} dependencies: homedir-polyfill: 1.0.3 ini: 1.3.8 is-windows: 0.2.0 which: 1.3.1 + dev: true - global-prefix@1.0.2: + /global-prefix@1.0.2: + resolution: {integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==} + engines: {node: '>=0.10.0'} dependencies: expand-tilde: 2.0.2 homedir-polyfill: 1.0.3 ini: 1.3.8 is-windows: 1.0.2 which: 1.3.1 + dev: true - globals@11.12.0: {} + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} - globals@12.4.0: + /globals@12.4.0: + resolution: {integrity: sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==} + engines: {node: '>=8'} dependencies: type-fest: 0.8.1 + dev: true - globals@14.0.0: {} + /globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + dev: true - globals@15.9.0: {} + /globals@15.14.0: + resolution: {integrity: sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==} + engines: {node: '>=18'} + dev: true - globalthis@1.0.4: + /globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} dependencies: define-properties: 1.2.1 - gopd: 1.0.1 + gopd: 1.2.0 + dev: true - globalyzer@0.1.0: {} + /globalyzer@0.1.0: + resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} + dev: true - globby@10.0.1: + /globby@10.0.1: + resolution: {integrity: sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==} + engines: {node: '>=8'} dependencies: '@types/glob': 7.2.0 array-union: 2.1.0 @@ -19483,8 +13333,11 @@ snapshots: ignore: 5.3.2 merge2: 1.4.1 slash: 3.0.0 + dev: true - globby@11.1.0: + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} dependencies: array-union: 2.1.0 dir-glob: 3.0.1 @@ -19492,21 +13345,49 @@ snapshots: ignore: 5.3.2 merge2: 1.4.1 slash: 3.0.0 + dev: true - globrex@0.1.2: {} + /globrex@0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + dev: true - gopd@1.0.1: - dependencies: - get-intrinsic: 1.2.4 + /gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} - graceful-fs@4.2.11: {} + /got@11.8.6: + resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==} + engines: {node: '>=10.19.0'} + dependencies: + '@sindresorhus/is': 4.6.0 + '@szmarczak/http-timer': 4.0.6 + '@types/cacheable-request': 6.0.3 + '@types/responselike': 1.0.3 + cacheable-lookup: 5.0.4 + cacheable-request: 7.0.4 + decompress-response: 6.0.0 + http2-wrapper: 1.0.3 + lowercase-keys: 2.0.0 + p-cancelable: 2.1.1 + responselike: 2.0.1 + dev: true + + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - graphemer@1.4.0: {} + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + dev: true - growly@1.3.0: + /growly@1.3.0: + resolution: {integrity: sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==} + requiresBuild: true + dev: true optional: true - gunzip-maybe@1.4.2: + /gunzip-maybe@1.4.2: + resolution: {integrity: sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw==} + hasBin: true dependencies: browserify-zlib: 0.1.4 is-deflate: 1.0.0 @@ -19514,8 +13395,12 @@ snapshots: peek-stream: 1.1.3 pumpify: 1.5.1 through2: 2.0.5 + dev: true - handlebars@4.7.8: + /handlebars@4.7.8: + resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} + engines: {node: '>=0.4.7'} + hasBin: true dependencies: minimist: 1.2.8 neo-async: 2.6.2 @@ -19523,105 +13408,176 @@ snapshots: wordwrap: 1.0.0 optionalDependencies: uglify-js: 3.19.3 + dev: true - har-schema@2.0.0: {} + /har-schema@2.0.0: + resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} + engines: {node: '>=4'} + dev: true - har-validator@5.1.5: + /har-validator@5.1.5: + resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} + engines: {node: '>=6'} + deprecated: this library is no longer supported dependencies: ajv: 6.12.6 har-schema: 2.0.0 + dev: true - harmony-reflect@1.6.2: {} + /harmony-reflect@1.6.2: + resolution: {integrity: sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==} + dev: true - has-bigints@1.0.2: {} + /has-bigints@1.1.0: + resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} + engines: {node: '>= 0.4'} + dev: true - has-flag@3.0.0: {} + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + dev: true - has-flag@4.0.0: {} + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} - has-property-descriptors@1.0.2: + /has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} dependencies: - es-define-property: 1.0.0 + es-define-property: 1.0.1 - has-proto@1.0.3: {} + /has-proto@1.2.0: + resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} + engines: {node: '>= 0.4'} + dependencies: + dunder-proto: 1.0.1 + dev: true - has-symbols@1.0.3: {} + /has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} - has-tostringtag@1.0.2: + /has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} dependencies: - has-symbols: 1.0.3 + has-symbols: 1.1.0 - has-value@0.3.1: + /has-value@0.3.1: + resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==} + engines: {node: '>=0.10.0'} dependencies: get-value: 2.0.6 has-values: 0.1.4 isobject: 2.1.0 + dev: true - has-value@1.0.0: + /has-value@1.0.0: + resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==} + engines: {node: '>=0.10.0'} dependencies: get-value: 2.0.6 has-values: 1.0.0 isobject: 3.0.1 + dev: true - has-values@0.1.4: {} + /has-values@0.1.4: + resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==} + engines: {node: '>=0.10.0'} + dev: true - has-values@1.0.0: + /has-values@1.0.0: + resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==} + engines: {node: '>=0.10.0'} dependencies: is-number: 3.0.0 kind-of: 4.0.0 + dev: true - has@1.0.4: {} + /has@1.0.4: + resolution: {integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==} + engines: {node: '>= 0.4.0'} + dev: true - hasha@5.2.2: + /hasha@5.2.2: + resolution: {integrity: sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==} + engines: {node: '>=8'} dependencies: is-stream: 2.0.1 type-fest: 0.8.1 + dev: true - hasown@2.0.2: + /hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} dependencies: function-bind: 1.1.2 - he@1.2.0: {} + /he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + dev: true - hermes-estree@0.19.1: {} + /hermes-estree@0.19.1: + resolution: {integrity: sha512-daLGV3Q2MKk8w4evNMKwS8zBE/rcpA800nu1Q5kM08IKijoSnPe9Uo1iIxzPKRkn95IxxsgBMPeYHt3VG4ej2g==} - hermes-estree@0.23.1: {} + /hermes-estree@0.23.1: + resolution: {integrity: sha512-eT5MU3f5aVhTqsfIReZ6n41X5sYn4IdQL0nvz6yO+MMlPxw49aSARHLg/MSehQftyjnrE8X6bYregzSumqc6cg==} - hermes-parser@0.19.1: + /hermes-parser@0.19.1: + resolution: {integrity: sha512-Vp+bXzxYJWrpEuJ/vXxUsLnt0+y4q9zyi4zUlkLqD8FKv4LjIfOvP69R/9Lty3dCyKh0E2BU7Eypqr63/rKT/A==} dependencies: hermes-estree: 0.19.1 - hermes-parser@0.23.1: + /hermes-parser@0.23.1: + resolution: {integrity: sha512-oxl5h2DkFW83hT4DAUJorpah8ou4yvmweUzLJmmr6YV2cezduCdlil1AvU/a/xSsAFo4WUcNA4GoV5Bvq6JffA==} dependencies: hermes-estree: 0.23.1 - hermes-profile-transformer@0.0.6: + /hermes-profile-transformer@0.0.6: + resolution: {integrity: sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==} + engines: {node: '>=8'} dependencies: source-map: 0.7.4 - homedir-polyfill@1.0.3: + /homedir-polyfill@1.0.3: + resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} + engines: {node: '>=0.10.0'} dependencies: parse-passwd: 1.0.0 + dev: true - hosted-git-info@2.8.9: {} + /hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + dev: true - hosted-git-info@7.0.2: + /hosted-git-info@7.0.2: + resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} + engines: {node: ^16.14.0 || >=18.0.0} dependencies: lru-cache: 10.4.3 + dev: true - html-encoding-sniffer@1.0.2: + /html-encoding-sniffer@1.0.2: + resolution: {integrity: sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==} dependencies: whatwg-encoding: 1.0.5 + dev: true - html-encoding-sniffer@3.0.0: + /html-encoding-sniffer@3.0.0: + resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} + engines: {node: '>=12'} dependencies: whatwg-encoding: 2.0.0 + dev: true - html-escaper@2.0.2: {} - - html-tags@3.3.1: {} + /html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + dev: true - htmlparser2@3.10.1: + /htmlparser2@3.10.1: + resolution: {integrity: sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==} dependencies: domelementtype: 1.3.1 domhandler: 2.4.2 @@ -19629,21 +13585,34 @@ snapshots: entities: 1.1.2 inherits: 2.0.4 readable-stream: 3.6.2 + dev: true - http-assert@1.5.0: + /http-assert@1.5.0: + resolution: {integrity: sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==} + engines: {node: '>= 0.8'} dependencies: deep-equal: 1.0.1 http-errors: 1.8.1 + dev: true + + /http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + dev: true - http-errors@1.8.1: + /http-errors@1.8.1: + resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} + engines: {node: '>= 0.6'} dependencies: depd: 1.1.2 inherits: 2.0.4 setprototypeof: 1.2.0 statuses: 1.5.0 toidentifier: 1.0.1 + dev: true - http-errors@2.0.0: + /http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} dependencies: depd: 2.0.0 inherits: 2.0.4 @@ -19651,41 +13620,53 @@ snapshots: statuses: 2.0.1 toidentifier: 1.0.1 - http-proxy-agent@5.0.0: + /http-proxy-agent@5.0.0: + resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} + engines: {node: '>= 6'} dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.3.7 + debug: 4.4.0 transitivePeerDependencies: - supports-color + dev: true - http-proxy-middleware@3.0.2: + /http-proxy-middleware@3.0.3: + resolution: {integrity: sha512-usY0HG5nyDUwtqpiZdETNbmKtw3QQ1jwYFZ9wi5iHzX2BcILwQKtYDJPo7XHTsu5Z0B2Hj3W9NNnbd+AjFWjqg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@types/http-proxy': 1.17.15 - debug: 4.3.7 - http-proxy: 1.18.1(debug@4.3.7) + debug: 4.4.0 + http-proxy: 1.18.1(debug@4.4.0) is-glob: 4.0.3 is-plain-object: 5.0.0 micromatch: 4.0.8 transitivePeerDependencies: - supports-color + dev: true - http-proxy@1.18.1(debug@4.3.7): + /http-proxy@1.18.1(debug@4.4.0): + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} dependencies: eventemitter3: 4.0.7 - follow-redirects: 1.15.9(debug@4.3.7) + follow-redirects: 1.15.9(debug@4.4.0) requires-port: 1.0.0 transitivePeerDependencies: - debug + dev: true - http-server@14.1.1: + /http-server@14.1.1: + resolution: {integrity: sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==} + engines: {node: '>=12'} + hasBin: true dependencies: basic-auth: 2.0.1 chalk: 4.1.2 corser: 2.0.1 he: 1.2.0 html-encoding-sniffer: 3.0.0 - http-proxy: 1.18.1(debug@4.3.7) + http-proxy: 1.18.1(debug@4.4.0) mime: 1.6.0 minimist: 1.2.8 opener: 1.5.2 @@ -19696,111 +13677,208 @@ snapshots: transitivePeerDependencies: - debug - supports-color + dev: true - http-signature@1.2.0: + /http-signature@1.2.0: + resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} + engines: {node: '>=0.8', npm: '>=1.3.7'} dependencies: assert-plus: 1.0.0 jsprim: 1.4.2 sshpk: 1.18.0 + dev: true - http-signature@1.3.6: + /http-signature@1.4.0: + resolution: {integrity: sha512-G5akfn7eKbpDN+8nPS/cb57YeA1jLTVxjpCj7tmm3QKPdyDy7T+qSC40e9ptydSWvkwjSXw1VbkpyEm39ukeAg==} + engines: {node: '>=0.10'} dependencies: assert-plus: 1.0.0 jsprim: 2.0.2 sshpk: 1.18.0 + dev: true + + /http-status-codes@2.2.0: + resolution: {integrity: sha512-feERVo9iWxvnejp3SEfm/+oNG517npqL2/PIA8ORjyOZjGC7TwCRQsZylciLS64i6pJ0wRYz3rkXLRwbtFa8Ng==} + dev: true - http-status-codes@2.2.0: {} + /http-status-codes@2.3.0: + resolution: {integrity: sha512-RJ8XvFvpPM/Dmc5SV+dC4y5PCeOhT3x1Hq0NU3rjGeg5a/CqlhZ7uudknPwZFz4aeAXDcbAyaeP7GAo9lvngtA==} + dev: true - http-status-codes@2.3.0: {} + /http2-wrapper@1.0.3: + resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} + engines: {node: '>=10.19.0'} + dependencies: + quick-lru: 5.1.1 + resolve-alpn: 1.2.1 + dev: true - https-proxy-agent@5.0.1: + /https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} dependencies: agent-base: 6.0.2 - debug: 4.3.7 + debug: 4.4.0 transitivePeerDependencies: - supports-color + dev: true - human-id@1.0.2: {} + /human-id@1.0.2: + resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} + dev: true - human-signals@1.1.1: {} + /human-signals@1.1.1: + resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} + engines: {node: '>=8.12.0'} + dev: true - human-signals@2.1.0: {} + /human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} - human-signals@4.3.1: {} + /human-signals@4.3.1: + resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} + engines: {node: '>=14.18.0'} + dev: true - human-signals@5.0.0: {} + /human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + dev: true - humanize-duration@3.32.1: {} + /humanize-duration@3.32.1: + resolution: {integrity: sha512-inh5wue5XdfObhu/IGEMiA1nUXigSGcaKNemcbLRKa7jXYGDZXr3LoT9pTIzq2hPEbld7w/qv9h+ikWGz8fL1g==} + dev: true - husky@8.0.3: {} + /husky@8.0.3: + resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} + engines: {node: '>=14'} + hasBin: true + dev: true - iconv-lite@0.4.24: + /iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 + dev: true - iconv-lite@0.6.3: + /iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 + dev: true - icss-replace-symbols@1.1.0: {} + /icss-replace-symbols@1.1.0: + resolution: {integrity: sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==} + dev: true - icss-utils@5.1.0(postcss@8.4.47): + /icss-utils@5.1.0(postcss@8.4.49): + resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 dependencies: - postcss: 8.4.47 + postcss: 8.4.49 + dev: true - identity-obj-proxy@3.0.0: + /identity-obj-proxy@3.0.0: + resolution: {integrity: sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==} + engines: {node: '>=4'} dependencies: harmony-reflect: 1.6.2 + dev: true - ieee754@1.2.1: {} + /ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - ignore@4.0.6: {} + /ignore@4.0.6: + resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} + engines: {node: '>= 4'} + dev: true - ignore@5.3.2: {} + /ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + dev: true - image-size@1.1.1: + /image-size@1.1.1: + resolution: {integrity: sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==} + engines: {node: '>=16.x'} + hasBin: true dependencies: queue: 6.0.2 - import-cwd@3.0.0: + /import-cwd@3.0.0: + resolution: {integrity: sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==} + engines: {node: '>=8'} dependencies: import-from: 3.0.0 + dev: true - import-fresh@2.0.0: + /import-fresh@2.0.0: + resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} + engines: {node: '>=4'} dependencies: caller-path: 2.0.0 resolve-from: 3.0.0 - import-fresh@3.3.0: + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 + dev: true - import-from@3.0.0: + /import-from@3.0.0: + resolution: {integrity: sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==} + engines: {node: '>=8'} dependencies: resolve-from: 5.0.0 + dev: true - import-lazy@4.0.0: {} + /import-lazy@4.0.0: + resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} + engines: {node: '>=8'} + dev: true - import-local@3.2.0: + /import-local@3.2.0: + resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} + engines: {node: '>=8'} + hasBin: true dependencies: pkg-dir: 4.2.0 resolve-cwd: 3.0.0 + dev: true - imurmurhash@0.1.4: {} + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} - indent-string@4.0.0: {} + /indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + dev: true - inflight@1.0.6: + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. dependencies: once: 1.4.0 wrappy: 1.0.2 - inherits@2.0.4: {} + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - ini@1.3.8: {} + /ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + dev: true - inquirer@7.3.3: + /inquirer@7.3.3: + resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==} + engines: {node: '>=8.0.0'} dependencies: ansi-escapes: 4.3.2 chalk: 4.1.2 @@ -19815,356 +13893,620 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 through: 2.3.8 + dev: true - internal-slot@1.0.7: + /internal-slot@1.1.0: + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} + engines: {node: '>= 0.4'} dependencies: es-errors: 1.3.0 hasown: 2.0.2 - side-channel: 1.0.6 + side-channel: 1.1.0 + dev: true - interpret@1.4.0: {} + /interpret@1.4.0: + resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} + engines: {node: '>= 0.10'} + dev: true - invariant@2.2.4: + /invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} dependencies: loose-envify: 1.4.0 - ip-regex@2.1.0: {} + /ip-regex@2.1.0: + resolution: {integrity: sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==} + engines: {node: '>=4'} + dev: true - ipaddr.js@1.9.1: {} + /ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + dev: true - is-accessor-descriptor@1.0.1: + /is-accessor-descriptor@1.0.1: + resolution: {integrity: sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==} + engines: {node: '>= 0.10'} dependencies: hasown: 2.0.2 + dev: true - is-arguments@1.1.1: + /is-arguments@1.2.0: + resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bound: 1.0.3 has-tostringtag: 1.0.2 - is-array-buffer@3.0.4: + /is-array-buffer@3.0.5: + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 + call-bind: 1.0.8 + call-bound: 1.0.3 + get-intrinsic: 1.2.6 + dev: true - is-arrayish@0.2.1: {} + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - is-async-function@2.0.0: + /is-async-function@2.0.0: + resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.2 + dev: true - is-bigint@1.0.4: + /is-bigint@1.1.0: + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} + engines: {node: '>= 0.4'} dependencies: - has-bigints: 1.0.2 + has-bigints: 1.1.0 + dev: true - is-binary-path@2.1.0: + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} dependencies: binary-extensions: 2.3.0 + dev: true - is-boolean-object@1.1.2: + /is-boolean-object@1.2.1: + resolution: {integrity: sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bound: 1.0.3 has-tostringtag: 1.0.2 + dev: true - is-buffer@1.1.6: {} + /is-buffer@1.1.6: + resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + dev: true - is-callable@1.2.7: {} + /is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} - is-ci@2.0.0: + /is-ci@2.0.0: + resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==} + hasBin: true dependencies: ci-info: 2.0.0 + dev: true - is-core-module@2.15.1: + /is-core-module@2.16.0: + resolution: {integrity: sha512-urTSINYfAYgcbLb0yDQ6egFm6h3Mo1DcF9EkyXSRjjzdHbsulg01qhwWuXdOoUBuTkbQ80KDboXa0vFJ+BDH+g==} + engines: {node: '>= 0.4'} dependencies: hasown: 2.0.2 - is-data-descriptor@1.0.1: + /is-data-descriptor@1.0.1: + resolution: {integrity: sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==} + engines: {node: '>= 0.4'} dependencies: hasown: 2.0.2 + dev: true - is-data-view@1.0.1: + /is-data-view@1.0.2: + resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} + engines: {node: '>= 0.4'} dependencies: - is-typed-array: 1.1.13 + call-bound: 1.0.3 + get-intrinsic: 1.2.6 + is-typed-array: 1.1.15 + dev: true - is-date-object@1.0.5: + /is-date-object@1.1.0: + resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} + engines: {node: '>= 0.4'} dependencies: + call-bound: 1.0.3 has-tostringtag: 1.0.2 + dev: true - is-deflate@1.0.0: {} + /is-deflate@1.0.0: + resolution: {integrity: sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ==} + dev: true - is-descriptor@0.1.7: + /is-descriptor@0.1.7: + resolution: {integrity: sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==} + engines: {node: '>= 0.4'} dependencies: is-accessor-descriptor: 1.0.1 is-data-descriptor: 1.0.1 + dev: true - is-descriptor@1.0.3: + /is-descriptor@1.0.3: + resolution: {integrity: sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==} + engines: {node: '>= 0.4'} dependencies: is-accessor-descriptor: 1.0.1 is-data-descriptor: 1.0.1 + dev: true - is-directory@0.3.1: {} + /is-directory@0.3.1: + resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} + engines: {node: '>=0.10.0'} - is-docker@2.2.1: {} + /is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true - is-extendable@0.1.1: {} + /is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + dev: true - is-extendable@1.0.1: + /is-extendable@1.0.1: + resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} + engines: {node: '>=0.10.0'} dependencies: is-plain-object: 2.0.4 + dev: true - is-extglob@2.1.1: {} + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} - is-finalizationregistry@1.0.2: + /is-finalizationregistry@1.1.1: + resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bound: 1.0.3 + dev: true - is-fullwidth-code-point@2.0.0: {} + /is-fullwidth-code-point@2.0.0: + resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} + engines: {node: '>=4'} - is-fullwidth-code-point@3.0.0: {} + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} - is-fullwidth-code-point@4.0.0: {} + /is-fullwidth-code-point@4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + engines: {node: '>=12'} + dev: true - is-generator-fn@2.1.0: {} + /is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + dev: true - is-generator-function@1.0.10: + /is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.2 - is-glob@4.0.3: + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 - is-gzip@1.0.0: {} - - is-interactive@1.0.0: {} + /is-gzip@1.0.0: + resolution: {integrity: sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ==} + engines: {node: '>=0.10.0'} + dev: true - is-map@2.0.3: {} + /is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} - is-module@1.0.0: {} + /is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + dev: true - is-negative-zero@2.0.3: {} + /is-module@1.0.0: + resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + dev: true - is-number-object@1.0.7: + /is-number-object@1.1.1: + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} + engines: {node: '>= 0.4'} dependencies: + call-bound: 1.0.3 has-tostringtag: 1.0.2 + dev: true - is-number@3.0.0: + /is-number@3.0.0: + resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==} + engines: {node: '>=0.10.0'} dependencies: kind-of: 3.2.2 + dev: true - is-number@7.0.0: {} + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + /is-path-cwd@2.2.0: + resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} + engines: {node: '>=6'} + dev: true - is-path-cwd@2.2.0: {} + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: true - is-path-inside@3.0.3: {} + /is-plain-obj@1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} + dev: true - is-plain-object@2.0.4: + /is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} dependencies: isobject: 3.0.1 - is-plain-object@3.0.1: {} + /is-plain-object@3.0.1: + resolution: {integrity: sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==} + engines: {node: '>=0.10.0'} + dev: true - is-plain-object@5.0.0: {} + /is-plain-object@5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} + dev: true - is-potential-custom-element-name@1.0.1: {} + /is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + dev: true - is-promise@2.2.2: {} + /is-promise@2.2.2: + resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} + dev: true - is-reference@1.2.1: + /is-reference@1.2.1: + resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} dependencies: '@types/estree': 1.0.6 + dev: true - is-regex@1.1.4: + /is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bound: 1.0.3 + gopd: 1.2.0 has-tostringtag: 1.0.2 + hasown: 2.0.2 + dev: true - is-set@2.0.3: {} + /is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + dev: true - is-shared-array-buffer@1.0.3: + /is-shared-array-buffer@1.0.4: + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bound: 1.0.3 + dev: true - is-stream@1.1.0: {} + /is-stream@1.1.0: + resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} + engines: {node: '>=0.10.0'} + dev: true - is-stream@2.0.1: {} + /is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} - is-stream@3.0.0: {} + /is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true - is-string@1.0.7: + /is-string@1.1.1: + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} + engines: {node: '>= 0.4'} dependencies: + call-bound: 1.0.3 has-tostringtag: 1.0.2 + dev: true - is-subdir@1.2.0: + /is-subdir@1.2.0: + resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} + engines: {node: '>=4'} dependencies: better-path-resolve: 1.0.0 + dev: true - is-symbol@1.0.4: + /is-symbol@1.1.1: + resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} + engines: {node: '>= 0.4'} dependencies: - has-symbols: 1.0.3 + call-bound: 1.0.3 + has-symbols: 1.1.0 + safe-regex-test: 1.1.0 + dev: true - is-typed-array@1.1.13: + /is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} dependencies: - which-typed-array: 1.1.15 + which-typed-array: 1.1.18 - is-typedarray@1.0.0: {} + /is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + dev: true - is-unicode-supported@0.1.0: {} + /is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} - is-weakmap@2.0.2: {} + /is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + dev: true - is-weakref@1.0.2: + /is-weakref@1.1.0: + resolution: {integrity: sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bound: 1.0.3 + dev: true - is-weakset@2.0.3: + /is-weakset@2.0.4: + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 + call-bound: 1.0.3 + get-intrinsic: 1.2.6 + dev: true - is-windows@0.2.0: {} + /is-windows@0.2.0: + resolution: {integrity: sha512-n67eJYmXbniZB7RF4I/FTjK1s6RPOCTxhYrVYLRaCt3lF0mpWZPKr3T2LSZAqyjQsxR2qMmGYXXzK0YWwcPM1Q==} + engines: {node: '>=0.10.0'} + dev: true - is-windows@1.0.2: {} + /is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + dev: true - is-wsl@1.1.0: {} + /is-wsl@1.1.0: + resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} + engines: {node: '>=4'} - is-wsl@2.2.0: + /is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} dependencies: is-docker: 2.2.1 - isarray@1.0.0: {} + /isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - isarray@2.0.5: {} + /isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + dev: true - isexe@2.0.0: {} + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - isobject@2.1.0: + /isobject@2.1.0: + resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} + engines: {node: '>=0.10.0'} dependencies: isarray: 1.0.0 + dev: true + + /isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} - isobject@3.0.1: {} + /isomorphic-rslog@0.0.5: + resolution: {integrity: sha512-pkU3vvajRJ0LKLaMFy8Cj7ElbFUdkQKVhUk+DQsVCYsLW4uulU65C2s3l+Sm5OtiOwprzkYYcAIJa/COwCYHWA==} + engines: {node: '>=14.17.6'} + dev: true - isomorphic-ws@5.0.0(ws@8.17.1): + /isomorphic-ws@5.0.0(ws@8.18.0): + resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} + peerDependencies: + ws: '*' dependencies: - ws: 8.17.1 + ws: 8.18.0 + dev: true - isstream@0.1.2: {} + /isstream@0.1.2: + resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} + dev: true - istanbul-lib-coverage@3.2.2: {} + /istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + dev: true - istanbul-lib-hook@3.0.0: + /istanbul-lib-hook@3.0.0: + resolution: {integrity: sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==} + engines: {node: '>=8'} dependencies: append-transform: 2.0.0 + dev: true - istanbul-lib-instrument@4.0.3: + /istanbul-lib-instrument@4.0.3: + resolution: {integrity: sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==} + engines: {node: '>=8'} dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 transitivePeerDependencies: - supports-color + dev: true - istanbul-lib-instrument@5.2.1: + /istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} dependencies: - '@babel/core': 7.25.2 - '@babel/parser': 7.25.8 + '@babel/core': 7.26.0 + '@babel/parser': 7.26.3 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 transitivePeerDependencies: - supports-color + dev: true - istanbul-lib-instrument@6.0.3: + /istanbul-lib-instrument@6.0.3: + resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} + engines: {node: '>=10'} dependencies: - '@babel/core': 7.25.2 - '@babel/parser': 7.25.8 + '@babel/core': 7.26.0 + '@babel/parser': 7.26.3 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 7.6.3 transitivePeerDependencies: - supports-color + dev: true - istanbul-lib-processinfo@2.0.3: + /istanbul-lib-processinfo@2.0.3: + resolution: {integrity: sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==} + engines: {node: '>=8'} dependencies: archy: 1.0.0 - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 istanbul-lib-coverage: 3.2.2 p-map: 3.0.0 rimraf: 3.0.2 uuid: 8.3.2 + dev: true - istanbul-lib-report@3.0.1: + /istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} dependencies: istanbul-lib-coverage: 3.2.2 make-dir: 4.0.0 supports-color: 7.2.0 + dev: true - istanbul-lib-source-maps@4.0.1: + /istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} dependencies: - debug: 4.3.7 + debug: 4.4.0 istanbul-lib-coverage: 3.2.2 source-map: 0.6.1 transitivePeerDependencies: - supports-color + dev: true - istanbul-lib-source-maps@5.0.6: + /istanbul-lib-source-maps@5.0.6: + resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} + engines: {node: '>=10'} dependencies: '@jridgewell/trace-mapping': 0.3.25 - debug: 4.3.7 + debug: 4.4.0 istanbul-lib-coverage: 3.2.2 transitivePeerDependencies: - supports-color + dev: true - istanbul-reports@3.1.7: + /istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + engines: {node: '>=8'} dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 + dev: true - iterator.prototype@1.1.2: + /iterator.prototype@1.1.4: + resolution: {integrity: sha512-x4WH0BWmrMmg4oHHl+duwubhrvczGlyuGAZu3nvrf0UXOfPu8IhZObFEr7DE/iv01YgVZrsOiRcqw2srkKEDIA==} + engines: {node: '>= 0.4'} dependencies: - define-properties: 1.2.1 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 - reflect.getprototypeof: 1.0.6 + define-data-property: 1.1.4 + es-object-atoms: 1.0.0 + get-intrinsic: 1.2.6 + has-symbols: 1.1.0 + reflect.getprototypeof: 1.0.9 set-function-name: 2.0.2 + dev: true - jackspeak@3.4.3: + /jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} dependencies: '@isaacs/cliui': 8.0.2 optionalDependencies: '@pkgjs/parseargs': 0.11.0 + dev: true - jake@10.9.2: + /jake@10.9.2: + resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} + engines: {node: '>=10'} + hasBin: true dependencies: async: 3.2.6 chalk: 4.1.2 filelist: 1.0.4 minimatch: 3.1.2 + dev: true - jest-changed-files@25.5.0: + /jest-changed-files@25.5.0: + resolution: {integrity: sha512-EOw9QEqapsDT7mKF162m8HFzRPbmP8qJQny6ldVOdOVBz3ACgPm/1nAn5fPQ/NDaYhX/AHkrGwwkCncpAVSXcw==} + engines: {node: '>= 8.3'} dependencies: '@jest/types': 25.5.0 execa: 3.4.0 throat: 5.0.0 + dev: true - jest-changed-files@28.1.3: + /jest-changed-files@28.1.3: + resolution: {integrity: sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: execa: 5.1.1 p-limit: 3.1.0 + dev: true - jest-changed-files@29.7.0: + /jest-changed-files@29.7.0: + resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: execa: 5.1.1 jest-util: 29.7.0 p-limit: 3.1.0 + dev: true - jest-circus@28.1.3: + /jest-circus@28.1.3: + resolution: {integrity: sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@jest/environment': 28.1.3 '@jest/expect': 28.1.3 '@jest/test-result': 28.1.3 '@jest/types': 28.1.3 - '@types/node': 16.18.109 + '@types/node': 18.16.9 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -20181,8 +14523,11 @@ snapshots: stack-utils: 2.0.6 transitivePeerDependencies: - supports-color + dev: true - jest-circus@29.7.0: + /jest-circus@29.7.0: + resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/environment': 29.7.0 '@jest/expect': 29.7.0 @@ -20207,8 +14552,12 @@ snapshots: transitivePeerDependencies: - babel-plugin-macros - supports-color + dev: true - jest-cli@25.5.4: + /jest-cli@25.5.4: + resolution: {integrity: sha512-rG8uJkIiOUpnREh1768/N3n27Cm+xPFkSNFO91tgg+8o2rXeVLStz+vkXkGr4UtzH6t1SNbjwoiswd7p4AhHTw==} + engines: {node: '>= 8.3'} + hasBin: true dependencies: '@jest/core': 25.5.4 '@jest/test-result': 25.5.0 @@ -20229,17 +14578,26 @@ snapshots: - canvas - supports-color - utf-8-validate + dev: true - jest-cli@28.1.3(@types/node@18.16.9)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4)): + /jest-cli@28.1.3(@types/node@18.16.9)(ts-node@10.9.1): + resolution: {integrity: sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true dependencies: - '@jest/core': 28.1.3(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4)) + '@jest/core': 28.1.3(ts-node@10.9.1) '@jest/test-result': 28.1.3 '@jest/types': 28.1.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 import-local: 3.2.0 - jest-config: 28.1.3(@types/node@18.16.9)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4)) + jest-config: 28.1.3(@types/node@18.16.9)(ts-node@10.9.1) jest-util: 28.1.3 jest-validate: 28.1.3 prompts: 2.4.2 @@ -20248,17 +14606,26 @@ snapshots: - '@types/node' - supports-color - ts-node + dev: true - jest-cli@29.7.0(@types/node@18.16.9)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4)): + /jest-cli@29.7.0(@types/node@18.16.9)(ts-node@10.9.1): + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true dependencies: - '@jest/core': 29.7.0(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4)) + '@jest/core': 29.7.0(ts-node@10.9.1) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@18.16.9)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4)) + create-jest: 29.7.0(@types/node@18.16.9)(ts-node@10.9.1) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@18.16.9)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4)) + jest-config: 29.7.0(@types/node@18.16.9)(ts-node@10.9.1) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -20267,13 +14634,16 @@ snapshots: - babel-plugin-macros - supports-color - ts-node + dev: true - jest-config@25.5.4: + /jest-config@25.5.4: + resolution: {integrity: sha512-SZwR91SwcdK6bz7Gco8qL7YY2sx8tFJYzvg216DLihTWf+LKY/DoJXpM9nTzYakSyfblbqeU48p/p7Jzy05Atg==} + engines: {node: '>= 8.3'} dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 '@jest/test-sequencer': 25.5.4 '@jest/types': 25.5.0 - babel-jest: 25.5.1(@babel/core@7.25.2) + babel-jest: 25.5.1(@babel/core@7.26.0) chalk: 3.0.0 deepmerge: 4.3.1 glob: 7.2.3 @@ -20294,13 +14664,25 @@ snapshots: - canvas - supports-color - utf-8-validate + dev: true - jest-config@28.1.3(@types/node@18.16.9)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4)): + /jest-config@28.1.3(@types/node@18.16.9)(ts-node@10.9.1): + resolution: {integrity: sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 '@jest/test-sequencer': 28.1.3 '@jest/types': 28.1.3 - babel-jest: 28.1.3(@babel/core@7.25.2) + '@types/node': 18.16.9 + babel-jest: 28.1.3(@babel/core@7.26.0) chalk: 4.1.2 ci-info: 3.9.0 deepmerge: 4.3.1 @@ -20319,18 +14701,28 @@ snapshots: pretty-format: 28.1.3 slash: 3.0.0 strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 18.16.9 - ts-node: 10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4) + ts-node: 10.9.1(@swc/core@1.5.29)(@types/node@18.16.9)(typescript@5.5.4) transitivePeerDependencies: - supports-color + dev: true - jest-config@29.7.0(@types/node@18.16.9)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4)): + /jest-config@29.7.0(@types/node@18.16.9)(ts-node@10.9.1): + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.25.2) + '@types/node': 18.16.9 + babel-jest: 29.7.0(@babel/core@7.26.0) chalk: 4.1.2 ci-info: 3.9.0 deepmerge: 4.3.1 @@ -20349,71 +14741,99 @@ snapshots: pretty-format: 29.7.0 slash: 3.0.0 strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 18.16.9 - ts-node: 10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4) + ts-node: 10.9.1(@swc/core@1.5.29)(@types/node@18.16.9)(typescript@5.5.4) transitivePeerDependencies: - babel-plugin-macros - supports-color + dev: true - jest-diff@25.5.0: + /jest-diff@25.5.0: + resolution: {integrity: sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A==} + engines: {node: '>= 8.3'} dependencies: chalk: 3.0.0 diff-sequences: 25.2.6 jest-get-type: 25.2.6 pretty-format: 25.5.0 + dev: true - jest-diff@28.1.3: + /jest-diff@28.1.3: + resolution: {integrity: sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: chalk: 4.1.2 diff-sequences: 28.1.1 jest-get-type: 28.0.2 pretty-format: 28.1.3 + dev: true - jest-diff@29.7.0: + /jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 diff-sequences: 29.6.3 jest-get-type: 29.6.3 pretty-format: 29.7.0 + dev: true - jest-docblock@25.3.0: + /jest-docblock@25.3.0: + resolution: {integrity: sha512-aktF0kCar8+zxRHxQZwxMy70stc9R1mOmrLsT5VO3pIT0uzGRSDAXxSlz4NqQWpuLjPpuMhPRl7H+5FRsvIQAg==} + engines: {node: '>= 8.3'} dependencies: detect-newline: 3.1.0 + dev: true - jest-docblock@28.1.1: + /jest-docblock@28.1.1: + resolution: {integrity: sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: detect-newline: 3.1.0 + dev: true - jest-docblock@29.7.0: + /jest-docblock@29.7.0: + resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: detect-newline: 3.1.0 + dev: true - jest-each@25.5.0: + /jest-each@25.5.0: + resolution: {integrity: sha512-QBogUxna3D8vtiItvn54xXde7+vuzqRrEeaw8r1s+1TG9eZLVJE5ZkKoSUlqFwRjnlaA4hyKGiu9OlkFIuKnjA==} + engines: {node: '>= 8.3'} dependencies: '@jest/types': 25.5.0 chalk: 3.0.0 jest-get-type: 25.2.6 jest-util: 25.5.0 pretty-format: 25.5.0 + dev: true - jest-each@28.1.3: + /jest-each@28.1.3: + resolution: {integrity: sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@jest/types': 28.1.3 chalk: 4.1.2 jest-get-type: 28.0.2 jest-util: 28.1.3 pretty-format: 28.1.3 + dev: true - jest-each@29.7.0: + /jest-each@29.7.0: + resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 jest-get-type: 29.6.3 jest-util: 29.7.0 pretty-format: 29.7.0 + dev: true - jest-environment-jsdom@25.5.0: + /jest-environment-jsdom@25.5.0: + resolution: {integrity: sha512-7Jr02ydaq4jaWMZLY+Skn8wL5nVIYpWvmeatOHL3tOcV3Zw8sjnPpx+ZdeBfc457p8jCR9J6YCc+Lga0oIy62A==} + engines: {node: '>= 8.3'} dependencies: '@jest/environment': 25.5.0 '@jest/fake-timers': 25.5.0 @@ -20425,8 +14845,16 @@ snapshots: - bufferutil - canvas - utf-8-validate + dev: true - jest-environment-jsdom@29.7.0: + /jest-environment-jsdom@29.7.0: + resolution: {integrity: sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true dependencies: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 @@ -20440,8 +14868,11 @@ snapshots: - bufferutil - supports-color - utf-8-validate + dev: true - jest-environment-node@25.5.0: + /jest-environment-node@25.5.0: + resolution: {integrity: sha512-iuxK6rQR2En9EID+2k+IBs5fCFd919gVVK5BeND82fYeLWPqvRcFNPKu9+gxTwfB5XwBGBvZ0HFQa+cHtIoslA==} + engines: {node: '>= 8.3'} dependencies: '@jest/environment': 25.5.0 '@jest/fake-timers': 25.5.0 @@ -20449,17 +14880,23 @@ snapshots: jest-mock: 25.5.0 jest-util: 25.5.0 semver: 6.3.1 + dev: true - jest-environment-node@28.1.3: + /jest-environment-node@28.1.3: + resolution: {integrity: sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@jest/environment': 28.1.3 '@jest/fake-timers': 28.1.3 '@jest/types': 28.1.3 - '@types/node': 16.18.109 + '@types/node': 18.16.9 jest-mock: 28.1.3 jest-util: 28.1.3 + dev: true - jest-environment-node@29.7.0: + /jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 @@ -20468,13 +14905,23 @@ snapshots: jest-mock: 29.7.0 jest-util: 29.7.0 - jest-get-type@25.2.6: {} + /jest-get-type@25.2.6: + resolution: {integrity: sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==} + engines: {node: '>= 8.3'} + dev: true - jest-get-type@28.0.2: {} + /jest-get-type@28.0.2: + resolution: {integrity: sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dev: true - jest-get-type@29.6.3: {} + /jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-haste-map@25.5.1: + /jest-haste-map@25.5.1: + resolution: {integrity: sha512-dddgh9UZjV7SCDQUrQ+5t9yy8iEgKc1AKqZR9YDww8xsVOtzPQSMVLDChc21+g29oTRexb9/B0bIlZL+sWmvAQ==} + engines: {node: '>= 8.3'} dependencies: '@jest/types': 25.5.0 '@types/graceful-fs': 4.1.9 @@ -20492,8 +14939,11 @@ snapshots: fsevents: 2.3.3 transitivePeerDependencies: - supports-color + dev: true - jest-haste-map@28.1.3: + /jest-haste-map@28.1.3: + resolution: {integrity: sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@jest/types': 28.1.3 '@types/graceful-fs': 4.1.9 @@ -20508,8 +14958,11 @@ snapshots: walker: 1.0.8 optionalDependencies: fsevents: 2.3.3 + dev: true - jest-haste-map@29.7.0: + /jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 @@ -20524,10 +14977,13 @@ snapshots: walker: 1.0.8 optionalDependencies: fsevents: 2.3.3 + dev: true - jest-jasmine2@25.5.4: + /jest-jasmine2@25.5.4: + resolution: {integrity: sha512-9acbWEfbmS8UpdcfqnDO+uBUgKa/9hcRh983IHdM+pKmJPL77G0sWAAK0V0kr5LK3a8cSBfkFSoncXwQlRZfkQ==} + engines: {node: '>= 8.3'} dependencies: - '@babel/traverse': 7.25.7 + '@babel/traverse': 7.26.4 '@jest/environment': 25.5.0 '@jest/source-map': 25.5.0 '@jest/test-result': 25.5.0 @@ -20545,54 +15001,81 @@ snapshots: pretty-format: 25.5.0 throat: 5.0.0 transitivePeerDependencies: + - bufferutil + - canvas - supports-color + - utf-8-validate + dev: true - jest-junit@14.0.1: + /jest-junit@14.0.1: + resolution: {integrity: sha512-h7/wwzPbllgpQhhVcRzRC76/cc89GlazThoV1fDxcALkf26IIlRsu/AcTG64f4nR2WPE3Cbd+i/sVf+NCUHrWQ==} + engines: {node: '>=10.12.0'} dependencies: mkdirp: 1.0.4 strip-ansi: 6.0.1 uuid: 8.3.2 xml: 1.0.1 + dev: true - jest-leak-detector@25.5.0: + /jest-leak-detector@25.5.0: + resolution: {integrity: sha512-rV7JdLsanS8OkdDpZtgBf61L5xZ4NnYLBq72r6ldxahJWWczZjXawRsoHyXzibM5ed7C2QRjpp6ypgwGdKyoVA==} + engines: {node: '>= 8.3'} dependencies: jest-get-type: 25.2.6 pretty-format: 25.5.0 + dev: true - jest-leak-detector@28.1.3: + /jest-leak-detector@28.1.3: + resolution: {integrity: sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: jest-get-type: 28.0.2 pretty-format: 28.1.3 + dev: true - jest-leak-detector@29.7.0: + /jest-leak-detector@29.7.0: + resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-get-type: 29.6.3 pretty-format: 29.7.0 + dev: true - jest-matcher-utils@25.5.0: + /jest-matcher-utils@25.5.0: + resolution: {integrity: sha512-VWI269+9JS5cpndnpCwm7dy7JtGQT30UHfrnM3mXl22gHGt/b7NkjBqXfbhZ8V4B7ANUsjK18PlSBmG0YH7gjw==} + engines: {node: '>= 8.3'} dependencies: chalk: 3.0.0 jest-diff: 25.5.0 jest-get-type: 25.2.6 pretty-format: 25.5.0 + dev: true - jest-matcher-utils@28.1.3: + /jest-matcher-utils@28.1.3: + resolution: {integrity: sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: chalk: 4.1.2 jest-diff: 28.1.3 jest-get-type: 28.0.2 pretty-format: 28.1.3 + dev: true - jest-matcher-utils@29.7.0: + /jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 jest-diff: 29.7.0 jest-get-type: 29.6.3 pretty-format: 29.7.0 + dev: true - jest-message-util@25.5.0: + /jest-message-util@25.5.0: + resolution: {integrity: sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA==} + engines: {node: '>= 8.3'} dependencies: - '@babel/code-frame': 7.25.7 + '@babel/code-frame': 7.26.2 '@jest/types': 25.5.0 '@types/stack-utils': 1.0.1 chalk: 3.0.0 @@ -20600,10 +15083,13 @@ snapshots: micromatch: 4.0.8 slash: 3.0.0 stack-utils: 1.0.5 + dev: true - jest-message-util@28.1.3: + /jest-message-util@28.1.3: + resolution: {integrity: sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@babel/code-frame': 7.24.7 + '@babel/code-frame': 7.26.2 '@jest/types': 28.1.3 '@types/stack-utils': 2.0.3 chalk: 4.1.2 @@ -20612,10 +15098,13 @@ snapshots: pretty-format: 28.1.3 slash: 3.0.0 stack-utils: 2.0.6 + dev: true - jest-message-util@29.7.0: + /jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/code-frame': 7.25.7 + '@babel/code-frame': 7.26.2 '@jest/types': 29.6.3 '@types/stack-utils': 2.0.3 chalk: 4.1.2 @@ -20625,55 +15114,98 @@ snapshots: slash: 3.0.0 stack-utils: 2.0.6 - jest-mock@25.5.0: + /jest-mock@25.5.0: + resolution: {integrity: sha512-eXWuTV8mKzp/ovHc5+3USJMYsTBhyQ+5A1Mak35dey/RG8GlM4YWVylZuGgVXinaW6tpvk/RSecmF37FKUlpXA==} + engines: {node: '>= 8.3'} dependencies: '@jest/types': 25.5.0 + dev: true - jest-mock@27.5.1: + /jest-mock@27.5.1: + resolution: {integrity: sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 - '@types/node': 16.18.109 + '@types/node': 18.16.9 + dev: true - jest-mock@28.1.3: + /jest-mock@28.1.3: + resolution: {integrity: sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@jest/types': 28.1.3 '@types/node': 18.16.9 + dev: true - jest-mock@29.7.0: + /jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 '@types/node': 18.16.9 jest-util: 29.7.0 - jest-playwright-preset@2.0.0(jest-circus@28.1.3)(jest-environment-node@28.1.3)(jest-runner@28.1.3)(jest@28.1.3(@types/node@18.16.9)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4))): + /jest-playwright-preset@2.0.0(jest-circus@28.1.3)(jest-environment-node@28.1.3)(jest-runner@28.1.3)(jest@28.1.3): + resolution: {integrity: sha512-pV5ruTJJMen3lwshUL4dlSqLlP8z4q9MXqWJkmy+sB6HYfzXoqBHzhl+5hslznhnSVTe4Dwu+reiiwcUJpYUbw==} + peerDependencies: + jest: ^28.0.0 + jest-circus: ^28.0.0 + jest-environment-node: ^28.0.0 + jest-runner: ^28.0.0 dependencies: expect-playwright: 0.8.0 - jest: 28.1.3(@types/node@18.16.9)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4)) + jest: 28.1.3(@types/node@18.16.9)(ts-node@10.9.1) jest-circus: 28.1.3 jest-environment-node: 28.1.3 jest-process-manager: 0.3.1 jest-runner: 28.1.3 nyc: 15.1.0 - playwright-core: 1.47.2 + playwright-core: 1.49.1 rimraf: 3.0.2 uuid: 8.3.2 transitivePeerDependencies: - debug - supports-color + dev: true - jest-pnp-resolver@1.2.3(jest-resolve@25.5.1): - optionalDependencies: + /jest-pnp-resolver@1.2.3(jest-resolve@25.5.1): + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + dependencies: jest-resolve: 25.5.1 + dev: true - jest-pnp-resolver@1.2.3(jest-resolve@28.1.3): - optionalDependencies: + /jest-pnp-resolver@1.2.3(jest-resolve@28.1.3): + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + dependencies: jest-resolve: 28.1.3 + dev: true - jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): - optionalDependencies: + /jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + dependencies: jest-resolve: 29.7.0 + dev: true - jest-process-manager@0.3.1: + /jest-process-manager@0.3.1: + resolution: {integrity: sha512-x9W54UgZ7IkzUHgXtnI1x4GKOVjxtwW0CA/7yGbTHtT/YhENO0Lic2yfVyC/gekn7OIEMcQmy0L1r9WLQABfqw==} dependencies: '@types/wait-on': 5.3.4 chalk: 4.1.2 @@ -20688,38 +15220,63 @@ snapshots: transitivePeerDependencies: - debug - supports-color + dev: true - jest-react-native@18.0.0(react-native@0.74.1(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(@types/react@18.3.1)(react@18.3.1)): + /jest-react-native@18.0.0(react-native@0.74.1): + resolution: {integrity: sha512-BPL0WBX1kx+qo4KB92o82pcq4uFXH6gmYtN7DDj+etMK6pvtWwPFWpvT9JHmaS96wP5Xf9Vq2ilAxXycgHeMog==} + peerDependencies: + react-native: '>=0.38.0' dependencies: - react-native: 0.74.1(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(@types/react@18.3.1)(react@18.3.1) + react-native: 0.74.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0)(@types/react@18.3.1)(react@18.3.1) + dev: true - jest-regex-util@25.2.6: {} + /jest-regex-util@25.2.6: + resolution: {integrity: sha512-KQqf7a0NrtCkYmZZzodPftn7fL1cq3GQAFVMn5Hg8uKx/fIenLEobNanUxb7abQ1sjADHBseG/2FGpsv/wr+Qw==} + engines: {node: '>= 8.3'} + dev: true - jest-regex-util@28.0.2: {} + /jest-regex-util@28.0.2: + resolution: {integrity: sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dev: true - jest-regex-util@29.6.3: {} + /jest-regex-util@29.6.3: + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true - jest-resolve-dependencies@25.5.4: + /jest-resolve-dependencies@25.5.4: + resolution: {integrity: sha512-yFmbPd+DAQjJQg88HveObcGBA32nqNZ02fjYmtL16t1xw9bAttSn5UGRRhzMHIQbsep7znWvAvnD4kDqOFM0Uw==} + engines: {node: '>= 8.3'} dependencies: '@jest/types': 25.5.0 jest-regex-util: 25.2.6 jest-snapshot: 25.5.1 + dev: true - jest-resolve-dependencies@28.1.3: + /jest-resolve-dependencies@28.1.3: + resolution: {integrity: sha512-qa0QO2Q0XzQoNPouMbCc7Bvtsem8eQgVPNkwn9LnS+R2n8DaVDPL/U1gngC0LTl1RYXJU0uJa2BMC2DbTfFrHA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: jest-regex-util: 28.0.2 jest-snapshot: 28.1.3 transitivePeerDependencies: - supports-color + dev: true - jest-resolve-dependencies@29.7.0: + /jest-resolve-dependencies@29.7.0: + resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-regex-util: 29.6.3 jest-snapshot: 29.7.0 transitivePeerDependencies: - supports-color + dev: true - jest-resolve@25.5.1: + /jest-resolve@25.5.1: + resolution: {integrity: sha512-Hc09hYch5aWdtejsUZhA+vSzcotf7fajSlPA6EZPE1RmPBAD39XtJhvHWFStid58iit4IPDLI/Da4cwdDmAHiQ==} + engines: {node: '>= 8.3'} dependencies: '@jest/types': 25.5.0 browser-resolve: 1.11.3 @@ -20728,10 +15285,13 @@ snapshots: jest-pnp-resolver: 1.2.3(jest-resolve@25.5.1) read-pkg-up: 7.0.1 realpath-native: 2.0.0 - resolve: 1.22.8 + resolve: 1.22.10 slash: 3.0.0 + dev: true - jest-resolve@28.1.3: + /jest-resolve@28.1.3: + resolution: {integrity: sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: chalk: 4.1.2 graceful-fs: 4.2.11 @@ -20739,11 +15299,14 @@ snapshots: jest-pnp-resolver: 1.2.3(jest-resolve@28.1.3) jest-util: 28.1.3 jest-validate: 28.1.3 - resolve: 1.22.8 + resolve: 1.22.10 resolve.exports: 1.1.1 slash: 3.0.0 + dev: true - jest-resolve@29.7.0: + /jest-resolve@29.7.0: + resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 graceful-fs: 4.2.11 @@ -20751,11 +15314,14 @@ snapshots: jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) jest-util: 29.7.0 jest-validate: 29.7.0 - resolve: 1.22.8 - resolve.exports: 2.0.2 + resolve: 1.22.10 + resolve.exports: 2.0.3 slash: 3.0.0 + dev: true - jest-runner@25.5.4: + /jest-runner@25.5.4: + resolution: {integrity: sha512-V/2R7fKZo6blP8E9BL9vJ8aTU4TH2beuqGNxHbxi6t14XzTb+x90B3FRgdvuHm41GY8ch4xxvf0ATH4hdpjTqg==} + engines: {node: '>= 8.3'} dependencies: '@jest/console': 25.5.0 '@jest/environment': 25.5.0 @@ -20781,15 +15347,18 @@ snapshots: - canvas - supports-color - utf-8-validate + dev: true - jest-runner@28.1.3: + /jest-runner@28.1.3: + resolution: {integrity: sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@jest/console': 28.1.3 '@jest/environment': 28.1.3 '@jest/test-result': 28.1.3 '@jest/transform': 28.1.3 '@jest/types': 28.1.3 - '@types/node': 16.18.109 + '@types/node': 18.16.9 chalk: 4.1.2 emittery: 0.10.2 graceful-fs: 4.2.11 @@ -20807,8 +15376,11 @@ snapshots: source-map-support: 0.5.13 transitivePeerDependencies: - supports-color + dev: true - jest-runner@29.7.0: + /jest-runner@29.7.0: + resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/console': 29.7.0 '@jest/environment': 29.7.0 @@ -20833,8 +15405,12 @@ snapshots: source-map-support: 0.5.13 transitivePeerDependencies: - supports-color + dev: true - jest-runtime@25.5.4: + /jest-runtime@25.5.4: + resolution: {integrity: sha512-RWTt8LeWh3GvjYtASH2eezkc8AehVoWKK20udV6n3/gC87wlTbE1kIA+opCvNWyyPeBs6ptYsc6nyHUb1GlUVQ==} + engines: {node: '>= 8.3'} + hasBin: true dependencies: '@jest/console': 25.5.0 '@jest/environment': 25.5.0 @@ -20867,8 +15443,11 @@ snapshots: - canvas - supports-color - utf-8-validate + dev: true - jest-runtime@28.1.3: + /jest-runtime@28.1.3: + resolution: {integrity: sha512-NU+881ScBQQLc1JHG5eJGU7Ui3kLKrmwCPPtYsJtBykixrM2OhVQlpMmFWJjMyDfdkGgBMNjXCGB/ebzsgNGQw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@jest/environment': 28.1.3 '@jest/fake-timers': 28.1.3 @@ -20894,8 +15473,11 @@ snapshots: strip-bom: 4.0.0 transitivePeerDependencies: - supports-color + dev: true - jest-runtime@29.7.0: + /jest-runtime@29.7.0: + resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 @@ -20921,18 +15503,26 @@ snapshots: strip-bom: 4.0.0 transitivePeerDependencies: - supports-color + dev: true - jest-serializer-html@7.1.0: + /jest-serializer-html@7.1.0: + resolution: {integrity: sha512-xYL2qC7kmoYHJo8MYqJkzrl/Fdlx+fat4U1AqYg+kafqwcKPiMkOcjWHPKhueuNEgr+uemhGc+jqXYiwCyRyLA==} dependencies: diffable-html: 4.1.0 + dev: true - jest-serializer@25.5.0: + /jest-serializer@25.5.0: + resolution: {integrity: sha512-LxD8fY1lByomEPflwur9o4e2a5twSQ7TaVNLlFUuToIdoJuBt8tzHfCsZ42Ok6LkKXWzFWf3AGmheuLAA7LcCA==} + engines: {node: '>= 8.3'} dependencies: graceful-fs: 4.2.11 + dev: true - jest-snapshot@25.5.1: + /jest-snapshot@25.5.1: + resolution: {integrity: sha512-C02JE1TUe64p2v1auUJ2ze5vcuv32tkv9PyhEb318e8XOKF7MOyXdJ7kdjbvrp3ChPLU2usI7Rjxs97Dj5P0uQ==} + engines: {node: '>= 8.3'} dependencies: - '@babel/types': 7.25.8 + '@babel/types': 7.26.3 '@jest/types': 25.5.0 '@types/prettier': 1.19.1 chalk: 3.0.0 @@ -20947,20 +15537,23 @@ snapshots: natural-compare: 1.4.0 pretty-format: 25.5.0 semver: 6.3.1 + dev: true - jest-snapshot@28.1.3: + /jest-snapshot@28.1.3: + resolution: {integrity: sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: - '@babel/core': 7.25.2 - '@babel/generator': 7.25.6 - '@babel/plugin-syntax-typescript': 7.25.4(@babel/core@7.25.2) - '@babel/traverse': 7.25.7 - '@babel/types': 7.25.8 + '@babel/core': 7.26.0 + '@babel/generator': 7.26.3 + '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0) + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.3 '@jest/expect-utils': 28.1.3 '@jest/transform': 28.1.3 '@jest/types': 28.1.3 '@types/babel__traverse': 7.20.6 '@types/prettier': 2.7.3 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.25.2) + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.0) chalk: 4.1.2 expect: 28.1.3 graceful-fs: 4.2.11 @@ -20975,18 +15568,21 @@ snapshots: semver: 7.6.3 transitivePeerDependencies: - supports-color + dev: true - jest-snapshot@29.7.0: + /jest-snapshot@29.7.0: + resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.25.2 - '@babel/generator': 7.25.7 - '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-syntax-typescript': 7.25.4(@babel/core@7.25.2) - '@babel/types': 7.25.8 + '@babel/core': 7.26.0 + '@babel/generator': 7.26.3 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0) + '@babel/types': 7.26.3 '@jest/expect-utils': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.25.2) + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.0) chalk: 4.1.2 expect: 29.7.0 graceful-fs: 4.2.11 @@ -21000,16 +15596,22 @@ snapshots: semver: 7.6.3 transitivePeerDependencies: - supports-color + dev: true - jest-util@25.5.0: + /jest-util@25.5.0: + resolution: {integrity: sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA==} + engines: {node: '>= 8.3'} dependencies: '@jest/types': 25.5.0 chalk: 3.0.0 graceful-fs: 4.2.11 is-ci: 2.0.0 make-dir: 3.1.0 + dev: true - jest-util@28.1.3: + /jest-util@28.1.3: + resolution: {integrity: sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@jest/types': 28.1.3 '@types/node': 18.16.9 @@ -21017,8 +15619,11 @@ snapshots: ci-info: 3.9.0 graceful-fs: 4.2.11 picomatch: 2.3.1 + dev: true - jest-util@29.7.0: + /jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 '@types/node': 18.16.9 @@ -21027,7 +15632,9 @@ snapshots: graceful-fs: 4.2.11 picomatch: 2.3.1 - jest-validate@25.5.0: + /jest-validate@25.5.0: + resolution: {integrity: sha512-okUFKqhZIpo3jDdtUXUZ2LxGUZJIlfdYBvZb1aczzxrlyMlqdnnws9MOxezoLGhSaFc2XYaHNReNQfj5zPIWyQ==} + engines: {node: '>= 8.3'} dependencies: '@jest/types': 25.5.0 camelcase: 5.3.1 @@ -21035,8 +15642,11 @@ snapshots: jest-get-type: 25.2.6 leven: 3.1.0 pretty-format: 25.5.0 + dev: true - jest-validate@28.1.3: + /jest-validate@28.1.3: + resolution: {integrity: sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@jest/types': 28.1.3 camelcase: 6.3.0 @@ -21044,8 +15654,11 @@ snapshots: jest-get-type: 28.0.2 leven: 3.1.0 pretty-format: 28.1.3 + dev: true - jest-validate@29.7.0: + /jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 camelcase: 6.3.0 @@ -21054,7 +15667,8 @@ snapshots: leven: 3.1.0 pretty-format: 29.7.0 - jest-watch-typeahead@0.5.0: + /jest-watch-typeahead@0.5.0: + resolution: {integrity: sha512-4r36w9vU8+rdg48hj0Z7TvcSqVP6Ao8dk04grlHQNgduyCB0SqrI0xWIl85ZhXrzYvxQ0N5H+rRLAejkQzEHeQ==} dependencies: ansi-escapes: 4.3.2 chalk: 3.0.0 @@ -21063,19 +15677,27 @@ snapshots: slash: 3.0.0 string-length: 3.1.0 strip-ansi: 6.0.1 + dev: true - jest-watch-typeahead@2.2.2(jest@28.1.3(@types/node@18.16.9)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4))): + /jest-watch-typeahead@2.2.2(jest@28.1.3): + resolution: {integrity: sha512-+QgOFW4o5Xlgd6jGS5X37i08tuuXNW8X0CV9WNFi+3n8ExCIP+E1melYhvYLjv5fE6D0yyzk74vsSO8I6GqtvQ==} + engines: {node: ^14.17.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + jest: ^27.0.0 || ^28.0.0 || ^29.0.0 dependencies: ansi-escapes: 6.2.1 - chalk: 5.3.0 - jest: 28.1.3(@types/node@18.16.9)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4)) + chalk: 5.4.0 + jest: 28.1.3(@types/node@18.16.9)(ts-node@10.9.1) jest-regex-util: 29.6.3 jest-watcher: 29.7.0 slash: 5.1.0 string-length: 5.0.1 strip-ansi: 7.1.0 + dev: true - jest-watcher@25.5.0: + /jest-watcher@25.5.0: + resolution: {integrity: sha512-XrSfJnVASEl+5+bb51V0Q7WQx65dTSk7NL4yDdVjPnRNpM0hG+ncFmDYJo9O8jaSRcAitVbuVawyXCRoxGrT5Q==} + engines: {node: '>= 8.3'} dependencies: '@jest/test-result': 25.5.0 '@jest/types': 25.5.0 @@ -21083,8 +15705,11 @@ snapshots: chalk: 3.0.0 jest-util: 25.5.0 string-length: 3.1.0 + dev: true - jest-watcher@28.1.3: + /jest-watcher@28.1.3: + resolution: {integrity: sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@jest/test-result': 28.1.3 '@jest/types': 28.1.3 @@ -21094,8 +15719,11 @@ snapshots: emittery: 0.10.2 jest-util: 28.1.3 string-length: 4.0.2 + dev: true - jest-watcher@29.7.0: + /jest-watcher@29.7.0: + resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 @@ -21105,37 +15733,55 @@ snapshots: emittery: 0.13.1 jest-util: 29.7.0 string-length: 4.0.2 + dev: true - jest-worker@24.9.0: + /jest-worker@24.9.0: + resolution: {integrity: sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==} + engines: {node: '>= 6'} dependencies: merge-stream: 2.0.0 supports-color: 6.1.0 + dev: true - jest-worker@25.5.0: + /jest-worker@25.5.0: + resolution: {integrity: sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==} + engines: {node: '>= 8.3'} dependencies: merge-stream: 2.0.0 supports-color: 7.2.0 + dev: true - jest-worker@27.5.1: + /jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} dependencies: '@types/node': 18.16.9 merge-stream: 2.0.0 supports-color: 8.1.1 + dev: true - jest-worker@28.1.3: + /jest-worker@28.1.3: + resolution: {integrity: sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@types/node': 18.16.9 merge-stream: 2.0.0 supports-color: 8.1.1 + dev: true - jest-worker@29.7.0: + /jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@types/node': 18.16.9 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 - jest@25.5.4: + /jest@25.5.4: + resolution: {integrity: sha512-hHFJROBTqZahnO+X+PMtT6G2/ztqAZJveGqz//FnWWHurizkD05PQGzRZOhF3XP6z7SJmL+5tCfW8qV06JypwQ==} + engines: {node: '>= 8.3'} + hasBin: true dependencies: '@jest/core': 25.5.4 import-local: 3.2.0 @@ -21145,33 +15791,55 @@ snapshots: - canvas - supports-color - utf-8-validate + dev: true - jest@28.1.3(@types/node@18.16.9)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4)): + /jest@28.1.3(@types/node@18.16.9)(ts-node@10.9.1): + resolution: {integrity: sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true dependencies: - '@jest/core': 28.1.3(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4)) + '@jest/core': 28.1.3(ts-node@10.9.1) '@jest/types': 28.1.3 import-local: 3.2.0 - jest-cli: 28.1.3(@types/node@18.16.9)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4)) + jest-cli: 28.1.3(@types/node@18.16.9)(ts-node@10.9.1) transitivePeerDependencies: - '@types/node' - supports-color - ts-node + dev: true - jest@29.7.0(@types/node@18.16.9)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4)): + /jest@29.7.0(@types/node@18.16.9)(ts-node@10.9.1): + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true dependencies: - '@jest/core': 29.7.0(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4)) + '@jest/core': 29.7.0(ts-node@10.9.1) '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@18.16.9)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4)) + jest-cli: 29.7.0(@types/node@18.16.9)(ts-node@10.9.1) transitivePeerDependencies: - '@types/node' - babel-plugin-macros - supports-color - ts-node + dev: true - jju@1.4.0: {} + /jju@1.4.0: + resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} + dev: true - joi@17.13.3: + /joi@17.13.3: + resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} dependencies: '@hapi/hoek': 9.3.0 '@hapi/topo': 5.1.0 @@ -21179,44 +15847,65 @@ snapshots: '@sideway/formula': 3.0.1 '@sideway/pinpoint': 2.0.0 - joycon@3.1.1: {} + /joycon@3.1.1: + resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} + engines: {node: '>=10'} + dev: true - jpjs@1.2.1: {} + /jpjs@1.2.1: + resolution: {integrity: sha512-GxJWybWU4NV0RNKi6EIqk6IRPOTqd/h+U7sbtyuD7yUISUzV78LdHnq2xkevJsTlz/EImux4sWj+wfMiwKLkiw==} + dev: true - js-tokens@4.0.0: {} + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-tokens@9.0.0: {} + /js-tokens@9.0.1: + resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} + dev: true - js-yaml@3.14.1: + /js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true dependencies: argparse: 1.0.10 esprima: 4.0.1 - js-yaml@4.1.0: + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true dependencies: argparse: 2.0.1 + dev: true - jsbn@0.1.1: {} + /jsbn@0.1.1: + resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} + dev: true - jsc-android@250231.0.0: {} + /jsc-android@250231.0.0: + resolution: {integrity: sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw==} - jsc-safe-url@0.2.4: {} + /jsc-safe-url@0.2.4: + resolution: {integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==} - jscodeshift@0.14.0(@babel/preset-env@7.25.8(@babel/core@7.25.2)): + /jscodeshift@0.14.0(@babel/preset-env@7.26.0): + resolution: {integrity: sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==} + hasBin: true + peerDependencies: + '@babel/preset-env': ^7.1.6 dependencies: - '@babel/core': 7.25.2 - '@babel/parser': 7.25.8 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.25.2) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.25.2) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.25.2) - '@babel/plugin-transform-modules-commonjs': 7.25.7(@babel/core@7.25.2) - '@babel/preset-env': 7.25.8(@babel/core@7.25.2) - '@babel/preset-flow': 7.24.7(@babel/core@7.25.2) - '@babel/preset-typescript': 7.24.7(@babel/core@7.25.2) - '@babel/register': 7.24.6(@babel/core@7.25.2) - babel-core: 7.0.0-bridge.0(@babel/core@7.25.2) + '@babel/core': 7.26.0 + '@babel/parser': 7.26.3 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.26.0) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.26.0) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.0) + '@babel/preset-env': 7.26.0(@babel/core@7.26.0) + '@babel/preset-flow': 7.25.9(@babel/core@7.26.0) + '@babel/preset-typescript': 7.26.0(@babel/core@7.26.0) + '@babel/register': 7.25.9(@babel/core@7.26.0) + babel-core: 7.0.0-bridge.0(@babel/core@7.26.0) chalk: 4.1.2 - flow-parser: 0.246.0 + flow-parser: 0.257.1 graceful-fs: 4.2.11 micromatch: 4.0.8 neo-async: 2.6.2 @@ -21227,9 +15916,18 @@ snapshots: transitivePeerDependencies: - supports-color - jsdoc-type-pratt-parser@4.1.0: {} + /jsdoc-type-pratt-parser@4.1.0: + resolution: {integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==} + engines: {node: '>=12.0.0'} - jsdom@15.2.1: + /jsdom@15.2.1: + resolution: {integrity: sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g==} + engines: {node: '>=8'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true dependencies: abab: 2.0.6 acorn: 7.4.1 @@ -21241,7 +15939,7 @@ snapshots: domexception: 1.0.1 escodegen: 1.14.3 html-encoding-sniffer: 1.0.2 - nwsapi: 2.2.12 + nwsapi: 2.2.16 parse5: 5.1.0 pn: 1.1.0 request: 2.88.2 @@ -21260,11 +15958,19 @@ snapshots: transitivePeerDependencies: - bufferutil - utf-8-validate + dev: true - jsdom@20.0.3: + /jsdom@20.0.3: + resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} + engines: {node: '>=14'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true dependencies: abab: 2.0.6 - acorn: 8.12.1 + acorn: 8.14.0 acorn-globals: 7.0.1 cssom: 0.5.0 cssstyle: 2.3.0 @@ -21272,13 +15978,13 @@ snapshots: decimal.js: 10.4.3 domexception: 4.0.0 escodegen: 2.1.0 - form-data: 4.0.0 + form-data: 4.0.1 html-encoding-sniffer: 3.0.0 http-proxy-agent: 5.0.0 https-proxy-agent: 5.0.1 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.12 - parse5: 7.1.2 + nwsapi: 2.2.16 + parse5: 7.2.1 saxes: 6.0.0 symbol-tree: 3.2.4 tough-cookie: 4.1.4 @@ -21287,27 +15993,35 @@ snapshots: whatwg-encoding: 2.0.0 whatwg-mimetype: 3.0.0 whatwg-url: 11.0.0 - ws: 8.17.1 + ws: 8.18.0 xml-name-validator: 4.0.0 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate + dev: true - jsdom@22.1.0: + /jsdom@22.1.0: + resolution: {integrity: sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==} + engines: {node: '>=16'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true dependencies: abab: 2.0.6 cssstyle: 3.0.0 data-urls: 4.0.0 decimal.js: 10.4.3 domexception: 4.0.0 - form-data: 4.0.0 + form-data: 4.0.1 html-encoding-sniffer: 3.0.0 http-proxy-agent: 5.0.0 https-proxy-agent: 5.0.1 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.12 - parse5: 7.1.2 + nwsapi: 2.2.16 + parse5: 7.2.1 rrweb-cssom: 0.6.0 saxes: 6.0.0 symbol-tree: 3.2.4 @@ -21317,63 +16031,106 @@ snapshots: whatwg-encoding: 2.0.0 whatwg-mimetype: 3.0.0 whatwg-url: 12.0.1 - ws: 8.17.1 + ws: 8.18.0 xml-name-validator: 4.0.0 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate + dev: true - jsesc@0.5.0: {} - - jsesc@2.5.2: {} + /jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} + hasBin: true - jsesc@3.0.2: {} + /jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true - json-buffer@3.0.1: {} + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + dev: true - json-parse-better-errors@1.0.2: {} + /json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} - json-parse-even-better-errors@2.3.1: {} + /json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: true - json-schema-traverse@0.4.1: {} + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: true - json-schema-traverse@1.0.0: {} + /json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + dev: true - json-schema@0.4.0: {} + /json-schema@0.4.0: + resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} + dev: true - json-stable-stringify-without-jsonify@1.0.1: {} + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: true - json-stringify-safe@5.0.1: {} + /json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + dev: true - json5@1.0.2: + /json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true dependencies: minimist: 1.2.8 + dev: true - json5@2.2.3: {} + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true - jsonc-eslint-parser@2.4.0: + /jsonc-eslint-parser@2.4.0: + resolution: {integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.12.1 + acorn: 8.14.0 eslint-visitor-keys: 3.4.3 espree: 9.6.1 semver: 7.6.3 + dev: true + + /jsonc-parser@3.2.0: + resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + dev: true - jsonc-parser@3.2.0: {} + /jsonc-parser@3.3.1: + resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} + dev: true - jsonfile@4.0.0: + /jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: graceful-fs: 4.2.11 - jsonfile@6.1.0: + /jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} dependencies: universalify: 2.0.1 optionalDependencies: graceful-fs: 4.2.11 + dev: true - jsonparse@1.3.1: {} + /jsonparse@1.3.1: + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} + engines: {'0': node >= 0.2.0} + dev: true - jsonwebtoken@9.0.2: + /jsonwebtoken@9.0.2: + resolution: {integrity: sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==} + engines: {node: '>=12', npm: '>=6'} dependencies: jws: 3.2.2 lodash.includes: 4.3.0 @@ -21385,76 +16142,115 @@ snapshots: lodash.once: 4.1.1 ms: 2.1.3 semver: 7.6.3 + dev: true - jsprim@1.4.2: + /jsprim@1.4.2: + resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} + engines: {node: '>=0.6.0'} dependencies: assert-plus: 1.0.0 extsprintf: 1.3.0 json-schema: 0.4.0 verror: 1.10.0 + dev: true - jsprim@2.0.2: + /jsprim@2.0.2: + resolution: {integrity: sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==} + engines: {'0': node >=0.6.0} dependencies: assert-plus: 1.0.0 extsprintf: 1.3.0 json-schema: 0.4.0 verror: 1.10.0 + dev: true - jsx-ast-utils@3.3.5: + /jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} dependencies: array-includes: 3.1.8 - array.prototype.flat: 1.3.2 - object.assign: 4.1.5 - object.values: 1.2.0 + array.prototype.flat: 1.3.3 + object.assign: 4.1.7 + object.values: 1.2.1 + dev: true - jwa@1.4.1: + /jwa@1.4.1: + resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==} dependencies: buffer-equal-constant-time: 1.0.1 ecdsa-sig-formatter: 1.0.11 safe-buffer: 5.2.1 + dev: true - jws@3.2.2: + /jws@3.2.2: + resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} dependencies: jwa: 1.4.1 safe-buffer: 5.2.1 + dev: true - keygrip@1.1.0: + /keygrip@1.1.0: + resolution: {integrity: sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==} + engines: {node: '>= 0.6'} dependencies: tsscmp: 1.0.6 + dev: true - keyv@4.5.4: + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} dependencies: json-buffer: 3.0.1 + dev: true - kind-of@3.2.2: + /kind-of@3.2.2: + resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} + engines: {node: '>=0.10.0'} dependencies: is-buffer: 1.1.6 + dev: true - kind-of@4.0.0: + /kind-of@4.0.0: + resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==} + engines: {node: '>=0.10.0'} dependencies: is-buffer: 1.1.6 + dev: true - kind-of@6.0.3: {} + /kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} - kleur@3.0.3: {} + /kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} - kleur@4.1.5: {} + /kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + dev: true - koa-compose@4.1.0: {} + /koa-compose@4.1.0: + resolution: {integrity: sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==} + dev: true - koa-convert@2.0.0: + /koa-convert@2.0.0: + resolution: {integrity: sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==} + engines: {node: '>= 10'} dependencies: co: 4.6.0 koa-compose: 4.1.0 + dev: true - koa@2.15.3: + /koa@2.15.3: + resolution: {integrity: sha512-j/8tY9j5t+GVMLeioLaxweJiKUayFhlGqNTzf2ZGwL0ZCQijd2RLHK0SLW5Tsko8YyyqCZC2cojIb0/s62qTAg==} + engines: {node: ^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4} dependencies: accepts: 1.3.8 cache-content-type: 1.0.1 content-disposition: 0.5.4 content-type: 1.0.5 cookies: 0.9.1 - debug: 4.3.7 + debug: 4.4.0 delegates: 1.0.0 depd: 2.0.0 destroy: 1.2.0 @@ -21474,58 +16270,84 @@ snapshots: vary: 1.1.2 transitivePeerDependencies: - supports-color + dev: true - kolorist@1.8.0: {} - - language-subtag-registry@0.3.23: {} + /kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + dev: true - language-tags@1.0.5: - dependencies: - language-subtag-registry: 0.3.23 + /language-subtag-registry@0.3.23: + resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} + dev: true - language-tags@1.0.9: + /language-tags@1.0.5: + resolution: {integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==} dependencies: language-subtag-registry: 0.3.23 + dev: true - lazy-universal-dotenv@4.0.0: + /lazy-universal-dotenv@4.0.0: + resolution: {integrity: sha512-aXpZJRnTkpK6gQ/z4nk+ZBLd/Qdp118cvPruLSIQzQNRhKwEcdXCOzXuF55VDqIiuAaY3UGZ10DJtvZzDcvsxg==} + engines: {node: '>=14.0.0'} dependencies: app-root-dir: 1.0.2 - dotenv: 16.4.5 + dotenv: 16.4.7 dotenv-expand: 10.0.0 + dev: true - leven@3.1.0: {} + /leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} - levn@0.3.0: + /levn@0.3.0: + resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} + engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.1.2 type-check: 0.3.2 + dev: true - levn@0.4.1: + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 + dev: true - lighthouse-logger@1.4.2: + /lighthouse-logger@1.4.2: + resolution: {integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==} dependencies: debug: 2.6.9 marky: 1.2.5 transitivePeerDependencies: - supports-color - lilconfig@2.1.0: {} + /lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + dev: true - lines-and-columns@1.2.4: {} + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: true - lines-and-columns@2.0.3: {} + /lines-and-columns@2.0.3: + resolution: {integrity: sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true - lint-staged@13.3.0(enquirer@2.4.1): + /lint-staged@13.3.0: + resolution: {integrity: sha512-mPRtrYnipYYv1FEE134ufbWpeggNTo+O/UPzngoaKzbzHAthvR55am+8GfHTnqNRQVRRrYQLGW9ZyUoD7DsBHQ==} + engines: {node: ^16.14.0 || >=18.0.0} + hasBin: true dependencies: chalk: 5.3.0 commander: 11.0.0 debug: 4.3.4 execa: 7.2.0 lilconfig: 2.1.0 - listr2: 6.6.1(enquirer@2.4.1) + listr2: 6.6.1 micromatch: 4.0.5 pidtree: 0.6.0 string-argv: 0.3.2 @@ -21533,8 +16355,16 @@ snapshots: transitivePeerDependencies: - enquirer - supports-color + dev: true - listr2@6.6.1(enquirer@2.4.1): + /listr2@6.6.1: + resolution: {integrity: sha512-+rAXGHh0fkEWdXBmX+L6mmfmXmXvDGEKzkjxO+8mP3+nI/r/CWznVBvsibXdxda9Zz0OW2e2ikphN3OwCT/jSg==} + engines: {node: '>=16.0.0'} + peerDependencies: + enquirer: '>= 2.3.0 < 3' + peerDependenciesMeta: + enquirer: + optional: true dependencies: cli-truncate: 3.1.0 colorette: 2.0.20 @@ -21542,264 +16372,436 @@ snapshots: log-update: 5.0.1 rfdc: 1.4.1 wrap-ansi: 8.1.0 - optionalDependencies: - enquirer: 2.4.1 + dev: true - load-tsconfig@0.2.5: {} + /load-tsconfig@0.2.5: + resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true - loader-runner@4.3.0: {} + /loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + dev: true - loader-utils@2.0.4: + /loader-utils@2.0.4: + resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} + engines: {node: '>=8.9.0'} dependencies: big.js: 5.2.2 emojis-list: 3.0.0 json5: 2.2.3 + dev: true - loader-utils@3.3.1: {} + /loader-utils@3.3.1: + resolution: {integrity: sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==} + engines: {node: '>= 12.13.0'} + dev: true - local-pkg@0.5.0: + /local-pkg@0.5.1: + resolution: {integrity: sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==} + engines: {node: '>=14'} dependencies: - mlly: 1.7.1 - pkg-types: 1.2.0 + mlly: 1.7.3 + pkg-types: 1.2.1 + dev: true - locate-path@3.0.0: + /locate-path@3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} dependencies: p-locate: 3.0.0 path-exists: 3.0.0 - locate-path@5.0.0: + /locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} dependencies: p-locate: 4.1.0 - locate-path@6.0.0: + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} dependencies: p-locate: 5.0.0 - lockfile@1.0.4: + /lockfile@1.0.4: + resolution: {integrity: sha512-cvbTwETRfsFh4nHsL1eGWapU1XFi5Ot9E85sWAwia7Y7EgB7vfqcZhTKZ+l7hCGxSPoushMv5GKhT5PdLv03WA==} dependencies: signal-exit: 3.0.7 + dev: true - lodash.camelcase@4.3.0: {} + /lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + dev: true - lodash.clonedeepwith@4.5.0: {} + /lodash.clonedeepwith@4.5.0: + resolution: {integrity: sha512-QRBRSxhbtsX1nc0baxSkkK5WlVTTm/s48DSukcGcWZwIyI8Zz+lB+kFiELJXtzfH4Aj6kMWQ1VWW4U5uUDgZMA==} + dev: true - lodash.debounce@4.0.8: {} + /lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - lodash.flattendeep@4.4.0: {} + /lodash.flattendeep@4.4.0: + resolution: {integrity: sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==} + dev: true - lodash.get@4.4.2: {} + /lodash.get@4.4.2: + resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} + dev: true - lodash.includes@4.3.0: {} + /lodash.includes@4.3.0: + resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} + dev: true - lodash.isboolean@3.0.3: {} + /lodash.isboolean@3.0.3: + resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} + dev: true - lodash.isequal@4.5.0: {} + /lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + dev: true - lodash.isinteger@4.0.4: {} + /lodash.isinteger@4.0.4: + resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} + dev: true - lodash.isnumber@3.0.3: {} + /lodash.isnumber@3.0.3: + resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} + dev: true - lodash.isplainobject@4.0.6: {} + /lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + dev: true - lodash.isstring@4.0.1: {} + /lodash.isstring@4.0.1: + resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} + dev: true - lodash.memoize@4.1.2: {} + /lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + dev: true - lodash.merge@4.6.2: {} + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: true - lodash.once@4.1.1: {} + /lodash.once@4.1.1: + resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} + dev: true - lodash.sortby@4.7.0: {} + /lodash.sortby@4.7.0: + resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} + dev: true - lodash.startcase@4.4.0: {} + /lodash.startcase@4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + dev: true - lodash.throttle@4.1.1: {} + /lodash.throttle@4.1.1: + resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} - lodash.uniq@4.5.0: {} + /lodash.uniq@4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + dev: true - lodash@4.17.21: {} + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: true - log-symbols@3.0.0: + /log-symbols@3.0.0: + resolution: {integrity: sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==} + engines: {node: '>=8'} dependencies: chalk: 2.4.2 + dev: true - log-symbols@4.1.0: + /log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} dependencies: chalk: 4.1.2 is-unicode-supported: 0.1.0 - log-update@2.3.0: + /log-update@2.3.0: + resolution: {integrity: sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg==} + engines: {node: '>=4'} dependencies: ansi-escapes: 3.2.0 cli-cursor: 2.1.0 wrap-ansi: 3.0.1 + dev: true - log-update@5.0.1: + /log-update@5.0.1: + resolution: {integrity: sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: ansi-escapes: 5.0.0 cli-cursor: 4.0.0 slice-ansi: 5.0.0 strip-ansi: 7.1.0 wrap-ansi: 8.1.0 + dev: true - log4js@6.9.1: + /log4js@6.9.1: + resolution: {integrity: sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==} + engines: {node: '>=8.0'} dependencies: date-format: 4.0.14 - debug: 4.3.7 - flatted: 3.3.1 + debug: 4.4.0 + flatted: 3.3.2 rfdc: 1.4.1 streamroller: 3.1.5 transitivePeerDependencies: - supports-color + dev: true - logkitty@0.7.1: + /logkitty@0.7.1: + resolution: {integrity: sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==} + hasBin: true dependencies: ansi-fragments: 0.2.1 dayjs: 1.11.13 yargs: 15.4.1 - lolex@5.1.2: + /lolex@5.1.2: + resolution: {integrity: sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A==} dependencies: '@sinonjs/commons': 1.8.6 + dev: true - long-timeout@0.1.1: {} + /long-timeout@0.1.1: + resolution: {integrity: sha512-BFRuQUqc7x2NWxfJBCyUrN8iYUYznzL9JROmRz1gZ6KlOIgmoD+njPVbb+VNn2nGMKggMsK79iUNErillsrx7w==} + dev: true - loose-envify@1.4.0: + /loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true dependencies: js-tokens: 4.0.0 - loupe@2.3.7: + /loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} dependencies: get-func-name: 2.0.2 + dev: true - loupe@3.1.1: - dependencies: - get-func-name: 2.0.2 + /loupe@3.1.2: + resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==} + dev: true - lowdb@1.0.0: + /lowdb@1.0.0: + resolution: {integrity: sha512-2+x8esE/Wb9SQ1F9IHaYWfsC9FIecLOPrK4g17FGEayjUWH172H6nwicRovGvSE2CPZouc2MCIqCI7h9d+GftQ==} + engines: {node: '>=4'} dependencies: graceful-fs: 4.2.11 is-promise: 2.2.2 lodash: 4.17.21 pify: 3.0.0 steno: 0.4.4 + dev: true - lower-case@2.0.2: + /lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} dependencies: - tslib: 2.7.0 + tslib: 2.8.1 + dev: true + + /lowercase-keys@2.0.0: + resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} + engines: {node: '>=8'} + dev: true - lru-cache@10.4.3: {} + /lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + dev: true - lru-cache@4.1.5: + /lru-cache@4.1.5: + resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} dependencies: pseudomap: 1.0.2 yallist: 2.1.2 + dev: true - lru-cache@5.1.1: + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: yallist: 3.1.1 - lru-cache@6.0.0: + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} dependencies: yallist: 4.0.0 + dev: true - lru-cache@7.18.3: {} + /lru-cache@7.18.3: + resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} + engines: {node: '>=12'} + dev: true - luxon@3.5.0: {} + /luxon@3.5.0: + resolution: {integrity: sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==} + engines: {node: '>=12'} + dev: true - lz-string@1.5.0: {} + /lz-string@1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} + hasBin: true + dev: true - magic-string@0.25.9: + /magic-string@0.25.9: + resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} dependencies: sourcemap-codec: 1.4.8 + dev: true - magic-string@0.27.0: + /magic-string@0.27.0: + resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} + engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.5.0 + dev: true - magic-string@0.30.11: + /magic-string@0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} dependencies: '@jridgewell/sourcemap-codec': 1.5.0 + dev: true - magicast@0.3.5: + /magicast@0.3.5: + resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} dependencies: - '@babel/parser': 7.25.6 - '@babel/types': 7.25.6 + '@babel/parser': 7.26.3 + '@babel/types': 7.26.3 source-map-js: 1.2.1 + dev: true - make-dir@2.1.0: + /make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} dependencies: pify: 4.0.1 semver: 5.7.2 - make-dir@3.1.0: + /make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} dependencies: semver: 6.3.1 + dev: true - make-dir@4.0.0: + /make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} dependencies: semver: 7.6.3 + dev: true - make-error@1.3.6: {} + /make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + dev: true - makeerror@1.0.12: + /makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} dependencies: tmpl: 1.0.5 - map-cache@0.2.2: {} + /map-cache@0.2.2: + resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} + engines: {node: '>=0.10.0'} + dev: true - map-or-similar@1.5.0: {} + /map-or-similar@1.5.0: + resolution: {integrity: sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==} - map-visit@1.0.0: + /map-visit@1.0.0: + resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==} + engines: {node: '>=0.10.0'} dependencies: object-visit: 1.0.1 + dev: true + + /marky@1.2.5: + resolution: {integrity: sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==} - marky@1.2.5: {} + /math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} - mdn-data@2.0.14: {} + /mdn-data@2.0.14: + resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + dev: true - mdn-data@2.0.28: {} + /mdn-data@2.0.28: + resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} + dev: true - mdn-data@2.0.30: {} + /mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + dev: true - media-typer@0.3.0: {} + /media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + dev: true - memoize-one@5.2.1: {} + /memoize-one@5.2.1: + resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} - memoize-one@6.0.0: {} + /memoize-one@6.0.0: + resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} + dev: false - memoizerific@1.11.3: + /memoizerific@1.11.3: + resolution: {integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==} dependencies: map-or-similar: 1.5.0 - merge-descriptors@1.0.3: {} + /merge-descriptors@1.0.3: + resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} + dev: true - merge-stream@2.0.0: {} + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - merge2@1.4.1: {} + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} - methods@1.1.2: {} + /methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + dev: true - metro-babel-transformer@0.80.12: + /metro-babel-transformer@0.80.12: + resolution: {integrity: sha512-YZziRs0MgA3pzCkkvOoQRXjIoVjvrpi/yRlJnObyIvMP6lFdtyG4nUGIwGY9VXnBvxmXD6mPY2e+NSw6JAyiRg==} + engines: {node: '>=18'} dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 flow-enums-runtime: 0.0.6 hermes-parser: 0.23.1 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color - metro-cache-key@0.80.12: + /metro-cache-key@0.80.12: + resolution: {integrity: sha512-o4BspKnugg/pE45ei0LGHVuBJXwRgruW7oSFAeSZvBKA/sGr0UhOGY3uycOgWInnS3v5yTTfiBA9lHlNRhsvGA==} + engines: {node: '>=18'} dependencies: flow-enums-runtime: 0.0.6 - metro-cache@0.80.12: + /metro-cache@0.80.12: + resolution: {integrity: sha512-p5kNHh2KJ0pbQI/H7ZBPCEwkyNcSz7OUkslzsiIWBMPQGFJ/xArMwkV7I+GJcWh+b4m6zbLxE5fk6fqbVK1xGA==} + engines: {node: '>=18'} dependencies: exponential-backoff: 3.1.1 flow-enums-runtime: 0.0.6 metro-core: 0.80.12 - metro-config@0.80.12: + /metro-config@0.80.12: + resolution: {integrity: sha512-4rwOWwrhm62LjB12ytiuR5NgK1ZBNr24/He8mqCsC+HXZ+ATbrewLNztzbAZHtFsrxP4D4GLTGgh96pCpYLSAQ==} + engines: {node: '>=18'} dependencies: connect: 3.7.0 cosmiconfig: 5.2.1 @@ -21814,13 +16816,17 @@ snapshots: - supports-color - utf-8-validate - metro-core@0.80.12: + /metro-core@0.80.12: + resolution: {integrity: sha512-QqdJ/yAK+IpPs2HU/h5v2pKEdANBagSsc6DRSjnwSyJsCoHlmyJKCaCJ7KhWGx+N4OHxh37hoA8fc2CuZbx0Fw==} + engines: {node: '>=18'} dependencies: flow-enums-runtime: 0.0.6 lodash.throttle: 4.1.1 metro-resolver: 0.80.12 - metro-file-map@0.80.12: + /metro-file-map@0.80.12: + resolution: {integrity: sha512-sYdemWSlk66bWzW2wp79kcPMzwuG32x1ZF3otI0QZTmrnTaaTiGyhE66P1z6KR4n2Eu5QXiABa6EWbAQv0r8bw==} + engines: {node: '>=18'} dependencies: anymatch: 3.1.3 debug: 2.6.9 @@ -21838,24 +16844,32 @@ snapshots: transitivePeerDependencies: - supports-color - metro-minify-terser@0.80.12: + /metro-minify-terser@0.80.12: + resolution: {integrity: sha512-muWzUw3y5k+9083ZoX9VaJLWEV2Jcgi+Oan0Mmb/fBNMPqP9xVDuy4pOMn/HOiGndgfh/MK7s4bsjkyLJKMnXQ==} + engines: {node: '>=18'} dependencies: flow-enums-runtime: 0.0.6 - terser: 5.33.0 + terser: 5.37.0 - metro-resolver@0.80.12: + /metro-resolver@0.80.12: + resolution: {integrity: sha512-PR24gYRZnYHM3xT9pg6BdbrGbM/Cu1TcyIFBVlAk7qDAuHkUNQ1nMzWumWs+kwSvtd9eZGzHoucGJpTUEeLZAw==} + engines: {node: '>=18'} dependencies: flow-enums-runtime: 0.0.6 - metro-runtime@0.80.12: + /metro-runtime@0.80.12: + resolution: {integrity: sha512-LIx7+92p5rpI0i6iB4S4GBvvLxStNt6fF0oPMaUd1Weku7jZdfkCZzmrtDD9CSQ6EPb0T9NUZoyXIxlBa3wOCw==} + engines: {node: '>=18'} dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 flow-enums-runtime: 0.0.6 - metro-source-map@0.80.12: + /metro-source-map@0.80.12: + resolution: {integrity: sha512-o+AXmE7hpvM8r8MKsx7TI21/eerYYy2DCDkWfoBkv+jNkl61khvDHlQn0cXZa6lrcNZiZkl9oHSMcwLLIrFmpw==} + engines: {node: '>=18'} dependencies: - '@babel/traverse': 7.25.7 - '@babel/types': 7.25.8 + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.3 flow-enums-runtime: 0.0.6 invariant: 2.2.4 metro-symbolicate: 0.80.12 @@ -21866,7 +16880,10 @@ snapshots: transitivePeerDependencies: - supports-color - metro-symbolicate@0.80.12: + /metro-symbolicate@0.80.12: + resolution: {integrity: sha512-/dIpNdHksXkGHZXARZpL7doUzHqSNxgQ8+kQGxwpJuHnDhGkENxB5PS2QBaTDdEcmyTMjS53CN1rl9n1gR6fmw==} + engines: {node: '>=18'} + hasBin: true dependencies: flow-enums-runtime: 0.0.6 invariant: 2.2.4 @@ -21878,23 +16895,27 @@ snapshots: transitivePeerDependencies: - supports-color - metro-transform-plugins@0.80.12: + /metro-transform-plugins@0.80.12: + resolution: {integrity: sha512-WQWp00AcZvXuQdbjQbx1LzFR31IInlkCDYJNRs6gtEtAyhwpMMlL2KcHmdY+wjDO9RPcliZ+Xl1riOuBecVlPA==} + engines: {node: '>=18'} dependencies: - '@babel/core': 7.25.2 - '@babel/generator': 7.25.7 - '@babel/template': 7.25.7 - '@babel/traverse': 7.25.7 + '@babel/core': 7.26.0 + '@babel/generator': 7.26.3 + '@babel/template': 7.25.9 + '@babel/traverse': 7.26.4 flow-enums-runtime: 0.0.6 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color - metro-transform-worker@0.80.12: + /metro-transform-worker@0.80.12: + resolution: {integrity: sha512-KAPFN1y3eVqEbKLx1I8WOarHPqDMUa8WelWxaJCNKO/yHCP26zELeqTJvhsQup+8uwB6EYi/sp0b6TGoh6lOEA==} + engines: {node: '>=18'} dependencies: - '@babel/core': 7.25.2 - '@babel/generator': 7.25.7 - '@babel/parser': 7.25.8 - '@babel/types': 7.25.8 + '@babel/core': 7.26.0 + '@babel/generator': 7.26.3 + '@babel/parser': 7.26.3 + '@babel/types': 7.26.3 flow-enums-runtime: 0.0.6 metro: 0.80.12 metro-babel-transformer: 0.80.12 @@ -21909,15 +16930,18 @@ snapshots: - supports-color - utf-8-validate - metro@0.80.12: + /metro@0.80.12: + resolution: {integrity: sha512-1UsH5FzJd9quUsD1qY+zUG4JY3jo3YEMxbMYH9jT6NK3j4iORhlwTK8fYTfAUBhDKjgLfKjAh7aoazNE23oIRA==} + engines: {node: '>=18'} + hasBin: true dependencies: - '@babel/code-frame': 7.25.7 - '@babel/core': 7.25.2 - '@babel/generator': 7.25.7 - '@babel/parser': 7.25.8 - '@babel/template': 7.25.7 - '@babel/traverse': 7.25.7 - '@babel/types': 7.25.8 + '@babel/code-frame': 7.26.2 + '@babel/core': 7.26.0 + '@babel/generator': 7.26.3 + '@babel/parser': 7.26.3 + '@babel/template': 7.25.9 + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.3 accepts: 1.3.8 chalk: 4.1.2 ci-info: 2.0.0 @@ -21958,7 +16982,9 @@ snapshots: - supports-color - utf-8-validate - micromatch@3.1.10: + /micromatch@3.1.10: + resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} + engines: {node: '>=0.10.0'} dependencies: arr-diff: 4.0.0 array-unique: 0.3.2 @@ -21975,122 +17001,228 @@ snapshots: to-regex: 3.0.2 transitivePeerDependencies: - supports-color + dev: true - micromatch@4.0.5: + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} dependencies: braces: 3.0.3 picomatch: 2.3.1 + dev: true - micromatch@4.0.8: + /micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} dependencies: braces: 3.0.3 picomatch: 2.3.1 - mime-db@1.52.0: {} + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} - mime-db@1.53.0: {} + /mime-db@1.53.0: + resolution: {integrity: sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==} + engines: {node: '>= 0.6'} - mime-types@2.1.35: + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 - mime@1.6.0: {} + /mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + /mime@2.6.0: + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} + engines: {node: '>=4.0.0'} + hasBin: true + + /mime@3.0.0: + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} + engines: {node: '>=10.0.0'} + hasBin: true + dev: true - mime@2.6.0: {} + /mimic-fn@1.2.0: + resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==} + engines: {node: '>=4'} + dev: true - mime@3.0.0: {} + /mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} - mimic-fn@1.2.0: {} + /mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + dev: true - mimic-fn@2.1.0: {} + /mimic-response@1.0.1: + resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} + engines: {node: '>=4'} + dev: true - mimic-fn@4.0.0: {} + /mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + dev: true - min-indent@1.0.1: {} + /min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + dev: true - mini-svg-data-uri@1.4.4: {} + /mini-svg-data-uri@1.4.4: + resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==} + hasBin: true + dev: true - minimatch@3.0.8: + /minimatch@3.0.8: + resolution: {integrity: sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==} dependencies: brace-expansion: 1.1.11 + dev: true - minimatch@3.1.2: + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 - minimatch@5.1.6: + /minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 + dev: true - minimatch@7.4.6: + /minimatch@7.4.6: + resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} + engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 + dev: true - minimatch@8.0.4: + /minimatch@8.0.4: + resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==} + engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 + dev: true - minimatch@9.0.3: + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 + dev: true - minimatch@9.0.5: + /minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 + dev: true - minimist@1.2.8: {} + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - minipass@4.2.8: {} + /minipass@4.2.8: + resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} + engines: {node: '>=8'} + dev: true - minipass@7.1.2: {} + /minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + dev: true - mixin-deep@1.3.2: + /mixin-deep@1.3.2: + resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} + engines: {node: '>=0.10.0'} dependencies: for-in: 1.0.2 is-extendable: 1.0.1 + dev: true - mkdirp@0.5.6: + /mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true dependencies: minimist: 1.2.8 - mkdirp@1.0.4: {} + /mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true - mlly@1.7.1: + /mlly@1.7.3: + resolution: {integrity: sha512-xUsx5n/mN0uQf4V548PKQ+YShA4/IW0KI1dZhrNrPCLG+xizETbHTkOa1f8/xut9JRPp8kQuMnz0oqwkTiLo/A==} dependencies: - acorn: 8.12.1 + acorn: 8.14.0 pathe: 1.1.2 - pkg-types: 1.2.0 + pkg-types: 1.2.1 ufo: 1.5.4 + dev: true - mri@1.2.0: {} + /mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + dev: true - mrmime@2.0.0: {} + /mrmime@2.0.0: + resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} + engines: {node: '>=10'} + dev: true - ms@2.0.0: {} + /ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - ms@2.1.2: {} + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true - ms@2.1.3: {} + /ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - muggle-string@0.3.1: {} + /muggle-string@0.3.1: + resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==} + dev: true - mute-stream@0.0.8: {} + /mute-stream@0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + dev: true - mv@2.1.1: + /mv@2.1.1: + resolution: {integrity: sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==} + engines: {node: '>=0.8.0'} dependencies: mkdirp: 0.5.6 ncp: 2.0.0 rimraf: 2.4.5 + dev: true - mz@2.7.0: + /mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} dependencies: any-promise: 1.3.0 object-assign: 4.1.1 thenify-all: 1.6.0 + dev: true - nanoid@3.3.7: {} + /nanoid@3.3.8: + resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: true - nanomatch@1.2.13: + /nanomatch@1.2.13: + resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} + engines: {node: '>=0.10.0'} dependencies: arr-diff: 4.0.0 array-unique: 0.3.2 @@ -22105,125 +17237,221 @@ snapshots: to-regex: 3.0.2 transitivePeerDependencies: - supports-color + dev: true + + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true - natural-compare@1.4.0: {} + /ncp@2.0.0: + resolution: {integrity: sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==} + hasBin: true + dev: true - ncp@2.0.0: {} + /negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} - negotiator@0.6.3: {} + /negotiator@0.6.4: + resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} + engines: {node: '>= 0.6'} - neo-async@2.6.2: {} + /neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - nice-try@1.0.5: {} + /nice-try@1.0.5: + resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} + dev: true - no-case@3.0.4: + /no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} dependencies: lower-case: 2.0.2 - tslib: 2.7.0 + tslib: 2.8.1 + dev: true - nocache@3.0.4: {} + /nocache@3.0.4: + resolution: {integrity: sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==} + engines: {node: '>=12.0.0'} - node-abort-controller@3.1.1: {} + /node-abort-controller@3.1.1: + resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} - node-dir@0.1.17: + /node-dir@0.1.17: + resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==} + engines: {node: '>= 0.10.5'} dependencies: minimatch: 3.1.2 - node-fetch@2.6.7: + /node-fetch@2.6.7: + resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true dependencies: whatwg-url: 5.0.0 + dev: true - node-fetch@2.7.0: + /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 dependencies: whatwg-url: 5.0.0 - node-forge@1.3.1: {} + /node-forge@1.3.1: + resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + engines: {node: '>= 6.13.0'} - node-int64@0.4.0: {} + /node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - node-machine-id@1.1.12: {} + /node-machine-id@1.1.12: + resolution: {integrity: sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==} + dev: true - node-notifier@6.0.0: + /node-notifier@6.0.0: + resolution: {integrity: sha512-SVfQ/wMw+DesunOm5cKqr6yDcvUTDl/yc97ybGHMrteNEY6oekXpNpS3lZwgLlwz0FLgHoiW28ZpmBHUDg37cw==} + requiresBuild: true dependencies: growly: 1.3.0 is-wsl: 2.2.0 semver: 6.3.1 shellwords: 0.1.1 which: 1.3.1 + dev: true optional: true - node-preload@0.2.1: + /node-preload@0.2.1: + resolution: {integrity: sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==} + engines: {node: '>=8'} dependencies: - process-on-spawn: 1.0.0 + process-on-spawn: 1.1.0 + dev: true - node-releases@2.0.18: {} + /node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} - node-schedule@2.1.1: + /node-schedule@2.1.1: + resolution: {integrity: sha512-OXdegQq03OmXEjt2hZP33W2YPs/E5BcFQks46+G2gAxs4gHOIVD1u7EqlYLYSKsaIpyKCK9Gbk0ta1/gjRSMRQ==} + engines: {node: '>=6'} dependencies: cron-parser: 4.9.0 long-timeout: 0.1.1 sorted-array-functions: 1.3.0 + dev: true - node-stream-zip@1.15.0: {} + /node-stream-zip@1.15.0: + resolution: {integrity: sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==} + engines: {node: '>=0.12.0'} - normalize-package-data@2.5.0: + /normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 - resolve: 1.22.8 + resolve: 1.22.10 semver: 5.7.2 validate-npm-package-license: 3.0.4 + dev: true - normalize-path@2.1.1: + /normalize-path@2.1.1: + resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} + engines: {node: '>=0.10.0'} dependencies: remove-trailing-separator: 1.1.0 + dev: true - normalize-path@3.0.0: {} + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} - normalize-range@0.1.2: {} + /normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + dev: true - normalize-url@6.1.0: {} + /normalize-url@6.1.0: + resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} + engines: {node: '>=10'} + dev: true - npm-package-arg@11.0.1: + /npm-package-arg@11.0.1: + resolution: {integrity: sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ==} + engines: {node: ^16.14.0 || >=18.0.0} dependencies: hosted-git-info: 7.0.2 proc-log: 3.0.0 semver: 7.6.3 validate-npm-package-name: 5.0.1 + dev: true - npm-run-path@2.0.2: + /npm-run-path@2.0.2: + resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} + engines: {node: '>=4'} dependencies: path-key: 2.0.1 + dev: true - npm-run-path@4.0.1: + /npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} dependencies: path-key: 3.1.1 - npm-run-path@5.3.0: + /npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: path-key: 4.0.0 + dev: true - nth-check@2.1.1: + /nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} dependencies: boolbase: 1.0.0 + dev: true - nullthrows@1.1.1: {} + /nullthrows@1.1.1: + resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} - nwsapi@2.2.12: {} + /nwsapi@2.2.16: + resolution: {integrity: sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==} + dev: true - nx@19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)): + /nx@19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29): + resolution: {integrity: sha512-zD1ZvkfxECrd9QnvUyAUVLESmjl0bpIhB1gLcYN2BqsCkB1vkngbxIvXDorI98keOVEfHzeuwNSkufQNls1hug==} + hasBin: true + requiresBuild: true + peerDependencies: + '@swc-node/register': ^1.8.0 + '@swc/core': ^1.3.85 + peerDependenciesMeta: + '@swc-node/register': + optional: true + '@swc/core': + optional: true dependencies: '@napi-rs/wasm-runtime': 0.2.4 - '@nrwl/tao': 19.8.0(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4))(@swc/core@1.5.29(@swc/helpers@0.5.13)) + '@nrwl/tao': 19.8.0(@swc-node/register@1.9.2)(@swc/core@1.5.29) + '@swc-node/register': 1.9.2(@swc/core@1.5.29)(@swc/types@0.1.17)(typescript@5.5.4) + '@swc/core': 1.5.29(@swc/helpers@0.5.15) '@yarnpkg/lockfile': 1.1.0 '@yarnpkg/parsers': 3.0.0-rc.46 '@zkochan/js-yaml': 0.0.7 - axios: 1.7.7 + axios: 1.7.9 chalk: 4.1.2 cli-cursor: 3.1.0 cli-spinners: 2.6.1 cliui: 8.0.1 - dotenv: 16.4.5 - dotenv-expand: 11.0.6 + dotenv: 16.4.7 + dotenv-expand: 11.0.7 enquirer: 2.3.6 figures: 3.2.0 flat: 5.0.2 @@ -22244,7 +17472,7 @@ snapshots: tar-stream: 2.2.0 tmp: 0.2.3 tsconfig-paths: 4.2.0 - tslib: 2.7.0 + tslib: 2.8.1 yargs: 17.7.2 yargs-parser: 21.1.1 optionalDependencies: @@ -22258,12 +17486,14 @@ snapshots: '@nx/nx-linux-x64-musl': 19.8.0 '@nx/nx-win32-arm64-msvc': 19.8.0 '@nx/nx-win32-x64-msvc': 19.8.0 - '@swc-node/register': 1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.13))(@swc/types@0.1.12)(typescript@5.5.4) - '@swc/core': 1.5.29(@swc/helpers@0.5.13) transitivePeerDependencies: - debug + dev: true - nyc@15.1.0: + /nyc@15.1.0: + resolution: {integrity: sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==} + engines: {node: '>=8.9'} + hasBin: true dependencies: '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 @@ -22285,7 +17515,7 @@ snapshots: make-dir: 3.1.0 node-preload: 0.2.1 p-map: 3.0.0 - process-on-spawn: 1.0.0 + process-on-spawn: 1.1.0 resolve-from: 5.0.0 rimraf: 3.0.2 signal-exit: 3.0.7 @@ -22294,120 +17524,196 @@ snapshots: yargs: 15.4.1 transitivePeerDependencies: - supports-color + dev: true - oauth-sign@0.9.0: {} + /oauth-sign@0.9.0: + resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} + dev: true - ob1@0.80.12: + /ob1@0.80.12: + resolution: {integrity: sha512-VMArClVT6LkhUGpnuEoBuyjG9rzUyEzg4PDkav6wK1cLhOK02gPCYFxoiB4mqVnrMhDpIzJcrGNAMVi9P+hXrw==} + engines: {node: '>=18'} dependencies: flow-enums-runtime: 0.0.6 - object-assign@4.1.1: {} + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} - object-copy@0.1.0: + /object-copy@0.1.0: + resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==} + engines: {node: '>=0.10.0'} dependencies: copy-descriptor: 0.1.1 define-property: 0.2.5 kind-of: 3.2.2 + dev: true - object-inspect@1.13.2: {} + /object-inspect@1.13.3: + resolution: {integrity: sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==} + engines: {node: '>= 0.4'} + dev: true - object-is@1.1.6: + /object-is@1.1.6: + resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 + dev: true - object-keys@1.1.1: {} + /object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + dev: true - object-visit@1.0.1: + /object-visit@1.0.1: + resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==} + engines: {node: '>=0.10.0'} dependencies: isobject: 3.0.1 + dev: true - object.assign@4.1.5: + /object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.3 define-properties: 1.2.1 - has-symbols: 1.0.3 + es-object-atoms: 1.0.0 + has-symbols: 1.1.0 object-keys: 1.1.1 + dev: true - object.entries@1.1.8: + /object.entries@1.1.8: + resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 es-object-atoms: 1.0.0 + dev: true - object.fromentries@2.0.8: + /object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.7 es-object-atoms: 1.0.0 + dev: true - object.groupby@1.0.3: + /object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.7 + dev: true - object.pick@1.3.0: + /object.pick@1.3.0: + resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} + engines: {node: '>=0.10.0'} dependencies: isobject: 3.0.1 + dev: true - object.values@1.2.0: + /object.values@1.2.1: + resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.3 define-properties: 1.2.1 es-object-atoms: 1.0.0 + dev: true - on-exit-leak-free@0.2.0: {} + /on-exit-leak-free@0.2.0: + resolution: {integrity: sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==} + dev: true - on-exit-leak-free@2.1.2: {} + /on-exit-leak-free@2.1.2: + resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} + engines: {node: '>=14.0.0'} + dev: true - on-finished@2.3.0: + /on-finished@2.3.0: + resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} + engines: {node: '>= 0.8'} dependencies: ee-first: 1.1.1 - on-finished@2.4.1: + /on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} dependencies: ee-first: 1.1.1 - on-headers@1.0.2: {} + /on-headers@1.0.2: + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} - once@1.4.0: + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 - onetime@2.0.1: + /onetime@2.0.1: + resolution: {integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==} + engines: {node: '>=4'} dependencies: mimic-fn: 1.2.0 + dev: true - onetime@5.1.2: + /onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} dependencies: mimic-fn: 2.1.0 - onetime@6.0.0: + /onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} dependencies: mimic-fn: 4.0.0 + dev: true - only@0.0.2: {} + /only@0.0.2: + resolution: {integrity: sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==} + dev: true - open@6.4.0: + /open@6.4.0: + resolution: {integrity: sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==} + engines: {node: '>=8'} dependencies: is-wsl: 1.1.0 - open@7.4.2: + /open@7.4.2: + resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} + engines: {node: '>=8'} dependencies: is-docker: 2.2.1 is-wsl: 2.2.0 - open@8.4.2: + /open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} dependencies: define-lazy-prop: 2.0.0 is-docker: 2.2.1 is-wsl: 2.2.0 - opener@1.5.2: {} + /opener@1.5.2: + resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} + hasBin: true + dev: true - optionator@0.8.3: + /optionator@0.8.3: + resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} + engines: {node: '>= 0.8.0'} dependencies: deep-is: 0.1.4 fast-levenshtein: 2.0.6 @@ -22415,8 +17721,11 @@ snapshots: prelude-ls: 1.1.2 type-check: 0.3.2 word-wrap: 1.2.5 + dev: true - optionator@0.9.4: + /optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} dependencies: deep-is: 0.1.4 fast-levenshtein: 2.0.6 @@ -22424,8 +17733,11 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 word-wrap: 1.2.5 + dev: true - ora@4.1.1: + /ora@4.1.1: + resolution: {integrity: sha512-sjYP8QyVWBpBZWD6Vr1M/KwknSw6kJOz41tvGMlwWeClHBtYKTbHMki1PsLZnxKpXMPbTKv9b3pjQu3REib96A==} + engines: {node: '>=8'} dependencies: chalk: 3.0.0 cli-cursor: 3.1.0 @@ -22435,19 +17747,25 @@ snapshots: mute-stream: 0.0.8 strip-ansi: 6.0.1 wcwidth: 1.0.1 + dev: true - ora@5.3.0: + /ora@5.3.0: + resolution: {integrity: sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==} + engines: {node: '>=10'} dependencies: bl: 4.1.0 chalk: 4.1.2 cli-cursor: 3.1.0 - cli-spinners: 2.6.1 + cli-spinners: 2.9.2 is-interactive: 1.0.0 log-symbols: 4.1.0 strip-ansi: 6.0.1 wcwidth: 1.0.1 + dev: true - ora@5.4.1: + /ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} dependencies: bl: 4.1.0 chalk: 4.1.2 @@ -22459,181 +17777,356 @@ snapshots: strip-ansi: 6.0.1 wcwidth: 1.0.1 - os-homedir@1.0.2: {} + /os-filter-obj@2.0.0: + resolution: {integrity: sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg==} + engines: {node: '>=4'} + dependencies: + arch: 2.2.0 + dev: true + + /os-homedir@1.0.2: + resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==} + engines: {node: '>=0.10.0'} + dev: true + + /os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + dev: true - os-tmpdir@1.0.2: {} + /outdent@0.5.0: + resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} + dev: true - outdent@0.5.0: {} + /p-cancelable@2.1.1: + resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} + engines: {node: '>=8'} + dev: true - p-each-series@2.2.0: {} + /p-each-series@2.2.0: + resolution: {integrity: sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==} + engines: {node: '>=8'} + dev: true - p-filter@2.1.0: + /p-filter@2.1.0: + resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} + engines: {node: '>=8'} dependencies: p-map: 2.1.0 + dev: true - p-finally@1.0.0: {} + /p-finally@1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} + dev: true - p-finally@2.0.1: {} + /p-finally@2.0.1: + resolution: {integrity: sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==} + engines: {node: '>=8'} + dev: true - p-limit@2.3.0: + /p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} dependencies: p-try: 2.2.0 - p-limit@3.1.0: + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 - p-limit@5.0.0: + /p-limit@5.0.0: + resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} + engines: {node: '>=18'} dependencies: yocto-queue: 1.1.1 + dev: true - p-locate@3.0.0: + /p-locate@3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} dependencies: p-limit: 2.3.0 - p-locate@4.1.0: + /p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} dependencies: p-limit: 2.3.0 - p-locate@5.0.0: + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} dependencies: p-limit: 3.1.0 - p-map@2.1.0: {} + /p-map@2.1.0: + resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} + engines: {node: '>=6'} + dev: true - p-map@3.0.0: + /p-map@3.0.0: + resolution: {integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==} + engines: {node: '>=8'} dependencies: aggregate-error: 3.1.0 + dev: true - p-map@4.0.0: + /p-map@4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} dependencies: aggregate-error: 3.1.0 + dev: true - p-queue@6.6.2: + /p-queue@6.6.2: + resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} + engines: {node: '>=8'} dependencies: eventemitter3: 4.0.7 p-timeout: 3.2.0 + dev: true - p-timeout@3.2.0: + /p-timeout@3.2.0: + resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} + engines: {node: '>=8'} dependencies: p-finally: 1.0.0 + dev: true - p-try@2.2.0: {} + /p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} - package-hash@4.0.0: + /package-hash@4.0.0: + resolution: {integrity: sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==} + engines: {node: '>=8'} dependencies: graceful-fs: 4.2.11 hasha: 5.2.2 lodash.flattendeep: 4.4.0 release-zalgo: 1.0.0 + dev: true - package-json-from-dist@1.0.0: {} + /package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + dev: true - package-manager-detector@0.2.0: {} + /package-manager-detector@0.2.8: + resolution: {integrity: sha512-ts9KSdroZisdvKMWVAVCXiKqnqNfXz4+IbrBG8/BWx/TR5le+jfenvoBuIZ6UWM9nz47W7AbD9qYfAwfWMIwzA==} + dev: true - pako@0.2.9: {} + /pako@0.2.9: + resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} + dev: true - parent-module@1.0.1: + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} dependencies: callsites: 3.1.0 + dev: true - parse-json@4.0.0: + /parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} dependencies: error-ex: 1.3.2 json-parse-better-errors: 1.0.2 - parse-json@5.2.0: + /parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.24.7 + '@babel/code-frame': 7.26.2 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 + dev: true - parse-passwd@1.0.0: {} + /parse-passwd@1.0.0: + resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} + engines: {node: '>=0.10.0'} + dev: true - parse5@5.1.0: {} + /parse5@5.1.0: + resolution: {integrity: sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==} + dev: true - parse5@7.1.2: + /parse5@7.2.1: + resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==} dependencies: entities: 4.5.0 + dev: true - parseurl@1.3.3: {} + /parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} - pascal-case@3.1.2: + /pascal-case@3.1.2: + resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} dependencies: no-case: 3.0.4 - tslib: 2.7.0 + tslib: 2.8.1 + dev: true - pascalcase@0.1.1: {} + /pascalcase@0.1.1: + resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} + engines: {node: '>=0.10.0'} + dev: true - path-browserify@1.0.1: {} + /path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + dev: true - path-dirname@1.0.2: {} + /path-dirname@1.0.2: + resolution: {integrity: sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==} + dev: true - path-exists@3.0.0: {} + /path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} - path-exists@4.0.0: {} + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} - path-is-absolute@1.0.1: {} + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} - path-key@2.0.1: {} + /path-key@2.0.1: + resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} + engines: {node: '>=4'} + dev: true - path-key@3.1.1: {} + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} - path-key@4.0.0: {} + /path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + dev: true - path-parse@1.0.7: {} + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-scurry@1.11.1: + /path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} dependencies: lru-cache: 10.4.3 minipass: 7.1.2 + dev: true - path-to-regexp@0.1.10: {} + /path-to-regexp@0.1.10: + resolution: {integrity: sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==} + dev: true + + /path-to-regexp@0.1.12: + resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} + dev: true + + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: true - path-type@4.0.0: {} + /pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + dev: true - pathe@1.1.2: {} + /pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + dev: true - pathval@1.1.1: {} + /pathval@2.0.0: + resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} + engines: {node: '>= 14.16'} + dev: true - pathval@2.0.0: {} + /peek-readable@5.3.1: + resolution: {integrity: sha512-GVlENSDW6KHaXcd9zkZltB7tCLosKB/4Hg0fqBJkAoBgYG2Tn1xtMgXtSUuMU9AK/gCm/tTdT8mgAeF4YNeeqw==} + engines: {node: '>=14.16'} + dev: true - peek-stream@1.1.3: + /peek-stream@1.1.3: + resolution: {integrity: sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==} dependencies: buffer-from: 1.1.2 duplexify: 3.7.1 through2: 2.0.5 + dev: true + + /performance-now@2.1.0: + resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} + dev: true + + /picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - performance-now@2.1.0: {} + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} - picocolors@1.1.0: {} + /picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + dev: true - picomatch@2.3.1: {} + /pidtree@0.6.0: + resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} + engines: {node: '>=0.10'} + hasBin: true + dev: true - pidtree@0.6.0: {} + /pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + dev: true - pify@3.0.0: {} + /pify@3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} + dev: true - pify@4.0.1: {} + /pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} - pify@5.0.0: {} + /pify@5.0.0: + resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==} + engines: {node: '>=10'} + dev: true - pino-abstract-transport@0.5.0: + /pino-abstract-transport@0.5.0: + resolution: {integrity: sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==} dependencies: duplexify: 4.1.3 split2: 4.2.0 + dev: true - pino-abstract-transport@1.1.0: + /pino-abstract-transport@1.1.0: + resolution: {integrity: sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA==} dependencies: - readable-stream: 4.5.2 + readable-stream: 4.6.0 split2: 4.2.0 + dev: true - pino-std-serializers@4.0.0: {} + /pino-std-serializers@4.0.0: + resolution: {integrity: sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==} + dev: true - pino-std-serializers@6.2.2: {} + /pino-std-serializers@6.2.2: + resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==} + dev: true - pino@7.11.0: + /pino@7.11.0: + resolution: {integrity: sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==} + hasBin: true dependencies: atomic-sleep: 1.0.0 fast-redact: 3.5.0 @@ -22646,8 +18139,11 @@ snapshots: safe-stable-stringify: 2.5.0 sonic-boom: 2.8.0 thread-stream: 0.15.2 + dev: true - pino@8.17.2: + /pino@8.17.2: + resolution: {integrity: sha512-LA6qKgeDMLr2ux2y/YiUt47EfgQ+S9LznBWOJdN3q1dx2sv0ziDLUBeVpyVv17TEcGCBuWf0zNtg3M5m1NhhWQ==} + hasBin: true dependencies: atomic-sleep: 1.0.0 fast-redact: 3.5.0 @@ -22660,502 +18156,864 @@ snapshots: safe-stable-stringify: 2.5.0 sonic-boom: 3.8.1 thread-stream: 2.7.0 + dev: true + + /pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} - pirates@4.0.6: {} + /piscina@4.8.0: + resolution: {integrity: sha512-EZJb+ZxDrQf3dihsUL7p42pjNyrNIFJCrRHPMgxu/svsj+P3xS3fuEWp7k2+rfsavfl1N0G29b1HGs7J0m8rZA==} + optionalDependencies: + '@napi-rs/nice': 1.0.1 + dev: true - pkg-dir@3.0.0: + /pkg-dir@3.0.0: + resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} + engines: {node: '>=6'} dependencies: find-up: 3.0.0 - pkg-dir@4.2.0: + /pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} dependencies: find-up: 4.1.0 + dev: true - pkg-dir@5.0.0: + /pkg-dir@5.0.0: + resolution: {integrity: sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==} + engines: {node: '>=10'} dependencies: find-up: 5.0.0 + dev: true - pkg-types@1.2.0: + /pkg-types@1.2.1: + resolution: {integrity: sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==} dependencies: - confbox: 0.1.7 - mlly: 1.7.1 + confbox: 0.1.8 + mlly: 1.7.3 pathe: 1.1.2 + dev: true - pkginfo@0.4.1: {} + /pkginfo@0.4.1: + resolution: {integrity: sha512-8xCNE/aT/EXKenuMDZ+xTVwkT8gsoHN2z/Q29l80u0ppGEXVvsKRzNMbtKhg8LS8k1tJLAHHylf6p4VFmP6XUQ==} + engines: {node: '>= 0.4.0'} + dev: true - playwright-core@1.47.2: {} + /playwright-core@1.49.1: + resolution: {integrity: sha512-BzmpVcs4kE2CH15rWfzpjzVGhWERJfmnXmniSyKeRZUs9Ws65m+RGIi7mjJK/euCegfn3i7jvqWeWyHe9y3Vgg==} + engines: {node: '>=18'} + hasBin: true + dev: true - playwright@1.47.2: + /playwright@1.49.1: + resolution: {integrity: sha512-VYL8zLoNTBxVOrJBbDuRgDWa3i+mfQgDTrL8Ah9QXZ7ax4Dsj0MSq5bYgytRnDVVe+njoKnfsYkH3HzqVj5UZA==} + engines: {node: '>=18'} + hasBin: true dependencies: - playwright-core: 1.47.2 + playwright-core: 1.49.1 optionalDependencies: fsevents: 2.3.2 + dev: true - pn@1.1.0: {} + /pn@1.1.0: + resolution: {integrity: sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==} + dev: true - polished@4.3.1: + /polished@4.3.1: + resolution: {integrity: sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==} + engines: {node: '>=10'} dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 - portfinder@1.0.32: + /portfinder@1.0.32: + resolution: {integrity: sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==} + engines: {node: '>= 0.12.0'} dependencies: async: 2.6.4 debug: 3.2.7 mkdirp: 0.5.6 transitivePeerDependencies: - supports-color + dev: true - posix-character-classes@0.1.1: {} + /posix-character-classes@0.1.1: + resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} + engines: {node: '>=0.10.0'} + dev: true - possible-typed-array-names@1.0.0: {} + /possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} - postcss-calc@8.2.4(postcss@8.4.47): + /postcss-calc@8.2.4(postcss@8.4.49): + resolution: {integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==} + peerDependencies: + postcss: ^8.2.2 dependencies: - postcss: 8.4.47 + postcss: 8.4.49 postcss-selector-parser: 6.1.2 postcss-value-parser: 4.2.0 + dev: true - postcss-colormin@5.3.1(postcss@8.4.47): + /postcss-colormin@5.3.1(postcss@8.4.49): + resolution: {integrity: sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - browserslist: 4.24.0 + browserslist: 4.24.3 caniuse-api: 3.0.0 colord: 2.9.3 - postcss: 8.4.47 + postcss: 8.4.49 postcss-value-parser: 4.2.0 + dev: true - postcss-convert-values@5.1.3(postcss@8.4.47): + /postcss-convert-values@5.1.3(postcss@8.4.49): + resolution: {integrity: sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - browserslist: 4.24.0 - postcss: 8.4.47 + browserslist: 4.24.3 + postcss: 8.4.49 postcss-value-parser: 4.2.0 + dev: true - postcss-discard-comments@5.1.2(postcss@8.4.47): + /postcss-discard-comments@5.1.2(postcss@8.4.49): + resolution: {integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - postcss: 8.4.47 + postcss: 8.4.49 + dev: true - postcss-discard-duplicates@5.1.0(postcss@8.4.47): + /postcss-discard-duplicates@5.1.0(postcss@8.4.49): + resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - postcss: 8.4.47 + postcss: 8.4.49 + dev: true - postcss-discard-empty@5.1.1(postcss@8.4.47): + /postcss-discard-empty@5.1.1(postcss@8.4.49): + resolution: {integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - postcss: 8.4.47 + postcss: 8.4.49 + dev: true - postcss-discard-overridden@5.1.0(postcss@8.4.47): + /postcss-discard-overridden@5.1.0(postcss@8.4.49): + resolution: {integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - postcss: 8.4.47 + postcss: 8.4.49 + dev: true - postcss-load-config@3.1.4(postcss@8.4.47)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4)): + /postcss-load-config@3.1.4(postcss@8.4.49)(ts-node@10.9.1): + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} + engines: {node: '>= 10'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true dependencies: lilconfig: 2.1.0 + postcss: 8.4.49 + ts-node: 10.9.1(@swc/core@1.5.29)(@types/node@18.16.9)(typescript@5.5.4) yaml: 1.10.2 - optionalDependencies: - postcss: 8.4.47 - ts-node: 10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4) + dev: true - postcss-merge-longhand@5.1.7(postcss@8.4.47): + /postcss-merge-longhand@5.1.7(postcss@8.4.49): + resolution: {integrity: sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - postcss: 8.4.47 + postcss: 8.4.49 postcss-value-parser: 4.2.0 - stylehacks: 5.1.1(postcss@8.4.47) + stylehacks: 5.1.1(postcss@8.4.49) + dev: true - postcss-merge-rules@5.1.4(postcss@8.4.47): + /postcss-merge-rules@5.1.4(postcss@8.4.49): + resolution: {integrity: sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - browserslist: 4.24.0 + browserslist: 4.24.3 caniuse-api: 3.0.0 - cssnano-utils: 3.1.0(postcss@8.4.47) - postcss: 8.4.47 + cssnano-utils: 3.1.0(postcss@8.4.49) + postcss: 8.4.49 postcss-selector-parser: 6.1.2 + dev: true - postcss-minify-font-values@5.1.0(postcss@8.4.47): + /postcss-minify-font-values@5.1.0(postcss@8.4.49): + resolution: {integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - postcss: 8.4.47 + postcss: 8.4.49 postcss-value-parser: 4.2.0 + dev: true - postcss-minify-gradients@5.1.1(postcss@8.4.47): + /postcss-minify-gradients@5.1.1(postcss@8.4.49): + resolution: {integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: colord: 2.9.3 - cssnano-utils: 3.1.0(postcss@8.4.47) - postcss: 8.4.47 + cssnano-utils: 3.1.0(postcss@8.4.49) + postcss: 8.4.49 postcss-value-parser: 4.2.0 + dev: true - postcss-minify-params@5.1.4(postcss@8.4.47): + /postcss-minify-params@5.1.4(postcss@8.4.49): + resolution: {integrity: sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - browserslist: 4.24.0 - cssnano-utils: 3.1.0(postcss@8.4.47) - postcss: 8.4.47 + browserslist: 4.24.3 + cssnano-utils: 3.1.0(postcss@8.4.49) + postcss: 8.4.49 postcss-value-parser: 4.2.0 + dev: true - postcss-minify-selectors@5.2.1(postcss@8.4.47): + /postcss-minify-selectors@5.2.1(postcss@8.4.49): + resolution: {integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - postcss: 8.4.47 + postcss: 8.4.49 postcss-selector-parser: 6.1.2 + dev: true - postcss-modules-extract-imports@3.1.0(postcss@8.4.47): + /postcss-modules-extract-imports@3.1.0(postcss@8.4.49): + resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 dependencies: - postcss: 8.4.47 + postcss: 8.4.49 + dev: true - postcss-modules-local-by-default@4.1.0(postcss@8.4.47): + /postcss-modules-local-by-default@4.2.0(postcss@8.4.49): + resolution: {integrity: sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 dependencies: - icss-utils: 5.1.0(postcss@8.4.47) - postcss: 8.4.47 + icss-utils: 5.1.0(postcss@8.4.49) + postcss: 8.4.49 postcss-selector-parser: 7.0.0 postcss-value-parser: 4.2.0 + dev: true - postcss-modules-scope@3.2.1(postcss@8.4.47): + /postcss-modules-scope@3.2.1(postcss@8.4.49): + resolution: {integrity: sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 dependencies: - postcss: 8.4.47 + postcss: 8.4.49 postcss-selector-parser: 7.0.0 + dev: true - postcss-modules-values@4.0.0(postcss@8.4.47): + /postcss-modules-values@4.0.0(postcss@8.4.49): + resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 dependencies: - icss-utils: 5.1.0(postcss@8.4.47) - postcss: 8.4.47 + icss-utils: 5.1.0(postcss@8.4.49) + postcss: 8.4.49 + dev: true - postcss-modules@4.3.1(postcss@8.4.47): + /postcss-modules@4.3.1(postcss@8.4.49): + resolution: {integrity: sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q==} + peerDependencies: + postcss: ^8.0.0 dependencies: generic-names: 4.0.0 icss-replace-symbols: 1.1.0 lodash.camelcase: 4.3.0 - postcss: 8.4.47 - postcss-modules-extract-imports: 3.1.0(postcss@8.4.47) - postcss-modules-local-by-default: 4.1.0(postcss@8.4.47) - postcss-modules-scope: 3.2.1(postcss@8.4.47) - postcss-modules-values: 4.0.0(postcss@8.4.47) + postcss: 8.4.49 + postcss-modules-extract-imports: 3.1.0(postcss@8.4.49) + postcss-modules-local-by-default: 4.2.0(postcss@8.4.49) + postcss-modules-scope: 3.2.1(postcss@8.4.49) + postcss-modules-values: 4.0.0(postcss@8.4.49) string-hash: 1.1.3 + dev: true - postcss-normalize-charset@5.1.0(postcss@8.4.47): + /postcss-normalize-charset@5.1.0(postcss@8.4.49): + resolution: {integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - postcss: 8.4.47 + postcss: 8.4.49 + dev: true - postcss-normalize-display-values@5.1.0(postcss@8.4.47): + /postcss-normalize-display-values@5.1.0(postcss@8.4.49): + resolution: {integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - postcss: 8.4.47 + postcss: 8.4.49 postcss-value-parser: 4.2.0 + dev: true - postcss-normalize-positions@5.1.1(postcss@8.4.47): + /postcss-normalize-positions@5.1.1(postcss@8.4.49): + resolution: {integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - postcss: 8.4.47 + postcss: 8.4.49 postcss-value-parser: 4.2.0 + dev: true - postcss-normalize-repeat-style@5.1.1(postcss@8.4.47): + /postcss-normalize-repeat-style@5.1.1(postcss@8.4.49): + resolution: {integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - postcss: 8.4.47 + postcss: 8.4.49 postcss-value-parser: 4.2.0 + dev: true - postcss-normalize-string@5.1.0(postcss@8.4.47): + /postcss-normalize-string@5.1.0(postcss@8.4.49): + resolution: {integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - postcss: 8.4.47 + postcss: 8.4.49 postcss-value-parser: 4.2.0 + dev: true - postcss-normalize-timing-functions@5.1.0(postcss@8.4.47): + /postcss-normalize-timing-functions@5.1.0(postcss@8.4.49): + resolution: {integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - postcss: 8.4.47 + postcss: 8.4.49 postcss-value-parser: 4.2.0 + dev: true - postcss-normalize-unicode@5.1.1(postcss@8.4.47): + /postcss-normalize-unicode@5.1.1(postcss@8.4.49): + resolution: {integrity: sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - browserslist: 4.24.0 - postcss: 8.4.47 + browserslist: 4.24.3 + postcss: 8.4.49 postcss-value-parser: 4.2.0 + dev: true - postcss-normalize-url@5.1.0(postcss@8.4.47): + /postcss-normalize-url@5.1.0(postcss@8.4.49): + resolution: {integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: normalize-url: 6.1.0 - postcss: 8.4.47 + postcss: 8.4.49 postcss-value-parser: 4.2.0 + dev: true - postcss-normalize-whitespace@5.1.1(postcss@8.4.47): + /postcss-normalize-whitespace@5.1.1(postcss@8.4.49): + resolution: {integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - postcss: 8.4.47 + postcss: 8.4.49 postcss-value-parser: 4.2.0 + dev: true - postcss-ordered-values@5.1.3(postcss@8.4.47): + /postcss-ordered-values@5.1.3(postcss@8.4.49): + resolution: {integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - cssnano-utils: 3.1.0(postcss@8.4.47) - postcss: 8.4.47 + cssnano-utils: 3.1.0(postcss@8.4.49) + postcss: 8.4.49 postcss-value-parser: 4.2.0 + dev: true - postcss-reduce-initial@5.1.2(postcss@8.4.47): + /postcss-reduce-initial@5.1.2(postcss@8.4.49): + resolution: {integrity: sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - browserslist: 4.24.0 + browserslist: 4.24.3 caniuse-api: 3.0.0 - postcss: 8.4.47 + postcss: 8.4.49 + dev: true - postcss-reduce-transforms@5.1.0(postcss@8.4.47): + /postcss-reduce-transforms@5.1.0(postcss@8.4.49): + resolution: {integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - postcss: 8.4.47 + postcss: 8.4.49 postcss-value-parser: 4.2.0 + dev: true - postcss-selector-parser@6.1.2: + /postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 + dev: true - postcss-selector-parser@7.0.0: + /postcss-selector-parser@7.0.0: + resolution: {integrity: sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==} + engines: {node: '>=4'} dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 + dev: true - postcss-svgo@5.1.0(postcss@8.4.47): + /postcss-svgo@5.1.0(postcss@8.4.49): + resolution: {integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - postcss: 8.4.47 + postcss: 8.4.49 postcss-value-parser: 4.2.0 svgo: 2.8.0 + dev: true - postcss-unique-selectors@5.1.1(postcss@8.4.47): + /postcss-unique-selectors@5.1.1(postcss@8.4.49): + resolution: {integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - postcss: 8.4.47 + postcss: 8.4.49 postcss-selector-parser: 6.1.2 + dev: true - postcss-value-parser@4.2.0: {} + /postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + dev: true - postcss@8.4.47: + /postcss@8.4.49: + resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} + engines: {node: ^10 || ^12 || >=14} dependencies: - nanoid: 3.3.7 - picocolors: 1.1.0 + nanoid: 3.3.8 + picocolors: 1.1.1 source-map-js: 1.2.1 + dev: true - prelude-ls@1.1.2: {} + /prelude-ls@1.1.2: + resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} + engines: {node: '>= 0.8.0'} + dev: true - prelude-ls@1.2.1: {} + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: true - prettier-linter-helpers@1.0.0: + /prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} dependencies: fast-diff: 1.3.0 + dev: true - prettier@1.19.1: {} + /prettier@1.19.1: + resolution: {integrity: sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==} + engines: {node: '>=4'} + hasBin: true + dev: true - prettier@2.8.8: {} + /prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true - pretty-format@25.5.0: + /pretty-format@25.5.0: + resolution: {integrity: sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==} + engines: {node: '>= 8.3'} dependencies: '@jest/types': 25.5.0 ansi-regex: 5.0.1 ansi-styles: 4.3.0 react-is: 16.13.1 + dev: true - pretty-format@26.6.2: + /pretty-format@26.6.2: + resolution: {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==} + engines: {node: '>= 10'} dependencies: '@jest/types': 26.6.2 ansi-regex: 5.0.1 ansi-styles: 4.3.0 react-is: 17.0.2 - pretty-format@27.5.1: + /pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: ansi-regex: 5.0.1 ansi-styles: 5.2.0 react-is: 17.0.2 + dev: true - pretty-format@28.1.3: + /pretty-format@28.1.3: + resolution: {integrity: sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dependencies: '@jest/schemas': 28.1.3 ansi-regex: 5.0.1 ansi-styles: 5.2.0 react-is: 18.3.1 + dev: true - pretty-format@29.7.0: + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 react-is: 18.3.1 - pretty-hrtime@1.0.3: {} + /pretty-hrtime@1.0.3: + resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==} + engines: {node: '>= 0.8'} + dev: true - proc-log@3.0.0: {} + /proc-log@3.0.0: + resolution: {integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true - process-nextick-args@2.0.1: {} + /process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - process-on-spawn@1.0.0: + /process-on-spawn@1.1.0: + resolution: {integrity: sha512-JOnOPQ/8TZgjs1JIH/m9ni7FfimjNa/PRx7y/Wb5qdItsnhO0jE4AT7fC0HjC28DUQWDr50dwSYZLdRMlqDq3Q==} + engines: {node: '>=8'} dependencies: fromentries: 1.3.2 + dev: true - process-warning@1.0.0: {} + /process-warning@1.0.0: + resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} + dev: true - process-warning@3.0.0: {} + /process-warning@3.0.0: + resolution: {integrity: sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==} + dev: true - process@0.11.10: {} + /process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} - progress-estimator@0.2.2: + /progress-estimator@0.2.2: + resolution: {integrity: sha512-GF76Ac02MTJD6o2nMNtmtOFjwWCnHcvXyn5HOWPQnEMO8OTLw7LAvNmrwe8LmdsB+eZhwUu9fX/c9iQnBxWaFA==} dependencies: chalk: 2.4.2 cli-spinners: 1.3.1 humanize-duration: 3.32.1 log-update: 2.3.0 + dev: true - progress@2.0.3: {} + /progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + dev: true - promise.series@0.2.0: {} + /promise.series@0.2.0: + resolution: {integrity: sha512-VWQJyU2bcDTgZw8kpfBpB/ejZASlCrzwz5f2hjb/zlujOEB4oeiAhHygAWq8ubsX2GVkD4kCU5V2dwOTaCY5EQ==} + engines: {node: '>=0.12'} + dev: true - promise@8.3.0: + /promise@8.3.0: + resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} dependencies: asap: 2.0.6 - prompts@2.4.2: + /prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} dependencies: kleur: 3.0.3 sisteransi: 1.0.5 - prop-types@15.8.1: + /prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 react-is: 16.13.1 + dev: true - proxy-addr@2.0.7: + /proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} dependencies: forwarded: 0.2.0 ipaddr.js: 1.9.1 + dev: true - proxy-from-env@1.1.0: {} + /proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + dev: true - pseudomap@1.0.2: {} + /pseudomap@1.0.2: + resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} + dev: true - psl@1.9.0: {} + /psl@1.15.0: + resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} + dependencies: + punycode: 2.3.1 + dev: true - pump@2.0.1: + /pump@2.0.1: + resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==} dependencies: end-of-stream: 1.4.4 once: 1.4.0 + dev: true - pump@3.0.2: + /pump@3.0.2: + resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} dependencies: end-of-stream: 1.4.4 once: 1.4.0 + dev: true - pumpify@1.5.1: + /pumpify@1.5.1: + resolution: {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==} dependencies: duplexify: 3.7.1 inherits: 2.0.4 pump: 2.0.1 + dev: true - punycode@2.3.1: {} + /punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + dev: true - pure-rand@6.1.0: {} + /pure-rand@6.1.0: + resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} + dev: true - qs@6.10.4: + /qs@6.13.0: + resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} + engines: {node: '>=0.6'} dependencies: - side-channel: 1.0.6 + side-channel: 1.1.0 + dev: true - qs@6.13.0: + /qs@6.13.1: + resolution: {integrity: sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==} + engines: {node: '>=0.6'} dependencies: - side-channel: 1.0.6 + side-channel: 1.1.0 + dev: true - qs@6.5.3: {} + /qs@6.5.3: + resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} + engines: {node: '>=0.6'} + dev: true - querystring@0.2.1: {} + /querystring@0.2.1: + resolution: {integrity: sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==} + engines: {node: '>=0.4.x'} + deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. - querystringify@2.2.0: {} + /querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + dev: true - queue-microtask@1.2.3: {} + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - queue-tick@1.0.1: {} + /queue-tick@1.0.1: + resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} + dev: true - queue@6.0.2: + /queue@6.0.2: + resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} dependencies: inherits: 2.0.4 - quick-format-unescaped@4.0.4: {} + /quick-format-unescaped@4.0.4: + resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} + dev: true + + /quick-lru@5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} + dev: true - rambda@9.3.0: {} + /rambda@9.4.1: + resolution: {integrity: sha512-awZe9AzmPI8XqizJz+NlaRbAdjhWKvuIaPikqRH6r41/ui9UTUQY5jTVdgQwnVrv1HnSMB6IBAAnNYs8HoVvZg==} + dev: true - ramda@0.29.0: {} + /ramda@0.29.0: + resolution: {integrity: sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA==} + dev: true - randombytes@2.1.0: + /randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} dependencies: safe-buffer: 5.2.1 + dev: true - range-parser@1.2.1: {} + /range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} - raw-body@2.5.2: + /raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} dependencies: bytes: 3.1.2 http-errors: 2.0.0 iconv-lite: 0.4.24 unpipe: 1.0.0 + dev: true - react-devtools-core@5.3.1: + /react-devtools-core@5.3.2: + resolution: {integrity: sha512-crr9HkVrDiJ0A4zot89oS0Cgv0Oa4OG1Em4jit3P3ZxZSKPMYyMjfwMqgcJna9o625g8oN87rBm8SWWrSTBZxg==} dependencies: - shell-quote: 1.8.1 + shell-quote: 1.8.2 ws: 7.5.10 transitivePeerDependencies: - bufferutil - utf-8-validate - react-docgen-typescript@2.2.2(typescript@5.5.4): + /react-docgen-typescript@2.2.2(typescript@5.5.4): + resolution: {integrity: sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==} + peerDependencies: + typescript: '>= 4.3.x' dependencies: typescript: 5.5.4 + dev: true - react-docgen@7.0.3: + /react-docgen@7.1.0: + resolution: {integrity: sha512-APPU8HB2uZnpl6Vt/+0AFoVYgSRtfiP6FLrZgPPTDmqSb2R4qZRbgd0A3VzIFxDt5e+Fozjx79WjLWnF69DK8g==} + engines: {node: '>=16.14.0'} dependencies: - '@babel/core': 7.25.2 - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 + '@babel/core': 7.26.0 + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.3 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.6 '@types/doctrine': 0.0.9 '@types/resolve': 1.20.6 doctrine: 3.0.0 - resolve: 1.22.8 + resolve: 1.22.10 strip-indent: 4.0.0 transitivePeerDependencies: - supports-color + dev: true - react-dom@18.3.1(react@18.3.1): + /react-dom@18.3.1(react@18.3.1): + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 dependencies: loose-envify: 1.4.0 react: 18.3.1 scheduler: 0.23.2 - react-element-to-jsx-string@15.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): - dependencies: - '@base2/pretty-print-object': 1.0.1 - is-plain-object: 5.0.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-is: 18.1.0 - - react-is@16.13.1: {} - - react-is@17.0.2: {} + /react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + dev: true - react-is@18.1.0: {} + /react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - react-is@18.3.1: {} + /react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} - react-native-svg-transformer@1.3.0(react-native-svg@15.3.0(react-native@0.74.1(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(@types/react@18.3.1)(react@18.3.1))(react@18.3.1))(react-native@0.74.1(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(@types/react@18.3.1)(react@18.3.1))(typescript@5.5.4): + /react-native-svg-transformer@1.3.0(react-native-svg@15.3.0)(react-native@0.74.1)(typescript@5.5.4): + resolution: {integrity: sha512-SV92uRjENDuanHLVuLy2Sdvt6f8vu7qnG8vC9CwBiAXV0BpWN4/wPvfc+r2WPAkcctRZLLOvrGnGA2o8nZd0cg==} + peerDependencies: + react-native: '>=0.59.0' + react-native-svg: '>=12.0.0' dependencies: '@svgr/core': 8.1.0(typescript@5.5.4) - '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.5.4)) - '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0(typescript@5.5.4))(typescript@5.5.4) + '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0) + '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0)(typescript@5.5.4) path-dirname: 1.0.2 - react-native: 0.74.1(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(@types/react@18.3.1)(react@18.3.1) - react-native-svg: 15.3.0(react-native@0.74.1(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(@types/react@18.3.1)(react@18.3.1))(react@18.3.1) + react-native: 0.74.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0)(@types/react@18.3.1)(react@18.3.1) + react-native-svg: 15.3.0(react-native@0.74.1)(react@18.3.1) transitivePeerDependencies: - supports-color - typescript + dev: true - react-native-svg@15.3.0(react-native@0.74.1(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(@types/react@18.3.1)(react@18.3.1))(react@18.3.1): + /react-native-svg@15.3.0(react-native@0.74.1)(react@18.3.1): + resolution: {integrity: sha512-mBHu/fdlzUbpGX8SZFxgbKvK/sgqLfDLP8uh8G7Us+zJgdjO8OSEeqHQs+kPRdQmdLJQiqPJX2WXgCl7ToTWqw==} + peerDependencies: + react: '*' + react-native: '*' dependencies: css-select: 5.1.0 css-tree: 1.1.3 react: 18.3.1 - react-native: 0.74.1(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(@types/react@18.3.1)(react@18.3.1) + react-native: 0.74.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0)(@types/react@18.3.1)(react@18.3.1) + dev: true - react-native@0.74.1(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(@types/react@18.3.1)(react@18.2.0): + /react-native@0.74.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0)(@types/react@18.3.1)(react@18.2.0): + resolution: {integrity: sha512-0H2XpmghwOtfPpM2LKqHIN7gxy+7G/r1hwJHKLV6uoyXGC/gCojRtoo5NqyKrWpFC8cqyT6wTYCLuG7CxEKilg==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + '@types/react': ^18.2.6 + react: 18.2.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: '@jest/create-cache-key-function': 29.7.0 '@react-native-community/cli': 13.6.6 '@react-native-community/cli-platform-android': 13.6.6 '@react-native-community/cli-platform-ios': 13.6.6 '@react-native/assets-registry': 0.74.83 - '@react-native/codegen': 0.74.83(@babel/preset-env@7.25.8(@babel/core@7.25.2)) - '@react-native/community-cli-plugin': 0.74.83(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2)) + '@react-native/codegen': 0.74.83(@babel/preset-env@7.26.0) + '@react-native/community-cli-plugin': 0.74.83(@babel/core@7.26.0)(@babel/preset-env@7.26.0) '@react-native/gradle-plugin': 0.74.83 '@react-native/js-polyfills': 0.74.83 '@react-native/normalize-colors': 0.74.83 - '@react-native/virtualized-lists': 0.74.83(@types/react@18.3.1)(react-native@0.74.1(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(@types/react@18.3.1)(react@18.2.0))(react@18.2.0) + '@react-native/virtualized-lists': 0.74.83(@types/react@18.3.1)(react-native@0.74.1)(react@18.2.0) + '@types/react': 18.3.1 abort-controller: 3.0.0 anser: 1.4.10 ansi-regex: 5.0.1 @@ -23174,7 +19032,7 @@ snapshots: pretty-format: 26.6.2 promise: 8.3.0 react: 18.2.0 - react-devtools-core: 5.3.1 + react-devtools-core: 5.3.2 react-refresh: 0.14.2 react-shallow-renderer: 16.15.0(react@18.2.0) regenerator-runtime: 0.13.11 @@ -23183,8 +19041,6 @@ snapshots: whatwg-fetch: 3.6.20 ws: 6.2.3 yargs: 17.7.2 - optionalDependencies: - '@types/react': 18.3.1 transitivePeerDependencies: - '@babel/core' - '@babel/preset-env' @@ -23192,20 +19048,31 @@ snapshots: - encoding - supports-color - utf-8-validate + dev: false - react-native@0.74.1(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(@types/react@18.3.1)(react@18.3.1): + /react-native@0.74.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0)(@types/react@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-0H2XpmghwOtfPpM2LKqHIN7gxy+7G/r1hwJHKLV6uoyXGC/gCojRtoo5NqyKrWpFC8cqyT6wTYCLuG7CxEKilg==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + '@types/react': ^18.2.6 + react: 18.2.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: '@jest/create-cache-key-function': 29.7.0 '@react-native-community/cli': 13.6.6 '@react-native-community/cli-platform-android': 13.6.6 '@react-native-community/cli-platform-ios': 13.6.6 '@react-native/assets-registry': 0.74.83 - '@react-native/codegen': 0.74.83(@babel/preset-env@7.25.8(@babel/core@7.25.2)) - '@react-native/community-cli-plugin': 0.74.83(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2)) + '@react-native/codegen': 0.74.83(@babel/preset-env@7.26.0) + '@react-native/community-cli-plugin': 0.74.83(@babel/core@7.26.0)(@babel/preset-env@7.26.0) '@react-native/gradle-plugin': 0.74.83 '@react-native/js-polyfills': 0.74.83 '@react-native/normalize-colors': 0.74.83 - '@react-native/virtualized-lists': 0.74.83(@types/react@18.3.1)(react-native@0.74.1(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(@types/react@18.3.1)(react@18.3.1))(react@18.3.1) + '@react-native/virtualized-lists': 0.74.83(@types/react@18.3.1)(react-native@0.74.1)(react@18.3.1) + '@types/react': 18.3.1 abort-controller: 3.0.0 anser: 1.4.10 ansi-regex: 5.0.1 @@ -23224,7 +19091,7 @@ snapshots: pretty-format: 26.6.2 promise: 8.3.0 react: 18.3.1 - react-devtools-core: 5.3.1 + react-devtools-core: 5.3.2 react-refresh: 0.14.2 react-shallow-renderer: 16.15.0(react@18.3.1) regenerator-runtime: 0.13.11 @@ -23233,8 +19100,6 @@ snapshots: whatwg-fetch: 3.6.20 ws: 6.2.3 yargs: 17.7.2 - optionalDependencies: - '@types/react': 18.3.1 transitivePeerDependencies: - '@babel/core' - '@babel/preset-env' @@ -23243,56 +19108,84 @@ snapshots: - supports-color - utf-8-validate - react-refresh@0.14.2: {} + /react-refresh@0.14.2: + resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} + engines: {node: '>=0.10.0'} - react-shallow-renderer@16.15.0(react@18.2.0): + /react-shallow-renderer@16.15.0(react@18.2.0): + resolution: {integrity: sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==} + peerDependencies: + react: ^16.0.0 || ^17.0.0 || ^18.0.0 dependencies: object-assign: 4.1.1 react: 18.2.0 react-is: 18.3.1 + dev: false - react-shallow-renderer@16.15.0(react@18.3.1): + /react-shallow-renderer@16.15.0(react@18.3.1): + resolution: {integrity: sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==} + peerDependencies: + react: ^16.0.0 || ^17.0.0 || ^18.0.0 dependencies: object-assign: 4.1.1 react: 18.3.1 react-is: 18.3.1 - react-test-renderer@18.2.0(react@18.3.1): + /react-test-renderer@18.2.0(react@18.3.1): + resolution: {integrity: sha512-JWD+aQ0lh2gvh4NM3bBM42Kx+XybOxCpgYK7F8ugAlpaTSnWsX+39Z4XkOykGZAHrjwwTZT3x3KxswVWxHPUqA==} + peerDependencies: + react: ^18.2.0 dependencies: react: 18.3.1 react-is: 18.3.1 react-shallow-renderer: 16.15.0(react@18.3.1) scheduler: 0.23.2 + dev: true - react@18.2.0: + /react@18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + engines: {node: '>=0.10.0'} dependencies: loose-envify: 1.4.0 + dev: false - react@18.3.1: + /react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} dependencies: loose-envify: 1.4.0 - read-pkg-up@7.0.1: + /read-pkg-up@7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} dependencies: find-up: 4.1.0 read-pkg: 5.2.0 type-fest: 0.8.1 + dev: true - read-pkg@5.2.0: + /read-pkg@5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} dependencies: '@types/normalize-package-data': 2.4.4 normalize-package-data: 2.5.0 parse-json: 5.2.0 type-fest: 0.6.0 + dev: true - read-yaml-file@1.1.0: + /read-yaml-file@1.1.0: + resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} + engines: {node: '>=6'} dependencies: graceful-fs: 4.2.11 js-yaml: 3.14.1 pify: 4.0.1 strip-bom: 3.0.0 + dev: true - readable-stream@2.3.8: + /readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} dependencies: core-util-is: 1.0.3 inherits: 2.0.4 @@ -23302,147 +19195,221 @@ snapshots: string_decoder: 1.1.1 util-deprecate: 1.0.2 - readable-stream@3.6.2: + /readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} dependencies: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 - readable-stream@4.5.2: + /readable-stream@4.6.0: + resolution: {integrity: sha512-cbAdYt0VcnpN2Bekq7PU+k363ZRsPwJoEEJOEtSJQlJXzwaxt3FIo/uL+KeDSGIjJqtkwyge4KQgD2S2kd+CQw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: abort-controller: 3.0.0 buffer: 6.0.3 events: 3.3.0 process: 0.11.10 string_decoder: 1.3.0 + dev: true + + /readable-web-to-node-stream@3.0.2: + resolution: {integrity: sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==} + engines: {node: '>=8'} + dependencies: + readable-stream: 3.6.2 + dev: true - readdirp@3.6.0: + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 + dev: true - readline@1.3.0: {} + /readline@1.3.0: + resolution: {integrity: sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==} - real-require@0.1.0: {} + /real-require@0.1.0: + resolution: {integrity: sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==} + engines: {node: '>= 12.13.0'} + dev: true - real-require@0.2.0: {} + /real-require@0.2.0: + resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} + engines: {node: '>= 12.13.0'} + dev: true - realpath-native@2.0.0: {} + /realpath-native@2.0.0: + resolution: {integrity: sha512-v1SEYUOXXdbBZK8ZuNgO4TBjamPsiSgcFr0aP+tEKpQZK8vooEUqV6nm6Cv502mX4NF2EfsnVqtNAHG+/6Ur1Q==} + engines: {node: '>=8'} + dev: true - recast@0.21.5: + /recast@0.21.5: + resolution: {integrity: sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==} + engines: {node: '>= 4'} dependencies: ast-types: 0.15.2 esprima: 4.0.1 source-map: 0.6.1 - tslib: 2.7.0 + tslib: 2.8.1 - recast@0.23.9: + /recast@0.23.9: + resolution: {integrity: sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==} + 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.7.0 + tslib: 2.8.1 - rechoir@0.6.2: + /rechoir@0.6.2: + resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} + engines: {node: '>= 0.10'} dependencies: - resolve: 1.22.8 + resolve: 1.22.10 + dev: true - redent@3.0.0: + /redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} dependencies: indent-string: 4.0.0 strip-indent: 3.0.0 + dev: true - reflect.getprototypeof@1.0.6: + /reflect.getprototypeof@1.0.9: + resolution: {integrity: sha512-r0Ay04Snci87djAsI4U+WNRcSw5S4pOH7qFjd/veA5gC7TbqESR3tcj28ia95L/fYUDw11JKP7uqUKUAfVvV5Q==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.3 + dunder-proto: 1.0.1 + es-abstract: 1.23.7 es-errors: 1.3.0 - get-intrinsic: 1.2.4 - globalthis: 1.0.4 - which-builtin-type: 1.1.4 + get-intrinsic: 1.2.6 + gopd: 1.2.0 + which-builtin-type: 1.2.1 + dev: true - regenerate-unicode-properties@10.2.0: + /regenerate-unicode-properties@10.2.0: + resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==} + engines: {node: '>=4'} dependencies: regenerate: 1.4.2 - regenerate@1.4.2: {} + /regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - regenerator-runtime@0.13.11: {} + /regenerator-runtime@0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - regenerator-runtime@0.14.1: {} + /regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - regenerator-transform@0.15.2: + /regenerator-transform@0.15.2: + resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 - regex-not@1.0.2: + /regex-not@1.0.2: + resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} + engines: {node: '>=0.10.0'} dependencies: extend-shallow: 3.0.2 safe-regex: 1.1.0 + dev: true - regexp.prototype.flags@1.5.2: + /regexp.prototype.flags@1.5.3: + resolution: {integrity: sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 es-errors: 1.3.0 set-function-name: 2.0.2 + dev: true - regexpp@2.0.1: {} - - regexpp@3.2.0: {} + /regexpp@2.0.1: + resolution: {integrity: sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==} + engines: {node: '>=6.5.0'} + dev: true - regexpu-core@5.3.2: - dependencies: - '@babel/regjsgen': 0.8.0 - regenerate: 1.4.2 - regenerate-unicode-properties: 10.2.0 - regjsparser: 0.9.1 - unicode-match-property-ecmascript: 2.0.0 - unicode-match-property-value-ecmascript: 2.2.0 + /regexpp@3.2.0: + resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} + engines: {node: '>=8'} + dev: true - regexpu-core@6.1.1: + /regexpu-core@6.2.0: + resolution: {integrity: sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==} + engines: {node: '>=4'} dependencies: regenerate: 1.4.2 regenerate-unicode-properties: 10.2.0 regjsgen: 0.8.0 - regjsparser: 0.11.1 + regjsparser: 0.12.0 unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.2.0 - regjsgen@0.8.0: {} + /regjsgen@0.8.0: + resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} - regjsparser@0.11.1: + /regjsparser@0.12.0: + resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} + hasBin: true dependencies: jsesc: 3.0.2 - regjsparser@0.9.1: - dependencies: - jsesc: 0.5.0 - - release-zalgo@1.0.0: + /release-zalgo@1.0.0: + resolution: {integrity: sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==} + engines: {node: '>=4'} dependencies: es6-error: 4.1.1 + dev: true - remove-trailing-separator@1.1.0: {} + /remove-trailing-separator@1.1.0: + resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} + dev: true - repeat-element@1.1.4: {} + /repeat-element@1.1.4: + resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==} + engines: {node: '>=0.10.0'} + dev: true - repeat-string@1.6.1: {} + /repeat-string@1.6.1: + resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} + engines: {node: '>=0.10'} + dev: true - request-promise-core@1.1.4(request@2.88.2): + /request-promise-core@1.1.4(request@2.88.2): + resolution: {integrity: sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==} + engines: {node: '>=0.10.0'} + peerDependencies: + request: ^2.34 dependencies: lodash: 4.17.21 request: 2.88.2 + dev: true - request-promise-native@1.0.9(request@2.88.2): + /request-promise-native@1.0.9(request@2.88.2): + resolution: {integrity: sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==} + engines: {node: '>=0.12.0'} + deprecated: request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142 + peerDependencies: + request: ^2.34 dependencies: request: 2.88.2 request-promise-core: 1.1.4(request@2.88.2) stealthy-require: 1.1.1 tough-cookie: 2.5.0 + dev: true - request@2.88.2: + /request@2.88.2: + resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} + engines: {node: '>= 6'} + deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 dependencies: aws-sign2: 0.7.0 aws4: 1.13.2 @@ -23464,148 +19431,271 @@ snapshots: tough-cookie: 2.5.0 tunnel-agent: 0.6.0 uuid: 3.4.0 + dev: true + + /require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} - require-directory@2.1.1: {} + /require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + dev: true - require-from-string@2.0.2: {} + /require-main-filename@2.0.0: + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - require-main-filename@2.0.0: {} + /requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + dev: true - requires-port@1.0.0: {} + /resolve-alpn@1.2.1: + resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} + dev: true - resolve-cwd@3.0.0: + /resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} dependencies: resolve-from: 5.0.0 + dev: true - resolve-dir@0.1.1: + /resolve-dir@0.1.1: + resolution: {integrity: sha512-QxMPqI6le2u0dCLyiGzgy92kjkkL6zO0XyvHzjdTNH3zM6e5Hz3BwG6+aEyNgiQ5Xz6PwTwgQEj3U50dByPKIA==} + engines: {node: '>=0.10.0'} dependencies: expand-tilde: 1.2.2 global-modules: 0.2.3 + dev: true - resolve-dir@1.0.1: + /resolve-dir@1.0.1: + resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==} + engines: {node: '>=0.10.0'} dependencies: expand-tilde: 2.0.2 global-modules: 1.0.0 + dev: true + + /resolve-from@3.0.0: + resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} + engines: {node: '>=4'} - resolve-from@3.0.0: {} + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: true - resolve-from@4.0.0: {} + /resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + dev: true - resolve-from@5.0.0: {} + /resolve-url@0.2.1: + resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} + deprecated: https://github.com/lydell/resolve-url#deprecated + dev: true - resolve-url@0.2.1: {} + /resolve.exports@1.1.0: + resolution: {integrity: sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==} + engines: {node: '>=10'} + dev: true - resolve.exports@1.1.0: {} + /resolve.exports@1.1.1: + resolution: {integrity: sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==} + engines: {node: '>=10'} + dev: true - resolve.exports@1.1.1: {} + /resolve.exports@2.0.3: + resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} + engines: {node: '>=10'} + dev: true - resolve.exports@2.0.2: {} + /resolve@1.1.7: + resolution: {integrity: sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==} + dev: true - resolve@1.1.7: {} + /resolve@1.17.0: + resolution: {integrity: sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==} + dependencies: + path-parse: 1.0.7 + dev: true - resolve@1.17.0: + /resolve@1.19.0: + resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} dependencies: + is-core-module: 2.16.0 path-parse: 1.0.7 + dev: true - resolve@1.19.0: + /resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true dependencies: - is-core-module: 2.15.1 + is-core-module: 2.16.0 path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 - resolve@1.22.8: + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true dependencies: - is-core-module: 2.15.1 + is-core-module: 2.16.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + dev: true - resolve@2.0.0-next.5: + /resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true dependencies: - is-core-module: 2.15.1 + is-core-module: 2.16.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + dev: true - restore-cursor@2.0.0: + /responselike@2.0.1: + resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} + dependencies: + lowercase-keys: 2.0.0 + dev: true + + /restore-cursor@2.0.0: + resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==} + engines: {node: '>=4'} dependencies: onetime: 2.0.1 signal-exit: 3.0.7 + dev: true - restore-cursor@3.1.0: + /restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} dependencies: onetime: 5.1.2 signal-exit: 3.0.7 - restore-cursor@4.0.0: + /restore-cursor@4.0.0: + resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: onetime: 5.1.2 signal-exit: 3.0.7 + dev: true - ret@0.1.15: {} + /ret@0.1.15: + resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} + engines: {node: '>=0.12'} + dev: true - reusify@1.0.4: {} + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rfdc@1.4.1: {} + /rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + dev: true - rimraf@2.4.5: + /rimraf@2.4.5: + resolution: {integrity: sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true dependencies: glob: 6.0.4 + dev: true - rimraf@2.6.3: + /rimraf@2.6.3: + resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true dependencies: glob: 7.2.3 - rimraf@3.0.2: + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true dependencies: glob: 7.2.3 - rimraf@4.4.1: + /rimraf@4.4.1: + resolution: {integrity: sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==} + engines: {node: '>=14'} + hasBin: true dependencies: glob: 9.3.5 + dev: true - rollup-plugin-copy@3.5.0: + /rollup-plugin-copy@3.5.0: + resolution: {integrity: sha512-wI8D5dvYovRMx/YYKtUNt3Yxaw4ORC9xo6Gt9t22kveWz1enG9QrhVlagzwrxSC455xD1dHMKhIJkbsQ7d48BA==} + engines: {node: '>=8.3'} dependencies: '@types/fs-extra': 8.1.5 colorette: 1.4.0 fs-extra: 8.1.0 globby: 10.0.1 is-plain-object: 3.0.1 + dev: true - rollup-plugin-postcss@4.0.2(postcss@8.4.47)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4)): + /rollup-plugin-postcss@4.0.2(postcss@8.4.49)(ts-node@10.9.1): + resolution: {integrity: sha512-05EaY6zvZdmvPUDi3uCcAQoESDcYnv8ogJJQRp6V5kZ6J6P7uAVJlrTZcaaA20wTH527YTnKfkAoPxWI/jPp4w==} + engines: {node: '>=10'} + peerDependencies: + postcss: 8.x dependencies: chalk: 4.1.2 concat-with-sourcemaps: 1.1.0 - cssnano: 5.1.15(postcss@8.4.47) + cssnano: 5.1.15(postcss@8.4.49) import-cwd: 3.0.0 p-queue: 6.6.2 pify: 5.0.0 - postcss: 8.4.47 - postcss-load-config: 3.1.4(postcss@8.4.47)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4)) - postcss-modules: 4.3.1(postcss@8.4.47) + postcss: 8.4.49 + postcss-load-config: 3.1.4(postcss@8.4.49)(ts-node@10.9.1) + postcss-modules: 4.3.1(postcss@8.4.49) promise.series: 0.2.0 - resolve: 1.22.8 + resolve: 1.22.10 rollup-pluginutils: 2.8.2 safe-identifier: 0.4.2 style-inject: 0.3.0 transitivePeerDependencies: - ts-node + dev: true - rollup-plugin-sourcemaps@0.6.3(@types/node@22.7.3)(rollup@1.32.1): + /rollup-plugin-sourcemaps@0.6.3(@types/node@18.16.9)(rollup@1.32.1): + resolution: {integrity: sha512-paFu+nT1xvuO1tPFYXGe+XnQvg4Hjqv/eIhG8i5EspfYYPBKL57X7iVbfv55aNVASg3dzWvES9dmWsL2KhfByw==} + engines: {node: '>=10.0.0'} + peerDependencies: + '@types/node': '>=10.0.0' + rollup: '>=0.31.2' + peerDependenciesMeta: + '@types/node': + optional: true dependencies: '@rollup/pluginutils': 3.1.0(rollup@1.32.1) + '@types/node': 18.16.9 rollup: 1.32.1 source-map-resolve: 0.6.0 - optionalDependencies: - '@types/node': 22.7.3 + dev: true - rollup-plugin-terser@5.3.1(rollup@1.32.1): + /rollup-plugin-terser@5.3.1(rollup@1.32.1): + resolution: {integrity: sha512-1pkwkervMJQGFYvM9nscrUoncPwiKR/K+bHdjv6PFgRo3cgPHoRT83y2Aa3GvINj4539S15t/tpFPb775TDs6w==} + deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser + peerDependencies: + rollup: '>=0.66.0 <3' dependencies: - '@babel/code-frame': 7.24.7 + '@babel/code-frame': 7.26.2 jest-worker: 24.9.0 rollup: 1.32.1 rollup-pluginutils: 2.8.2 serialize-javascript: 4.0.0 terser: 4.8.1 + dev: true - rollup-plugin-typescript2@0.27.3(rollup@1.32.1)(typescript@3.9.10): + /rollup-plugin-typescript2@0.27.3(rollup@1.32.1)(typescript@3.9.10): + resolution: {integrity: sha512-gmYPIFmALj9D3Ga1ZbTZAKTXq1JKlTQBtj299DXhqYz9cL3g/AQfUvbb2UhH+Nf++cCq941W2Mv7UcrcgLzJJg==} + peerDependencies: + rollup: '>=1.26.3' + typescript: '>=2.4.0' dependencies: '@rollup/pluginutils': 3.1.0(rollup@1.32.1) find-cache-dir: 3.3.2 @@ -23614,99 +19704,158 @@ snapshots: rollup: 1.32.1 tslib: 2.0.1 typescript: 3.9.10 + dev: true - rollup-plugin-typescript2@0.36.0(rollup@4.22.4)(typescript@5.5.4): + /rollup-plugin-typescript2@0.36.0(rollup@4.29.1)(typescript@5.5.4): + resolution: {integrity: sha512-NB2CSQDxSe9+Oe2ahZbf+B4bh7pHwjV5L+RSYpCu7Q5ROuN94F9b6ioWwKfz3ueL3KTtmX4o2MUH2cgHDIEUsw==} + peerDependencies: + rollup: '>=1.26.3' + typescript: '>=2.4.0' dependencies: '@rollup/pluginutils': 4.2.1 find-cache-dir: 3.3.2 fs-extra: 10.1.0 - rollup: 4.22.4 + rollup: 4.29.1 semver: 7.6.3 - tslib: 2.7.0 + tslib: 2.8.1 typescript: 5.5.4 + dev: true - rollup-pluginutils@2.8.2: + /rollup-pluginutils@2.8.2: + resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} dependencies: estree-walker: 0.6.1 + dev: true - rollup@1.32.1: + /rollup@1.32.1: + resolution: {integrity: sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A==} + hasBin: true dependencies: '@types/estree': 1.0.6 - '@types/node': 16.18.109 + '@types/node': 18.16.9 acorn: 7.4.1 + dev: true - rollup@3.29.5: + /rollup@3.29.5: + resolution: {integrity: sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true optionalDependencies: fsevents: 2.3.3 + dev: true - rollup@4.22.4: + /rollup@4.29.1: + resolution: {integrity: sha512-RaJ45M/kmJUzSWDs1Nnd5DdV4eerC98idtUOVr6FfKcgxqvjwHmxc5upLF9qZU9EpsVzzhleFahrT3shLuJzIw==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.22.4 - '@rollup/rollup-android-arm64': 4.22.4 - '@rollup/rollup-darwin-arm64': 4.22.4 - '@rollup/rollup-darwin-x64': 4.22.4 - '@rollup/rollup-linux-arm-gnueabihf': 4.22.4 - '@rollup/rollup-linux-arm-musleabihf': 4.22.4 - '@rollup/rollup-linux-arm64-gnu': 4.22.4 - '@rollup/rollup-linux-arm64-musl': 4.22.4 - '@rollup/rollup-linux-powerpc64le-gnu': 4.22.4 - '@rollup/rollup-linux-riscv64-gnu': 4.22.4 - '@rollup/rollup-linux-s390x-gnu': 4.22.4 - '@rollup/rollup-linux-x64-gnu': 4.22.4 - '@rollup/rollup-linux-x64-musl': 4.22.4 - '@rollup/rollup-win32-arm64-msvc': 4.22.4 - '@rollup/rollup-win32-ia32-msvc': 4.22.4 - '@rollup/rollup-win32-x64-msvc': 4.22.4 + '@rollup/rollup-android-arm-eabi': 4.29.1 + '@rollup/rollup-android-arm64': 4.29.1 + '@rollup/rollup-darwin-arm64': 4.29.1 + '@rollup/rollup-darwin-x64': 4.29.1 + '@rollup/rollup-freebsd-arm64': 4.29.1 + '@rollup/rollup-freebsd-x64': 4.29.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.29.1 + '@rollup/rollup-linux-arm-musleabihf': 4.29.1 + '@rollup/rollup-linux-arm64-gnu': 4.29.1 + '@rollup/rollup-linux-arm64-musl': 4.29.1 + '@rollup/rollup-linux-loongarch64-gnu': 4.29.1 + '@rollup/rollup-linux-powerpc64le-gnu': 4.29.1 + '@rollup/rollup-linux-riscv64-gnu': 4.29.1 + '@rollup/rollup-linux-s390x-gnu': 4.29.1 + '@rollup/rollup-linux-x64-gnu': 4.29.1 + '@rollup/rollup-linux-x64-musl': 4.29.1 + '@rollup/rollup-win32-arm64-msvc': 4.29.1 + '@rollup/rollup-win32-ia32-msvc': 4.29.1 + '@rollup/rollup-win32-x64-msvc': 4.29.1 fsevents: 2.3.3 + dev: true - rrweb-cssom@0.6.0: {} + /rrweb-cssom@0.6.0: + resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} + dev: true - rsvp@4.8.5: {} + /rsvp@4.8.5: + resolution: {integrity: sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==} + engines: {node: 6.* || >= 7.*} + dev: true - run-async@2.4.1: {} + /run-async@2.4.1: + resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} + engines: {node: '>=0.12.0'} + dev: true - run-parallel@1.2.0: + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 - rxjs@6.6.7: + /rxjs@6.6.7: + resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} + engines: {npm: '>=2.0.0'} dependencies: tslib: 1.14.1 + dev: true - sade@1.8.1: + /sade@1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} dependencies: mri: 1.2.0 + dev: true - safe-array-concat@1.1.2: + /safe-array-concat@1.1.3: + resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} + engines: {node: '>=0.4'} dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 + call-bind: 1.0.8 + call-bound: 1.0.3 + get-intrinsic: 1.2.6 + has-symbols: 1.1.0 isarray: 2.0.5 + dev: true - safe-buffer@5.1.2: {} + /safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - safe-buffer@5.2.1: {} + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - safe-identifier@0.4.2: {} + /safe-identifier@0.4.2: + resolution: {integrity: sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w==} + dev: true - safe-regex-test@1.0.3: + /safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bound: 1.0.3 es-errors: 1.3.0 - is-regex: 1.1.4 + is-regex: 1.2.1 + dev: true - safe-regex@1.1.0: + /safe-regex@1.1.0: + resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} dependencies: ret: 0.1.15 + dev: true - safe-stable-stringify@2.5.0: {} + /safe-stable-stringify@2.5.0: + resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} + engines: {node: '>=10'} + dev: true - safer-buffer@2.1.2: {} + /safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: true - sane@4.1.0: + /sane@4.1.0: + resolution: {integrity: sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==} + engines: {node: 6.* || 8.* || >= 10.*} + deprecated: some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added + hasBin: true dependencies: '@cnakazawa/watch': 1.0.4 anymatch: 2.0.0 @@ -23719,47 +19868,98 @@ snapshots: walker: 1.0.8 transitivePeerDependencies: - supports-color + dev: true - saxes@3.1.11: + /saxes@3.1.11: + resolution: {integrity: sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==} + engines: {node: '>=8'} dependencies: xmlchars: 2.2.0 + dev: true - saxes@6.0.0: + /saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} dependencies: xmlchars: 2.2.0 + dev: true - scheduler@0.23.2: + /scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} dependencies: loose-envify: 1.4.0 - scheduler@0.24.0-canary-efb381bbf-20230505: + /scheduler@0.24.0-canary-efb381bbf-20230505: + resolution: {integrity: sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA==} dependencies: loose-envify: 1.4.0 - schema-utils@3.3.0: + /schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} dependencies: '@types/json-schema': 7.0.15 ajv: 6.12.6 ajv-keywords: 3.5.2(ajv@6.12.6) + dev: true + + /schema-utils@4.3.0: + resolution: {integrity: sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/json-schema': 7.0.15 + ajv: 8.17.1 + ajv-formats: 2.1.1(ajv@8.17.1) + ajv-keywords: 5.1.0(ajv@8.17.1) + dev: true - secure-compare@3.0.1: {} + /secure-compare@3.0.1: + resolution: {integrity: sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==} + dev: true - selfsigned@2.4.1: + /selfsigned@2.4.1: + resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} + engines: {node: '>=10'} dependencies: '@types/node-forge': 1.3.11 node-forge: 1.3.1 - semver@5.7.2: {} + /semver-regex@4.0.5: + resolution: {integrity: sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==} + engines: {node: '>=12'} + dev: true + + /semver-truncate@3.0.0: + resolution: {integrity: sha512-LJWA9kSvMolR51oDE6PN3kALBNaUdkxzAGcexw8gjMA8xr5zUqK0JiR3CgARSqanYF3Z1YHvsErb1KDgh+v7Rg==} + engines: {node: '>=12'} + dependencies: + semver: 7.6.3 + dev: true + + /semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true - semver@6.3.1: {} + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true - semver@7.5.4: + /semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true dependencies: lru-cache: 6.0.0 + dev: true - semver@7.6.3: {} + /semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true - send@0.19.0: + /send@0.19.0: + resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} + engines: {node: '>= 0.8.0'} dependencies: debug: 2.6.9 depd: 2.0.0 @@ -23777,17 +19977,25 @@ snapshots: transitivePeerDependencies: - supports-color - serialize-error@2.1.0: {} + /serialize-error@2.1.0: + resolution: {integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==} + engines: {node: '>=0.10.0'} - serialize-javascript@4.0.0: + /serialize-javascript@4.0.0: + resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==} dependencies: randombytes: 2.1.0 + dev: true - serialize-javascript@6.0.2: + /serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} dependencies: randombytes: 2.1.0 + dev: true - serve-static@1.16.2: + /serve-static@1.16.2: + resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} + engines: {node: '>= 0.8.0'} dependencies: encodeurl: 2.0.0 escape-html: 1.0.3 @@ -23796,112 +20004,206 @@ snapshots: transitivePeerDependencies: - supports-color - set-blocking@2.0.0: {} + /set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - set-function-length@1.2.2: + /set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} dependencies: define-data-property: 1.1.4 es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.4 - gopd: 1.0.1 + get-intrinsic: 1.2.6 + gopd: 1.2.0 has-property-descriptors: 1.0.2 - set-function-name@2.0.2: + /set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} dependencies: define-data-property: 1.1.4 es-errors: 1.3.0 functions-have-names: 1.2.3 has-property-descriptors: 1.0.2 + dev: true - set-value@2.0.1: + /set-value@2.0.1: + resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} + engines: {node: '>=0.10.0'} dependencies: extend-shallow: 2.0.1 is-extendable: 0.1.1 is-plain-object: 2.0.4 split-string: 3.1.0 + dev: true - setprototypeof@1.2.0: {} + /setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - shallow-clone@3.0.1: + /shallow-clone@3.0.1: + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} dependencies: kind-of: 6.0.3 - shebang-command@1.2.0: + /shebang-command@1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} dependencies: shebang-regex: 1.0.0 + dev: true - shebang-command@2.0.0: + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 - shebang-regex@1.0.0: {} + /shebang-regex@1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} + dev: true - shebang-regex@3.0.0: {} + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} - shell-quote@1.8.1: {} + /shell-quote@1.8.2: + resolution: {integrity: sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==} + engines: {node: '>= 0.4'} - shelljs@0.8.5: + /shelljs@0.8.5: + resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} + engines: {node: '>=4'} + hasBin: true dependencies: glob: 7.2.3 interpret: 1.4.0 rechoir: 0.6.2 + dev: true - shellwords@0.1.1: + /shellwords@0.1.1: + resolution: {integrity: sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==} + requiresBuild: true + dev: true optional: true - side-channel@1.0.6: + /side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.3 + dev: true + + /side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.6 + object-inspect: 1.13.3 + dev: true + + /side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.6 + object-inspect: 1.13.3 + side-channel-map: 1.0.1 + dev: true + + /side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 es-errors: 1.3.0 - get-intrinsic: 1.2.4 - object-inspect: 1.13.2 + object-inspect: 1.13.3 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + dev: true - siginfo@2.0.0: {} + /siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + dev: true - signal-exit@3.0.7: {} + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - signal-exit@4.1.0: {} + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: true - sirv@2.0.4: + /sirv@2.0.4: + resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} + engines: {node: '>= 10'} dependencies: '@polka/url': 1.0.0-next.28 mrmime: 2.0.0 totalist: 3.0.1 + dev: true - sisteransi@1.0.5: {} + /sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - slash@3.0.0: {} + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} - slash@5.1.0: {} + /slash@5.1.0: + resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} + engines: {node: '>=14.16'} + dev: true - slice-ansi@2.1.0: + /slice-ansi@2.1.0: + resolution: {integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==} + engines: {node: '>=6'} dependencies: ansi-styles: 3.2.1 astral-regex: 1.0.0 is-fullwidth-code-point: 2.0.0 - slice-ansi@5.0.0: + /slice-ansi@5.0.0: + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} + engines: {node: '>=12'} dependencies: ansi-styles: 6.2.1 is-fullwidth-code-point: 4.0.0 + dev: true - snake-case@3.0.4: + /snake-case@3.0.4: + resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} dependencies: dot-case: 3.0.4 - tslib: 2.7.0 + tslib: 2.8.1 + dev: true - snapdragon-node@2.1.1: + /snapdragon-node@2.1.1: + resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} + engines: {node: '>=0.10.0'} dependencies: define-property: 1.0.0 isobject: 3.0.1 snapdragon-util: 3.0.1 + dev: true - snapdragon-util@3.0.1: + /snapdragon-util@3.0.1: + resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==} + engines: {node: '>=0.10.0'} dependencies: kind-of: 3.2.2 + dev: true - snapdragon@0.8.2: + /snapdragon@0.8.2: + resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} + engines: {node: '>=0.10.0'} dependencies: base: 0.11.2 debug: 2.6.9 @@ -23913,66 +20215,120 @@ snapshots: use: 3.1.1 transitivePeerDependencies: - supports-color + dev: true - sonic-boom@2.8.0: + /sonic-boom@2.8.0: + resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==} dependencies: atomic-sleep: 1.0.0 + dev: true - sonic-boom@3.8.0: + /sonic-boom@3.8.0: + resolution: {integrity: sha512-ybz6OYOUjoQQCQ/i4LU8kaToD8ACtYP+Cj5qd2AO36bwbdewxWJ3ArmJ2cr6AvxlL2o0PqnCcPGUgkILbfkaCA==} dependencies: atomic-sleep: 1.0.0 + dev: true - sonic-boom@3.8.1: + /sonic-boom@3.8.1: + resolution: {integrity: sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg==} dependencies: atomic-sleep: 1.0.0 + dev: true - sorted-array-functions@1.3.0: {} + /sort-keys-length@1.0.1: + resolution: {integrity: sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==} + engines: {node: '>=0.10.0'} + dependencies: + sort-keys: 1.1.2 + dev: true + + /sort-keys@1.1.2: + resolution: {integrity: sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==} + engines: {node: '>=0.10.0'} + dependencies: + is-plain-obj: 1.1.0 + dev: true + + /sorted-array-functions@1.3.0: + resolution: {integrity: sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA==} + dev: true - source-map-js@1.2.1: {} + /source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + dev: true - source-map-resolve@0.5.3: + /source-map-resolve@0.5.3: + resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} + deprecated: See https://github.com/lydell/source-map-resolve#deprecated dependencies: atob: 2.1.2 decode-uri-component: 0.2.2 resolve-url: 0.2.1 source-map-url: 0.4.1 urix: 0.1.0 + dev: true - source-map-resolve@0.6.0: + /source-map-resolve@0.6.0: + resolution: {integrity: sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==} + deprecated: See https://github.com/lydell/source-map-resolve#deprecated dependencies: atob: 2.1.2 decode-uri-component: 0.2.2 + dev: true - source-map-support@0.5.13: + /source-map-support@0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 + dev: true - source-map-support@0.5.19: + /source-map-support@0.5.19: + resolution: {integrity: sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 + dev: true - source-map-support@0.5.21: + /source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 - source-map-url@0.4.1: {} + /source-map-url@0.4.1: + resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} + deprecated: See https://github.com/lydell/source-map-url#deprecated + dev: true - source-map@0.5.7: {} + /source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} - source-map@0.6.1: {} + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} - source-map@0.7.4: {} + /source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} - source-map@0.8.0-beta.0: + /source-map@0.8.0-beta.0: + resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} + engines: {node: '>= 8'} dependencies: whatwg-url: 7.1.0 + dev: true - sourcemap-codec@1.4.8: {} + /sourcemap-codec@1.4.8: + resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} + deprecated: Please use @jridgewell/sourcemap-codec instead + dev: true - spawn-wrap@2.0.0: + /spawn-wrap@2.0.0: + resolution: {integrity: sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==} + engines: {node: '>=8'} dependencies: foreground-child: 2.0.0 is-windows: 1.0.2 @@ -23980,8 +20336,10 @@ snapshots: rimraf: 3.0.2 signal-exit: 3.0.7 which: 2.0.2 + dev: true - spawnd@5.0.0: + /spawnd@5.0.0: + resolution: {integrity: sha512-28+AJr82moMVWolQvlAIv3JcYDkjkFTEmfDc503wxrF5l2rQ3dFz6DpbXp3kD4zmgGGldfM4xM4v1sFj/ZaIOA==} dependencies: exit: 0.1.2 signal-exit: 3.0.7 @@ -23989,35 +20347,56 @@ snapshots: wait-port: 0.2.14 transitivePeerDependencies: - supports-color + dev: true - spawndamnit@2.0.0: + /spawndamnit@3.0.1: + resolution: {integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==} dependencies: - cross-spawn: 5.1.0 - signal-exit: 3.0.7 + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + dev: true - spdx-correct@3.2.0: + /spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} dependencies: spdx-expression-parse: 3.0.1 spdx-license-ids: 3.0.20 + dev: true - spdx-exceptions@2.5.0: {} + /spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + dev: true - spdx-expression-parse@3.0.1: + /spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: spdx-exceptions: 2.5.0 spdx-license-ids: 3.0.20 + dev: true - spdx-license-ids@3.0.20: {} + /spdx-license-ids@3.0.20: + resolution: {integrity: sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==} + dev: true - split-string@3.1.0: + /split-string@3.1.0: + resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} + engines: {node: '>=0.10.0'} dependencies: extend-shallow: 3.0.2 + dev: true - split2@4.2.0: {} + /split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + dev: true - sprintf-js@1.0.3: {} + /sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - sshpk@1.18.0: + /sshpk@1.18.0: + resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==} + engines: {node: '>=0.10.0'} + hasBin: true dependencies: asn1: 0.2.6 assert-plus: 1.0.0 @@ -24028,270 +20407,448 @@ snapshots: jsbn: 0.1.1 safer-buffer: 2.1.2 tweetnacl: 0.14.5 + dev: true - stable@0.1.8: {} + /stable@0.1.8: + resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} + deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' + dev: true - stack-utils@1.0.5: + /stack-utils@1.0.5: + resolution: {integrity: sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ==} + engines: {node: '>=8'} dependencies: escape-string-regexp: 2.0.0 + dev: true - stack-utils@2.0.6: + /stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} dependencies: escape-string-regexp: 2.0.0 - stackback@0.0.2: {} + /stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + dev: true - stackframe@1.3.4: {} + /stackframe@1.3.4: + resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} - stacktrace-parser@0.1.10: + /stacktrace-parser@0.1.10: + resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} + engines: {node: '>=6'} dependencies: type-fest: 0.7.1 - static-extend@0.1.2: + /static-extend@0.1.2: + resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} + engines: {node: '>=0.10.0'} dependencies: define-property: 0.2.5 object-copy: 0.1.0 + dev: true - statuses@1.5.0: {} + /statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} - statuses@2.0.1: {} + /statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} - std-env@3.7.0: {} + /std-env@3.8.0: + resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} + dev: true - stealthy-require@1.1.1: {} + /stealthy-require@1.1.1: + resolution: {integrity: sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==} + engines: {node: '>=0.10.0'} + dev: true - steno@0.4.4: + /steno@0.4.4: + resolution: {integrity: sha512-EEHMVYHNXFHfGtgjNITnka0aHhiAlo93F7z2/Pwd+g0teG9CnM3JIINM7hVVB5/rhw9voufD7Wukwgtw2uqh6w==} dependencies: graceful-fs: 4.2.11 + dev: true - stop-iteration-iterator@1.0.0: + /stop-iteration-iterator@1.1.0: + resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} + engines: {node: '>= 0.4'} dependencies: - internal-slot: 1.0.7 + es-errors: 1.3.0 + internal-slot: 1.1.0 + dev: true - storybook@8.3.3: + /storybook@8.4.7(prettier@2.8.8): + resolution: {integrity: sha512-RP/nMJxiWyFc8EVMH5gp20ID032Wvk+Yr3lmKidoegto5Iy+2dVQnUoElZb2zpbVXNHWakGuAkfI0dY1Hfp/vw==} + hasBin: true + peerDependencies: + prettier: ^2 || ^3 + peerDependenciesMeta: + prettier: + optional: true dependencies: - '@storybook/core': 8.3.3 + '@storybook/core': 8.4.7(prettier@2.8.8) + prettier: 2.8.8 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - stream-shift@1.0.3: {} + /stream-shift@1.0.3: + resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} + dev: true - streamroller@3.1.5: + /streamroller@3.1.5: + resolution: {integrity: sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==} + engines: {node: '>=8.0'} dependencies: date-format: 4.0.14 - debug: 4.3.7 + debug: 4.4.0 fs-extra: 8.1.0 transitivePeerDependencies: - supports-color + dev: true - streamx@2.20.1: + /streamx@2.21.1: + resolution: {integrity: sha512-PhP9wUnFLa+91CPy3N6tiQsK+gnYyUNuk15S3YG/zjYE7RuPeCjJngqnzpC31ow0lzBHQ+QGO4cNJnd0djYUsw==} dependencies: fast-fifo: 1.3.2 queue-tick: 1.0.1 - text-decoder: 1.2.0 + text-decoder: 1.2.3 optionalDependencies: bare-events: 2.5.0 + dev: true - string-argv@0.3.2: {} + /string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + dev: true - string-hash@1.1.3: {} + /string-hash@1.1.3: + resolution: {integrity: sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==} + dev: true - string-length@3.1.0: + /string-length@3.1.0: + resolution: {integrity: sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA==} + engines: {node: '>=8'} dependencies: astral-regex: 1.0.0 strip-ansi: 5.2.0 + dev: true - string-length@4.0.2: + /string-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} dependencies: char-regex: 1.0.2 strip-ansi: 6.0.1 + dev: true - string-length@5.0.1: + /string-length@5.0.1: + resolution: {integrity: sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==} + engines: {node: '>=12.20'} dependencies: - char-regex: 2.0.1 + char-regex: 2.0.2 strip-ansi: 7.1.0 + dev: true - string-width@2.1.1: + /string-width@2.1.1: + resolution: {integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==} + engines: {node: '>=4'} dependencies: is-fullwidth-code-point: 2.0.0 strip-ansi: 4.0.0 + dev: true - string-width@3.1.0: + /string-width@3.1.0: + resolution: {integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==} + engines: {node: '>=6'} dependencies: emoji-regex: 7.0.3 is-fullwidth-code-point: 2.0.0 strip-ansi: 5.2.0 + dev: true - string-width@4.2.3: + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} dependencies: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - string-width@5.1.2: + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} dependencies: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 strip-ansi: 7.1.0 + dev: true - string.prototype.includes@2.0.0: - dependencies: - define-properties: 1.2.1 - es-abstract: 1.23.3 - - string.prototype.matchall@4.0.11: + /string.prototype.matchall@4.0.12: + resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.3 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.7 es-errors: 1.3.0 es-object-atoms: 1.0.0 - get-intrinsic: 1.2.4 - gopd: 1.0.1 - has-symbols: 1.0.3 - internal-slot: 1.0.7 - regexp.prototype.flags: 1.5.2 + get-intrinsic: 1.2.6 + gopd: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + regexp.prototype.flags: 1.5.3 set-function-name: 2.0.2 - side-channel: 1.0.6 + side-channel: 1.1.0 + dev: true - string.prototype.repeat@1.0.0: + /string.prototype.repeat@1.0.0: + resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} dependencies: define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.7 + dev: true - string.prototype.trim@1.2.9: + /string.prototype.trim@1.2.10: + resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.3 + define-data-property: 1.1.4 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.7 es-object-atoms: 1.0.0 + has-property-descriptors: 1.0.2 + dev: true - string.prototype.trimend@1.0.8: + /string.prototype.trimend@1.0.9: + resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.3 define-properties: 1.2.1 es-object-atoms: 1.0.0 + dev: true - string.prototype.trimstart@1.0.8: + /string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 es-object-atoms: 1.0.0 + dev: true - string_decoder@1.1.1: + /string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} dependencies: safe-buffer: 5.1.2 - string_decoder@1.3.0: + /string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: safe-buffer: 5.2.1 - strip-ansi@4.0.0: + /strip-ansi@4.0.0: + resolution: {integrity: sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==} + engines: {node: '>=4'} dependencies: ansi-regex: 3.0.1 + dev: true - strip-ansi@5.2.0: + /strip-ansi@5.2.0: + resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} + engines: {node: '>=6'} dependencies: ansi-regex: 4.1.1 - strip-ansi@6.0.1: + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 - strip-ansi@7.1.0: + /strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} dependencies: ansi-regex: 6.1.0 + dev: true - strip-bom@3.0.0: {} + /strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + dev: true - strip-bom@4.0.0: {} + /strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + dev: true - strip-eof@1.0.0: {} + /strip-eof@1.0.0: + resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} + engines: {node: '>=0.10.0'} + dev: true - strip-final-newline@2.0.0: {} + /strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} - strip-final-newline@3.0.0: {} + /strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + dev: true - strip-indent@3.0.0: + /strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} dependencies: min-indent: 1.0.1 + dev: true - strip-indent@4.0.0: + /strip-indent@4.0.0: + resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==} + engines: {node: '>=12'} dependencies: min-indent: 1.0.1 + dev: true - strip-json-comments@3.1.1: {} + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true - strip-literal@2.1.0: + /strip-literal@2.1.1: + resolution: {integrity: sha512-631UJ6O00eNGfMiWG78ck80dfBab8X6IVFB51jZK5Icd7XAs60Z5y7QdSd/wGIklnWvRbUNloVzhOKKmutxQ6Q==} dependencies: - js-tokens: 9.0.0 + js-tokens: 9.0.1 + dev: true + + /strip-outer@2.0.0: + resolution: {integrity: sha512-A21Xsm1XzUkK0qK1ZrytDUvqsQWict2Cykhvi0fBQntGG5JSprESasEyV1EZ/4CiR5WB5KjzLTrP/bO37B0wPg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true - strnum@1.0.5: {} + /strnum@1.0.5: + resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} - strong-log-transformer@2.1.0: + /strong-log-transformer@2.1.0: + resolution: {integrity: sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==} + engines: {node: '>=4'} + hasBin: true dependencies: duplexer: 0.1.2 minimist: 1.2.8 through: 2.3.8 + dev: true + + /strtok3@7.1.1: + resolution: {integrity: sha512-mKX8HA/cdBqMKUr0MMZAFssCkIGoZeSCMXgnt79yKxNFguMLVFgRe6wB+fsL0NmoHDbeyZXczy7vEPSoo3rkzg==} + engines: {node: '>=16'} + dependencies: + '@tokenizer/token': 0.3.0 + peek-readable: 5.3.1 + dev: true - style-inject@0.3.0: {} + /style-inject@0.3.0: + resolution: {integrity: sha512-IezA2qp+vcdlhJaVm5SOdPPTUu0FCEqfNSli2vRuSIBbu5Nq5UvygTk/VzeCqfLz2Atj3dVII5QBKGZRZ0edzw==} + dev: true - stylehacks@5.1.1(postcss@8.4.47): + /stylehacks@5.1.1(postcss@8.4.49): + resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 dependencies: - browserslist: 4.24.0 - postcss: 8.4.47 + browserslist: 4.24.3 + postcss: 8.4.49 postcss-selector-parser: 6.1.2 + dev: true - sucrase@3.35.0: + /sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true dependencies: - '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/gen-mapping': 0.3.8 commander: 4.1.1 glob: 10.4.5 lines-and-columns: 1.2.4 mz: 2.7.0 pirates: 4.0.6 ts-interface-checker: 0.1.13 + dev: true - sudo-prompt@9.2.1: {} + /sudo-prompt@9.2.1: + resolution: {integrity: sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - supports-color@5.5.0: + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} dependencies: has-flag: 3.0.0 + dev: true - supports-color@6.1.0: + /supports-color@6.1.0: + resolution: {integrity: sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==} + engines: {node: '>=6'} dependencies: has-flag: 3.0.0 + dev: true - supports-color@7.2.0: + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} dependencies: has-flag: 4.0.0 - supports-color@8.1.1: + /supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} dependencies: has-flag: 4.0.0 - supports-hyperlinks@2.3.0: + /supports-hyperlinks@2.3.0: + resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} + engines: {node: '>=8'} dependencies: has-flag: 4.0.0 supports-color: 7.2.0 + dev: true - supports-preserve-symlinks-flag@1.0.0: {} + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} - svg-parser@2.0.4: {} + /svg-parser@2.0.4: + resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==} + dev: true - svgo@2.8.0: + /svgo@2.8.0: + resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} + engines: {node: '>=10.13.0'} + hasBin: true dependencies: '@trysound/sax': 0.2.0 commander: 7.2.0 css-select: 4.3.0 css-tree: 1.1.3 csso: 4.2.0 - picocolors: 1.1.0 + picocolors: 1.1.1 stable: 0.1.8 + dev: true - svgo@3.3.2: + /svgo@3.3.2: + resolution: {integrity: sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==} + engines: {node: '>=14.0.0'} + hasBin: true dependencies: '@trysound/sax': 0.2.0 commander: 7.2.0 @@ -24299,217 +20856,407 @@ snapshots: css-tree: 2.3.1 css-what: 6.1.0 csso: 5.0.5 - picocolors: 1.1.0 + picocolors: 1.1.1 + dev: true - symbol-tree@3.2.4: {} + /swc-loader@0.1.15(@swc/core@1.5.29)(webpack@5.97.1): + resolution: {integrity: sha512-cn1WPIeQJvXM4bbo3OwdEIapsQ4uUGOfyFj0h2+2+brT0k76DCGnZXDE2KmcqTd2JSQ+b61z2NPMib7eEwMYYw==} + peerDependencies: + '@swc/core': ^1.2.52 + webpack: '>=2' + dependencies: + '@swc/core': 1.5.29(@swc/helpers@0.5.15) + loader-utils: 2.0.4 + webpack: 5.97.1(@swc/core@1.5.29)(esbuild@0.17.19) + dev: true + + /symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + dev: true - synchronous-promise@2.0.17: {} + /synchronous-promise@2.0.17: + resolution: {integrity: sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g==} + dev: true - table@5.4.6: + /table@5.4.6: + resolution: {integrity: sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==} + engines: {node: '>=6.0.0'} dependencies: ajv: 6.12.6 lodash: 4.17.21 slice-ansi: 2.1.0 string-width: 3.1.0 + dev: true - tapable@2.2.1: {} + /tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + dev: true - tar-stream@2.2.0: + /tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} dependencies: bl: 4.1.0 end-of-stream: 1.4.4 fs-constants: 1.0.0 inherits: 2.0.4 readable-stream: 3.6.2 + dev: true - tar-stream@3.1.7: + /tar-stream@3.1.7: + resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} dependencies: b4a: 1.6.7 fast-fifo: 1.3.2 - streamx: 2.20.1 + streamx: 2.21.1 + dev: true - telejson@7.2.0: + /telejson@7.2.0: + resolution: {integrity: sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==} dependencies: memoizerific: 1.11.3 + dev: true - temp-dir@2.0.0: {} + /temp-dir@2.0.0: + resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} + engines: {node: '>=8'} - temp@0.8.4: + /temp@0.8.4: + resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} + engines: {node: '>=6.0.0'} dependencies: rimraf: 2.6.3 - tempy@1.0.1: + /tempy@1.0.1: + resolution: {integrity: sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==} + engines: {node: '>=10'} dependencies: del: 6.1.1 is-stream: 2.0.1 temp-dir: 2.0.0 type-fest: 0.16.0 unique-string: 2.0.0 + dev: true - term-size@2.2.1: {} + /term-size@2.2.1: + resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} + engines: {node: '>=8'} + dev: true - terminal-link@2.1.1: + /terminal-link@2.1.1: + resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} + engines: {node: '>=8'} dependencies: ansi-escapes: 4.3.2 supports-hyperlinks: 2.3.0 + dev: true - terser-webpack-plugin@5.3.10(@swc/core@1.5.29(@swc/helpers@0.5.13))(esbuild@0.17.19)(webpack@5.95.0(@swc/core@1.5.29(@swc/helpers@0.5.13))(esbuild@0.17.19)): + /terser-webpack-plugin@5.3.11(@swc/core@1.5.29)(esbuild@0.17.19)(webpack@5.97.1): + resolution: {integrity: sha512-RVCsMfuD0+cTt3EwX8hSl2Ks56EbFHWmhluwcqoPKtBnfjiT6olaq7PRIRfhyU8nnC2MrnDrBLfrD/RGE+cVXQ==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true dependencies: '@jridgewell/trace-mapping': 0.3.25 + '@swc/core': 1.5.29(@swc/helpers@0.5.15) + esbuild: 0.17.19 jest-worker: 27.5.1 - schema-utils: 3.3.0 + schema-utils: 4.3.0 serialize-javascript: 6.0.2 - terser: 5.33.0 - webpack: 5.95.0(@swc/core@1.5.29(@swc/helpers@0.5.13))(esbuild@0.17.19) - optionalDependencies: - '@swc/core': 1.5.29(@swc/helpers@0.5.13) - esbuild: 0.17.19 + terser: 5.37.0 + webpack: 5.97.1(@swc/core@1.5.29)(esbuild@0.17.19) + dev: true - terser@4.8.1: + /terser@4.8.1: + resolution: {integrity: sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==} + engines: {node: '>=6.0.0'} + hasBin: true dependencies: - acorn: 8.12.1 + acorn: 8.14.0 commander: 2.20.3 source-map: 0.6.1 source-map-support: 0.5.21 + dev: true - terser@5.33.0: + /terser@5.37.0: + resolution: {integrity: sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==} + engines: {node: '>=10'} + hasBin: true dependencies: '@jridgewell/source-map': 0.3.6 - acorn: 8.12.1 + acorn: 8.14.0 commander: 2.20.3 source-map-support: 0.5.21 - test-exclude@6.0.0: + /test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} dependencies: '@istanbuljs/schema': 0.1.3 glob: 7.2.3 minimatch: 3.1.2 + dev: true - text-decoder@1.2.0: + /text-decoder@1.2.3: + resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==} dependencies: b4a: 1.6.7 + dev: true - text-table@0.2.0: {} + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: true - thenify-all@1.6.0: + /thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} dependencies: thenify: 3.3.1 + dev: true - thenify@3.3.1: + /thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} dependencies: any-promise: 1.3.0 + dev: true - thread-stream@0.15.2: + /thread-stream@0.15.2: + resolution: {integrity: sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==} dependencies: real-require: 0.1.0 + dev: true - thread-stream@2.7.0: + /thread-stream@2.7.0: + resolution: {integrity: sha512-qQiRWsU/wvNolI6tbbCKd9iKaTnCXsTwVxhhKM6nctPdujTyztjlbUkUTUymidWcMnZ5pWR0ej4a0tjsW021vw==} dependencies: real-require: 0.2.0 + dev: true - throat@5.0.0: {} + /throat@5.0.0: + resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} - through2@2.0.5: + /through2@2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} dependencies: readable-stream: 2.3.8 xtend: 4.0.2 - through@2.3.8: {} + /through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + dev: true - tiny-glob@0.2.9: + /tiny-glob@0.2.9: + resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} dependencies: globalyzer: 0.1.0 globrex: 0.1.2 + dev: true + + /tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} - tiny-invariant@1.3.3: {} + /tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + dev: true + + /tinypool@0.8.4: + resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} + engines: {node: '>=14.0.0'} + dev: true - tinybench@2.9.0: {} + /tinyrainbow@1.2.0: + resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} + engines: {node: '>=14.0.0'} + dev: true - tinypool@0.8.4: {} + /tinyspy@2.2.1: + resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} + engines: {node: '>=14.0.0'} + dev: true - tinyrainbow@1.2.0: {} + /tinyspy@3.0.2: + resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} + engines: {node: '>=14.0.0'} + dev: true - tinyspy@2.2.1: {} + /tldts-core@6.1.69: + resolution: {integrity: sha512-nygxy9n2PBUFQUtAXAc122gGo+04/j5qr5TGQFZTHafTKYvmARVXt2cA5rgero2/dnXUfkdPtiJoKmrd3T+wdA==} + dev: true - tinyspy@3.0.2: {} + /tldts@6.1.69: + resolution: {integrity: sha512-Oh/CqRQ1NXNY7cy9NkTPUauOWiTro0jEYZTioGbOmcQh6EC45oribyIMJp0OJO3677r13tO6SKdWoGZUx2BDFw==} + hasBin: true + dependencies: + tldts-core: 6.1.69 + dev: true - tmp@0.0.33: + /tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} dependencies: os-tmpdir: 1.0.2 + dev: true - tmp@0.2.3: {} - - tmpl@1.0.5: {} + /tmp@0.2.3: + resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} + engines: {node: '>=14.14'} + dev: true - to-fast-properties@2.0.0: {} + /tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - to-object-path@0.3.0: + /to-object-path@0.3.0: + resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==} + engines: {node: '>=0.10.0'} dependencies: kind-of: 3.2.2 + dev: true - to-regex-range@2.1.1: + /to-regex-range@2.1.1: + resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==} + engines: {node: '>=0.10.0'} dependencies: is-number: 3.0.0 repeat-string: 1.6.1 + dev: true - to-regex-range@5.0.1: + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 - to-regex@3.0.2: + /to-regex@3.0.2: + resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} + engines: {node: '>=0.10.0'} dependencies: define-property: 2.0.2 extend-shallow: 3.0.2 regex-not: 1.0.2 safe-regex: 1.1.0 + dev: true + + /toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} - toidentifier@1.0.1: {} + /token-types@5.0.1: + resolution: {integrity: sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==} + engines: {node: '>=14.16'} + dependencies: + '@tokenizer/token': 0.3.0 + ieee754: 1.2.1 + dev: true - totalist@3.0.1: {} + /totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + dev: true - tough-cookie@2.5.0: + /tough-cookie@2.5.0: + resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} + engines: {node: '>=0.8'} dependencies: - psl: 1.9.0 + psl: 1.15.0 punycode: 2.3.1 + dev: true - tough-cookie@3.0.1: + /tough-cookie@3.0.1: + resolution: {integrity: sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==} + engines: {node: '>=6'} dependencies: ip-regex: 2.1.0 - psl: 1.9.0 + psl: 1.15.0 punycode: 2.3.1 + dev: true - tough-cookie@4.1.4: + /tough-cookie@4.1.4: + resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} + engines: {node: '>=6'} dependencies: - psl: 1.9.0 + psl: 1.15.0 punycode: 2.3.1 universalify: 0.2.0 url-parse: 1.5.10 + dev: true - tr46@0.0.3: {} + /tough-cookie@5.0.0: + resolution: {integrity: sha512-FRKsF7cz96xIIeMZ82ehjC3xW2E+O2+v11udrDYewUbszngYhsGa8z6YUMMzO9QJZzzyd0nGGXnML/TReX6W8Q==} + engines: {node: '>=16'} + dependencies: + tldts: 6.1.69 + dev: true + + /tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - tr46@1.0.1: + /tr46@1.0.1: + resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} dependencies: punycode: 2.3.1 + dev: true - tr46@3.0.0: + /tr46@3.0.0: + resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} + engines: {node: '>=12'} dependencies: punycode: 2.3.1 + dev: true - tr46@4.1.1: + /tr46@4.1.1: + resolution: {integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==} + engines: {node: '>=14'} dependencies: punycode: 2.3.1 + dev: true + + /tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + dev: true - tree-kill@1.2.2: {} + /trim-repeated@2.0.0: + resolution: {integrity: sha512-QUHBFTJGdOwmp0tbOG505xAgOp/YliZP/6UgafFXYZ26WT1bvQmSMJUvkeVSASuJJHbqsFbynTvkd5W8RBTipg==} + engines: {node: '>=12'} + dependencies: + escape-string-regexp: 5.0.0 + dev: true - ts-api-utils@1.3.0(typescript@5.5.4): + /ts-api-utils@1.4.3(typescript@5.5.4): + resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' dependencies: typescript: 5.5.4 + dev: true - ts-dedent@2.2.0: {} + /ts-dedent@2.2.0: + resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} + engines: {node: '>=6.10'} - ts-interface-checker@0.1.13: {} + /ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + dev: true - ts-jest@25.5.1(jest@25.5.4)(typescript@3.9.10): + /ts-jest@25.5.1(jest@25.5.4)(typescript@3.9.10): + resolution: {integrity: sha512-kHEUlZMK8fn8vkxDjwbHlxXRB9dHYpyzqKIGDNxbzs+Rz+ssNDSDNusEK8Fk/sDd4xE6iKoQLfFkFVaskmTJyw==} + engines: {node: '>= 8'} + hasBin: true + peerDependencies: + jest: '>=25 <26' + typescript: '>=3.4 <4.0' dependencies: bs-logger: 0.2.6 buffer-from: 1.1.2 @@ -24523,13 +21270,39 @@ snapshots: semver: 6.3.1 typescript: 3.9.10 yargs-parser: 18.1.3 + dev: true - ts-jest@29.2.5(@babel/core@7.25.2)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.2))(esbuild@0.17.19)(jest@29.7.0(@types/node@18.16.9)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4)))(typescript@5.5.4): + /ts-jest@29.2.5(@babel/core@7.26.0)(babel-jest@29.7.0)(esbuild@0.17.19)(jest@29.7.0)(typescript@5.5.4): + resolution: {integrity: sha512-KD8zB2aAZrcKIdGk4OwpJggeLcH1FgrICqDSROWqlnJXGCXK4Mn6FcdK2B6670Xr73lHMG1kHw8R87A0ecZ+vA==} + engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@babel/core': '>=7.0.0-beta.0 <8' + '@jest/transform': ^29.0.0 + '@jest/types': ^29.0.0 + babel-jest: ^29.0.0 + esbuild: '*' + jest: ^29.0.0 + typescript: '>=4.3 <6' + peerDependenciesMeta: + '@babel/core': + optional: true + '@jest/transform': + optional: true + '@jest/types': + optional: true + babel-jest: + optional: true + esbuild: + optional: true dependencies: + '@babel/core': 7.26.0 + babel-jest: 29.7.0(@babel/core@7.26.0) bs-logger: 0.2.6 ejs: 3.1.10 + esbuild: 0.17.19 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@18.16.9)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4)) + jest: 29.7.0(@types/node@18.16.9)(ts-node@10.9.1) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -24537,22 +21310,30 @@ snapshots: semver: 7.6.3 typescript: 5.5.4 yargs-parser: 21.1.1 - optionalDependencies: - '@babel/core': 7.25.2 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.25.2) - esbuild: 0.17.19 + dev: true - ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.4.5): + /ts-node@10.9.1(@swc/core@1.5.29)(@types/node@18.16.9)(typescript@5.4.5): + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true dependencies: '@cspotcode/source-map-support': 0.8.1 + '@swc/core': 1.5.29(@swc/helpers@0.5.15) '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 '@types/node': 18.16.9 - acorn: 8.12.1 + acorn: 8.14.0 acorn-walk: 8.3.4 arg: 4.1.3 create-require: 1.1.1 @@ -24561,18 +21342,30 @@ snapshots: typescript: 5.4.5 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - optionalDependencies: - '@swc/core': 1.5.29(@swc/helpers@0.5.13) + dev: true - ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4): + /ts-node@10.9.1(@swc/core@1.5.29)(@types/node@18.16.9)(typescript@5.5.4): + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true dependencies: '@cspotcode/source-map-support': 0.8.1 + '@swc/core': 1.5.29(@swc/helpers@0.5.15) '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 '@types/node': 18.16.9 - acorn: 8.12.1 + acorn: 8.14.0 acorn-walk: 8.3.4 arg: 4.1.3 create-require: 1.1.1 @@ -24581,61 +21374,77 @@ snapshots: typescript: 5.5.4 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - optionalDependencies: - '@swc/core': 1.5.29(@swc/helpers@0.5.13) + dev: true - tsconfck@2.1.2(typescript@5.5.4): - optionalDependencies: + /tsconfck@2.1.2(typescript@5.5.4): + resolution: {integrity: sha512-ghqN1b0puy3MhhviwO2kGF8SeMDNhEbnKxjK7h6+fvY9JAxqvXi8y5NAHSQv687OVboS2uZIByzGd45/YxrRHg==} + engines: {node: ^14.13.1 || ^16 || >=18} + hasBin: true + peerDependencies: + typescript: ^4.3.5 || ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + dependencies: typescript: 5.5.4 + dev: true - tsconfig-paths@3.15.0: + /tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} dependencies: '@types/json5': 0.0.29 json5: 1.0.2 minimist: 1.2.8 strip-bom: 3.0.0 + dev: true - tsconfig-paths@4.2.0: + /tsconfig-paths@4.2.0: + resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} + engines: {node: '>=6'} dependencies: json5: 2.2.3 minimist: 1.2.8 strip-bom: 3.0.0 + dev: true - tsdx@0.14.1(@types/babel__core@7.20.5)(@types/node@22.7.3): + /tsdx@0.14.1(@types/node@18.16.9): + resolution: {integrity: sha512-keHmFdCL2kx5nYFlBdbE3639HQ2v9iGedAFAajobrUTH2wfX0nLPdDhbHv+GHLQZqf0c5ur1XteE8ek/+Eyj5w==} + engines: {node: '>=10'} + hasBin: true dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-imports': 7.24.7 - '@babel/parser': 7.25.6 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.25.2) - '@babel/preset-env': 7.25.8(@babel/core@7.25.2) - '@babel/traverse': 7.25.6 - '@rollup/plugin-babel': 5.3.1(@babel/core@7.25.2)(@types/babel__core@7.20.5)(rollup@1.32.1) + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@babel/parser': 7.26.3 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.26.0) + '@babel/preset-env': 7.26.0(@babel/core@7.26.0) + '@babel/traverse': 7.26.4 + '@rollup/plugin-babel': 5.3.1(@babel/core@7.26.0)(rollup@1.32.1) '@rollup/plugin-commonjs': 11.1.0(rollup@1.32.1) '@rollup/plugin-json': 4.1.0(rollup@1.32.1) '@rollup/plugin-node-resolve': 9.0.0(rollup@1.32.1) '@rollup/plugin-replace': 2.4.2(rollup@1.32.1) '@types/jest': 25.2.3 - '@typescript-eslint/eslint-plugin': 2.34.0(@typescript-eslint/parser@2.34.0(eslint@6.8.0)(typescript@3.9.10))(eslint@6.8.0)(typescript@3.9.10) + '@typescript-eslint/eslint-plugin': 2.34.0(@typescript-eslint/parser@2.34.0)(eslint@6.8.0)(typescript@3.9.10) '@typescript-eslint/parser': 2.34.0(eslint@6.8.0)(typescript@3.9.10) ansi-escapes: 4.3.2 asyncro: 3.0.0 babel-eslint: 10.1.0(eslint@6.8.0) - babel-plugin-annotate-pure-calls: 0.4.0(@babel/core@7.25.2) - babel-plugin-dev-expression: 0.2.3(@babel/core@7.25.2) + babel-plugin-annotate-pure-calls: 0.4.0(@babel/core@7.26.0) + babel-plugin-dev-expression: 0.2.3(@babel/core@7.26.0) babel-plugin-macros: 2.8.0 - babel-plugin-polyfill-regenerator: 0.0.4(@babel/core@7.25.2) + babel-plugin-polyfill-regenerator: 0.0.4(@babel/core@7.26.0) babel-plugin-transform-rename-import: 2.3.0 camelcase: 6.3.0 chalk: 4.1.2 enquirer: 2.4.1 eslint: 6.8.0 eslint-config-prettier: 6.15.0(eslint@6.8.0) - eslint-config-react-app: 5.2.1(@typescript-eslint/eslint-plugin@2.34.0(@typescript-eslint/parser@2.34.0(eslint@6.8.0)(typescript@3.9.10))(eslint@6.8.0)(typescript@3.9.10))(@typescript-eslint/parser@2.34.0(eslint@6.8.0)(typescript@3.9.10))(babel-eslint@10.1.0(eslint@6.8.0))(eslint-plugin-flowtype@3.13.0(eslint@6.8.0))(eslint-plugin-import@2.30.0(@typescript-eslint/parser@2.34.0(eslint@6.8.0)(typescript@3.9.10))(eslint@6.8.0))(eslint-plugin-jsx-a11y@6.10.0(eslint@6.8.0))(eslint-plugin-react-hooks@2.5.1(eslint@6.8.0))(eslint-plugin-react@7.36.1(eslint@6.8.0))(eslint@6.8.0)(typescript@3.9.10) + eslint-config-react-app: 5.2.1(@typescript-eslint/eslint-plugin@2.34.0)(@typescript-eslint/parser@2.34.0)(babel-eslint@10.1.0)(eslint-plugin-flowtype@3.13.0)(eslint-plugin-import@2.30.0)(eslint-plugin-jsx-a11y@6.7.1)(eslint-plugin-react-hooks@2.5.1)(eslint-plugin-react@7.35.0)(eslint@6.8.0)(typescript@3.9.10) eslint-plugin-flowtype: 3.13.0(eslint@6.8.0) - eslint-plugin-import: 2.30.0(@typescript-eslint/parser@2.34.0(eslint@6.8.0)(typescript@3.9.10))(eslint@6.8.0) - eslint-plugin-jsx-a11y: 6.10.0(eslint@6.8.0) - eslint-plugin-prettier: 3.4.1(eslint-config-prettier@6.15.0(eslint@6.8.0))(eslint@6.8.0)(prettier@1.19.1) - eslint-plugin-react: 7.36.1(eslint@6.8.0) + eslint-plugin-import: 2.30.0(@typescript-eslint/parser@2.34.0)(eslint@6.8.0) + eslint-plugin-jsx-a11y: 6.7.1(eslint@6.8.0) + eslint-plugin-prettier: 3.4.1(eslint-config-prettier@6.15.0)(eslint@6.8.0)(prettier@1.19.1) + eslint-plugin-react: 7.35.0(eslint@6.8.0) eslint-plugin-react-hooks: 2.5.1(eslint@6.8.0) execa: 4.1.0 fs-extra: 9.1.0 @@ -24649,7 +21458,7 @@ snapshots: progress-estimator: 0.2.2 regenerator-runtime: 0.13.11 rollup: 1.32.1 - rollup-plugin-sourcemaps: 0.6.3(@types/node@22.7.3)(rollup@1.32.1) + rollup-plugin-sourcemaps: 0.6.3(@types/node@18.16.9)(rollup@1.32.1) rollup-plugin-terser: 5.3.1(rollup@1.32.1) rollup-plugin-typescript2: 0.27.3(rollup@1.32.1)(typescript@3.9.10) sade: 1.8.1 @@ -24668,269 +21477,467 @@ snapshots: - eslint-import-resolver-webpack - supports-color - utf-8-validate + dev: true - tslib@1.14.1: {} + /tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + dev: true - tslib@2.0.1: {} + /tslib@2.0.1: + resolution: {integrity: sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==} + dev: true - tslib@2.7.0: {} + /tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - tsscmp@1.0.6: {} + /tsscmp@1.0.6: + resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} + engines: {node: '>=0.6.x'} + dev: true - tsup@6.7.0(@swc/core@1.5.29(@swc/helpers@0.5.13))(postcss@8.4.47)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4): + /tsup@6.7.0(@swc/core@1.5.29)(postcss@8.4.49)(ts-node@10.9.1)(typescript@5.5.4): + resolution: {integrity: sha512-L3o8hGkaHnu5TdJns+mCqFsDBo83bJ44rlK7e6VdanIvpea4ArPcU3swWGsLVbXak1PqQx/V+SSmFPujBK+zEQ==} + engines: {node: '>=14.18'} + hasBin: true + peerDependencies: + '@swc/core': ^1 + postcss: ^8.4.12 + typescript: '>=4.1.0' + peerDependenciesMeta: + '@swc/core': + optional: true + postcss: + optional: true + typescript: + optional: true dependencies: + '@swc/core': 1.5.29(@swc/helpers@0.5.15) bundle-require: 4.2.1(esbuild@0.17.19) cac: 6.7.14 chokidar: 3.6.0 - debug: 4.3.7 + debug: 4.4.0 esbuild: 0.17.19 execa: 5.1.1 globby: 11.1.0 joycon: 3.1.1 - postcss-load-config: 3.1.4(postcss@8.4.47)(ts-node@10.9.1(@swc/core@1.5.29(@swc/helpers@0.5.13))(@types/node@18.16.9)(typescript@5.5.4)) + postcss: 8.4.49 + postcss-load-config: 3.1.4(postcss@8.4.49)(ts-node@10.9.1) resolve-from: 5.0.0 rollup: 3.29.5 source-map: 0.8.0-beta.0 sucrase: 3.35.0 tree-kill: 1.2.2 - optionalDependencies: - '@swc/core': 1.5.29(@swc/helpers@0.5.13) - postcss: 8.4.47 typescript: 5.5.4 transitivePeerDependencies: - supports-color - ts-node + dev: true - tsutils@3.21.0(typescript@3.9.10): + /tsutils@3.21.0(typescript@3.9.10): + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 typescript: 3.9.10 + dev: true - tunnel-agent@0.6.0: + /tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} dependencies: safe-buffer: 5.2.1 + dev: true - tweetnacl@0.14.5: {} + /tweetnacl@0.14.5: + resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} + dev: true - typanion@3.14.0: {} + /typanion@3.14.0: + resolution: {integrity: sha512-ZW/lVMRabETuYCd9O9ZvMhAh8GslSqaUjxmK/JLPCh6l73CvLBiuXswj/+7LdnWOgYsQ130FqLzFz5aGT4I3Ug==} + dev: true - type-check@0.3.2: + /type-check@0.3.2: + resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} + engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.1.2 + dev: true - type-check@0.4.0: + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 + dev: true - type-detect@4.0.8: {} + /type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} - type-detect@4.1.0: {} + /type-detect@4.1.0: + resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} + engines: {node: '>=4'} + dev: true - type-fest@0.16.0: {} + /type-fest@0.16.0: + resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==} + engines: {node: '>=10'} + dev: true - type-fest@0.21.3: {} + /type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + dev: true - type-fest@0.6.0: {} + /type-fest@0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + dev: true - type-fest@0.7.1: {} + /type-fest@0.7.1: + resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} + engines: {node: '>=8'} - type-fest@0.8.1: {} + /type-fest@0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + dev: true - type-fest@1.4.0: {} + /type-fest@1.4.0: + resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} + engines: {node: '>=10'} + dev: true - type-fest@2.19.0: {} + /type-fest@2.19.0: + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} + engines: {node: '>=12.20'} - type-is@1.6.18: + /type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} dependencies: media-typer: 0.3.0 mime-types: 2.1.35 + dev: true - typed-array-buffer@1.0.2: + /typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bound: 1.0.3 es-errors: 1.3.0 - is-typed-array: 1.1.13 + is-typed-array: 1.1.15 + dev: true - typed-array-byte-length@1.0.1: + /typed-array-byte-length@1.0.3: + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + dev: true - typed-array-byte-offset@1.0.2: + /typed-array-byte-offset@1.0.4: + resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} + engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.7 - call-bind: 1.0.7 + call-bind: 1.0.8 for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - - typed-array-length@1.0.6: + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + reflect.getprototypeof: 1.0.9 + dev: true + + /typed-array-length@1.0.7: + resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 + gopd: 1.2.0 + is-typed-array: 1.1.15 possible-typed-array-names: 1.0.0 + reflect.getprototypeof: 1.0.9 + dev: true - typedarray-to-buffer@3.1.5: + /typedarray-to-buffer@3.1.5: + resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} dependencies: is-typedarray: 1.0.0 + dev: true - typescript-eslint@8.7.0(eslint@9.11.1)(typescript@5.5.4): + /typescript-eslint@8.18.1(eslint@9.17.0)(typescript@5.5.4): + resolution: {integrity: sha512-Mlaw6yxuaDEPQvb/2Qwu3/TfgeBHy9iTJ3mTwe7OvpPmF6KPQjVOfGyEJpPv6Ez2C34OODChhXrzYw/9phI0MQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' dependencies: - '@typescript-eslint/eslint-plugin': 8.7.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1)(typescript@5.5.4))(eslint@9.11.1)(typescript@5.5.4) - '@typescript-eslint/parser': 8.7.0(eslint@9.11.1)(typescript@5.5.4) - '@typescript-eslint/utils': 8.7.0(eslint@9.11.1)(typescript@5.5.4) - optionalDependencies: + '@typescript-eslint/eslint-plugin': 8.18.1(@typescript-eslint/parser@8.18.1)(eslint@9.17.0)(typescript@5.5.4) + '@typescript-eslint/parser': 8.18.1(eslint@9.17.0)(typescript@5.5.4) + '@typescript-eslint/utils': 8.18.1(eslint@9.17.0)(typescript@5.5.4) + eslint: 9.17.0 typescript: 5.5.4 transitivePeerDependencies: - - eslint - supports-color + dev: true - typescript@3.9.10: {} + /typescript@3.9.10: + resolution: {integrity: sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==} + engines: {node: '>=4.2.0'} + hasBin: true + dev: true - typescript@5.4.2: {} + /typescript@5.4.2: + resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} + engines: {node: '>=14.17'} + hasBin: true + dev: true - typescript@5.4.5: {} + /typescript@5.4.5: + resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} + engines: {node: '>=14.17'} + hasBin: true + dev: true - typescript@5.5.4: {} + /typescript@5.5.4: + resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} + engines: {node: '>=14.17'} + hasBin: true + dev: true - ufo@1.5.4: {} + /ufo@1.5.4: + resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} + dev: true - uglify-js@3.19.3: + /uglify-js@3.19.3: + resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} + engines: {node: '>=0.8.0'} + hasBin: true + requiresBuild: true + dev: true optional: true - unbox-primitive@1.0.2: + /unbox-primitive@1.1.0: + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.7 - has-bigints: 1.0.2 - has-symbols: 1.0.3 - which-boxed-primitive: 1.0.2 + call-bound: 1.0.3 + has-bigints: 1.1.0 + has-symbols: 1.1.0 + which-boxed-primitive: 1.1.1 + dev: true - undici-types@6.19.8: {} - - unicode-canonical-property-names-ecmascript@2.0.1: {} + /unicode-canonical-property-names-ecmascript@2.0.1: + resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} + engines: {node: '>=4'} - unicode-match-property-ecmascript@2.0.0: + /unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} dependencies: unicode-canonical-property-names-ecmascript: 2.0.1 unicode-property-aliases-ecmascript: 2.1.0 - unicode-match-property-value-ecmascript@2.2.0: {} + /unicode-match-property-value-ecmascript@2.2.0: + resolution: {integrity: sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==} + engines: {node: '>=4'} - unicode-property-aliases-ecmascript@2.1.0: {} + /unicode-property-aliases-ecmascript@2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} - union-value@1.0.1: + /union-value@1.0.1: + resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} + engines: {node: '>=0.10.0'} dependencies: arr-union: 3.1.0 get-value: 2.0.6 is-extendable: 0.1.1 set-value: 2.0.1 + dev: true - union@0.5.0: + /union@0.5.0: + resolution: {integrity: sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==} + engines: {node: '>= 0.8.0'} dependencies: - qs: 6.13.0 + qs: 6.13.1 + dev: true - unique-string@2.0.0: + /unique-string@2.0.0: + resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} + engines: {node: '>=8'} dependencies: crypto-random-string: 2.0.0 + dev: true - universalify@0.1.2: {} + /universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} - universalify@0.2.0: {} + /universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + dev: true - universalify@2.0.1: {} + /universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + dev: true - unix-crypt-td-js@1.1.4: {} + /unix-crypt-td-js@1.1.4: + resolution: {integrity: sha512-8rMeVYWSIyccIJscb9NdCfZKSRBKYTeVnwmiRYT2ulE3qd1RaDQ0xQDP+rI3ccIWbhu/zuo5cgN8z73belNZgw==} + dev: true - unpipe@1.0.0: {} + /unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} - unplugin@1.14.1(webpack-sources@3.2.3): + /unplugin@1.16.0: + resolution: {integrity: sha512-5liCNPuJW8dqh3+DM6uNM2EI3MLLpCKp/KY+9pB5M2S2SR2qvvDHhKgBOaTWEbZTAws3CXfB0rKTIolWKL05VQ==} + engines: {node: '>=14.0.0'} dependencies: - acorn: 8.12.1 + acorn: 8.14.0 webpack-virtual-modules: 0.6.2 - optionalDependencies: - webpack-sources: 3.2.3 - unset-value@1.0.0: + /unset-value@1.0.0: + resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} + engines: {node: '>=0.10.0'} dependencies: has-value: 0.3.1 isobject: 3.0.1 + dev: true - upath@2.0.1: {} + /upath@2.0.1: + resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==} + engines: {node: '>=4'} + dev: true - update-browserslist-db@1.1.0(browserslist@4.24.0): + /update-browserslist-db@1.1.1(browserslist@4.24.3): + resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' dependencies: - browserslist: 4.24.0 + browserslist: 4.24.3 escalade: 3.2.0 - picocolors: 1.1.0 + picocolors: 1.1.1 - uri-js@4.4.1: + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.3.1 + dev: true - urix@0.1.0: {} + /urix@0.1.0: + resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} + deprecated: Please see https://github.com/lydell/urix#deprecated + dev: true - url-join@4.0.1: {} + /url-join@4.0.1: + resolution: {integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==} + dev: true - url-parse@1.5.10: + /url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} dependencies: querystringify: 2.2.0 requires-port: 1.0.0 + dev: true - use@3.1.1: {} + /use@3.1.1: + resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} + engines: {node: '>=0.10.0'} + dev: true - util-deprecate@1.0.2: {} + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - util@0.12.5: + /util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} dependencies: inherits: 2.0.4 - is-arguments: 1.1.1 + is-arguments: 1.2.0 is-generator-function: 1.0.10 - is-typed-array: 1.1.13 - which-typed-array: 1.1.15 + is-typed-array: 1.1.15 + which-typed-array: 1.1.18 - utils-merge@1.0.1: {} + /utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} - uuid@3.4.0: {} + /uuid@3.4.0: + resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} + deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. + hasBin: true + dev: true - uuid@8.3.2: {} + /uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + dev: true - uuid@9.0.1: {} + /uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + dev: false - v8-compile-cache-lib@3.0.1: {} + /v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + dev: true - v8-compile-cache@2.4.0: {} + /v8-compile-cache@2.4.0: + resolution: {integrity: sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==} + dev: true - v8-to-istanbul@4.1.4: + /v8-to-istanbul@4.1.4: + resolution: {integrity: sha512-Rw6vJHj1mbdK8edjR7+zuJrpDtKIgNdAvTSAcpYfgMIw+u2dPDntD3dgN4XQFLU2/fvFQdzj+EeSGfd/jnY5fQ==} + engines: {node: 8.x.x || >=10.10.0} dependencies: '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 1.9.0 source-map: 0.7.4 + dev: true - v8-to-istanbul@9.3.0: + /v8-to-istanbul@9.3.0: + resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} + engines: {node: '>=10.12.0'} dependencies: '@jridgewell/trace-mapping': 0.3.25 '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 2.0.0 + dev: true - validate-npm-package-license@3.0.4: + /validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} dependencies: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 + dev: true - validate-npm-package-name@5.0.1: {} + /validate-npm-package-name@5.0.1: + resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true - validator@13.12.0: {} + /validator@13.12.0: + resolution: {integrity: sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==} + engines: {node: '>= 0.10'} + dev: true - vary@1.1.2: {} + /vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} - verdaccio-audit@13.0.0-next-8.1: + /verdaccio-audit@13.0.0-next-8.1: + resolution: {integrity: sha512-EEfUeC1kHuErtwF9FC670W+EXHhcl+iuigONkcprwRfkPxmdBs+Hx36745hgAMZ9SCqedNECaycnGF3tZ3VYfw==} + engines: {node: '>=12'} dependencies: '@verdaccio/config': 8.0.0-next-8.1 '@verdaccio/core': 8.0.0-next-8.1 @@ -24940,8 +21947,11 @@ snapshots: transitivePeerDependencies: - encoding - supports-color + dev: true - verdaccio-htpasswd@13.0.0-next-8.1: + /verdaccio-htpasswd@13.0.0-next-8.1: + resolution: {integrity: sha512-BfvmO+ZdbwfttOwrdTPD6Bccr1ZfZ9Tk/9wpXamxdWB/XPWlk3FtyGsvqCmxsInRLPhQ/FSk9c3zRCGvICTFYg==} + engines: {node: '>=12'} dependencies: '@verdaccio/core': 8.0.0-next-8.1 '@verdaccio/file-locking': 13.0.0-next-8.0 @@ -24953,10 +21963,14 @@ snapshots: unix-crypt-td-js: 1.1.4 transitivePeerDependencies: - supports-color + dev: true - verdaccio@5.32.2(typanion@3.14.0): + /verdaccio@5.33.0(typanion@3.14.0): + resolution: {integrity: sha512-mZWTt/k3KyprhS9IriUEHfKSV4lqB9P1aTVhw5GcNgu4533GSsJRwlBwrFijnoBbWDVarjZoIf+t8wq0iv+5jg==} + engines: {node: '>=14'} + hasBin: true dependencies: - '@cypress/request': 3.0.1 + '@cypress/request': 3.0.6 '@verdaccio/auth': 8.0.0-next-8.1 '@verdaccio/config': 8.0.0-next-8.1 '@verdaccio/core': 8.0.0-next-8.1 @@ -24971,13 +21985,13 @@ snapshots: '@verdaccio/url': 13.0.0-next-8.1 '@verdaccio/utils': 7.0.1-next-8.1 JSONStream: 1.3.5 - async: 3.2.5 - clipanion: 4.0.0-rc.3(typanion@3.14.0) - compression: 1.7.4 + async: 3.2.6 + clipanion: 4.0.0-rc.4(typanion@3.14.0) + compression: 1.7.5 cors: 2.8.5 - debug: 4.3.7 - envinfo: 7.13.0 - express: 4.21.0 + debug: 4.4.0 + envinfo: 7.14.0 + express: 4.21.1 express-rate-limit: 5.5.1 fast-safe-stringify: 2.1.1 handlebars: 4.7.8 @@ -24998,20 +22012,27 @@ snapshots: - encoding - supports-color - typanion + dev: true - verror@1.10.0: + /verror@1.10.0: + resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} + engines: {'0': node >=0.6.0} dependencies: assert-plus: 1.0.0 core-util-is: 1.0.2 extsprintf: 1.3.0 + dev: true - vite-node@1.6.0(@types/node@18.16.9)(terser@5.33.0): + /vite-node@1.6.0(@types/node@18.16.9): + resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true dependencies: cac: 6.7.14 - debug: 4.3.7 + debug: 4.4.0 pathe: 1.1.2 - picocolors: 1.1.0 - vite: 5.4.8(@types/node@18.16.9)(terser@5.33.0) + picocolors: 1.1.1 + vite: 5.4.11(@types/node@18.16.9) transitivePeerDependencies: - '@types/node' - less @@ -25022,69 +22043,131 @@ snapshots: - sugarss - supports-color - terser + dev: true - vite-plugin-dts@3.8.3(@types/node@18.16.9)(rollup@4.22.4)(typescript@5.5.4)(vite@5.4.8(@types/node@18.16.9)(terser@5.33.0)): + /vite-plugin-dts@3.8.3(@types/node@18.16.9)(rollup@4.29.1)(typescript@5.5.4)(vite@5.4.11): + resolution: {integrity: sha512-yRHiRosQw7MXdOhmcrVI+kRiB8YEShbSxnADNteK4eZGdEoyOkMHihvO5XOAVlOq8ng9sIqu8vVefDK1zcj3qw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + typescript: '*' + vite: '*' + peerDependenciesMeta: + vite: + optional: true dependencies: '@microsoft/api-extractor': 7.43.0(@types/node@18.16.9) - '@rollup/pluginutils': 5.1.2(rollup@4.22.4) + '@rollup/pluginutils': 5.1.4(rollup@4.29.1) '@vue/language-core': 1.8.27(typescript@5.5.4) - debug: 4.3.7 + debug: 4.4.0 kolorist: 1.8.0 - magic-string: 0.30.11 + magic-string: 0.30.17 typescript: 5.5.4 + vite: 5.4.11(@types/node@18.16.9) vue-tsc: 1.8.27(typescript@5.5.4) - optionalDependencies: - vite: 5.4.8(@types/node@18.16.9)(terser@5.33.0) transitivePeerDependencies: - '@types/node' - rollup - supports-color + dev: true - vite-tsconfig-paths@4.0.5(typescript@5.5.4): + /vite-tsconfig-paths@4.0.5(typescript@5.5.4): + resolution: {integrity: sha512-/L/eHwySFYjwxoYt1WRJniuK/jPv+WGwgRGBYx3leciR5wBeqntQpUE6Js6+TJemChc+ter7fDBKieyEWDx4yQ==} dependencies: - debug: 4.3.7 + debug: 4.4.0 globrex: 0.1.2 tsconfck: 2.1.2(typescript@5.5.4) transitivePeerDependencies: - supports-color - typescript + dev: true - vite@5.4.8(@types/node@18.16.9)(terser@5.33.0): + /vite@5.4.11(@types/node@18.16.9): + resolution: {integrity: sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true dependencies: + '@types/node': 18.16.9 esbuild: 0.21.5 - postcss: 8.4.47 - rollup: 4.22.4 + postcss: 8.4.49 + rollup: 4.29.1 optionalDependencies: - '@types/node': 18.16.9 fsevents: 2.3.3 - terser: 5.33.0 + dev: true - vitest@1.6.0(@types/node@18.16.9)(@vitest/ui@1.6.0)(jsdom@22.1.0)(terser@5.33.0): + /vitest@1.6.0(@types/node@18.16.9)(@vitest/ui@1.6.0)(jsdom@22.1.0): + resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': 1.6.0 + '@vitest/ui': 1.6.0 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true dependencies: + '@types/node': 18.16.9 '@vitest/expect': 1.6.0 '@vitest/runner': 1.6.0 '@vitest/snapshot': 1.6.0 '@vitest/spy': 1.6.0 + '@vitest/ui': 1.6.0(vitest@1.6.0) '@vitest/utils': 1.6.0 acorn-walk: 8.3.4 chai: 4.5.0 - debug: 4.3.7 + debug: 4.4.0 execa: 8.0.1 - local-pkg: 0.5.0 - magic-string: 0.30.11 + jsdom: 22.1.0 + local-pkg: 0.5.1 + magic-string: 0.30.17 pathe: 1.1.2 - picocolors: 1.1.0 - std-env: 3.7.0 - strip-literal: 2.1.0 + picocolors: 1.1.1 + std-env: 3.8.0 + strip-literal: 2.1.1 tinybench: 2.9.0 tinypool: 0.8.4 - vite: 5.4.8(@types/node@18.16.9)(terser@5.33.0) - vite-node: 1.6.0(@types/node@18.16.9)(terser@5.33.0) + vite: 5.4.11(@types/node@18.16.9) + vite-node: 1.6.0(@types/node@18.16.9) why-is-node-running: 2.3.0 - optionalDependencies: - '@types/node': 18.16.9 - '@vitest/ui': 1.6.0(vitest@1.6.0) - jsdom: 22.1.0 transitivePeerDependencies: - less - lightningcss @@ -25094,36 +22177,56 @@ snapshots: - sugarss - supports-color - terser + dev: true - vlq@1.0.1: {} + /vlq@1.0.1: + resolution: {integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==} - vue-template-compiler@2.7.16: + /vue-template-compiler@2.7.16: + resolution: {integrity: sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==} dependencies: de-indent: 1.0.2 he: 1.2.0 + dev: true - vue-tsc@1.8.27(typescript@5.5.4): + /vue-tsc@1.8.27(typescript@5.5.4): + resolution: {integrity: sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==} + hasBin: true + peerDependencies: + typescript: '*' dependencies: '@volar/typescript': 1.11.1 '@vue/language-core': 1.8.27(typescript@5.5.4) semver: 7.6.3 typescript: 5.5.4 + dev: true - w3c-hr-time@1.0.2: + /w3c-hr-time@1.0.2: + resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} + deprecated: Use your platform's native performance.now() and performance.timeOrigin. dependencies: browser-process-hrtime: 1.0.0 + dev: true - w3c-xmlserializer@1.1.2: + /w3c-xmlserializer@1.1.2: + resolution: {integrity: sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==} dependencies: domexception: 1.0.1 webidl-conversions: 4.0.2 xml-name-validator: 3.0.0 + dev: true - w3c-xmlserializer@4.0.0: + /w3c-xmlserializer@4.0.0: + resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} + engines: {node: '>=14'} dependencies: xml-name-validator: 4.0.0 + dev: true - wait-on@5.3.0: + /wait-on@5.3.0: + resolution: {integrity: sha512-DwrHrnTK+/0QFaB9a8Ol5Lna3k7WvUR4jzSKmz0YaPBpuN2sACyiPVKVfj6ejnjcajAcvn3wlbTyMIn9AZouOg==} + engines: {node: '>=8.9.0'} + hasBin: true dependencies: axios: 0.21.4 joi: 17.13.3 @@ -25132,49 +22235,77 @@ snapshots: rxjs: 6.6.7 transitivePeerDependencies: - debug + dev: true - wait-port@0.2.14: + /wait-port@0.2.14: + resolution: {integrity: sha512-kIzjWcr6ykl7WFbZd0TMae8xovwqcqbx6FM9l+7agOgUByhzdjfzZBPK2CPufldTOMxbUivss//Sh9MFawmPRQ==} + engines: {node: '>=8'} + hasBin: true dependencies: chalk: 2.4.2 commander: 3.0.2 - debug: 4.3.7 + debug: 4.4.0 transitivePeerDependencies: - supports-color + dev: true - walker@1.0.8: + /walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} dependencies: makeerror: 1.0.12 - watchpack@2.4.2: + /watchpack@2.4.2: + resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==} + engines: {node: '>=10.13.0'} dependencies: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 + dev: true - wcwidth@1.0.1: + /wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} dependencies: defaults: 1.0.4 - webidl-conversions@3.0.1: {} + /webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - webidl-conversions@4.0.2: {} + /webidl-conversions@4.0.2: + resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} + dev: true - webidl-conversions@7.0.0: {} + /webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + dev: true - webpack-sources@3.2.3: {} + /webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + dev: true - webpack-virtual-modules@0.6.2: {} + /webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - webpack@5.95.0(@swc/core@1.5.29(@swc/helpers@0.5.13))(esbuild@0.17.19): + /webpack@5.97.1(@swc/core@1.5.29)(esbuild@0.17.19): + resolution: {integrity: sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true dependencies: + '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.6 - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/wasm-edit': 1.12.1 - '@webassemblyjs/wasm-parser': 1.12.1 - acorn: 8.12.1 - acorn-import-attributes: 1.9.5(acorn@8.12.1) - browserslist: 4.24.0 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/wasm-edit': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + acorn: 8.14.0 + browserslist: 4.24.3 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.17.1 + enhanced-resolve: 5.18.0 es-module-lexer: 1.5.4 eslint-scope: 5.1.1 events: 3.3.0 @@ -25186,195 +22317,328 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.5.29(@swc/helpers@0.5.13))(esbuild@0.17.19)(webpack@5.95.0(@swc/core@1.5.29(@swc/helpers@0.5.13))(esbuild@0.17.19)) + terser-webpack-plugin: 5.3.11(@swc/core@1.5.29)(esbuild@0.17.19)(webpack@5.97.1) watchpack: 2.4.2 webpack-sources: 3.2.3 transitivePeerDependencies: - '@swc/core' - esbuild - uglify-js + dev: true - whatwg-encoding@1.0.5: + /whatwg-encoding@1.0.5: + resolution: {integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==} dependencies: iconv-lite: 0.4.24 + dev: true - whatwg-encoding@2.0.0: + /whatwg-encoding@2.0.0: + resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} + engines: {node: '>=12'} dependencies: iconv-lite: 0.6.3 + dev: true - whatwg-fetch@3.6.20: {} + /whatwg-fetch@3.6.20: + resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} - whatwg-mimetype@2.3.0: {} + /whatwg-mimetype@2.3.0: + resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==} + dev: true - whatwg-mimetype@3.0.0: {} + /whatwg-mimetype@3.0.0: + resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} + engines: {node: '>=12'} + dev: true - whatwg-url@11.0.0: + /whatwg-url@11.0.0: + resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} + engines: {node: '>=12'} dependencies: tr46: 3.0.0 webidl-conversions: 7.0.0 + dev: true - whatwg-url@12.0.1: + /whatwg-url@12.0.1: + resolution: {integrity: sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==} + engines: {node: '>=14'} dependencies: tr46: 4.1.1 webidl-conversions: 7.0.0 + dev: true - whatwg-url@5.0.0: + /whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 - whatwg-url@7.1.0: + /whatwg-url@7.1.0: + resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} dependencies: lodash.sortby: 4.7.0 tr46: 1.0.1 webidl-conversions: 4.0.2 + dev: true - which-boxed-primitive@1.0.2: + /which-boxed-primitive@1.1.1: + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} + engines: {node: '>= 0.4'} dependencies: - is-bigint: 1.0.4 - is-boolean-object: 1.1.2 - is-number-object: 1.0.7 - is-string: 1.0.7 - is-symbol: 1.0.4 + is-bigint: 1.1.0 + is-boolean-object: 1.2.1 + is-number-object: 1.1.1 + is-string: 1.1.1 + is-symbol: 1.1.1 + dev: true - which-builtin-type@1.1.4: + /which-builtin-type@1.2.1: + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} + engines: {node: '>= 0.4'} dependencies: - function.prototype.name: 1.1.6 + call-bound: 1.0.3 + function.prototype.name: 1.1.8 has-tostringtag: 1.0.2 is-async-function: 2.0.0 - is-date-object: 1.0.5 - is-finalizationregistry: 1.0.2 + is-date-object: 1.1.0 + is-finalizationregistry: 1.1.1 is-generator-function: 1.0.10 - is-regex: 1.1.4 - is-weakref: 1.0.2 + is-regex: 1.2.1 + is-weakref: 1.1.0 isarray: 2.0.5 - which-boxed-primitive: 1.0.2 + which-boxed-primitive: 1.1.1 which-collection: 1.0.2 - which-typed-array: 1.1.15 + which-typed-array: 1.1.18 + dev: true - which-collection@1.0.2: + /which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} dependencies: is-map: 2.0.3 is-set: 2.0.3 is-weakmap: 2.0.2 - is-weakset: 2.0.3 + is-weakset: 2.0.4 + dev: true - which-module@2.0.1: {} + /which-module@2.0.1: + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} - which-typed-array@1.1.15: + /which-typed-array@1.1.18: + resolution: {integrity: sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==} + engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.7 - call-bind: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.3 for-each: 0.3.3 - gopd: 1.0.1 + gopd: 1.2.0 has-tostringtag: 1.0.2 - which@1.3.1: + /which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true dependencies: isexe: 2.0.0 + dev: true - which@2.0.2: + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true dependencies: isexe: 2.0.0 - why-is-node-running@2.3.0: + /why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true dependencies: siginfo: 2.0.0 stackback: 0.0.2 + dev: true - word-wrap@1.2.5: {} + /word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + dev: true - wordwrap@1.0.0: {} + /wordwrap@1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + dev: true - wrap-ansi@3.0.1: + /wrap-ansi@3.0.1: + resolution: {integrity: sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ==} + engines: {node: '>=4'} dependencies: string-width: 2.1.1 strip-ansi: 4.0.0 + dev: true - wrap-ansi@6.2.0: + /wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - wrap-ansi@7.0.0: + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - wrap-ansi@8.1.0: + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} dependencies: ansi-styles: 6.2.1 string-width: 5.1.2 strip-ansi: 7.1.0 + dev: true - wrappy@1.0.2: {} + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - write-file-atomic@2.4.3: + /write-file-atomic@2.4.3: + resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} dependencies: graceful-fs: 4.2.11 imurmurhash: 0.1.4 signal-exit: 3.0.7 - write-file-atomic@3.0.3: + /write-file-atomic@3.0.3: + resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} dependencies: imurmurhash: 0.1.4 is-typedarray: 1.0.0 signal-exit: 3.0.7 typedarray-to-buffer: 3.1.5 + dev: true - write-file-atomic@4.0.2: + /write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: imurmurhash: 0.1.4 signal-exit: 3.0.7 + dev: true - write@1.0.3: + /write@1.0.3: + resolution: {integrity: sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==} + engines: {node: '>=4'} dependencies: mkdirp: 0.5.6 + dev: true - ws@6.2.3: + /ws@6.2.3: + resolution: {integrity: sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true dependencies: async-limiter: 1.0.1 - ws@7.5.10: {} + /ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true - ws@8.17.1: {} + /ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true - xml-name-validator@3.0.0: {} + /xml-name-validator@3.0.0: + resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==} + dev: true - xml-name-validator@4.0.0: {} + /xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + dev: true - xml@1.0.1: {} + /xml@1.0.1: + resolution: {integrity: sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==} + dev: true - xmlchars@2.2.0: {} + /xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + dev: true - xtend@4.0.2: {} + /xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} - y18n@4.0.3: {} + /y18n@4.0.3: + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - y18n@5.0.8: {} + /y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} - yallist@2.1.2: {} + /yallist@2.1.2: + resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} + dev: true - yallist@3.1.1: {} + /yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yallist@4.0.0: {} + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: true - yaml@1.10.2: {} + /yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + dev: true - yaml@2.3.1: {} + /yaml@2.3.1: + resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} + engines: {node: '>= 14'} + dev: true - yaml@2.5.1: {} + /yaml@2.6.1: + resolution: {integrity: sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==} + engines: {node: '>= 14'} + hasBin: true - yargs-parser@18.1.3: + /yargs-parser@18.1.3: + resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} + engines: {node: '>=6'} dependencies: camelcase: 5.3.1 decamelize: 1.2.0 - yargs-parser@21.1.1: {} + /yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} - yargs@15.4.1: + /yargs@15.4.1: + resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} + engines: {node: '>=8'} dependencies: cliui: 6.0.0 decamelize: 1.2.0 @@ -25388,7 +22652,9 @@ snapshots: y18n: 4.0.3 yargs-parser: 18.1.3 - yargs@17.7.2: + /yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} dependencies: cliui: 8.0.1 escalade: 3.2.0 @@ -25398,18 +22664,33 @@ snapshots: y18n: 5.0.8 yargs-parser: 21.1.1 - ylru@1.4.0: {} + /ylru@1.4.0: + resolution: {integrity: sha512-2OQsPNEmBCvXuFlIni/a+Rn+R2pHW9INm0BxXJ4hVDA8TirqMj+J/Rp9ItLatT/5pZqWwefVrTQcHpixsxnVlA==} + engines: {node: '>= 4.0.0'} + dev: true - yn@3.1.1: {} + /yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + dev: true - yocto-queue@0.1.0: {} + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} - yocto-queue@1.1.1: {} + /yocto-queue@1.1.1: + resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} + engines: {node: '>=12.20'} + dev: true - z-schema@5.0.5: + /z-schema@5.0.5: + resolution: {integrity: sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==} + engines: {node: '>=8.0.0'} + hasBin: true dependencies: lodash.get: 4.4.2 lodash.isequal: 4.5.0 validator: 13.12.0 optionalDependencies: commander: 9.5.0 + dev: true diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 585a8f0e..46940683 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,3 +1,6 @@ packages: - packages/** - - ui/** \ No newline at end of file + - ui/** + - core/** + - model/** + - playground/** \ No newline at end of file diff --git a/tsconfig.base.json b/tsconfig.base.json new file mode 100644 index 00000000..0139bc2b --- /dev/null +++ b/tsconfig.base.json @@ -0,0 +1,47 @@ +{ + "compileOnSave": false, + "compilerOptions": { + "rootDir": "./", + "moduleResolution": "node", + "target": "ES2015", + "module": "commonjs", + "baseUrl": "./", + "paths": { + "@infinite-list/react": ["packages/react/src/index.ts"], + + "@infinite-list/base-dimensions": ["core/base-dimensions/src/index.ts"], + "@infinite-list/container": ["core/container/src/index.ts"], + "@infinite-list/dimension": ["model/dimension/src/index.ts"], + "@infinite-list/dimensions-model": ["core/dimensions-model/src/index.ts"], + // "@infinite-list/group": ["ui/group/src/index.ts"], + "@infinite-list/group/react": ["ui/group/src/react/index.ts"], + "@infinite-list/group-dimensions": [ + "model/group-dimensions/src/index.ts" + ], + "@infinite-list/item-meta": ["core/item-meta/src/index.ts"], + "@infinite-list/items-dimensions": [ + "model/items-dimensions/src/index.ts" + ], + "@infinite-list/list/react": ["ui/list/src/react/index.ts"], + "@infinite-list/list/react-native": ["ui/list/src/react-native/index.ts"], + "@infinite-list/list-dimensions": ["model/list-dimensions/src/index.ts"], + + "@infinite-list/masonry/react": ["ui/masonry/src/react/index.ts"], + "@infinite-list/masonry/react-native": ["ui/masonry/src/react-native/index.ts"], + "@infinite-list/masonry-dimensions": [ + "model/masonry-dimensions/src/index.ts" + ], + "@infinite-list/pseudo-list-dimensions": [ + "model/pseudo-list-dimensions/src/index.ts" + ], + "@infinite-list/scroller/react-native": ["ui/scroller/src/react-native"], + "@infinite-list/scroller/web": ["ui/scroller/src/web/index.ts"], + "@infinite-list/state": ["core/state/src/index.ts"], + "@infinite-list/strategies": ["core/strategies/src/index.ts"], + "@infinite-list/types": ["core/types/src/index.ts"], + "@infinite-list/utils": ["core/utils/src/index.ts"], + "@infinite-list/viewable": ["core/viewable/src/index.ts"] + }, + "skipLibCheck": true + } +} diff --git a/tsconfig.json b/tsconfig.json index baba2592..01728dd8 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,10 +1,11 @@ { "compilerOptions": { - "baseUrl": "./", "allowSyntheticDefaultImports": true, "types": ["node"], "typeRoots": ["./node_modules/@types"], - "removeComments": true, + // ---- bullshit why remove comments on default----- + // "removeComments": true, + "removeComments": false, "allowUnreachableCode": false, "allowUnusedLabels": false, "esModuleInterop": true, @@ -15,18 +16,12 @@ "noImplicitUseStrict": false, "noStrictGenericChecks": false, "resolveJsonModule": true, - "allowJs": true, - "paths": { - "@infinite-list/group": ["ui/group/src/index.ts"], - "@infinite-list/list": ["ui/list/src/index.ts"], - "@infinite-list/masonry": ["ui/masonry/src/index.ts"], - "@infinite-list/scroller/react-native": ["ui/scroller/src/react-native"], - "@infinite-list/scroller/web": ["ui/scroller/src/web"] - } + "allowJs": true }, "ts-node": { "compilerOptions": { "module": "commonjs" } - } + }, + "extends": "./tsconfig.base.json" } diff --git a/ui/group/package.json b/ui/group/package.json index 7fa251bf..4253f786 100644 --- a/ui/group/package.json +++ b/ui/group/package.json @@ -16,7 +16,6 @@ } }, "dependencies": { - "@infinite-list/data-model": "workspace:*", "@infinite-list/scroller": "workspace:*", "@x-oasis/noop": "^0.1.14", "@x-oasis/shallow-equal": "^0.1.14" diff --git a/ui/group/src/common/GroupDimensionItem.tsx b/ui/group/src/common/GroupDimensionItem.tsx new file mode 100644 index 00000000..ef57785b --- /dev/null +++ b/ui/group/src/common/GroupDimensionItem.tsx @@ -0,0 +1,42 @@ +import { useContext, useRef, memo } from 'react'; +import { GenericItemT } from '@infinite-list/types'; +import context from './context'; +import useMountItem from './hooks/useMountDimensionItem'; +import { GroupDimensionItemProps } from '../types'; + +const GroupDimensionItem = ( + props: GroupDimensionItemProps +) => { + useMountItem(props); + return null; +}; + +const MemoedGroupDimensionItem = memo( + GroupDimensionItem +) as typeof GroupDimensionItem; + +const GroupDimensionItemWrapper = ( + props: GroupDimensionItemProps +) => { + const contextValues = useContext(context); + const contextValuesRef = useRef(contextValues); + + // let changed = false; + + // console.log('heart beating ', contextValuesRef.current.inspectingTimes !== contextValues.inspectingTimes, props.itemKey) + + if ( + contextValuesRef.current.inspectingTimes !== contextValues.inspectingTimes + ) { + contextValuesRef.current.heartBeat({ + inspectingTime: contextValues.inspectingTime, + listKey: props.itemKey, + }); + contextValuesRef.current = contextValues; + // changed = true; + } + + return ; +}; + +export default GroupDimensionItemWrapper; diff --git a/ui/group/src/react-native/GroupList.tsx b/ui/group/src/common/GroupList.tsx similarity index 58% rename from ui/group/src/react-native/GroupList.tsx rename to ui/group/src/common/GroupList.tsx index fc0dcd0a..a831bc72 100644 --- a/ui/group/src/react-native/GroupList.tsx +++ b/ui/group/src/common/GroupList.tsx @@ -1,6 +1,7 @@ -import React, { PropsWithChildren, useContext, useRef, FC } from 'react'; +import { memo, PropsWithChildren, useContext, useRef } from 'react'; -import { DefaultItemT, GroupListProps } from '../types'; +import { DefaultItemT } from '../types'; +import { GroupListProps } from '../types'; import context from './context'; import useMountList from './hooks/useMountList'; @@ -11,24 +12,7 @@ const GroupList = ( return null; }; -const MemoedGroupList = React.memo>>( - GroupList, - (prev, cur) => { - // @ts-ignore - if (cur.changed) return true; - - const keys = Object.keys(prev); - - for (let index = 0; index < keys.length; index++) { - const key = keys[index]; - // @ts-ignore - if (prev[key] !== cur[key]) { - return false; - } - } - return true; - } -); +const MemoedGroupList = memo(GroupList) as typeof GroupList; const GroupListWrapper = ( props: PropsWithChildren> @@ -41,7 +25,6 @@ const GroupListWrapper = ( ) { contextValuesRef.current.heartBeat({ inspectingTime: contextValues.inspectingTime, - // @ts-ignore listKey: props.id, }); contextValuesRef.current = contextValues; diff --git a/ui/group/src/react/GroupListItemImpl.tsx b/ui/group/src/common/GroupListItemImpl.tsx similarity index 57% rename from ui/group/src/react/GroupListItemImpl.tsx rename to ui/group/src/common/GroupListItemImpl.tsx index be375e83..2304186f 100644 --- a/ui/group/src/react/GroupListItemImpl.tsx +++ b/ui/group/src/common/GroupListItemImpl.tsx @@ -1,37 +1,28 @@ -import React, { useCallback } from 'react'; +import React from 'react'; +import { GenericItemT } from '@infinite-list/strategies'; import ListItem from './ListItem'; -import { DefaultItemT } from '../types'; -import { GroupListItemImplProps } from './types'; +import { GroupListItemImplProps } from '../types'; -const GroupListItemImpl = ( +const GroupListItemImpl = ( props: GroupListItemImplProps ) => { const { item, - // listKey, itemKey, dimensions, itemMeta, - containerKey, + recycleItemContainerKey, renderItem: RenderItem, teleportItemProps, + ListItemWrapper, CellRendererComponent, - scrollComponentUseMeasureLayout, ...rest } = props; - const getMetaOnViewableItemsChanged = useCallback(() => { - return { - item, - index: itemMeta.getIndexInfo?.()?.index, - }; - }, [item]); - const teleportProps = typeof teleportItemProps === 'function' - ? // @ts-ignore - teleportItemProps({ + ? teleportItemProps({ item, index: itemMeta.getIndexInfo?.()?.index || -1, }) @@ -41,13 +32,11 @@ const GroupListItemImpl = ( item={item} itemKey={itemKey} - // listKey={listKey} itemMeta={itemMeta} dimensions={dimensions} - containerKey={containerKey} + recycleItemContainerKey={recycleItemContainerKey} + ListItemWrapper={ListItemWrapper} CellRendererComponent={CellRendererComponent} - getMetaOnViewableItemsChanged={getMetaOnViewableItemsChanged} - scrollComponentUseMeasureLayout={scrollComponentUseMeasureLayout} > {React.isValidElement(RenderItem) ? ( RenderItem diff --git a/ui/group/src/common/ListItem.tsx b/ui/group/src/common/ListItem.tsx new file mode 100644 index 00000000..929e5c44 --- /dev/null +++ b/ui/group/src/common/ListItem.tsx @@ -0,0 +1,104 @@ +import React, { + ForwardedRef, + PropsWithChildren, + useCallback, + useEffect, + useRef, +} from 'react'; + +import { DefaultItemT, ListItemProps } from '../types'; +import { ItemLayout } from '@infinite-list/types'; + +/** + * + * @param Component + * @returns + * + * dimension is required. + * viewableItemHelperKey is required + * itemMeta derivate from dimension and viewableItemKey + * indexInfo derivate from itemMeta + * viewable + * + * + * Attention: use itemMeta as key!!!, not viewableItemHelperKey;;; + * Because itemMeta may change, but viewableItemHelperKey not change... + */ +const ListItem = ( + props: PropsWithChildren> +) => { + const { + children, + forwardRef, + recycleItemContainerKey, + dimensions, + CellRendererComponent, + onMeasureLayout: _onMeasureLayout, + itemMeta, + ListItemWrapper, + ...rest + } = props; + + const itemMetaRef = useRef(itemMeta); + const itemChangeHandlerRef = useRef(); + + // note!!!!: has a condition, viewableItemHelperKey not change but itemMeta change.. + // reuse position with same data source.. + useEffect(() => { + // ignore first time + if (itemMetaRef.current !== itemMeta) { + itemMetaRef.current = itemMeta; + + // isApproximateLayout is true should trigger calculate layout again. + if ( + itemMetaRef.current && + (!itemMetaRef.current?.getLayout() || + itemMetaRef.current.isApproximateLayout) + ) { + if (itemChangeHandlerRef.current) itemChangeHandlerRef.current(); + } + } + }, [itemMeta]); + + const addItemChangedListener = useCallback((fn: Function) => { + itemChangeHandlerRef.current = fn; + return () => { + itemChangeHandlerRef.current = null; + }; + }, []); + + const setDimensionItemLayout = useCallback( + (key: string, layout: ItemLayout) => { + itemMetaRef.current.getOwner().setKeyItemLayout(key, layout); + }, + [] + ); + + return ( + + {children} + + ); +}; + +// generic forwardRef https://gist.github.com/IrvingArmenta/a6d7fc76ed538697ad18b7f074accdde +// https://www.totaltypescript.com/forwardref-with-generic-components +export default React.forwardRef( + ( + props: ListItemProps, + ref: ForwardedRef + ) => { + return ; + } +) as ( + props: ListItemProps, + ref: ForwardedRef +) => ReturnType; diff --git a/ui/group/src/common/PortalContent.tsx b/ui/group/src/common/PortalContent.tsx new file mode 100644 index 00000000..e00bb555 --- /dev/null +++ b/ui/group/src/common/PortalContent.tsx @@ -0,0 +1,189 @@ +import { useEffect, useMemo, memo, useState, PropsWithChildren } from 'react'; +import { GenericItemT, RecycleStateResult } from '@infinite-list/strategies'; +import { ItemMetaOwner } from '@infinite-list/types'; +import { + PortalContextProps, + GroupRecycleContentProps, + GroupSpaceContentProps, + TRecycleContentItem, + ExtraInfo, +} from '../types'; + +import GroupListItemImpl from './GroupListItemImpl'; + +const RecycleContentItem = ( + props: TRecycleContentItem +) => { + const { + listKey, + itemMeta, + dimensions, + item, + offset, + recycleItemContainerKey, + horizontal, + ListItemWrapper, + RecycleContentItemWrapper, + } = props; + + const containerStyle = useMemo( + () => + horizontal + ? { + position: 'absolute', + left: offset, + top: 0, + bottom: 0, + } + : { + position: 'absolute', + top: offset, + left: 0, + right: 0, + }, + [offset] + ); + + const metaOwner = useMemo>>(() => { + return itemMeta.getOwner(); + }, [itemMeta]); + + const info = metaOwner.extraInfo as ExtraInfo; + + return ( + + + + ); +}; +const MemoedRecycleContentItem = memo( + RecycleContentItem +) as typeof RecycleContentItem; + +const RecycleContent = ( + props: GroupRecycleContentProps +) => { + const { state, RecycleContentItemWrapper, ListItemWrapper, ...rest } = props; + return ( + <> + {state.map((stateResult) => { + const { key, itemMeta, item, ...stateResultRest } = stateResult; + const metaOwner = itemMeta!.getOwner(); + const info = metaOwner.extraInfo as ExtraInfo; + return ( + + ); + })} + + ); +}; +const MemoedRecycleContent = memo(RecycleContent) as typeof RecycleContent; + +const SpaceContent = ( + props: GroupSpaceContentProps +) => { + const { + state, + listKey, + dimensions, + SpaceRendererComponent, + ListItemWrapper, + } = props; + + return ( + <> + {state.map((stateResult) => { + const { isSpace, key, item, length, isSticky, itemMeta } = stateResult; + + const metaOwner = itemMeta?.getOwner(); + const info = metaOwner?.extraInfo as ExtraInfo; + + return isSpace ? ( + + ) : ( + + ); + })} + + ); +}; +const MemoedSpaceContent = memo(SpaceContent) as typeof SpaceContent; + +const PortalContent = ( + props: PropsWithChildren> +) => { + const { + id, + listGroupDimensions, + RecycleContentItemWrapper, + SpaceRendererComponent, + ListItemWrapper, + } = props; + const [store, setStore] = useState( + () => + listGroupDimensions.getStateResult() as any as RecycleStateResult + ); + + useEffect( + () => + listGroupDimensions.addStateListener((newState) => { + setTimeout(() => + setStore(newState as any as RecycleStateResult) + ); + }), + [] + ); + + return ( + <> + + listKey={id} + ownerId={id} + state={store.spaceState} + dimensions={listGroupDimensions} + ListItemWrapper={ListItemWrapper} + SpaceRendererComponent={SpaceRendererComponent} + /> + + + + ); +}; + +export default memo(PortalContent) as typeof PortalContent; diff --git a/ui/group/src/common/clock.tsx b/ui/group/src/common/clock.tsx new file mode 100644 index 00000000..fdbb58d8 --- /dev/null +++ b/ui/group/src/common/clock.tsx @@ -0,0 +1,18 @@ +import { GenericItemT } from '@infinite-list/item-meta'; +import { ListGroupDimensions } from '@infinite-list/group-dimensions'; + +// https://stackoverflow.com/a/70890101 +export const ClockStart = (props: { + dimensions: ListGroupDimensions; + inspectingTimes: number; +}) => { + props.dimensions.inspector.startCollection(); + return null; +}; +export const ClockEnd = (props: { + dimensions: ListGroupDimensions; + inspectingTimes: number; +}) => { + props.dimensions.inspector.terminateCollection(); + return null; +}; diff --git a/ui/group/src/react/context.ts b/ui/group/src/common/context.ts similarity index 73% rename from ui/group/src/react/context.ts rename to ui/group/src/common/context.ts index e334861f..9c8fbbf3 100644 --- a/ui/group/src/react/context.ts +++ b/ui/group/src/common/context.ts @@ -1,8 +1,9 @@ -import { GenericItemT, ListGroupDimensions } from '@infinite-list/data-model'; +import { ListGroupDimensions } from '@infinite-list/group-dimensions'; +import { GenericItemT } from '@infinite-list/item-meta'; import { createContext } from 'react'; import noop from '@x-oasis/noop'; -type ContextType = { +export type ContextType = { inspectingTimes: number; inspectingTime: number; heartBeat: (props: { listKey: string; inspectingTime: number }) => void; diff --git a/ui/group/src/react/hooks/useMountItem.ts b/ui/group/src/common/hooks/useMountDimensionItem.ts similarity index 68% rename from ui/group/src/react/hooks/useMountItem.ts rename to ui/group/src/common/hooks/useMountDimensionItem.ts index 45ecb241..634980c1 100644 --- a/ui/group/src/react/hooks/useMountItem.ts +++ b/ui/group/src/common/hooks/useMountDimensionItem.ts @@ -1,22 +1,22 @@ import React, { useContext, useEffect, useMemo, useRef } from 'react'; -import context from '../context'; -import { Dimension, GenericItemT } from '@infinite-list/data-model'; -import { GroupListItemImplProps } from '../types'; +import context, { ContextType } from '../context'; +import { Dimension, GenericItemT } from '@infinite-list/dimension'; +import { GroupDimensionItemProps } from '../../types'; export default ( - props: GroupListItemImplProps + props: GroupDimensionItemProps ) => { const disposerRef = useRef(); const initialRef = useRef(true); - const listGroupDimensions = useContext(context).listGroupDimensions!; + const listGroupDimensions = + useContext>(context).listGroupDimensions; const { itemKey, children, ...rest } = props; const dimensionRef = useRef(); - if (initialRef.current) { + if (initialRef.current && listGroupDimensions) { const { remover, dimensions } = listGroupDimensions.registerItem( itemKey, - // @ts-ignore rest ); disposerRef.current = remover; @@ -27,13 +27,13 @@ export default ( useMemo(() => { const clonedChildren = children - ? // @ts-ignore + ? // @ts-ignore [TODO] React.cloneElement(children, { itemMeta: dimensionRef.current?.getMeta(), }) : children; - // @ts-ignore + // @ts-ignore [TODO] dimensionRef.current!.renderItem = clonedChildren; }, [children]); diff --git a/ui/group/src/react/hooks/useMountList.ts b/ui/group/src/common/hooks/useMountList.ts similarity index 55% rename from ui/group/src/react/hooks/useMountList.ts rename to ui/group/src/common/hooks/useMountList.ts index 35a08526..dc6ea6dd 100644 --- a/ui/group/src/react/hooks/useMountList.ts +++ b/ui/group/src/common/hooks/useMountList.ts @@ -1,16 +1,17 @@ -import { defaultKeyExtractor } from '@infinite-list/data-model'; +import { defaultKeyExtractor } from '@infinite-list/utils'; import { useContext, useEffect, useRef } from 'react'; -import context from '../context'; -import { DefaultItemT, GroupListProps } from '../types'; +import context, { ContextType } from '../context'; +import { DefaultItemT, GroupListProps } from '../../types'; +import { ListDimensionsModel } from '@infinite-list/dimensions-model'; export default (props: GroupListProps) => { const disposerRef = useRef(); const initialRef = useRef(true); - const { listGroupDimensions } = useContext(context); + const { listGroupDimensions } = useContext>(context); const { data, - keyExtractor = defaultKeyExtractor, + keyExtractor = defaultKeyExtractor, id, renderItem, onEndReached, @@ -28,17 +29,31 @@ export default (props: GroupListProps) => { if (initialRef.current) { disposerRef.current = listGroupDimensions!.registerList(id, { data, - // @ts-ignore keyExtractor, onEndReached, recycleEnabled: true, recyclerType, ...rest, }).remover; - // @ts-ignore - listGroupDimensions!.getDimension(id).renderItem = renderItem; - // @ts-ignore - listGroupDimensions!.getDimension(id).teleportItemProps = teleportItemProps; + + ( + listGroupDimensions!.getDimension(id) as ListDimensionsModel< + ItemT, + { + renderItem: any; + teleportItemProps: any; + } + > + ).extraInfo.renderItem = renderItem; + ( + listGroupDimensions!.getDimension(id) as ListDimensionsModel< + ItemT, + { + renderItem: any; + teleportItemProps: any; + } + > + ).extraInfo.teleportItemProps = teleportItemProps; initialRef.current = false; } diff --git a/ui/group/src/react-native/CompatComponent.tsx b/ui/group/src/react-native/CompatComponent.tsx new file mode 100644 index 00000000..dd6b8836 --- /dev/null +++ b/ui/group/src/react-native/CompatComponent.tsx @@ -0,0 +1,32 @@ +import { FC, PropsWithChildren, useMemo } from 'react'; +import { View, ViewStyle } from 'react-native'; +import { CompatStyle } from '../types'; + +/** + * compatible Component for ReactNative or React usage + */ + +export const RecycleContentItemWrapper: FC< + PropsWithChildren<{ + style?: CompatStyle; + }> +> = (props) => { + const { children, style } = props; + const nextStyle = useMemo(() => { + return (style as ViewStyle) || {}; + }, [style]); + + return {children}; +}; + +export const SpaceRendererComponent: FC< + PropsWithChildren<{ + style?: CompatStyle; + }> +> = (props) => { + const { style } = props; + const nextStyle = useMemo(() => { + return (style as ViewStyle) || {}; + }, [style]); + return ; +}; diff --git a/ui/group/src/react-native/CompatListItem.tsx b/ui/group/src/react-native/CompatListItem.tsx new file mode 100644 index 00000000..5354b9de --- /dev/null +++ b/ui/group/src/react-native/CompatListItem.tsx @@ -0,0 +1,115 @@ +import { GenericItemT, ItemLayout } from '@infinite-list/types'; +import { + PropsWithChildren, + useCallback, + useEffect, + useRef, + useMemo, +} from 'react'; +import { CompatListItemProps } from './types'; +import { View, StyleSheet, LayoutChangeEvent } from 'react-native'; +import { measureLayout } from './measure'; + +const CompatListItem = ( + props: PropsWithChildren> +) => { + const { + style: _style = {}, + children, + forwardRef, + + dimensions, + recycleItemContainerKey, + CellRendererComponent, + onMeasureLayout: _onMeasureLayout, + setDimensionItemLayout, + addItemChangedListener, + containerRef, + itemMeta, + ...rest + } = props; + const containerStyle = useMemo( + () => StyleSheet.flatten([_style, { elevation: 0 }]), + [_style] + ); + const _updateItemLayout = useCallback((layout: ItemLayout) => { + const { x, y, width, height } = layout; + setDimensionItemLayout(itemMetaRef.current.getKey(), { + x, + y, + width, + height, + }); + }, []); + + const updateItemLayout = useCallback(() => { + measureLayout( + // @ts-ignore [TODO] + viewRef.current, + containerRef.current, + measureLayoutOnSuccessCallback + ); + }, []); + + const measureLayoutOnSuccessCallback = useCallback( + (x: number, y: number, width: number, height: number) => { + _updateItemLayout({ x, y, width, height }); + }, + [] + ); + + const defaultRef = useRef(null); + const viewRef = forwardRef || defaultRef; + + const itemMetaRef = useRef(itemMeta); + + if (itemMetaRef.current !== itemMeta) { + itemMetaRef.current = itemMeta; + } + + useEffect( + () => + addItemChangedListener(() => { + updateItemLayout(); + }), + [] + ); + + const layoutHandler = useMemo( + () => (e: LayoutChangeEvent) => { + // if (typeof onLayout === 'function') onLayout(e); + _updateItemLayout(e.nativeEvent.layout); + }, + [] + ); + + const RenderComponent = useMemo( + () => CellRendererComponent || View, + [CellRendererComponent] + ); + + // TODO: temp fix + // Warning: Function components cannot be given refs. Attempts to + // access this ref will fail. Did you mean to use React.forwardRef()? + const refProps = useMemo(() => { + if (CellRendererComponent) + return { + cellKey: itemMeta.getKey(), + }; + return { ref: viewRef }; + }, [itemMeta]); + + return ( + + {children} + + ); +}; + +export default CompatListItem; diff --git a/ui/group/src/react-native/GroupListItem.tsx b/ui/group/src/react-native/GroupListItem.tsx deleted file mode 100644 index 31a26031..00000000 --- a/ui/group/src/react-native/GroupListItem.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import React, { useContext, useRef } from 'react'; -import context from './context'; -import useMountItem from './hooks/useMountItem'; - -// @ts-ignore -const GroupListItem = (props) => { - useMountItem(props); - return null; -}; - -const MemoedGroupListItem = React.memo(GroupListItem, (prev, cur) => { - if (cur.changed) return true; - - const keys = Object.keys(prev); - - for (let index = 0; index < keys.length; index++) { - const key = keys[index]; - if (prev[key] !== cur[key]) { - return false; - } - } - return true; -}); - -// @ts-ignore -const GroupListItemWrapper = (props) => { - const contextValues = useContext(context); - const contextValuesRef = useRef(contextValues); - - // let changed = false; - - // console.log('heart beating ', contextValuesRef.current.inspectingTimes !== contextValues.inspectingTimes, props.itemKey) - - if ( - contextValuesRef.current.inspectingTimes !== contextValues.inspectingTimes - ) { - contextValuesRef.current.heartBeat({ - inspectingTime: contextValues.inspectingTime, - listKey: props.itemKey, - }); - contextValuesRef.current = contextValues; - // changed = true; - } - - return ; -}; - -export default GroupListItemWrapper; diff --git a/ui/group/src/react-native/GroupListItemImpl.tsx b/ui/group/src/react-native/GroupListItemImpl.tsx deleted file mode 100644 index cbc13093..00000000 --- a/ui/group/src/react-native/GroupListItemImpl.tsx +++ /dev/null @@ -1,61 +0,0 @@ -import React, { useCallback } from 'react'; - -import ListItem from './ListItem'; -import { GroupListItemImplProps, DefaultItemT } from '../types'; - -const GroupListItemImpl = ( - props: GroupListItemImplProps -) => { - const { - item, - listKey, - dimensions, - itemMeta, - containerKey, - renderItem: RenderItem, - teleportItemProps, - CellRendererComponent, - scrollComponentUseMeasureLayout, - ...rest - } = props; - - const getMetaOnViewableItemsChanged = useCallback(() => { - return { - item, - index: itemMeta.getIndexInfo?.()?.index, - }; - }, [item]); - - const teleportProps = - typeof teleportItemProps === 'function' - ? // @ts-ignore - teleportItemProps({ item, index: itemMeta.getIndexInfo?.()?.index }) - : {}; - - return ( - - {React.isValidElement(RenderItem) ? ( - RenderItem - ) : RenderItem ? ( - - ) : null} - - ); -}; - -export default GroupListItemImpl; diff --git a/ui/group/src/react-native/ListGroup.tsx b/ui/group/src/react-native/ListGroup.tsx index 2e3b6cec..790cd408 100644 --- a/ui/group/src/react-native/ListGroup.tsx +++ b/ui/group/src/react-native/ListGroup.tsx @@ -1,6 +1,6 @@ -import { ListGroupDimensions } from '@infinite-list/data-model'; -import React, { - FC, +import { ListGroupDimensions } from '@infinite-list/group-dimensions'; +import { GenericItemT } from '@infinite-list/item-meta'; +import { useCallback, useContext, useEffect, @@ -9,37 +9,31 @@ import React, { useState, } from 'react'; import { View, Platform } from 'react-native'; - -import { ListGroupProps } from '../types'; -import context from './context'; -import PortalContent from './PortalContent'; - -const ClockStart: FC<{ - dimensions: ListGroupDimensions; - inspectingTimes: number; -}> = React.memo((props) => { - props.dimensions.inspector.startCollection(); - return null; -}); -const ClockEnd: FC<{ - dimensions: ListGroupDimensions; - inspectingTimes: number; -}> = React.memo((props) => { - props.dimensions.inspector.terminateCollection(); - return null; -}); - -const ListGroup: FC = (props) => { +import { + RecycleContentItemWrapper, + SpaceRendererComponent, +} from './CompatComponent'; +import { ListGroupProps } from './types'; +import { ListItemWrapper as TListItemWrapper } from '../types'; +import context from '../common/context'; +import PortalContent from '../common/PortalContent'; +import { ClockStart, ClockEnd } from '../common/clock'; +import { measureLayout } from './measure'; +import CompatListItem from './CompatListItem'; + +const ListGroup = ( + props: ListGroupProps +) => { const { - children, id, + children, + containerRef, onViewableItemsChanged, viewabilityConfig, viewabilityConfigCallbackPairs, initialNumToRender, persistanceIndices, scrollComponentContext, - scrollComponentUseMeasureLayout, ...rest } = props; // @ts-ignore @@ -54,7 +48,7 @@ const ListGroup: FC = (props) => { }>(); const viewRef = useRef(null); - const measureLayout = useCallback( + const measureLayoutOnSuccessCallback = useCallback( (x: number, y: number, width: number, height: number) => { layoutRef.current = { x, y, width, height }; }, @@ -65,14 +59,30 @@ const ListGroup: FC = (props) => { const scrollHelper = getScrollHelper(); - const { handler, layoutHandler } = scrollComponentUseMeasureLayout(viewRef, { - onMeasureLayout: measureLayout, - }); + const layoutHandler = useCallback(() => { + if (viewRef.current) { + measureLayout( + viewRef.current, + containerRef.current, + measureLayoutOnSuccessCallback + ); + } + }, []); + + useEffect(() => { + if (viewRef.current) { + measureLayout( + viewRef.current, + containerRef.current, + measureLayoutOnSuccessCallback + ); + } + }, []); const getContainerLayout = useCallback(() => layoutRef.current!, []); const listGroupDimensions = useMemo( () => - new ListGroupDimensions({ + new ListGroupDimensions({ id, ...rest, viewabilityConfig, @@ -89,9 +99,6 @@ const ListGroup: FC = (props) => { useEffect( () => scrollEventHelper.subscribeEventHandler('onContentSizeChange', () => { - if (typeof handler === 'function') { - handler(); - } const scrollMetrics = scrollHelper.getScrollMetrics(); if (scrollMetrics !== scrollMetricsRef.current) { listGroupDimensions.updateScrollMetrics( @@ -149,6 +156,13 @@ const ListGroup: FC = (props) => { }); }, []); + /** + * like IOC, the specific logic placed on the topmost. + */ + const ListItemWrapper = useCallback>((props) => { + return ; + }, []); + return ( = (props) => { {children} ( - props: PropsWithChildren> -) => { - const { - style: _style = {}, - children, - onLayout, - forwardRef, - - // @ts-ignore - dimensions, - containerKey, - CellRendererComponent, - setMeasureLayoutHandler, - onMeasureLayout: _onMeasureLayout, - // @ts-ignore - measureLayoutHandlerOnDemand, - // @ts-ignore - getMetaOnViewableItemsChanged, - scrollComponentUseMeasureLayout, - - itemMeta, - ...rest - } = props; - const containerStyle = useMemo( - () => StyleSheet.flatten([_style, { elevation: 0 }]), - [_style] - ); - - const defaultRef = useRef(null); - const viewRef = forwardRef || defaultRef; - - const itemMetaRef = useRef(itemMeta); - - const onMeasureLayout = useCallback( - (x: number, y: number, width: number, height: number) => { - if (typeof _onMeasureLayout === 'function') { - _onMeasureLayout(x, y, width, height); - } - const layout = itemMetaRef.current?.getLayout(); - const nextLayout = { x, y, width, height }; - - if (!layout || !shallowEqual(nextLayout, layout)) { - itemMetaRef.current - .getOwner() - .setKeyItemLayout(itemMetaRef.current.getKey(), { - x, - y, - width, - height, - }); - } - }, - [] - ); - - const getCurrentKey = useCallback(() => itemMetaRef.current.getKey(), []); - - // @ts-ignore - const { handler, layoutHandler } = scrollComponentUseMeasureLayout(viewRef, { - onLayout, - getCurrentKey, - isIntervalTreeItem: true, - onMeasureLayout, - }); - - // note!!!!: has a condition, viewableItemHelperKey not change but itemMeta change.. - // reuse position with same data source.. - useEffect(() => { - // ignore first time - if (itemMetaRef.current !== itemMeta) { - itemMetaRef.current = itemMeta; - - // isApproximateLayout is true should trigger calculate layout again. - if ( - itemMetaRef.current && - (!itemMetaRef.current?.getLayout() || - itemMetaRef.current.isApproximateLayout) - ) { - setTimeout(() => handler(), 0); - } - } - }, [itemMeta]); - - useEffect(() => { - if (typeof setMeasureLayoutHandler === 'function') - setMeasureLayoutHandler(handler); - }, []); - - const RenderComponent = useMemo( - () => CellRendererComponent || View, - [CellRendererComponent] - ); - - // TODO: temp fix - // Warning: Function components cannot be given refs. Attempts to - // access this ref will fail. Did you mean to use React.forwardRef()? - const refProps = useMemo(() => { - if (CellRendererComponent) - return { - cellKey: itemMeta.getKey(), - }; - return { ref: viewRef }; - }, [itemMeta]); - - return ( - - {children} - {/* - {props.itemMeta.getIndexInfo()?.indexInGroup} - */} - - ); -}; - -export default React.forwardRef( - ( - props: ListItemProps, - ref: ForwardedRef - ) => { - return ; - } -); diff --git a/ui/group/src/react-native/PortalContent.tsx b/ui/group/src/react-native/PortalContent.tsx deleted file mode 100644 index 0d6495de..00000000 --- a/ui/group/src/react-native/PortalContent.tsx +++ /dev/null @@ -1,166 +0,0 @@ -import React, { - useEffect, - useMemo, - memo, - useState, - PropsWithChildren, -} from 'react'; -import { RecycleStateResult } from '@infinite-list/data-model'; -import { - PortalContextProps, - GroupRecycleContentProps, - GroupSpaceContentProps, -} from '../types'; -import { View, ViewStyle } from 'react-native'; - -import GroupListItemImpl from './GroupListItemImpl'; - -// @ts-ignore -const RecycleContentItem = (props) => { - const { - listKey, - itemMeta, - dimensions, - item, - offset, - containerKey, - horizontal, - scrollComponentUseMeasureLayout, - } = props; - - const containerStyle: ViewStyle = useMemo( - () => - horizontal - ? { - position: 'absolute', - left: offset, - top: 0, - bottom: 0, - } - : { - position: 'absolute', - top: offset, - left: 0, - right: 0, - }, - [offset] - ); - - return ( - - - - ); -}; - -const MemoedRecycleContentItem = memo(RecycleContentItem); - -const RecycleContent = (props: GroupRecycleContentProps) => { - const { state, ...rest } = props; - return ( - <> - {/* @ts-ignore */} - {state.map((stateResult) => { - const { key, itemMeta, ...stateResultRest } = stateResult; - return ( - - ); - })} - - ); -}; -const MemoedRecycleContent = memo< - PropsWithChildren> ->(RecycleContent, (prev, next) => prev.state === next.state); - -const SpaceContent = (props: GroupSpaceContentProps) => { - const { state, listKey, dimensions, scrollComponentUseMeasureLayout } = props; - - return ( - <> - {state.map((stateResult, index) => { - const { isSpace, key, item, length, isSticky, itemMeta } = stateResult; - return isSpace ? ( - - ) : ( - - ); - })} - - ); -}; -const MemoedSpaceContent = memo>>( - SpaceContent, - (prev, next) => prev.state === next.state -); - -const PortalContent = ( - props: PropsWithChildren -) => { - const { listGroupDimensions, id, scrollComponentUseMeasureLayout } = props; - const [store, setStore] = useState( - () => listGroupDimensions.getStateResult() as any as RecycleStateResult - ); - - useEffect( - () => - listGroupDimensions.addStateListener((newState) => { - setTimeout(() => setStore(newState as any as RecycleStateResult)); - }), - [] - ); - - return ( - <> - - - - - ); -}; - -export default React.memo(PortalContent); diff --git a/ui/group/src/react-native/context.ts b/ui/group/src/react-native/context.ts deleted file mode 100644 index eedfa219..00000000 --- a/ui/group/src/react-native/context.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { ListGroupDimensions } from '@infinite-list/data-model'; -import { createContext } from 'react'; -import noop from '@x-oasis/noop'; - -export default createContext<{ - inspectingTimes: number; - inspectingTime: number; - heartBeat: (props: { listKey: string; inspectingTime: number }) => void; - startInspection: () => void; - listGroupDimensions?: ListGroupDimensions; -}>({ - inspectingTimes: 0, - inspectingTime: +Date.now(), - heartBeat: noop, - startInspection: noop, -}); diff --git a/ui/group/src/react-native/hooks/useMountItem.ts b/ui/group/src/react-native/hooks/useMountItem.ts deleted file mode 100644 index 5f428cf8..00000000 --- a/ui/group/src/react-native/hooks/useMountItem.ts +++ /dev/null @@ -1,43 +0,0 @@ -import React, { useContext, useEffect, useMemo, useRef } from 'react'; -import context from '../context'; -import { Dimension } from '@infinite-list/data-model'; - -// @ts-ignore -export default (props) => { - const disposerRef = useRef(); - const initialRef = useRef(true); - const listGroupDimensions = useContext(context).listGroupDimensions!; - const { itemKey, children, ...rest } = props; - - const dimensionRef = useRef(); - - if (initialRef.current) { - const { remover, dimensions } = listGroupDimensions.registerItem( - itemKey, - rest - ); - disposerRef.current = remover; - // @ts-ignore - dimensionRef.current = dimensions; - - initialRef.current = false; - } - - useMemo(() => { - const clonedChildren = children - ? React.cloneElement(children, { - itemMeta: dimensionRef.current?.getMeta(), - }) - : children; - - // @ts-ignore - dimensionRef.current!.renderItem = clonedChildren; - }, [children]); - - useEffect( - () => () => { - if (typeof disposerRef.current === 'function') disposerRef.current(); - }, - [] - ); -}; diff --git a/ui/group/src/react-native/hooks/useMountList.ts b/ui/group/src/react-native/hooks/useMountList.ts deleted file mode 100644 index d76f37aa..00000000 --- a/ui/group/src/react-native/hooks/useMountList.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { defaultKeyExtractor } from '@infinite-list/data-model'; -import { useContext, useEffect, useRef } from 'react'; -import context from '../context'; - -// @ts-ignore -export default (props) => { - const disposerRef = useRef(); - const initialRef = useRef(true); - - const { listGroupDimensions } = useContext(context); - const { - data, - keyExtractor = defaultKeyExtractor, - id, - renderItem, - onEndReached, - recyclerType, - teleportItemProps, - ...rest - } = props; - - const dataRef = useRef(data); - - useEffect(() => { - listGroupDimensions!.setOnEndReached(id, onEndReached); - }, [onEndReached]); - - if (initialRef.current) { - disposerRef.current = listGroupDimensions!.registerList(id, { - data, - keyExtractor, - onEndReached, - recycleEnabled: true, - recyclerType, - ...rest, - }).remover; - // @ts-ignore - listGroupDimensions!.getDimension(id).renderItem = renderItem; - // @ts-ignore - listGroupDimensions!.getDimension(id).teleportItemProps = teleportItemProps; - initialRef.current = false; - } - - if (dataRef.current !== data) { - listGroupDimensions!.setListData(id, data); - dataRef.current = data; - } - - useEffect( - () => () => { - if (typeof disposerRef.current === 'function') disposerRef.current(); - }, - [] - ); -}; diff --git a/ui/group/src/react-native/index.ts b/ui/group/src/react-native/index.ts index d4856293..c8389c32 100644 --- a/ui/group/src/react-native/index.ts +++ b/ui/group/src/react-native/index.ts @@ -1,4 +1,4 @@ export { default as ListGroup } from './ListGroup'; -export { default as GroupList } from './GroupList'; -export { default as ListGroupContext } from './context'; -export { default as GroupListItem } from './GroupListItem'; +export { default as GroupList } from '../common/GroupList'; +export { default as ListGroupContext } from '../common/context'; +export { default as GroupListItem } from '../common/GroupDimensionItem'; diff --git a/ui/group/src/react-native/measure.ts b/ui/group/src/react-native/measure.ts new file mode 100644 index 00000000..6d49e0bc --- /dev/null +++ b/ui/group/src/react-native/measure.ts @@ -0,0 +1,61 @@ +import { + UIManager, + MeasureLayoutOnSuccessCallback, + NativeMethods, + HostComponent, +} from 'react-native'; + +// https://github.com/facebook/react-native/blob/main/packages/react-native/Libraries/ReactNative/UIManager.d.ts#L17 +// https://github.com/facebook/react-native/blob/main/packages/react-native/types/public/ReactNativeTypes.d.ts#L45 + +export type MeasureOnSuccessCallback = ( + x: number, + y: number, + width: number, + height: number, + pageX: number, + pageY: number +) => void; + +export type MeasureInWindowOnSuccessCallback = ( + x: number, + y: number, + width: number, + height: number +) => void; + +export type OnFail = () => void; + +export type NodeHandle = number; + +export type findNodeHandle = ( + componentOrHandle: + | null + | number + | React.Component + | React.ComponentClass +) => null | NodeHandle; + +/** + * + * @param node: number + * @param relativeToNativeComponentRef + * @param onSuccess + * @param onFail + */ +export const measureLayout = ( + node: React.ElementRef> | number, + relativeToNativeComponentRef: + | React.ElementRef> + | number, + onSuccess: MeasureLayoutOnSuccessCallback, + onFail?: OnFail +) => { + if (node) { + (node as any as NativeMethods).measureLayout( + relativeToNativeComponentRef, + onSuccess, + onFail + ); + } +}; diff --git a/ui/group/src/react-native/types/ListGroup.types.ts b/ui/group/src/react-native/types/ListGroup.types.ts new file mode 100644 index 00000000..7290b817 --- /dev/null +++ b/ui/group/src/react-native/types/ListGroup.types.ts @@ -0,0 +1,42 @@ +import { + OnEndReachedHelperProps, + ViewabilityConfig, + OnViewableItemsChanged, + ViewabilityConfigCallbackPairs, +} from '@infinite-list/viewable'; +import { ComponentType, PropsWithChildren, MutableRefObject } from 'react'; +import { View, ScrollView, LayoutChangeEvent } from 'react-native'; +import { GenericItemT } from '@infinite-list/item-meta'; +import { RefObject } from 'react'; + +export type ScrollComponentUseMeasureLayout = ( + itemRef: MutableRefObject, + options: { + onLayout?: Function; + getCurrentKey?: () => string; + isIntervalTreeItem?: boolean; + onMeasureLayout?: Function; + } +) => { + handler: Function; + layoutHandler: (e: LayoutChangeEvent) => void; +}; + +export type ContainerRef = RefObject; + +export type ListGroupProps = PropsWithChildren<{ + GroupListSeparatorComponent?: ComponentType | null | undefined; + id: string; + onViewableItemsChanged?: OnViewableItemsChanged; + viewabilityConfig?: ViewabilityConfig; + viewabilityConfigCallbackPairs?: ViewabilityConfigCallbackPairs; + initialNumToRender?: number; + windowSize?: number; + maxToRenderPerBatch?: number; + onRenderFinished?: () => void; + persistanceIndices?: number[]; + + scrollComponentContext?: any; + containerRef: ContainerRef; +}> & + OnEndReachedHelperProps; diff --git a/ui/group/src/react-native/types/PortalContext.types.ts b/ui/group/src/react-native/types/PortalContext.types.ts new file mode 100644 index 00000000..e7ee665f --- /dev/null +++ b/ui/group/src/react-native/types/PortalContext.types.ts @@ -0,0 +1,15 @@ +import { GenericItemT } from '@infinite-list/types'; + +import { + PortalContextProps as CommonPortalContextProps, + GroupSpaceContentProps as CommonGroupSpaceContentProps, + GroupRecycleContentProps as CommonGroupRecycleContentProps, +} from '../../types/PortalContext.types'; + +export type PortalContextProps = + CommonPortalContextProps; +export type GroupSpaceContentProps = + CommonGroupSpaceContentProps; +export type GroupRecycleContentProps< + ItemT extends GenericItemT = GenericItemT +> = CommonGroupRecycleContentProps; diff --git a/ui/group/src/react-native/types/compatListItem.ts b/ui/group/src/react-native/types/compatListItem.ts new file mode 100644 index 00000000..91005f1b --- /dev/null +++ b/ui/group/src/react-native/types/compatListItem.ts @@ -0,0 +1,12 @@ +import { GenericItemT, ItemLayout } from '@infinite-list/types'; +import { ListItemProps } from '../../types'; +import { ViewStyle } from 'react-native'; +import { ContainerRef } from './ListGroup.types'; + +export interface CompatListItemProps + extends Omit, 'ListItemWrapper'> { + setDimensionItemLayout(key: string, values: ItemLayout): void; + addItemChangedListener(fn: Function): void; + style?: ViewStyle; + containerRef: ContainerRef; +} diff --git a/ui/group/src/react-native/types/index.ts b/ui/group/src/react-native/types/index.ts new file mode 100644 index 00000000..d082e305 --- /dev/null +++ b/ui/group/src/react-native/types/index.ts @@ -0,0 +1,3 @@ +export * from './ListGroup.types'; +export * from './PortalContext.types'; +export * from './compatListItem'; diff --git a/ui/group/src/react/CompatComponent.tsx b/ui/group/src/react/CompatComponent.tsx new file mode 100644 index 00000000..52d084f9 --- /dev/null +++ b/ui/group/src/react/CompatComponent.tsx @@ -0,0 +1,30 @@ +import { CSSProperties, FC, PropsWithChildren, useMemo } from 'react'; +import { CompatStyle } from '../types'; + +/** + * compatible Component for ReactNative or React usage + */ + +export const RecycleContentItemWrapper: FC< + PropsWithChildren<{ + style?: CompatStyle; + }> +> = (props) => { + const { children, style = {} } = props; + const nextStyle = useMemo(() => { + return (style as CSSProperties) || {}; + }, [style]); + return

{children}
; +}; + +export const SpaceRendererComponent: FC< + PropsWithChildren<{ + style?: CompatStyle; + }> +> = (props) => { + const { style } = props; + const nextStyle = useMemo(() => { + return (style as CSSProperties) || {}; + }, [style]); + return
; +}; diff --git a/ui/group/src/react/CompatListItem.tsx b/ui/group/src/react/CompatListItem.tsx new file mode 100644 index 00000000..3ded94d4 --- /dev/null +++ b/ui/group/src/react/CompatListItem.tsx @@ -0,0 +1,79 @@ +import { GenericItemT } from '@infinite-list/types'; +import { + PropsWithChildren, + useCallback, + useEffect, + useRef, + useMemo, + FC, +} from 'react'; +import { CompatListItemProps } from './types'; + +const CompatListItem = ( + props: PropsWithChildren> +) => { + const { + style: _style = {}, + children, + forwardRef, + recycleItemContainerKey, + CellRendererComponent, + onMeasureLayout: _onMeasureLayout, + setDimensionItemLayout, + addItemChangedListener, + itemMeta, + } = props; + + const defaultRef = useRef(null); + const viewRef = forwardRef || defaultRef; + + const updateItemLayout = useCallback(() => { + // @ts-ignore + const rect = viewRef?.current?.getBoundingClientRect(); + if (rect) { + const { x, y, width, height } = rect; + setDimensionItemLayout(itemMetaRef.current.getKey(), { + x, + y, + width, + height, + }); + } + }, []); + + useEffect(() => addItemChangedListener(updateItemLayout), []); + + const itemMetaRef = useRef(itemMeta); + + if (itemMetaRef.current !== itemMeta) { + itemMetaRef.current = itemMeta; + } + + useEffect(() => { + updateItemLayout(); + }, []); + + const RenderComponent = useMemo( + () => CellRendererComponent || 'div', + [CellRendererComponent] + ); + + // TODO: temp fix + // Warning: Function components cannot be given refs. Attempts to + // access this ref will fail. Did you mean to use React.forwardRef()? + const refProps = useMemo(() => { + if (CellRendererComponent) + return { + cellKey: itemMeta.getKey(), + }; + return { ref: viewRef }; + }, [itemMeta]); + + return ( + + {children} + + ); +}; + +export default CompatListItem; diff --git a/ui/group/src/react/GroupList.tsx b/ui/group/src/react/GroupList.tsx deleted file mode 100644 index 7fc86df3..00000000 --- a/ui/group/src/react/GroupList.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import { PropsWithChildren, useContext, useRef } from 'react'; - -import { DefaultItemT } from '../types'; -import { genericMemo, GroupListProps } from './types'; -import context from './context'; -import useMountList from './hooks/useMountList'; - -const MemoedGroupList = genericMemo( - ( - props: PropsWithChildren> - ) => { - useMountList(props); - return null; - }, - (prev, cur) => { - // @ts-ignore - if (cur.changed) return true; - - const keys = Object.keys(prev); - - for (let index = 0; index < keys.length; index++) { - const key = keys[index]; - // @ts-ignore - if (prev[key] !== cur[key]) { - return false; - } - } - return true; - } -); - -const GroupListWrapper = ( - props: PropsWithChildren> -) => { - const contextValues = useContext(context); - const contextValuesRef = useRef(contextValues); - - if ( - contextValuesRef.current.inspectingTimes !== contextValues.inspectingTimes - ) { - contextValuesRef.current.heartBeat({ - inspectingTime: contextValues.inspectingTime, - listKey: props.id, - }); - contextValuesRef.current = contextValues; - } - return ; -}; - -export default GroupListWrapper; diff --git a/ui/group/src/react/GroupListItem.tsx b/ui/group/src/react/GroupListItem.tsx deleted file mode 100644 index fbe852f7..00000000 --- a/ui/group/src/react/GroupListItem.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import React, { useContext, useRef } from 'react'; -import { GenericItemT } from '@infinite-list/data-model'; -import context from './context'; -import useMountItem from './hooks/useMountItem'; -import { genericMemo, GroupListItemImplProps } from './types'; - -const MemoedGroupListItem = genericMemo( - (props: GroupListItemImplProps) => { - useMountItem(props); - return null; - }, - (prev, cur) => { - // @ts-ignore - if (cur.changed) return true; - - const keys = Object.keys(prev); - - for (let index = 0; index < keys.length; index++) { - const key = keys[index]; - // @ts-ignore - if (prev[key] !== cur[key]) { - return false; - } - } - return true; - } -); - -const GroupListItemWrapper = ( - props: GroupListItemImplProps -) => { - const contextValues = useContext(context); - const contextValuesRef = useRef(contextValues); - - // let changed = false; - - // console.log('heart beating ', contextValuesRef.current.inspectingTimes !== contextValues.inspectingTimes, props.itemKey) - - if ( - contextValuesRef.current.inspectingTimes !== contextValues.inspectingTimes - ) { - contextValuesRef.current.heartBeat({ - inspectingTime: contextValues.inspectingTime, - listKey: props.itemKey, - }); - contextValuesRef.current = contextValues; - // changed = true; - } - - return ; -}; - -export default GroupListItemWrapper; diff --git a/ui/group/src/react/ListGroup.tsx b/ui/group/src/react/ListGroup.tsx index 27a03fff..39c93ed7 100644 --- a/ui/group/src/react/ListGroup.tsx +++ b/ui/group/src/react/ListGroup.tsx @@ -1,41 +1,24 @@ -import { GenericItemT, ListGroupDimensions } from '@infinite-list/data-model'; -import React, { +import { ListGroupDimensions } from '@infinite-list/group-dimensions'; +import { GenericItemT } from '@infinite-list/item-meta'; +import { CSSProperties, - FC, useCallback, - // useContext, useEffect, useMemo, useRef, useState, } from 'react'; -// import { div, Platform } from 'react-native'; -import { ListGroupProps, genericMemo } from './types'; -import context from './context'; -import PortalContent from './PortalContent'; +import { ListGroupProps } from '../types'; +import context from '../common/context'; +import PortalContent from '../common/PortalContent'; import { ScrollTracker } from '@infinite-list/scroller/web'; - -// https://stackoverflow.com/a/70890101 - -const ClockStart = genericMemo( - (props: { - dimensions: ListGroupDimensions; - inspectingTimes: number; - }) => { - props.dimensions.inspector.startCollection(); - return null; - } -); -const ClockEnd = genericMemo( - (props: { - dimensions: ListGroupDimensions; - inspectingTimes: number; - }) => { - props.dimensions.inspector.terminateCollection(); - return null; - } -); +import { ClockStart, ClockEnd } from '../common/clock'; +import { + RecycleContentItemWrapper, + SpaceRendererComponent, +} from './CompatComponent'; +import CompatListItem from './CompatListItem'; const ListGroup = ( props: ListGroupProps @@ -49,13 +32,9 @@ const ListGroup = ( initialNumToRender, persistanceIndices, scrollComponentContext, - scrollComponentUseMeasureLayout, ...rest } = props; - // @ts-ignore - // const { scrollEventHelper, getScrollHelper } = useContext( - // scrollComponentContext - // ); + const layoutRef = useRef<{ x: number; y: number; @@ -74,21 +53,6 @@ const ListGroup = ( } }, []); - // const measureLayout = useCallback( - // (x: number, y: number, width: number, height: number) => { - // layoutRef.current = { x, y, width, height }; - // }, - // [] - // ); - - // const scrollMetricsRef = useRef(); - - // const scrollHelper = getScrollHelper(); - - // const { handler, layoutHandler } = scrollComponentUseMeasureLayout(viewRef, { - // onMeasureLayout: measureLayout, - // }); - const getContainerLayout = useCallback(() => layoutRef.current!, []); const listGroupDimensions = useMemo( () => @@ -102,7 +66,6 @@ const ListGroup = ( onViewableItemsChanged, viewabilityConfigCallbackPairs, canIUseRIC: true, - // canIUseRIC: Platform.OS !== 'ios', }), [] ); @@ -121,37 +84,6 @@ const ListGroup = ( [] ); - // useEffect( - // () => - // scrollEventHelper.subscribeEventHandler('onContentSizeChange', () => { - // if (typeof handler === 'function') { - // handler(); - // } - // const scrollMetrics = scrollHelper.getScrollMetrics(); - // if (scrollMetrics !== scrollMetricsRef.current) { - // listGroupDimensions.updateScrollMetrics( - // scrollHelper.getScrollMetrics() - // ); - // scrollMetricsRef.current = scrollMetrics; - // } - // }), - // [] - // ); - - // useEffect( - // () => - // scrollEventHelper.subscribeEventHandler('onScroll', () => { - // const scrollMetrics = scrollHelper.getScrollMetrics(); - // if (scrollMetrics !== scrollMetricsRef.current) { - // listGroupDimensions.updateScrollMetrics( - // scrollHelper.getScrollMetrics() - // ); - // scrollMetricsRef.current = scrollMetrics; - // } - // }), - // [] - // ); - useEffect(() => { const scrollTracker = new ScrollTracker({ domNode: listRef.current!, @@ -170,24 +102,6 @@ const ListGroup = ( return () => scrollTracker.dispose(); }, []); - // useEffect( - // () => - // scrollEventHelper.subscribeEventHandler('onMomentumScrollEnd', () => { - // const scrollMetrics = scrollHelper.getScrollMetrics(); - // if (scrollMetrics !== scrollMetricsRef.current) { - // listGroupDimensions.updateScrollMetrics( - // scrollHelper.getScrollMetrics() - // ); - // scrollMetricsRef.current = scrollMetrics; - // } - // }), - // [] - // ); - - // useEffect(() => { - // listGroupDimensions.updateScrollMetrics(scrollHelper.getScrollMetrics()); - // }, []); - const [state, setState] = useState(() => ({ ...listGroupDimensions.inspector.getAPI(), listGroupDimensions, @@ -212,8 +126,10 @@ const ListGroup = ( {children} id={id} + ListItemWrapper={CompatListItem} listGroupDimensions={listGroupDimensions} - scrollComponentUseMeasureLayout={scrollComponentUseMeasureLayout} + RecycleContentItemWrapper={RecycleContentItemWrapper} + SpaceRendererComponent={SpaceRendererComponent} /> ( - props: PropsWithChildren> -) => { - const { - style: _style = {}, - children, - onLayout, - forwardRef, - - dimensions, - containerKey, - CellRendererComponent, - setMeasureLayoutHandler, - onMeasureLayout: _onMeasureLayout, - measureLayoutHandlerOnDemand, - getMetaOnViewableItemsChanged, - scrollComponentUseMeasureLayout, - - itemMeta, - ...rest - } = props; - const containerStyle = useMemo(() => ({ ..._style, elevation: 0 }), [_style]); - - const defaultRef = useRef(null); - const viewRef = forwardRef || defaultRef; - - const itemMetaRef = useRef(itemMeta); - - const layoutHandler = useCallback(() => { - // @ts-ignore - const rect = viewRef.current.getBoundingClientRect(); - if (rect) { - const { x, y, width, height } = rect; - itemMetaRef.current - .getOwner() - .setKeyItemLayout(itemMetaRef.current.getKey(), { - x, - y, - width, - height, - }); - } - }, []); - - useEffect(() => { - layoutHandler(); - }, []); - - // const onMeasureLayout = useCallback( - // (x: number, y: number, width: number, height: number) => { - // if (typeof _onMeasureLayout === 'function') { - // _onMeasureLayout(x, y, width, height); - // } - // const layout = itemMetaRef.current?.getLayout(); - // const nextLayout = { x, y, width, height }; - - // if (!layout || !shallowEqual(nextLayout, layout)) { - // itemMetaRef.current - // .getOwner() - // .setKeyItemLayout(itemMetaRef.current.getKey(), { - // x, - // y, - // width, - // height, - // }); - // } - // }, - // [] - // ); - - // const getCurrentKey = useCallback(() => itemMetaRef.current.getKey(), []); - - // @ts-ignore - // const { handler, layoutHandler } = scrollComponentUseMeasureLayout(viewRef, { - // onLayout, - // getCurrentKey, - // isIntervalTreeItem: true, - // onMeasureLayout, - // }); - - // note!!!!: has a condition, viewableItemHelperKey not change but itemMeta change.. - // reuse position with same data source.. - useEffect(() => { - // ignore first time - if (itemMetaRef.current !== itemMeta) { - itemMetaRef.current = itemMeta; - - // isApproximateLayout is true should trigger calculate layout again. - if ( - itemMetaRef.current && - (!itemMetaRef.current?.getLayout() || - itemMetaRef.current.isApproximateLayout) - ) { - // setTimeout(() => handler(), 0); - setTimeout(() => layoutHandler(), 0); - } - } - }, [itemMeta]); - - // useEffect(() => { - // if (typeof setMeasureLayoutHandler === 'function') - // setMeasureLayoutHandler(handler); - // }, []); - - const RenderComponent = useMemo( - () => CellRendererComponent || 'div', - [CellRendererComponent] - ); - - // TODO: temp fix - // Warning: Function components cannot be given refs. Attempts to - // access this ref will fail. Did you mean to use React.forwardRef()? - const refProps = useMemo(() => { - if (CellRendererComponent) - return { - cellKey: itemMeta.getKey(), - }; - return { ref: viewRef }; - }, [itemMeta]); - - return ( - - {children} - {/* - {props.itemMeta.getIndexInfo()?.indexInGroup} - */} - - ); -}; - -// generic forwardRef https://gist.github.com/IrvingArmenta/a6d7fc76ed538697ad18b7f074accdde -// https://www.totaltypescript.com/forwardref-with-generic-components -export default React.forwardRef( - ( - props: ListItemProps, - ref: ForwardedRef - ) => { - return ; - } -) as ( - props: ListItemProps, - ref: ForwardedRef -) => ReturnType; diff --git a/ui/group/src/react/PortalContent.tsx b/ui/group/src/react/PortalContent.tsx deleted file mode 100644 index b8dc2a2c..00000000 --- a/ui/group/src/react/PortalContent.tsx +++ /dev/null @@ -1,174 +0,0 @@ -import React, { - useEffect, - useMemo, - memo, - useState, - PropsWithChildren, - CSSProperties, -} from 'react'; -import { GenericItemT, RecycleStateResult } from '@infinite-list/data-model'; -import { - PortalContextProps, - GroupRecycleContentProps, - GroupSpaceContentProps, - genericMemo, -} from './types'; - -import GroupListItemImpl from './GroupListItemImpl'; - -// @ts-ignore -const RecycleContentItem = (props) => { - const { - listKey, - itemMeta, - dimensions, - item, - offset, - containerKey, - horizontal, - scrollComponentUseMeasureLayout, - } = props; - - const containerStyle: CSSProperties = useMemo( - () => - horizontal - ? { - position: 'absolute', - left: offset, - top: 0, - bottom: 0, - } - : { - position: 'absolute', - top: offset, - left: 0, - right: 0, - }, - [offset] - ); - - return ( -
- -
- ); -}; - -const MemoedRecycleContentItem = memo(RecycleContentItem); - -const RecycleContent = (props: GroupRecycleContentProps) => { - const { state, ...rest } = props; - return ( - <> - {/* @ts-ignore */} - {state.map((stateResult) => { - const { key, itemMeta, ...stateResultRest } = stateResult; - return ( - - ); - })} - - ); -}; -const MemoedRecycleContent = memo< - PropsWithChildren> ->(RecycleContent, (prev, next) => prev.state === next.state); - -const MemoedSpaceContent = genericMemo( - (props: GroupSpaceContentProps) => { - const { state, listKey, dimensions, scrollComponentUseMeasureLayout } = - props; - - return ( - <> - {state.map((stateResult, index) => { - const { isSpace, key, item, length, isSticky, itemMeta } = - stateResult; - return isSpace ? ( -
- ) : ( - - item={item!} - key={key} - // @ts-ignore - listKey={listKey} - itemMeta={itemMeta!} - // @ts-ignore - renderItem={itemMeta!.getOwner().renderItem} - // @ts-ignore - teleportItemProps={itemMeta!.getOwner().teleportItemProps} - dimensions={dimensions} - scrollComponentUseMeasureLayout={scrollComponentUseMeasureLayout} - /> - ); - })} - - ); - }, - (prev, next) => prev.state === next.state -); -// const MemoedSpaceContent = genericMemo( -// SpaceContent: PropsWithChildren>, -// (prev, next) => prev.state === next.state -// ); - -const PortalContent = ( - props: PropsWithChildren> -) => { - const { listGroupDimensions, id, scrollComponentUseMeasureLayout } = props; - const [store, setStore] = useState( - () => - listGroupDimensions.getStateResult() as any as RecycleStateResult - ); - - useEffect( - () => - listGroupDimensions.addStateListener((newState) => { - setStore(newState as any as RecycleStateResult); - // setTimeout(() => setStore(newState as any as RecycleStateResult)); - }), - [] - ); - - return ( - <> - - listKey={id} - ownerId={id} - state={store.spaceState} - dimensions={listGroupDimensions} - scrollComponentUseMeasureLayout={scrollComponentUseMeasureLayout} - /> - - - - ); -}; - -export default genericMemo(PortalContent); diff --git a/ui/group/src/react/index.ts b/ui/group/src/react/index.ts index d4856293..c8389c32 100644 --- a/ui/group/src/react/index.ts +++ b/ui/group/src/react/index.ts @@ -1,4 +1,4 @@ export { default as ListGroup } from './ListGroup'; -export { default as GroupList } from './GroupList'; -export { default as ListGroupContext } from './context'; -export { default as GroupListItem } from './GroupListItem'; +export { default as GroupList } from '../common/GroupList'; +export { default as ListGroupContext } from '../common/context'; +export { default as GroupListItem } from '../common/GroupDimensionItem'; diff --git a/ui/group/src/react/types/GroupList.types.ts b/ui/group/src/react/types/GroupList.types.ts deleted file mode 100644 index 8f36676b..00000000 --- a/ui/group/src/react/types/GroupList.types.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { - ListDimensionsModelProps, - OnEndReachedHelperProps, -} from '@infinite-list/data-model'; -import { DefaultItemT, TeleportItemProps } from './ListItem.types'; -import { RenderItem } from './GroupListItemImpl.types'; - -export interface GroupListProps - extends ListDimensionsModelProps, - OnEndReachedHelperProps { - renderItem: RenderItem; - teleportItemProps?: TeleportItemProps; -} diff --git a/ui/group/src/react/types/GroupListItemImpl.types.ts b/ui/group/src/react/types/GroupListItemImpl.types.ts deleted file mode 100644 index fd76f929..00000000 --- a/ui/group/src/react/types/GroupListItemImpl.types.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { ItemMeta } from '@infinite-list/data-model'; -import { ScrollComponentUseMeasureLayout } from './ListGroup.types'; - -import { ListItemProps, DefaultItemT } from './ListItem.types'; -export type RenderItemInfo = { - item: ItemT; - itemMeta: ItemMeta; -}; - -export type RenderItem = ( - info: RenderItemInfo -) => React.ReactElement | null; -export interface GroupListItemImplProps - extends ListItemProps { - renderItem: RenderItem; - scrollComponentUseMeasureLayout?: ScrollComponentUseMeasureLayout; -} diff --git a/ui/group/src/react/types/ListGroup.types.ts b/ui/group/src/react/types/ListGroup.types.ts index 77ebe2b7..2a5d8fcf 100644 --- a/ui/group/src/react/types/ListGroup.types.ts +++ b/ui/group/src/react/types/ListGroup.types.ts @@ -3,8 +3,7 @@ import { ViewabilityConfig, OnViewableItemsChanged, ViewabilityConfigCallbackPairs, - GenericItemT, -} from '@infinite-list/data-model'; +} from '@infinite-list/viewable'; import { ComponentType, PropsWithChildren, MutableRefObject } from 'react'; import { View, LayoutChangeEvent } from 'react-native'; @@ -21,8 +20,8 @@ export type ScrollComponentUseMeasureLayout = ( layoutHandler: (e: LayoutChangeEvent) => void; }; -export type ListGroupProps = PropsWithChildren<{ - GroupListSeparatorComponent?: ComponentType | null | undefined; +export type ListGroupProps = PropsWithChildren<{ + GroupListSeparatorComponent?: ComponentType | null | undefined; id: string; onViewableItemsChanged?: OnViewableItemsChanged; viewabilityConfig?: ViewabilityConfig; @@ -33,7 +32,6 @@ export type ListGroupProps = PropsWithChildren<{ onRenderFinished?: () => void; persistanceIndices?: number[]; - scrollComponentContext?: any; - scrollComponentUseMeasureLayout?: ScrollComponentUseMeasureLayout; + scrollComponentContext: any; }> & OnEndReachedHelperProps; diff --git a/ui/group/src/react/types/ListItem.types.ts b/ui/group/src/react/types/ListItem.types.ts deleted file mode 100644 index f0aa763f..00000000 --- a/ui/group/src/react/types/ListItem.types.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { - ItemMeta, - ListGroupDimensions, - ListDimensions, - GenericItemT, -} from '@infinite-list/data-model'; -import React, { CSSProperties, ForwardedRef } from 'react'; -import { LayoutChangeEvent } from 'react-native'; -import { ScrollComponentUseMeasureLayout } from './ListGroup.types'; - -type OnLayout = (event: LayoutChangeEvent) => void; - -export type DefaultItemT = GenericItemT; - -type OnMeasureLayout = - | ((x: number, y: number, width: number, height: number) => void) - | null; - -type SetMeasureLayoutHandler = (handler: Function) => void; -type GetMetaOnViewableItemsChanged = () => { - [key: string]: any; -}; - -export type TeleportItemProps = - | ((opts: { index: number; item: any }) => { - [key: string]: any; - }) - | undefined; - -export interface ListItemProps { - item: ItemT; - - // listKey: string; - itemKey: string; - - itemMeta: ItemMeta; - - dimensions: ListGroupDimensions | ListDimensions; - - withWrapper?: boolean; - onLayout?: OnLayout; - forwardRef?: ForwardedRef; - children?: React.ReactNode | undefined; - - onMeasureLayout?: OnMeasureLayout; - - measureLayoutHandlerOnDemand?: OnMeasureLayout; - - style?: CSSProperties; - - teleportItemProps?: TeleportItemProps; - - setMeasureLayoutHandler?: SetMeasureLayoutHandler; - - getMetaOnViewableItemsChanged?: GetMetaOnViewableItemsChanged; - - CellRendererComponent?: React.ComponentType | undefined; - - containerKey?: string; - - scrollComponentUseMeasureLayout?: ScrollComponentUseMeasureLayout; -} diff --git a/ui/group/src/react/types/PortalContext.types.ts b/ui/group/src/react/types/PortalContext.types.ts index 7f360400..c7ee688f 100644 --- a/ui/group/src/react/types/PortalContext.types.ts +++ b/ui/group/src/react/types/PortalContext.types.ts @@ -1,32 +1,7 @@ import { - GenericItemT, - ListStateResult, - SpaceStateResult, - ListGroupDimensions, -} from '@infinite-list/data-model'; -import { ScrollComponentUseMeasureLayout } from './ListGroup.types'; + PortalContextProps, + GroupSpaceContentProps, + GroupRecycleContentProps, +} from '../../types/PortalContext.types'; -export type PortalContextProps = { - id: string; - listGroupDimensions: ListGroupDimensions; - scrollComponentUseMeasureLayout?: ScrollComponentUseMeasureLayout; -}; - -export type GroupSpaceContentProps = - { - state: SpaceStateResult; - listKey: string; - ownerId: string; - dimensions: ListGroupDimensions; - scrollComponentUseMeasureLayout?: ScrollComponentUseMeasureLayout; - }; - -export type GroupRecycleContentProps< - ItemT extends GenericItemT = GenericItemT -> = { - state: ListStateResult; - listKey: string; - ownerId: string; - dimensions: ListGroupDimensions; - scrollComponentUseMeasureLayout?: ScrollComponentUseMeasureLayout; -}; +export { PortalContextProps, GroupRecycleContentProps, GroupSpaceContentProps }; diff --git a/ui/group/src/react/types/compatListItem.ts b/ui/group/src/react/types/compatListItem.ts new file mode 100644 index 00000000..70f413c1 --- /dev/null +++ b/ui/group/src/react/types/compatListItem.ts @@ -0,0 +1,10 @@ +import { GenericItemT, ItemLayout } from '@infinite-list/types'; +import { ListItemProps } from '../../types'; +import { CSSProperties } from 'react'; + +export interface CompatListItemProps + extends Omit, 'ListItemWrapper'> { + setDimensionItemLayout(key: string, values: ItemLayout): void; + addItemChangedListener(fn: Function): void; + style?: CSSProperties; +} diff --git a/ui/group/src/react/types/index.ts b/ui/group/src/react/types/index.ts index 0da12b9d..d082e305 100644 --- a/ui/group/src/react/types/index.ts +++ b/ui/group/src/react/types/index.ts @@ -1,15 +1,3 @@ -import React, { ComponentProps, ComponentType } from 'react'; - -export * from './ListItem.types'; -export * from './GroupListItemImpl.types'; -export * from './PortalContext.types'; export * from './ListGroup.types'; -export * from './GroupList.types'; - -export const genericMemo: >( - component: T, - propsAreEqual?: ( - prevProps: Readonly>, - nextProps: Readonly> - ) => boolean -) => T = React.memo; +export * from './PortalContext.types'; +export * from './compatListItem'; diff --git a/ui/group/src/types/GroupDimensionItem.types.ts b/ui/group/src/types/GroupDimensionItem.types.ts new file mode 100644 index 00000000..ee6ff004 --- /dev/null +++ b/ui/group/src/types/GroupDimensionItem.types.ts @@ -0,0 +1,10 @@ +import { GenericItemT } from '@infinite-list/types'; +import { PropsWithChildren } from 'react'; +import { DimensionProps } from '@infinite-list/dimension'; + +export type GroupDimensionItemProps = + PropsWithChildren< + DimensionProps & { + itemKey: string; + } + >; diff --git a/ui/group/src/types/GroupList.types.ts b/ui/group/src/types/GroupList.types.ts index a322cadd..431df508 100644 --- a/ui/group/src/types/GroupList.types.ts +++ b/ui/group/src/types/GroupList.types.ts @@ -1,9 +1,11 @@ -import { - ListDimensionsModelProps, - OnEndReachedHelperProps, -} from '@infinite-list/data-model'; -import { DefaultItemT } from './ListItem.types'; +import { ListDimensionsModelProps } from '@infinite-list/dimensions-model'; +import { OnEndReachedHelperProps } from '@infinite-list/viewable'; +import { DefaultItemT, TeleportItemProps } from './ListItem.types'; +import { RenderItem } from './GroupListItemImpl.types'; export interface GroupListProps extends ListDimensionsModelProps, - OnEndReachedHelperProps {} + OnEndReachedHelperProps { + renderItem: RenderItem; + teleportItemProps?: TeleportItemProps; +} diff --git a/ui/group/src/types/GroupListItemImpl.types.ts b/ui/group/src/types/GroupListItemImpl.types.ts index 9a6ba3cd..d4014743 100644 --- a/ui/group/src/types/GroupListItemImpl.types.ts +++ b/ui/group/src/types/GroupListItemImpl.types.ts @@ -1,7 +1,7 @@ -import { ItemMeta } from '@infinite-list/data-model'; -import { ScrollComponentUseMeasureLayout } from './ListGroup.types'; - +import { ItemMeta } from '@infinite-list/item-meta'; +import { ListItemWrapper } from './ListItem.types'; import { ListItemProps, DefaultItemT } from './ListItem.types'; + export type RenderItemInfo = { item: ItemT; itemMeta: ItemMeta; @@ -13,5 +13,6 @@ export type RenderItem = ( export interface GroupListItemImplProps extends ListItemProps { renderItem: RenderItem; - scrollComponentUseMeasureLayout: ScrollComponentUseMeasureLayout; + recycleItemContainerKey: string; + ListItemWrapper: ListItemWrapper; } diff --git a/ui/group/src/types/ListGroup.types.ts b/ui/group/src/types/ListGroup.types.ts index fdb3d985..43ee06e9 100644 --- a/ui/group/src/types/ListGroup.types.ts +++ b/ui/group/src/types/ListGroup.types.ts @@ -3,26 +3,44 @@ import { ViewabilityConfig, OnViewableItemsChanged, ViewabilityConfigCallbackPairs, -} from '@infinite-list/data-model'; -import { ComponentType, PropsWithChildren, MutableRefObject } from 'react'; -import { View, LayoutChangeEvent } from 'react-native'; + GenericItemT, +} from '@infinite-list/viewable'; +import { ComponentType, PropsWithChildren } from 'react'; +// import { View, LayoutChangeEvent } from 'react-native'; -export type ScrollComponentUseMeasureLayout = ( - itemRef: MutableRefObject, - options: { - onLayout?: Function; - getCurrentKey?: () => string; - isIntervalTreeItem?: boolean; - onMeasureLayout?: Function; - } -) => { - handler: Function; - layoutHandler: (e: LayoutChangeEvent) => void; -}; +// export type ScrollComponentUseMeasureLayout = ( +// itemRef: MutableRefObject, +// options: { +// onLayout?: Function; +// getCurrentKey?: () => string; +// isIntervalTreeItem?: boolean; +// onMeasureLayout?: Function; +// } +// ) => { +// handler: Function; +// layoutHandler: (e: LayoutChangeEvent) => void; +// }; -export type ListGroupProps = PropsWithChildren<{ - GroupListSeparatorComponent?: ComponentType | null | undefined; +// export type ListGroupProps = PropsWithChildren<{ +// GroupListSeparatorComponent?: ComponentType | null | undefined; +// id: string; +// onViewableItemsChanged?: OnViewableItemsChanged; +// viewabilityConfig?: ViewabilityConfig; +// viewabilityConfigCallbackPairs?: ViewabilityConfigCallbackPairs; +// initialNumToRender?: number; +// windowSize?: number; +// maxToRenderPerBatch?: number; +// onRenderFinished?: () => void; +// persistanceIndices?: number[]; + +// scrollComponentContext: any; +// scrollComponentUseMeasureLayout: ScrollComponentUseMeasureLayout; +// }> & +// OnEndReachedHelperProps; +export type ListGroupProps = PropsWithChildren<{ + GroupListSeparatorComponent?: ComponentType | null | undefined; id: string; + horizontal?: boolean; onViewableItemsChanged?: OnViewableItemsChanged; viewabilityConfig?: ViewabilityConfig; viewabilityConfigCallbackPairs?: ViewabilityConfigCallbackPairs; @@ -32,7 +50,7 @@ export type ListGroupProps = PropsWithChildren<{ onRenderFinished?: () => void; persistanceIndices?: number[]; - scrollComponentContext: any; - scrollComponentUseMeasureLayout: ScrollComponentUseMeasureLayout; + scrollComponentContext?: any; + // scrollComponentUseMeasureLayout?: ScrollComponentUseMeasureLayout; }> & OnEndReachedHelperProps; diff --git a/ui/group/src/types/ListItem.types.ts b/ui/group/src/types/ListItem.types.ts index a1b5a943..2b180c41 100644 --- a/ui/group/src/types/ListItem.types.ts +++ b/ui/group/src/types/ListItem.types.ts @@ -1,64 +1,52 @@ -import { - ItemMeta, - ListGroupDimensions, - ListDimensions, - GenericItemT, -} from '@infinite-list/data-model'; -import React, { ForwardedRef } from 'react'; -import { ViewStyle, LayoutChangeEvent } from 'react-native'; -import { ScrollComponentUseMeasureLayout } from './ListGroup.types'; +import { ItemMeta, GenericItemT } from '@infinite-list/item-meta'; +import { ListGroupDimensions } from '@infinite-list/group-dimensions'; +import { ListDimensions } from '@infinite-list/list-dimensions'; +import React, { ForwardedRef, FC, PropsWithChildren } from 'react'; +// import { ViewStyle, LayoutChangeEvent } from 'react-native'; +import { ItemLayout } from '@infinite-list/types'; -type OnLayout = (event: LayoutChangeEvent) => void; +// type OnLayout = (event: LayoutChangeEvent) => void; export type DefaultItemT = GenericItemT; -// export type DefaultItemT = { -// [key: string]: any; -// }; type OnMeasureLayout = | ((x: number, y: number, width: number, height: number) => void) | null; -type SetMeasureLayoutHandler = (handler: Function) => void; -type GetMetaOnViewableItemsChanged = () => { - [key: string]: any; -}; +// type SetMeasureLayoutHandler = (handler: Function) => void; +// type GetMetaOnViewableItemsChanged = () => { +// [key: string]: any; +// }; -export type TeleportItemProps = - | ((opts: { index: number; item: any }) => { +export type TeleportItemProps = + | ((opts: { index: number; item: ItemT }) => { [key: string]: any; }) | undefined; -export interface ListItemProps { +export interface ListItemProps { item: ItemT; + itemKey: string; + itemMeta: ItemMeta; + dimensions: ListGroupDimensions | ListDimensions; - listKey: string; - - itemMeta: ItemMeta; - - dimensions: ListGroupDimensions | ListDimensions; - - withWrapper?: boolean; - onLayout?: OnLayout; + // onLayout?: OnLayout; forwardRef?: ForwardedRef; children?: React.ReactNode | undefined; onMeasureLayout?: OnMeasureLayout; - - measureLayoutHandlerOnDemand?: OnMeasureLayout; - - style?: ViewStyle; - - teleportItemProps?: TeleportItemProps; - - setMeasureLayoutHandler?: SetMeasureLayoutHandler; - - getMetaOnViewableItemsChanged?: GetMetaOnViewableItemsChanged; - + teleportItemProps?: TeleportItemProps; CellRendererComponent?: React.ComponentType | undefined; + ListItemWrapper: ListItemWrapper; + recycleItemContainerKey: string; +} - containerKey?: string; - - scrollComponentUseMeasureLayout: ScrollComponentUseMeasureLayout; +export interface CompatListItemProps + extends Omit, 'ListItemWrapper'> { + setDimensionItemLayout(key: string, values: ItemLayout): void; + addItemChangedListener(fn: Function): void; } + +export type ListItemWrapper = FC< + PropsWithChildren> +>; diff --git a/ui/group/src/types/PortalContext.types.ts b/ui/group/src/types/PortalContext.types.ts index 70732685..5acd1156 100644 --- a/ui/group/src/types/PortalContext.types.ts +++ b/ui/group/src/types/PortalContext.types.ts @@ -1,15 +1,37 @@ import { GenericItemT, - ListStateResult, + RecycleRecycleState, SpaceStateResult, - ListGroupDimensions, -} from '@infinite-list/data-model'; -import { ScrollComponentUseMeasureLayout } from './ListGroup.types'; +} from '@infinite-list/strategies'; +import { PropsWithChildren, FC } from 'react'; +import { ListGroupDimensions } from '@infinite-list/group-dimensions'; +import { ItemMeta } from '@infinite-list/item-meta'; +import { RenderItem } from './GroupListItemImpl.types'; +import { TeleportItemProps, ListItemWrapper } from './ListItem.types'; -export type PortalContextProps = { +export type ExtraInfo = { + renderItem: RenderItem; + teleportItemProps: TeleportItemProps; +}; + +export type RecycleContentItemWrapper = FC< + PropsWithChildren<{ + style?: CompatStyle; + }> +>; +export type SpaceRendererComponent = FC< + PropsWithChildren<{ + style?: CompatStyle; + }> +>; + +export type PortalContextProps = { id: string; - listGroupDimensions: ListGroupDimensions; - scrollComponentUseMeasureLayout: ScrollComponentUseMeasureLayout; + horizontal?: boolean; + listGroupDimensions: ListGroupDimensions; + RecycleContentItemWrapper: RecycleContentItemWrapper; + SpaceRendererComponent: SpaceRendererComponent; + ListItemWrapper: ListItemWrapper; }; export type GroupSpaceContentProps = @@ -17,16 +39,40 @@ export type GroupSpaceContentProps = state: SpaceStateResult; listKey: string; ownerId: string; - dimensions: ListGroupDimensions; - scrollComponentUseMeasureLayout: ScrollComponentUseMeasureLayout; + dimensions: ListGroupDimensions; + ListItemWrapper: ListItemWrapper; + SpaceRendererComponent: SpaceRendererComponent; }; export type GroupRecycleContentProps< ItemT extends GenericItemT = GenericItemT > = { - state: ListStateResult; + state: RecycleRecycleState; listKey: string; ownerId: string; - dimensions: ListGroupDimensions; - scrollComponentUseMeasureLayout: ScrollComponentUseMeasureLayout; + dimensions: ListGroupDimensions; + RecycleContentItemWrapper: RecycleContentItemWrapper; + ListItemWrapper: ListItemWrapper; +}; + +export type TRecycleContentItem = { + listKey: string; + itemMeta: ItemMeta; + item: ItemT; + offset: number; + horizontal?: boolean; + recycleItemContainerKey: string; + renderItem: RenderItem; + dimensions: ListGroupDimensions; + RecycleContentItemWrapper: RecycleContentItemWrapper; + ListItemWrapper: ListItemWrapper; +}; + +export type CompatStyle = { + position?: string; + top?: number; + right?: number; + bottom?: number; + left?: number; + height?: number; }; diff --git a/ui/group/src/types/index.ts b/ui/group/src/types/index.ts index 569398cd..7c2ca9e4 100644 --- a/ui/group/src/types/index.ts +++ b/ui/group/src/types/index.ts @@ -3,3 +3,4 @@ export * from './GroupListItemImpl.types'; export * from './PortalContext.types'; export * from './ListGroup.types'; export * from './GroupList.types'; +export * from './GroupDimensionItem.types'; diff --git a/ui/list/package.json b/ui/list/package.json index e41b54b9..2a961c10 100644 --- a/ui/list/package.json +++ b/ui/list/package.json @@ -6,7 +6,7 @@ "react-native": "0.74.1" }, "dependencies": { - "@infinite-list/data-model": "workspace:*", + "@infinite-list/list-dimensions": "workspace:*", "@infinite-list/scroller": "workspace:*" }, "exports": { diff --git a/ui/list/src/index.ts b/ui/list/src/index.ts deleted file mode 100644 index b2a3799d..00000000 --- a/ui/list/src/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export default () => { - // -}; diff --git a/ui/list/src/react-native/List.tsx b/ui/list/src/react-native/List.tsx index c5348e85..d315ec7d 100644 --- a/ui/list/src/react-native/List.tsx +++ b/ui/list/src/react-native/List.tsx @@ -1,4 +1,11 @@ -import { useEffect, useMemo, useState, useRef, useContext } from 'react'; +import { + useEffect, + useMemo, + useState, + useRef, + useContext, + useCallback, +} from 'react'; import { View, ViewStyle, @@ -6,11 +13,9 @@ import { NativeScrollEvent, } from 'react-native'; import { ListProps } from './types'; -import { - ListDimensions, - GenericItemT, - RecycleStateResult, -} from '@infinite-list/data-model'; +import { ListDimensions } from '@infinite-list/list-dimensions'; +import { RecycleStateResult } from '@infinite-list/strategies'; +import { GenericItemT } from '@infinite-list/item-meta'; import RecycleItem from './RecycleItem'; import SpaceItem from './SpaceItem'; import { ScrollViewContext } from '@infinite-list/scroller/react-native'; @@ -53,80 +58,69 @@ const List = (props: ListProps) => { const offsetRef = useRef(0); const tsRef = useRef(Date.now()); - useEffect(() => { - // scrollHandlerRef.current = new ScrollTracker({ - // domNode: listRef.current!, - // onScroll: () => { - // listModel.updateScrollMetrics( - // scrollHandlerRef.current?.getScrollMetrics() - // ); - // }, - // }); - - // scrollHandlerRef.current.addEventListeners(); - - return contextValues + /** + * Trigger list render after initialization or content will be blank + */ + const onLayoutHandler = useCallback(() => { + const scrollMetrics = contextValues .getScrollHelper() - .addListener( - 'onScroll', - (event: NativeSyntheticEvent) => { - const scrollMetrics = event.nativeEvent; - const timestamp = Date.now(); - const offset = scrollMetrics.contentOffset.y; - - const dOffset = offset - offsetRef.current; - const dt = timestamp - tsRef.current; - const velocity = dOffset / dt; - - offsetRef.current = offset; - tsRef.current = timestamp; - - listModel.updateScrollMetrics({ - offset, - visibleLength: scrollMetrics.layoutMeasurement.height, - contentLength: scrollMetrics.contentSize.height, - velocity, - }); - } - ); - - // @ts-ignore - // props.events.addEventListener( - // 'onScroll', - // (event: NativeSyntheticEvent) => { - // const scrollMetrics = event.nativeEvent; - // const timestamp = Date.now(); - // const offset = scrollMetrics.contentOffset.y; - - // const dOffset = offset - offsetRef.current; - // const dt = timestamp - tsRef.current; - // const velocity = dOffset / dt; - - // offsetRef.current = offset; - // tsRef.current = timestamp; - - // listModel.updateScrollMetrics({ - // offset, - // visibleLength: scrollMetrics.layoutMeasurement.height, - // contentLength: scrollMetrics.contentSize.height, - // velocity, - // }); - // } - // ); - - // listModel.updateScrollMetrics({ - // offset: 0, - // visibleLength: 900, - // contentLength: 0, - // }); - - // return () => scrollHandlerRef.current?.dispose(); + .getScrollEventMetrics(); + const timestamp = Date.now(); + const offset = scrollMetrics.contentOffset.y; + + const dOffset = offset - offsetRef.current; + const dt = timestamp - tsRef.current; + const velocity = dOffset / dt; + + offsetRef.current = offset; + tsRef.current = timestamp; + + listModel.updateScrollMetrics({ + offset, + visibleLength: scrollMetrics.layoutMeasurement.height, + contentLength: scrollMetrics.contentSize.height, + velocity, + }); }, []); + useEffect( + () => + contextValues + .getScrollHelper() + .addListener( + 'onScroll', + (event: NativeSyntheticEvent) => { + const scrollMetrics = event.nativeEvent; + const timestamp = Date.now(); + const offset = scrollMetrics.contentOffset.y; + + const dOffset = offset - offsetRef.current; + const dt = timestamp - tsRef.current; + const velocity = dOffset / dt; + + offsetRef.current = offset; + tsRef.current = timestamp; + + listModel.updateScrollMetrics({ + offset, + visibleLength: scrollMetrics.layoutMeasurement.height, + contentLength: scrollMetrics.contentSize.height, + velocity, + }); + } + ), + [] + ); + if (recycleEnabled) { const nextState = state as RecycleStateResult; return ( - + {nextState.recycleState.map((data) => ( ( @@ -10,7 +10,7 @@ const RecycleItem = ( const itemRef = useRef(null); const { item, key, itemMeta, offset } = data; const style: ViewStyle = useMemo(() => { - if (offset) + if (offset != null) return { position: 'absolute', top: offset, diff --git a/ui/list/src/react-native/SpaceItem.tsx b/ui/list/src/react-native/SpaceItem.tsx index 7bf37677..37417837 100644 --- a/ui/list/src/react-native/SpaceItem.tsx +++ b/ui/list/src/react-native/SpaceItem.tsx @@ -1,6 +1,6 @@ import { useEffect, useMemo, useRef } from 'react'; import { View } from 'react-native'; -import { GenericItemT } from '@infinite-list/data-model'; +import { GenericItemT } from '@infinite-list/types'; import { SpaceItemProps } from './types'; const Item = (props: SpaceItemProps) => { diff --git a/ui/list/src/react-native/types/list.ts b/ui/list/src/react-native/types/list.ts index 8a6314c7..0f67149b 100644 --- a/ui/list/src/react-native/types/list.ts +++ b/ui/list/src/react-native/types/list.ts @@ -1,50 +1,25 @@ -import { - GenericItemT, - ListDimensions, - RecycleStateToken, - SpaceStateToken, - ListDimensionsModelProps, -} from '@infinite-list/data-model'; import { RefObject } from 'react'; -import { ItemMeta } from '@infinite-list/data-model'; import { ScrollView, View } from 'react-native'; - -export type RenderItemInfo = { - item: ItemT; - itemMeta: ItemMeta; -}; - -export type DefaultItemT = { - [key: string]: any; -}; - -export type RenderItem = ( - info: RenderItemInfo -) => React.ReactElement | null; +import { GenericItemT } from '@infinite-list/types'; +import { + ListProps as CommonListProps, + RecycleItemProps as CommonRecycleItemProps, + SpaceItemProps as CommonSpaceItemProps, +} from '../../types'; export type ContainerRef = RefObject; -export type ListProps = Omit< - ListDimensionsModelProps, - 'store' | 'container' -> & { - renderItem: RenderItem; - test: number | string | Function; - containerRef: ContainerRef; -}; +export type ListProps = + CommonListProps & { + containerRef: ContainerRef; + }; -export type RecycleItemProps = { - data: RecycleStateToken; - key: string; - renderItem: RenderItem; - dimensions: ListDimensions; - containerRef: ContainerRef; -}; +export type RecycleItemProps = + CommonRecycleItemProps & { + containerRef: ContainerRef; + }; -export type SpaceItemProps = { - data: SpaceStateToken; - key: string; - renderItem: RenderItem; - dimensions: ListDimensions; - containerRef: ContainerRef; -}; +export type SpaceItemProps = + CommonSpaceItemProps & { + containerRef: ContainerRef; + }; diff --git a/ui/list/src/react/List.tsx b/ui/list/src/react/List.tsx index 9d3c3b55..f7f3b863 100644 --- a/ui/list/src/react/List.tsx +++ b/ui/list/src/react/List.tsx @@ -1,10 +1,8 @@ import { useEffect, useMemo, useState, useRef, CSSProperties } from 'react'; +import { ListDimensions } from '@infinite-list/list-dimensions'; +import { RecycleStateResult } from '@infinite-list/strategies'; +import { GenericItemT } from '@infinite-list/item-meta'; import { ListProps } from '../types'; -import { - GenericItemT, - ListDimensions, - RecycleStateResult, -} from '@infinite-list/data-model'; import RecycleItem from './RecycleItem'; import SpaceItem from './SpaceItem'; import { ScrollTracker } from '@infinite-list/scroller/web'; diff --git a/ui/list/src/react/RecycleItem.tsx b/ui/list/src/react/RecycleItem.tsx index 01a9be84..7699fc9e 100644 --- a/ui/list/src/react/RecycleItem.tsx +++ b/ui/list/src/react/RecycleItem.tsx @@ -1,5 +1,5 @@ import { CSSProperties, useEffect, useMemo, useRef } from 'react'; -import { GenericItemT } from '@infinite-list/data-model'; +import { GenericItemT } from '@infinite-list/strategies'; import { RecycleItemProps } from '../types'; const RecycleItem = ( diff --git a/ui/list/src/react/SpaceItem.tsx b/ui/list/src/react/SpaceItem.tsx index 2e37a563..2a094b00 100644 --- a/ui/list/src/react/SpaceItem.tsx +++ b/ui/list/src/react/SpaceItem.tsx @@ -1,6 +1,6 @@ import { useEffect, useMemo, useRef } from 'react'; import { SpaceItemProps } from '../types'; -import { GenericItemT } from '@infinite-list/data-model'; +import { GenericItemT } from '@infinite-list/strategies'; const Item = (props: SpaceItemProps) => { const { data, dimensions, renderItem: RenderItem } = props; diff --git a/ui/list/src/types/list.ts b/ui/list/src/types/list.ts index 5d1aae14..6d21b135 100644 --- a/ui/list/src/types/list.ts +++ b/ui/list/src/types/list.ts @@ -1,15 +1,18 @@ -import { - GenericItemT, - ListDimensions, - RecycleStateToken, - SpaceStateToken, - ListDimensionsModelProps, -} from '@infinite-list/data-model'; - -import { ItemMeta } from '@infinite-list/data-model'; +import { GenericItemT } from '@infinite-list/types'; +import { ListDimensions } from '@infinite-list/list-dimensions'; +import { SpaceStateToken, RecycleStateToken } from '@infinite-list/strategies'; +import { ListDimensionsModelProps } from '@infinite-list/dimensions-model'; +import { ItemMeta } from '@infinite-list/item-meta'; +// import { IDefaultKeyExtra } from '@infinite-list/utils'; export type RenderItemInfo = { + /** + * @type ItemT generic type + */ item: ItemT; + /** + * @type itemMeta + */ itemMeta: ItemMeta; }; @@ -21,16 +24,59 @@ export type RenderItem = ( info: RenderItemInfo ) => React.ReactElement | null; -export type ListProps = Omit< - ListDimensionsModelProps, - 'store' | 'container' -> & { +export interface ListProps + extends Omit< + ListDimensionsModelProps, + 'store' | 'container' + // 'store' | 'container' | 'keyExtractor' + > { + /** + * @template ItemT the generic data item type + * @type {(info: { item: ItemT, itemMeta: ItemMeta }) => JSX} + * + * ItemMeta @see {@link ItemMeta} + */ renderItem: RenderItem; -}; + + // /** + // * @template ItemT the generic date item type + // * @type {( item: ItemPossibleT, index?: number ) => string } + // * + // * @param {number} index maybe removed in the future + // * + // * Used to extract a unique key for a given item at the specified index. Key is used for caching + // * and as the react key to track item re-ordering. The default extractor checks `item.key`, then + // * falls back to using the index, like React does. + // */ + // keyExtractor: IDefaultKeyExtra; +} +// export type ListProps = Omit< +// ListDimensionsModelProps, +// 'store' | 'container' | 'keyExtractor' +// > & { +// /** +// * @template ItemT the generic data item type +// * @type {(info: { item: ItemT, itemMeta: ItemMeta }) => JSX} +// * +// * ItemMeta @see {@link ItemMeta} +// */ +// renderItem: RenderItem; + +// /** +// * @template ItemT the generic date item type +// * @type {( item: ItemPossibleT, index?: number ) => string } +// * +// * @param {number} index maybe removed in the future +// * +// * Used to extract a unique key for a given item at the specified index. Key is used for caching +// * and as the react key to track item re-ordering. The default extractor checks `item.key`, then +// * falls back to using the index, like React does. +// */ +// keyExtractor: IDefaultKeyExtra; +// }; export type RecycleItemProps = { data: RecycleStateToken; - // key: string; renderItem: RenderItem; dimensions: ListDimensions; }; diff --git a/ui/list/tsconfig.json b/ui/list/tsconfig.json index 1e8549d5..a00834cb 100644 --- a/ui/list/tsconfig.json +++ b/ui/list/tsconfig.json @@ -3,11 +3,13 @@ "compilerOptions": { "jsx": "react-jsx", "allowJs": true, + "declaration": false, "esModuleInterop": true, "moduleResolution": "node", "allowSyntheticDefaultImports": true, "forceConsistentCasingInFileNames": true, "strict": true, + "removeComments": false, "noImplicitReturns": true, "noFallthroughCasesInSwitch": true }, diff --git a/ui/masonry/package.json b/ui/masonry/package.json index 1789ef8f..bd98a3ad 100644 --- a/ui/masonry/package.json +++ b/ui/masonry/package.json @@ -16,8 +16,8 @@ } }, "dependencies": { - "@infinite-list/data-model": "workspace:*", - "@infinite-list/scroller": "workspace:*" + "@infinite-list/scroller": "workspace:*", + "@infinite-list/masonry-dimensions": "workspace:*" }, "publishConfig": { "access": "public" diff --git a/ui/masonry/src/common/utils.ts b/ui/masonry/src/common/utils.ts new file mode 100644 index 00000000..44801f9d --- /dev/null +++ b/ui/masonry/src/common/utils.ts @@ -0,0 +1,30 @@ +import { GetColumnWidth, ColumnDimensionInfo } from '../types'; + +export const resolveColumnInfo = (options: { + width?: number; + getColumnWidth?: GetColumnWidth; + column: number; +}) => { + const { width, getColumnWidth, column } = options; + + const sequence = Array.from({ length: column }, (_, i) => i + 1); + const nextWidth = width || 0; + return sequence.reduce((acc, cur, index) => { + const current = { + width: getColumnWidth?.(index) || nextWidth / column, + left: 0, + right: nextWidth - (getColumnWidth?.(index) || nextWidth / column), + }; + if (!index) { + acc.push(current); + return acc; + } + const last = acc[acc.length - 1]; + if (last) { + current.left = last.left + last.width; + current.right = nextWidth - current.left - last.width; + } + acc.push(current); + return acc; + }, []); +}; diff --git a/ui/masonry/src/react-native/ColumnStateRender.tsx b/ui/masonry/src/react-native/ColumnStateRender.tsx index 2af0d70e..9dc103d0 100644 --- a/ui/masonry/src/react-native/ColumnStateRender.tsx +++ b/ui/masonry/src/react-native/ColumnStateRender.tsx @@ -1,6 +1,6 @@ import { Fragment } from 'react'; -import { GenericItemT, RecycleStateResult } from '@infinite-list/data-model'; +import { GenericItemT, RecycleStateResult } from '@infinite-list/strategies'; import { ColumnStateRendererProps } from './types'; import RecycleItem from './RecycleItem'; diff --git a/ui/masonry/src/react-native/MasonryList.tsx b/ui/masonry/src/react-native/MasonryList.tsx index 623bd42a..c8b848d8 100644 --- a/ui/masonry/src/react-native/MasonryList.tsx +++ b/ui/masonry/src/react-native/MasonryList.tsx @@ -17,12 +17,13 @@ import { } from 'react-native'; import { GenericItemT, - MasonryDimension, + MasonryDimensions as MasonryDimension, MasonryStateResults, -} from '@infinite-list/data-model'; -import { ColumnDimensionInfo, MasonryListProps } from './types'; +} from '@infinite-list/masonry-dimensions'; +import { MasonryListProps } from './types'; import ColumnStateRenderer from './ColumnStateRender'; import { ScrollViewContext } from '@infinite-list/scroller/react-native'; +import { resolveColumnInfo } from '../common/utils'; let count = 0; @@ -35,30 +36,19 @@ const MasonryList = ( const listId = useMemo(() => id || `__masonry_list${count++}__`, []); - const resolveColumnInfo = useCallback((width?: number) => { - const sequence = Array.from({ length: column }, (_, i) => i + 1); - const nextWidth = width || 0; - return sequence.reduce((acc, cur, index) => { - const current = { - width: getColumnWidth?.(index) || nextWidth / column, - left: 0, - right: nextWidth - (getColumnWidth?.(index) || nextWidth / column), - }; - if (!index) { - acc.push(current); - return acc; - } - const last = acc[acc.length - 1]; - if (last) { - current.left = last.left + last.width; - current.right = nextWidth - current.left - last.width; - } - acc.push(current); - return acc; - }, []); - }, []); + const nextResolveColumnInfo = useCallback( + (width?: number) => + resolveColumnInfo({ + width, + getColumnWidth, + column, + }), + [column] + ); - const [columnDimensions, setColumnDimensions] = useState(resolveColumnInfo()); + const [columnDimensions, setColumnDimensions] = useState( + nextResolveColumnInfo() + ); const listRef = useRef(null); @@ -71,6 +61,11 @@ const MasonryList = ( height: '100%', overflowY: 'auto', position: 'relative', + display: 'flex', + /** + * to make the backdrop div to render in column style + */ + flexDirection: 'row', }, }), [] @@ -79,7 +74,7 @@ const MasonryList = ( const onLayoutHandler = useCallback((event: LayoutChangeEvent) => { const { width } = event.nativeEvent.layout; if (!getColumnWidth) { - setColumnDimensions(resolveColumnInfo(width)); + setColumnDimensions(nextResolveColumnInfo(width)); } }, []); diff --git a/ui/masonry/src/react-native/RecycleItem.tsx b/ui/masonry/src/react-native/RecycleItem.tsx index bb0e4b5f..59fb1c9b 100644 --- a/ui/masonry/src/react-native/RecycleItem.tsx +++ b/ui/masonry/src/react-native/RecycleItem.tsx @@ -1,5 +1,5 @@ import { useEffect, useMemo, useRef } from 'react'; -import { GenericItemT } from '@infinite-list/data-model'; +import { GenericItemT } from '@infinite-list/item-meta'; import { RecycleItemProps } from './types'; import { View, ViewStyle } from 'react-native'; diff --git a/ui/masonry/src/react-native/SpaceItem.tsx b/ui/masonry/src/react-native/SpaceItem.tsx index c0be246e..6c5d96f3 100644 --- a/ui/masonry/src/react-native/SpaceItem.tsx +++ b/ui/masonry/src/react-native/SpaceItem.tsx @@ -1,6 +1,6 @@ import { useEffect, useMemo, useRef } from 'react'; import { View } from 'react-native'; -import { GenericItemT } from '@infinite-list/data-model'; +import { GenericItemT } from '@infinite-list/item-meta'; import { SpaceItemProps } from './types'; const Item = (props: SpaceItemProps) => { diff --git a/ui/masonry/src/react-native/types/list.ts b/ui/masonry/src/react-native/types/list.ts index f37f517c..4ec36fbf 100644 --- a/ui/masonry/src/react-native/types/list.ts +++ b/ui/masonry/src/react-native/types/list.ts @@ -1,14 +1 @@ -import { ItemMeta, GenericItemT } from '@infinite-list/data-model'; - -export type RenderItemInfo = { - item: ItemT; - itemMeta: ItemMeta; -}; - -export type DefaultItemT = { - [key: string]: any; -}; - -export type RenderItem = ( - info: RenderItemInfo -) => React.ReactElement | null; +export * from '../../types/list'; diff --git a/ui/masonry/src/react-native/types/masonryList.ts b/ui/masonry/src/react-native/types/masonryList.ts index a13bab4e..9010a988 100644 --- a/ui/masonry/src/react-native/types/masonryList.ts +++ b/ui/masonry/src/react-native/types/masonryList.ts @@ -1,60 +1,34 @@ -import { - GenericItemT, - RecycleStateToken, - SpaceStateToken, - MasonryDimension, - MasonryColumnStateResults, - MasonryDimensionsModelProps, -} from '@infinite-list/data-model'; import { ScrollView, View } from 'react-native'; -import { RefObject } from 'react'; -import { RenderItem } from './list'; -import { ForwardedRef } from 'react'; - -export type GetColumnWidth = (columnIndex: number) => number; +import { RefObject, ForwardedRef } from 'react'; +import { GenericItemT } from '@infinite-list/item-meta'; +import { + MasonryListProps as CommonMasonryListProps, + RecycleItemProps as CommonRecycleItemProps, + SpaceItemProps as CommonSpaceItemProps, + ColumnStateRendererProps as CommonColumnStateRendererProps, + ColumnDimensionInfo, +} from '../../types/masonryList'; -export type MasonryListProps = Omit< - MasonryDimensionsModelProps, - 'store' | 'container' -> & { - id?: string; - renderItem: RenderItem; - getColumnWidth?: GetColumnWidth; - forwardRef?: ForwardedRef; - containerRef: ContainerRef; -}; - -export type ColumnStateRendererProps< - ItemT extends GenericItemT = GenericItemT -> = Omit, 'id' | 'column' | 'data' | 'forwardRef'> & { - columnIndex: number; - dimensions: MasonryDimension; - state: MasonryColumnStateResults; - columnDimensions: ColumnDimensionInfo[]; -}; +export { ColumnDimensionInfo }; export type ContainerRef = RefObject; +export type MasonryListProps = + CommonMasonryListProps & { + containerRef: ContainerRef; + forwardRef?: ForwardedRef; + }; -export type RecycleItemProps = { - columnIndex: number; - data: RecycleStateToken; - renderItem: RenderItem; - dimensions: MasonryDimension; - columnDimension: ColumnDimensionInfo; - containerRef: ContainerRef; -}; +export type RecycleItemProps = + CommonRecycleItemProps & { + containerRef: ContainerRef; + }; -export type SpaceItemProps = { - columnIndex: number; - data: SpaceStateToken; - renderItem: RenderItem; - dimensions: MasonryDimension; - columnDimension: ColumnDimensionInfo; +export type SpaceItemProps = + CommonSpaceItemProps & { + containerRef: ContainerRef; + }; +export type ColumnStateRendererProps< + ItemT extends GenericItemT = GenericItemT +> = CommonColumnStateRendererProps & { containerRef: ContainerRef; }; - -export type ColumnDimensionInfo = { - width: number; - left: number; - right: number; -}; diff --git a/ui/masonry/src/react/ColumnStateRender.tsx b/ui/masonry/src/react/ColumnStateRender.tsx index 2af0d70e..b0f77040 100644 --- a/ui/masonry/src/react/ColumnStateRender.tsx +++ b/ui/masonry/src/react/ColumnStateRender.tsx @@ -1,6 +1,6 @@ import { Fragment } from 'react'; -import { GenericItemT, RecycleStateResult } from '@infinite-list/data-model'; +import { GenericItemT, RecycleStateResult } from '@infinite-list/strategies'; import { ColumnStateRendererProps } from './types'; import RecycleItem from './RecycleItem'; @@ -11,6 +11,9 @@ const ColumnStateRenderer = ( ) => { const { state, columnIndex, columnDimensions, ...rest } = props; const current = state[0] as RecycleStateResult; + + console.log('space ', current); + return ( {current.spaceState.map((data) => ( diff --git a/ui/masonry/src/react/MasonryList.tsx b/ui/masonry/src/react/MasonryList.tsx index 2e7911c8..23f68476 100644 --- a/ui/masonry/src/react/MasonryList.tsx +++ b/ui/masonry/src/react/MasonryList.tsx @@ -10,12 +10,13 @@ import { } from 'react'; import { GenericItemT, - MasonryDimension, + MasonryDimensions as MasonryDimension, MasonryStateResults, -} from '@infinite-list/data-model'; -import { ColumnDimensionInfo, MasonryListProps } from './types'; +} from '@infinite-list/masonry-dimensions'; +import { MasonryListProps } from './types'; import ColumnStateRenderer from './ColumnStateRender'; import { ScrollTracker } from '@infinite-list/scroller/web'; +import { resolveColumnInfo } from '../common/utils'; let count = 0; @@ -29,30 +30,19 @@ export const MasonryList = ( const listId = useMemo(() => id || `__masonry_list${count++}__`, []); - const resolveColumnInfo = useCallback((width?: number) => { - const sequence = Array.from({ length: column }, (_, i) => i + 1); - const nextWidth = width || 0; - return sequence.reduce((acc, cur, index) => { - const current = { - width: getColumnWidth?.(index) || nextWidth / column, - left: 0, - right: nextWidth - (getColumnWidth?.(index) || nextWidth / column), - }; - if (!index) { - acc.push(current); - return acc; - } - const last = acc[acc.length - 1]; - if (last) { - current.left = last.left + last.width; - current.right = nextWidth - current.left - last.width; - } - acc.push(current); - return acc; - }, []); - }, []); + const nextResolveColumnInfo = useCallback( + (width?: number) => + resolveColumnInfo({ + width, + getColumnWidth, + column, + }), + [column] + ); - const [columnDimensions, setColumnDimensions] = useState(resolveColumnInfo()); + const [columnDimensions, setColumnDimensions] = useState( + nextResolveColumnInfo() + ); const listRef = useRef(null); @@ -65,6 +55,11 @@ export const MasonryList = ( height: '100%', overflowY: 'auto', position: 'relative', + display: 'flex', + /** + * to make the backdrop div to render in column style + */ + flexDirection: 'row', }, }), [] @@ -75,7 +70,7 @@ export const MasonryList = ( const boundingRect = listRef.current?.getBoundingClientRect(); if (boundingRect) { const { width } = boundingRect; - setColumnDimensions(resolveColumnInfo(width)); + setColumnDimensions(nextResolveColumnInfo(width)); } } }, []); diff --git a/ui/masonry/src/react/RecycleItem.tsx b/ui/masonry/src/react/RecycleItem.tsx index af5153dc..20997505 100644 --- a/ui/masonry/src/react/RecycleItem.tsx +++ b/ui/masonry/src/react/RecycleItem.tsx @@ -1,5 +1,5 @@ import { CSSProperties, useEffect, useMemo, useRef } from 'react'; -import { GenericItemT } from '@infinite-list/data-model'; +import { GenericItemT } from '@infinite-list/types'; import { RecycleItemProps } from './types'; const RecycleItem = ( diff --git a/ui/masonry/src/react/SpaceItem.tsx b/ui/masonry/src/react/SpaceItem.tsx index 45e6605e..dd9da09a 100644 --- a/ui/masonry/src/react/SpaceItem.tsx +++ b/ui/masonry/src/react/SpaceItem.tsx @@ -1,5 +1,5 @@ import { useEffect, useMemo, useRef } from 'react'; -import { GenericItemT } from '@infinite-list/data-model'; +import { GenericItemT } from '@infinite-list/types'; import { SpaceItemProps } from './types'; const Item = (props: SpaceItemProps) => { diff --git a/ui/masonry/src/react/types/list.ts b/ui/masonry/src/react/types/list.ts index f37f517c..4ec36fbf 100644 --- a/ui/masonry/src/react/types/list.ts +++ b/ui/masonry/src/react/types/list.ts @@ -1,14 +1 @@ -import { ItemMeta, GenericItemT } from '@infinite-list/data-model'; - -export type RenderItemInfo = { - item: ItemT; - itemMeta: ItemMeta; -}; - -export type DefaultItemT = { - [key: string]: any; -}; - -export type RenderItem = ( - info: RenderItemInfo -) => React.ReactElement | null; +export * from '../../types/list'; diff --git a/ui/masonry/src/react/types/masonryList.ts b/ui/masonry/src/react/types/masonryList.ts index d3c49c93..10b85600 100644 --- a/ui/masonry/src/react/types/masonryList.ts +++ b/ui/masonry/src/react/types/masonryList.ts @@ -1,53 +1,22 @@ -import { - GenericItemT, - RecycleStateToken, - SpaceStateToken, - MasonryDimension, - MasonryColumnStateResults, - MasonryDimensionsModelProps, -} from '@infinite-list/data-model'; -import { RenderItem } from './list'; +import { GenericItemT } from '@infinite-list/item-meta'; import { ForwardedRef } from 'react'; -export type GetColumnWidth = (columnIndex: number) => number; - -export type MasonryListProps = Omit< - MasonryDimensionsModelProps, - 'store' | 'container' -> & { - id?: string; - renderItem: RenderItem; - getColumnWidth?: GetColumnWidth; - forwardRef?: ForwardedRef; -}; - -export type ColumnStateRendererProps< - ItemT extends GenericItemT = GenericItemT -> = Omit, 'id' | 'column' | 'data' | 'forwardRef'> & { - columnIndex: number; - dimensions: MasonryDimension; - state: MasonryColumnStateResults; - columnDimensions: ColumnDimensionInfo[]; -}; - -export type RecycleItemProps = { - columnIndex: number; - data: RecycleStateToken; - renderItem: RenderItem; - dimensions: MasonryDimension; - columnDimension: ColumnDimensionInfo; -}; +import { + MasonryListProps as CommonMasonryListProps, + RecycleItemProps, + SpaceItemProps, + ColumnStateRendererProps, + ColumnDimensionInfo, +} from '../../types/masonryList'; -export type SpaceItemProps = { - columnIndex: number; - data: SpaceStateToken; - renderItem: RenderItem; - dimensions: MasonryDimension; - columnDimension: ColumnDimensionInfo; -}; +export type MasonryListProps = + CommonMasonryListProps & { + forwardRef?: ForwardedRef; + }; -export type ColumnDimensionInfo = { - width: number; - left: number; - right: number; +export { + RecycleItemProps, + SpaceItemProps, + ColumnStateRendererProps, + ColumnDimensionInfo, }; diff --git a/ui/masonry/src/types/index.ts b/ui/masonry/src/types/index.ts new file mode 100644 index 00000000..0c6a88b8 --- /dev/null +++ b/ui/masonry/src/types/index.ts @@ -0,0 +1,2 @@ +export * from './masonryList'; +export * from './list'; diff --git a/ui/masonry/src/types/list.ts b/ui/masonry/src/types/list.ts new file mode 100644 index 00000000..2b86ea97 --- /dev/null +++ b/ui/masonry/src/types/list.ts @@ -0,0 +1,14 @@ +import { ItemMeta, GenericItemT } from '@infinite-list/item-meta'; + +export type RenderItemInfo = { + item: ItemT; + itemMeta: ItemMeta; +}; + +export type DefaultItemT = { + [key: string]: any; +}; + +export type RenderItem = ( + info: RenderItemInfo +) => React.ReactElement | null; diff --git a/ui/masonry/src/types/masonryList.ts b/ui/masonry/src/types/masonryList.ts new file mode 100644 index 00000000..bf41db87 --- /dev/null +++ b/ui/masonry/src/types/masonryList.ts @@ -0,0 +1,50 @@ +import { + MasonryDimensions as MasonryDimension, + MasonryColumnStateResults, + MasonryDimensionsModelProps, +} from '@infinite-list/masonry-dimensions'; +import { RecycleStateToken, SpaceStateToken } from '@infinite-list/strategies'; +import { GenericItemT } from '@infinite-list/item-meta'; +import { RenderItem } from './list'; + +export type GetColumnWidth = (columnIndex: number) => number; + +export type MasonryListProps = Omit< + MasonryDimensionsModelProps, + 'store' | 'container' +> & { + id?: string; + renderItem: RenderItem; + getColumnWidth?: GetColumnWidth; +}; + +export type ColumnStateRendererProps< + ItemT extends GenericItemT = GenericItemT +> = Omit, 'id' | 'column' | 'data' | 'forwardRef'> & { + columnIndex: number; + dimensions: MasonryDimension; + state: MasonryColumnStateResults; + columnDimensions: ColumnDimensionInfo[]; +}; + +export type RecycleItemProps = { + columnIndex: number; + data: RecycleStateToken; + renderItem: RenderItem; + dimensions: MasonryDimension; + columnDimension: ColumnDimensionInfo; +}; + +export type SpaceItemProps = { + columnIndex: number; + data: SpaceStateToken; + renderItem: RenderItem; + dimensions: MasonryDimension; + columnDimension: ColumnDimensionInfo; +}; + +export type ColumnDimensionInfo = { + width: number; + left: number; + right: number; +};