mirror of
https://github.com/toeverything/AFFiNE.git
synced 2024-09-11 19:47:35 +03:00
chore(core): remove affine/cmdk package (#5552)
patch cmdk based on https://github.com/pengx17/cmdk/tree/patch-1 fix https://github.com/toeverything/AFFiNE/issues/5548
This commit is contained in:
parent
dd671c8764
commit
275ea74772
202
.yarn/patches/cmdk-npm-0.2.0-302237a911.patch
Normal file
202
.yarn/patches/cmdk-npm-0.2.0-302237a911.patch
Normal file
File diff suppressed because one or more lines are too long
@ -172,6 +172,7 @@
|
|||||||
"next-auth@^4.24.5": "patch:next-auth@npm%3A4.24.5#~/.yarn/patches/next-auth-npm-4.24.5-8428e11927.patch",
|
"next-auth@^4.24.5": "patch:next-auth@npm%3A4.24.5#~/.yarn/patches/next-auth-npm-4.24.5-8428e11927.patch",
|
||||||
"@reforged/maker-appimage/@electron-forge/maker-base": "7.2.0",
|
"@reforged/maker-appimage/@electron-forge/maker-base": "7.2.0",
|
||||||
"macos-alias": "npm:macos-alias-building@latest",
|
"macos-alias": "npm:macos-alias-building@latest",
|
||||||
"fs-xattr": "npm:@napi-rs/xattr@latest"
|
"fs-xattr": "npm:@napi-rs/xattr@latest",
|
||||||
|
"@radix-ui/react-dialog": "npm:@radix-ui/react-dialog@latest"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,21 +0,0 @@
|
|||||||
MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2022 Paco Coursey
|
|
||||||
|
|
||||||
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.
|
|
@ -1,3 +0,0 @@
|
|||||||
# copied directly from https://github.com/pacocoursey/cmdk
|
|
||||||
|
|
||||||
will remove after a new CMDK version is published to npm
|
|
@ -1,15 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "@affine/cmdk",
|
|
||||||
"private": true,
|
|
||||||
"type": "module",
|
|
||||||
"main": "./src/index.tsx",
|
|
||||||
"module": "./src/index.tsx",
|
|
||||||
"devDependencies": {
|
|
||||||
"react": "18.2.0",
|
|
||||||
"react-dom": "18.2.0"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"@radix-ui/react-dialog": "^1.0.5"
|
|
||||||
},
|
|
||||||
"version": "0.11.0"
|
|
||||||
}
|
|
@ -1,179 +0,0 @@
|
|||||||
/* eslint-disable */
|
|
||||||
// @ts-nocheck
|
|
||||||
|
|
||||||
// The scores are arranged so that a continuous match of characters will
|
|
||||||
// result in a total score of 1.
|
|
||||||
//
|
|
||||||
// The best case, this character is a match, and either this is the start
|
|
||||||
// of the string, or the previous character was also a match.
|
|
||||||
var SCORE_CONTINUE_MATCH = 1,
|
|
||||||
// A new match at the start of a word scores better than a new match
|
|
||||||
// elsewhere as it's more likely that the user will type the starts
|
|
||||||
// of fragments.
|
|
||||||
// NOTE: We score word jumps between spaces slightly higher than slashes, brackets
|
|
||||||
// hyphens, etc.
|
|
||||||
SCORE_SPACE_WORD_JUMP = 0.9,
|
|
||||||
SCORE_NON_SPACE_WORD_JUMP = 0.8,
|
|
||||||
// Any other match isn't ideal, but we include it for completeness.
|
|
||||||
SCORE_CHARACTER_JUMP = 0.17,
|
|
||||||
// If the user transposed two letters, it should be significantly penalized.
|
|
||||||
//
|
|
||||||
// i.e. "ouch" is more likely than "curtain" when "uc" is typed.
|
|
||||||
SCORE_TRANSPOSITION = 0.1,
|
|
||||||
// The goodness of a match should decay slightly with each missing
|
|
||||||
// character.
|
|
||||||
//
|
|
||||||
// i.e. "bad" is more likely than "bard" when "bd" is typed.
|
|
||||||
//
|
|
||||||
// This will not change the order of suggestions based on SCORE_* until
|
|
||||||
// 100 characters are inserted between matches.
|
|
||||||
PENALTY_SKIPPED = 0.999,
|
|
||||||
// The goodness of an exact-case match should be higher than a
|
|
||||||
// case-insensitive match by a small amount.
|
|
||||||
//
|
|
||||||
// i.e. "HTML" is more likely than "haml" when "HM" is typed.
|
|
||||||
//
|
|
||||||
// This will not change the order of suggestions based on SCORE_* until
|
|
||||||
// 1000 characters are inserted between matches.
|
|
||||||
PENALTY_CASE_MISMATCH = 0.9999,
|
|
||||||
// Match higher for letters closer to the beginning of the word
|
|
||||||
PENALTY_DISTANCE_FROM_START = 0.9,
|
|
||||||
// If the word has more characters than the user typed, it should
|
|
||||||
// be penalised slightly.
|
|
||||||
//
|
|
||||||
// i.e. "html" is more likely than "html5" if I type "html".
|
|
||||||
//
|
|
||||||
// However, it may well be the case that there's a sensible secondary
|
|
||||||
// ordering (like alphabetical) that it makes sense to rely on when
|
|
||||||
// there are many prefix matches, so we don't make the penalty increase
|
|
||||||
// with the number of tokens.
|
|
||||||
PENALTY_NOT_COMPLETE = 0.99;
|
|
||||||
|
|
||||||
var IS_GAP_REGEXP = /[\\\/_+.#"@\[\(\{&]/,
|
|
||||||
COUNT_GAPS_REGEXP = /[\\\/_+.#"@\[\(\{&]/g,
|
|
||||||
IS_SPACE_REGEXP = /[\s-]/,
|
|
||||||
COUNT_SPACE_REGEXP = /[\s-]/g;
|
|
||||||
|
|
||||||
function commandScoreInner(
|
|
||||||
string,
|
|
||||||
abbreviation,
|
|
||||||
lowerString,
|
|
||||||
lowerAbbreviation,
|
|
||||||
stringIndex,
|
|
||||||
abbreviationIndex,
|
|
||||||
memoizedResults
|
|
||||||
) {
|
|
||||||
if (abbreviationIndex === abbreviation.length) {
|
|
||||||
if (stringIndex === string.length) {
|
|
||||||
return SCORE_CONTINUE_MATCH;
|
|
||||||
}
|
|
||||||
return PENALTY_NOT_COMPLETE;
|
|
||||||
}
|
|
||||||
|
|
||||||
var memoizeKey = `${stringIndex},${abbreviationIndex}`;
|
|
||||||
if (memoizedResults[memoizeKey] !== undefined) {
|
|
||||||
return memoizedResults[memoizeKey];
|
|
||||||
}
|
|
||||||
|
|
||||||
var abbreviationChar = lowerAbbreviation.charAt(abbreviationIndex);
|
|
||||||
var index = lowerString.indexOf(abbreviationChar, stringIndex);
|
|
||||||
var highScore = 0;
|
|
||||||
|
|
||||||
var score, transposedScore, wordBreaks, spaceBreaks;
|
|
||||||
|
|
||||||
while (index >= 0) {
|
|
||||||
score = commandScoreInner(
|
|
||||||
string,
|
|
||||||
abbreviation,
|
|
||||||
lowerString,
|
|
||||||
lowerAbbreviation,
|
|
||||||
index + 1,
|
|
||||||
abbreviationIndex + 1,
|
|
||||||
memoizedResults
|
|
||||||
);
|
|
||||||
if (score > highScore) {
|
|
||||||
if (index === stringIndex) {
|
|
||||||
score *= SCORE_CONTINUE_MATCH;
|
|
||||||
} else if (IS_GAP_REGEXP.test(string.charAt(index - 1))) {
|
|
||||||
score *= SCORE_NON_SPACE_WORD_JUMP;
|
|
||||||
wordBreaks = string
|
|
||||||
.slice(stringIndex, index - 1)
|
|
||||||
.match(COUNT_GAPS_REGEXP);
|
|
||||||
if (wordBreaks && stringIndex > 0) {
|
|
||||||
score *= Math.pow(PENALTY_SKIPPED, wordBreaks.length);
|
|
||||||
}
|
|
||||||
} else if (IS_SPACE_REGEXP.test(string.charAt(index - 1))) {
|
|
||||||
score *= SCORE_SPACE_WORD_JUMP;
|
|
||||||
spaceBreaks = string
|
|
||||||
.slice(stringIndex, index - 1)
|
|
||||||
.match(COUNT_SPACE_REGEXP);
|
|
||||||
if (spaceBreaks && stringIndex > 0) {
|
|
||||||
score *= Math.pow(PENALTY_SKIPPED, spaceBreaks.length);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
score *= SCORE_CHARACTER_JUMP;
|
|
||||||
if (stringIndex > 0) {
|
|
||||||
score *= Math.pow(PENALTY_SKIPPED, index - stringIndex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (string.charAt(index) !== abbreviation.charAt(abbreviationIndex)) {
|
|
||||||
score *= PENALTY_CASE_MISMATCH;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (
|
|
||||||
(score < SCORE_TRANSPOSITION &&
|
|
||||||
lowerString.charAt(index - 1) ===
|
|
||||||
lowerAbbreviation.charAt(abbreviationIndex + 1)) ||
|
|
||||||
(lowerAbbreviation.charAt(abbreviationIndex + 1) ===
|
|
||||||
lowerAbbreviation.charAt(abbreviationIndex) && // allow duplicate letters. Ref #7428
|
|
||||||
lowerString.charAt(index - 1) !==
|
|
||||||
lowerAbbreviation.charAt(abbreviationIndex))
|
|
||||||
) {
|
|
||||||
transposedScore = commandScoreInner(
|
|
||||||
string,
|
|
||||||
abbreviation,
|
|
||||||
lowerString,
|
|
||||||
lowerAbbreviation,
|
|
||||||
index + 1,
|
|
||||||
abbreviationIndex + 2,
|
|
||||||
memoizedResults
|
|
||||||
);
|
|
||||||
|
|
||||||
if (transposedScore * SCORE_TRANSPOSITION > score) {
|
|
||||||
score = transposedScore * SCORE_TRANSPOSITION;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (score > highScore) {
|
|
||||||
highScore = score;
|
|
||||||
}
|
|
||||||
|
|
||||||
index = lowerString.indexOf(abbreviationChar, index + 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
memoizedResults[memoizeKey] = highScore;
|
|
||||||
return highScore;
|
|
||||||
}
|
|
||||||
|
|
||||||
function formatInput(string) {
|
|
||||||
// convert all valid space characters to space so they match each other
|
|
||||||
return string.toLowerCase().replace(COUNT_SPACE_REGEXP, ' ');
|
|
||||||
}
|
|
||||||
|
|
||||||
export function commandScore(string: string, abbreviation: string): number {
|
|
||||||
/* NOTE:
|
|
||||||
* in the original, we used to do the lower-casing on each recursive call, but this meant that toLowerCase()
|
|
||||||
* was the dominating cost in the algorithm, passing both is a little ugly, but considerably faster.
|
|
||||||
*/
|
|
||||||
return commandScoreInner(
|
|
||||||
string,
|
|
||||||
abbreviation,
|
|
||||||
formatInput(string),
|
|
||||||
formatInput(abbreviation),
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
{}
|
|
||||||
);
|
|
||||||
}
|
|
File diff suppressed because it is too large
Load Diff
@ -1,9 +0,0 @@
|
|||||||
{
|
|
||||||
"extends": "../../../tsconfig.json",
|
|
||||||
"include": ["./src"],
|
|
||||||
"compilerOptions": {
|
|
||||||
"composite": true,
|
|
||||||
"noEmit": false,
|
|
||||||
"outDir": "lib"
|
|
||||||
}
|
|
||||||
}
|
|
@ -17,7 +17,6 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@affine-test/fixtures": "workspace:*",
|
"@affine-test/fixtures": "workspace:*",
|
||||||
"@affine/cmdk": "workspace:*",
|
|
||||||
"@affine/component": "workspace:*",
|
"@affine/component": "workspace:*",
|
||||||
"@affine/debug": "workspace:*",
|
"@affine/debug": "workspace:*",
|
||||||
"@affine/electron-api": "workspace:*",
|
"@affine/electron-api": "workspace:*",
|
||||||
@ -55,6 +54,7 @@
|
|||||||
"async-call-rpc": "^6.3.1",
|
"async-call-rpc": "^6.3.1",
|
||||||
"bytes": "^3.1.2",
|
"bytes": "^3.1.2",
|
||||||
"clsx": "^2.0.0",
|
"clsx": "^2.0.0",
|
||||||
|
"cmdk": "patch:cmdk@npm%3A0.2.0#~/.yarn/patches/cmdk-npm-0.2.0-302237a911.patch",
|
||||||
"css-spring": "^4.1.0",
|
"css-spring": "^4.1.0",
|
||||||
"cssnano": "^6.0.1",
|
"cssnano": "^6.0.1",
|
||||||
"dayjs": "^1.11.10",
|
"dayjs": "^1.11.10",
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
import { commandScore } from '@affine/cmdk';
|
|
||||||
import { useCollectionManager } from '@affine/component/page-list';
|
import { useCollectionManager } from '@affine/component/page-list';
|
||||||
import {
|
import {
|
||||||
useBlockSuitePageMeta,
|
useBlockSuitePageMeta,
|
||||||
@ -19,6 +18,7 @@ import {
|
|||||||
type CommandCategory,
|
type CommandCategory,
|
||||||
PreconditionStrategy,
|
PreconditionStrategy,
|
||||||
} from '@toeverything/infra/command';
|
} from '@toeverything/infra/command';
|
||||||
|
import { commandScore } from 'cmdk';
|
||||||
import { atom, useAtomValue } from 'jotai';
|
import { atom, useAtomValue } from 'jotai';
|
||||||
import { groupBy } from 'lodash-es';
|
import { groupBy } from 'lodash-es';
|
||||||
import { useCallback, useEffect, useMemo, useState } from 'react';
|
import { useCallback, useEffect, useMemo, useState } from 'react';
|
||||||
|
@ -1,11 +1,10 @@
|
|||||||
import { Command } from '@affine/cmdk';
|
|
||||||
import { useCommandState } from '@affine/cmdk';
|
|
||||||
import { formatDate } from '@affine/component/page-list';
|
import { formatDate } from '@affine/component/page-list';
|
||||||
import { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks';
|
import { useAsyncCallback } from '@affine/core/hooks/affine-async-hooks';
|
||||||
import { useAFFiNEI18N } from '@affine/i18n/hooks';
|
import { useAFFiNEI18N } from '@affine/i18n/hooks';
|
||||||
import type { PageMeta } from '@blocksuite/store';
|
import type { PageMeta } from '@blocksuite/store';
|
||||||
import type { CommandCategory } from '@toeverything/infra/command';
|
import type { CommandCategory } from '@toeverything/infra/command';
|
||||||
import clsx from 'clsx';
|
import clsx from 'clsx';
|
||||||
|
import { Command, useCommandState } from 'cmdk';
|
||||||
import { useAtom, useAtomValue } from 'jotai';
|
import { useAtom, useAtomValue } from 'jotai';
|
||||||
import {
|
import {
|
||||||
Suspense,
|
Suspense,
|
||||||
@ -225,17 +224,6 @@ export const CMDKContainer = ({
|
|||||||
className={clsx(className, styles.panelContainer)}
|
className={clsx(className, styles.panelContainer)}
|
||||||
value={value}
|
value={value}
|
||||||
onValueChange={setValue}
|
onValueChange={setValue}
|
||||||
// Handle KeyboardEvent conflicts with blocksuite
|
|
||||||
onKeyDown={(e: React.KeyboardEvent) => {
|
|
||||||
if (
|
|
||||||
e.key === 'ArrowDown' ||
|
|
||||||
e.key === 'ArrowUp' ||
|
|
||||||
e.key === 'ArrowLeft' ||
|
|
||||||
e.key === 'ArrowRight'
|
|
||||||
) {
|
|
||||||
e.stopPropagation();
|
|
||||||
}
|
|
||||||
}}
|
|
||||||
>
|
>
|
||||||
{/* todo: add page context here */}
|
{/* todo: add page context here */}
|
||||||
{isInEditor ? (
|
{isInEditor ? (
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { useCommandState } from '@affine/cmdk';
|
|
||||||
import { SearchIcon } from '@blocksuite/icons';
|
import { SearchIcon } from '@blocksuite/icons';
|
||||||
|
import { useCommandState } from 'cmdk';
|
||||||
import { useAtomValue } from 'jotai';
|
import { useAtomValue } from 'jotai';
|
||||||
|
|
||||||
import { cmdkQueryAtom } from './data';
|
import { cmdkQueryAtom } from './data';
|
||||||
|
@ -107,9 +107,6 @@
|
|||||||
"path": "./packages/frontend/workspace-impl"
|
"path": "./packages/frontend/workspace-impl"
|
||||||
},
|
},
|
||||||
// Common
|
// Common
|
||||||
{
|
|
||||||
"path": "./packages/common/cmdk"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"path": "./packages/common/debug"
|
"path": "./packages/common/debug"
|
||||||
},
|
},
|
||||||
|
47
yarn.lock
47
yarn.lock
@ -187,16 +187,6 @@ __metadata:
|
|||||||
languageName: unknown
|
languageName: unknown
|
||||||
linkType: soft
|
linkType: soft
|
||||||
|
|
||||||
"@affine/cmdk@workspace:*, @affine/cmdk@workspace:packages/common/cmdk":
|
|
||||||
version: 0.0.0-use.local
|
|
||||||
resolution: "@affine/cmdk@workspace:packages/common/cmdk"
|
|
||||||
dependencies:
|
|
||||||
"@radix-ui/react-dialog": "npm:^1.0.5"
|
|
||||||
react: "npm:18.2.0"
|
|
||||||
react-dom: "npm:18.2.0"
|
|
||||||
languageName: unknown
|
|
||||||
linkType: soft
|
|
||||||
|
|
||||||
"@affine/commitlint-config@workspace:tools/commitlint":
|
"@affine/commitlint-config@workspace:tools/commitlint":
|
||||||
version: 0.0.0-use.local
|
version: 0.0.0-use.local
|
||||||
resolution: "@affine/commitlint-config@workspace:tools/commitlint"
|
resolution: "@affine/commitlint-config@workspace:tools/commitlint"
|
||||||
@ -308,7 +298,6 @@ __metadata:
|
|||||||
resolution: "@affine/core@workspace:packages/frontend/core"
|
resolution: "@affine/core@workspace:packages/frontend/core"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@affine-test/fixtures": "workspace:*"
|
"@affine-test/fixtures": "workspace:*"
|
||||||
"@affine/cmdk": "workspace:*"
|
|
||||||
"@affine/component": "workspace:*"
|
"@affine/component": "workspace:*"
|
||||||
"@affine/debug": "workspace:*"
|
"@affine/debug": "workspace:*"
|
||||||
"@affine/electron-api": "workspace:*"
|
"@affine/electron-api": "workspace:*"
|
||||||
@ -359,6 +348,7 @@ __metadata:
|
|||||||
async-call-rpc: "npm:^6.3.1"
|
async-call-rpc: "npm:^6.3.1"
|
||||||
bytes: "npm:^3.1.2"
|
bytes: "npm:^3.1.2"
|
||||||
clsx: "npm:^2.0.0"
|
clsx: "npm:^2.0.0"
|
||||||
|
cmdk: "patch:cmdk@npm%3A0.2.0#~/.yarn/patches/cmdk-npm-0.2.0-302237a911.patch"
|
||||||
copy-webpack-plugin: "npm:^11.0.0"
|
copy-webpack-plugin: "npm:^11.0.0"
|
||||||
css-loader: "npm:^6.8.1"
|
css-loader: "npm:^6.8.1"
|
||||||
css-spring: "npm:^4.1.0"
|
css-spring: "npm:^4.1.0"
|
||||||
@ -9422,7 +9412,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@radix-ui/react-dialog@npm:^1.0.4, @radix-ui/react-dialog@npm:^1.0.5":
|
"@radix-ui/react-dialog@npm:@radix-ui/react-dialog@latest":
|
||||||
version: 1.0.5
|
version: 1.0.5
|
||||||
resolution: "@radix-ui/react-dialog@npm:1.0.5"
|
resolution: "@radix-ui/react-dialog@npm:1.0.5"
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -17092,6 +17082,32 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"cmdk@npm:0.2.0":
|
||||||
|
version: 0.2.0
|
||||||
|
resolution: "cmdk@npm:0.2.0"
|
||||||
|
dependencies:
|
||||||
|
"@radix-ui/react-dialog": "npm:1.0.0"
|
||||||
|
command-score: "npm:0.1.2"
|
||||||
|
peerDependencies:
|
||||||
|
react: ^18.0.0
|
||||||
|
react-dom: ^18.0.0
|
||||||
|
checksum: e178e3d3276e0b5fd158c9c99716c0405427871f48fa97c15c4be2de24be4a478cf0205ffa04244628dbe103dd8573a1bd1aa68f04f8b60633d4ffc04e5eee62
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
|
"cmdk@patch:cmdk@npm%3A0.2.0#~/.yarn/patches/cmdk-npm-0.2.0-302237a911.patch":
|
||||||
|
version: 0.2.0
|
||||||
|
resolution: "cmdk@patch:cmdk@npm%3A0.2.0#~/.yarn/patches/cmdk-npm-0.2.0-302237a911.patch::version=0.2.0&hash=640d85"
|
||||||
|
dependencies:
|
||||||
|
"@radix-ui/react-dialog": "npm:1.0.0"
|
||||||
|
command-score: "npm:0.1.2"
|
||||||
|
peerDependencies:
|
||||||
|
react: ^18.0.0
|
||||||
|
react-dom: ^18.0.0
|
||||||
|
checksum: 758bacb7761a72c6fa03a1b20ea2514ff14ad6b3d00cc1d8bc6781a216b0a719f991eacded9f923ddcf1b58b8efb304209b268c17bd7d6f5671aa3352934b754
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"co@npm:^4.6.0":
|
"co@npm:^4.6.0":
|
||||||
version: 4.6.0
|
version: 4.6.0
|
||||||
resolution: "co@npm:4.6.0"
|
resolution: "co@npm:4.6.0"
|
||||||
@ -17237,6 +17253,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"command-score@npm:0.1.2":
|
||||||
|
version: 0.1.2
|
||||||
|
resolution: "command-score@npm:0.1.2"
|
||||||
|
checksum: 84f6a69e6b215d3fc8c9ed402d109587f511e4cc84cd5da10a7857b50fb1638953e32dcce8ed8f3549b0bfe499e82601fb7fb6891c9c71b48933d4bb8bac238a
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"commander@npm:11.0.0":
|
"commander@npm:11.0.0":
|
||||||
version: 11.0.0
|
version: 11.0.0
|
||||||
resolution: "commander@npm:11.0.0"
|
resolution: "commander@npm:11.0.0"
|
||||||
|
Loading…
Reference in New Issue
Block a user