From a06349a90e3338dc1b75b0058345ec60819cec36 Mon Sep 17 00:00:00 2001 From: JOU Amjs Date: Wed, 30 Nov 2022 21:03:55 +0800 Subject: [PATCH] refactor: separate codes from extension --- .github/workflows/main-mock.yml | 42 - .../{main-hooks.yml => main-scene.yml} | 16 +- packages/hooks/LICENSE => LICENSE | 0 README.md | 27 +- README.zh-CN.md | 24 + README_zh-CN.md | 22 - .../hooks/babel.config.js => babel.config.js | 0 config/extensions.js | 29 - config/libs.js | 21 + config/rollup.js | 4 +- dist/alova-scene-react.esm.js | 448 ++ dist/alova-scene-react.umd.js | 455 ++ dist/alova-scene-react.umd.min.js | 1 + dist/alova-scene-svelte.esm.js | 469 ++ dist/alova-scene-svelte.umd.js | 476 ++ dist/alova-scene-svelte.umd.min.js | 1 + dist/alova-scene-vue.esm.js | 453 ++ dist/alova-scene-vue.umd.js | 460 ++ dist/alova-scene-vue.umd.min.js | 1 + .../mock/jest.config.ts => jest.config.ts | 12 +- package-lock.json | 41 +- package.json | 82 +- packages/helper/README.md | 3 - packages/helper/package.json | 18 - packages/helper/src/createSyncOnceRunner.ts | 16 - packages/helper/src/index.ts | 3 - packages/helper/src/utils.ts | 14 - packages/hooks/README.md | 11 - packages/hooks/jest.config.ts | 183 - packages/hooks/package.json | 63 - packages/hooks/tsconfig.json | 3 - packages/mock/LICENSE | 21 - packages/mock/README.md | 2 - packages/mock/babel.config.js | 12 - packages/mock/package.json | 35 - packages/mock/src/MockRequest.ts | 118 - packages/mock/src/consoleRequestInfo.ts | 58 - packages/mock/src/createAlovaMockAdapter.ts | 31 - packages/mock/src/defineMock.ts | 11 - packages/mock/src/index.ts | 2 - packages/mock/src/types.ts | 1 - packages/mock/tsconfig.json | 3 - packages/mock/typings/index.d.ts | 24 - .../src => src}/core/usePagination_unified.js | 6 +- .../hooks/src => src}/framework/react.js | 0 .../hooks/src => src}/framework/svelte.js | 2 +- {packages/hooks/src => src}/framework/vue.js | 0 .../helper/index.ts | 34 +- {packages/hooks/src => src}/index-react.js | 0 {packages/hooks/src => src}/index-svelte.js | 0 {packages/hooks/src => src}/index-vue.js | 0 {packages/hooks/test => test}/mockData.js | 0 {packages/hooks/test => test}/utils.ts | 0 .../test => test}/vue/usePagination.spec.js | 0 tsconfig.json | 8 +- .../hooks/typings => typings}/index.d.ts | 0 .../react-scene.d.ts | 0 .../svelte-scene.d.ts | 0 .../vue-scene.d.ts | 0 yarn.lock | 5192 ----------------- 60 files changed, 2939 insertions(+), 6019 deletions(-) delete mode 100644 .github/workflows/main-mock.yml rename .github/workflows/{main-hooks.yml => main-scene.yml} (61%) rename packages/hooks/LICENSE => LICENSE (100%) create mode 100644 README.zh-CN.md delete mode 100644 README_zh-CN.md rename packages/hooks/babel.config.js => babel.config.js (100%) delete mode 100644 config/extensions.js create mode 100644 config/libs.js create mode 100644 dist/alova-scene-react.esm.js create mode 100644 dist/alova-scene-react.umd.js create mode 100644 dist/alova-scene-react.umd.min.js create mode 100644 dist/alova-scene-svelte.esm.js create mode 100644 dist/alova-scene-svelte.umd.js create mode 100644 dist/alova-scene-svelte.umd.min.js create mode 100644 dist/alova-scene-vue.esm.js create mode 100644 dist/alova-scene-vue.umd.js create mode 100644 dist/alova-scene-vue.umd.min.js rename packages/mock/jest.config.ts => jest.config.ts (97%) delete mode 100644 packages/helper/README.md delete mode 100644 packages/helper/package.json delete mode 100644 packages/helper/src/createSyncOnceRunner.ts delete mode 100644 packages/helper/src/index.ts delete mode 100644 packages/helper/src/utils.ts delete mode 100644 packages/hooks/README.md delete mode 100644 packages/hooks/jest.config.ts delete mode 100644 packages/hooks/package.json delete mode 100644 packages/hooks/tsconfig.json delete mode 100644 packages/mock/LICENSE delete mode 100644 packages/mock/README.md delete mode 100644 packages/mock/babel.config.js delete mode 100644 packages/mock/package.json delete mode 100644 packages/mock/src/MockRequest.ts delete mode 100644 packages/mock/src/consoleRequestInfo.ts delete mode 100644 packages/mock/src/createAlovaMockAdapter.ts delete mode 100644 packages/mock/src/defineMock.ts delete mode 100644 packages/mock/src/index.ts delete mode 100644 packages/mock/src/types.ts delete mode 100644 packages/mock/tsconfig.json delete mode 100644 packages/mock/typings/index.d.ts rename {packages/hooks/src => src}/core/usePagination_unified.js (99%) rename {packages/hooks/src => src}/framework/react.js (100%) rename {packages/hooks/src => src}/framework/svelte.js (96%) rename {packages/hooks/src => src}/framework/vue.js (100%) rename packages/helper/src/getUniqueReferenceId.ts => src/helper/index.ts (51%) rename {packages/hooks/src => src}/index-react.js (100%) rename {packages/hooks/src => src}/index-svelte.js (100%) rename {packages/hooks/src => src}/index-vue.js (100%) rename {packages/hooks/test => test}/mockData.js (100%) rename {packages/hooks/test => test}/utils.ts (100%) rename {packages/hooks/test => test}/vue/usePagination.spec.js (100%) rename {packages/hooks/typings => typings}/index.d.ts (100%) rename packages/hooks/typings/react-extension.d.ts => typings/react-scene.d.ts (100%) rename packages/hooks/typings/svelte-extension.d.ts => typings/svelte-scene.d.ts (100%) rename packages/hooks/typings/vue-extension.d.ts => typings/vue-scene.d.ts (100%) delete mode 100644 yarn.lock diff --git a/.github/workflows/main-mock.yml b/.github/workflows/main-mock.yml deleted file mode 100644 index 576cdd9..0000000 --- a/.github/workflows/main-mock.yml +++ /dev/null @@ -1,42 +0,0 @@ -name: build - -# 触发条件:在 push或合并请求 到 master 或 realease开头的分支后 -on: - push: - branches: - - main - paths: - - packages/mock/** - - pull_request: - branches: - - main - paths: - - packages/mock/** - -# 任务 -jobs: - build: - # 服务器环境:最新版 Ubuntu - runs-on: ubuntu-latest - steps: - # 拉取代码 - - name: Checkout - uses: actions/checkout@v3 - - name: Use Node.js - uses: actions/setup-node@v3 - with: - node-version: 16.14.x - registry-url: 'https://registry.npmjs.org' - cache: 'yarn' - - # 执行测试和打包操作 - - run: yarn install --immutable - # 这条命令包含了测试和上传覆盖率 - # - run: npm run coveralls - - # 打包发布 - - run: yarn workspace @alova/mock run build - - run: cd ./packages/mock && npm publish - env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_ALOVA_PUBLISH_TOKEN }} diff --git a/.github/workflows/main-hooks.yml b/.github/workflows/main-scene.yml similarity index 61% rename from .github/workflows/main-hooks.yml rename to .github/workflows/main-scene.yml index 596f1d2..0e9ce89 100644 --- a/.github/workflows/main-hooks.yml +++ b/.github/workflows/main-scene.yml @@ -1,18 +1,14 @@ name: build -# 触发条件:在 push或合并请求 到 master 或 realease开头的分支后 +# 触发条件:在 push或合并请求 到 main on: push: branches: - main - paths: - - packages/hooks/** pull_request: branches: - main - paths: - - packages/hooks/** # 任务 jobs: @@ -28,16 +24,16 @@ jobs: with: node-version: 16.14.x registry-url: 'https://registry.npmjs.org' - cache: 'yarn' + cache: 'npm' # 执行测试和打包操作 - - run: yarn install --immutable + - run: npm ci # 测试 - - run: yarn workspace @alova/hooks run test + - run: npm run test:coverage # 打包发布 - - run: yarn workspace @alova/hooks run build - - run: cd ./packages/hooks && npm publish + - run: npm run build --if-present + - run: npm publish env: NODE_AUTH_TOKEN: ${{ secrets.NPM_ALOVA_PUBLISH_TOKEN }} diff --git a/packages/hooks/LICENSE b/LICENSE similarity index 100% rename from packages/hooks/LICENSE rename to LICENSE diff --git a/README.md b/README.md index 7568974..041f71a 100644 --- a/README.md +++ b/README.md @@ -1,22 +1,11 @@ -# alova extensions +# @alova/scene -[alova](https://github.com/alovajs/alova) is a request scenario management library. Its mission is to make the application manage CS data interaction more intelligently, and propose better request management solutions for different request scenarios , so it also provides some request schemes in specific scenarios, which can allow developers to implement functions with higher performance and better experience more elegantly. +scenario hooks with alova.js -## alova example -[Here are some examples that will demonstrate the power of alova](https://alova.js.org/category/%E7%A4%BA%E4%BE%8B) +## UsePagination -## Packages -This repository contains the following packages - -| Project | Description | -| ---- | ---- | -| [@alova/mock](https://github.com/alovajs/extensions/tree/main/packages/mock) | a mock request adapter of alova.js | -| [@alova/hooks](https://github.com/alovajs/extensions/tree/main/packages/hooks) | extended hooks with alova.js | - -## What's next? - -As mentioned above, alova's mission is to propose better request management solutions for different request scenarios. Solutions for specific scenarios will be implemented in **@alova/hooks**. If you have a desired request scenario, welcome Discuss via [issue](https://github.com/alovajs/extensions/issues), and you are welcome to contribute your ingenuity via [pull requests](https://github.com/alovajs/extensions/pulls) Come and make alova better together. - -## LICENSE - -[MIT](https://en.wikipedia.org/wiki/MIT_License) \ No newline at end of file +| Framework | available | tested | +| --------- | --------- | ------ | +| vue | ✅ | ✅ | +| react | ✅ | ❌ | +| svelte | ✅ | ❌ | diff --git a/README.zh-CN.md b/README.zh-CN.md new file mode 100644 index 0000000..2e50509 --- /dev/null +++ b/README.zh-CN.md @@ -0,0 +1,24 @@ +# alova 场景化方案 + +[alova](https://github.com/alovajs/alova) 是一个请求场景管理库,它的使命,就是让应用更聪明地管理 CS 数据交互,针对不同的请求场景提出更好的请求管理方案,因此也提供了一些特定场景下的请求方案,可以让开发者更优雅地实现更高性能和体验更好的功能。 + +## alova 示例 + +[这里有些示例将会展示 alova 的强大力量](https://alova.js.org/category/%E7%A4%BA%E4%BE%8B) + +## Packages + +本仓库包含以下 packages + +| Project | Description | +| ------------------------------------------------------------------------------ | ---------------------------------- | +| [@alova/mock](https://github.com/alovajs/extensions/tree/main/packages/mock) | a mock request adapter of alova.js | +| [@alova/hooks](https://github.com/alovajs/extensions/tree/main/packages/hooks) | extended hooks with alova.js | + +## 下一步做什么? + +就像上面所说,alova 的使命是针对不同的请求场景提出更好的请求管理方案,特定场景的方案将会在 **@alova/hooks** 中实现,如果你有期待的请求场景,欢迎通过 [issue](https://github.com/alovajs/extensions/issues) 来讨论,也欢迎贡献你的聪明才智,通过 [pull requests](https://github.com/alovajs/extensions/pulls) 来一起让 alova 变得更好。 + +## LICENSE + +[MIT](https://en.wikipedia.org/wiki/MIT_License) diff --git a/README_zh-CN.md b/README_zh-CN.md deleted file mode 100644 index 029d221..0000000 --- a/README_zh-CN.md +++ /dev/null @@ -1,22 +0,0 @@ -# alova扩展库 - -[alova](https://github.com/alovajs/alova) 是一个请求场景管理库,它的使命,就是让应用更聪明地管理CS数据交互,针对不同的请求场景提出更好的请求管理方案,因此也提供了一些特定场景下的请求方案,可以让开发者更优雅地实现更高性能和体验更好的功能。 - -## alova示例 -[这里有些示例将会展示alova的强大力量](https://alova.js.org/category/%E7%A4%BA%E4%BE%8B) - -## Packages -本仓库包含以下packages - -| Project | Description | -| ---- | ---- | -| [@alova/mock](https://github.com/alovajs/extensions/tree/main/packages/mock) | a mock request adapter of alova.js | -| [@alova/hooks](https://github.com/alovajs/extensions/tree/main/packages/hooks) | extended hooks with alova.js | - -## 下一步做什么? - -就像上面所说,alova的使命是针对不同的请求场景提出更好的请求管理方案,特定场景的方案将会在 **@alova/hooks** 中实现,如果你有期待的请求场景,欢迎通过 [issue](https://github.com/alovajs/extensions/issues) 来讨论,也欢迎贡献你的聪明才智,通过 [pull requests](https://github.com/alovajs/extensions/pulls) 来一起让alova变得更好。 - -## LICENSE - -[MIT](https://en.wikipedia.org/wiki/MIT_License) \ No newline at end of file diff --git a/packages/hooks/babel.config.js b/babel.config.js similarity index 100% rename from packages/hooks/babel.config.js rename to babel.config.js diff --git a/config/extensions.js b/config/extensions.js deleted file mode 100644 index 248397c..0000000 --- a/config/extensions.js +++ /dev/null @@ -1,29 +0,0 @@ -module.exports = { - // @alova/mock - mock: { - external: ['alova'], - packageName: 'AlovaMock', - input: 'src/index.ts', - output: suffix => `dist/alova-mock.${suffix}.js` - }, - - // @alova/hooks - vuehooks: { - external: ['alova', 'vue'], - packageName: 'AlovaVueHooks', - input: 'src/index-vue.js', - output: suffix => `dist/alova-vue-hooks.${suffix}.js` - }, - reacthooks: { - external: ['alova', 'react'], - packageName: 'AlovaReactHook', - input: 'src/index-react.js', - output: suffix => `dist/alova-react-hooks.${suffix}.js` - }, - sveltehooks: { - external: ['alova', 'svelte', 'svelte/store'], - packageName: 'AlovaSvelteHook', - input: 'src/index-svelte.js', - output: suffix => `dist/alova-svelte-hooks.${suffix}.js` - } -}; diff --git a/config/libs.js b/config/libs.js new file mode 100644 index 0000000..64444b3 --- /dev/null +++ b/config/libs.js @@ -0,0 +1,21 @@ +module.exports = { + // @alova/scene + vuehooks: { + external: ['alova', 'vue'], + packageName: 'AlovaSceneVue', + input: 'src/index-vue.js', + output: suffix => `dist/alova-scene-vue.${suffix}.js` + }, + reacthooks: { + external: ['alova', 'react'], + packageName: 'AlovaSceneHook', + input: 'src/index-react.js', + output: suffix => `dist/alova-scene-react.${suffix}.js` + }, + sveltehooks: { + external: ['alova', 'svelte', 'svelte/store'], + packageName: 'AlovaSceneHook', + input: 'src/index-svelte.js', + output: suffix => `dist/alova-scene-svelte.${suffix}.js` + } +}; diff --git a/config/rollup.js b/config/rollup.js index c70bef5..dfe051c 100644 --- a/config/rollup.js +++ b/config/rollup.js @@ -1,11 +1,11 @@ /* * @Date: 2020-04-09 11:06:01 * @LastEditors: JOU(wx: huzhen555) - * @LastEditTime: 2022-11-06 15:56:36 + * @LastEditTime: 2022-11-30 20:46:39 */ var typescript = require('rollup-plugin-typescript2'); var { readFileSync } = require('fs'); -var compilePaths = require('./extensions'); +var compilePaths = require('./libs'); const getCompiler = ( opt = { diff --git a/dist/alova-scene-react.esm.js b/dist/alova-scene-react.esm.js new file mode 100644 index 0000000..1869f5c --- /dev/null +++ b/dist/alova-scene-react.esm.js @@ -0,0 +1,448 @@ +/** + * @alova/scene 1.0.0-beta.14 (https://github.com/alovajs/scene) + * Copyright 2022 JOU-amjs. All Rights Reserved + * Licensed under MIT (https://github.com/alovajs/scene/blob/master/LICENSE) + */ + +import { useWatcher, useFetcher, setCacheData, invalidateCache } from 'alova'; +import { useState, useMemo, useRef, useLayoutEffect } from 'react'; + +const createSyncOnceRunner = (delay = 0) => { + let timer; + return (fn) => { + if (timer) { + clearTimeout(timer); + } + timer = setTimeout(fn, delay); + }; +}; +const referenceList = []; +const uniqueIds = {}; +const generateUniqueId = () => { + let id = Math.random().toString(36).substring(2); + if (uniqueIds[id]) { + id = generateUniqueId(); + } + return id; +}; +const getUniqueReferenceId = (reference) => { + const refType = typeof reference; + if (!['object', 'function', 'symbol'].includes(refType)) { + return reference; + } + let existedRef = referenceList.find(({ ref }) => ref === reference); + if (!existedRef) { + const uniqueId = generateUniqueId(); + existedRef = { + id: uniqueId, + ref: reference + }; + referenceList.push(existedRef); + uniqueIds[uniqueId] = 1; + } + return existedRef.id; +}; +function createAssert(prefix) { + return (expression, msg) => { + if (!expression) { + throw new Error(`[alova/${prefix}:Error]${msg}`); + } + }; +} + +const paginationAssert = createAssert('hooks/usePagination'); +let counter = 0; +function usePagination_unified ( + handler, + { + preloadPreviousPage = true, + preloadNextPage = true, + total: totalGetter = data => data['total'], + data: dataGetter = data => data['data'], + initialData, + append = false, + initialPage = 1, + initialPageSize = 10, + debounce, + watchingStates = [], + immediate = true + }, + $, + $$, + upd$, + _$, + _exp$, + _expBatch$, + watch +) { + const id = counter++; + let isRefresh = false; + let isReset = false; // 用于控制是否重置 + const page = $(initialPage); + const pageSize = $(initialPageSize); + const data = $([]); + + // 构建method name + const nameHookPrefix = `pagination-hook-${id}`; + const buildMethodName = page => + `${nameHookPrefix}-${page}-${_$(pageSize)}-${watchingStates + .map(state => getUniqueReferenceId(_$(state))) + .join('-')}`; + const listDataGetter = rawData => dataGetter(rawData) || rawData; + const getHandlerMethod = refreshPage => { + const pageVal = refreshPage || _$(page); + const pageSizeVal = _$(pageSize); + const handlerMethod = handler(pageVal, pageSizeVal); + + // 定义统一的名称,方便管理 + handlerMethod.config.name = buildMethodName(pageVal); + return handlerMethod; + }; + + // 监听状态变化时,重置page为1 + watch(watchingStates, () => { + upd$(page, 1); + isReset = true; + }); + + const states = useWatcher(getHandlerMethod, [...watchingStates, page, pageSize], { + immediate, + initialData, + debounce, + force: () => isRefresh + }); + + const { send } = states; + // 计算data、total、isLastPage参数 + const totalLocal = $(undefined); + const total = $$(() => { + const totalInData = totalGetter(_$(states.data)); + const totalLocalVal = _$(totalLocal); + return totalLocalVal !== undefined ? totalLocalVal : totalInData; + }, _expBatch$(states.data, totalLocal)); + const pageCount = $$(() => { + const totalVal = _$(total); + return totalVal !== undefined ? Math.ceil(totalVal / _$(pageSize)) : undefined; + }, _expBatch$(pageSize, total)); + const canPreload = (preloadPage, isNextPage = false) => { + const pageCountVal = _$(pageCount); + const exceedPageCount = pageCountVal + ? preloadPage > pageCountVal + : isNextPage // 如果是判断预加载下一页数据且没有pageCount的情况下,通过最后一页数据量是否达到pageSize来判断 + ? listDataGetter(_$(states.data)).length < _$(pageSize) + : false; + return preloadPage > 0 && !exceedPageCount; + }; + + // 预加载下一页数据 + const fetchNextPage = () => { + const nextPage = _$(page) + 1; + if (!isRefresh && preloadNextPage && canPreload(nextPage, true)) { + fetch(getHandlerMethod(nextPage)); + } + }; + // 预加载上一页数据 + const fetchPreviousPage = () => { + const prevPage = _$(page) - 1; + if (!isRefresh && preloadPreviousPage && canPreload(prevPage)) { + fetch(getHandlerMethod(prevPage)); + } + }; + // 如果返回的数据小于pageSize了,则认定为最后一页了 + const isLastPage = $$(() => { + const pageVal = _$(page); + const pageCountVal = _$(pageCount); + const statesDataVal = listDataGetter(_$(states.data)); + const dataLen = Array.isArray(statesDataVal) ? statesDataVal.length : 0; + return pageCountVal ? pageVal >= pageCountVal : dataLen < _$(pageSize); + }, _expBatch$(page, pageCount, states.data, pageSize)); + + // 更新当前页缓存 + const updateCurrentPageCache = () => { + setCacheData(buildMethodName(_$(page)), rawData => { + const cachedListData = listDataGetter(rawData) || []; + cachedListData.splice(0, cachedListData.length, ..._$(data)); + return rawData; + }); + }; + + let forceFetch = false; + const fetchStates = useFetcher({ + force: () => isRefresh || forceFetch + }); + const { fetch, abort: abortFetch } = fetchStates; + states.onSuccess((rawData, refreshPage) => { + upd$(totalLocal, undefined); // 重新加载数据后重置为0,让total使用服务端的total参数 + fetchPreviousPage(); + fetchNextPage(); + + const pageSizeVal = _$(pageSize); + // 如果追加数据,才更新data + const listData = listDataGetter(rawData); // 更新data参数 + if (append) { + // 如果是reset则先清空数据 + if (isReset) { + upd$(data, []); + } + if (refreshPage === undefined) { + upd$(data, [..._$(data), ...listData]); + } else if (refreshPage) { + // 如果是刷新页面,则是替换那一页的数据 + upd$(data, rawd => { + rawd.splice((refreshPage - 1) * pageSizeVal, pageSizeVal, ...listData); + return rawd; + }); + } + } else { + upd$(data, listData); + } + isRefresh = false; + isReset = false; + }); + + /** + * 刷新指定页码数据,此函数将忽略缓存强制发送请求 + * @param refreshPage 刷新的页码 + */ + const refresh = refreshPage => { + isRefresh = true; + if (append) { + paginationAssert(refreshPage <= _$(page), "Refresh page can't greater than page"); + // 更新当前页数据 + send(refreshPage); + } else { + // 页数相等,则刷新当前页,否则fetch数据 + refreshPage === _$(page) ? send() : fetch(handler(refreshPage, _$(pageSize))); + } + }; + + // 临时保存的数据,以便当需要重新加载时用于数据恢复 + let tempData; + let fillingItem = undefined; // 补位数据项 + const removeSyncRunner = createSyncOnceRunner(); + // 删除除此usehook当前页和下一页的所有相关缓存 + const invalidatePaginationCache = (all = false) => { + invalidateCache({ + name: new RegExp('^' + nameHookPrefix), + filter: method => { + if (all) { + return all; + } + const pageVal = _$(page); + return ![buildMethodName(pageVal - 1), buildMethodName(pageVal), buildMethodName(pageVal + 1)].includes( + method.config.name + ); + } + }); + }; + + // 单独拿出来的原因是 + // 无论同步调用几次insert、remove,或它们组合调用,reset操作只需要异步执行一次 + const resetSyncRunner = createSyncOnceRunner(); + const resetCache = () => { + resetSyncRunner(() => { + abortFetch(); + // 缓存失效 + invalidatePaginationCache(); + // 重新预加载前后一页的数据,需要在refresh被调用前执行,因为refresh时isRefresh为true,此时无法fetch数据 + // fetchPreviousPage(); + + // 强制请求下一页 + forceFetch = true; + fetchNextPage(); + forceFetch = false; + }); + }; + + /** + * 插入一条数据 + * onBefore、插入操作、onAfter三个都需要分别顺序异步执行,因为需要等待视图更新再执行 + * @param item 插入项 + * @param config 插入配置 + */ + const insert = (item, index = 0) => { + const pageVal = _$(page); + let popItem = undefined; + upd$(data, rawd => { + // 先从末尾去掉一项数据,保证操作页的数量为pageSize + popItem = rawd.pop(); + // 插入位置为空默认插到最前面 + index >= 0 ? rawd.splice(index, 0, item) : rawd.unshift(item); + return rawd; + }); + const totalVal = _$(total); + typeof totalVal === 'number' && upd$(totalLocal, totalVal + 1); + + // 当前页的缓存同步更新 + updateCurrentPageCache(); + + // 将pop的项放到下一页缓存的头部,与remove的操作保持一致 + // 这样在同步调用insert和remove时表现才一致 + const nextPage = pageVal + 1; + setCacheData(buildMethodName(nextPage), rawData => { + const cachedListData = listDataGetter(rawData) || []; + cachedListData.unshift(popItem); + return rawData; + }); + + // 插入项后也需要让缓存失效,以免不同条件下缓存未更新 + resetCache(); + }; + + /** + * 移除一条数据 + * @param index 移除的索引 + */ + const remove = index => { + const pageVal = _$(page); + const nextPage = pageVal + 1; + setCacheData(buildMethodName(nextPage), data => { + const cachedListData = listDataGetter(data); + // 从下一页列表的头部开始取补位数据 + fillingItem = (cachedListData || []).shift(); + return data; + }); + + const isLastPageVal = _$(isLastPage); + if (fillingItem || isLastPageVal) { + // 如果有下一页数据则通过缓存数据补位 + if (!tempData) { + tempData = [..._$(data)]; + } + if (index >= 0) { + upd$(data, rawd => { + rawd.splice(index, 1); + // 如果有下一页的补位数据才去补位,因为有可能是最后一页才进入删除的 + fillingItem && rawd.push(fillingItem); + return rawd; + }); + const totalVal = _$(total); + totalVal && upd$(totalLocal, Math.max(totalVal - 1, 0)); // 不能小于0 + } + } else if (tempData) { + upd$(data, tempData); // 当移除项数都用完时还原数据,减少不必要的视图渲染 + } + // 当前页的缓存同步更新 + updateCurrentPageCache(); + + // 如果没有下一页数据,或同步删除的数量超过了pageSize,则恢复数据并重新加载本页 + // 需异步操作,因为可能超过pageSize后还有remove函数被同步执行 + resetCache(); + removeSyncRunner(() => { + // 移除最后一页数据时,就不需要再刷新了 + if (!fillingItem && !isLastPageVal) { + refresh(pageVal); + } + if (!append && isLastPageVal && _$(data).length <= 0) { + upd$(page, pageVal => pageVal - 1); // 翻页模式下,如果是最后一页且全部项被删除了,则往前翻一页 + } + tempData = undefined; + fillingItem = undefined; + }); + }; + + /** + * 替换列表中的项 + * @param {any} item 替换项 + * @param {number} index 插入位置 + */ + const replace = (item, index) => { + paginationAssert( + typeof index === 'number' && index < _$(data).length, + 'index must be a number that less than list length' + ); + upd$(data, rawd => { + rawd.splice(index, 1, item); + return rawd; + }); + // 当前页的缓存同步更新 + updateCurrentPageCache(); + }; + + /** + * 从第一页开始重新加载列表,并清空缓存 + */ + const reload = () => { + invalidatePaginationCache(true); + _$(page) === 1 ? send() : upd$(page, 1); + isReset = true; + }; + + /** @Returns */ + return { + ...states, + fetching: fetchStates.fetching, + onFetchSuccess: fetchStates.onSuccess, + onFetchError: fetchStates.onError, + onFetchComplete: fetchStates.onComplete, + + page: page, + pageSize: pageSize, + data: _exp$(data), + pageCount: _exp$(pageCount), + total: _exp$(total), + isLastPage: _exp$(isLastPage), + + refresh, + insert, + remove, + replace, + reload + }; +} + +/** + * 创建状态 + * @param data 创建状态的数据 + * @returns {FrameworkState} + */ +const $ = useState; + +/** + * 创建计算属性 + * @param data 创建计算属性的数据 + * @returns {FrameworkState} + */ +const $$ = useMemo; + +/** + * 脱水普通状态、计算属性或alova导出的状态,返回状态原始值 + * @param state 状态 + * @returns 状态原始值,即状态对应的数据 + */ +const exportState = state => (Array.isArray(state) && typeof state[1] === 'function' ? state[0] : state); + +const _$ = exportState; +const _exp$ = exportState; + +/** + * 批量导出状态 + * @param state 状态 + * @returns 状态原始值 + */ +const _expBatch$ = (...states) => states.map(s => _exp$(s)); + +/** + * 更新状态值 + * @param state 更新的状态 + * @param newData 新状态值 + */ +const upd$ = (state, newData) => state[1](newData); + +/** + * 监听状态触发回调 + * @param {import('react').DependencyList} states 监听状态 + * @param {Function} cb 回调函数 + */ +const watch = (states, cb) => { + // 当有监听状态时,状态变化再触发 + const needEmit = useRef(false); + useLayoutEffect(() => { + needEmit.current ? cb() : (needEmit.current = true); + }, states); +}; + +const usePagination = (handler, config = {}) => + usePagination_unified(handler, config, $, $$, upd$, _$, _exp$, _expBatch$, watch); + +export { usePagination }; diff --git a/dist/alova-scene-react.umd.js b/dist/alova-scene-react.umd.js new file mode 100644 index 0000000..b05b4cf --- /dev/null +++ b/dist/alova-scene-react.umd.js @@ -0,0 +1,455 @@ +/** + * @alova/scene 1.0.0-beta.14 (https://github.com/alovajs/scene) + * Copyright 2022 JOU-amjs. All Rights Reserved + * Licensed under MIT (https://github.com/alovajs/scene/blob/master/LICENSE) + */ + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('alova'), require('react')) : + typeof define === 'function' && define.amd ? define(['exports', 'alova', 'react'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.AlovaSceneHook = {}, global.alova, global.react)); +})(this, (function (exports, alova, react) { 'use strict'; + + const createSyncOnceRunner = (delay = 0) => { + let timer; + return (fn) => { + if (timer) { + clearTimeout(timer); + } + timer = setTimeout(fn, delay); + }; + }; + const referenceList = []; + const uniqueIds = {}; + const generateUniqueId = () => { + let id = Math.random().toString(36).substring(2); + if (uniqueIds[id]) { + id = generateUniqueId(); + } + return id; + }; + const getUniqueReferenceId = (reference) => { + const refType = typeof reference; + if (!['object', 'function', 'symbol'].includes(refType)) { + return reference; + } + let existedRef = referenceList.find(({ ref }) => ref === reference); + if (!existedRef) { + const uniqueId = generateUniqueId(); + existedRef = { + id: uniqueId, + ref: reference + }; + referenceList.push(existedRef); + uniqueIds[uniqueId] = 1; + } + return existedRef.id; + }; + function createAssert(prefix) { + return (expression, msg) => { + if (!expression) { + throw new Error(`[alova/${prefix}:Error]${msg}`); + } + }; + } + + const paginationAssert = createAssert('hooks/usePagination'); + let counter = 0; + function usePagination_unified ( + handler, + { + preloadPreviousPage = true, + preloadNextPage = true, + total: totalGetter = data => data['total'], + data: dataGetter = data => data['data'], + initialData, + append = false, + initialPage = 1, + initialPageSize = 10, + debounce, + watchingStates = [], + immediate = true + }, + $, + $$, + upd$, + _$, + _exp$, + _expBatch$, + watch + ) { + const id = counter++; + let isRefresh = false; + let isReset = false; // 用于控制是否重置 + const page = $(initialPage); + const pageSize = $(initialPageSize); + const data = $([]); + + // 构建method name + const nameHookPrefix = `pagination-hook-${id}`; + const buildMethodName = page => + `${nameHookPrefix}-${page}-${_$(pageSize)}-${watchingStates + .map(state => getUniqueReferenceId(_$(state))) + .join('-')}`; + const listDataGetter = rawData => dataGetter(rawData) || rawData; + const getHandlerMethod = refreshPage => { + const pageVal = refreshPage || _$(page); + const pageSizeVal = _$(pageSize); + const handlerMethod = handler(pageVal, pageSizeVal); + + // 定义统一的名称,方便管理 + handlerMethod.config.name = buildMethodName(pageVal); + return handlerMethod; + }; + + // 监听状态变化时,重置page为1 + watch(watchingStates, () => { + upd$(page, 1); + isReset = true; + }); + + const states = alova.useWatcher(getHandlerMethod, [...watchingStates, page, pageSize], { + immediate, + initialData, + debounce, + force: () => isRefresh + }); + + const { send } = states; + // 计算data、total、isLastPage参数 + const totalLocal = $(undefined); + const total = $$(() => { + const totalInData = totalGetter(_$(states.data)); + const totalLocalVal = _$(totalLocal); + return totalLocalVal !== undefined ? totalLocalVal : totalInData; + }, _expBatch$(states.data, totalLocal)); + const pageCount = $$(() => { + const totalVal = _$(total); + return totalVal !== undefined ? Math.ceil(totalVal / _$(pageSize)) : undefined; + }, _expBatch$(pageSize, total)); + const canPreload = (preloadPage, isNextPage = false) => { + const pageCountVal = _$(pageCount); + const exceedPageCount = pageCountVal + ? preloadPage > pageCountVal + : isNextPage // 如果是判断预加载下一页数据且没有pageCount的情况下,通过最后一页数据量是否达到pageSize来判断 + ? listDataGetter(_$(states.data)).length < _$(pageSize) + : false; + return preloadPage > 0 && !exceedPageCount; + }; + + // 预加载下一页数据 + const fetchNextPage = () => { + const nextPage = _$(page) + 1; + if (!isRefresh && preloadNextPage && canPreload(nextPage, true)) { + fetch(getHandlerMethod(nextPage)); + } + }; + // 预加载上一页数据 + const fetchPreviousPage = () => { + const prevPage = _$(page) - 1; + if (!isRefresh && preloadPreviousPage && canPreload(prevPage)) { + fetch(getHandlerMethod(prevPage)); + } + }; + // 如果返回的数据小于pageSize了,则认定为最后一页了 + const isLastPage = $$(() => { + const pageVal = _$(page); + const pageCountVal = _$(pageCount); + const statesDataVal = listDataGetter(_$(states.data)); + const dataLen = Array.isArray(statesDataVal) ? statesDataVal.length : 0; + return pageCountVal ? pageVal >= pageCountVal : dataLen < _$(pageSize); + }, _expBatch$(page, pageCount, states.data, pageSize)); + + // 更新当前页缓存 + const updateCurrentPageCache = () => { + alova.setCacheData(buildMethodName(_$(page)), rawData => { + const cachedListData = listDataGetter(rawData) || []; + cachedListData.splice(0, cachedListData.length, ..._$(data)); + return rawData; + }); + }; + + let forceFetch = false; + const fetchStates = alova.useFetcher({ + force: () => isRefresh || forceFetch + }); + const { fetch, abort: abortFetch } = fetchStates; + states.onSuccess((rawData, refreshPage) => { + upd$(totalLocal, undefined); // 重新加载数据后重置为0,让total使用服务端的total参数 + fetchPreviousPage(); + fetchNextPage(); + + const pageSizeVal = _$(pageSize); + // 如果追加数据,才更新data + const listData = listDataGetter(rawData); // 更新data参数 + if (append) { + // 如果是reset则先清空数据 + if (isReset) { + upd$(data, []); + } + if (refreshPage === undefined) { + upd$(data, [..._$(data), ...listData]); + } else if (refreshPage) { + // 如果是刷新页面,则是替换那一页的数据 + upd$(data, rawd => { + rawd.splice((refreshPage - 1) * pageSizeVal, pageSizeVal, ...listData); + return rawd; + }); + } + } else { + upd$(data, listData); + } + isRefresh = false; + isReset = false; + }); + + /** + * 刷新指定页码数据,此函数将忽略缓存强制发送请求 + * @param refreshPage 刷新的页码 + */ + const refresh = refreshPage => { + isRefresh = true; + if (append) { + paginationAssert(refreshPage <= _$(page), "Refresh page can't greater than page"); + // 更新当前页数据 + send(refreshPage); + } else { + // 页数相等,则刷新当前页,否则fetch数据 + refreshPage === _$(page) ? send() : fetch(handler(refreshPage, _$(pageSize))); + } + }; + + // 临时保存的数据,以便当需要重新加载时用于数据恢复 + let tempData; + let fillingItem = undefined; // 补位数据项 + const removeSyncRunner = createSyncOnceRunner(); + // 删除除此usehook当前页和下一页的所有相关缓存 + const invalidatePaginationCache = (all = false) => { + alova.invalidateCache({ + name: new RegExp('^' + nameHookPrefix), + filter: method => { + if (all) { + return all; + } + const pageVal = _$(page); + return ![buildMethodName(pageVal - 1), buildMethodName(pageVal), buildMethodName(pageVal + 1)].includes( + method.config.name + ); + } + }); + }; + + // 单独拿出来的原因是 + // 无论同步调用几次insert、remove,或它们组合调用,reset操作只需要异步执行一次 + const resetSyncRunner = createSyncOnceRunner(); + const resetCache = () => { + resetSyncRunner(() => { + abortFetch(); + // 缓存失效 + invalidatePaginationCache(); + // 重新预加载前后一页的数据,需要在refresh被调用前执行,因为refresh时isRefresh为true,此时无法fetch数据 + // fetchPreviousPage(); + + // 强制请求下一页 + forceFetch = true; + fetchNextPage(); + forceFetch = false; + }); + }; + + /** + * 插入一条数据 + * onBefore、插入操作、onAfter三个都需要分别顺序异步执行,因为需要等待视图更新再执行 + * @param item 插入项 + * @param config 插入配置 + */ + const insert = (item, index = 0) => { + const pageVal = _$(page); + let popItem = undefined; + upd$(data, rawd => { + // 先从末尾去掉一项数据,保证操作页的数量为pageSize + popItem = rawd.pop(); + // 插入位置为空默认插到最前面 + index >= 0 ? rawd.splice(index, 0, item) : rawd.unshift(item); + return rawd; + }); + const totalVal = _$(total); + typeof totalVal === 'number' && upd$(totalLocal, totalVal + 1); + + // 当前页的缓存同步更新 + updateCurrentPageCache(); + + // 将pop的项放到下一页缓存的头部,与remove的操作保持一致 + // 这样在同步调用insert和remove时表现才一致 + const nextPage = pageVal + 1; + alova.setCacheData(buildMethodName(nextPage), rawData => { + const cachedListData = listDataGetter(rawData) || []; + cachedListData.unshift(popItem); + return rawData; + }); + + // 插入项后也需要让缓存失效,以免不同条件下缓存未更新 + resetCache(); + }; + + /** + * 移除一条数据 + * @param index 移除的索引 + */ + const remove = index => { + const pageVal = _$(page); + const nextPage = pageVal + 1; + alova.setCacheData(buildMethodName(nextPage), data => { + const cachedListData = listDataGetter(data); + // 从下一页列表的头部开始取补位数据 + fillingItem = (cachedListData || []).shift(); + return data; + }); + + const isLastPageVal = _$(isLastPage); + if (fillingItem || isLastPageVal) { + // 如果有下一页数据则通过缓存数据补位 + if (!tempData) { + tempData = [..._$(data)]; + } + if (index >= 0) { + upd$(data, rawd => { + rawd.splice(index, 1); + // 如果有下一页的补位数据才去补位,因为有可能是最后一页才进入删除的 + fillingItem && rawd.push(fillingItem); + return rawd; + }); + const totalVal = _$(total); + totalVal && upd$(totalLocal, Math.max(totalVal - 1, 0)); // 不能小于0 + } + } else if (tempData) { + upd$(data, tempData); // 当移除项数都用完时还原数据,减少不必要的视图渲染 + } + // 当前页的缓存同步更新 + updateCurrentPageCache(); + + // 如果没有下一页数据,或同步删除的数量超过了pageSize,则恢复数据并重新加载本页 + // 需异步操作,因为可能超过pageSize后还有remove函数被同步执行 + resetCache(); + removeSyncRunner(() => { + // 移除最后一页数据时,就不需要再刷新了 + if (!fillingItem && !isLastPageVal) { + refresh(pageVal); + } + if (!append && isLastPageVal && _$(data).length <= 0) { + upd$(page, pageVal => pageVal - 1); // 翻页模式下,如果是最后一页且全部项被删除了,则往前翻一页 + } + tempData = undefined; + fillingItem = undefined; + }); + }; + + /** + * 替换列表中的项 + * @param {any} item 替换项 + * @param {number} index 插入位置 + */ + const replace = (item, index) => { + paginationAssert( + typeof index === 'number' && index < _$(data).length, + 'index must be a number that less than list length' + ); + upd$(data, rawd => { + rawd.splice(index, 1, item); + return rawd; + }); + // 当前页的缓存同步更新 + updateCurrentPageCache(); + }; + + /** + * 从第一页开始重新加载列表,并清空缓存 + */ + const reload = () => { + invalidatePaginationCache(true); + _$(page) === 1 ? send() : upd$(page, 1); + isReset = true; + }; + + /** @Returns */ + return { + ...states, + fetching: fetchStates.fetching, + onFetchSuccess: fetchStates.onSuccess, + onFetchError: fetchStates.onError, + onFetchComplete: fetchStates.onComplete, + + page: page, + pageSize: pageSize, + data: _exp$(data), + pageCount: _exp$(pageCount), + total: _exp$(total), + isLastPage: _exp$(isLastPage), + + refresh, + insert, + remove, + replace, + reload + }; + } + + /** + * 创建状态 + * @param data 创建状态的数据 + * @returns {FrameworkState} + */ + const $ = react.useState; + + /** + * 创建计算属性 + * @param data 创建计算属性的数据 + * @returns {FrameworkState} + */ + const $$ = react.useMemo; + + /** + * 脱水普通状态、计算属性或alova导出的状态,返回状态原始值 + * @param state 状态 + * @returns 状态原始值,即状态对应的数据 + */ + const exportState = state => (Array.isArray(state) && typeof state[1] === 'function' ? state[0] : state); + + const _$ = exportState; + const _exp$ = exportState; + + /** + * 批量导出状态 + * @param state 状态 + * @returns 状态原始值 + */ + const _expBatch$ = (...states) => states.map(s => _exp$(s)); + + /** + * 更新状态值 + * @param state 更新的状态 + * @param newData 新状态值 + */ + const upd$ = (state, newData) => state[1](newData); + + /** + * 监听状态触发回调 + * @param {import('react').DependencyList} states 监听状态 + * @param {Function} cb 回调函数 + */ + const watch = (states, cb) => { + // 当有监听状态时,状态变化再触发 + const needEmit = react.useRef(false); + react.useLayoutEffect(() => { + needEmit.current ? cb() : (needEmit.current = true); + }, states); + }; + + const usePagination = (handler, config = {}) => + usePagination_unified(handler, config, $, $$, upd$, _$, _exp$, _expBatch$, watch); + + exports.usePagination = usePagination; + + Object.defineProperty(exports, '__esModule', { value: true }); + +})); diff --git a/dist/alova-scene-react.umd.min.js b/dist/alova-scene-react.umd.min.js new file mode 100644 index 0000000..1d7fef7 --- /dev/null +++ b/dist/alova-scene-react.umd.min.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("alova"),require("react")):"function"==typeof define&&define.amd?define(["exports","alova","react"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).AlovaSceneHook={},e.alova,e.react)}(this,(function(e,t,n){"use strict";const o=(e=0)=>{let t;return n=>{t&&clearTimeout(t),t=setTimeout(n,e)}},a=[],r={},i=()=>{let e=Math.random().toString(36).substring(2);return r[e]&&(e=i()),e};const s=(c="hooks/usePagination",(e,t)=>{if(!e)throw new Error(`[alova/${c}:Error]${t}`)});var c;let u=0;function l(e,{preloadPreviousPage:n=!0,preloadNextPage:c=!0,total:l=(e=>e.total),data:f=(e=>e.data),initialData:d,append:h=!1,initialPage:p=1,initialPageSize:g=10,debounce:m,watchingStates:v=[],immediate:y=!0},b,P,S,x,C,$,E){const A=u++;let D=!1,M=!1;const j=b(p),w=b(g),F=b([]),T=`pagination-hook-${A}`,k=e=>`${T}-${e}-${x(w)}-${v.map((e=>(e=>{if(!["object","function","symbol"].includes(typeof e))return e;let t=a.find((({ref:t})=>t===e));if(!t){const n=i();t={id:n,ref:e},a.push(t),r[n]=1}return t.id})(x(e)))).join("-")}`,R=e=>f(e)||e,q=t=>{const n=t||x(j),o=x(w),a=e(n,o);return a.config.name=k(n),a};E(v,(()=>{S(j,1),M=!0}));const z=t.useWatcher(q,[...v,j,w],{immediate:y,initialData:d,debounce:m,force:()=>D}),{send:L}=z,_=b(void 0),H=P((()=>{const e=l(x(z.data)),t=x(_);return void 0!==t?t:e}),$(z.data,_)),N=P((()=>{const e=x(H);return void 0!==e?Math.ceil(e/x(w)):void 0}),$(w,H)),O=(e,t=!1)=>{const n=x(N),o=n?e>n:!!t&&R(x(z.data)).length0&&!o},W=()=>{const e=x(j)+1;!D&&c&&O(e,!0)&&K(q(e))},B=P((()=>{const e=x(j),t=x(N),n=R(x(z.data)),o=Array.isArray(n)?n.length:0;return t?e>=t:o{t.setCacheData(k(x(j)),(e=>{const t=R(e)||[];return t.splice(0,t.length,...x(F)),e}))};let I=!1;const J=t.useFetcher({force:()=>D||I}),{fetch:K,abort:Q}=J;z.onSuccess(((e,t)=>{S(_,void 0),(()=>{const e=x(j)-1;!D&&n&&O(e)&&K(q(e))})(),W();const o=x(w),a=R(e);h?(M&&S(F,[]),void 0===t?S(F,[...x(F),...a]):t&&S(F,(e=>(e.splice((t-1)*o,o,...a),e)))):S(F,a),D=!1,M=!1}));const U=t=>{D=!0,h?(s(t<=x(j),"Refresh page can't greater than page"),L(t)):t===x(j)?L():K(e(t,x(w)))};let V,X;const Y=o(),Z=(e=!1)=>{t.invalidateCache({name:new RegExp("^"+T),filter:t=>{if(e)return e;const n=x(j);return![k(n-1),k(n),k(n+1)].includes(t.config.name)}})},ee=o(),te=()=>{ee((()=>{Q(),Z(),I=!0,W(),I=!1}))};return{...z,fetching:J.fetching,onFetchSuccess:J.onSuccess,onFetchError:J.onError,onFetchComplete:J.onComplete,page:j,pageSize:w,data:C(F),pageCount:C(N),total:C(H),isLastPage:C(B),refresh:U,insert:(e,n=0)=>{const o=x(j);let a;S(F,(t=>(a=t.pop(),n>=0?t.splice(n,0,e):t.unshift(e),t)));const r=x(H);"number"==typeof r&&S(_,r+1),G();const i=o+1;t.setCacheData(k(i),(e=>((R(e)||[]).unshift(a),e))),te()},remove:e=>{const n=x(j),o=n+1;t.setCacheData(k(o),(e=>{const t=R(e);return X=(t||[]).shift(),e}));const a=x(B);if(X||a){if(V||(V=[...x(F)]),e>=0){S(F,(t=>(t.splice(e,1),X&&t.push(X),t)));const t=x(H);t&&S(_,Math.max(t-1,0))}}else V&&S(F,V);G(),te(),Y((()=>{X||a||U(n),!h&&a&&x(F).length<=0&&S(j,(e=>e-1)),V=void 0,X=void 0}))},replace:(e,t)=>{s("number"==typeof t&&t(n.splice(t,1,e),n))),G()},reload:()=>{Z(!0),1===x(j)?L():S(j,1),M=!0}}}const f=n.useState,d=n.useMemo,h=e=>Array.isArray(e)&&"function"==typeof e[1]?e[0]:e,p=h,g=h,m=(...e)=>e.map((e=>g(e))),v=(e,t)=>e[1](t),y=(e,t)=>{const o=n.useRef(!1);n.useLayoutEffect((()=>{o.current?t():o.current=!0}),e)};e.usePagination=(e,t={})=>l(e,t,f,d,v,p,g,m,y),Object.defineProperty(e,"__esModule",{value:!0})})); diff --git a/dist/alova-scene-svelte.esm.js b/dist/alova-scene-svelte.esm.js new file mode 100644 index 0000000..26d7e8c --- /dev/null +++ b/dist/alova-scene-svelte.esm.js @@ -0,0 +1,469 @@ +/** + * @alova/scene 1.0.0-beta.14 (https://github.com/alovajs/scene) + * Copyright 2022 JOU-amjs. All Rights Reserved + * Licensed under MIT (https://github.com/alovajs/scene/blob/master/LICENSE) + */ + +import { useWatcher, useFetcher, setCacheData, invalidateCache } from 'alova'; +import { writable, derived } from 'svelte/store'; + +const createSyncOnceRunner = (delay = 0) => { + let timer; + return (fn) => { + if (timer) { + clearTimeout(timer); + } + timer = setTimeout(fn, delay); + }; +}; +const referenceList = []; +const uniqueIds = {}; +const generateUniqueId = () => { + let id = Math.random().toString(36).substring(2); + if (uniqueIds[id]) { + id = generateUniqueId(); + } + return id; +}; +const getUniqueReferenceId = (reference) => { + const refType = typeof reference; + if (!['object', 'function', 'symbol'].includes(refType)) { + return reference; + } + let existedRef = referenceList.find(({ ref }) => ref === reference); + if (!existedRef) { + const uniqueId = generateUniqueId(); + existedRef = { + id: uniqueId, + ref: reference + }; + referenceList.push(existedRef); + uniqueIds[uniqueId] = 1; + } + return existedRef.id; +}; +function createAssert(prefix) { + return (expression, msg) => { + if (!expression) { + throw new Error(`[alova/${prefix}:Error]${msg}`); + } + }; +} + +const paginationAssert = createAssert('hooks/usePagination'); +let counter = 0; +function usePagination_unified ( + handler, + { + preloadPreviousPage = true, + preloadNextPage = true, + total: totalGetter = data => data['total'], + data: dataGetter = data => data['data'], + initialData, + append = false, + initialPage = 1, + initialPageSize = 10, + debounce, + watchingStates = [], + immediate = true + }, + $, + $$, + upd$, + _$, + _exp$, + _expBatch$, + watch +) { + const id = counter++; + let isRefresh = false; + let isReset = false; // 用于控制是否重置 + const page = $(initialPage); + const pageSize = $(initialPageSize); + const data = $([]); + + // 构建method name + const nameHookPrefix = `pagination-hook-${id}`; + const buildMethodName = page => + `${nameHookPrefix}-${page}-${_$(pageSize)}-${watchingStates + .map(state => getUniqueReferenceId(_$(state))) + .join('-')}`; + const listDataGetter = rawData => dataGetter(rawData) || rawData; + const getHandlerMethod = refreshPage => { + const pageVal = refreshPage || _$(page); + const pageSizeVal = _$(pageSize); + const handlerMethod = handler(pageVal, pageSizeVal); + + // 定义统一的名称,方便管理 + handlerMethod.config.name = buildMethodName(pageVal); + return handlerMethod; + }; + + // 监听状态变化时,重置page为1 + watch(watchingStates, () => { + upd$(page, 1); + isReset = true; + }); + + const states = useWatcher(getHandlerMethod, [...watchingStates, page, pageSize], { + immediate, + initialData, + debounce, + force: () => isRefresh + }); + + const { send } = states; + // 计算data、total、isLastPage参数 + const totalLocal = $(undefined); + const total = $$(() => { + const totalInData = totalGetter(_$(states.data)); + const totalLocalVal = _$(totalLocal); + return totalLocalVal !== undefined ? totalLocalVal : totalInData; + }, _expBatch$(states.data, totalLocal)); + const pageCount = $$(() => { + const totalVal = _$(total); + return totalVal !== undefined ? Math.ceil(totalVal / _$(pageSize)) : undefined; + }, _expBatch$(pageSize, total)); + const canPreload = (preloadPage, isNextPage = false) => { + const pageCountVal = _$(pageCount); + const exceedPageCount = pageCountVal + ? preloadPage > pageCountVal + : isNextPage // 如果是判断预加载下一页数据且没有pageCount的情况下,通过最后一页数据量是否达到pageSize来判断 + ? listDataGetter(_$(states.data)).length < _$(pageSize) + : false; + return preloadPage > 0 && !exceedPageCount; + }; + + // 预加载下一页数据 + const fetchNextPage = () => { + const nextPage = _$(page) + 1; + if (!isRefresh && preloadNextPage && canPreload(nextPage, true)) { + fetch(getHandlerMethod(nextPage)); + } + }; + // 预加载上一页数据 + const fetchPreviousPage = () => { + const prevPage = _$(page) - 1; + if (!isRefresh && preloadPreviousPage && canPreload(prevPage)) { + fetch(getHandlerMethod(prevPage)); + } + }; + // 如果返回的数据小于pageSize了,则认定为最后一页了 + const isLastPage = $$(() => { + const pageVal = _$(page); + const pageCountVal = _$(pageCount); + const statesDataVal = listDataGetter(_$(states.data)); + const dataLen = Array.isArray(statesDataVal) ? statesDataVal.length : 0; + return pageCountVal ? pageVal >= pageCountVal : dataLen < _$(pageSize); + }, _expBatch$(page, pageCount, states.data, pageSize)); + + // 更新当前页缓存 + const updateCurrentPageCache = () => { + setCacheData(buildMethodName(_$(page)), rawData => { + const cachedListData = listDataGetter(rawData) || []; + cachedListData.splice(0, cachedListData.length, ..._$(data)); + return rawData; + }); + }; + + let forceFetch = false; + const fetchStates = useFetcher({ + force: () => isRefresh || forceFetch + }); + const { fetch, abort: abortFetch } = fetchStates; + states.onSuccess((rawData, refreshPage) => { + upd$(totalLocal, undefined); // 重新加载数据后重置为0,让total使用服务端的total参数 + fetchPreviousPage(); + fetchNextPage(); + + const pageSizeVal = _$(pageSize); + // 如果追加数据,才更新data + const listData = listDataGetter(rawData); // 更新data参数 + if (append) { + // 如果是reset则先清空数据 + if (isReset) { + upd$(data, []); + } + if (refreshPage === undefined) { + upd$(data, [..._$(data), ...listData]); + } else if (refreshPage) { + // 如果是刷新页面,则是替换那一页的数据 + upd$(data, rawd => { + rawd.splice((refreshPage - 1) * pageSizeVal, pageSizeVal, ...listData); + return rawd; + }); + } + } else { + upd$(data, listData); + } + isRefresh = false; + isReset = false; + }); + + /** + * 刷新指定页码数据,此函数将忽略缓存强制发送请求 + * @param refreshPage 刷新的页码 + */ + const refresh = refreshPage => { + isRefresh = true; + if (append) { + paginationAssert(refreshPage <= _$(page), "Refresh page can't greater than page"); + // 更新当前页数据 + send(refreshPage); + } else { + // 页数相等,则刷新当前页,否则fetch数据 + refreshPage === _$(page) ? send() : fetch(handler(refreshPage, _$(pageSize))); + } + }; + + // 临时保存的数据,以便当需要重新加载时用于数据恢复 + let tempData; + let fillingItem = undefined; // 补位数据项 + const removeSyncRunner = createSyncOnceRunner(); + // 删除除此usehook当前页和下一页的所有相关缓存 + const invalidatePaginationCache = (all = false) => { + invalidateCache({ + name: new RegExp('^' + nameHookPrefix), + filter: method => { + if (all) { + return all; + } + const pageVal = _$(page); + return ![buildMethodName(pageVal - 1), buildMethodName(pageVal), buildMethodName(pageVal + 1)].includes( + method.config.name + ); + } + }); + }; + + // 单独拿出来的原因是 + // 无论同步调用几次insert、remove,或它们组合调用,reset操作只需要异步执行一次 + const resetSyncRunner = createSyncOnceRunner(); + const resetCache = () => { + resetSyncRunner(() => { + abortFetch(); + // 缓存失效 + invalidatePaginationCache(); + // 重新预加载前后一页的数据,需要在refresh被调用前执行,因为refresh时isRefresh为true,此时无法fetch数据 + // fetchPreviousPage(); + + // 强制请求下一页 + forceFetch = true; + fetchNextPage(); + forceFetch = false; + }); + }; + + /** + * 插入一条数据 + * onBefore、插入操作、onAfter三个都需要分别顺序异步执行,因为需要等待视图更新再执行 + * @param item 插入项 + * @param config 插入配置 + */ + const insert = (item, index = 0) => { + const pageVal = _$(page); + let popItem = undefined; + upd$(data, rawd => { + // 先从末尾去掉一项数据,保证操作页的数量为pageSize + popItem = rawd.pop(); + // 插入位置为空默认插到最前面 + index >= 0 ? rawd.splice(index, 0, item) : rawd.unshift(item); + return rawd; + }); + const totalVal = _$(total); + typeof totalVal === 'number' && upd$(totalLocal, totalVal + 1); + + // 当前页的缓存同步更新 + updateCurrentPageCache(); + + // 将pop的项放到下一页缓存的头部,与remove的操作保持一致 + // 这样在同步调用insert和remove时表现才一致 + const nextPage = pageVal + 1; + setCacheData(buildMethodName(nextPage), rawData => { + const cachedListData = listDataGetter(rawData) || []; + cachedListData.unshift(popItem); + return rawData; + }); + + // 插入项后也需要让缓存失效,以免不同条件下缓存未更新 + resetCache(); + }; + + /** + * 移除一条数据 + * @param index 移除的索引 + */ + const remove = index => { + const pageVal = _$(page); + const nextPage = pageVal + 1; + setCacheData(buildMethodName(nextPage), data => { + const cachedListData = listDataGetter(data); + // 从下一页列表的头部开始取补位数据 + fillingItem = (cachedListData || []).shift(); + return data; + }); + + const isLastPageVal = _$(isLastPage); + if (fillingItem || isLastPageVal) { + // 如果有下一页数据则通过缓存数据补位 + if (!tempData) { + tempData = [..._$(data)]; + } + if (index >= 0) { + upd$(data, rawd => { + rawd.splice(index, 1); + // 如果有下一页的补位数据才去补位,因为有可能是最后一页才进入删除的 + fillingItem && rawd.push(fillingItem); + return rawd; + }); + const totalVal = _$(total); + totalVal && upd$(totalLocal, Math.max(totalVal - 1, 0)); // 不能小于0 + } + } else if (tempData) { + upd$(data, tempData); // 当移除项数都用完时还原数据,减少不必要的视图渲染 + } + // 当前页的缓存同步更新 + updateCurrentPageCache(); + + // 如果没有下一页数据,或同步删除的数量超过了pageSize,则恢复数据并重新加载本页 + // 需异步操作,因为可能超过pageSize后还有remove函数被同步执行 + resetCache(); + removeSyncRunner(() => { + // 移除最后一页数据时,就不需要再刷新了 + if (!fillingItem && !isLastPageVal) { + refresh(pageVal); + } + if (!append && isLastPageVal && _$(data).length <= 0) { + upd$(page, pageVal => pageVal - 1); // 翻页模式下,如果是最后一页且全部项被删除了,则往前翻一页 + } + tempData = undefined; + fillingItem = undefined; + }); + }; + + /** + * 替换列表中的项 + * @param {any} item 替换项 + * @param {number} index 插入位置 + */ + const replace = (item, index) => { + paginationAssert( + typeof index === 'number' && index < _$(data).length, + 'index must be a number that less than list length' + ); + upd$(data, rawd => { + rawd.splice(index, 1, item); + return rawd; + }); + // 当前页的缓存同步更新 + updateCurrentPageCache(); + }; + + /** + * 从第一页开始重新加载列表,并清空缓存 + */ + const reload = () => { + invalidatePaginationCache(true); + _$(page) === 1 ? send() : upd$(page, 1); + isReset = true; + }; + + /** @Returns */ + return { + ...states, + fetching: fetchStates.fetching, + onFetchSuccess: fetchStates.onSuccess, + onFetchError: fetchStates.onError, + onFetchComplete: fetchStates.onComplete, + + page: page, + pageSize: pageSize, + data: _exp$(data), + pageCount: _exp$(pageCount), + total: _exp$(total), + isLastPage: _exp$(isLastPage), + + refresh, + insert, + remove, + replace, + reload + }; +} + +/** + * 创建状态 + * @param data 创建状态的数据 + * @returns {Writable} + */ +const $ = data => writable(data); + +/** + * 创建计算属性 + * @param data 创建计算属性的数据 + * @returns {import('svelte/store').Readable} + */ +const $$ = (getter, depList) => derived(depList, getter); + +/** + * 脱水普通状态、计算属性或alova导出的状态,返回状态原始值 + * @param state 状态 + * @returns 状态原始值,即状态对应的数据 + */ +const _$ = state => { + let raw = undefined; + // 订阅时会立即执行一次函数,获取到值后立即调用解除订阅函数 + state.subscribe(value => (raw = value))(); + return raw; +}; + +/** + * 状态导出,返回原值 + * @param state 状态 + * @returns 状态原始值 + */ +const _exp$ = state => state; + +/** + * 批量导出状态 + * @param state 状态 + * @returns 状态原始值 + */ +const _expBatch$ = (...states) => states.map(s => _exp$(s)); + +/** + * 更新状态值 + * @param state 更新的状态 + * @param newData 新状态值 + */ +const upd$ = (state, newData) => { + typeof newData === 'function' ? state.update(newData) : state.set(newData); +}; + +/** + * 监听状态触发回调 + * @param {import('svelte/store').Readable[]} states 监听状态 + * @param {Function} cb 回调函数 + */ +const watch = (states, cb) => { + let emited = false; + let subscribeStage = true; + const syncRunner = createSyncOnceRunner(); + const subscribeCb = () => { + if (!emited && !subscribeStage) { + cb(); + emited = true; + } + syncRunner(() => { + emited = subscribeStage = false; + }); + }; + states.forEach(state => { + state.subscribe(subscribeCb); + }); +}; + +const usePagination = (handler, config = {}) => + usePagination_unified(handler, config, $, $$, upd$, _$, _exp$, _expBatch$, watch); + +export { usePagination }; diff --git a/dist/alova-scene-svelte.umd.js b/dist/alova-scene-svelte.umd.js new file mode 100644 index 0000000..e98ece3 --- /dev/null +++ b/dist/alova-scene-svelte.umd.js @@ -0,0 +1,476 @@ +/** + * @alova/scene 1.0.0-beta.14 (https://github.com/alovajs/scene) + * Copyright 2022 JOU-amjs. All Rights Reserved + * Licensed under MIT (https://github.com/alovajs/scene/blob/master/LICENSE) + */ + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('alova'), require('svelte/store')) : + typeof define === 'function' && define.amd ? define(['exports', 'alova', 'svelte/store'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.AlovaSceneHook = {}, global.alova, global["svelte/store"])); +})(this, (function (exports, alova, store) { 'use strict'; + + const createSyncOnceRunner = (delay = 0) => { + let timer; + return (fn) => { + if (timer) { + clearTimeout(timer); + } + timer = setTimeout(fn, delay); + }; + }; + const referenceList = []; + const uniqueIds = {}; + const generateUniqueId = () => { + let id = Math.random().toString(36).substring(2); + if (uniqueIds[id]) { + id = generateUniqueId(); + } + return id; + }; + const getUniqueReferenceId = (reference) => { + const refType = typeof reference; + if (!['object', 'function', 'symbol'].includes(refType)) { + return reference; + } + let existedRef = referenceList.find(({ ref }) => ref === reference); + if (!existedRef) { + const uniqueId = generateUniqueId(); + existedRef = { + id: uniqueId, + ref: reference + }; + referenceList.push(existedRef); + uniqueIds[uniqueId] = 1; + } + return existedRef.id; + }; + function createAssert(prefix) { + return (expression, msg) => { + if (!expression) { + throw new Error(`[alova/${prefix}:Error]${msg}`); + } + }; + } + + const paginationAssert = createAssert('hooks/usePagination'); + let counter = 0; + function usePagination_unified ( + handler, + { + preloadPreviousPage = true, + preloadNextPage = true, + total: totalGetter = data => data['total'], + data: dataGetter = data => data['data'], + initialData, + append = false, + initialPage = 1, + initialPageSize = 10, + debounce, + watchingStates = [], + immediate = true + }, + $, + $$, + upd$, + _$, + _exp$, + _expBatch$, + watch + ) { + const id = counter++; + let isRefresh = false; + let isReset = false; // 用于控制是否重置 + const page = $(initialPage); + const pageSize = $(initialPageSize); + const data = $([]); + + // 构建method name + const nameHookPrefix = `pagination-hook-${id}`; + const buildMethodName = page => + `${nameHookPrefix}-${page}-${_$(pageSize)}-${watchingStates + .map(state => getUniqueReferenceId(_$(state))) + .join('-')}`; + const listDataGetter = rawData => dataGetter(rawData) || rawData; + const getHandlerMethod = refreshPage => { + const pageVal = refreshPage || _$(page); + const pageSizeVal = _$(pageSize); + const handlerMethod = handler(pageVal, pageSizeVal); + + // 定义统一的名称,方便管理 + handlerMethod.config.name = buildMethodName(pageVal); + return handlerMethod; + }; + + // 监听状态变化时,重置page为1 + watch(watchingStates, () => { + upd$(page, 1); + isReset = true; + }); + + const states = alova.useWatcher(getHandlerMethod, [...watchingStates, page, pageSize], { + immediate, + initialData, + debounce, + force: () => isRefresh + }); + + const { send } = states; + // 计算data、total、isLastPage参数 + const totalLocal = $(undefined); + const total = $$(() => { + const totalInData = totalGetter(_$(states.data)); + const totalLocalVal = _$(totalLocal); + return totalLocalVal !== undefined ? totalLocalVal : totalInData; + }, _expBatch$(states.data, totalLocal)); + const pageCount = $$(() => { + const totalVal = _$(total); + return totalVal !== undefined ? Math.ceil(totalVal / _$(pageSize)) : undefined; + }, _expBatch$(pageSize, total)); + const canPreload = (preloadPage, isNextPage = false) => { + const pageCountVal = _$(pageCount); + const exceedPageCount = pageCountVal + ? preloadPage > pageCountVal + : isNextPage // 如果是判断预加载下一页数据且没有pageCount的情况下,通过最后一页数据量是否达到pageSize来判断 + ? listDataGetter(_$(states.data)).length < _$(pageSize) + : false; + return preloadPage > 0 && !exceedPageCount; + }; + + // 预加载下一页数据 + const fetchNextPage = () => { + const nextPage = _$(page) + 1; + if (!isRefresh && preloadNextPage && canPreload(nextPage, true)) { + fetch(getHandlerMethod(nextPage)); + } + }; + // 预加载上一页数据 + const fetchPreviousPage = () => { + const prevPage = _$(page) - 1; + if (!isRefresh && preloadPreviousPage && canPreload(prevPage)) { + fetch(getHandlerMethod(prevPage)); + } + }; + // 如果返回的数据小于pageSize了,则认定为最后一页了 + const isLastPage = $$(() => { + const pageVal = _$(page); + const pageCountVal = _$(pageCount); + const statesDataVal = listDataGetter(_$(states.data)); + const dataLen = Array.isArray(statesDataVal) ? statesDataVal.length : 0; + return pageCountVal ? pageVal >= pageCountVal : dataLen < _$(pageSize); + }, _expBatch$(page, pageCount, states.data, pageSize)); + + // 更新当前页缓存 + const updateCurrentPageCache = () => { + alova.setCacheData(buildMethodName(_$(page)), rawData => { + const cachedListData = listDataGetter(rawData) || []; + cachedListData.splice(0, cachedListData.length, ..._$(data)); + return rawData; + }); + }; + + let forceFetch = false; + const fetchStates = alova.useFetcher({ + force: () => isRefresh || forceFetch + }); + const { fetch, abort: abortFetch } = fetchStates; + states.onSuccess((rawData, refreshPage) => { + upd$(totalLocal, undefined); // 重新加载数据后重置为0,让total使用服务端的total参数 + fetchPreviousPage(); + fetchNextPage(); + + const pageSizeVal = _$(pageSize); + // 如果追加数据,才更新data + const listData = listDataGetter(rawData); // 更新data参数 + if (append) { + // 如果是reset则先清空数据 + if (isReset) { + upd$(data, []); + } + if (refreshPage === undefined) { + upd$(data, [..._$(data), ...listData]); + } else if (refreshPage) { + // 如果是刷新页面,则是替换那一页的数据 + upd$(data, rawd => { + rawd.splice((refreshPage - 1) * pageSizeVal, pageSizeVal, ...listData); + return rawd; + }); + } + } else { + upd$(data, listData); + } + isRefresh = false; + isReset = false; + }); + + /** + * 刷新指定页码数据,此函数将忽略缓存强制发送请求 + * @param refreshPage 刷新的页码 + */ + const refresh = refreshPage => { + isRefresh = true; + if (append) { + paginationAssert(refreshPage <= _$(page), "Refresh page can't greater than page"); + // 更新当前页数据 + send(refreshPage); + } else { + // 页数相等,则刷新当前页,否则fetch数据 + refreshPage === _$(page) ? send() : fetch(handler(refreshPage, _$(pageSize))); + } + }; + + // 临时保存的数据,以便当需要重新加载时用于数据恢复 + let tempData; + let fillingItem = undefined; // 补位数据项 + const removeSyncRunner = createSyncOnceRunner(); + // 删除除此usehook当前页和下一页的所有相关缓存 + const invalidatePaginationCache = (all = false) => { + alova.invalidateCache({ + name: new RegExp('^' + nameHookPrefix), + filter: method => { + if (all) { + return all; + } + const pageVal = _$(page); + return ![buildMethodName(pageVal - 1), buildMethodName(pageVal), buildMethodName(pageVal + 1)].includes( + method.config.name + ); + } + }); + }; + + // 单独拿出来的原因是 + // 无论同步调用几次insert、remove,或它们组合调用,reset操作只需要异步执行一次 + const resetSyncRunner = createSyncOnceRunner(); + const resetCache = () => { + resetSyncRunner(() => { + abortFetch(); + // 缓存失效 + invalidatePaginationCache(); + // 重新预加载前后一页的数据,需要在refresh被调用前执行,因为refresh时isRefresh为true,此时无法fetch数据 + // fetchPreviousPage(); + + // 强制请求下一页 + forceFetch = true; + fetchNextPage(); + forceFetch = false; + }); + }; + + /** + * 插入一条数据 + * onBefore、插入操作、onAfter三个都需要分别顺序异步执行,因为需要等待视图更新再执行 + * @param item 插入项 + * @param config 插入配置 + */ + const insert = (item, index = 0) => { + const pageVal = _$(page); + let popItem = undefined; + upd$(data, rawd => { + // 先从末尾去掉一项数据,保证操作页的数量为pageSize + popItem = rawd.pop(); + // 插入位置为空默认插到最前面 + index >= 0 ? rawd.splice(index, 0, item) : rawd.unshift(item); + return rawd; + }); + const totalVal = _$(total); + typeof totalVal === 'number' && upd$(totalLocal, totalVal + 1); + + // 当前页的缓存同步更新 + updateCurrentPageCache(); + + // 将pop的项放到下一页缓存的头部,与remove的操作保持一致 + // 这样在同步调用insert和remove时表现才一致 + const nextPage = pageVal + 1; + alova.setCacheData(buildMethodName(nextPage), rawData => { + const cachedListData = listDataGetter(rawData) || []; + cachedListData.unshift(popItem); + return rawData; + }); + + // 插入项后也需要让缓存失效,以免不同条件下缓存未更新 + resetCache(); + }; + + /** + * 移除一条数据 + * @param index 移除的索引 + */ + const remove = index => { + const pageVal = _$(page); + const nextPage = pageVal + 1; + alova.setCacheData(buildMethodName(nextPage), data => { + const cachedListData = listDataGetter(data); + // 从下一页列表的头部开始取补位数据 + fillingItem = (cachedListData || []).shift(); + return data; + }); + + const isLastPageVal = _$(isLastPage); + if (fillingItem || isLastPageVal) { + // 如果有下一页数据则通过缓存数据补位 + if (!tempData) { + tempData = [..._$(data)]; + } + if (index >= 0) { + upd$(data, rawd => { + rawd.splice(index, 1); + // 如果有下一页的补位数据才去补位,因为有可能是最后一页才进入删除的 + fillingItem && rawd.push(fillingItem); + return rawd; + }); + const totalVal = _$(total); + totalVal && upd$(totalLocal, Math.max(totalVal - 1, 0)); // 不能小于0 + } + } else if (tempData) { + upd$(data, tempData); // 当移除项数都用完时还原数据,减少不必要的视图渲染 + } + // 当前页的缓存同步更新 + updateCurrentPageCache(); + + // 如果没有下一页数据,或同步删除的数量超过了pageSize,则恢复数据并重新加载本页 + // 需异步操作,因为可能超过pageSize后还有remove函数被同步执行 + resetCache(); + removeSyncRunner(() => { + // 移除最后一页数据时,就不需要再刷新了 + if (!fillingItem && !isLastPageVal) { + refresh(pageVal); + } + if (!append && isLastPageVal && _$(data).length <= 0) { + upd$(page, pageVal => pageVal - 1); // 翻页模式下,如果是最后一页且全部项被删除了,则往前翻一页 + } + tempData = undefined; + fillingItem = undefined; + }); + }; + + /** + * 替换列表中的项 + * @param {any} item 替换项 + * @param {number} index 插入位置 + */ + const replace = (item, index) => { + paginationAssert( + typeof index === 'number' && index < _$(data).length, + 'index must be a number that less than list length' + ); + upd$(data, rawd => { + rawd.splice(index, 1, item); + return rawd; + }); + // 当前页的缓存同步更新 + updateCurrentPageCache(); + }; + + /** + * 从第一页开始重新加载列表,并清空缓存 + */ + const reload = () => { + invalidatePaginationCache(true); + _$(page) === 1 ? send() : upd$(page, 1); + isReset = true; + }; + + /** @Returns */ + return { + ...states, + fetching: fetchStates.fetching, + onFetchSuccess: fetchStates.onSuccess, + onFetchError: fetchStates.onError, + onFetchComplete: fetchStates.onComplete, + + page: page, + pageSize: pageSize, + data: _exp$(data), + pageCount: _exp$(pageCount), + total: _exp$(total), + isLastPage: _exp$(isLastPage), + + refresh, + insert, + remove, + replace, + reload + }; + } + + /** + * 创建状态 + * @param data 创建状态的数据 + * @returns {Writable} + */ + const $ = data => store.writable(data); + + /** + * 创建计算属性 + * @param data 创建计算属性的数据 + * @returns {import('svelte/store').Readable} + */ + const $$ = (getter, depList) => store.derived(depList, getter); + + /** + * 脱水普通状态、计算属性或alova导出的状态,返回状态原始值 + * @param state 状态 + * @returns 状态原始值,即状态对应的数据 + */ + const _$ = state => { + let raw = undefined; + // 订阅时会立即执行一次函数,获取到值后立即调用解除订阅函数 + state.subscribe(value => (raw = value))(); + return raw; + }; + + /** + * 状态导出,返回原值 + * @param state 状态 + * @returns 状态原始值 + */ + const _exp$ = state => state; + + /** + * 批量导出状态 + * @param state 状态 + * @returns 状态原始值 + */ + const _expBatch$ = (...states) => states.map(s => _exp$(s)); + + /** + * 更新状态值 + * @param state 更新的状态 + * @param newData 新状态值 + */ + const upd$ = (state, newData) => { + typeof newData === 'function' ? state.update(newData) : state.set(newData); + }; + + /** + * 监听状态触发回调 + * @param {import('svelte/store').Readable[]} states 监听状态 + * @param {Function} cb 回调函数 + */ + const watch = (states, cb) => { + let emited = false; + let subscribeStage = true; + const syncRunner = createSyncOnceRunner(); + const subscribeCb = () => { + if (!emited && !subscribeStage) { + cb(); + emited = true; + } + syncRunner(() => { + emited = subscribeStage = false; + }); + }; + states.forEach(state => { + state.subscribe(subscribeCb); + }); + }; + + const usePagination = (handler, config = {}) => + usePagination_unified(handler, config, $, $$, upd$, _$, _exp$, _expBatch$, watch); + + exports.usePagination = usePagination; + + Object.defineProperty(exports, '__esModule', { value: true }); + +})); diff --git a/dist/alova-scene-svelte.umd.min.js b/dist/alova-scene-svelte.umd.min.js new file mode 100644 index 0000000..42ed075 --- /dev/null +++ b/dist/alova-scene-svelte.umd.min.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("alova"),require("svelte/store")):"function"==typeof define&&define.amd?define(["exports","alova","svelte/store"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).AlovaSceneHook={},e.alova,e["svelte/store"])}(this,(function(e,t,n){"use strict";const o=(e=0)=>{let t;return n=>{t&&clearTimeout(t),t=setTimeout(n,e)}},a=[],i={},r=()=>{let e=Math.random().toString(36).substring(2);return i[e]&&(e=r()),e};const s=(c="hooks/usePagination",(e,t)=>{if(!e)throw new Error(`[alova/${c}:Error]${t}`)});var c;let l=0;function u(e,{preloadPreviousPage:n=!0,preloadNextPage:c=!0,total:u=(e=>e.total),data:d=(e=>e.data),initialData:f,append:h=!1,initialPage:p=1,initialPageSize:g=10,debounce:m,watchingStates:v=[],immediate:b=!0},y,P,S,x,C,$,E){const w=l++;let D=!1,j=!1;const F=y(p),M=y(g),T=y([]),k=`pagination-hook-${w}`,A=e=>`${k}-${e}-${x(M)}-${v.map((e=>(e=>{if(!["object","function","symbol"].includes(typeof e))return e;let t=a.find((({ref:t})=>t===e));if(!t){const n=r();t={id:n,ref:e},a.push(t),i[n]=1}return t.id})(x(e)))).join("-")}`,q=e=>d(e)||e,z=t=>{const n=t||x(F),o=x(M),a=e(n,o);return a.config.name=A(n),a};E(v,(()=>{S(F,1),j=!0}));const R=t.useWatcher(z,[...v,F,M],{immediate:b,initialData:f,debounce:m,force:()=>D}),{send:_}=R,H=y(void 0),L=P((()=>{const e=u(x(R.data)),t=x(H);return void 0!==t?t:e}),$(R.data,H)),N=P((()=>{const e=x(L);return void 0!==e?Math.ceil(e/x(M)):void 0}),$(M,L)),O=(e,t=!1)=>{const n=x(N),o=n?e>n:!!t&&q(x(R.data)).length0&&!o},W=()=>{const e=x(F)+1;!D&&c&&O(e,!0)&&K(z(e))},B=P((()=>{const e=x(F),t=x(N),n=q(x(R.data)),o=Array.isArray(n)?n.length:0;return t?e>=t:o{t.setCacheData(A(x(F)),(e=>{const t=q(e)||[];return t.splice(0,t.length,...x(T)),e}))};let I=!1;const J=t.useFetcher({force:()=>D||I}),{fetch:K,abort:Q}=J;R.onSuccess(((e,t)=>{S(H,void 0),(()=>{const e=x(F)-1;!D&&n&&O(e)&&K(z(e))})(),W();const o=x(M),a=q(e);h?(j&&S(T,[]),void 0===t?S(T,[...x(T),...a]):t&&S(T,(e=>(e.splice((t-1)*o,o,...a),e)))):S(T,a),D=!1,j=!1}));const U=t=>{D=!0,h?(s(t<=x(F),"Refresh page can't greater than page"),_(t)):t===x(F)?_():K(e(t,x(M)))};let V,X;const Y=o(),Z=(e=!1)=>{t.invalidateCache({name:new RegExp("^"+k),filter:t=>{if(e)return e;const n=x(F);return![A(n-1),A(n),A(n+1)].includes(t.config.name)}})},ee=o(),te=()=>{ee((()=>{Q(),Z(),I=!0,W(),I=!1}))};return{...R,fetching:J.fetching,onFetchSuccess:J.onSuccess,onFetchError:J.onError,onFetchComplete:J.onComplete,page:F,pageSize:M,data:C(T),pageCount:C(N),total:C(L),isLastPage:C(B),refresh:U,insert:(e,n=0)=>{const o=x(F);let a;S(T,(t=>(a=t.pop(),n>=0?t.splice(n,0,e):t.unshift(e),t)));const i=x(L);"number"==typeof i&&S(H,i+1),G();const r=o+1;t.setCacheData(A(r),(e=>((q(e)||[]).unshift(a),e))),te()},remove:e=>{const n=x(F),o=n+1;t.setCacheData(A(o),(e=>{const t=q(e);return X=(t||[]).shift(),e}));const a=x(B);if(X||a){if(V||(V=[...x(T)]),e>=0){S(T,(t=>(t.splice(e,1),X&&t.push(X),t)));const t=x(L);t&&S(H,Math.max(t-1,0))}}else V&&S(T,V);G(),te(),Y((()=>{X||a||U(n),!h&&a&&x(T).length<=0&&S(F,(e=>e-1)),V=void 0,X=void 0}))},replace:(e,t)=>{s("number"==typeof t&&t(n.splice(t,1,e),n))),G()},reload:()=>{Z(!0),1===x(F)?_():S(F,1),j=!0}}}const d=e=>n.writable(e),f=(e,t)=>n.derived(t,e),h=e=>{let t;return e.subscribe((e=>t=e))(),t},p=e=>e,g=(...e)=>e.map((e=>e)),m=(e,t)=>{"function"==typeof t?e.update(t):e.set(t)},v=(e,t)=>{let n=!1,a=!0;const i=o(),r=()=>{n||a||(t(),n=!0),i((()=>{n=a=!1}))};e.forEach((e=>{e.subscribe(r)}))};e.usePagination=(e,t={})=>u(e,t,d,f,m,h,p,g,v),Object.defineProperty(e,"__esModule",{value:!0})})); diff --git a/dist/alova-scene-vue.esm.js b/dist/alova-scene-vue.esm.js new file mode 100644 index 0000000..9d301c3 --- /dev/null +++ b/dist/alova-scene-vue.esm.js @@ -0,0 +1,453 @@ +/** + * @alova/scene 1.0.0-beta.14 (https://github.com/alovajs/scene) + * Copyright 2022 JOU-amjs. All Rights Reserved + * Licensed under MIT (https://github.com/alovajs/scene/blob/master/LICENSE) + */ + +import { useWatcher, useFetcher, setCacheData, invalidateCache } from 'alova'; +import { ref, computed, watch as watch$1 } from 'vue'; + +const createSyncOnceRunner = (delay = 0) => { + let timer; + return (fn) => { + if (timer) { + clearTimeout(timer); + } + timer = setTimeout(fn, delay); + }; +}; +const referenceList = []; +const uniqueIds = {}; +const generateUniqueId = () => { + let id = Math.random().toString(36).substring(2); + if (uniqueIds[id]) { + id = generateUniqueId(); + } + return id; +}; +const getUniqueReferenceId = (reference) => { + const refType = typeof reference; + if (!['object', 'function', 'symbol'].includes(refType)) { + return reference; + } + let existedRef = referenceList.find(({ ref }) => ref === reference); + if (!existedRef) { + const uniqueId = generateUniqueId(); + existedRef = { + id: uniqueId, + ref: reference + }; + referenceList.push(existedRef); + uniqueIds[uniqueId] = 1; + } + return existedRef.id; +}; +function createAssert(prefix) { + return (expression, msg) => { + if (!expression) { + throw new Error(`[alova/${prefix}:Error]${msg}`); + } + }; +} + +const paginationAssert = createAssert('hooks/usePagination'); +let counter = 0; +function usePagination_unified ( + handler, + { + preloadPreviousPage = true, + preloadNextPage = true, + total: totalGetter = data => data['total'], + data: dataGetter = data => data['data'], + initialData, + append = false, + initialPage = 1, + initialPageSize = 10, + debounce, + watchingStates = [], + immediate = true + }, + $, + $$, + upd$, + _$, + _exp$, + _expBatch$, + watch +) { + const id = counter++; + let isRefresh = false; + let isReset = false; // 用于控制是否重置 + const page = $(initialPage); + const pageSize = $(initialPageSize); + const data = $([]); + + // 构建method name + const nameHookPrefix = `pagination-hook-${id}`; + const buildMethodName = page => + `${nameHookPrefix}-${page}-${_$(pageSize)}-${watchingStates + .map(state => getUniqueReferenceId(_$(state))) + .join('-')}`; + const listDataGetter = rawData => dataGetter(rawData) || rawData; + const getHandlerMethod = refreshPage => { + const pageVal = refreshPage || _$(page); + const pageSizeVal = _$(pageSize); + const handlerMethod = handler(pageVal, pageSizeVal); + + // 定义统一的名称,方便管理 + handlerMethod.config.name = buildMethodName(pageVal); + return handlerMethod; + }; + + // 监听状态变化时,重置page为1 + watch(watchingStates, () => { + upd$(page, 1); + isReset = true; + }); + + const states = useWatcher(getHandlerMethod, [...watchingStates, page, pageSize], { + immediate, + initialData, + debounce, + force: () => isRefresh + }); + + const { send } = states; + // 计算data、total、isLastPage参数 + const totalLocal = $(undefined); + const total = $$(() => { + const totalInData = totalGetter(_$(states.data)); + const totalLocalVal = _$(totalLocal); + return totalLocalVal !== undefined ? totalLocalVal : totalInData; + }, _expBatch$(states.data, totalLocal)); + const pageCount = $$(() => { + const totalVal = _$(total); + return totalVal !== undefined ? Math.ceil(totalVal / _$(pageSize)) : undefined; + }, _expBatch$(pageSize, total)); + const canPreload = (preloadPage, isNextPage = false) => { + const pageCountVal = _$(pageCount); + const exceedPageCount = pageCountVal + ? preloadPage > pageCountVal + : isNextPage // 如果是判断预加载下一页数据且没有pageCount的情况下,通过最后一页数据量是否达到pageSize来判断 + ? listDataGetter(_$(states.data)).length < _$(pageSize) + : false; + return preloadPage > 0 && !exceedPageCount; + }; + + // 预加载下一页数据 + const fetchNextPage = () => { + const nextPage = _$(page) + 1; + if (!isRefresh && preloadNextPage && canPreload(nextPage, true)) { + fetch(getHandlerMethod(nextPage)); + } + }; + // 预加载上一页数据 + const fetchPreviousPage = () => { + const prevPage = _$(page) - 1; + if (!isRefresh && preloadPreviousPage && canPreload(prevPage)) { + fetch(getHandlerMethod(prevPage)); + } + }; + // 如果返回的数据小于pageSize了,则认定为最后一页了 + const isLastPage = $$(() => { + const pageVal = _$(page); + const pageCountVal = _$(pageCount); + const statesDataVal = listDataGetter(_$(states.data)); + const dataLen = Array.isArray(statesDataVal) ? statesDataVal.length : 0; + return pageCountVal ? pageVal >= pageCountVal : dataLen < _$(pageSize); + }, _expBatch$(page, pageCount, states.data, pageSize)); + + // 更新当前页缓存 + const updateCurrentPageCache = () => { + setCacheData(buildMethodName(_$(page)), rawData => { + const cachedListData = listDataGetter(rawData) || []; + cachedListData.splice(0, cachedListData.length, ..._$(data)); + return rawData; + }); + }; + + let forceFetch = false; + const fetchStates = useFetcher({ + force: () => isRefresh || forceFetch + }); + const { fetch, abort: abortFetch } = fetchStates; + states.onSuccess((rawData, refreshPage) => { + upd$(totalLocal, undefined); // 重新加载数据后重置为0,让total使用服务端的total参数 + fetchPreviousPage(); + fetchNextPage(); + + const pageSizeVal = _$(pageSize); + // 如果追加数据,才更新data + const listData = listDataGetter(rawData); // 更新data参数 + if (append) { + // 如果是reset则先清空数据 + if (isReset) { + upd$(data, []); + } + if (refreshPage === undefined) { + upd$(data, [..._$(data), ...listData]); + } else if (refreshPage) { + // 如果是刷新页面,则是替换那一页的数据 + upd$(data, rawd => { + rawd.splice((refreshPage - 1) * pageSizeVal, pageSizeVal, ...listData); + return rawd; + }); + } + } else { + upd$(data, listData); + } + isRefresh = false; + isReset = false; + }); + + /** + * 刷新指定页码数据,此函数将忽略缓存强制发送请求 + * @param refreshPage 刷新的页码 + */ + const refresh = refreshPage => { + isRefresh = true; + if (append) { + paginationAssert(refreshPage <= _$(page), "Refresh page can't greater than page"); + // 更新当前页数据 + send(refreshPage); + } else { + // 页数相等,则刷新当前页,否则fetch数据 + refreshPage === _$(page) ? send() : fetch(handler(refreshPage, _$(pageSize))); + } + }; + + // 临时保存的数据,以便当需要重新加载时用于数据恢复 + let tempData; + let fillingItem = undefined; // 补位数据项 + const removeSyncRunner = createSyncOnceRunner(); + // 删除除此usehook当前页和下一页的所有相关缓存 + const invalidatePaginationCache = (all = false) => { + invalidateCache({ + name: new RegExp('^' + nameHookPrefix), + filter: method => { + if (all) { + return all; + } + const pageVal = _$(page); + return ![buildMethodName(pageVal - 1), buildMethodName(pageVal), buildMethodName(pageVal + 1)].includes( + method.config.name + ); + } + }); + }; + + // 单独拿出来的原因是 + // 无论同步调用几次insert、remove,或它们组合调用,reset操作只需要异步执行一次 + const resetSyncRunner = createSyncOnceRunner(); + const resetCache = () => { + resetSyncRunner(() => { + abortFetch(); + // 缓存失效 + invalidatePaginationCache(); + // 重新预加载前后一页的数据,需要在refresh被调用前执行,因为refresh时isRefresh为true,此时无法fetch数据 + // fetchPreviousPage(); + + // 强制请求下一页 + forceFetch = true; + fetchNextPage(); + forceFetch = false; + }); + }; + + /** + * 插入一条数据 + * onBefore、插入操作、onAfter三个都需要分别顺序异步执行,因为需要等待视图更新再执行 + * @param item 插入项 + * @param config 插入配置 + */ + const insert = (item, index = 0) => { + const pageVal = _$(page); + let popItem = undefined; + upd$(data, rawd => { + // 先从末尾去掉一项数据,保证操作页的数量为pageSize + popItem = rawd.pop(); + // 插入位置为空默认插到最前面 + index >= 0 ? rawd.splice(index, 0, item) : rawd.unshift(item); + return rawd; + }); + const totalVal = _$(total); + typeof totalVal === 'number' && upd$(totalLocal, totalVal + 1); + + // 当前页的缓存同步更新 + updateCurrentPageCache(); + + // 将pop的项放到下一页缓存的头部,与remove的操作保持一致 + // 这样在同步调用insert和remove时表现才一致 + const nextPage = pageVal + 1; + setCacheData(buildMethodName(nextPage), rawData => { + const cachedListData = listDataGetter(rawData) || []; + cachedListData.unshift(popItem); + return rawData; + }); + + // 插入项后也需要让缓存失效,以免不同条件下缓存未更新 + resetCache(); + }; + + /** + * 移除一条数据 + * @param index 移除的索引 + */ + const remove = index => { + const pageVal = _$(page); + const nextPage = pageVal + 1; + setCacheData(buildMethodName(nextPage), data => { + const cachedListData = listDataGetter(data); + // 从下一页列表的头部开始取补位数据 + fillingItem = (cachedListData || []).shift(); + return data; + }); + + const isLastPageVal = _$(isLastPage); + if (fillingItem || isLastPageVal) { + // 如果有下一页数据则通过缓存数据补位 + if (!tempData) { + tempData = [..._$(data)]; + } + if (index >= 0) { + upd$(data, rawd => { + rawd.splice(index, 1); + // 如果有下一页的补位数据才去补位,因为有可能是最后一页才进入删除的 + fillingItem && rawd.push(fillingItem); + return rawd; + }); + const totalVal = _$(total); + totalVal && upd$(totalLocal, Math.max(totalVal - 1, 0)); // 不能小于0 + } + } else if (tempData) { + upd$(data, tempData); // 当移除项数都用完时还原数据,减少不必要的视图渲染 + } + // 当前页的缓存同步更新 + updateCurrentPageCache(); + + // 如果没有下一页数据,或同步删除的数量超过了pageSize,则恢复数据并重新加载本页 + // 需异步操作,因为可能超过pageSize后还有remove函数被同步执行 + resetCache(); + removeSyncRunner(() => { + // 移除最后一页数据时,就不需要再刷新了 + if (!fillingItem && !isLastPageVal) { + refresh(pageVal); + } + if (!append && isLastPageVal && _$(data).length <= 0) { + upd$(page, pageVal => pageVal - 1); // 翻页模式下,如果是最后一页且全部项被删除了,则往前翻一页 + } + tempData = undefined; + fillingItem = undefined; + }); + }; + + /** + * 替换列表中的项 + * @param {any} item 替换项 + * @param {number} index 插入位置 + */ + const replace = (item, index) => { + paginationAssert( + typeof index === 'number' && index < _$(data).length, + 'index must be a number that less than list length' + ); + upd$(data, rawd => { + rawd.splice(index, 1, item); + return rawd; + }); + // 当前页的缓存同步更新 + updateCurrentPageCache(); + }; + + /** + * 从第一页开始重新加载列表,并清空缓存 + */ + const reload = () => { + invalidatePaginationCache(true); + _$(page) === 1 ? send() : upd$(page, 1); + isReset = true; + }; + + /** @Returns */ + return { + ...states, + fetching: fetchStates.fetching, + onFetchSuccess: fetchStates.onSuccess, + onFetchError: fetchStates.onError, + onFetchComplete: fetchStates.onComplete, + + page: page, + pageSize: pageSize, + data: _exp$(data), + pageCount: _exp$(pageCount), + total: _exp$(total), + isLastPage: _exp$(isLastPage), + + refresh, + insert, + remove, + replace, + reload + }; +} + +/** + * 创建状态 + * @param data 创建状态的数据 + * @returns {FrameworkState} + */ +const $ = ref; + +/** + * 创建计算属性 + * @param data 创建计算属性的数据 + * @returns {FrameworkState} + */ +const $$ = computed; + +/** + * 脱水普通状态、计算属性或alova导出的状态,返回状态原始值 + * @param state 状态 + * @returns 状态原始值,即状态对应的数据 + */ +const _$ = state => state.value; + +/** + * 状态导出 + * @param state 状态 + * @returns 状态原始值 + */ +const _exp$ = state => state; + +/** + * 批量导出状态 + * @param state 状态 + * @returns 状态原始值 + */ +const _expBatch$ = (...states) => states.map(s => _exp$(s)); + +/** + * 更新状态值 + * @param state 更新的状态 + * @param newData 新状态值 + */ +const upd$ = (state, newData) => { + state.value = typeof newData === 'function' ? newData(state.value) : newData; +}; + +/** + * 监听状态触发回调 + * @param {import('vue').WatchSource} states 监听状态 + * @param {Function} cb 回调函数 + */ +const watch = (states, cb) => { + watch$1(states, cb, { + flush: 'sync', + deep: true + }); +}; + +const usePagination = (handler, config = {}) => + usePagination_unified(handler, config, $, $$, upd$, _$, _exp$, _expBatch$, watch); + +export { usePagination }; diff --git a/dist/alova-scene-vue.umd.js b/dist/alova-scene-vue.umd.js new file mode 100644 index 0000000..c97c7ab --- /dev/null +++ b/dist/alova-scene-vue.umd.js @@ -0,0 +1,460 @@ +/** + * @alova/scene 1.0.0-beta.14 (https://github.com/alovajs/scene) + * Copyright 2022 JOU-amjs. All Rights Reserved + * Licensed under MIT (https://github.com/alovajs/scene/blob/master/LICENSE) + */ + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('alova'), require('vue')) : + typeof define === 'function' && define.amd ? define(['exports', 'alova', 'vue'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.AlovaSceneVue = {}, global.alova, global.vue)); +})(this, (function (exports, alova, vue) { 'use strict'; + + const createSyncOnceRunner = (delay = 0) => { + let timer; + return (fn) => { + if (timer) { + clearTimeout(timer); + } + timer = setTimeout(fn, delay); + }; + }; + const referenceList = []; + const uniqueIds = {}; + const generateUniqueId = () => { + let id = Math.random().toString(36).substring(2); + if (uniqueIds[id]) { + id = generateUniqueId(); + } + return id; + }; + const getUniqueReferenceId = (reference) => { + const refType = typeof reference; + if (!['object', 'function', 'symbol'].includes(refType)) { + return reference; + } + let existedRef = referenceList.find(({ ref }) => ref === reference); + if (!existedRef) { + const uniqueId = generateUniqueId(); + existedRef = { + id: uniqueId, + ref: reference + }; + referenceList.push(existedRef); + uniqueIds[uniqueId] = 1; + } + return existedRef.id; + }; + function createAssert(prefix) { + return (expression, msg) => { + if (!expression) { + throw new Error(`[alova/${prefix}:Error]${msg}`); + } + }; + } + + const paginationAssert = createAssert('hooks/usePagination'); + let counter = 0; + function usePagination_unified ( + handler, + { + preloadPreviousPage = true, + preloadNextPage = true, + total: totalGetter = data => data['total'], + data: dataGetter = data => data['data'], + initialData, + append = false, + initialPage = 1, + initialPageSize = 10, + debounce, + watchingStates = [], + immediate = true + }, + $, + $$, + upd$, + _$, + _exp$, + _expBatch$, + watch + ) { + const id = counter++; + let isRefresh = false; + let isReset = false; // 用于控制是否重置 + const page = $(initialPage); + const pageSize = $(initialPageSize); + const data = $([]); + + // 构建method name + const nameHookPrefix = `pagination-hook-${id}`; + const buildMethodName = page => + `${nameHookPrefix}-${page}-${_$(pageSize)}-${watchingStates + .map(state => getUniqueReferenceId(_$(state))) + .join('-')}`; + const listDataGetter = rawData => dataGetter(rawData) || rawData; + const getHandlerMethod = refreshPage => { + const pageVal = refreshPage || _$(page); + const pageSizeVal = _$(pageSize); + const handlerMethod = handler(pageVal, pageSizeVal); + + // 定义统一的名称,方便管理 + handlerMethod.config.name = buildMethodName(pageVal); + return handlerMethod; + }; + + // 监听状态变化时,重置page为1 + watch(watchingStates, () => { + upd$(page, 1); + isReset = true; + }); + + const states = alova.useWatcher(getHandlerMethod, [...watchingStates, page, pageSize], { + immediate, + initialData, + debounce, + force: () => isRefresh + }); + + const { send } = states; + // 计算data、total、isLastPage参数 + const totalLocal = $(undefined); + const total = $$(() => { + const totalInData = totalGetter(_$(states.data)); + const totalLocalVal = _$(totalLocal); + return totalLocalVal !== undefined ? totalLocalVal : totalInData; + }, _expBatch$(states.data, totalLocal)); + const pageCount = $$(() => { + const totalVal = _$(total); + return totalVal !== undefined ? Math.ceil(totalVal / _$(pageSize)) : undefined; + }, _expBatch$(pageSize, total)); + const canPreload = (preloadPage, isNextPage = false) => { + const pageCountVal = _$(pageCount); + const exceedPageCount = pageCountVal + ? preloadPage > pageCountVal + : isNextPage // 如果是判断预加载下一页数据且没有pageCount的情况下,通过最后一页数据量是否达到pageSize来判断 + ? listDataGetter(_$(states.data)).length < _$(pageSize) + : false; + return preloadPage > 0 && !exceedPageCount; + }; + + // 预加载下一页数据 + const fetchNextPage = () => { + const nextPage = _$(page) + 1; + if (!isRefresh && preloadNextPage && canPreload(nextPage, true)) { + fetch(getHandlerMethod(nextPage)); + } + }; + // 预加载上一页数据 + const fetchPreviousPage = () => { + const prevPage = _$(page) - 1; + if (!isRefresh && preloadPreviousPage && canPreload(prevPage)) { + fetch(getHandlerMethod(prevPage)); + } + }; + // 如果返回的数据小于pageSize了,则认定为最后一页了 + const isLastPage = $$(() => { + const pageVal = _$(page); + const pageCountVal = _$(pageCount); + const statesDataVal = listDataGetter(_$(states.data)); + const dataLen = Array.isArray(statesDataVal) ? statesDataVal.length : 0; + return pageCountVal ? pageVal >= pageCountVal : dataLen < _$(pageSize); + }, _expBatch$(page, pageCount, states.data, pageSize)); + + // 更新当前页缓存 + const updateCurrentPageCache = () => { + alova.setCacheData(buildMethodName(_$(page)), rawData => { + const cachedListData = listDataGetter(rawData) || []; + cachedListData.splice(0, cachedListData.length, ..._$(data)); + return rawData; + }); + }; + + let forceFetch = false; + const fetchStates = alova.useFetcher({ + force: () => isRefresh || forceFetch + }); + const { fetch, abort: abortFetch } = fetchStates; + states.onSuccess((rawData, refreshPage) => { + upd$(totalLocal, undefined); // 重新加载数据后重置为0,让total使用服务端的total参数 + fetchPreviousPage(); + fetchNextPage(); + + const pageSizeVal = _$(pageSize); + // 如果追加数据,才更新data + const listData = listDataGetter(rawData); // 更新data参数 + if (append) { + // 如果是reset则先清空数据 + if (isReset) { + upd$(data, []); + } + if (refreshPage === undefined) { + upd$(data, [..._$(data), ...listData]); + } else if (refreshPage) { + // 如果是刷新页面,则是替换那一页的数据 + upd$(data, rawd => { + rawd.splice((refreshPage - 1) * pageSizeVal, pageSizeVal, ...listData); + return rawd; + }); + } + } else { + upd$(data, listData); + } + isRefresh = false; + isReset = false; + }); + + /** + * 刷新指定页码数据,此函数将忽略缓存强制发送请求 + * @param refreshPage 刷新的页码 + */ + const refresh = refreshPage => { + isRefresh = true; + if (append) { + paginationAssert(refreshPage <= _$(page), "Refresh page can't greater than page"); + // 更新当前页数据 + send(refreshPage); + } else { + // 页数相等,则刷新当前页,否则fetch数据 + refreshPage === _$(page) ? send() : fetch(handler(refreshPage, _$(pageSize))); + } + }; + + // 临时保存的数据,以便当需要重新加载时用于数据恢复 + let tempData; + let fillingItem = undefined; // 补位数据项 + const removeSyncRunner = createSyncOnceRunner(); + // 删除除此usehook当前页和下一页的所有相关缓存 + const invalidatePaginationCache = (all = false) => { + alova.invalidateCache({ + name: new RegExp('^' + nameHookPrefix), + filter: method => { + if (all) { + return all; + } + const pageVal = _$(page); + return ![buildMethodName(pageVal - 1), buildMethodName(pageVal), buildMethodName(pageVal + 1)].includes( + method.config.name + ); + } + }); + }; + + // 单独拿出来的原因是 + // 无论同步调用几次insert、remove,或它们组合调用,reset操作只需要异步执行一次 + const resetSyncRunner = createSyncOnceRunner(); + const resetCache = () => { + resetSyncRunner(() => { + abortFetch(); + // 缓存失效 + invalidatePaginationCache(); + // 重新预加载前后一页的数据,需要在refresh被调用前执行,因为refresh时isRefresh为true,此时无法fetch数据 + // fetchPreviousPage(); + + // 强制请求下一页 + forceFetch = true; + fetchNextPage(); + forceFetch = false; + }); + }; + + /** + * 插入一条数据 + * onBefore、插入操作、onAfter三个都需要分别顺序异步执行,因为需要等待视图更新再执行 + * @param item 插入项 + * @param config 插入配置 + */ + const insert = (item, index = 0) => { + const pageVal = _$(page); + let popItem = undefined; + upd$(data, rawd => { + // 先从末尾去掉一项数据,保证操作页的数量为pageSize + popItem = rawd.pop(); + // 插入位置为空默认插到最前面 + index >= 0 ? rawd.splice(index, 0, item) : rawd.unshift(item); + return rawd; + }); + const totalVal = _$(total); + typeof totalVal === 'number' && upd$(totalLocal, totalVal + 1); + + // 当前页的缓存同步更新 + updateCurrentPageCache(); + + // 将pop的项放到下一页缓存的头部,与remove的操作保持一致 + // 这样在同步调用insert和remove时表现才一致 + const nextPage = pageVal + 1; + alova.setCacheData(buildMethodName(nextPage), rawData => { + const cachedListData = listDataGetter(rawData) || []; + cachedListData.unshift(popItem); + return rawData; + }); + + // 插入项后也需要让缓存失效,以免不同条件下缓存未更新 + resetCache(); + }; + + /** + * 移除一条数据 + * @param index 移除的索引 + */ + const remove = index => { + const pageVal = _$(page); + const nextPage = pageVal + 1; + alova.setCacheData(buildMethodName(nextPage), data => { + const cachedListData = listDataGetter(data); + // 从下一页列表的头部开始取补位数据 + fillingItem = (cachedListData || []).shift(); + return data; + }); + + const isLastPageVal = _$(isLastPage); + if (fillingItem || isLastPageVal) { + // 如果有下一页数据则通过缓存数据补位 + if (!tempData) { + tempData = [..._$(data)]; + } + if (index >= 0) { + upd$(data, rawd => { + rawd.splice(index, 1); + // 如果有下一页的补位数据才去补位,因为有可能是最后一页才进入删除的 + fillingItem && rawd.push(fillingItem); + return rawd; + }); + const totalVal = _$(total); + totalVal && upd$(totalLocal, Math.max(totalVal - 1, 0)); // 不能小于0 + } + } else if (tempData) { + upd$(data, tempData); // 当移除项数都用完时还原数据,减少不必要的视图渲染 + } + // 当前页的缓存同步更新 + updateCurrentPageCache(); + + // 如果没有下一页数据,或同步删除的数量超过了pageSize,则恢复数据并重新加载本页 + // 需异步操作,因为可能超过pageSize后还有remove函数被同步执行 + resetCache(); + removeSyncRunner(() => { + // 移除最后一页数据时,就不需要再刷新了 + if (!fillingItem && !isLastPageVal) { + refresh(pageVal); + } + if (!append && isLastPageVal && _$(data).length <= 0) { + upd$(page, pageVal => pageVal - 1); // 翻页模式下,如果是最后一页且全部项被删除了,则往前翻一页 + } + tempData = undefined; + fillingItem = undefined; + }); + }; + + /** + * 替换列表中的项 + * @param {any} item 替换项 + * @param {number} index 插入位置 + */ + const replace = (item, index) => { + paginationAssert( + typeof index === 'number' && index < _$(data).length, + 'index must be a number that less than list length' + ); + upd$(data, rawd => { + rawd.splice(index, 1, item); + return rawd; + }); + // 当前页的缓存同步更新 + updateCurrentPageCache(); + }; + + /** + * 从第一页开始重新加载列表,并清空缓存 + */ + const reload = () => { + invalidatePaginationCache(true); + _$(page) === 1 ? send() : upd$(page, 1); + isReset = true; + }; + + /** @Returns */ + return { + ...states, + fetching: fetchStates.fetching, + onFetchSuccess: fetchStates.onSuccess, + onFetchError: fetchStates.onError, + onFetchComplete: fetchStates.onComplete, + + page: page, + pageSize: pageSize, + data: _exp$(data), + pageCount: _exp$(pageCount), + total: _exp$(total), + isLastPage: _exp$(isLastPage), + + refresh, + insert, + remove, + replace, + reload + }; + } + + /** + * 创建状态 + * @param data 创建状态的数据 + * @returns {FrameworkState} + */ + const $ = vue.ref; + + /** + * 创建计算属性 + * @param data 创建计算属性的数据 + * @returns {FrameworkState} + */ + const $$ = vue.computed; + + /** + * 脱水普通状态、计算属性或alova导出的状态,返回状态原始值 + * @param state 状态 + * @returns 状态原始值,即状态对应的数据 + */ + const _$ = state => state.value; + + /** + * 状态导出 + * @param state 状态 + * @returns 状态原始值 + */ + const _exp$ = state => state; + + /** + * 批量导出状态 + * @param state 状态 + * @returns 状态原始值 + */ + const _expBatch$ = (...states) => states.map(s => _exp$(s)); + + /** + * 更新状态值 + * @param state 更新的状态 + * @param newData 新状态值 + */ + const upd$ = (state, newData) => { + state.value = typeof newData === 'function' ? newData(state.value) : newData; + }; + + /** + * 监听状态触发回调 + * @param {import('vue').WatchSource} states 监听状态 + * @param {Function} cb 回调函数 + */ + const watch = (states, cb) => { + vue.watch(states, cb, { + flush: 'sync', + deep: true + }); + }; + + const usePagination = (handler, config = {}) => + usePagination_unified(handler, config, $, $$, upd$, _$, _exp$, _expBatch$, watch); + + exports.usePagination = usePagination; + + Object.defineProperty(exports, '__esModule', { value: true }); + +})); diff --git a/dist/alova-scene-vue.umd.min.js b/dist/alova-scene-vue.umd.min.js new file mode 100644 index 0000000..9c70158 --- /dev/null +++ b/dist/alova-scene-vue.umd.min.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("alova"),require("vue")):"function"==typeof define&&define.amd?define(["exports","alova","vue"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).AlovaSceneVue={},e.alova,e.vue)}(this,(function(e,t,n){"use strict";const o=(e=0)=>{let t;return n=>{t&&clearTimeout(t),t=setTimeout(n,e)}},a=[],i={},r=()=>{let e=Math.random().toString(36).substring(2);return i[e]&&(e=r()),e};const s=(c="hooks/usePagination",(e,t)=>{if(!e)throw new Error(`[alova/${c}:Error]${t}`)});var c;let u=0;function l(e,{preloadPreviousPage:n=!0,preloadNextPage:c=!0,total:l=(e=>e.total),data:d=(e=>e.data),initialData:f,append:h=!1,initialPage:p=1,initialPageSize:g=10,debounce:m,watchingStates:v=[],immediate:b=!0},y,P,S,x,C,$,w){const D=u++;let E=!1,j=!1;const F=y(p),M=y(g),T=y([]),A=`pagination-hook-${D}`,k=e=>`${A}-${e}-${x(M)}-${v.map((e=>(e=>{if(!["object","function","symbol"].includes(typeof e))return e;let t=a.find((({ref:t})=>t===e));if(!t){const n=r();t={id:n,ref:e},a.push(t),i[n]=1}return t.id})(x(e)))).join("-")}`,q=e=>d(e)||e,z=t=>{const n=t||x(F),o=x(M),a=e(n,o);return a.config.name=k(n),a};w(v,(()=>{S(F,1),j=!0}));const R=t.useWatcher(z,[...v,F,M],{immediate:b,initialData:f,debounce:m,force:()=>E}),{send:_}=R,L=y(void 0),N=P((()=>{const e=l(x(R.data)),t=x(L);return void 0!==t?t:e}),$(R.data,L)),O=P((()=>{const e=x(N);return void 0!==e?Math.ceil(e/x(M)):void 0}),$(M,N)),V=(e,t=!1)=>{const n=x(O),o=n?e>n:!!t&&q(x(R.data)).length0&&!o},W=()=>{const e=x(F)+1;!E&&c&&V(e,!0)&&J(z(e))},B=P((()=>{const e=x(F),t=x(O),n=q(x(R.data)),o=Array.isArray(n)?n.length:0;return t?e>=t:o{t.setCacheData(k(x(F)),(e=>{const t=q(e)||[];return t.splice(0,t.length,...x(T)),e}))};let H=!1;const I=t.useFetcher({force:()=>E||H}),{fetch:J,abort:K}=I;R.onSuccess(((e,t)=>{S(L,void 0),(()=>{const e=x(F)-1;!E&&n&&V(e)&&J(z(e))})(),W();const o=x(M),a=q(e);h?(j&&S(T,[]),void 0===t?S(T,[...x(T),...a]):t&&S(T,(e=>(e.splice((t-1)*o,o,...a),e)))):S(T,a),E=!1,j=!1}));const Q=t=>{E=!0,h?(s(t<=x(F),"Refresh page can't greater than page"),_(t)):t===x(F)?_():J(e(t,x(M)))};let U,X;const Y=o(),Z=(e=!1)=>{t.invalidateCache({name:new RegExp("^"+A),filter:t=>{if(e)return e;const n=x(F);return![k(n-1),k(n),k(n+1)].includes(t.config.name)}})},ee=o(),te=()=>{ee((()=>{K(),Z(),H=!0,W(),H=!1}))};return{...R,fetching:I.fetching,onFetchSuccess:I.onSuccess,onFetchError:I.onError,onFetchComplete:I.onComplete,page:F,pageSize:M,data:C(T),pageCount:C(O),total:C(N),isLastPage:C(B),refresh:Q,insert:(e,n=0)=>{const o=x(F);let a;S(T,(t=>(a=t.pop(),n>=0?t.splice(n,0,e):t.unshift(e),t)));const i=x(N);"number"==typeof i&&S(L,i+1),G();const r=o+1;t.setCacheData(k(r),(e=>((q(e)||[]).unshift(a),e))),te()},remove:e=>{const n=x(F),o=n+1;t.setCacheData(k(o),(e=>{const t=q(e);return X=(t||[]).shift(),e}));const a=x(B);if(X||a){if(U||(U=[...x(T)]),e>=0){S(T,(t=>(t.splice(e,1),X&&t.push(X),t)));const t=x(N);t&&S(L,Math.max(t-1,0))}}else U&&S(T,U);G(),te(),Y((()=>{X||a||Q(n),!h&&a&&x(T).length<=0&&S(F,(e=>e-1)),U=void 0,X=void 0}))},replace:(e,t)=>{s("number"==typeof t&&t(n.splice(t,1,e),n))),G()},reload:()=>{Z(!0),1===x(F)?_():S(F,1),j=!0}}}const d=n.ref,f=n.computed,h=e=>e.value,p=e=>e,g=(...e)=>e.map((e=>e)),m=(e,t)=>{e.value="function"==typeof t?t(e.value):t},v=(e,t)=>{n.watch(e,t,{flush:"sync",deep:!0})};e.usePagination=(e,t={})=>l(e,t,d,f,m,h,p,g,v),Object.defineProperty(e,"__esModule",{value:!0})})); diff --git a/packages/mock/jest.config.ts b/jest.config.ts similarity index 97% rename from packages/mock/jest.config.ts rename to jest.config.ts index 78a7783..4f9e155 100644 --- a/packages/mock/jest.config.ts +++ b/jest.config.ts @@ -64,9 +64,7 @@ export default { // maxWorkers: "50%", // An array of directory names to be searched recursively up from the requiring module's location - // moduleDirectories: [ - // "node_modules" - // ], + // moduleDirectories: ['/node_modules', 'node_modules'], // An array of file extensions your modules use moduleFileExtensions: [ @@ -82,9 +80,9 @@ export default { ], // A map from regular expressions to module names or to arrays of module names that allow to stub out resources with a single module - // moduleNameMapper: { - // '^@alova/helper$': '../helper/src/index.ts' - // }, + moduleNameMapper: { + // must use absolute paths + }, // An array of regexp pattern strings, matched against all module paths before considered 'visible' to the module loader // modulePathIgnorePatterns: [], @@ -166,7 +164,7 @@ export default { }, // An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation - transformIgnorePatterns: ['/node_modules/(?!(alova|@alova\\/mock|@alova\\/helper)/)'] + transformIgnorePatterns: ['/node_modules/(?!(alova|@alova\\/mock)/)'] // An array of regexp pattern strings that are matched against all modules before the module loader will automatically return a mock for them // unmockedModulePathPatterns: undefined, diff --git a/package-lock.json b/package-lock.json index 1d95d9c..bc61cef 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,16 +1,15 @@ { - "name": "alova-extensions", - "version": "1.0.0", + "name": "@alova/scene", + "version": "1.0.0-beta.14", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "alova-extensions", - "version": "1.0.0", - "workspaces": [ - "packages/*" - ], + "name": "@alova/scene", + "version": "1.0.0-beta.14", + "license": "MIT", "devDependencies": { + "@alova/mock": "^1.0.4", "@babel/core": "^7.18.2", "@babel/preset-env": "^7.18.2", "@rollup/plugin-commonjs": "^22.0.0", @@ -52,17 +51,11 @@ "dev": true, "license": "MIT" }, - "node_modules/@alova/helper": { - "resolved": "packages/helper", - "link": true - }, - "node_modules/@alova/hooks": { - "resolved": "packages/hooks", - "link": true - }, "node_modules/@alova/mock": { - "resolved": "packages/mock", - "link": true + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/@alova/mock/-/mock-1.0.4.tgz", + "integrity": "sha512-JZlMoUDCYEpty5eGttB+o+Oog+2H1J3v+MPdvcTyNU143pxhUtk8HXw33uayK3jvL90Ex2gOs/dv0zSDm9JKeA==", + "dev": true }, "node_modules/@ampproject/remapping": { "version": "2.2.0", @@ -9322,17 +9315,20 @@ "packages/helper": { "name": "@alova/helper", "version": "1.0.0-alpha.1", + "extraneous": true, "license": "MIT" }, "packages/hooks": { "name": "@alova/hooks", "version": "1.0.0-beta.9", + "extraneous": true, "license": "MIT", "devDependencies": {} }, "packages/mock": { "name": "@alova/mock", "version": "1.0.4", + "extraneous": true, "license": "MIT" } }, @@ -9343,14 +9339,11 @@ "integrity": "sha512-+u76oB43nOHrF4DDWRLWDCtci7f3QJoEBigemIdIeTi1ODqjx6Tad9NCVnPRwewWlKkVab5PlK8DCtPTyX7S8g==", "dev": true }, - "@alova/helper": { - "version": "file:packages/helper" - }, - "@alova/hooks": { - "version": "file:packages/hooks" - }, "@alova/mock": { - "version": "file:packages/mock" + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/@alova/mock/-/mock-1.0.4.tgz", + "integrity": "sha512-JZlMoUDCYEpty5eGttB+o+Oog+2H1J3v+MPdvcTyNU143pxhUtk8HXw33uayK3jvL90Ex2gOs/dv0zSDm9JKeA==", + "dev": true }, "@ampproject/remapping": { "version": "2.2.0", diff --git a/package.json b/package.json index 2f392ca..63939f6 100644 --- a/package.json +++ b/package.json @@ -1,44 +1,66 @@ { - "name": "alova-extensions", - "version": "1.0.0", - "description": "The extensions of alova.js", - "homepage": "https://github.com/alovajs/extensions", - "private": true, - "workspaces": [ - "packages/*" - ], + "name": "@alova/scene", + "version": "1.0.0-beta.14", + "description": "scenario hooks with alova.js", + "homepage": "https://github.com/alovajs/scene", + "main": "dist/alova-extended-hooks.umd.min.js", + "jsnext:main": "dist/alova-extended-hooks.esm.js", + "module": "dist/alova-extended-hooks.esm.js", + "types": "typings/index.d.ts", "scripts": { + "test": "jest", + "test:coverage": "jest --coverage", "clean": "rimraf ./dist", - "build:esm": "npm run clean && rollup -c config/rollup.config.esm.js" + "build:vuehooks:esm": "cross-env NODE_ENV=development EXTENSION=vuehooks rollup -c ./config/rollup.config.esm.js", + "build:vuehooks:umd": "cross-env NODE_ENV=development EXTENSION=vuehooks rollup -c ./config/rollup.config.umd.js", + "build:vuehooks:umd.min": "cross-env NODE_ENV=production EXTENSION=vuehooks rollup -c ./config/rollup.config.umd.js", + "build:vuehooks": "npm run build:vuehooks:esm && npm run build:vuehooks:umd && npm run build:vuehooks:umd.min", + "build:reacthooks:esm": "cross-env NODE_ENV=development EXTENSION=reacthooks rollup -c ./config/rollup.config.esm.js", + "build:reacthooks:umd": "cross-env NODE_ENV=development EXTENSION=reacthooks rollup -c ./config/rollup.config.umd.js", + "build:reacthooks:umd.min": "cross-env NODE_ENV=production EXTENSION=reacthooks rollup -c ./config/rollup.config.umd.js", + "build:reacthooks": "npm run build:reacthooks:esm && npm run build:reacthooks:umd && npm run build:reacthooks:umd.min", + "build:sveltehooks:esm": "cross-env NODE_ENV=development EXTENSION=sveltehooks rollup -c ./config/rollup.config.esm.js", + "build:sveltehooks:umd": "cross-env NODE_ENV=development EXTENSION=sveltehooks rollup -c ./config/rollup.config.umd.js", + "build:sveltehooks:umd.min": "cross-env NODE_ENV=production EXTENSION=sveltehooks rollup -c ./config/rollup.config.umd.js", + "build:sveltehooks": "npm run build:sveltehooks:esm && npm run build:sveltehooks:umd && npm run build:sveltehooks:umd.min", + "build": "npm run clean && npm run build:vuehooks && npm run build:reacthooks && npm run build:sveltehooks" + }, + "publishConfig": { + "access": "public" }, + "author": "JOU-amjs", + "license": "MIT", "repository": { "type": "git", - "url": "git://github.com/alovajs/extensions.git" + "url": "git://github.com/alovajs/scene.git" }, "bugs": { - "url": "https://github.com/alovajs/extensions/issues" + "url": "https://github.com/alovajs/scene/issues" }, - "keywords": [ - "react", - "hooks", - "xmlhttprequest", - "vuejs", - "typescript", - "vue", - "reactjs", - "svelte", - "axios", - "request", - "fetch-api", - "vue3", - "react-hooks", - "superagent", - "alova", - "alova-extension", - "@alova/hooks", - "alova/mock" + "files": [ + "dist", + "typings/*.d.ts" ], + "exports": { + "./vue": "./dist/alova-scene-vue.esm.js", + "./react": "./dist/alova-scene-react.esm.js", + "./svelte": "./dist/alova-scene-svelte.esm.js" + }, + "typesVersions": { + "*": { + "vue": [ + "typings/vue-scene.d.ts" + ], + "react": [ + "typings/react-scene.d.ts" + ], + "svelte": [ + "typings/svelte-scene.d.ts" + ] + } + }, "devDependencies": { + "@alova/mock": "^1.0.4", "@babel/core": "^7.18.2", "@babel/preset-env": "^7.18.2", "@rollup/plugin-commonjs": "^22.0.0", diff --git a/packages/helper/README.md b/packages/helper/README.md deleted file mode 100644 index d75fc41..0000000 --- a/packages/helper/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# @alova/helper - -helpers which extended packages of alova.js diff --git a/packages/helper/package.json b/packages/helper/package.json deleted file mode 100644 index 357119b..0000000 --- a/packages/helper/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "@alova/helper", - "version": "1.0.0-alpha.1", - "description": "helpers which extended packages of alova.js", - "private": true, - "jsnext:main": "src/index.ts", - "module": "src/index.ts", - "types": "typings/index.d.ts", - "author": "JOU-amjs", - "license": "MIT", - "repository": { - "type": "git", - "url": "git://github.com/alovajs/extensions.git" - }, - "bugs": { - "url": "https://github.com/alovajs/extensions/issues" - } -} diff --git a/packages/helper/src/createSyncOnceRunner.ts b/packages/helper/src/createSyncOnceRunner.ts deleted file mode 100644 index 536f835..0000000 --- a/packages/helper/src/createSyncOnceRunner.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * 创建同步多次调用只在异步执行一次的执行器 - */ -export default (delay = 0) => { - let timer: NodeJS.Timer; - - /** - * 执行多次调用此函数将异步执行一次 - */ - return (fn: () => void) => { - if (timer) { - clearTimeout(timer); - } - timer = setTimeout(fn, delay); - }; -}; diff --git a/packages/helper/src/index.ts b/packages/helper/src/index.ts deleted file mode 100644 index 9d73c35..0000000 --- a/packages/helper/src/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export { default as createSyncOnceRunner } from './createSyncOnceRunner'; -export { default as getUniqueReferenceId } from './getUniqueReferenceId'; -export * from './utils'; diff --git a/packages/helper/src/utils.ts b/packages/helper/src/utils.ts deleted file mode 100644 index 1d881db..0000000 --- a/packages/helper/src/utils.ts +++ /dev/null @@ -1,14 +0,0 @@ -export const noop = () => {}; - -/** - * 自定义断言函数,表达式为false时抛出错误 - * @param expression 判断表达式,true或false - * @param msg 断言消息 - */ -export function createAssert(prefix: string) { - return (expression: boolean, msg: string) => { - if (!expression) { - throw new Error(`[alova/${prefix}:Error]${msg}`); - } - }; -} diff --git a/packages/hooks/README.md b/packages/hooks/README.md deleted file mode 100644 index a4406a1..0000000 --- a/packages/hooks/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# @alova/hooks - -extended hooks with alova.js - -## UsePagination - -| Framework | available | tested | -| --------- | --------- | ------ | -| vue | ✅ | ✅ | -| react | ✅ | ❌ | -| svelte | ✅ | ❌ | diff --git a/packages/hooks/jest.config.ts b/packages/hooks/jest.config.ts deleted file mode 100644 index b0a2d42..0000000 --- a/packages/hooks/jest.config.ts +++ /dev/null @@ -1,183 +0,0 @@ -/* - * For a detailed explanation regarding each configuration property and type check, visit: - * https://jestjs.io/docs/configuration - */ -import { resolve } from 'path'; - -export default { - // All imported modules in your tests should be mocked automatically - // automock: false, - - // Stop running tests after `n` failures - // bail: 0, - - // The directory where Jest should store its cached dependency information - // cacheDirectory: "C:\\Users\\Administrator\\AppData\\Local\\Temp\\jest", - - // Automatically clear mock calls, instances, contexts and results before every test - // clearMocks: false, - - // Indicates whether the coverage information should be collected while executing the test - collectCoverage: false, - - // An array of glob patterns indicating a set of files for which coverage information should be collected - // collectCoverageFrom: undefined, - - // The directory where Jest should output its coverage files - coverageDirectory: 'coverage', - - // An array of regexp pattern strings used to skip coverage collection - coveragePathIgnorePatterns: ['\\\\node_modules\\\\', '/node_modules/', 'test/mockData.js', 'test/components'], - - // Indicates which provider should be used to instrument code for coverage - coverageProvider: 'v8', - - // A list of reporter names that Jest uses when writing coverage reports - coverageReporters: ['json', 'text', 'lcov', 'clover'], - - // An object that configures minimum threshold enforcement for coverage results - // coverageThreshold: undefined, - - // A path to a custom dependency extractor - // dependencyExtractor: undefined, - - // Make calling deprecated APIs throw helpful error messages - // errorOnDeprecated: false, - - // The default configuration for fake timers - // fakeTimers: { - // "enableGlobally": false - // }, - - // Force coverage collection from ignored files using an array of glob patterns - // forceCoverageMatch: [], - - // A path to a module which exports an async function that is triggered once before all test suites - // globalSetup: undefined, - - // A path to a module which exports an async function that is triggered once after all test suites - // globalTeardown: undefined, - - // A set of global variables that need to be available in all test environments - // globals: {}, - - // The maximum amount of workers used to run your tests. Can be specified as % or a number. E.g. maxWorkers: 10% will use 10% of your CPU amount + 1 as the maximum worker number. maxWorkers: 2 will use a maximum of 2 workers. - // maxWorkers: "50%", - - // An array of directory names to be searched recursively up from the requiring module's location - // moduleDirectories: ['/node_modules', 'node_modules'], - - // An array of file extensions your modules use - moduleFileExtensions: [ - 'js', - // "mjs", - // "cjs", - 'jsx', - 'ts', - 'tsx', - 'json', - 'node', - 'svelte' - ], - - // A map from regular expressions to module names or to arrays of module names that allow to stub out resources with a single module - moduleNameMapper: { - // must use absolute paths - '^@alova/mock$': resolve(__dirname, '../mock/src/index.ts'), - '^@alova/helper$': resolve(__dirname, '../helper/src/index.ts') - }, - - // An array of regexp pattern strings, matched against all module paths before considered 'visible' to the module loader - // modulePathIgnorePatterns: [], - - // Activates notifications for test results - // notify: false, - - // An enum that specifies notification mode. Requires { notify: true } - // notifyMode: "failure-change", - - // A preset that is used as a base for Jest's configuration - preset: 'ts-jest', - - // Run tests from one or more projects - // projects: undefined, - - // Use this configuration option to add custom reporters to Jest - // reporters: undefined, - - // Automatically reset mock state before every test - // resetMocks: false, - - // Reset the module registry before running each individual test - // resetModules: false, - - // A path to a custom resolver - // resolver: undefined, - - // Automatically restore mock state and implementation before every test - // restoreMocks: false, - - // The root directory that Jest should scan for tests and modules within - // rootDir: undefined, - - // A list of paths to directories that Jest should use to search for files in - // roots: [ - // "" - // ], - - // Allows you to use a custom runner instead of Jest's default test runner - // runner: "jest-runner", - - // The paths to modules that run some code to configure or set up the testing environment before each test - // setupFiles: [], - - // A list of paths to modules that run some code to configure or set up the testing framework before each test - // setupFilesAfterEnv: [], - - // The number of seconds after which a test is considered as slow and reported as such in the results. - // slowTestThreshold: 5, - - // A list of paths to snapshot serializer modules Jest should use for snapshot testing - // snapshotSerializers: [], - - // The test environment that will be used for testing - testEnvironment: 'jsdom', - - testMatch: ['**/?(*.)+(spec|test).[tj]s?(x)'], - - // An array of regexp pattern strings that are matched against all test paths, matched tests are skipped - testPathIgnorePatterns: [ - '\\\\node_modules\\\\', // windows - '/node_modules/' // mac - ], - - // The regexp pattern or array of patterns that Jest uses to detect test files - // testRegex: [], - - // This option allows the use of a custom results processor - // testResultsProcessor: undefined, - - // This option allows use of a custom test runner - // testRunner: "jest-circus/runner", - - // A map from regular expressions to paths to transformers - transform: { - '^.+\\.[tj]s?$': 'ts-jest', - '^.+\\.svelte$': 'svelte-jester' - }, - - // An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation - transformIgnorePatterns: ['/node_modules/(?!(alova|@alova\\/mock|@alova\\/helper)/)'] - - // An array of regexp pattern strings that are matched against all modules before the module loader will automatically return a mock for them - // unmockedModulePathPatterns: undefined, - - // Indicates whether each individual test should be reported during the run - // verbose: undefined, - - // An array of regexp patterns that are matched against all source file paths before re-running tests in watch mode - // watchPathIgnorePatterns: [], - - // Whether to use watchman for file crawling - // watchman: true, -}; diff --git a/packages/hooks/package.json b/packages/hooks/package.json deleted file mode 100644 index dfebba6..0000000 --- a/packages/hooks/package.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "name": "@alova/hooks", - "version": "1.0.0-beta.14", - "description": "extended hooks with alova.js", - "homepage": "https://github.com/alovajs/extensions/packages/hooks", - "main": "dist/alova-extended-hooks.umd.min.js", - "jsnext:main": "dist/alova-extended-hooks.esm.js", - "module": "dist/alova-extended-hooks.esm.js", - "types": "typings/index.d.ts", - "scripts": { - "test": "jest", - "test:coverage": "jest --coverage", - "clean": "rimraf ./dist", - "build:vuehooks:esm": "cross-env NODE_ENV=development EXTENSION=vuehooks rollup -c ../../config/rollup.config.esm.js", - "build:vuehooks:umd": "cross-env NODE_ENV=development EXTENSION=vuehooks rollup -c ../../config/rollup.config.umd.js", - "build:vuehooks:umd.min": "cross-env NODE_ENV=production EXTENSION=vuehooks rollup -c ../../config/rollup.config.umd.js", - "build:vuehooks": "npm run build:vuehooks:esm && npm run build:vuehooks:umd && npm run build:vuehooks:umd.min", - "build:reacthooks:esm": "cross-env NODE_ENV=development EXTENSION=reacthooks rollup -c ../../config/rollup.config.esm.js", - "build:reacthooks:umd": "cross-env NODE_ENV=development EXTENSION=reacthooks rollup -c ../../config/rollup.config.umd.js", - "build:reacthooks:umd.min": "cross-env NODE_ENV=production EXTENSION=reacthooks rollup -c ../../config/rollup.config.umd.js", - "build:reacthooks": "npm run build:reacthooks:esm && npm run build:reacthooks:umd && npm run build:reacthooks:umd.min", - "build:sveltehooks:esm": "cross-env NODE_ENV=development EXTENSION=sveltehooks rollup -c ../../config/rollup.config.esm.js", - "build:sveltehooks:umd": "cross-env NODE_ENV=development EXTENSION=sveltehooks rollup -c ../../config/rollup.config.umd.js", - "build:sveltehooks:umd.min": "cross-env NODE_ENV=production EXTENSION=sveltehooks rollup -c ../../config/rollup.config.umd.js", - "build:sveltehooks": "npm run build:sveltehooks:esm && npm run build:sveltehooks:umd && npm run build:sveltehooks:umd.min", - "build": "npm run clean && npm run build:vuehooks && npm run build:reacthooks && npm run build:sveltehooks" - }, - "publishConfig": { - "access": "public" - }, - "author": "JOU-amjs", - "license": "MIT", - "repository": { - "type": "git", - "url": "git://github.com/alovajs/extensions.git" - }, - "bugs": { - "url": "https://github.com/alovajs/extensions/issues" - }, - "files": [ - "dist", - "typings/*.d.ts" - ], - "exports": { - "./vue": "./dist/alova-vue-hooks.esm.js", - "./react": "./dist/alova-react-hooks.esm.js", - "./svelte": "./dist/alova-svelte-hooks.esm.js" - }, - "typesVersions": { - "*": { - "vue": [ - "typings/vue-extension.d.ts" - ], - "react": [ - "typings/react-extension.d.ts" - ], - "svelte": [ - "typings/svelte-extension.d.ts" - ] - } - }, - "devDependencies": {} -} diff --git a/packages/hooks/tsconfig.json b/packages/hooks/tsconfig.json deleted file mode 100644 index 1864d58..0000000 --- a/packages/hooks/tsconfig.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "../../tsconfig.json" -} diff --git a/packages/mock/LICENSE b/packages/mock/LICENSE deleted file mode 100644 index 6997546..0000000 --- a/packages/mock/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2022 alovajs - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/packages/mock/README.md b/packages/mock/README.md deleted file mode 100644 index 69c9c50..0000000 --- a/packages/mock/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# @alova/mock -A mock request adapter of alova.js diff --git a/packages/mock/babel.config.js b/packages/mock/babel.config.js deleted file mode 100644 index 650f6ff..0000000 --- a/packages/mock/babel.config.js +++ /dev/null @@ -1,12 +0,0 @@ -module.exports = { - presets: [ - [ - "@babel/preset-env", - { - targets: { - node: "current" - } - } - ] - ] -}; \ No newline at end of file diff --git a/packages/mock/package.json b/packages/mock/package.json deleted file mode 100644 index 4c14be1..0000000 --- a/packages/mock/package.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "@alova/mock", - "version": "1.0.4", - "description": "A mock request adapter of alova.js", - "homepage": "https://github.com/alovajs/extensions/packages/mock", - "main": "dist/alova-mock.umd.min.js", - "jsnext:main": "dist/alova-mock.esm.js", - "module": "dist/alova-mock.esm.js", - "types": "typings/index.d.ts", - "scripts": { - "clean": "rimraf ./dist", - "build:esm": "cross-env NODE_ENV=development EXTENSION=mock rollup -c ../../config/rollup.config.esm.js", - "build:umd": "cross-env NODE_ENV=development EXTENSION=mock rollup -c ../../config/rollup.config.umd.js", - "build:umd.min": "cross-env NODE_ENV=production EXTENSION=mock rollup -c ../../config/rollup.config.umd.js", - "build": "npm run clean && npm run build:esm && npm run build:umd && npm run build:umd.min", - "release": "npm publish", - "coveralls": "" - }, - "publishConfig": { - "access": "public" - }, - "author": "JOU-amjs", - "license": "MIT", - "repository": { - "type": "git", - "url": "git://github.com/alovajs/extensions.git" - }, - "bugs": { - "url": "https://github.com/alovajs/extensions/issues" - }, - "files": [ - "dist", - "typings/*.d.ts" - ] -} diff --git a/packages/mock/src/MockRequest.ts b/packages/mock/src/MockRequest.ts deleted file mode 100644 index 4fdf0a1..0000000 --- a/packages/mock/src/MockRequest.ts +++ /dev/null @@ -1,118 +0,0 @@ -import { AlovaRequestAdapterConfig } from 'alova'; -import { Mock, MockRequestInit } from '../typings'; -import consoleRequestInfo from './consoleRequestInfo'; - -const defaultOnMockResponse = (data: any) => new Response(JSON.stringify(data)); -type MockRequestInitWithMock = MockRequestInit & { mock: Mock }; -export default function MockRequest( - { - // 此enable为总开关 - enable = true, - delay = 2000, - httpAdapter, - mockRequestLogger = true, - mock, - onMockResponse = defaultOnMockResponse as (data: any) => any - }: MockRequestInitWithMock = { mock: {} } -) { - return (adapterConfig: AlovaRequestAdapterConfig) => { - const anchor = document.createElement('a'); - const { url, data } = adapterConfig; - anchor.href = url; - - // 获取当前请求的模拟数据集合,如果enable为false,则不返回模拟数据 - mock = (enable && mock) || {}; - - // 用正则表达式解析search参数为对象 - const searchParams = new URLSearchParams(anchor.search); - const query: Record = {}; - for (const [key, value] of searchParams) { - query[key] = value; - } - - const params: Record = {}; - const pathnameSplited = anchor.pathname.split('/'); - const foundMockDataKeys = Object.keys(mock).filter(key => { - // 如果key的前面是-,表示忽略此模拟数据,此时也返回false - if (key.startsWith('-')) { - return false; - } - - // 匹配请求方法 - let method = 'GET'; - key = key.replace(/^\[(GET|POST|PUT|DELETE|PATCH|HEAD|OPTIONS|TRACE|CONNECT)\]/i, (_, $1) => { - method = $1.toUpperCase(); - return ''; - }); - - // 请求方法不匹配,返回false - if (method !== adapterConfig.method.toUpperCase()) { - return false; - } - - const keySplited = key.split('/'); - if (keySplited.length !== pathnameSplited.length) { - return false; - } - - // 通过相同下标匹配来判断是否匹配该路径 - // 如果遇到通配符则直接通过 - for (const i in keySplited) { - const keySplitedItem = keySplited[i]; - const matchedParamKey = (keySplitedItem.match(/^\{(.*)\}$/) || ['', ''])[1]; - if (!matchedParamKey) { - if (keySplitedItem !== pathnameSplited[i]) { - return false; - } - } else { - params[matchedParamKey] = pathnameSplited[i]; - } - } - return true; - }); - - // 如果匹配了多个,则优先使用没有通配符的,如果都有通配符则使用第一个匹配到的 - let finalKey = foundMockDataKeys.find(key => !/\{.*\}/.test(key)); - finalKey = finalKey || foundMockDataKeys.shift(); - const mockDataRaw = finalKey ? mock[finalKey] : undefined; - - // 如果没有匹配到模拟数据,则表示要发起请求使用httpAdapter来发送请求 - if (mockDataRaw === undefined) { - if (httpAdapter) { - mockRequestLogger && consoleRequestInfo(false, url, adapterConfig.method, adapterConfig.headers, query); - return httpAdapter(adapterConfig); - } else { - throw new Error(`could not find the httpAdapter which send request.\n[url]${url}`); - } - } - - let timer: NodeJS.Timeout; - return { - response: () => - new Promise((resolve, reject) => { - timer = setTimeout(() => { - const responseData = - typeof mockDataRaw === 'function' - ? mockDataRaw({ - query, - params, - data - }) - : mockDataRaw; - if (responseData) { - // 打印模拟数据请求信息 - mockRequestLogger && - consoleRequestInfo(true, url, adapterConfig.method, adapterConfig.headers, query, data, responseData); - resolve(onMockResponse(responseData)); - } else { - reject(new Error('404 api not found')); - } - }, delay); - }), - headers: () => Promise.resolve(new Headers()), - abort: () => { - clearTimeout(timer); - } - }; - }; -} diff --git a/packages/mock/src/consoleRequestInfo.ts b/packages/mock/src/consoleRequestInfo.ts deleted file mode 100644 index 1f426d2..0000000 --- a/packages/mock/src/consoleRequestInfo.ts +++ /dev/null @@ -1,58 +0,0 @@ -// 预定义的样式和固定文本 -const mockLabel = 'Mock'; -const mockLabelColor = '#64E8D6'; -const realRequestLabel = 'Realtime'; -const realRequestLabelColor = '#999999'; -const labelStyle = (bgColor: string, borderColor = '') => { - let style = `padding: 2px 6px; background: ${bgColor}; color: white;`; - if (borderColor) { - style += `border: solid 1px ${borderColor}`; - } - return style; -}; -const titleStyle = () => `color: black; font-size: 12px; font-weight: bolder`; -const transform2TableData = (obj: AnyObject) => { - const tableData = {} as AnyObject; - for (const key in obj) { - tableData[key] = { value: obj[key] }; - } - return tableData; -}; - -type AnyObject = Record; -// 打印请求信息,模拟数据请求专用 -export default function ( - isMock: boolean, - url: string, - method: string, - requestHeaders: AnyObject, - queryStringParams: AnyObject, - requestBody?: any, - response?: any -) { - console.groupCollapsed( - `%c${isMock ? mockLabel : realRequestLabel}`, - labelStyle(isMock ? mockLabelColor : realRequestLabelColor), - url - ); - - // 请求方法 - console.log('%c[Method]', titleStyle(), method.toUpperCase()); - - // 输出Request Headers - console.log('%c[Request Headers]', titleStyle()); - console.table(transform2TableData(requestHeaders)); - - // 输出Query String Parameters - console.log('%c[Query String Parameters]', titleStyle()); - console.table(transform2TableData(queryStringParams)); - - // 输出request body - console.log('%c[Request Body]', titleStyle(), requestBody || ''); - - // 输出response body - if (isMock) { - console.log('%c[Response Body]', titleStyle(), response || ''); - } - console.groupEnd(); -} diff --git a/packages/mock/src/createAlovaMockAdapter.ts b/packages/mock/src/createAlovaMockAdapter.ts deleted file mode 100644 index 4af8ffd..0000000 --- a/packages/mock/src/createAlovaMockAdapter.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { Mock, MockRequestInit } from '../typings'; -import MockRequest from './MockRequest'; - -type MockWrapper = { - enable: boolean; - data: Mock; -}; - -/** - * 创建alova模拟数据请求适配器 - * @param baseURL 模拟的基础url,用于命名空间使用,与createAlova函数的baseURL参数保持一致 - * @returns 创建一个模拟定义器 - */ -export default function createAlovaMockAdapter( - mockWrapper: MockWrapper[], - options: MockRequestInit = { enable: true } -) { - let uniqueMockMap: Mock = {}; - mockWrapper - .filter(({ enable }) => enable) - .forEach(({ data }) => { - uniqueMockMap = { - ...data, - ...uniqueMockMap - }; - }); - return MockRequest({ - ...options, - mock: uniqueMockMap - }); -} diff --git a/packages/mock/src/defineMock.ts b/packages/mock/src/defineMock.ts deleted file mode 100644 index 77e8b54..0000000 --- a/packages/mock/src/defineMock.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Mock, MockWrapper } from '../typings'; - -/** - * 定义模拟数据 - * @param mock 模拟数据集合,可以是函数或者数据,如果是函数,它将接收一个包含了query、params、data三个属性的参数,分别表示查询参数、路径参数和请求体数据 - * @param enable 是否使用此模拟数据集合,默认为true - */ -export default (mock: Mock, enable = true): MockWrapper => ({ - enable, - data: mock -}); diff --git a/packages/mock/src/index.ts b/packages/mock/src/index.ts deleted file mode 100644 index 33edd66..0000000 --- a/packages/mock/src/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { default as createAlovaMockAdapter } from './createAlovaMockAdapter'; -export { default as defineMock } from './defineMock'; diff --git a/packages/mock/src/types.ts b/packages/mock/src/types.ts deleted file mode 100644 index 8b13789..0000000 --- a/packages/mock/src/types.ts +++ /dev/null @@ -1 +0,0 @@ - diff --git a/packages/mock/tsconfig.json b/packages/mock/tsconfig.json deleted file mode 100644 index 1864d58..0000000 --- a/packages/mock/tsconfig.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "../../tsconfig.json" -} diff --git a/packages/mock/typings/index.d.ts b/packages/mock/typings/index.d.ts deleted file mode 100644 index cec0c34..0000000 --- a/packages/mock/typings/index.d.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { AlovaRequestAdapter } from 'alova'; - -interface MockRequestInit { - enable?: boolean; - delay?: number; - httpAdapter?: AlovaRequestAdapter; - mockRequestLogger?: boolean; // 是否打印模拟请求信息,便于调试 - onMockResponse?: (data: any) => RE; -} - -type Args = Record; -type MockFunction = (args: { query: Args; params: Args; data: Args }) => any; -type Mock = Record | any[]>; - -interface MockWrapper { - enable: boolean; - data: Mock; -} - -export declare function createAlovaMockAdapter( - mockWrapper: MockWrapper[], - options?: MockRequestInit -): AlovaRequestAdapter; -export declare function defineMock(mock: Mock, enable?: boolean): MockWrapper; diff --git a/packages/hooks/src/core/usePagination_unified.js b/src/core/usePagination_unified.js similarity index 99% rename from packages/hooks/src/core/usePagination_unified.js rename to src/core/usePagination_unified.js index e0f5c3a..4d2c9ac 100644 --- a/packages/hooks/src/core/usePagination_unified.js +++ b/src/core/usePagination_unified.js @@ -1,5 +1,5 @@ -import { createAssert, createSyncOnceRunner, getUniqueReferenceId } from '@alova/helper'; import { invalidateCache, setCacheData, useFetcher, useWatcher } from 'alova'; +import { createAssert, createSyncOnceRunner, getUniqueReferenceId } from '../helper'; const paginationAssert = createAssert('hooks/usePagination'); let counter = 0; @@ -80,8 +80,8 @@ export default function ( const exceedPageCount = pageCountVal ? preloadPage > pageCountVal : isNextPage // 如果是判断预加载下一页数据且没有pageCount的情况下,通过最后一页数据量是否达到pageSize来判断 - ? listDataGetter(_$(states.data)).length < _$(pageSize) - : false; + ? listDataGetter(_$(states.data)).length < _$(pageSize) + : false; return preloadPage > 0 && !exceedPageCount; }; diff --git a/packages/hooks/src/framework/react.js b/src/framework/react.js similarity index 100% rename from packages/hooks/src/framework/react.js rename to src/framework/react.js diff --git a/packages/hooks/src/framework/svelte.js b/src/framework/svelte.js similarity index 96% rename from packages/hooks/src/framework/svelte.js rename to src/framework/svelte.js index 641e283..ec1bae1 100644 --- a/packages/hooks/src/framework/svelte.js +++ b/src/framework/svelte.js @@ -1,5 +1,5 @@ -import { createSyncOnceRunner } from '@alova/helper'; import { derived, writable } from 'svelte/store'; +import { createSyncOnceRunner } from '../helper'; /** * 创建状态 diff --git a/packages/hooks/src/framework/vue.js b/src/framework/vue.js similarity index 100% rename from packages/hooks/src/framework/vue.js rename to src/framework/vue.js diff --git a/packages/helper/src/getUniqueReferenceId.ts b/src/helper/index.ts similarity index 51% rename from packages/helper/src/getUniqueReferenceId.ts rename to src/helper/index.ts index bbd7983..3697315 100644 --- a/packages/helper/src/getUniqueReferenceId.ts +++ b/src/helper/index.ts @@ -1,3 +1,20 @@ +/** + * 创建同步多次调用只在异步执行一次的执行器 + */ +export const createSyncOnceRunner = (delay = 0) => { + let timer: NodeJS.Timer; + + /** + * 执行多次调用此函数将异步执行一次 + */ + return (fn: () => void) => { + if (timer) { + clearTimeout(timer); + } + timer = setTimeout(fn, delay); + }; +}; + const referenceList = [] as { id: string; ref: any }[]; const uniqueIds: Record = {}; const generateUniqueId = () => { @@ -13,7 +30,7 @@ const generateUniqueId = () => { * @param {reference} 引用类型数据 * @returns uniqueId */ -export default (reference: any) => { +export const getUniqueReferenceId = (reference: any) => { const refType = typeof reference; if (!['object', 'function', 'symbol'].includes(refType)) { return reference; @@ -31,3 +48,18 @@ export default (reference: any) => { } return existedRef.id; }; + +export const noop = () => {}; + +/** + * 自定义断言函数,表达式为false时抛出错误 + * @param expression 判断表达式,true或false + * @param msg 断言消息 + */ +export function createAssert(prefix: string) { + return (expression: boolean, msg: string) => { + if (!expression) { + throw new Error(`[alova/${prefix}:Error]${msg}`); + } + }; +} diff --git a/packages/hooks/src/index-react.js b/src/index-react.js similarity index 100% rename from packages/hooks/src/index-react.js rename to src/index-react.js diff --git a/packages/hooks/src/index-svelte.js b/src/index-svelte.js similarity index 100% rename from packages/hooks/src/index-svelte.js rename to src/index-svelte.js diff --git a/packages/hooks/src/index-vue.js b/src/index-vue.js similarity index 100% rename from packages/hooks/src/index-vue.js rename to src/index-vue.js diff --git a/packages/hooks/test/mockData.js b/test/mockData.js similarity index 100% rename from packages/hooks/test/mockData.js rename to test/mockData.js diff --git a/packages/hooks/test/utils.ts b/test/utils.ts similarity index 100% rename from packages/hooks/test/utils.ts rename to test/utils.ts diff --git a/packages/hooks/test/vue/usePagination.spec.js b/test/vue/usePagination.spec.js similarity index 100% rename from packages/hooks/test/vue/usePagination.spec.js rename to test/vue/usePagination.spec.js diff --git a/tsconfig.json b/tsconfig.json index 83dd14d..8b28a84 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -25,10 +25,8 @@ "allowJs": true }, "paths": { - "@/*": ["src/*"], - "@mock/*": ["packages/mock/*"], - "@hooks/*": ["packages/hooks/*"] + "@/*": ["src/*"] }, - "include": ["packages/**/*.ts", "packages/**.d.ts"], - "exclude": ["node_modules", "packages/*/node_modules", "**.d.ts"] + "include": ["src/**/*.ts", "typings/*.d.ts"], + "exclude": ["node_modules", "**.d.ts"] } diff --git a/packages/hooks/typings/index.d.ts b/typings/index.d.ts similarity index 100% rename from packages/hooks/typings/index.d.ts rename to typings/index.d.ts diff --git a/packages/hooks/typings/react-extension.d.ts b/typings/react-scene.d.ts similarity index 100% rename from packages/hooks/typings/react-extension.d.ts rename to typings/react-scene.d.ts diff --git a/packages/hooks/typings/svelte-extension.d.ts b/typings/svelte-scene.d.ts similarity index 100% rename from packages/hooks/typings/svelte-extension.d.ts rename to typings/svelte-scene.d.ts diff --git a/packages/hooks/typings/vue-extension.d.ts b/typings/vue-scene.d.ts similarity index 100% rename from packages/hooks/typings/vue-extension.d.ts rename to typings/vue-scene.d.ts diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index b764989..0000000 --- a/yarn.lock +++ /dev/null @@ -1,5192 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@adobe/css-tools@^4.0.1": - "integrity" "sha512-+u76oB43nOHrF4DDWRLWDCtci7f3QJoEBigemIdIeTi1ODqjx6Tad9NCVnPRwewWlKkVab5PlK8DCtPTyX7S8g==" - "resolved" "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.0.1.tgz" - "version" "4.0.1" - -"@alova/helper@file:E:\\艺施胡\\extensions\\packages\\helper": - "resolved" "file:packages/helper" - "version" "1.0.0-alpha.1" - -"@alova/hooks@file:E:\\艺施胡\\extensions\\packages\\hooks": - "resolved" "file:packages/hooks" - "version" "1.0.0-beta.9" - -"@alova/mock@file:E:\\艺施胡\\extensions\\packages\\mock": - "resolved" "file:packages/mock" - "version" "1.0.4" - -"@ampproject/remapping@^2.1.0": - "integrity" "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==" - "resolved" "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz" - "version" "2.2.0" - dependencies: - "@jridgewell/gen-mapping" "^0.1.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6": - "integrity" "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==" - "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/highlight" "^7.18.6" - -"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.0", "@babel/compat-data@^7.20.1": - "integrity" "sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==" - "resolved" "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz" - "version" "7.20.1" - -"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.11.6", "@babel/core@^7.12.0", "@babel/core@^7.12.3", "@babel/core@^7.13.0", "@babel/core@^7.18.2", "@babel/core@^7.4.0-0", "@babel/core@^7.8.0", "@babel/core@>=7.0.0-beta.0 <8": - "integrity" "sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g==" - "resolved" "https://registry.npmjs.org/@babel/core/-/core-7.20.2.tgz" - "version" "7.20.2" - dependencies: - "@ampproject/remapping" "^2.1.0" - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.20.2" - "@babel/helper-compilation-targets" "^7.20.0" - "@babel/helper-module-transforms" "^7.20.2" - "@babel/helpers" "^7.20.1" - "@babel/parser" "^7.20.2" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.20.1" - "@babel/types" "^7.20.2" - "convert-source-map" "^1.7.0" - "debug" "^4.1.0" - "gensync" "^1.0.0-beta.2" - "json5" "^2.2.1" - "semver" "^6.3.0" - -"@babel/generator@^7.20.1", "@babel/generator@^7.20.2", "@babel/generator@^7.7.2": - "integrity" "sha512-SD75PMIK6i9H8G/tfGvB4KKl4Nw6Ssos9nGgYwxbgyTP0iX/Z55DveoH86rmUB/YHTQQ+ZC0F7xxaY8l2OF44Q==" - "resolved" "https://registry.npmjs.org/@babel/generator/-/generator-7.20.2.tgz" - "version" "7.20.2" - dependencies: - "@babel/types" "^7.20.2" - "@jridgewell/gen-mapping" "^0.3.2" - "jsesc" "^2.5.1" - -"@babel/helper-annotate-as-pure@^7.18.6": - "integrity" "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==" - "resolved" "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": - "integrity" "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==" - "resolved" "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-explode-assignable-expression" "^7.18.6" - "@babel/types" "^7.18.9" - -"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.20.0": - "integrity" "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==" - "resolved" "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz" - "version" "7.20.0" - dependencies: - "@babel/compat-data" "^7.20.0" - "@babel/helper-validator-option" "^7.18.6" - "browserslist" "^4.21.3" - "semver" "^6.3.0" - -"@babel/helper-create-class-features-plugin@^7.18.6": - "integrity" "sha512-k22GoYRAHPYr9I+Gvy2ZQlAe5mGy8BqWst2wRt8cwIufWTxrsVshhIBvYNqC80N0GSFWTsqRVexOtfzlgOEDvA==" - "resolved" "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.2.tgz" - "version" "7.20.2" - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.19.0" - "@babel/helper-member-expression-to-functions" "^7.18.9" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-replace-supers" "^7.19.1" - "@babel/helper-split-export-declaration" "^7.18.6" - -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.19.0": - "integrity" "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==" - "resolved" "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz" - "version" "7.19.0" - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "regexpu-core" "^5.1.0" - -"@babel/helper-define-polyfill-provider@^0.3.3": - "integrity" "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==" - "resolved" "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz" - "version" "0.3.3" - dependencies: - "@babel/helper-compilation-targets" "^7.17.7" - "@babel/helper-plugin-utils" "^7.16.7" - "debug" "^4.1.1" - "lodash.debounce" "^4.0.8" - "resolve" "^1.14.2" - "semver" "^6.1.2" - -"@babel/helper-environment-visitor@^7.18.9": - "integrity" "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==" - "resolved" "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz" - "version" "7.18.9" - -"@babel/helper-explode-assignable-expression@^7.18.6": - "integrity" "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==" - "resolved" "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-function-name@^7.18.9", "@babel/helper-function-name@^7.19.0": - "integrity" "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==" - "resolved" "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz" - "version" "7.19.0" - dependencies: - "@babel/template" "^7.18.10" - "@babel/types" "^7.19.0" - -"@babel/helper-hoist-variables@^7.18.6": - "integrity" "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==" - "resolved" "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-member-expression-to-functions@^7.18.9": - "integrity" "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==" - "resolved" "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/types" "^7.18.9" - -"@babel/helper-module-imports@^7.18.6": - "integrity" "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==" - "resolved" "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.19.6", "@babel/helper-module-transforms@^7.20.2": - "integrity" "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==" - "resolved" "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz" - "version" "7.20.2" - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-simple-access" "^7.20.2" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/helper-validator-identifier" "^7.19.1" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.20.1" - "@babel/types" "^7.20.2" - -"@babel/helper-optimise-call-expression@^7.18.6": - "integrity" "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==" - "resolved" "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - "integrity" "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==" - "resolved" "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz" - "version" "7.20.2" - -"@babel/helper-remap-async-to-generator@^7.18.6", "@babel/helper-remap-async-to-generator@^7.18.9": - "integrity" "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==" - "resolved" "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-wrap-function" "^7.18.9" - "@babel/types" "^7.18.9" - -"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.19.1": - "integrity" "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==" - "resolved" "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz" - "version" "7.19.1" - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-member-expression-to-functions" "^7.18.9" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/traverse" "^7.19.1" - "@babel/types" "^7.19.0" - -"@babel/helper-simple-access@^7.19.4", "@babel/helper-simple-access@^7.20.2": - "integrity" "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==" - "resolved" "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz" - "version" "7.20.2" - dependencies: - "@babel/types" "^7.20.2" - -"@babel/helper-skip-transparent-expression-wrappers@^7.18.9": - "integrity" "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==" - "resolved" "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz" - "version" "7.20.0" - dependencies: - "@babel/types" "^7.20.0" - -"@babel/helper-split-export-declaration@^7.18.6": - "integrity" "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==" - "resolved" "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-string-parser@^7.19.4": - "integrity" "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==" - "resolved" "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz" - "version" "7.19.4" - -"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": - "integrity" "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" - "resolved" "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz" - "version" "7.19.1" - -"@babel/helper-validator-option@^7.18.6": - "integrity" "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==" - "resolved" "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz" - "version" "7.18.6" - -"@babel/helper-wrap-function@^7.18.9": - "integrity" "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==" - "resolved" "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz" - "version" "7.19.0" - dependencies: - "@babel/helper-function-name" "^7.19.0" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.0" - "@babel/types" "^7.19.0" - -"@babel/helpers@^7.20.1": - "integrity" "sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==" - "resolved" "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.1.tgz" - "version" "7.20.1" - dependencies: - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.20.1" - "@babel/types" "^7.20.0" - -"@babel/highlight@^7.18.6": - "integrity" "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==" - "resolved" "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-validator-identifier" "^7.18.6" - "chalk" "^2.0.0" - "js-tokens" "^4.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.4", "@babel/parser@^7.18.10", "@babel/parser@^7.20.1", "@babel/parser@^7.20.2": - "integrity" "sha512-afk318kh2uKbo7BEj2QtEi8HVCGrwHUffrYDy7dgVcSa2j9lY3LDjPzcyGdpX7xgm35aWqvciZJ4WKmdF/SxYg==" - "resolved" "https://registry.npmjs.org/@babel/parser/-/parser-7.20.2.tgz" - "version" "7.20.2" - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": - "integrity" "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9": - "integrity" "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" - "@babel/plugin-proposal-optional-chaining" "^7.18.9" - -"@babel/plugin-proposal-async-generator-functions@^7.20.1": - "integrity" "sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz" - "version" "7.20.1" - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-remap-async-to-generator" "^7.18.9" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-proposal-class-properties@^7.18.6": - "integrity" "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-proposal-class-static-block@^7.18.6": - "integrity" "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - -"@babel/plugin-proposal-dynamic-import@^7.18.6": - "integrity" "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - -"@babel/plugin-proposal-export-namespace-from@^7.18.9": - "integrity" "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@babel/plugin-proposal-json-strings@^7.18.6": - "integrity" "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-json-strings" "^7.8.3" - -"@babel/plugin-proposal-logical-assignment-operators@^7.18.9": - "integrity" "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": - "integrity" "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-proposal-numeric-separator@^7.18.6": - "integrity" "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-proposal-object-rest-spread@^7.20.2": - "integrity" "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz" - "version" "7.20.2" - dependencies: - "@babel/compat-data" "^7.20.1" - "@babel/helper-compilation-targets" "^7.20.0" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.20.1" - -"@babel/plugin-proposal-optional-catch-binding@^7.18.6": - "integrity" "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-proposal-optional-chaining@^7.18.9": - "integrity" "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-proposal-private-methods@^7.18.6": - "integrity" "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-proposal-private-property-in-object@^7.18.6": - "integrity" "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - -"@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - "integrity" "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-syntax-async-generators@^7.8.4": - "integrity" "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" - "version" "7.8.4" - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-bigint@^7.8.3": - "integrity" "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz" - "version" "7.8.3" - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": - "integrity" "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" - "version" "7.12.13" - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-class-static-block@^7.14.5": - "integrity" "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz" - "version" "7.14.5" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-dynamic-import@^7.8.3": - "integrity" "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz" - "version" "7.8.3" - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-export-namespace-from@^7.8.3": - "integrity" "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz" - "version" "7.8.3" - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-import-assertions@^7.20.0": - "integrity" "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz" - "version" "7.20.0" - dependencies: - "@babel/helper-plugin-utils" "^7.19.0" - -"@babel/plugin-syntax-import-meta@^7.8.3": - "integrity" "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" - "version" "7.10.4" - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-json-strings@^7.8.3": - "integrity" "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" - "version" "7.8.3" - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-jsx@^7.7.2": - "integrity" "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": - "integrity" "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" - "version" "7.10.4" - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - "integrity" "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" - "version" "7.8.3" - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": - "integrity" "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" - "version" "7.10.4" - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - "integrity" "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" - "version" "7.8.3" - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - "integrity" "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" - "version" "7.8.3" - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - "integrity" "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" - "version" "7.8.3" - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-private-property-in-object@^7.14.5": - "integrity" "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz" - "version" "7.14.5" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": - "integrity" "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" - "version" "7.14.5" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-typescript@^7.7.2": - "integrity" "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz" - "version" "7.20.0" - dependencies: - "@babel/helper-plugin-utils" "^7.19.0" - -"@babel/plugin-transform-arrow-functions@^7.18.6": - "integrity" "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-async-to-generator@^7.18.6": - "integrity" "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-remap-async-to-generator" "^7.18.6" - -"@babel/plugin-transform-block-scoped-functions@^7.18.6": - "integrity" "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-block-scoping@^7.20.2": - "integrity" "sha512-y5V15+04ry69OV2wULmwhEA6jwSWXO1TwAtIwiPXcvHcoOQUqpyMVd2bDsQJMW8AurjulIyUV8kDqtjSwHy1uQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.2.tgz" - "version" "7.20.2" - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - -"@babel/plugin-transform-classes@^7.20.2": - "integrity" "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz" - "version" "7.20.2" - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-compilation-targets" "^7.20.0" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.19.0" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-replace-supers" "^7.19.1" - "@babel/helper-split-export-declaration" "^7.18.6" - "globals" "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.18.9": - "integrity" "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-destructuring@^7.20.2": - "integrity" "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz" - "version" "7.20.2" - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - -"@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": - "integrity" "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-duplicate-keys@^7.18.9": - "integrity" "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-exponentiation-operator@^7.18.6": - "integrity" "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-for-of@^7.18.8": - "integrity" "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz" - "version" "7.18.8" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-function-name@^7.18.9": - "integrity" "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-function-name" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-literals@^7.18.9": - "integrity" "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-member-expression-literals@^7.18.6": - "integrity" "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-modules-amd@^7.19.6": - "integrity" "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz" - "version" "7.19.6" - dependencies: - "@babel/helper-module-transforms" "^7.19.6" - "@babel/helper-plugin-utils" "^7.19.0" - -"@babel/plugin-transform-modules-commonjs@^7.19.6": - "integrity" "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz" - "version" "7.19.6" - dependencies: - "@babel/helper-module-transforms" "^7.19.6" - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-simple-access" "^7.19.4" - -"@babel/plugin-transform-modules-systemjs@^7.19.6": - "integrity" "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz" - "version" "7.19.6" - dependencies: - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-module-transforms" "^7.19.6" - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-validator-identifier" "^7.19.1" - -"@babel/plugin-transform-modules-umd@^7.18.6": - "integrity" "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-module-transforms" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.19.1": - "integrity" "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz" - "version" "7.19.1" - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.19.0" - "@babel/helper-plugin-utils" "^7.19.0" - -"@babel/plugin-transform-new-target@^7.18.6": - "integrity" "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-object-super@^7.18.6": - "integrity" "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-replace-supers" "^7.18.6" - -"@babel/plugin-transform-parameters@^7.20.1": - "integrity" "sha512-nDvKLrAvl+kf6BOy1UJ3MGwzzfTMgppxwiD2Jb4LO3xjYyZq30oQzDNJbCQpMdG9+j2IXHoiMrw5Cm/L6ZoxXQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.1.tgz" - "version" "7.20.1" - dependencies: - "@babel/helper-plugin-utils" "^7.19.0" - -"@babel/plugin-transform-property-literals@^7.18.6": - "integrity" "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-regenerator@^7.18.6": - "integrity" "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "regenerator-transform" "^0.15.0" - -"@babel/plugin-transform-reserved-words@^7.18.6": - "integrity" "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-shorthand-properties@^7.18.6": - "integrity" "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-spread@^7.19.0": - "integrity" "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz" - "version" "7.19.0" - dependencies: - "@babel/helper-plugin-utils" "^7.19.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" - -"@babel/plugin-transform-sticky-regex@^7.18.6": - "integrity" "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-template-literals@^7.18.9": - "integrity" "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-typeof-symbol@^7.18.9": - "integrity" "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz" - "version" "7.18.9" - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-unicode-escapes@^7.18.10": - "integrity" "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz" - "version" "7.18.10" - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-unicode-regex@^7.18.6": - "integrity" "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/preset-env@^7.18.2": - "integrity" "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==" - "resolved" "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz" - "version" "7.20.2" - dependencies: - "@babel/compat-data" "^7.20.1" - "@babel/helper-compilation-targets" "^7.20.0" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-validator-option" "^7.18.6" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" - "@babel/plugin-proposal-async-generator-functions" "^7.20.1" - "@babel/plugin-proposal-class-properties" "^7.18.6" - "@babel/plugin-proposal-class-static-block" "^7.18.6" - "@babel/plugin-proposal-dynamic-import" "^7.18.6" - "@babel/plugin-proposal-export-namespace-from" "^7.18.9" - "@babel/plugin-proposal-json-strings" "^7.18.6" - "@babel/plugin-proposal-logical-assignment-operators" "^7.18.9" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" - "@babel/plugin-proposal-numeric-separator" "^7.18.6" - "@babel/plugin-proposal-object-rest-spread" "^7.20.2" - "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" - "@babel/plugin-proposal-optional-chaining" "^7.18.9" - "@babel/plugin-proposal-private-methods" "^7.18.6" - "@babel/plugin-proposal-private-property-in-object" "^7.18.6" - "@babel/plugin-proposal-unicode-property-regex" "^7.18.6" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.20.0" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-transform-arrow-functions" "^7.18.6" - "@babel/plugin-transform-async-to-generator" "^7.18.6" - "@babel/plugin-transform-block-scoped-functions" "^7.18.6" - "@babel/plugin-transform-block-scoping" "^7.20.2" - "@babel/plugin-transform-classes" "^7.20.2" - "@babel/plugin-transform-computed-properties" "^7.18.9" - "@babel/plugin-transform-destructuring" "^7.20.2" - "@babel/plugin-transform-dotall-regex" "^7.18.6" - "@babel/plugin-transform-duplicate-keys" "^7.18.9" - "@babel/plugin-transform-exponentiation-operator" "^7.18.6" - "@babel/plugin-transform-for-of" "^7.18.8" - "@babel/plugin-transform-function-name" "^7.18.9" - "@babel/plugin-transform-literals" "^7.18.9" - "@babel/plugin-transform-member-expression-literals" "^7.18.6" - "@babel/plugin-transform-modules-amd" "^7.19.6" - "@babel/plugin-transform-modules-commonjs" "^7.19.6" - "@babel/plugin-transform-modules-systemjs" "^7.19.6" - "@babel/plugin-transform-modules-umd" "^7.18.6" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.19.1" - "@babel/plugin-transform-new-target" "^7.18.6" - "@babel/plugin-transform-object-super" "^7.18.6" - "@babel/plugin-transform-parameters" "^7.20.1" - "@babel/plugin-transform-property-literals" "^7.18.6" - "@babel/plugin-transform-regenerator" "^7.18.6" - "@babel/plugin-transform-reserved-words" "^7.18.6" - "@babel/plugin-transform-shorthand-properties" "^7.18.6" - "@babel/plugin-transform-spread" "^7.19.0" - "@babel/plugin-transform-sticky-regex" "^7.18.6" - "@babel/plugin-transform-template-literals" "^7.18.9" - "@babel/plugin-transform-typeof-symbol" "^7.18.9" - "@babel/plugin-transform-unicode-escapes" "^7.18.10" - "@babel/plugin-transform-unicode-regex" "^7.18.6" - "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.20.2" - "babel-plugin-polyfill-corejs2" "^0.3.3" - "babel-plugin-polyfill-corejs3" "^0.6.0" - "babel-plugin-polyfill-regenerator" "^0.4.1" - "core-js-compat" "^3.25.1" - "semver" "^6.3.0" - -"@babel/preset-modules@^0.1.5": - "integrity" "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==" - "resolved" "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz" - "version" "0.1.5" - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-transform-dotall-regex" "^7.4.4" - "@babel/types" "^7.4.4" - "esutils" "^2.0.2" - -"@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": - "integrity" "sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==" - "resolved" "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.1.tgz" - "version" "7.20.1" - dependencies: - "regenerator-runtime" "^0.13.10" - -"@babel/template@^7.18.10", "@babel/template@^7.3.3": - "integrity" "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==" - "resolved" "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz" - "version" "7.18.10" - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/parser" "^7.18.10" - "@babel/types" "^7.18.10" - -"@babel/traverse@^7.19.0", "@babel/traverse@^7.19.1", "@babel/traverse@^7.20.1", "@babel/traverse@^7.7.2": - "integrity" "sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==" - "resolved" "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.1.tgz" - "version" "7.20.1" - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.20.1" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.19.0" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.20.1" - "@babel/types" "^7.20.0" - "debug" "^4.1.0" - "globals" "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - "integrity" "sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==" - "resolved" "https://registry.npmjs.org/@babel/types/-/types-7.20.2.tgz" - "version" "7.20.2" - dependencies: - "@babel/helper-string-parser" "^7.19.4" - "@babel/helper-validator-identifier" "^7.19.1" - "to-fast-properties" "^2.0.0" - -"@bcoe/v8-coverage@^0.2.3": - "integrity" "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==" - "resolved" "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" - "version" "0.2.3" - -"@cspotcode/source-map-support@^0.8.0": - "integrity" "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==" - "resolved" "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz" - "version" "0.8.1" - dependencies: - "@jridgewell/trace-mapping" "0.3.9" - -"@istanbuljs/load-nyc-config@^1.0.0": - "integrity" "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==" - "resolved" "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" - "version" "1.1.0" - dependencies: - "camelcase" "^5.3.1" - "find-up" "^4.1.0" - "get-package-type" "^0.1.0" - "js-yaml" "^3.13.1" - "resolve-from" "^5.0.0" - -"@istanbuljs/schema@^0.1.2": - "integrity" "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==" - "resolved" "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz" - "version" "0.1.3" - -"@jest/console@^29.2.1": - "integrity" "sha512-MF8Adcw+WPLZGBiNxn76DOuczG3BhODTcMlDCA4+cFi41OkaY/lyI0XUUhi73F88Y+7IHoGmD80pN5CtxQUdSw==" - "resolved" "https://registry.npmjs.org/@jest/console/-/console-29.2.1.tgz" - "version" "29.2.1" - dependencies: - "@jest/types" "^29.2.1" - "@types/node" "*" - "chalk" "^4.0.0" - "jest-message-util" "^29.2.1" - "jest-util" "^29.2.1" - "slash" "^3.0.0" - -"@jest/core@^29.2.2": - "integrity" "sha512-susVl8o2KYLcZhhkvSB+b7xX575CX3TmSvxfeDjpRko7KmT89rHkXj6XkDkNpSeFMBzIENw5qIchO9HC9Sem+A==" - "resolved" "https://registry.npmjs.org/@jest/core/-/core-29.2.2.tgz" - "version" "29.2.2" - dependencies: - "@jest/console" "^29.2.1" - "@jest/reporters" "^29.2.2" - "@jest/test-result" "^29.2.1" - "@jest/transform" "^29.2.2" - "@jest/types" "^29.2.1" - "@types/node" "*" - "ansi-escapes" "^4.2.1" - "chalk" "^4.0.0" - "ci-info" "^3.2.0" - "exit" "^0.1.2" - "graceful-fs" "^4.2.9" - "jest-changed-files" "^29.2.0" - "jest-config" "^29.2.2" - "jest-haste-map" "^29.2.1" - "jest-message-util" "^29.2.1" - "jest-regex-util" "^29.2.0" - "jest-resolve" "^29.2.2" - "jest-resolve-dependencies" "^29.2.2" - "jest-runner" "^29.2.2" - "jest-runtime" "^29.2.2" - "jest-snapshot" "^29.2.2" - "jest-util" "^29.2.1" - "jest-validate" "^29.2.2" - "jest-watcher" "^29.2.2" - "micromatch" "^4.0.4" - "pretty-format" "^29.2.1" - "slash" "^3.0.0" - "strip-ansi" "^6.0.0" - -"@jest/environment@^29.2.2": - "integrity" "sha512-OWn+Vhu0I1yxuGBJEFFekMYc8aGBGrY4rt47SOh/IFaI+D7ZHCk7pKRiSoZ2/Ml7b0Ony3ydmEHRx/tEOC7H1A==" - "resolved" "https://registry.npmjs.org/@jest/environment/-/environment-29.2.2.tgz" - "version" "29.2.2" - dependencies: - "@jest/fake-timers" "^29.2.2" - "@jest/types" "^29.2.1" - "@types/node" "*" - "jest-mock" "^29.2.2" - -"@jest/expect-utils@^29.2.2": - "integrity" "sha512-vwnVmrVhTmGgQzyvcpze08br91OL61t9O0lJMDyb6Y/D8EKQ9V7rGUb/p7PDt0GPzK0zFYqXWFo4EO2legXmkg==" - "resolved" "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.2.2.tgz" - "version" "29.2.2" - dependencies: - "jest-get-type" "^29.2.0" - -"@jest/expect@^29.2.2": - "integrity" "sha512-zwblIZnrIVt8z/SiEeJ7Q9wKKuB+/GS4yZe9zw7gMqfGf4C5hBLGrVyxu1SzDbVSqyMSlprKl3WL1r80cBNkgg==" - "resolved" "https://registry.npmjs.org/@jest/expect/-/expect-29.2.2.tgz" - "version" "29.2.2" - dependencies: - "expect" "^29.2.2" - "jest-snapshot" "^29.2.2" - -"@jest/fake-timers@^29.2.2": - "integrity" "sha512-nqaW3y2aSyZDl7zQ7t1XogsxeavNpH6kkdq+EpXncIDvAkjvFD7hmhcIs1nWloengEWUoWqkqSA6MSbf9w6DgA==" - "resolved" "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.2.2.tgz" - "version" "29.2.2" - dependencies: - "@jest/types" "^29.2.1" - "@sinonjs/fake-timers" "^9.1.2" - "@types/node" "*" - "jest-message-util" "^29.2.1" - "jest-mock" "^29.2.2" - "jest-util" "^29.2.1" - -"@jest/globals@^29.2.2": - "integrity" "sha512-/nt+5YMh65kYcfBhj38B3Hm0Trk4IsuMXNDGKE/swp36yydBWfz3OXkLqkSvoAtPW8IJMSJDFCbTM2oj5SNprw==" - "resolved" "https://registry.npmjs.org/@jest/globals/-/globals-29.2.2.tgz" - "version" "29.2.2" - dependencies: - "@jest/environment" "^29.2.2" - "@jest/expect" "^29.2.2" - "@jest/types" "^29.2.1" - "jest-mock" "^29.2.2" - -"@jest/reporters@^29.2.2": - "integrity" "sha512-AzjL2rl2zJC0njIzcooBvjA4sJjvdoq98sDuuNs4aNugtLPSQ+91nysGKRF0uY1to5k0MdGMdOBggUsPqvBcpA==" - "resolved" "https://registry.npmjs.org/@jest/reporters/-/reporters-29.2.2.tgz" - "version" "29.2.2" - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^29.2.1" - "@jest/test-result" "^29.2.1" - "@jest/transform" "^29.2.2" - "@jest/types" "^29.2.1" - "@jridgewell/trace-mapping" "^0.3.15" - "@types/node" "*" - "chalk" "^4.0.0" - "collect-v8-coverage" "^1.0.0" - "exit" "^0.1.2" - "glob" "^7.1.3" - "graceful-fs" "^4.2.9" - "istanbul-lib-coverage" "^3.0.0" - "istanbul-lib-instrument" "^5.1.0" - "istanbul-lib-report" "^3.0.0" - "istanbul-lib-source-maps" "^4.0.0" - "istanbul-reports" "^3.1.3" - "jest-message-util" "^29.2.1" - "jest-util" "^29.2.1" - "jest-worker" "^29.2.1" - "slash" "^3.0.0" - "string-length" "^4.0.1" - "strip-ansi" "^6.0.0" - "v8-to-istanbul" "^9.0.1" - -"@jest/schemas@^29.0.0": - "integrity" "sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==" - "resolved" "https://registry.npmjs.org/@jest/schemas/-/schemas-29.0.0.tgz" - "version" "29.0.0" - dependencies: - "@sinclair/typebox" "^0.24.1" - -"@jest/source-map@^29.2.0": - "integrity" "sha512-1NX9/7zzI0nqa6+kgpSdKPK+WU1p+SJk3TloWZf5MzPbxri9UEeXX5bWZAPCzbQcyuAzubcdUHA7hcNznmRqWQ==" - "resolved" "https://registry.npmjs.org/@jest/source-map/-/source-map-29.2.0.tgz" - "version" "29.2.0" - dependencies: - "@jridgewell/trace-mapping" "^0.3.15" - "callsites" "^3.0.0" - "graceful-fs" "^4.2.9" - -"@jest/test-result@^29.2.1": - "integrity" "sha512-lS4+H+VkhbX6z64tZP7PAUwPqhwj3kbuEHcaLuaBuB+riyaX7oa1txe0tXgrFj5hRWvZKvqO7LZDlNWeJ7VTPA==" - "resolved" "https://registry.npmjs.org/@jest/test-result/-/test-result-29.2.1.tgz" - "version" "29.2.1" - dependencies: - "@jest/console" "^29.2.1" - "@jest/types" "^29.2.1" - "@types/istanbul-lib-coverage" "^2.0.0" - "collect-v8-coverage" "^1.0.0" - -"@jest/test-sequencer@^29.2.2": - "integrity" "sha512-Cuc1znc1pl4v9REgmmLf0jBd3Y65UXJpioGYtMr/JNpQEIGEzkmHhy6W6DLbSsXeUA13TDzymPv0ZGZ9jH3eIw==" - "resolved" "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.2.2.tgz" - "version" "29.2.2" - dependencies: - "@jest/test-result" "^29.2.1" - "graceful-fs" "^4.2.9" - "jest-haste-map" "^29.2.1" - "slash" "^3.0.0" - -"@jest/transform@^29.2.2": - "integrity" "sha512-aPe6rrletyuEIt2axxgdtxljmzH8O/nrov4byy6pDw9S8inIrTV+2PnjyP/oFHMSynzGxJ2s6OHowBNMXp/Jzg==" - "resolved" "https://registry.npmjs.org/@jest/transform/-/transform-29.2.2.tgz" - "version" "29.2.2" - dependencies: - "@babel/core" "^7.11.6" - "@jest/types" "^29.2.1" - "@jridgewell/trace-mapping" "^0.3.15" - "babel-plugin-istanbul" "^6.1.1" - "chalk" "^4.0.0" - "convert-source-map" "^1.4.0" - "fast-json-stable-stringify" "^2.1.0" - "graceful-fs" "^4.2.9" - "jest-haste-map" "^29.2.1" - "jest-regex-util" "^29.2.0" - "jest-util" "^29.2.1" - "micromatch" "^4.0.4" - "pirates" "^4.0.4" - "slash" "^3.0.0" - "write-file-atomic" "^4.0.1" - -"@jest/types@^29.0.0", "@jest/types@^29.2.1": - "integrity" "sha512-O/QNDQODLnINEPAI0cl9U6zUIDXEWXt6IC1o2N2QENuos7hlGUIthlKyV4p6ki3TvXFX071blj8HUhgLGquPjw==" - "resolved" "https://registry.npmjs.org/@jest/types/-/types-29.2.1.tgz" - "version" "29.2.1" - dependencies: - "@jest/schemas" "^29.0.0" - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^17.0.8" - "chalk" "^4.0.0" - -"@jridgewell/gen-mapping@^0.1.0": - "integrity" "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==" - "resolved" "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz" - "version" "0.1.1" - dependencies: - "@jridgewell/set-array" "^1.0.0" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": - "integrity" "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==" - "resolved" "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz" - "version" "0.3.2" - dependencies: - "@jridgewell/set-array" "^1.0.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@3.1.0": - "integrity" "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" - "resolved" "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz" - "version" "3.1.0" - -"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": - "integrity" "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" - "resolved" "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" - "version" "1.1.2" - -"@jridgewell/source-map@^0.3.2": - "integrity" "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==" - "resolved" "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz" - "version" "0.3.2" - dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@1.4.14": - "integrity" "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" - "resolved" "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz" - "version" "1.4.14" - -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.15", "@jridgewell/trace-mapping@^0.3.9": - "integrity" "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==" - "resolved" "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz" - "version" "0.3.17" - dependencies: - "@jridgewell/resolve-uri" "3.1.0" - "@jridgewell/sourcemap-codec" "1.4.14" - -"@jridgewell/trace-mapping@0.3.9": - "integrity" "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==" - "resolved" "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" - "version" "0.3.9" - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@rollup/plugin-commonjs@^22.0.0": - "integrity" "sha512-//NdP6iIwPbMTcazYsiBMbJW7gfmpHom33u1beiIoHDEM0Q9clvtQB1T0efvMqHeKsGohiHo97BCPCkBXdscwg==" - "resolved" "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-22.0.2.tgz" - "version" "22.0.2" - dependencies: - "@rollup/pluginutils" "^3.1.0" - "commondir" "^1.0.1" - "estree-walker" "^2.0.1" - "glob" "^7.1.6" - "is-reference" "^1.2.1" - "magic-string" "^0.25.7" - "resolve" "^1.17.0" - -"@rollup/plugin-json@^4.1.0": - "integrity" "sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==" - "resolved" "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "@rollup/pluginutils" "^3.0.8" - -"@rollup/plugin-node-resolve@^13.3.0": - "integrity" "sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==" - "resolved" "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.3.0.tgz" - "version" "13.3.0" - dependencies: - "@rollup/pluginutils" "^3.1.0" - "@types/resolve" "1.17.1" - "deepmerge" "^4.2.2" - "is-builtin-module" "^3.1.0" - "is-module" "^1.0.0" - "resolve" "^1.19.0" - -"@rollup/plugin-replace@^4.0.0": - "integrity" "sha512-+rumQFiaNac9y64OHtkHGmdjm7us9bo1PlbgQfdihQtuNxzjpaB064HbRnewUOggLQxVCCyINfStkgmBeQpv1g==" - "resolved" "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "@rollup/pluginutils" "^3.1.0" - "magic-string" "^0.25.7" - -"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0": - "integrity" "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==" - "resolved" "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "@types/estree" "0.0.39" - "estree-walker" "^1.0.1" - "picomatch" "^2.2.2" - -"@rollup/pluginutils@^4.1.2": - "integrity" "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==" - "resolved" "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz" - "version" "4.2.1" - dependencies: - "estree-walker" "^2.0.1" - "picomatch" "^2.2.2" - -"@sinclair/typebox@^0.24.1": - "integrity" "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==" - "resolved" "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz" - "version" "0.24.51" - -"@sinonjs/commons@^1.7.0": - "integrity" "sha512-RpmQdHVo8hCEHDVpO39zToS9jOhR6nw+/lQAzRNq9ErrGV9IeHM71XCn68svVl/euFeVW6BWX4p35gkhbOcSIQ==" - "resolved" "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.4.tgz" - "version" "1.8.4" - dependencies: - "type-detect" "4.0.8" - -"@sinonjs/fake-timers@^9.1.2": - "integrity" "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==" - "resolved" "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz" - "version" "9.1.2" - dependencies: - "@sinonjs/commons" "^1.7.0" - -"@testing-library/jest-dom@^5.16.4": - "integrity" "sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA==" - "resolved" "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.16.5.tgz" - "version" "5.16.5" - dependencies: - "@adobe/css-tools" "^4.0.1" - "@babel/runtime" "^7.9.2" - "@types/testing-library__jest-dom" "^5.9.1" - "aria-query" "^5.0.0" - "chalk" "^3.0.0" - "css.escape" "^1.5.1" - "dom-accessibility-api" "^0.5.6" - "lodash" "^4.17.15" - "redent" "^3.0.0" - -"@tootallnate/once@2": - "integrity" "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==" - "resolved" "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz" - "version" "2.0.0" - -"@tsconfig/node10@^1.0.7": - "integrity" "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==" - "resolved" "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz" - "version" "1.0.9" - -"@tsconfig/node12@^1.0.7": - "integrity" "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==" - "resolved" "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz" - "version" "1.0.11" - -"@tsconfig/node14@^1.0.0": - "integrity" "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==" - "resolved" "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz" - "version" "1.0.3" - -"@tsconfig/node16@^1.0.2": - "integrity" "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==" - "resolved" "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz" - "version" "1.0.3" - -"@types/babel__core@^7.1.14": - "integrity" "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==" - "resolved" "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz" - "version" "7.1.19" - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - "integrity" "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==" - "resolved" "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz" - "version" "7.6.4" - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - "integrity" "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==" - "resolved" "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz" - "version" "7.4.1" - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - "integrity" "sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg==" - "resolved" "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.2.tgz" - "version" "7.18.2" - dependencies: - "@babel/types" "^7.3.0" - -"@types/eslint-visitor-keys@^1.0.0": - "integrity" "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==" - "resolved" "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz" - "version" "1.0.0" - -"@types/estree@*": - "integrity" "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==" - "resolved" "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz" - "version" "1.0.0" - -"@types/estree@0.0.39": - "integrity" "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==" - "resolved" "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz" - "version" "0.0.39" - -"@types/graceful-fs@^4.1.3": - "integrity" "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==" - "resolved" "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz" - "version" "4.1.5" - dependencies: - "@types/node" "*" - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - "integrity" "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==" - "resolved" "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz" - "version" "2.0.4" - -"@types/istanbul-lib-report@*": - "integrity" "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==" - "resolved" "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^3.0.0": - "integrity" "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==" - "resolved" "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "@types/istanbul-lib-report" "*" - -"@types/jest@*": - "integrity" "sha512-og1wAmdxKoS71K2ZwSVqWPX6OVn3ihZ6ZT2qvZvZQm90lJVDyXIjYcu4Khx2CNIeaFv12rOU/YObOsI3VOkzog==" - "resolved" "https://registry.npmjs.org/@types/jest/-/jest-29.2.2.tgz" - "version" "29.2.2" - dependencies: - "expect" "^29.0.0" - "pretty-format" "^29.0.0" - -"@types/jest@^27.5.1": - "integrity" "sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==" - "resolved" "https://registry.npmjs.org/@types/jest/-/jest-27.5.2.tgz" - "version" "27.5.2" - dependencies: - "jest-matcher-utils" "^27.0.0" - "pretty-format" "^27.0.0" - -"@types/jsdom@^20.0.0": - "integrity" "sha512-YfAchFs0yM1QPDrLm2VHe+WHGtqms3NXnXAMolrgrVP6fgBHHXy1ozAbo/dFtPNtZC/m66bPiCTWYmqp1F14gA==" - "resolved" "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.0.tgz" - "version" "20.0.0" - dependencies: - "@types/node" "*" - "@types/tough-cookie" "*" - "parse5" "^7.0.0" - -"@types/json-schema@^7.0.3": - "integrity" "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" - "resolved" "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz" - "version" "7.0.11" - -"@types/lodash@^4.14.187": - "integrity" "sha512-zmEmF5OIM3rb7SbLCFYoQhO4dGt2FRM9AMkxvA3LaADOF1n8in/zGJlWji9fmafLoNyz+FoL6FE0SLtGIArD7w==" - "resolved" "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.188.tgz" - "version" "4.14.188" - -"@types/node@*": - "integrity" "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==" - "resolved" "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz" - "version" "18.11.9" - -"@types/prettier@^2.1.5": - "integrity" "sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow==" - "resolved" "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.1.tgz" - "version" "2.7.1" - -"@types/prop-types@*": - "integrity" "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" - "resolved" "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz" - "version" "15.7.5" - -"@types/react@^18.0.25": - "integrity" "sha512-xD6c0KDT4m7n9uD4ZHi02lzskaiqcBxf4zi+tXZY98a04wvc0hi/TcCPC2FOESZi51Nd7tlUeOJY8RofL799/g==" - "resolved" "https://registry.npmjs.org/@types/react/-/react-18.0.25.tgz" - "version" "18.0.25" - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "*" - "csstype" "^3.0.2" - -"@types/resolve@1.17.1": - "integrity" "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==" - "resolved" "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz" - "version" "1.17.1" - dependencies: - "@types/node" "*" - -"@types/scheduler@*": - "integrity" "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" - "resolved" "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz" - "version" "0.16.2" - -"@types/stack-utils@^2.0.0": - "integrity" "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==" - "resolved" "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz" - "version" "2.0.1" - -"@types/testing-library__jest-dom@^5.9.1": - "integrity" "sha512-SBwbxYoyPIvxHbeHxTZX2Pe/74F/tX2/D3mMvzabdeJ25bBojfW0TyB8BHrbq/9zaaKICJZjLP+8r6AeZMFCuQ==" - "resolved" "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.5.tgz" - "version" "5.14.5" - dependencies: - "@types/jest" "*" - -"@types/tough-cookie@*": - "integrity" "sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==" - "resolved" "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.2.tgz" - "version" "4.0.2" - -"@types/yargs-parser@*": - "integrity" "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" - "resolved" "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz" - "version" "21.0.0" - -"@types/yargs@^17.0.8": - "integrity" "sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg==" - "resolved" "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.13.tgz" - "version" "17.0.13" - dependencies: - "@types/yargs-parser" "*" - -"@typescript-eslint/eslint-plugin@^1.4.2": - "integrity" "sha512-WQHCozMnuNADiqMtsNzp96FNox5sOVpU8Xt4meaT4em8lOG1SrOv92/mUbEHQVh90sldKSfcOc/I0FOb/14G1g==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.13.0.tgz" - "version" "1.13.0" - dependencies: - "@typescript-eslint/experimental-utils" "1.13.0" - "eslint-utils" "^1.3.1" - "functional-red-black-tree" "^1.0.1" - "regexpp" "^2.0.1" - "tsutils" "^3.7.0" - -"@typescript-eslint/experimental-utils@1.13.0": - "integrity" "sha512-zmpS6SyqG4ZF64ffaJ6uah6tWWWgZ8m+c54XXgwFtUv0jNz8aJAVx8chMCvnk7yl6xwn8d+d96+tWp7fXzTuDg==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-1.13.0.tgz" - "version" "1.13.0" - dependencies: - "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "1.13.0" - "eslint-scope" "^4.0.0" - -"@typescript-eslint/parser@^1.4.2", "@typescript-eslint/parser@^1.9.0": - "integrity" "sha512-ITMBs52PCPgLb2nGPoeT4iU3HdQZHcPaZVw+7CsFagRJHUhyeTgorEwHXhFf3e7Evzi8oujKNpHc8TONth8AdQ==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-1.13.0.tgz" - "version" "1.13.0" - dependencies: - "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "1.13.0" - "@typescript-eslint/typescript-estree" "1.13.0" - "eslint-visitor-keys" "^1.0.0" - -"@typescript-eslint/typescript-estree@1.13.0": - "integrity" "sha512-b5rCmd2e6DCC6tCTN9GSUAuxdYwCM/k/2wdjHGrIRGPSJotWMCe/dGpi66u42bhuh8q3QBzqM4TMA1GUUCJvdw==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-1.13.0.tgz" - "version" "1.13.0" - dependencies: - "lodash.unescape" "4.0.1" - "semver" "5.5.0" - -"@vue/compiler-core@3.2.41": - "integrity" "sha512-oA4mH6SA78DT+96/nsi4p9DX97PHcNROxs51lYk7gb9Z4BPKQ3Mh+BLn6CQZBw857Iuhu28BfMSRHAlPvD4vlw==" - "resolved" "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.41.tgz" - "version" "3.2.41" - dependencies: - "@babel/parser" "^7.16.4" - "@vue/shared" "3.2.41" - "estree-walker" "^2.0.2" - "source-map" "^0.6.1" - -"@vue/compiler-dom@3.2.41": - "integrity" "sha512-xe5TbbIsonjENxJsYRbDJvthzqxLNk+tb3d/c47zgREDa/PCp6/Y4gC/skM4H6PIuX5DAxm7fFJdbjjUH2QTMw==" - "resolved" "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.41.tgz" - "version" "3.2.41" - dependencies: - "@vue/compiler-core" "3.2.41" - "@vue/shared" "3.2.41" - -"@vue/compiler-sfc@3.2.41": - "integrity" "sha512-+1P2m5kxOeaxVmJNXnBskAn3BenbTmbxBxWOtBq3mQTCokIreuMULFantBUclP0+KnzNCMOvcnKinqQZmiOF8w==" - "resolved" "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.41.tgz" - "version" "3.2.41" - dependencies: - "@babel/parser" "^7.16.4" - "@vue/compiler-core" "3.2.41" - "@vue/compiler-dom" "3.2.41" - "@vue/compiler-ssr" "3.2.41" - "@vue/reactivity-transform" "3.2.41" - "@vue/shared" "3.2.41" - "estree-walker" "^2.0.2" - "magic-string" "^0.25.7" - "postcss" "^8.1.10" - "source-map" "^0.6.1" - -"@vue/compiler-ssr@3.2.41": - "integrity" "sha512-Y5wPiNIiaMz/sps8+DmhaKfDm1xgj6GrH99z4gq2LQenfVQcYXmHIOBcs5qPwl7jaW3SUQWjkAPKMfQemEQZwQ==" - "resolved" "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.41.tgz" - "version" "3.2.41" - dependencies: - "@vue/compiler-dom" "3.2.41" - "@vue/shared" "3.2.41" - -"@vue/reactivity-transform@3.2.41": - "integrity" "sha512-mK5+BNMsL4hHi+IR3Ft/ho6Za+L3FA5j8WvreJ7XzHrqkPq8jtF/SMo7tuc9gHjLDwKZX1nP1JQOKo9IEAn54A==" - "resolved" "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.41.tgz" - "version" "3.2.41" - dependencies: - "@babel/parser" "^7.16.4" - "@vue/compiler-core" "3.2.41" - "@vue/shared" "3.2.41" - "estree-walker" "^2.0.2" - "magic-string" "^0.25.7" - -"@vue/reactivity@3.2.41": - "integrity" "sha512-9JvCnlj8uc5xRiQGZ28MKGjuCoPhhTwcoAdv3o31+cfGgonwdPNuvqAXLhlzu4zwqavFEG5tvaoINQEfxz+l6g==" - "resolved" "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.41.tgz" - "version" "3.2.41" - dependencies: - "@vue/shared" "3.2.41" - -"@vue/runtime-core@3.2.41": - "integrity" "sha512-0LBBRwqnI0p4FgIkO9q2aJBBTKDSjzhnxrxHYengkAF6dMOjeAIZFDADAlcf2h3GDALWnblbeprYYpItiulSVQ==" - "resolved" "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.41.tgz" - "version" "3.2.41" - dependencies: - "@vue/reactivity" "3.2.41" - "@vue/shared" "3.2.41" - -"@vue/runtime-dom@3.2.41": - "integrity" "sha512-U7zYuR1NVIP8BL6jmOqmapRAHovEFp7CSw4pR2FacqewXNGqZaRfHoNLQsqQvVQ8yuZNZtxSZy0FFyC70YXPpA==" - "resolved" "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.41.tgz" - "version" "3.2.41" - dependencies: - "@vue/runtime-core" "3.2.41" - "@vue/shared" "3.2.41" - "csstype" "^2.6.8" - -"@vue/server-renderer@3.2.41": - "integrity" "sha512-7YHLkfJdTlsZTV0ae5sPwl9Gn/EGr2hrlbcS/8naXm2CDpnKUwC68i1wGlrYAfIgYWL7vUZwk2GkYLQH5CvFig==" - "resolved" "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.41.tgz" - "version" "3.2.41" - dependencies: - "@vue/compiler-ssr" "3.2.41" - "@vue/shared" "3.2.41" - -"@vue/shared@3.2.41": - "integrity" "sha512-W9mfWLHmJhkfAmV+7gDjcHeAWALQtgGT3JErxULl0oz6R6+3ug91I7IErs93eCFhPCZPHBs4QJS7YWEV7A3sxw==" - "resolved" "https://registry.npmjs.org/@vue/shared/-/shared-3.2.41.tgz" - "version" "3.2.41" - -"@yarn-tool/resolve-package@^1.0.40": - "integrity" "sha512-Zaw58gQxjQceJqhqybJi1oUDaORT8i2GTgwICPs8v/X/Pkx35FXQba69ldHVg5pQZ6YLKpROXgyHvBaCJOFXiA==" - "resolved" "https://registry.npmjs.org/@yarn-tool/resolve-package/-/resolve-package-1.0.47.tgz" - "version" "1.0.47" - dependencies: - "pkg-dir" "< 6 >= 5" - "tslib" "^2" - "upath2" "^3.1.13" - -"abab@^2.0.6": - "integrity" "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==" - "resolved" "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz" - "version" "2.0.6" - -"acorn-globals@^7.0.0": - "integrity" "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==" - "resolved" "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz" - "version" "7.0.1" - dependencies: - "acorn" "^8.1.0" - "acorn-walk" "^8.0.2" - -"acorn-jsx@^5.0.0": - "integrity" "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==" - "resolved" "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" - "version" "5.3.2" - -"acorn-walk@^8.0.2", "acorn-walk@^8.1.1": - "integrity" "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==" - "resolved" "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz" - "version" "8.2.0" - -"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", "acorn@^6.0.7": - "integrity" "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" - "resolved" "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz" - "version" "6.4.2" - -"acorn@^8.1.0", "acorn@^8.4.1", "acorn@^8.5.0", "acorn@^8.8.0": - "integrity" "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==" - "resolved" "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz" - "version" "8.8.1" - -"agent-base@6": - "integrity" "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==" - "resolved" "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" - "version" "6.0.2" - dependencies: - "debug" "4" - -"ajv@^6.10.2", "ajv@^6.12.3", "ajv@^6.9.1": - "integrity" "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==" - "resolved" "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" - "version" "6.12.6" - dependencies: - "fast-deep-equal" "^3.1.1" - "fast-json-stable-stringify" "^2.0.0" - "json-schema-traverse" "^0.4.1" - "uri-js" "^4.2.2" - -"alova@^1.4.1": - "integrity" "sha512-qxTwPyYzEYt6uujVaWTjJwM9n8mSnV7vi2gPlhnHaGMOFa4nALUSgh8VDw9AHoCwALhkUhMzvJ3Qxu3SAFH/YA==" - "resolved" "https://registry.npmmirror.com/alova/-/alova-1.4.1.tgz" - "version" "1.4.1" - -"ansi-escapes@^3.2.0": - "integrity" "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" - "resolved" "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz" - "version" "3.2.0" - -"ansi-escapes@^4.2.1": - "integrity" "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==" - "resolved" "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" - "version" "4.3.2" - dependencies: - "type-fest" "^0.21.3" - -"ansi-regex@^3.0.0": - "integrity" "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==" - "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz" - "version" "3.0.1" - -"ansi-regex@^4.1.0": - "integrity" "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==" - "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz" - "version" "4.1.1" - -"ansi-regex@^5.0.1": - "integrity" "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" - "version" "5.0.1" - -"ansi-styles@^3.2.0": - "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" - "version" "3.2.1" - dependencies: - "color-convert" "^1.9.0" - -"ansi-styles@^3.2.1": - "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" - "version" "3.2.1" - dependencies: - "color-convert" "^1.9.0" - -"ansi-styles@^4.0.0", "ansi-styles@^4.1.0": - "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" - "version" "4.3.0" - dependencies: - "color-convert" "^2.0.1" - -"ansi-styles@^5.0.0": - "integrity" "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" - "version" "5.2.0" - -"anymatch@^3.0.3": - "integrity" "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==" - "resolved" "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz" - "version" "3.1.2" - dependencies: - "normalize-path" "^3.0.0" - "picomatch" "^2.0.4" - -"arg@^4.1.0": - "integrity" "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" - "resolved" "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" - "version" "4.1.3" - -"argparse@^1.0.7": - "integrity" "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==" - "resolved" "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" - "version" "1.0.10" - dependencies: - "sprintf-js" "~1.0.2" - -"aria-query@^5.0.0": - "integrity" "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==" - "resolved" "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz" - "version" "5.1.3" - dependencies: - "deep-equal" "^2.0.5" - -"asn1@~0.2.3": - "integrity" "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==" - "resolved" "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz" - "version" "0.2.6" - dependencies: - "safer-buffer" "~2.1.0" - -"assert-plus@^1.0.0", "assert-plus@1.0.0": - "integrity" "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==" - "resolved" "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" - "version" "1.0.0" - -"astral-regex@^1.0.0": - "integrity" "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==" - "resolved" "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz" - "version" "1.0.0" - -"asynckit@^0.4.0": - "integrity" "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - "resolved" "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" - "version" "0.4.0" - -"available-typed-arrays@^1.0.5": - "integrity" "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" - "resolved" "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz" - "version" "1.0.5" - -"aws-sign2@~0.7.0": - "integrity" "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==" - "resolved" "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz" - "version" "0.7.0" - -"aws4@^1.8.0": - "integrity" "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" - "resolved" "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz" - "version" "1.11.0" - -"babel-jest@^29.0.0", "babel-jest@^29.2.2": - "integrity" "sha512-kkq2QSDIuvpgfoac3WZ1OOcHsQQDU5xYk2Ql7tLdJ8BVAYbefEXal+NfS45Y5LVZA7cxC8KYcQMObpCt1J025w==" - "resolved" "https://registry.npmjs.org/babel-jest/-/babel-jest-29.2.2.tgz" - "version" "29.2.2" - dependencies: - "@jest/transform" "^29.2.2" - "@types/babel__core" "^7.1.14" - "babel-plugin-istanbul" "^6.1.1" - "babel-preset-jest" "^29.2.0" - "chalk" "^4.0.0" - "graceful-fs" "^4.2.9" - "slash" "^3.0.0" - -"babel-plugin-istanbul@^6.1.1": - "integrity" "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==" - "resolved" "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz" - "version" "6.1.1" - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - "istanbul-lib-instrument" "^5.0.4" - "test-exclude" "^6.0.0" - -"babel-plugin-jest-hoist@^29.2.0": - "integrity" "sha512-TnspP2WNiR3GLfCsUNHqeXw0RoQ2f9U5hQ5L3XFpwuO8htQmSrhh8qsB6vi5Yi8+kuynN1yjDjQsPfkebmB6ZA==" - "resolved" "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.2.0.tgz" - "version" "29.2.0" - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.1.14" - "@types/babel__traverse" "^7.0.6" - -"babel-plugin-polyfill-corejs2@^0.3.3": - "integrity" "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==" - "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz" - "version" "0.3.3" - dependencies: - "@babel/compat-data" "^7.17.7" - "@babel/helper-define-polyfill-provider" "^0.3.3" - "semver" "^6.1.1" - -"babel-plugin-polyfill-corejs3@^0.6.0": - "integrity" "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==" - "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz" - "version" "0.6.0" - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.3" - "core-js-compat" "^3.25.1" - -"babel-plugin-polyfill-regenerator@^0.4.1": - "integrity" "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==" - "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz" - "version" "0.4.1" - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.3" - -"babel-preset-current-node-syntax@^1.0.0": - "integrity" "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==" - "resolved" "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-bigint" "^7.8.3" - "@babel/plugin-syntax-class-properties" "^7.8.3" - "@babel/plugin-syntax-import-meta" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-top-level-await" "^7.8.3" - -"babel-preset-jest@^29.2.0": - "integrity" "sha512-z9JmMJppMxNv8N7fNRHvhMg9cvIkMxQBXgFkane3yKVEvEOP+kB50lk8DFRvF9PGqbyXxlmebKWhuDORO8RgdA==" - "resolved" "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.2.0.tgz" - "version" "29.2.0" - dependencies: - "babel-plugin-jest-hoist" "^29.2.0" - "babel-preset-current-node-syntax" "^1.0.0" - -"balanced-match@^1.0.0": - "integrity" "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - "resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" - "version" "1.0.2" - -"bcrypt-pbkdf@^1.0.0": - "integrity" "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==" - "resolved" "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "tweetnacl" "^0.14.3" - -"brace-expansion@^1.1.7": - "integrity" "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==" - "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" - "version" "1.1.11" - dependencies: - "balanced-match" "^1.0.0" - "concat-map" "0.0.1" - -"braces@^3.0.2": - "integrity" "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==" - "resolved" "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" - "version" "3.0.2" - dependencies: - "fill-range" "^7.0.1" - -"browserslist@^4.21.3", "browserslist@^4.21.4", "browserslist@>= 4.21.0": - "integrity" "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==" - "resolved" "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz" - "version" "4.21.4" - dependencies: - "caniuse-lite" "^1.0.30001400" - "electron-to-chromium" "^1.4.251" - "node-releases" "^2.0.6" - "update-browserslist-db" "^1.0.9" - -"bs-logger@0.x": - "integrity" "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==" - "resolved" "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz" - "version" "0.2.6" - dependencies: - "fast-json-stable-stringify" "2.x" - -"bser@2.1.1": - "integrity" "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==" - "resolved" "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "node-int64" "^0.4.0" - -"buffer-from@^1.0.0": - "integrity" "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - "resolved" "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" - "version" "1.1.2" - -"builtin-modules@^3.3.0": - "integrity" "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==" - "resolved" "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz" - "version" "3.3.0" - -"call-bind@^1.0.0", "call-bind@^1.0.2": - "integrity" "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==" - "resolved" "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "function-bind" "^1.1.1" - "get-intrinsic" "^1.0.2" - -"callsites@^3.0.0": - "integrity" "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" - "resolved" "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" - "version" "3.1.0" - -"camelcase@^5.3.1": - "integrity" "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" - "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" - "version" "5.3.1" - -"camelcase@^6.2.0": - "integrity" "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" - "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" - "version" "6.3.0" - -"caniuse-lite@^1.0.30001400": - "integrity" "sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==" - "resolved" "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001431.tgz" - "version" "1.0.30001431" - -"caseless@~0.12.0": - "integrity" "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" - "resolved" "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz" - "version" "0.12.0" - -"chalk@^2.0.0": - "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" - "version" "2.4.2" - dependencies: - "ansi-styles" "^3.2.1" - "escape-string-regexp" "^1.0.5" - "supports-color" "^5.3.0" - -"chalk@^2.1.0": - "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" - "version" "2.4.2" - dependencies: - "ansi-styles" "^3.2.1" - "escape-string-regexp" "^1.0.5" - "supports-color" "^5.3.0" - -"chalk@^2.4.2": - "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" - "version" "2.4.2" - dependencies: - "ansi-styles" "^3.2.1" - "escape-string-regexp" "^1.0.5" - "supports-color" "^5.3.0" - -"chalk@^3.0.0": - "integrity" "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "ansi-styles" "^4.1.0" - "supports-color" "^7.1.0" - -"chalk@^4.0.0": - "integrity" "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" - "version" "4.1.2" - dependencies: - "ansi-styles" "^4.1.0" - "supports-color" "^7.1.0" - -"char-regex@^1.0.2": - "integrity" "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==" - "resolved" "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" - "version" "1.0.2" - -"chardet@^0.7.0": - "integrity" "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" - "resolved" "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz" - "version" "0.7.0" - -"ci-info@^3.2.0": - "integrity" "sha512-yH4RezKOGlOhxkmhbeNuC4eYZKAUsEaGtBuBzDDP1eFUKiccDWzBABxBfOx31IDwDIXMTxWuwAxUGModvkbuVw==" - "resolved" "https://registry.npmjs.org/ci-info/-/ci-info-3.5.0.tgz" - "version" "3.5.0" - -"cjs-module-lexer@^1.0.0": - "integrity" "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==" - "resolved" "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz" - "version" "1.2.2" - -"cli-cursor@^2.1.0": - "integrity" "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==" - "resolved" "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "restore-cursor" "^2.0.0" - -"cli-width@^2.0.0": - "integrity" "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==" - "resolved" "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz" - "version" "2.2.1" - -"cliui@^8.0.1": - "integrity" "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==" - "resolved" "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" - "version" "8.0.1" - dependencies: - "string-width" "^4.2.0" - "strip-ansi" "^6.0.1" - "wrap-ansi" "^7.0.0" - -"co@^4.6.0": - "integrity" "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==" - "resolved" "https://registry.npmjs.org/co/-/co-4.6.0.tgz" - "version" "4.6.0" - -"collect-v8-coverage@^1.0.0": - "integrity" "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==" - "resolved" "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz" - "version" "1.0.1" - -"color-convert@^1.9.0": - "integrity" "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==" - "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" - "version" "1.9.3" - dependencies: - "color-name" "1.1.3" - -"color-convert@^2.0.1": - "integrity" "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==" - "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "color-name" "~1.1.4" - -"color-name@~1.1.4": - "integrity" "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - "version" "1.1.4" - -"color-name@1.1.3": - "integrity" "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" - "version" "1.1.3" - -"combined-stream@^1.0.6", "combined-stream@^1.0.8", "combined-stream@~1.0.6": - "integrity" "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==" - "resolved" "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" - "version" "1.0.8" - dependencies: - "delayed-stream" "~1.0.0" - -"commander@^2.20.0": - "integrity" "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - "resolved" "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" - "version" "2.20.3" - -"commondir@^1.0.1": - "integrity" "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" - "resolved" "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" - "version" "1.0.1" - -"concat-map@0.0.1": - "integrity" "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - "resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - "version" "0.0.1" - -"convert-source-map@^1.4.0", "convert-source-map@^1.6.0", "convert-source-map@^1.7.0": - "integrity" "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" - "resolved" "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz" - "version" "1.9.0" - -"core-js-compat@^3.25.1": - "integrity" "sha512-piOX9Go+Z4f9ZiBFLnZ5VrOpBl0h7IGCkiFUN11QTe6LjAvOT3ifL/5TdoizMh99hcGy5SoLyWbapIY/PIb/3A==" - "resolved" "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.0.tgz" - "version" "3.26.0" - dependencies: - "browserslist" "^4.21.4" - -"core-util-is@1.0.2": - "integrity" "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" - "resolved" "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - "version" "1.0.2" - -"coveralls@^3.1.1": - "integrity" "sha512-+dxnG2NHncSD1NrqbSM3dn/lE57O6Qf/koe9+I7c+wzkqRmEvcp0kgJdxKInzYzkICKkFMZsX3Vct3++tsF9ww==" - "resolved" "https://registry.npmjs.org/coveralls/-/coveralls-3.1.1.tgz" - "version" "3.1.1" - dependencies: - "js-yaml" "^3.13.1" - "lcov-parse" "^1.0.0" - "log-driver" "^1.2.7" - "minimist" "^1.2.5" - "request" "^2.88.2" - -"create-require@^1.1.0": - "integrity" "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" - "resolved" "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" - "version" "1.1.1" - -"cross-env@5.2.0": - "integrity" "sha512-jtdNFfFW1hB7sMhr/H6rW1Z45LFqyI431m3qU6bFXcQ3Eh7LtBuG3h74o7ohHZ3crrRkkqHlo4jYHFPcjroANg==" - "resolved" "https://registry.npmjs.org/cross-env/-/cross-env-5.2.0.tgz" - "version" "5.2.0" - dependencies: - "cross-spawn" "^6.0.5" - "is-windows" "^1.0.0" - -"cross-spawn@^6.0.5": - "integrity" "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==" - "resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz" - "version" "6.0.5" - dependencies: - "nice-try" "^1.0.4" - "path-key" "^2.0.1" - "semver" "^5.5.0" - "shebang-command" "^1.2.0" - "which" "^1.2.9" - -"cross-spawn@^7.0.3": - "integrity" "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==" - "resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" - "version" "7.0.3" - dependencies: - "path-key" "^3.1.0" - "shebang-command" "^2.0.0" - "which" "^2.0.1" - -"css.escape@^1.5.1": - "integrity" "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==" - "resolved" "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz" - "version" "1.5.1" - -"cssom@^0.5.0": - "integrity" "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==" - "resolved" "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz" - "version" "0.5.0" - -"cssom@~0.3.6": - "integrity" "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" - "resolved" "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz" - "version" "0.3.8" - -"cssstyle@^2.3.0": - "integrity" "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==" - "resolved" "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz" - "version" "2.3.0" - dependencies: - "cssom" "~0.3.6" - -"csstype@^2.6.8": - "integrity" "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==" - "resolved" "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz" - "version" "2.6.21" - -"csstype@^3.0.2": - "integrity" "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" - "resolved" "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz" - "version" "3.1.1" - -"dashdash@^1.12.0": - "integrity" "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==" - "resolved" "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz" - "version" "1.14.1" - dependencies: - "assert-plus" "^1.0.0" - -"data-urls@^3.0.2": - "integrity" "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==" - "resolved" "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz" - "version" "3.0.2" - dependencies: - "abab" "^2.0.6" - "whatwg-mimetype" "^3.0.0" - "whatwg-url" "^11.0.0" - -"debug@^4.0.1", "debug@^4.1.0", "debug@^4.1.1", "debug@4": - "integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==" - "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" - "version" "4.3.4" - dependencies: - "ms" "2.1.2" - -"decimal.js@^10.4.1": - "integrity" "sha512-ic1yEvwT6GuvaYwBLLY6/aFFgjZdySKTE8en/fkU3QICTmRtgtSlFn0u0BXN06InZwtfCelR7j8LRiDI/02iGA==" - "resolved" "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.2.tgz" - "version" "10.4.2" - -"dedent@^0.7.0": - "integrity" "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==" - "resolved" "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz" - "version" "0.7.0" - -"deep-equal@^2.0.5": - "integrity" "sha512-2pxgvWu3Alv1PoWEyVg7HS8YhGlUFUV7N5oOvfL6d+7xAmLSemMwv/c8Zv/i9KFzxV5Kt5CAvQc70fLwVuf4UA==" - "resolved" "https://registry.npmjs.org/deep-equal/-/deep-equal-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "call-bind" "^1.0.2" - "es-get-iterator" "^1.1.2" - "get-intrinsic" "^1.1.3" - "is-arguments" "^1.1.1" - "is-date-object" "^1.0.5" - "is-regex" "^1.1.4" - "isarray" "^2.0.5" - "object-is" "^1.1.5" - "object-keys" "^1.1.1" - "object.assign" "^4.1.4" - "regexp.prototype.flags" "^1.4.3" - "side-channel" "^1.0.4" - "which-boxed-primitive" "^1.0.2" - "which-collection" "^1.0.1" - "which-typed-array" "^1.1.8" - -"deep-is@~0.1.3": - "integrity" "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" - "resolved" "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" - "version" "0.1.4" - -"deepmerge@^4.2.2": - "integrity" "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" - "resolved" "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz" - "version" "4.2.2" - -"define-properties@^1.1.3", "define-properties@^1.1.4": - "integrity" "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==" - "resolved" "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz" - "version" "1.1.4" - dependencies: - "has-property-descriptors" "^1.0.0" - "object-keys" "^1.1.1" - -"delayed-stream@~1.0.0": - "integrity" "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" - "resolved" "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" - "version" "1.0.0" - -"detect-newline@^3.0.0": - "integrity" "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==" - "resolved" "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" - "version" "3.1.0" - -"diff-sequences@^27.5.1": - "integrity" "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==" - "resolved" "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz" - "version" "27.5.1" - -"diff-sequences@^29.2.0": - "integrity" "sha512-413SY5JpYeSBZxmenGEmCVQ8mCgtFJF0w9PROdaS6z987XC2Pd2GOKqOITLtMftmyFZqgtCOb/QA7/Z3ZXfzIw==" - "resolved" "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.2.0.tgz" - "version" "29.2.0" - -"diff@^4.0.1": - "integrity" "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" - "resolved" "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" - "version" "4.0.2" - -"doctrine@^3.0.0": - "integrity" "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==" - "resolved" "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "esutils" "^2.0.2" - -"dom-accessibility-api@^0.5.6": - "integrity" "sha512-NMt+m9zFMPZe0JcY9gN224Qvk6qLIdqex29clBvc/y75ZBX9YA9wNK3frsYvu2DI1xcCIwxwnX+TlsJ2DSOADg==" - "resolved" "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.14.tgz" - "version" "0.5.14" - -"domexception@^4.0.0": - "integrity" "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==" - "resolved" "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "webidl-conversions" "^7.0.0" - -"ecc-jsbn@~0.1.1": - "integrity" "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==" - "resolved" "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz" - "version" "0.1.2" - dependencies: - "jsbn" "~0.1.0" - "safer-buffer" "^2.1.0" - -"electron-to-chromium@^1.4.251": - "integrity" "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" - "resolved" "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz" - "version" "1.4.284" - -"emittery@^0.13.1": - "integrity" "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==" - "resolved" "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz" - "version" "0.13.1" - -"emoji-regex@^7.0.1": - "integrity" "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz" - "version" "7.0.3" - -"emoji-regex@^8.0.0": - "integrity" "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" - "version" "8.0.0" - -"entities@^4.4.0": - "integrity" "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==" - "resolved" "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz" - "version" "4.4.0" - -"error-ex@^1.3.1": - "integrity" "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==" - "resolved" "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" - "version" "1.3.2" - dependencies: - "is-arrayish" "^0.2.1" - -"es-get-iterator@^1.1.2": - "integrity" "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==" - "resolved" "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz" - "version" "1.1.2" - dependencies: - "call-bind" "^1.0.2" - "get-intrinsic" "^1.1.0" - "has-symbols" "^1.0.1" - "is-arguments" "^1.1.0" - "is-map" "^2.0.2" - "is-set" "^2.0.2" - "is-string" "^1.0.5" - "isarray" "^2.0.5" - -"escalade@^3.1.1": - "integrity" "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - "resolved" "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" - "version" "3.1.1" - -"escape-string-regexp@^1.0.5": - "integrity" "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" - "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - "version" "1.0.5" - -"escape-string-regexp@^2.0.0": - "integrity" "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" - "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" - "version" "2.0.0" - -"escodegen@^2.0.0": - "integrity" "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==" - "resolved" "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "esprima" "^4.0.1" - "estraverse" "^5.2.0" - "esutils" "^2.0.2" - "optionator" "^0.8.1" - optionalDependencies: - "source-map" "~0.6.1" - -"eslint-scope@^4.0.0", "eslint-scope@^4.0.3": - "integrity" "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==" - "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz" - "version" "4.0.3" - dependencies: - "esrecurse" "^4.1.0" - "estraverse" "^4.1.1" - -"eslint-utils@^1.3.1": - "integrity" "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==" - "resolved" "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz" - "version" "1.4.3" - dependencies: - "eslint-visitor-keys" "^1.1.0" - -"eslint-visitor-keys@^1.0.0", "eslint-visitor-keys@^1.1.0": - "integrity" "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" - "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz" - "version" "1.3.0" - -"eslint@*", "eslint@^5.0.0", "eslint@^5.15.1": - "integrity" "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==" - "resolved" "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz" - "version" "5.16.0" - dependencies: - "@babel/code-frame" "^7.0.0" - "ajv" "^6.9.1" - "chalk" "^2.1.0" - "cross-spawn" "^6.0.5" - "debug" "^4.0.1" - "doctrine" "^3.0.0" - "eslint-scope" "^4.0.3" - "eslint-utils" "^1.3.1" - "eslint-visitor-keys" "^1.0.0" - "espree" "^5.0.1" - "esquery" "^1.0.1" - "esutils" "^2.0.2" - "file-entry-cache" "^5.0.1" - "functional-red-black-tree" "^1.0.1" - "glob" "^7.1.2" - "globals" "^11.7.0" - "ignore" "^4.0.6" - "import-fresh" "^3.0.0" - "imurmurhash" "^0.1.4" - "inquirer" "^6.2.2" - "js-yaml" "^3.13.0" - "json-stable-stringify-without-jsonify" "^1.0.1" - "levn" "^0.3.0" - "lodash" "^4.17.11" - "minimatch" "^3.0.4" - "mkdirp" "^0.5.1" - "natural-compare" "^1.4.0" - "optionator" "^0.8.2" - "path-is-inside" "^1.0.2" - "progress" "^2.0.0" - "regexpp" "^2.0.1" - "semver" "^5.5.1" - "strip-ansi" "^4.0.0" - "strip-json-comments" "^2.0.1" - "table" "^5.2.3" - "text-table" "^0.2.0" - -"espree@^5.0.1": - "integrity" "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==" - "resolved" "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz" - "version" "5.0.1" - dependencies: - "acorn" "^6.0.7" - "acorn-jsx" "^5.0.0" - "eslint-visitor-keys" "^1.0.0" - -"esprima@^4.0.0", "esprima@^4.0.1": - "integrity" "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - "resolved" "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" - "version" "4.0.1" - -"esquery@^1.0.1": - "integrity" "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==" - "resolved" "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz" - "version" "1.4.0" - dependencies: - "estraverse" "^5.1.0" - -"esrecurse@^4.1.0": - "integrity" "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==" - "resolved" "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" - "version" "4.3.0" - dependencies: - "estraverse" "^5.2.0" - -"estraverse@^4.1.1": - "integrity" "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" - "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" - "version" "4.3.0" - -"estraverse@^5.1.0", "estraverse@^5.2.0": - "integrity" "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" - "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" - "version" "5.3.0" - -"estree-walker@^1.0.1": - "integrity" "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==" - "resolved" "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz" - "version" "1.0.1" - -"estree-walker@^2.0.1", "estree-walker@^2.0.2": - "integrity" "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" - "resolved" "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz" - "version" "2.0.2" - -"esutils@^2.0.2": - "integrity" "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" - "resolved" "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" - "version" "2.0.3" - -"execa@^5.0.0": - "integrity" "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==" - "resolved" "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" - "version" "5.1.1" - dependencies: - "cross-spawn" "^7.0.3" - "get-stream" "^6.0.0" - "human-signals" "^2.1.0" - "is-stream" "^2.0.0" - "merge-stream" "^2.0.0" - "npm-run-path" "^4.0.1" - "onetime" "^5.1.2" - "signal-exit" "^3.0.3" - "strip-final-newline" "^2.0.0" - -"exit@^0.1.2": - "integrity" "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==" - "resolved" "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" - "version" "0.1.2" - -"expect@^29.0.0", "expect@^29.2.2": - "integrity" "sha512-hE09QerxZ5wXiOhqkXy5d2G9ar+EqOyifnCXCpMNu+vZ6DG9TJ6CO2c2kPDSLqERTTWrO7OZj8EkYHQqSd78Yw==" - "resolved" "https://registry.npmjs.org/expect/-/expect-29.2.2.tgz" - "version" "29.2.2" - dependencies: - "@jest/expect-utils" "^29.2.2" - "jest-get-type" "^29.2.0" - "jest-matcher-utils" "^29.2.2" - "jest-message-util" "^29.2.1" - "jest-util" "^29.2.1" - -"extend@~3.0.2": - "integrity" "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - "resolved" "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" - "version" "3.0.2" - -"external-editor@^3.0.3": - "integrity" "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==" - "resolved" "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "chardet" "^0.7.0" - "iconv-lite" "^0.4.24" - "tmp" "^0.0.33" - -"extsprintf@^1.2.0": - "integrity" "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==" - "resolved" "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz" - "version" "1.4.1" - -"extsprintf@1.3.0": - "integrity" "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==" - "resolved" "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" - "version" "1.3.0" - -"fast-deep-equal@^3.1.1": - "integrity" "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - "resolved" "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" - "version" "3.1.3" - -"fast-json-stable-stringify@^2.0.0", "fast-json-stable-stringify@^2.1.0", "fast-json-stable-stringify@2.x": - "integrity" "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - "resolved" "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" - "version" "2.1.0" - -"fast-levenshtein@~2.0.6": - "integrity" "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" - "resolved" "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" - "version" "2.0.6" - -"fb-watchman@^2.0.0": - "integrity" "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==" - "resolved" "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "bser" "2.1.1" - -"figures@^2.0.0": - "integrity" "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==" - "resolved" "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "escape-string-regexp" "^1.0.5" - -"file-entry-cache@^5.0.1": - "integrity" "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==" - "resolved" "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz" - "version" "5.0.1" - dependencies: - "flat-cache" "^2.0.1" - -"fill-range@^7.0.1": - "integrity" "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==" - "resolved" "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" - "version" "7.0.1" - dependencies: - "to-regex-range" "^5.0.1" - -"find-cache-dir@^3.3.2": - "integrity" "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==" - "resolved" "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz" - "version" "3.3.2" - dependencies: - "commondir" "^1.0.1" - "make-dir" "^3.0.2" - "pkg-dir" "^4.1.0" - -"find-up@^4.0.0", "find-up@^4.1.0": - "integrity" "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "locate-path" "^5.0.0" - "path-exists" "^4.0.0" - -"find-up@^5.0.0": - "integrity" "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "locate-path" "^6.0.0" - "path-exists" "^4.0.0" - -"flat-cache@^2.0.1": - "integrity" "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==" - "resolved" "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "flatted" "^2.0.0" - "rimraf" "2.6.3" - "write" "1.0.3" - -"flatted@^2.0.0": - "integrity" "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==" - "resolved" "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz" - "version" "2.0.2" - -"for-each@^0.3.3": - "integrity" "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==" - "resolved" "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz" - "version" "0.3.3" - dependencies: - "is-callable" "^1.1.3" - -"forever-agent@~0.6.1": - "integrity" "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==" - "resolved" "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" - "version" "0.6.1" - -"form-data@^4.0.0": - "integrity" "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==" - "resolved" "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "asynckit" "^0.4.0" - "combined-stream" "^1.0.8" - "mime-types" "^2.1.12" - -"form-data@~2.3.2": - "integrity" "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==" - "resolved" "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz" - "version" "2.3.3" - dependencies: - "asynckit" "^0.4.0" - "combined-stream" "^1.0.6" - "mime-types" "^2.1.12" - -"fs-extra@^10.0.0": - "integrity" "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==" - "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz" - "version" "10.1.0" - dependencies: - "graceful-fs" "^4.2.0" - "jsonfile" "^6.0.1" - "universalify" "^2.0.0" - -"fs.realpath@^1.0.0": - "integrity" "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - "resolved" "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - "version" "1.0.0" - -"function-bind@^1.1.1": - "integrity" "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - "resolved" "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" - "version" "1.1.1" - -"functional-red-black-tree@^1.0.1": - "integrity" "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==" - "resolved" "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz" - "version" "1.0.1" - -"functions-have-names@^1.2.2": - "integrity" "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" - "resolved" "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" - "version" "1.2.3" - -"gensync@^1.0.0-beta.2": - "integrity" "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" - "resolved" "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" - "version" "1.0.0-beta.2" - -"get-caller-file@^2.0.5": - "integrity" "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" - "resolved" "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" - "version" "2.0.5" - -"get-intrinsic@^1.0.2", "get-intrinsic@^1.1.0", "get-intrinsic@^1.1.1", "get-intrinsic@^1.1.3": - "integrity" "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==" - "resolved" "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz" - "version" "1.1.3" - dependencies: - "function-bind" "^1.1.1" - "has" "^1.0.3" - "has-symbols" "^1.0.3" - -"get-package-type@^0.1.0": - "integrity" "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==" - "resolved" "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" - "version" "0.1.0" - -"get-stream@^6.0.0": - "integrity" "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" - "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" - "version" "6.0.1" - -"getpass@^0.1.1": - "integrity" "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==" - "resolved" "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz" - "version" "0.1.7" - dependencies: - "assert-plus" "^1.0.0" - -"glob@^7.0.5", "glob@^7.1.2", "glob@^7.1.3", "glob@^7.1.4", "glob@^7.1.6": - "integrity" "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==" - "resolved" "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" - "version" "7.2.3" - dependencies: - "fs.realpath" "^1.0.0" - "inflight" "^1.0.4" - "inherits" "2" - "minimatch" "^3.1.1" - "once" "^1.3.0" - "path-is-absolute" "^1.0.0" - -"globals@^11.1.0", "globals@^11.7.0": - "integrity" "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" - "resolved" "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" - "version" "11.12.0" - -"gopd@^1.0.1": - "integrity" "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==" - "resolved" "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "get-intrinsic" "^1.1.3" - -"graceful-fs@^4.1.6", "graceful-fs@^4.2.0", "graceful-fs@^4.2.9": - "integrity" "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - "resolved" "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" - "version" "4.2.10" - -"har-schema@^2.0.0": - "integrity" "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==" - "resolved" "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz" - "version" "2.0.0" - -"har-validator@~5.1.3": - "integrity" "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==" - "resolved" "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz" - "version" "5.1.5" - dependencies: - "ajv" "^6.12.3" - "har-schema" "^2.0.0" - -"has-bigints@^1.0.1": - "integrity" "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" - "resolved" "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" - "version" "1.0.2" - -"has-flag@^3.0.0": - "integrity" "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" - "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" - "version" "3.0.0" - -"has-flag@^4.0.0": - "integrity" "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" - "version" "4.0.0" - -"has-property-descriptors@^1.0.0": - "integrity" "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==" - "resolved" "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "get-intrinsic" "^1.1.1" - -"has-symbols@^1.0.1", "has-symbols@^1.0.2", "has-symbols@^1.0.3": - "integrity" "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" - "resolved" "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" - "version" "1.0.3" - -"has-tostringtag@^1.0.0": - "integrity" "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==" - "resolved" "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "has-symbols" "^1.0.2" - -"has@^1.0.3": - "integrity" "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==" - "resolved" "https://registry.npmjs.org/has/-/has-1.0.3.tgz" - "version" "1.0.3" - dependencies: - "function-bind" "^1.1.1" - -"html-encoding-sniffer@^3.0.0": - "integrity" "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==" - "resolved" "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "whatwg-encoding" "^2.0.0" - -"html-escaper@^2.0.0": - "integrity" "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" - "resolved" "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" - "version" "2.0.2" - -"http-proxy-agent@^5.0.0": - "integrity" "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==" - "resolved" "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "@tootallnate/once" "2" - "agent-base" "6" - "debug" "4" - -"http-signature@~1.2.0": - "integrity" "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==" - "resolved" "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz" - "version" "1.2.0" - dependencies: - "assert-plus" "^1.0.0" - "jsprim" "^1.2.2" - "sshpk" "^1.7.0" - -"https-proxy-agent@^5.0.1": - "integrity" "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==" - "resolved" "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" - "version" "5.0.1" - dependencies: - "agent-base" "6" - "debug" "4" - -"human-signals@^2.1.0": - "integrity" "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" - "resolved" "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" - "version" "2.1.0" - -"iconv-lite@^0.4.24": - "integrity" "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==" - "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" - "version" "0.4.24" - dependencies: - "safer-buffer" ">= 2.1.2 < 3" - -"iconv-lite@0.6.3": - "integrity" "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==" - "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" - "version" "0.6.3" - dependencies: - "safer-buffer" ">= 2.1.2 < 3.0.0" - -"ignore@^4.0.6": - "integrity" "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" - "resolved" "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz" - "version" "4.0.6" - -"import-fresh@^3.0.0": - "integrity" "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==" - "resolved" "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" - "version" "3.3.0" - dependencies: - "parent-module" "^1.0.0" - "resolve-from" "^4.0.0" - -"import-local@^3.0.2": - "integrity" "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==" - "resolved" "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "pkg-dir" "^4.2.0" - "resolve-cwd" "^3.0.0" - -"imurmurhash@^0.1.4": - "integrity" "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" - "resolved" "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" - "version" "0.1.4" - -"indent-string@^4.0.0": - "integrity" "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" - "resolved" "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" - "version" "4.0.0" - -"inflight@^1.0.4": - "integrity" "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==" - "resolved" "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" - "version" "1.0.6" - dependencies: - "once" "^1.3.0" - "wrappy" "1" - -"inherits@2": - "integrity" "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" - "version" "2.0.4" - -"inquirer@^6.2.2": - "integrity" "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==" - "resolved" "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz" - "version" "6.5.2" - dependencies: - "ansi-escapes" "^3.2.0" - "chalk" "^2.4.2" - "cli-cursor" "^2.1.0" - "cli-width" "^2.0.0" - "external-editor" "^3.0.3" - "figures" "^2.0.0" - "lodash" "^4.17.12" - "mute-stream" "0.0.7" - "run-async" "^2.2.0" - "rxjs" "^6.4.0" - "string-width" "^2.1.0" - "strip-ansi" "^5.1.0" - "through" "^2.3.6" - -"is-arguments@^1.1.0", "is-arguments@^1.1.1": - "integrity" "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==" - "resolved" "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz" - "version" "1.1.1" - dependencies: - "call-bind" "^1.0.2" - "has-tostringtag" "^1.0.0" - -"is-arrayish@^0.2.1": - "integrity" "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - "resolved" "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" - "version" "0.2.1" - -"is-bigint@^1.0.1": - "integrity" "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==" - "resolved" "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "has-bigints" "^1.0.1" - -"is-boolean-object@^1.1.0": - "integrity" "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==" - "resolved" "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz" - "version" "1.1.2" - dependencies: - "call-bind" "^1.0.2" - "has-tostringtag" "^1.0.0" - -"is-builtin-module@^3.1.0": - "integrity" "sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw==" - "resolved" "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.0.tgz" - "version" "3.2.0" - dependencies: - "builtin-modules" "^3.3.0" - -"is-callable@^1.1.3": - "integrity" "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" - "resolved" "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz" - "version" "1.2.7" - -"is-core-module@^2.9.0": - "integrity" "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==" - "resolved" "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz" - "version" "2.11.0" - dependencies: - "has" "^1.0.3" - -"is-date-object@^1.0.5": - "integrity" "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==" - "resolved" "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" - "version" "1.0.5" - dependencies: - "has-tostringtag" "^1.0.0" - -"is-fullwidth-code-point@^2.0.0": - "integrity" "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==" - "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz" - "version" "2.0.0" - -"is-fullwidth-code-point@^3.0.0": - "integrity" "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" - "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" - "version" "3.0.0" - -"is-generator-fn@^2.0.0": - "integrity" "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==" - "resolved" "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" - "version" "2.1.0" - -"is-map@^2.0.1", "is-map@^2.0.2": - "integrity" "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==" - "resolved" "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz" - "version" "2.0.2" - -"is-module@^1.0.0": - "integrity" "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==" - "resolved" "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz" - "version" "1.0.0" - -"is-number-object@^1.0.4": - "integrity" "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==" - "resolved" "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz" - "version" "1.0.7" - dependencies: - "has-tostringtag" "^1.0.0" - -"is-number@^7.0.0": - "integrity" "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - "resolved" "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" - "version" "7.0.0" - -"is-potential-custom-element-name@^1.0.1": - "integrity" "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" - "resolved" "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz" - "version" "1.0.1" - -"is-reference@^1.2.1": - "integrity" "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==" - "resolved" "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz" - "version" "1.2.1" - dependencies: - "@types/estree" "*" - -"is-regex@^1.1.4": - "integrity" "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==" - "resolved" "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" - "version" "1.1.4" - dependencies: - "call-bind" "^1.0.2" - "has-tostringtag" "^1.0.0" - -"is-set@^2.0.1", "is-set@^2.0.2": - "integrity" "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==" - "resolved" "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz" - "version" "2.0.2" - -"is-stream@^2.0.0": - "integrity" "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" - "resolved" "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" - "version" "2.0.1" - -"is-string@^1.0.5": - "integrity" "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==" - "resolved" "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" - "version" "1.0.7" - dependencies: - "has-tostringtag" "^1.0.0" - -"is-symbol@^1.0.3": - "integrity" "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==" - "resolved" "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "has-symbols" "^1.0.2" - -"is-typed-array@^1.1.10": - "integrity" "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==" - "resolved" "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz" - "version" "1.1.10" - dependencies: - "available-typed-arrays" "^1.0.5" - "call-bind" "^1.0.2" - "for-each" "^0.3.3" - "gopd" "^1.0.1" - "has-tostringtag" "^1.0.0" - -"is-typedarray@~1.0.0": - "integrity" "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" - "resolved" "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" - "version" "1.0.0" - -"is-weakmap@^2.0.1": - "integrity" "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==" - "resolved" "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz" - "version" "2.0.1" - -"is-weakset@^2.0.1": - "integrity" "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==" - "resolved" "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "call-bind" "^1.0.2" - "get-intrinsic" "^1.1.1" - -"is-windows@^1.0.0": - "integrity" "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" - "resolved" "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz" - "version" "1.0.2" - -"isarray@^2.0.5": - "integrity" "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" - "resolved" "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz" - "version" "2.0.5" - -"isexe@^2.0.0": - "integrity" "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - "resolved" "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" - "version" "2.0.0" - -"isstream@~0.1.2": - "integrity" "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" - "resolved" "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" - "version" "0.1.2" - -"istanbul-lib-coverage@^3.0.0", "istanbul-lib-coverage@^3.2.0": - "integrity" "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==" - "resolved" "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz" - "version" "3.2.0" - -"istanbul-lib-instrument@^5.0.4", "istanbul-lib-instrument@^5.1.0": - "integrity" "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==" - "resolved" "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz" - "version" "5.2.1" - dependencies: - "@babel/core" "^7.12.3" - "@babel/parser" "^7.14.7" - "@istanbuljs/schema" "^0.1.2" - "istanbul-lib-coverage" "^3.2.0" - "semver" "^6.3.0" - -"istanbul-lib-report@^3.0.0": - "integrity" "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==" - "resolved" "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "istanbul-lib-coverage" "^3.0.0" - "make-dir" "^3.0.0" - "supports-color" "^7.1.0" - -"istanbul-lib-source-maps@^4.0.0": - "integrity" "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==" - "resolved" "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "debug" "^4.1.1" - "istanbul-lib-coverage" "^3.0.0" - "source-map" "^0.6.1" - -"istanbul-reports@^3.1.3": - "integrity" "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==" - "resolved" "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz" - "version" "3.1.5" - dependencies: - "html-escaper" "^2.0.0" - "istanbul-lib-report" "^3.0.0" - -"jest-changed-files@^29.2.0": - "integrity" "sha512-qPVmLLyBmvF5HJrY7krDisx6Voi8DmlV3GZYX0aFNbaQsZeoz1hfxcCMbqDGuQCxU1dJy9eYc2xscE8QrCCYaA==" - "resolved" "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.2.0.tgz" - "version" "29.2.0" - dependencies: - "execa" "^5.0.0" - "p-limit" "^3.1.0" - -"jest-circus@^29.2.2": - "integrity" "sha512-upSdWxx+Mh4DV7oueuZndJ1NVdgtTsqM4YgywHEx05UMH5nxxA2Qu9T9T9XVuR021XxqSoaKvSmmpAbjwwwxMw==" - "resolved" "https://registry.npmjs.org/jest-circus/-/jest-circus-29.2.2.tgz" - "version" "29.2.2" - dependencies: - "@jest/environment" "^29.2.2" - "@jest/expect" "^29.2.2" - "@jest/test-result" "^29.2.1" - "@jest/types" "^29.2.1" - "@types/node" "*" - "chalk" "^4.0.0" - "co" "^4.6.0" - "dedent" "^0.7.0" - "is-generator-fn" "^2.0.0" - "jest-each" "^29.2.1" - "jest-matcher-utils" "^29.2.2" - "jest-message-util" "^29.2.1" - "jest-runtime" "^29.2.2" - "jest-snapshot" "^29.2.2" - "jest-util" "^29.2.1" - "p-limit" "^3.1.0" - "pretty-format" "^29.2.1" - "slash" "^3.0.0" - "stack-utils" "^2.0.3" - -"jest-cli@^29.2.2": - "integrity" "sha512-R45ygnnb2CQOfd8rTPFR+/fls0d+1zXS6JPYTBBrnLPrhr58SSuPTiA5Tplv8/PXpz4zXR/AYNxmwIj6J6nrvg==" - "resolved" "https://registry.npmjs.org/jest-cli/-/jest-cli-29.2.2.tgz" - "version" "29.2.2" - dependencies: - "@jest/core" "^29.2.2" - "@jest/test-result" "^29.2.1" - "@jest/types" "^29.2.1" - "chalk" "^4.0.0" - "exit" "^0.1.2" - "graceful-fs" "^4.2.9" - "import-local" "^3.0.2" - "jest-config" "^29.2.2" - "jest-util" "^29.2.1" - "jest-validate" "^29.2.2" - "prompts" "^2.0.1" - "yargs" "^17.3.1" - -"jest-config@^29.2.2": - "integrity" "sha512-Q0JX54a5g1lP63keRfKR8EuC7n7wwny2HoTRDb8cx78IwQOiaYUVZAdjViY3WcTxpR02rPUpvNVmZ1fkIlZPcw==" - "resolved" "https://registry.npmjs.org/jest-config/-/jest-config-29.2.2.tgz" - "version" "29.2.2" - dependencies: - "@babel/core" "^7.11.6" - "@jest/test-sequencer" "^29.2.2" - "@jest/types" "^29.2.1" - "babel-jest" "^29.2.2" - "chalk" "^4.0.0" - "ci-info" "^3.2.0" - "deepmerge" "^4.2.2" - "glob" "^7.1.3" - "graceful-fs" "^4.2.9" - "jest-circus" "^29.2.2" - "jest-environment-node" "^29.2.2" - "jest-get-type" "^29.2.0" - "jest-regex-util" "^29.2.0" - "jest-resolve" "^29.2.2" - "jest-runner" "^29.2.2" - "jest-util" "^29.2.1" - "jest-validate" "^29.2.2" - "micromatch" "^4.0.4" - "parse-json" "^5.2.0" - "pretty-format" "^29.2.1" - "slash" "^3.0.0" - "strip-json-comments" "^3.1.1" - -"jest-diff@^27.5.1": - "integrity" "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==" - "resolved" "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "chalk" "^4.0.0" - "diff-sequences" "^27.5.1" - "jest-get-type" "^27.5.1" - "pretty-format" "^27.5.1" - -"jest-diff@^29.2.1": - "integrity" "sha512-gfh/SMNlQmP3MOUgdzxPOd4XETDJifADpT937fN1iUGz+9DgOu2eUPHH25JDkLVcLwwqxv3GzVyK4VBUr9fjfA==" - "resolved" "https://registry.npmjs.org/jest-diff/-/jest-diff-29.2.1.tgz" - "version" "29.2.1" - dependencies: - "chalk" "^4.0.0" - "diff-sequences" "^29.2.0" - "jest-get-type" "^29.2.0" - "pretty-format" "^29.2.1" - -"jest-docblock@^29.2.0": - "integrity" "sha512-bkxUsxTgWQGbXV5IENmfiIuqZhJcyvF7tU4zJ/7ioTutdz4ToB5Yx6JOFBpgI+TphRY4lhOyCWGNH/QFQh5T6A==" - "resolved" "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.2.0.tgz" - "version" "29.2.0" - dependencies: - "detect-newline" "^3.0.0" - -"jest-each@^29.2.1": - "integrity" "sha512-sGP86H/CpWHMyK3qGIGFCgP6mt+o5tu9qG4+tobl0LNdgny0aitLXs9/EBacLy3Bwqy+v4uXClqJgASJWcruYw==" - "resolved" "https://registry.npmjs.org/jest-each/-/jest-each-29.2.1.tgz" - "version" "29.2.1" - dependencies: - "@jest/types" "^29.2.1" - "chalk" "^4.0.0" - "jest-get-type" "^29.2.0" - "jest-util" "^29.2.1" - "pretty-format" "^29.2.1" - -"jest-environment-jsdom@^29.2.2": - "integrity" "sha512-5mNtTcky1+RYv9kxkwMwt7fkzyX4EJUarV7iI+NQLigpV4Hz4sgfOdP4kOpCHXbkRWErV7tgXoXLm2CKtucr+A==" - "resolved" "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.2.2.tgz" - "version" "29.2.2" - dependencies: - "@jest/environment" "^29.2.2" - "@jest/fake-timers" "^29.2.2" - "@jest/types" "^29.2.1" - "@types/jsdom" "^20.0.0" - "@types/node" "*" - "jest-mock" "^29.2.2" - "jest-util" "^29.2.1" - "jsdom" "^20.0.0" - -"jest-environment-node@^29.2.2": - "integrity" "sha512-B7qDxQjkIakQf+YyrqV5dICNs7tlCO55WJ4OMSXsqz1lpI/0PmeuXdx2F7eU8rnPbRkUR/fItSSUh0jvE2y/tw==" - "resolved" "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.2.2.tgz" - "version" "29.2.2" - dependencies: - "@jest/environment" "^29.2.2" - "@jest/fake-timers" "^29.2.2" - "@jest/types" "^29.2.1" - "@types/node" "*" - "jest-mock" "^29.2.2" - "jest-util" "^29.2.1" - -"jest-get-type@^27.5.1": - "integrity" "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==" - "resolved" "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz" - "version" "27.5.1" - -"jest-get-type@^29.2.0": - "integrity" "sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA==" - "resolved" "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.2.0.tgz" - "version" "29.2.0" - -"jest-haste-map@^29.2.1": - "integrity" "sha512-wF460rAFmYc6ARcCFNw4MbGYQjYkvjovb9GBT+W10Um8q5nHq98jD6fHZMDMO3tA56S8XnmNkM8GcA8diSZfnA==" - "resolved" "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.2.1.tgz" - "version" "29.2.1" - dependencies: - "@jest/types" "^29.2.1" - "@types/graceful-fs" "^4.1.3" - "@types/node" "*" - "anymatch" "^3.0.3" - "fb-watchman" "^2.0.0" - "graceful-fs" "^4.2.9" - "jest-regex-util" "^29.2.0" - "jest-util" "^29.2.1" - "jest-worker" "^29.2.1" - "micromatch" "^4.0.4" - "walker" "^1.0.8" - optionalDependencies: - "fsevents" "^2.3.2" - -"jest-leak-detector@^29.2.1": - "integrity" "sha512-1YvSqYoiurxKOJtySc+CGVmw/e1v4yNY27BjWTVzp0aTduQeA7pdieLiW05wTYG/twlKOp2xS/pWuikQEmklug==" - "resolved" "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.2.1.tgz" - "version" "29.2.1" - dependencies: - "jest-get-type" "^29.2.0" - "pretty-format" "^29.2.1" - -"jest-matcher-utils@^27.0.0": - "integrity" "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==" - "resolved" "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "chalk" "^4.0.0" - "jest-diff" "^27.5.1" - "jest-get-type" "^27.5.1" - "pretty-format" "^27.5.1" - -"jest-matcher-utils@^29.2.2": - "integrity" "sha512-4DkJ1sDPT+UX2MR7Y3od6KtvRi9Im1ZGLGgdLFLm4lPexbTaCgJW5NN3IOXlQHF7NSHY/VHhflQ+WoKtD/vyCw==" - "resolved" "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.2.2.tgz" - "version" "29.2.2" - dependencies: - "chalk" "^4.0.0" - "jest-diff" "^29.2.1" - "jest-get-type" "^29.2.0" - "pretty-format" "^29.2.1" - -"jest-message-util@^29.2.1": - "integrity" "sha512-Dx5nEjw9V8C1/Yj10S/8ivA8F439VS8vTq1L7hEgwHFn9ovSKNpYW/kwNh7UglaEgXO42XxzKJB+2x0nSglFVw==" - "resolved" "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.2.1.tgz" - "version" "29.2.1" - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^29.2.1" - "@types/stack-utils" "^2.0.0" - "chalk" "^4.0.0" - "graceful-fs" "^4.2.9" - "micromatch" "^4.0.4" - "pretty-format" "^29.2.1" - "slash" "^3.0.0" - "stack-utils" "^2.0.3" - -"jest-mock@^29.2.2": - "integrity" "sha512-1leySQxNAnivvbcx0sCB37itu8f4OX2S/+gxLAV4Z62shT4r4dTG9tACDywUAEZoLSr36aYUTsVp3WKwWt4PMQ==" - "resolved" "https://registry.npmjs.org/jest-mock/-/jest-mock-29.2.2.tgz" - "version" "29.2.2" - dependencies: - "@jest/types" "^29.2.1" - "@types/node" "*" - "jest-util" "^29.2.1" - -"jest-pnp-resolver@^1.2.2": - "integrity" "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==" - "resolved" "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz" - "version" "1.2.2" - -"jest-regex-util@^29.2.0": - "integrity" "sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA==" - "resolved" "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.2.0.tgz" - "version" "29.2.0" - -"jest-resolve-dependencies@^29.2.2": - "integrity" "sha512-wWOmgbkbIC2NmFsq8Lb+3EkHuW5oZfctffTGvwsA4JcJ1IRk8b2tg+hz44f0lngvRTeHvp3Kyix9ACgudHH9aQ==" - "resolved" "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.2.2.tgz" - "version" "29.2.2" - dependencies: - "jest-regex-util" "^29.2.0" - "jest-snapshot" "^29.2.2" - -"jest-resolve@*", "jest-resolve@^29.2.2": - "integrity" "sha512-3gaLpiC3kr14rJR3w7vWh0CBX2QAhfpfiQTwrFPvVrcHe5VUBtIXaR004aWE/X9B2CFrITOQAp5gxLONGrk6GA==" - "resolved" "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.2.2.tgz" - "version" "29.2.2" - dependencies: - "chalk" "^4.0.0" - "graceful-fs" "^4.2.9" - "jest-haste-map" "^29.2.1" - "jest-pnp-resolver" "^1.2.2" - "jest-util" "^29.2.1" - "jest-validate" "^29.2.2" - "resolve" "^1.20.0" - "resolve.exports" "^1.1.0" - "slash" "^3.0.0" - -"jest-runner@^29.2.2": - "integrity" "sha512-1CpUxXDrbsfy9Hr9/1zCUUhT813kGGK//58HeIw/t8fa/DmkecEwZSWlb1N/xDKXg3uCFHQp1GCvlSClfImMxg==" - "resolved" "https://registry.npmjs.org/jest-runner/-/jest-runner-29.2.2.tgz" - "version" "29.2.2" - dependencies: - "@jest/console" "^29.2.1" - "@jest/environment" "^29.2.2" - "@jest/test-result" "^29.2.1" - "@jest/transform" "^29.2.2" - "@jest/types" "^29.2.1" - "@types/node" "*" - "chalk" "^4.0.0" - "emittery" "^0.13.1" - "graceful-fs" "^4.2.9" - "jest-docblock" "^29.2.0" - "jest-environment-node" "^29.2.2" - "jest-haste-map" "^29.2.1" - "jest-leak-detector" "^29.2.1" - "jest-message-util" "^29.2.1" - "jest-resolve" "^29.2.2" - "jest-runtime" "^29.2.2" - "jest-util" "^29.2.1" - "jest-watcher" "^29.2.2" - "jest-worker" "^29.2.1" - "p-limit" "^3.1.0" - "source-map-support" "0.5.13" - -"jest-runtime@^29.2.2": - "integrity" "sha512-TpR1V6zRdLynckKDIQaY41od4o0xWL+KOPUCZvJK2bu5P1UXhjobt5nJ2ICNeIxgyj9NGkO0aWgDqYPVhDNKjA==" - "resolved" "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.2.2.tgz" - "version" "29.2.2" - dependencies: - "@jest/environment" "^29.2.2" - "@jest/fake-timers" "^29.2.2" - "@jest/globals" "^29.2.2" - "@jest/source-map" "^29.2.0" - "@jest/test-result" "^29.2.1" - "@jest/transform" "^29.2.2" - "@jest/types" "^29.2.1" - "@types/node" "*" - "chalk" "^4.0.0" - "cjs-module-lexer" "^1.0.0" - "collect-v8-coverage" "^1.0.0" - "glob" "^7.1.3" - "graceful-fs" "^4.2.9" - "jest-haste-map" "^29.2.1" - "jest-message-util" "^29.2.1" - "jest-mock" "^29.2.2" - "jest-regex-util" "^29.2.0" - "jest-resolve" "^29.2.2" - "jest-snapshot" "^29.2.2" - "jest-util" "^29.2.1" - "slash" "^3.0.0" - "strip-bom" "^4.0.0" - -"jest-snapshot@^29.2.2": - "integrity" "sha512-GfKJrpZ5SMqhli3NJ+mOspDqtZfJBryGA8RIBxF+G+WbDoC7HCqKaeAss4Z/Sab6bAW11ffasx8/vGsj83jyjA==" - "resolved" "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.2.2.tgz" - "version" "29.2.2" - dependencies: - "@babel/core" "^7.11.6" - "@babel/generator" "^7.7.2" - "@babel/plugin-syntax-jsx" "^7.7.2" - "@babel/plugin-syntax-typescript" "^7.7.2" - "@babel/traverse" "^7.7.2" - "@babel/types" "^7.3.3" - "@jest/expect-utils" "^29.2.2" - "@jest/transform" "^29.2.2" - "@jest/types" "^29.2.1" - "@types/babel__traverse" "^7.0.6" - "@types/prettier" "^2.1.5" - "babel-preset-current-node-syntax" "^1.0.0" - "chalk" "^4.0.0" - "expect" "^29.2.2" - "graceful-fs" "^4.2.9" - "jest-diff" "^29.2.1" - "jest-get-type" "^29.2.0" - "jest-haste-map" "^29.2.1" - "jest-matcher-utils" "^29.2.2" - "jest-message-util" "^29.2.1" - "jest-util" "^29.2.1" - "natural-compare" "^1.4.0" - "pretty-format" "^29.2.1" - "semver" "^7.3.5" - -"jest-util@^29.0.0", "jest-util@^29.2.1": - "integrity" "sha512-P5VWDj25r7kj7kl4pN2rG/RN2c1TLfYYYZYULnS/35nFDjBai+hBeo3MDrYZS7p6IoY3YHZnt2vq4L6mKnLk0g==" - "resolved" "https://registry.npmjs.org/jest-util/-/jest-util-29.2.1.tgz" - "version" "29.2.1" - dependencies: - "@jest/types" "^29.2.1" - "@types/node" "*" - "chalk" "^4.0.0" - "ci-info" "^3.2.0" - "graceful-fs" "^4.2.9" - "picomatch" "^2.2.3" - -"jest-validate@^29.2.2": - "integrity" "sha512-eJXATaKaSnOuxNfs8CLHgdABFgUrd0TtWS8QckiJ4L/QVDF4KVbZFBBOwCBZHOS0Rc5fOxqngXeGXE3nGQkpQA==" - "resolved" "https://registry.npmjs.org/jest-validate/-/jest-validate-29.2.2.tgz" - "version" "29.2.2" - dependencies: - "@jest/types" "^29.2.1" - "camelcase" "^6.2.0" - "chalk" "^4.0.0" - "jest-get-type" "^29.2.0" - "leven" "^3.1.0" - "pretty-format" "^29.2.1" - -"jest-watcher@^29.2.2": - "integrity" "sha512-j2otfqh7mOvMgN2WlJ0n7gIx9XCMWntheYGlBK7+5g3b1Su13/UAK7pdKGyd4kDlrLwtH2QPvRv5oNIxWvsJ1w==" - "resolved" "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.2.2.tgz" - "version" "29.2.2" - dependencies: - "@jest/test-result" "^29.2.1" - "@jest/types" "^29.2.1" - "@types/node" "*" - "ansi-escapes" "^4.2.1" - "chalk" "^4.0.0" - "emittery" "^0.13.1" - "jest-util" "^29.2.1" - "string-length" "^4.0.1" - -"jest-worker@^26.2.1": - "integrity" "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==" - "resolved" "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz" - "version" "26.6.2" - dependencies: - "@types/node" "*" - "merge-stream" "^2.0.0" - "supports-color" "^7.0.0" - -"jest-worker@^29.2.1": - "integrity" "sha512-ROHTZ+oj7sBrgtv46zZ84uWky71AoYi0vEV9CdEtc1FQunsoAGe5HbQmW76nI5QWdvECVPrSi1MCVUmizSavMg==" - "resolved" "https://registry.npmjs.org/jest-worker/-/jest-worker-29.2.1.tgz" - "version" "29.2.1" - dependencies: - "@types/node" "*" - "jest-util" "^29.2.1" - "merge-stream" "^2.0.0" - "supports-color" "^8.0.0" - -"jest@^29.0.0", "jest@^29.2.2", "jest@>= 27": - "integrity" "sha512-r+0zCN9kUqoON6IjDdjbrsWobXM/09Nd45kIPRD8kloaRh1z5ZCMdVsgLXGxmlL7UpAJsvCYOQNO+NjvG/gqiQ==" - "resolved" "https://registry.npmjs.org/jest/-/jest-29.2.2.tgz" - "version" "29.2.2" - dependencies: - "@jest/core" "^29.2.2" - "@jest/types" "^29.2.1" - "import-local" "^3.0.2" - "jest-cli" "^29.2.2" - -"js-tokens@^3.0.0 || ^4.0.0", "js-tokens@^4.0.0": - "integrity" "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - "resolved" "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" - "version" "4.0.0" - -"js-yaml@^3.13.0", "js-yaml@^3.13.1": - "integrity" "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==" - "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" - "version" "3.14.1" - dependencies: - "argparse" "^1.0.7" - "esprima" "^4.0.0" - -"jsbn@~0.1.0": - "integrity" "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" - "resolved" "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" - "version" "0.1.1" - -"jsdom@^20.0.0": - "integrity" "sha512-AHWa+QO/cgRg4N+DsmHg1Y7xnz+8KU3EflM0LVDTdmrYOc1WWTSkOjtpUveQH+1Bqd5rtcVnb/DuxV/UjDO4rA==" - "resolved" "https://registry.npmjs.org/jsdom/-/jsdom-20.0.2.tgz" - "version" "20.0.2" - dependencies: - "abab" "^2.0.6" - "acorn" "^8.8.0" - "acorn-globals" "^7.0.0" - "cssom" "^0.5.0" - "cssstyle" "^2.3.0" - "data-urls" "^3.0.2" - "decimal.js" "^10.4.1" - "domexception" "^4.0.0" - "escodegen" "^2.0.0" - "form-data" "^4.0.0" - "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.2" - "parse5" "^7.1.1" - "saxes" "^6.0.0" - "symbol-tree" "^3.2.4" - "tough-cookie" "^4.1.2" - "w3c-xmlserializer" "^3.0.0" - "webidl-conversions" "^7.0.0" - "whatwg-encoding" "^2.0.0" - "whatwg-mimetype" "^3.0.0" - "whatwg-url" "^11.0.0" - "ws" "^8.9.0" - "xml-name-validator" "^4.0.0" - -"jsesc@^2.5.1": - "integrity" "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" - "resolved" "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" - "version" "2.5.2" - -"jsesc@~0.5.0": - "integrity" "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==" - "resolved" "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" - "version" "0.5.0" - -"json-parse-even-better-errors@^2.3.0": - "integrity" "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - "resolved" "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" - "version" "2.3.1" - -"json-schema-traverse@^0.4.1": - "integrity" "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" - "version" "0.4.1" - -"json-schema@0.4.0": - "integrity" "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" - "resolved" "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz" - "version" "0.4.0" - -"json-stable-stringify-without-jsonify@^1.0.1": - "integrity" "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" - "resolved" "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" - "version" "1.0.1" - -"json-stringify-safe@~5.0.1": - "integrity" "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" - "resolved" "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" - "version" "5.0.1" - -"json5@^2.2.1": - "integrity" "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==" - "resolved" "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz" - "version" "2.2.1" - -"jsonfile@^6.0.1": - "integrity" "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==" - "resolved" "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" - "version" "6.1.0" - dependencies: - "universalify" "^2.0.0" - optionalDependencies: - "graceful-fs" "^4.1.6" - -"jsprim@^1.2.2": - "integrity" "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==" - "resolved" "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz" - "version" "1.4.2" - dependencies: - "assert-plus" "1.0.0" - "extsprintf" "1.3.0" - "json-schema" "0.4.0" - "verror" "1.10.0" - -"kleur@^3.0.3": - "integrity" "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" - "resolved" "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" - "version" "3.0.3" - -"lcov-parse@^1.0.0": - "integrity" "sha512-aprLII/vPzuQvYZnDRU78Fns9I2Ag3gi4Ipga/hxnVMCZC8DnR2nI7XBqrPoywGfxqIx/DgarGvDJZAD3YBTgQ==" - "resolved" "https://registry.npmjs.org/lcov-parse/-/lcov-parse-1.0.0.tgz" - "version" "1.0.0" - -"leven@^3.1.0": - "integrity" "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==" - "resolved" "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" - "version" "3.1.0" - -"levn@^0.3.0", "levn@~0.3.0": - "integrity" "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==" - "resolved" "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz" - "version" "0.3.0" - dependencies: - "prelude-ls" "~1.1.2" - "type-check" "~0.3.2" - -"lines-and-columns@^1.1.6": - "integrity" "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - "resolved" "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" - "version" "1.2.4" - -"locate-path@^5.0.0": - "integrity" "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==" - "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "p-locate" "^4.1.0" - -"locate-path@^6.0.0": - "integrity" "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==" - "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "p-locate" "^5.0.0" - -"lodash.debounce@^4.0.8": - "integrity" "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" - "resolved" "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" - "version" "4.0.8" - -"lodash.memoize@4.x": - "integrity" "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" - "resolved" "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" - "version" "4.1.2" - -"lodash.unescape@4.0.1": - "integrity" "sha512-DhhGRshNS1aX6s5YdBE3njCCouPgnG29ebyHvImlZzXZf2SHgt+J08DHgytTPnpywNbO1Y8mNUFyQuIDBq2JZg==" - "resolved" "https://registry.npmjs.org/lodash.unescape/-/lodash.unescape-4.0.1.tgz" - "version" "4.0.1" - -"lodash@^4.17.11", "lodash@^4.17.12", "lodash@^4.17.14", "lodash@^4.17.15": - "integrity" "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" - "version" "4.17.21" - -"log-driver@^1.2.7": - "integrity" "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==" - "resolved" "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz" - "version" "1.2.7" - -"loose-envify@^1.1.0": - "integrity" "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==" - "resolved" "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" - "version" "1.4.0" - dependencies: - "js-tokens" "^3.0.0 || ^4.0.0" - -"lru-cache@^6.0.0": - "integrity" "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==" - "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "yallist" "^4.0.0" - -"magic-string@^0.25.7": - "integrity" "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==" - "resolved" "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz" - "version" "0.25.9" - dependencies: - "sourcemap-codec" "^1.4.8" - -"make-dir@^3.0.0", "make-dir@^3.0.2": - "integrity" "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==" - "resolved" "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "semver" "^6.0.0" - -"make-error@^1.1.1", "make-error@1.x": - "integrity" "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" - "resolved" "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" - "version" "1.3.6" - -"makeerror@1.0.12": - "integrity" "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==" - "resolved" "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz" - "version" "1.0.12" - dependencies: - "tmpl" "1.0.5" - -"merge-stream@^2.0.0": - "integrity" "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - "resolved" "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" - "version" "2.0.0" - -"micromatch@^4.0.4": - "integrity" "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==" - "resolved" "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" - "version" "4.0.5" - dependencies: - "braces" "^3.0.2" - "picomatch" "^2.3.1" - -"mime-db@1.52.0": - "integrity" "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" - "resolved" "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" - "version" "1.52.0" - -"mime-types@^2.1.12", "mime-types@~2.1.19": - "integrity" "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==" - "resolved" "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" - "version" "2.1.35" - dependencies: - "mime-db" "1.52.0" - -"mimic-fn@^1.0.0": - "integrity" "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" - "resolved" "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz" - "version" "1.2.0" - -"mimic-fn@^2.1.0": - "integrity" "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" - "resolved" "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" - "version" "2.1.0" - -"min-indent@^1.0.0": - "integrity" "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" - "resolved" "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz" - "version" "1.0.1" - -"minimatch@^3.0.4", "minimatch@^3.1.1": - "integrity" "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==" - "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" - "version" "3.1.2" - dependencies: - "brace-expansion" "^1.1.7" - -"minimist@^1.2.5", "minimist@^1.2.6": - "integrity" "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==" - "resolved" "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz" - "version" "1.2.7" - -"mkdirp@^0.5.1": - "integrity" "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==" - "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" - "version" "0.5.6" - dependencies: - "minimist" "^1.2.6" - -"ms@2.1.2": - "integrity" "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" - "version" "2.1.2" - -"mute-stream@0.0.7": - "integrity" "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==" - "resolved" "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz" - "version" "0.0.7" - -"nanoid@^3.3.4": - "integrity" "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" - "resolved" "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz" - "version" "3.3.4" - -"natural-compare@^1.4.0": - "integrity" "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" - "resolved" "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" - "version" "1.4.0" - -"nice-try@^1.0.4": - "integrity" "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" - "resolved" "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz" - "version" "1.0.5" - -"node-int64@^0.4.0": - "integrity" "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==" - "resolved" "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" - "version" "0.4.0" - -"node-releases@^2.0.6": - "integrity" "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" - "resolved" "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz" - "version" "2.0.6" - -"normalize-path@^3.0.0": - "integrity" "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - "resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" - "version" "3.0.0" - -"npm-run-path@^4.0.1": - "integrity" "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==" - "resolved" "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "path-key" "^3.0.0" - -"nwsapi@^2.2.2": - "integrity" "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==" - "resolved" "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz" - "version" "2.2.2" - -"oauth-sign@~0.9.0": - "integrity" "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" - "resolved" "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz" - "version" "0.9.0" - -"object-inspect@^1.9.0": - "integrity" "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" - "resolved" "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz" - "version" "1.12.2" - -"object-is@^1.1.5": - "integrity" "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==" - "resolved" "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz" - "version" "1.1.5" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.3" - -"object-keys@^1.1.1": - "integrity" "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" - "resolved" "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" - "version" "1.1.1" - -"object.assign@^4.1.4": - "integrity" "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==" - "resolved" "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz" - "version" "4.1.4" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "has-symbols" "^1.0.3" - "object-keys" "^1.1.1" - -"once@^1.3.0": - "integrity" "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==" - "resolved" "https://registry.npmjs.org/once/-/once-1.4.0.tgz" - "version" "1.4.0" - dependencies: - "wrappy" "1" - -"onetime@^2.0.0": - "integrity" "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==" - "resolved" "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "mimic-fn" "^1.0.0" - -"onetime@^5.1.2": - "integrity" "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==" - "resolved" "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" - "version" "5.1.2" - dependencies: - "mimic-fn" "^2.1.0" - -"optionator@^0.8.1", "optionator@^0.8.2": - "integrity" "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==" - "resolved" "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz" - "version" "0.8.3" - dependencies: - "deep-is" "~0.1.3" - "fast-levenshtein" "~2.0.6" - "levn" "~0.3.0" - "prelude-ls" "~1.1.2" - "type-check" "~0.3.2" - "word-wrap" "~1.2.3" - -"os-tmpdir@~1.0.2": - "integrity" "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==" - "resolved" "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" - "version" "1.0.2" - -"p-limit@^2.2.0": - "integrity" "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==" - "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" - "version" "2.3.0" - dependencies: - "p-try" "^2.0.0" - -"p-limit@^3.0.2", "p-limit@^3.1.0": - "integrity" "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==" - "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "yocto-queue" "^0.1.0" - -"p-locate@^4.1.0": - "integrity" "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==" - "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "p-limit" "^2.2.0" - -"p-locate@^5.0.0": - "integrity" "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==" - "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "p-limit" "^3.0.2" - -"p-try@^2.0.0": - "integrity" "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" - "resolved" "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" - "version" "2.2.0" - -"parent-module@^1.0.0": - "integrity" "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==" - "resolved" "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "callsites" "^3.0.0" - -"parse-json@^5.2.0": - "integrity" "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==" - "resolved" "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" - "version" "5.2.0" - dependencies: - "@babel/code-frame" "^7.0.0" - "error-ex" "^1.3.1" - "json-parse-even-better-errors" "^2.3.0" - "lines-and-columns" "^1.1.6" - -"parse5@^7.0.0", "parse5@^7.1.1": - "integrity" "sha512-kwpuwzB+px5WUg9pyK0IcK/shltJN5/OVhQagxhCQNtT9Y9QRZqNY2e1cmbu/paRh5LMnz/oVTVLBpjFmMZhSg==" - "resolved" "https://registry.npmjs.org/parse5/-/parse5-7.1.1.tgz" - "version" "7.1.1" - dependencies: - "entities" "^4.4.0" - -"path-exists@^4.0.0": - "integrity" "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" - "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" - "version" "4.0.0" - -"path-is-absolute@^1.0.0": - "integrity" "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" - "resolved" "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" - "version" "1.0.1" - -"path-is-inside@^1.0.2": - "integrity" "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==" - "resolved" "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz" - "version" "1.0.2" - -"path-is-network-drive@^1.0.20": - "integrity" "sha512-p5wCWlRB4+ggzxWshqHH9aF3kAuVu295NaENXmVhThbZPJQBeJdxZTP6CIoUR+kWHDUW56S9YcaO1gXnc/BOxw==" - "resolved" "https://registry.npmjs.org/path-is-network-drive/-/path-is-network-drive-1.0.20.tgz" - "version" "1.0.20" - dependencies: - "tslib" "^2" - -"path-key@^2.0.1": - "integrity" "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==" - "resolved" "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" - "version" "2.0.1" - -"path-key@^3.0.0", "path-key@^3.1.0": - "integrity" "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" - "resolved" "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" - "version" "3.1.1" - -"path-parse@^1.0.7": - "integrity" "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - "resolved" "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" - "version" "1.0.7" - -"path-strip-sep@^1.0.17": - "integrity" "sha512-+2zIC2fNgdilgV7pTrktY6oOxxZUo9x5zJYfTzxsGze5kSGDDwhA5/0WlBn+sUyv/WuuyYn3OfM+Ue5nhdQUgA==" - "resolved" "https://registry.npmjs.org/path-strip-sep/-/path-strip-sep-1.0.17.tgz" - "version" "1.0.17" - dependencies: - "tslib" "^2" - -"performance-now@^2.1.0": - "integrity" "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" - "resolved" "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz" - "version" "2.1.0" - -"picocolors@^1.0.0": - "integrity" "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - "resolved" "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" - "version" "1.0.0" - -"picomatch@^2.0.4", "picomatch@^2.2.2", "picomatch@^2.2.3", "picomatch@^2.3.1": - "integrity" "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" - "resolved" "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" - "version" "2.3.1" - -"pirates@^4.0.4": - "integrity" "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==" - "resolved" "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz" - "version" "4.0.5" - -"pkg-dir@^4.1.0", "pkg-dir@^4.2.0": - "integrity" "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==" - "resolved" "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" - "version" "4.2.0" - dependencies: - "find-up" "^4.0.0" - -"pkg-dir@< 6 >= 5": - "integrity" "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==" - "resolved" "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "find-up" "^5.0.0" - -"postcss@^8.1.10": - "integrity" "sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==" - "resolved" "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz" - "version" "8.4.18" - dependencies: - "nanoid" "^3.3.4" - "picocolors" "^1.0.0" - "source-map-js" "^1.0.2" - -"prelude-ls@~1.1.2": - "integrity" "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==" - "resolved" "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz" - "version" "1.1.2" - -"prettier@^2.7.1": - "integrity" "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==" - "resolved" "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz" - "version" "2.7.1" - -"pretty-format@^27.0.0", "pretty-format@^27.5.1": - "integrity" "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==" - "resolved" "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz" - "version" "27.5.1" - dependencies: - "ansi-regex" "^5.0.1" - "ansi-styles" "^5.0.0" - "react-is" "^17.0.1" - -"pretty-format@^29.0.0", "pretty-format@^29.2.1": - "integrity" "sha512-Y41Sa4aLCtKAXvwuIpTvcFBkyeYp2gdFWzXGA+ZNES3VwURIB165XO/z7CjETwzCCS53MjW/rLMyyqEnTtaOfA==" - "resolved" "https://registry.npmjs.org/pretty-format/-/pretty-format-29.2.1.tgz" - "version" "29.2.1" - dependencies: - "@jest/schemas" "^29.0.0" - "ansi-styles" "^5.0.0" - "react-is" "^18.0.0" - -"progress@^2.0.0": - "integrity" "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" - "resolved" "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" - "version" "2.0.3" - -"prompts@^2.0.1": - "integrity" "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==" - "resolved" "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" - "version" "2.4.2" - dependencies: - "kleur" "^3.0.3" - "sisteransi" "^1.0.5" - -"psl@^1.1.28", "psl@^1.1.33": - "integrity" "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" - "resolved" "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz" - "version" "1.9.0" - -"punycode@^2.1.0", "punycode@^2.1.1": - "integrity" "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - "resolved" "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" - "version" "2.1.1" - -"qs@~6.5.2": - "integrity" "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==" - "resolved" "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz" - "version" "6.5.3" - -"querystringify@^2.1.1": - "integrity" "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" - "resolved" "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz" - "version" "2.2.0" - -"randombytes@^2.1.0": - "integrity" "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==" - "resolved" "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "safe-buffer" "^5.1.0" - -"react-is@^17.0.1": - "integrity" "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" - "resolved" "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" - "version" "17.0.2" - -"react-is@^18.0.0": - "integrity" "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" - "resolved" "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz" - "version" "18.2.0" - -"react@^18.2.0": - "integrity" "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==" - "resolved" "https://registry.npmjs.org/react/-/react-18.2.0.tgz" - "version" "18.2.0" - dependencies: - "loose-envify" "^1.1.0" - -"redent@^3.0.0": - "integrity" "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==" - "resolved" "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "indent-string" "^4.0.0" - "strip-indent" "^3.0.0" - -"regenerate-unicode-properties@^10.1.0": - "integrity" "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==" - "resolved" "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz" - "version" "10.1.0" - dependencies: - "regenerate" "^1.4.2" - -"regenerate@^1.4.2": - "integrity" "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" - "resolved" "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" - "version" "1.4.2" - -"regenerator-runtime@^0.13.10": - "integrity" "sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw==" - "resolved" "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz" - "version" "0.13.10" - -"regenerator-transform@^0.15.0": - "integrity" "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==" - "resolved" "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz" - "version" "0.15.0" - dependencies: - "@babel/runtime" "^7.8.4" - -"regexp.prototype.flags@^1.4.3": - "integrity" "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==" - "resolved" "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz" - "version" "1.4.3" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.3" - "functions-have-names" "^1.2.2" - -"regexpp@^2.0.1": - "integrity" "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==" - "resolved" "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz" - "version" "2.0.1" - -"regexpu-core@^5.1.0": - "integrity" "sha512-HrnlNtpvqP1Xkb28tMhBUO2EbyUHdQlsnlAhzWcwHy8WJR53UWr7/MAvqrsQKMbV4qdpv03oTMG8iIhfsPFktQ==" - "resolved" "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.1.tgz" - "version" "5.2.1" - dependencies: - "regenerate" "^1.4.2" - "regenerate-unicode-properties" "^10.1.0" - "regjsgen" "^0.7.1" - "regjsparser" "^0.9.1" - "unicode-match-property-ecmascript" "^2.0.0" - "unicode-match-property-value-ecmascript" "^2.0.0" - -"regjsgen@^0.7.1": - "integrity" "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==" - "resolved" "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz" - "version" "0.7.1" - -"regjsparser@^0.9.1": - "integrity" "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==" - "resolved" "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz" - "version" "0.9.1" - dependencies: - "jsesc" "~0.5.0" - -"request@^2.88.2": - "integrity" "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==" - "resolved" "https://registry.npmjs.org/request/-/request-2.88.2.tgz" - "version" "2.88.2" - dependencies: - "aws-sign2" "~0.7.0" - "aws4" "^1.8.0" - "caseless" "~0.12.0" - "combined-stream" "~1.0.6" - "extend" "~3.0.2" - "forever-agent" "~0.6.1" - "form-data" "~2.3.2" - "har-validator" "~5.1.3" - "http-signature" "~1.2.0" - "is-typedarray" "~1.0.0" - "isstream" "~0.1.2" - "json-stringify-safe" "~5.0.1" - "mime-types" "~2.1.19" - "oauth-sign" "~0.9.0" - "performance-now" "^2.1.0" - "qs" "~6.5.2" - "safe-buffer" "^5.1.2" - "tough-cookie" "~2.5.0" - "tunnel-agent" "^0.6.0" - "uuid" "^3.3.2" - -"require-directory@^2.1.1": - "integrity" "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" - "resolved" "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" - "version" "2.1.1" - -"requires-port@^1.0.0": - "integrity" "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" - "resolved" "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" - "version" "1.0.0" - -"resolve-cwd@^3.0.0": - "integrity" "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==" - "resolved" "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "resolve-from" "^5.0.0" - -"resolve-from@^4.0.0": - "integrity" "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" - "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" - "version" "4.0.0" - -"resolve-from@^5.0.0": - "integrity" "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" - "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" - "version" "5.0.0" - -"resolve.exports@^1.1.0": - "integrity" "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==" - "resolved" "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz" - "version" "1.1.0" - -"resolve@^1.14.2", "resolve@^1.17.0", "resolve@^1.19.0", "resolve@^1.20.0": - "integrity" "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==" - "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz" - "version" "1.22.1" - dependencies: - "is-core-module" "^2.9.0" - "path-parse" "^1.0.7" - "supports-preserve-symlinks-flag" "^1.0.0" - -"restore-cursor@^2.0.0": - "integrity" "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==" - "resolved" "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "onetime" "^2.0.0" - "signal-exit" "^3.0.2" - -"rimraf@2.6.2": - "integrity" "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==" - "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz" - "version" "2.6.2" - dependencies: - "glob" "^7.0.5" - -"rimraf@2.6.3": - "integrity" "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==" - "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz" - "version" "2.6.3" - dependencies: - "glob" "^7.1.3" - -"rollup-plugin-terser@^7.0.2": - "integrity" "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==" - "resolved" "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz" - "version" "7.0.2" - dependencies: - "@babel/code-frame" "^7.10.4" - "jest-worker" "^26.2.1" - "serialize-javascript" "^4.0.0" - "terser" "^5.0.0" - -"rollup-plugin-typescript2@^0.31.2": - "integrity" "sha512-hRwEYR1C8xDGVVMFJQdEVnNAeWRvpaY97g5mp3IeLnzhNXzSVq78Ye/BJ9PAaUfN4DXa/uDnqerifMOaMFY54Q==" - "resolved" "https://registry.npmjs.org/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.31.2.tgz" - "version" "0.31.2" - dependencies: - "@rollup/pluginutils" "^4.1.2" - "@yarn-tool/resolve-package" "^1.0.40" - "find-cache-dir" "^3.3.2" - "fs-extra" "^10.0.0" - "resolve" "^1.20.0" - "tslib" "^2.3.1" - -"rollup@^1.20.0 || ^2.0.0", "rollup@^1.20.0||^2.0.0", "rollup@^2.0.0", "rollup@^2.42.0", "rollup@^2.68.0", "rollup@^2.74.1", "rollup@>=1.26.3": - "integrity" "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==" - "resolved" "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz" - "version" "2.79.1" - optionalDependencies: - "fsevents" "~2.3.2" - -"run-async@^2.2.0": - "integrity" "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==" - "resolved" "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz" - "version" "2.4.1" - -"rxjs@^6.4.0": - "integrity" "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==" - "resolved" "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz" - "version" "6.6.7" - dependencies: - "tslib" "^1.9.0" - -"safe-buffer@^5.0.1", "safe-buffer@^5.1.0", "safe-buffer@^5.1.2": - "integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - "version" "5.2.1" - -"safer-buffer@^2.0.2", "safer-buffer@^2.1.0", "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", "safer-buffer@~2.1.0": - "integrity" "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - "resolved" "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" - "version" "2.1.2" - -"saxes@^6.0.0": - "integrity" "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==" - "resolved" "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "xmlchars" "^2.2.0" - -"semver@^5.5.0": - "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - "version" "5.7.1" - -"semver@^5.5.1": - "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - "version" "5.7.1" - -"semver@^6.0.0", "semver@^6.1.1", "semver@^6.1.2", "semver@^6.3.0": - "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" - "version" "6.3.0" - -"semver@^7.3.5": - "integrity" "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==" - "resolved" "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz" - "version" "7.3.8" - dependencies: - "lru-cache" "^6.0.0" - -"semver@5.5.0": - "integrity" "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" - "resolved" "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz" - "version" "5.5.0" - -"semver@7.x": - "integrity" "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==" - "resolved" "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz" - "version" "7.3.8" - dependencies: - "lru-cache" "^6.0.0" - -"serialize-javascript@^4.0.0": - "integrity" "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==" - "resolved" "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "randombytes" "^2.1.0" - -"shebang-command@^1.2.0": - "integrity" "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==" - "resolved" "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz" - "version" "1.2.0" - dependencies: - "shebang-regex" "^1.0.0" - -"shebang-command@^2.0.0": - "integrity" "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==" - "resolved" "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "shebang-regex" "^3.0.0" - -"shebang-regex@^1.0.0": - "integrity" "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==" - "resolved" "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" - "version" "1.0.0" - -"shebang-regex@^3.0.0": - "integrity" "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" - "resolved" "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" - "version" "3.0.0" - -"side-channel@^1.0.4": - "integrity" "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==" - "resolved" "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "call-bind" "^1.0.0" - "get-intrinsic" "^1.0.2" - "object-inspect" "^1.9.0" - -"signal-exit@^3.0.2", "signal-exit@^3.0.3", "signal-exit@^3.0.7": - "integrity" "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - "resolved" "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" - "version" "3.0.7" - -"sisteransi@^1.0.5": - "integrity" "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" - "resolved" "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" - "version" "1.0.5" - -"slash@^3.0.0": - "integrity" "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" - "resolved" "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" - "version" "3.0.0" - -"slice-ansi@^2.1.0": - "integrity" "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==" - "resolved" "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "ansi-styles" "^3.2.0" - "astral-regex" "^1.0.0" - "is-fullwidth-code-point" "^2.0.0" - -"source-map-js@^1.0.2": - "integrity" "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" - "resolved" "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" - "version" "1.0.2" - -"source-map-support@~0.5.20": - "integrity" "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==" - "resolved" "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" - "version" "0.5.21" - dependencies: - "buffer-from" "^1.0.0" - "source-map" "^0.6.0" - -"source-map-support@0.5.13": - "integrity" "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==" - "resolved" "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz" - "version" "0.5.13" - dependencies: - "buffer-from" "^1.0.0" - "source-map" "^0.6.0" - -"source-map@^0.6.0", "source-map@^0.6.1", "source-map@~0.6.1": - "integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" - "version" "0.6.1" - -"sourcemap-codec@^1.4.8": - "integrity" "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" - "resolved" "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz" - "version" "1.4.8" - -"sprintf-js@~1.0.2": - "integrity" "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" - "resolved" "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" - "version" "1.0.3" - -"sshpk@^1.7.0": - "integrity" "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==" - "resolved" "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz" - "version" "1.17.0" - dependencies: - "asn1" "~0.2.3" - "assert-plus" "^1.0.0" - "bcrypt-pbkdf" "^1.0.0" - "dashdash" "^1.12.0" - "ecc-jsbn" "~0.1.1" - "getpass" "^0.1.1" - "jsbn" "~0.1.0" - "safer-buffer" "^2.0.2" - "tweetnacl" "~0.14.0" - -"stack-utils@^2.0.3": - "integrity" "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==" - "resolved" "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz" - "version" "2.0.5" - dependencies: - "escape-string-regexp" "^2.0.0" - -"string-length@^4.0.1": - "integrity" "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==" - "resolved" "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "char-regex" "^1.0.2" - "strip-ansi" "^6.0.0" - -"string-width@^2.1.0": - "integrity" "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==" - "resolved" "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "is-fullwidth-code-point" "^2.0.0" - "strip-ansi" "^4.0.0" - -"string-width@^3.0.0": - "integrity" "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==" - "resolved" "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "emoji-regex" "^7.0.1" - "is-fullwidth-code-point" "^2.0.0" - "strip-ansi" "^5.1.0" - -"string-width@^4.1.0", "string-width@^4.2.0", "string-width@^4.2.3": - "integrity" "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==" - "resolved" "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" - "version" "4.2.3" - dependencies: - "emoji-regex" "^8.0.0" - "is-fullwidth-code-point" "^3.0.0" - "strip-ansi" "^6.0.1" - -"strip-ansi@^4.0.0": - "integrity" "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "ansi-regex" "^3.0.0" - -"strip-ansi@^5.1.0": - "integrity" "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz" - "version" "5.2.0" - dependencies: - "ansi-regex" "^4.1.0" - -"strip-ansi@^6.0.0", "strip-ansi@^6.0.1": - "integrity" "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" - "version" "6.0.1" - dependencies: - "ansi-regex" "^5.0.1" - -"strip-bom@^4.0.0": - "integrity" "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==" - "resolved" "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz" - "version" "4.0.0" - -"strip-final-newline@^2.0.0": - "integrity" "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" - "resolved" "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" - "version" "2.0.0" - -"strip-indent@^3.0.0": - "integrity" "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==" - "resolved" "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "min-indent" "^1.0.0" - -"strip-json-comments@^2.0.1": - "integrity" "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==" - "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" - "version" "2.0.1" - -"strip-json-comments@^3.1.1": - "integrity" "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" - "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" - "version" "3.1.1" - -"supports-color@^5.3.0": - "integrity" "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" - "version" "5.5.0" - dependencies: - "has-flag" "^3.0.0" - -"supports-color@^7.0.0", "supports-color@^7.1.0": - "integrity" "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" - "version" "7.2.0" - dependencies: - "has-flag" "^4.0.0" - -"supports-color@^8.0.0": - "integrity" "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" - "version" "8.1.1" - dependencies: - "has-flag" "^4.0.0" - -"supports-preserve-symlinks-flag@^1.0.0": - "integrity" "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" - "resolved" "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" - "version" "1.0.0" - -"svelte-jester@^2.3.2": - "integrity" "sha512-JtxSz4FWAaCRBXbPsh4LcDs4Ua7zdXgLC0TZvT1R56hRV0dymmNP+abw67DTPF7sQPyNxWsOKd0Sl7Q8SnP8kg==" - "resolved" "https://registry.npmjs.org/svelte-jester/-/svelte-jester-2.3.2.tgz" - "version" "2.3.2" - -"svelte@^3.52.0", "svelte@>= 3": - "integrity" "sha512-FxcnEUOAVfr10vDU5dVgJN19IvqeHQCS1zfe8vayTfis9A2t5Fhx+JDe5uv/C3j//bB1umpLJ6quhgs9xyUbCQ==" - "resolved" "https://registry.npmjs.org/svelte/-/svelte-3.52.0.tgz" - "version" "3.52.0" - -"symbol-tree@^3.2.4": - "integrity" "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" - "resolved" "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz" - "version" "3.2.4" - -"table@^5.2.3": - "integrity" "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==" - "resolved" "https://registry.npmjs.org/table/-/table-5.4.6.tgz" - "version" "5.4.6" - dependencies: - "ajv" "^6.10.2" - "lodash" "^4.17.14" - "slice-ansi" "^2.1.0" - "string-width" "^3.0.0" - -"terser@^5.0.0": - "integrity" "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==" - "resolved" "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz" - "version" "5.15.1" - dependencies: - "@jridgewell/source-map" "^0.3.2" - "acorn" "^8.5.0" - "commander" "^2.20.0" - "source-map-support" "~0.5.20" - -"test-exclude@^6.0.0": - "integrity" "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==" - "resolved" "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "@istanbuljs/schema" "^0.1.2" - "glob" "^7.1.4" - "minimatch" "^3.0.4" - -"text-table@^0.2.0": - "integrity" "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" - "resolved" "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" - "version" "0.2.0" - -"through@^2.3.6": - "integrity" "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" - "resolved" "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - "version" "2.3.8" - -"tmp@^0.0.33": - "integrity" "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==" - "resolved" "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz" - "version" "0.0.33" - dependencies: - "os-tmpdir" "~1.0.2" - -"tmpl@1.0.5": - "integrity" "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" - "resolved" "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz" - "version" "1.0.5" - -"to-fast-properties@^2.0.0": - "integrity" "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" - "resolved" "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" - "version" "2.0.0" - -"to-regex-range@^5.0.1": - "integrity" "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==" - "resolved" "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" - "version" "5.0.1" - dependencies: - "is-number" "^7.0.0" - -"tough-cookie@^4.1.2": - "integrity" "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==" - "resolved" "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz" - "version" "4.1.2" - dependencies: - "psl" "^1.1.33" - "punycode" "^2.1.1" - "universalify" "^0.2.0" - "url-parse" "^1.5.3" - -"tough-cookie@~2.5.0": - "integrity" "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==" - "resolved" "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz" - "version" "2.5.0" - dependencies: - "psl" "^1.1.28" - "punycode" "^2.1.1" - -"tr46@^3.0.0": - "integrity" "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==" - "resolved" "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "punycode" "^2.1.1" - -"ts-jest@^29.0.3": - "integrity" "sha512-Ibygvmuyq1qp/z3yTh9QTwVVAbFdDy/+4BtIQR2sp6baF2SJU/8CKK/hhnGIDY2L90Az2jIqTwZPnN2p+BweiQ==" - "resolved" "https://registry.npmjs.org/ts-jest/-/ts-jest-29.0.3.tgz" - "version" "29.0.3" - dependencies: - "bs-logger" "0.x" - "fast-json-stable-stringify" "2.x" - "jest-util" "^29.0.0" - "json5" "^2.2.1" - "lodash.memoize" "4.x" - "make-error" "1.x" - "semver" "7.x" - "yargs-parser" "^21.0.1" - -"ts-node@^10.9.1", "ts-node@>=9.0.0": - "integrity" "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==" - "resolved" "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz" - "version" "10.9.1" - dependencies: - "@cspotcode/source-map-support" "^0.8.0" - "@tsconfig/node10" "^1.0.7" - "@tsconfig/node12" "^1.0.7" - "@tsconfig/node14" "^1.0.0" - "@tsconfig/node16" "^1.0.2" - "acorn" "^8.4.1" - "acorn-walk" "^8.1.1" - "arg" "^4.1.0" - "create-require" "^1.1.0" - "diff" "^4.0.1" - "make-error" "^1.1.1" - "v8-compile-cache-lib" "^3.0.1" - "yn" "3.1.1" - -"tslib@^1.8.1": - "integrity" "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" - "version" "1.14.1" - -"tslib@^1.9.0": - "integrity" "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" - "version" "1.14.1" - -"tslib@^2", "tslib@^2.3.1", "tslib@^2.4.0": - "integrity" "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz" - "version" "2.4.1" - -"tsutils@^3.7.0": - "integrity" "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==" - "resolved" "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" - "version" "3.21.0" - dependencies: - "tslib" "^1.8.1" - -"tunnel-agent@^0.6.0": - "integrity" "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==" - "resolved" "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz" - "version" "0.6.0" - dependencies: - "safe-buffer" "^5.0.1" - -"tweetnacl@^0.14.3", "tweetnacl@~0.14.0": - "integrity" "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" - "resolved" "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" - "version" "0.14.5" - -"type-check@~0.3.2": - "integrity" "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==" - "resolved" "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz" - "version" "0.3.2" - dependencies: - "prelude-ls" "~1.1.2" - -"type-detect@4.0.8": - "integrity" "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" - "resolved" "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" - "version" "4.0.8" - -"type-fest@^0.21.3": - "integrity" "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" - "version" "0.21.3" - -"typescript@^4.7.2", "typescript@>=2.4.0", "typescript@>=2.7", "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", "typescript@>=4.3": - "integrity" "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==" - "resolved" "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz" - "version" "4.8.4" - -"unicode-canonical-property-names-ecmascript@^2.0.0": - "integrity" "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==" - "resolved" "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz" - "version" "2.0.0" - -"unicode-match-property-ecmascript@^2.0.0": - "integrity" "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==" - "resolved" "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "unicode-canonical-property-names-ecmascript" "^2.0.0" - "unicode-property-aliases-ecmascript" "^2.0.0" - -"unicode-match-property-value-ecmascript@^2.0.0": - "integrity" "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==" - "resolved" "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz" - "version" "2.0.0" - -"unicode-property-aliases-ecmascript@^2.0.0": - "integrity" "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==" - "resolved" "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz" - "version" "2.1.0" - -"universalify@^0.2.0": - "integrity" "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==" - "resolved" "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz" - "version" "0.2.0" - -"universalify@^2.0.0": - "integrity" "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" - "resolved" "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz" - "version" "2.0.0" - -"upath2@^3.1.13": - "integrity" "sha512-d23dQLi8nDWSRTIQwXtaYqMrHuca0As53fNiTLLFDmsGBbepsZepISaB2H1x45bDFN/n3Qw9bydvyZEacTrEWQ==" - "resolved" "https://registry.npmjs.org/upath2/-/upath2-3.1.19.tgz" - "version" "3.1.19" - dependencies: - "@types/node" "*" - "path-is-network-drive" "^1.0.20" - "path-strip-sep" "^1.0.17" - "tslib" "^2" - -"update-browserslist-db@^1.0.9": - "integrity" "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==" - "resolved" "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz" - "version" "1.0.10" - dependencies: - "escalade" "^3.1.1" - "picocolors" "^1.0.0" - -"uri-js@^4.2.2": - "integrity" "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==" - "resolved" "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" - "version" "4.4.1" - dependencies: - "punycode" "^2.1.0" - -"url-parse@^1.5.3": - "integrity" "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==" - "resolved" "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz" - "version" "1.5.10" - dependencies: - "querystringify" "^2.1.1" - "requires-port" "^1.0.0" - -"uuid@^3.3.2": - "integrity" "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" - "resolved" "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" - "version" "3.4.0" - -"v8-compile-cache-lib@^3.0.1": - "integrity" "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" - "resolved" "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz" - "version" "3.0.1" - -"v8-to-istanbul@^9.0.1": - "integrity" "sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==" - "resolved" "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz" - "version" "9.0.1" - dependencies: - "@jridgewell/trace-mapping" "^0.3.12" - "@types/istanbul-lib-coverage" "^2.0.1" - "convert-source-map" "^1.6.0" - -"verror@1.10.0": - "integrity" "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==" - "resolved" "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz" - "version" "1.10.0" - dependencies: - "assert-plus" "^1.0.0" - "core-util-is" "1.0.2" - "extsprintf" "^1.2.0" - -"vue@^3.2.41", "vue@3.2.41": - "integrity" "sha512-uuuvnrDXEeZ9VUPljgHkqB5IaVO8SxhPpqF2eWOukVrBnRBx2THPSGQBnVRt0GrIG1gvCmFXMGbd7FqcT1ixNQ==" - "resolved" "https://registry.npmjs.org/vue/-/vue-3.2.41.tgz" - "version" "3.2.41" - dependencies: - "@vue/compiler-dom" "3.2.41" - "@vue/compiler-sfc" "3.2.41" - "@vue/runtime-dom" "3.2.41" - "@vue/server-renderer" "3.2.41" - "@vue/shared" "3.2.41" - -"w3c-xmlserializer@^3.0.0": - "integrity" "sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==" - "resolved" "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "xml-name-validator" "^4.0.0" - -"walker@^1.0.8": - "integrity" "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==" - "resolved" "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz" - "version" "1.0.8" - dependencies: - "makeerror" "1.0.12" - -"webidl-conversions@^7.0.0": - "integrity" "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==" - "resolved" "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz" - "version" "7.0.0" - -"whatwg-encoding@^2.0.0": - "integrity" "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==" - "resolved" "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "iconv-lite" "0.6.3" - -"whatwg-mimetype@^3.0.0": - "integrity" "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==" - "resolved" "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz" - "version" "3.0.0" - -"whatwg-url@^11.0.0": - "integrity" "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==" - "resolved" "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz" - "version" "11.0.0" - dependencies: - "tr46" "^3.0.0" - "webidl-conversions" "^7.0.0" - -"which-boxed-primitive@^1.0.2": - "integrity" "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==" - "resolved" "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "is-bigint" "^1.0.1" - "is-boolean-object" "^1.1.0" - "is-number-object" "^1.0.4" - "is-string" "^1.0.5" - "is-symbol" "^1.0.3" - -"which-collection@^1.0.1": - "integrity" "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==" - "resolved" "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "is-map" "^2.0.1" - "is-set" "^2.0.1" - "is-weakmap" "^2.0.1" - "is-weakset" "^2.0.1" - -"which-typed-array@^1.1.8": - "integrity" "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==" - "resolved" "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz" - "version" "1.1.9" - dependencies: - "available-typed-arrays" "^1.0.5" - "call-bind" "^1.0.2" - "for-each" "^0.3.3" - "gopd" "^1.0.1" - "has-tostringtag" "^1.0.0" - "is-typed-array" "^1.1.10" - -"which@^1.2.9": - "integrity" "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==" - "resolved" "https://registry.npmjs.org/which/-/which-1.3.1.tgz" - "version" "1.3.1" - dependencies: - "isexe" "^2.0.0" - -"which@^2.0.1": - "integrity" "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==" - "resolved" "https://registry.npmjs.org/which/-/which-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "isexe" "^2.0.0" - -"word-wrap@~1.2.3": - "integrity" "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" - "resolved" "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" - "version" "1.2.3" - -"wrap-ansi@^7.0.0": - "integrity" "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==" - "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" - "version" "7.0.0" - dependencies: - "ansi-styles" "^4.0.0" - "string-width" "^4.1.0" - "strip-ansi" "^6.0.0" - -"wrappy@1": - "integrity" "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - "resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - "version" "1.0.2" - -"write-file-atomic@^4.0.1": - "integrity" "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==" - "resolved" "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "imurmurhash" "^0.1.4" - "signal-exit" "^3.0.7" - -"write@1.0.3": - "integrity" "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==" - "resolved" "https://registry.npmjs.org/write/-/write-1.0.3.tgz" - "version" "1.0.3" - dependencies: - "mkdirp" "^0.5.1" - -"ws@^8.9.0": - "integrity" "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==" - "resolved" "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz" - "version" "8.11.0" - -"xml-name-validator@^4.0.0": - "integrity" "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==" - "resolved" "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz" - "version" "4.0.0" - -"xmlchars@^2.2.0": - "integrity" "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" - "resolved" "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz" - "version" "2.2.0" - -"y18n@^5.0.5": - "integrity" "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" - "resolved" "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" - "version" "5.0.8" - -"yallist@^4.0.0": - "integrity" "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - "resolved" "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" - "version" "4.0.0" - -"yargs-parser@^21.0.1", "yargs-parser@^21.1.1": - "integrity" "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" - "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" - "version" "21.1.1" - -"yargs@^17.3.1": - "integrity" "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==" - "resolved" "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz" - "version" "17.6.2" - dependencies: - "cliui" "^8.0.1" - "escalade" "^3.1.1" - "get-caller-file" "^2.0.5" - "require-directory" "^2.1.1" - "string-width" "^4.2.3" - "y18n" "^5.0.5" - "yargs-parser" "^21.1.1" - -"yn@3.1.1": - "integrity" "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==" - "resolved" "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" - "version" "3.1.1" - -"yocto-queue@^0.1.0": - "integrity" "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" - "resolved" "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" - "version" "0.1.0"