diff --git a/package.json b/package.json index 5c8d086fcdd6e942e89608cb46d697603d94b730..68087a02440b8e6aff20a0b034143f0ad3504da9 100644 --- a/package.json +++ b/package.json @@ -8,11 +8,11 @@ "elixxir", "cmix" ], - "module": "dist/xxdk.mjs", "type": "module", "typings": "dist/xxdk.d.ts", "prepare": "yarn build", - "main": "./dist/xxdk.js", + "main": "dist/xxdk.js", + "module": "dist/xxdk.esm.js", "homepage": "https://xx.network/developers-mixnet/", "license": "BSD-2-Clause", "author": "Elixxir Team", diff --git a/rollup.config.js b/rollup.config.js index 58b7f0d4ce7c57b44bff8b764712bc13bc69d4e2..2395051b2be7d9b7edcd47b62edef7925f5f727f 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -15,11 +15,6 @@ export default [ bundle({ plugins: [wasm(), esbuild()], output: [ - { - file: `${name}.js`, - format: 'cjs', - sourcemap: true, - }, { file: `${name}.mjs`, format: 'es', diff --git a/src/index.ts b/src/index.ts index 055e59e47fc764cd761e3f5bbdac439d42ba84bf..72460dbf8910f879bcada7942fa17a2332734bc7 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,22 +1,35 @@ -import type { XXDKUtils } from './types'; +import type { XXDKUtils } from './types/index'; declare global { - interface Window extends XXDKUtils {} + interface Window extends XXDKUtils { + onWasmInitialized: () => void; + } } import './wasm_exec'; // @ts-ignore -import makeWasm from './xxdk.wasm'; +import makeWasm from './wasm-assets/xxdk.wasm'; export const loadUtils = () => new Promise<XXDKUtils>(async (res) => { const go = new (window as any).Go(); + go.argv = [ + '--logLevel=1', + '--fileLogLevel=1', + // '--workerScriptURL=integrations/assets/logFileWorker.js', + ] + + const isReady = new Promise<void>((resolve) => { + window.onWasmInitialized = resolve; + }); + const result = await makeWasm(go.importObject); go.run(result.instance); + await isReady; + const { Base64ToUint8Array, - Crash, ConstructIdentity, DecodePrivateURL, DecodePublicURL, @@ -24,7 +37,6 @@ export const loadUtils = () => new Promise<XXDKUtils>(async (res) => { GetChannelInfo, GetChannelJSON, GetClientVersion, - getCrashedLogFile, GetDefaultCMixParams, GetLogger, GetOrInitPassword, @@ -36,21 +48,22 @@ export const loadUtils = () => new Promise<XXDKUtils>(async (res) => { IsNicknameValid, LoadChannelsManagerWithIndexedDb, LoadCmix, - LogLevel, - NewChannelsDatabaseCipher, + LoadNotifications, + LoadNotificationsDummy, + LoadSynchronizedCmix, NewChannelsManagerWithIndexedDb, NewCmix, NewDMClientWithIndexedDb, - NewDMsDatabaseCipher, + NewDatabaseCipher, NewDummyTrafficManager, + NewSynchronizedCmix, Purge, ValidForever, - // eslint-disable-next-line @typescript-eslint/no-explicit-any - } = (window) || {}; + } = window; + - res({ + return { Base64ToUint8Array, - Crash, ConstructIdentity, DecodePrivateURL, DecodePublicURL, @@ -58,7 +71,6 @@ export const loadUtils = () => new Promise<XXDKUtils>(async (res) => { GetChannelInfo, GetChannelJSON, GetClientVersion, - getCrashedLogFile, GetDefaultCMixParams, GetLogger, GetOrInitPassword, @@ -70,16 +82,17 @@ export const loadUtils = () => new Promise<XXDKUtils>(async (res) => { IsNicknameValid, LoadChannelsManagerWithIndexedDb, LoadCmix, - LogLevel, - NewChannelsDatabaseCipher, + LoadNotifications, + LoadNotificationsDummy, + LoadSynchronizedCmix, NewChannelsManagerWithIndexedDb, NewCmix, NewDMClientWithIndexedDb, - NewDMsDatabaseCipher, + NewDatabaseCipher, NewDummyTrafficManager, + NewSynchronizedCmix, Purge, - ValidForever, - }) -}) - -export * from './types'; \ No newline at end of file + ValidForever + }; + +}); \ No newline at end of file diff --git a/src/types.ts b/src/types.ts deleted file mode 100644 index da09e6c375947d206aebf166c4eb24bd73314629..0000000000000000000000000000000000000000 --- a/src/types.ts +++ /dev/null @@ -1,200 +0,0 @@ -export enum LogLevel { - TRACE = 0, - DEBUG = 1, - INFO = 2, - WARN = 3, - ERROR = 4, - CRITICAL = 5, - FATAL = 6 -} - -export enum PrivacyLevel { - Public = 0, - Private = 1, - Secret = 2 -} - -export type Cipher = { - GetID: () => number; - Decrypt: (plaintext: Uint8Array) => Uint8Array; -} - -export type ChannelManager = { - GetID: () => number; - AreDMsEnabled: (channelId: Uint8Array) => boolean; - DisableDirectMessages: (channelId: Uint8Array) => void; - EnableDirectMessages: (channelId: Uint8Array) => void; - JoinChannel: (channelId: string) => Promise<Uint8Array>; - LeaveChannel: (channelId: Uint8Array) => Promise<void>; - GetMutedUsers: (channelId: Uint8Array) => Uint8Array; - Muted: (channelId: Uint8Array) => boolean; - MuteUser: ( - channelId: Uint8Array, - publicKey: Uint8Array, - mute: boolean, - messageValidityTimeoutMilliseconds: number, - cmixParams?: Uint8Array - ) => Promise<void>; - SendMessage: ( - channelId: Uint8Array, - message: string, - messageValidityTimeoutMilliseconds: number, - cmixParams: Uint8Array - ) => Promise<Uint8Array>; - PinMessage: ( - channelId: Uint8Array, - messageId: Uint8Array, - unpin: boolean, - pinDurationInMilliseconds: number, - cmixParams: Uint8Array, - ) => Promise<Uint8Array>; - DeleteMessage: ( - channelId: Uint8Array, - messageId: Uint8Array, - cmixParams: Uint8Array - ) => Promise<void>; - SendReaction: ( - channelId: Uint8Array, - reaction: string, - messageToReactTo: Uint8Array, - messageValidityTimeoutMilliseconds: number, - cmixParams: Uint8Array - ) => Promise<Uint8Array>; - SendReply: ( - channelId: Uint8Array, - message: string, - messageToReactTo: Uint8Array, - messageValidityTimeoutMilliseconds: number, - cmixParams: Uint8Array - ) => Promise<Uint8Array>; - IsChannelAdmin: (channelId: Uint8Array) => boolean; - GenerateChannel: (channelname: string, description: string, privacyLevel: PrivacyLevel) => Promise<string>; - GetStorageTag: () => string | undefined; - SetNickname: (newNickname: string, channel: Uint8Array) => void; - GetNickname: (channelId: Uint8Array) => string; - GetIdentity: () => Uint8Array; - GetShareURL: (cmixId: number, host: string, maxUses: number, channelId: Uint8Array) => Uint8Array; - JoinChannelFromURL: (url: string, password: string) => Uint8Array; - ExportPrivateIdentity: (password: string) => Uint8Array; - ExportChannelAdminKey: (channelId: Uint8Array, encryptionPassword: string) => Uint8Array; - ImportChannelAdminKey: (channelId: Uint8Array, encryptionPassword: string, privateKey: Uint8Array) => void; -} - -type HealthCallback = { Callback: (healthy: boolean) => void } - -export type CMix = { - AddHealthCallback: (callback: HealthCallback) => number; - GetID: () => number; - IsReady: (threshold: number) => Uint8Array; - ReadyToSend: () => boolean; - StartNetworkFollower: (timeoutMilliseconds: number) => void; - StopNetworkFollower: () => void; - WaitForNetwork: (timeoutMilliseconds: number) => Promise<void>; -} - -export type DMClient = { - SendText: (pubkey: Uint8Array, dmToken: number, message: string, leaseTimeMs: number, cmixParams: Uint8Array) => Promise<void>; - SendReply: (pubkey: Uint8Array, dmToken: number, message: string, replyToId: Uint8Array, leaseTimeMs: number, cmixParams: Uint8Array) => Promise<void>; - SendReaction: (pubkey: Uint8Array, dmToken: number, message: string, reactToId: Uint8Array, cmixParams: Uint8Array) => Promise<void>; - GetIdentity: () => Uint8Array; - SetNickname: (nickname: string) => void; - GetNickname: () => string; - GetDatabaseName: () => string; -} - -export type DummyTraffic = { - GetStatus: () => boolean; - Pause: () => void; - Start: () => void; -} - - -export type MessageReceivedCallback = (uuid: string, channelId: Uint8Array, update: boolean) => void; -export type MessageDeletedCallback = (uuid: Uint8Array) => void; -export type UserMutedCallback = (channelId: Uint8Array, pubkey: string, unmute: boolean) => void; -export type DMReceivedCallback = (uuid: string, pubkey: Uint8Array, update: boolean, updateConversation: boolean) => void; - -export type XXDKUtils = { - logger?: Logger; - Crash: () => void; - GetLogger: () => Logger; - LogLevel: (level: LogLevel) => void; - getCrashedLogFile: () => Promise<string>; - NewCmix: ( - ndf: string, - storageDir: string, - password: Uint8Array, - registrationCode: string - ) => Promise<void>; - LoadCmix: ( - storageDirectory: string, - password: Uint8Array, - cmixParams: Uint8Array - ) => Promise<CMix>; - GetDefaultCMixParams: () => Uint8Array;GetChannelInfo: (prettyPrint: string) => Uint8Array; - Base64ToUint8Array: (base64: string) => Uint8Array; - GenerateChannelIdentity: (cmixId: number) => Uint8Array; - NewChannelsManagerWithIndexedDb: ( - cmixId: number, - wasmJsPath: string, - privateIdentity: Uint8Array, - onMessage: MessageReceivedCallback, - onDelete: MessageDeletedCallback, - onMuted: UserMutedCallback, - channelDbCipher: number - ) => Promise<ChannelManager>; - NewDMClientWithIndexedDb: ( - cmixId: number, - wasmJsPath: string, - privateIdentity: Uint8Array, - messageCallback: DMReceivedCallback, - cipherId: number - ) => Promise<DMClient>; - NewDMsDatabaseCipher: (cmixId: number, storagePassword: Uint8Array, payloadMaximumSize: number) => Cipher - LoadChannelsManagerWithIndexedDb: ( - cmixId: number, - wasmJsPath: string, - storageTag: string, - onMessage: MessageReceivedCallback, - onDelete: MessageDeletedCallback, - onMuted: UserMutedCallback, - channelDbCipher: number - ) => Promise<ChannelManager>; - GetPublicChannelIdentityFromPrivate: (privateKey: Uint8Array) => Uint8Array; - IsNicknameValid: (nickname: string) => null; - GetShareUrlType: (url: string) => PrivacyLevel; - GetVersion: () => string; - GetClientVersion: () => string; - GetOrInitPassword: (password: string) => Uint8Array; - ImportPrivateIdentity: (password: string, privateIdentity: Uint8Array) => Uint8Array; - ConstructIdentity: (publicKey: Uint8Array, codesetVersion: number) => Uint8Array; - DecodePrivateURL: (url: string, password: string) => string; - DecodePublicURL: (url: string) => string; - GetChannelJSON: (prettyPrint: string) => Uint8Array; - NewDummyTrafficManager: ( - cmixId: number, - maximumOfMessagesPerCycle: number, - durationToWaitBetweenSendsMilliseconds: number, - upperBoundIntervalBetweenCyclesMilliseconds: number - ) => DummyTraffic; - GetWasmSemanticVersion: () => Uint8Array; - NewChannelsDatabaseCipher: (cmixId: number, storagePassword: Uint8Array, payloadMaximumSize: number) => Cipher; - Purge: (storageDirectory: string, userPassword: string) => void; - ValidForever: () => number; -} - -export type Logger = { - LogToFile: (level: number, maxLogFileSizeBytes: number) => void, - LogToFileWorker: ( - level: number, - maxLogFileSizeBytes: number, - wasmJsPath: string, - workerName: string - ) => Promise<void>, - StopLogging: () => void, - GetFile: () => Promise<string>, - Threshold: () => number, - MaxSize: () => number, - Size: () => Promise<number>, - Worker: () => Worker, -}; \ No newline at end of file diff --git a/src/types/channels.ts b/src/types/channels.ts new file mode 100644 index 0000000000000000000000000000000000000000..0e2c0a553d0a250593df00a8a65bb1ec3258d2d6 --- /dev/null +++ b/src/types/channels.ts @@ -0,0 +1,33 @@ +export enum PrivacyLevel { + Public = 0, + Private = 1, + Secret = 2 +} + +export type ChannelManager = { + GetID: () => number; + AreDMsEnabled: (channelId: Uint8Array) => boolean; + DisableDirectMessages: (channelId: Uint8Array) => void; + EnableDirectMessages: (channelId: Uint8Array) => void; + JoinChannel: (channelId: string) => Promise<Uint8Array>; + LeaveChannel: (channelId: Uint8Array) => Promise<void>; + GetMutedUsers: (channelId: Uint8Array) => Uint8Array; + Muted: (channelId: Uint8Array) => boolean; + MuteUser: (channelId: Uint8Array, publicKey: Uint8Array, mute: boolean, messageValidityTimeoutMilliseconds: number, cmixParams?: Uint8Array) => Promise<void>; + SendMessage: (channelId: Uint8Array, message: string, messageValidityTimeoutMilliseconds: number, cmixParams: Uint8Array) => Promise<Uint8Array>; + PinMessage: (channelId: Uint8Array, messageId: Uint8Array, unpin: boolean, pinDurationInMilliseconds: number, cmixParams: Uint8Array) => Promise<Uint8Array>; + DeleteMessage: (channelId: Uint8Array, messageId: Uint8Array, cmixParams: Uint8Array) => Promise<void>; + SendReaction: (channelId: Uint8Array, reaction: string, messageToReactTo: Uint8Array, messageValidityTimeoutMilliseconds: number, cmixParams: Uint8Array) => Promise<Uint8Array>; + SendReply: (channelId: Uint8Array, message: string, messageToReactTo: Uint8Array, messageValidityTimeoutMilliseconds: number, cmixParams: Uint8Array) => Promise<Uint8Array>; + IsChannelAdmin: (channelId: Uint8Array) => boolean; + GenerateChannel: (channelname: string, description: string, privacyLevel: PrivacyLevel) => Promise<string>; + GetStorageTag: () => string | undefined; + SetNickname: (newNickname: string, channel: Uint8Array) => void; + GetNickname: (channelId: Uint8Array) => string; + GetIdentity: () => Uint8Array; + GetShareURL: (cmixId: number, host: string, maxUses: number, channelId: Uint8Array) => Uint8Array; + JoinChannelFromURL: (url: string, password: string) => Uint8Array; + ExportPrivateIdentity: (password: string) => Uint8Array; + ExportChannelAdminKey: (channelId: Uint8Array, encryptionPassword: string) => Uint8Array; + ImportChannelAdminKey: (channelId: Uint8Array, encryptionPassword: string, privateKey: Uint8Array) => void; +}; \ No newline at end of file diff --git a/src/types/cmix.ts b/src/types/cmix.ts new file mode 100644 index 0000000000000000000000000000000000000000..7462eec47b04a1af29446914ce745e667c7d43a5 --- /dev/null +++ b/src/types/cmix.ts @@ -0,0 +1,15 @@ +import { RemoteKV } from "./store"; + +type HealthCallback = { Callback: (healthy: boolean) => void } + +export type CMix = { + AddHealthCallback: (callback: HealthCallback) => number; + GetID: () => number; + IsReady: (threshold: number) => Uint8Array; + ReadyToSend: () => boolean; + StartNetworkFollower: (timeoutMilliseconds: number) => void; + StopNetworkFollower: () => void; + WaitForNetwork: (timeoutMilliseconds: number) => Promise<void>; + SetTrackNetworkPeriod: (periodMs: number) => void; + GetRemoteKV: () => Promise<RemoteKV>; +} diff --git a/src/types/dm.ts b/src/types/dm.ts new file mode 100644 index 0000000000000000000000000000000000000000..fbd826ca007caab66dec90643510f690076b7feb --- /dev/null +++ b/src/types/dm.ts @@ -0,0 +1,9 @@ +export type DMClient = { + SendText: (pubkey: Uint8Array, dmToken: number, message: string, leaseTimeMs: number, cmixParams: Uint8Array) => Promise<void>; + SendReply: (pubkey: Uint8Array, dmToken: number, message: string, replyToId: Uint8Array, leaseTimeMs: number, cmixParams: Uint8Array) => Promise<void>; + SendReaction: (pubkey: Uint8Array, dmToken: number, message: string, reactToId: Uint8Array, cmixParams: Uint8Array) => Promise<void>; + GetIdentity: () => Uint8Array; + SetNickname: (nickname: string) => void; + GetNickname: () => string; + GetDatabaseName: () => string; +}; \ No newline at end of file diff --git a/src/types/events.ts b/src/types/events.ts new file mode 100644 index 0000000000000000000000000000000000000000..54ac31fbc8ebbd8d9c4193e0a8c160722050f9a3 --- /dev/null +++ b/src/types/events.ts @@ -0,0 +1,21 @@ +export enum ChannelEvents { + NICKNAME_UPDATE = 1000, + NOTIFICATION_UPDATE = 2000, + MESSAGE_RECEIVED = 3000, + USER_MUTED = 4000, + MESSAGE_DELETED = 5000, + ADMIN_KEY_UPDATE = 6000, + DM_TOKEN_UPDATE = 7000, + CHANNEL_UPDATE = 8000 +} + +export type ChannelEventHandler = (eventType: ChannelEvents, data: unknown) => void; + +export enum DMEvents { + DM_NOTIFICATION_UPDATE = 1000, + DM_BLOCKED_USER = 2000, + DM_MESSAGE_RECEIVED = 3000 +} + + +export type DMEventHandler = (eventType: DMEvents, data: unknown) => void; diff --git a/src/types/index.ts b/src/types/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..038522d3eb2a07f535e02a68eef33b03b74247db --- /dev/null +++ b/src/types/index.ts @@ -0,0 +1 @@ +export * from './utils'; \ No newline at end of file diff --git a/src/types/store.ts b/src/types/store.ts new file mode 100644 index 0000000000000000000000000000000000000000..66c5c08da580c184410ee850855129c33d68d3dc --- /dev/null +++ b/src/types/store.ts @@ -0,0 +1,38 @@ + +export enum OperationType { + Created = 0, + Updated = 1, + Deleted = 2 +} + +export type KVEntry = { + version: number; + timestamp: string; + data: string; +} + +type KeyChangedByRemoteCallback = { + Callback: ( + key: string, + oldEntry: Uint8Array, + newEntry: Uint8Array, + operationType: OperationType + ) => void; +} + + +export type RemoteKV = { + Get: (key: string, version: number) => Promise<Uint8Array>; + Delete: (key: string, version: number) => Promise<void>; + Set: (key: string, encodedKVMapEntry: Uint8Array) => Promise<void>; + ListenOnRemoteKey: (key: string, version: number, onChange: KeyChangedByRemoteCallback) => number; + DeleteRemoteKeyListener: (key: string, id: number) => void; +} + +export interface RemoteStore { + Read: (path: string) => Promise<Uint8Array | null>; + Write: (path: string, data: Uint8Array) => Promise<void>; + GetLastModified: (path: string) => Promise<string | null>; + ReadDir: (path: string) => Promise<string[]>; + DeleteAll: () => Promise<void>; +} \ No newline at end of file diff --git a/src/types/utils.ts b/src/types/utils.ts new file mode 100644 index 0000000000000000000000000000000000000000..57934c188b4e71dea08e7a79f036f2358a7128eb --- /dev/null +++ b/src/types/utils.ts @@ -0,0 +1,130 @@ +import type { RemoteStore } from "./store"; +import type { CMix } from "./cmix"; +import type { DMEventHandler, ChannelEventHandler } from "./events"; +import type { ChannelManager, PrivacyLevel } from "./channels"; +import type { DMClient } from './dm'; + +export type DBCipher = { + GetID: () => number; + Decrypt: (plaintext: string) => Uint8Array; +} + +type DummyTrafficController = { + GetStatus: () => boolean; + Pause: () => void; + Start: () => void; +}; + +type Logger = { + StopLogging: () => void, + GetFile: () => Promise<string>, + Threshold: () => number, + MaxSize: () => number, + Size: () => Promise<number>, + Worker: () => Worker, +}; + +export type ChannelManagerCallbacks = { + EventUpdate: ChannelEventHandler; +} + +export type DMClientEventCallback = { + EventUpdate: DMEventHandler; +} + +export type Notifications = { + AddToken: (newToken: string, app: string) => void; + RemoveToken: () => void; + SetMaxState: (maxState: number) => void; + GetMaxState: () => number; + GetID: () => number; +} + +export type XXDKUtils = { + NewCmix: ( + ndf: string, + storageDir: string, + password: Uint8Array, + registrationCode: string + ) => Promise<void>; + NewSynchronizedCmix: ( + ndf: string, + storageDir: string, + remoteStoragePrefixPath: string, + password: Uint8Array, + remoteStore: RemoteStore, + ) => Promise<void>; + LoadCmix: ( + storageDirectory: string, + password: Uint8Array, + cmixParams: Uint8Array + ) => Promise<CMix>; + LoadSynchronizedCmix: ( + storageDirectory: string, + password: Uint8Array, + remoteStore: RemoteStore, + cmixParams: Uint8Array + ) => Promise<CMix>; + LoadNotifications: ( + cmixId: number + ) => Notifications; + LoadNotificationsDummy: ( + cmixId: number + ) => Notifications; + GetDefaultCMixParams: () => Uint8Array; + GetChannelInfo: (prettyPrint: string) => Uint8Array; + GetLogger: () => Logger, + Base64ToUint8Array: (base64: string) => Uint8Array; + GenerateChannelIdentity: (cmixId: number) => Uint8Array; + NewChannelsManagerWithIndexedDb: ( + cmixId: number, + wasmJsPath: string, + privateIdentity: Uint8Array, + extensionBuilderIDsJSON: Uint8Array, + notificationsId: number, + callbacks: ChannelManagerCallbacks, + channelDbCipher: number + ) => Promise<ChannelManager>; + NewDMClientWithIndexedDb: ( + cmixId: number, + notificationsId: number, + cipherId: number, + wasmJsPath: string, + privateIdentity: Uint8Array, + eventCallback: DMClientEventCallback + ) => Promise<DMClient>; + NewDatabaseCipher: ( + cmixId: number, + storagePassword: Uint8Array, + payloadMaximumSize: number + ) => DBCipher; + LoadChannelsManagerWithIndexedDb: ( + cmixId: number, + wasmJsPath: string, + storageTag: string, + extensionBuilderIDsJSON: Uint8Array, + notificationsId: number, + callbacks: ChannelManagerCallbacks, + channelDbCipher: number + ) => Promise<ChannelManager>; + GetPublicChannelIdentityFromPrivate: (privateKey: Uint8Array) => Uint8Array; + IsNicknameValid: (nickname: string) => null; + GetShareUrlType: (url: string) => PrivacyLevel; + GetVersion: () => string; + GetClientVersion: () => string; + GetOrInitPassword: (password: string) => Promise<Uint8Array>; + ImportPrivateIdentity: (password: string, privateIdentity: Uint8Array) => Uint8Array; + ConstructIdentity: (publicKey: Uint8Array, codesetVersion: number) => Uint8Array; + DecodePrivateURL: (url: string, password: string) => string; + DecodePublicURL: (url: string) => string; + GetChannelJSON: (prettyPrint: string) => Uint8Array; + NewDummyTrafficManager: ( + cmixId: number, + maximumOfMessagesPerCycle: number, + durationToWaitBetweenSendsMilliseconds: number, + upperBoundIntervalBetweenCyclesMilliseconds: number + ) => DummyTrafficController; + GetWasmSemanticVersion: () => Uint8Array; + Purge: (userPassword: string) => void; + ValidForever: () => number; +} \ No newline at end of file diff --git a/src/xxdk.wasm b/src/wasm-assets/xxdk.wasm similarity index 100% rename from src/xxdk.wasm rename to src/wasm-assets/xxdk.wasm diff --git a/yarn.lock b/yarn.lock index 8e8c3ead18bf505d63cf3600f8cbbf8ca06d0a66..187d2dd863739d15b62c6c5c6b1f12317abeea7f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,6 +23,11 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@discoveryjs/json-ext@^0.5.0": + version "0.5.7" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" + integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== + "@esbuild/android-arm64@0.17.16": version "0.17.16" resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.16.tgz#7b18cab5f4d93e878306196eed26b6d960c12576" @@ -138,27 +143,6 @@ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - "@rollup/plugin-wasm@6.1.2": version "6.1.2" resolved "https://registry.yarnpkg.com/@rollup/plugin-wasm/-/plugin-wasm-6.1.2.tgz#faf57f8e2ed12b9e0e898ba67963c52e1cd5f4c3" @@ -178,34 +162,20 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2" integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== -"@types/json-schema@^7.0.9": - version "7.0.11" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" - integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== - -ajv-formats@^2.1.1: +"@webpack-cli/configtest@^2.1.1": version "2.1.1" - resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" - integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== - dependencies: - ajv "^8.0.0" + resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-2.1.1.tgz#3b2f852e91dac6e3b85fb2a314fb8bef46d94646" + integrity sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw== -ajv-keywords@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" - integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== - dependencies: - fast-deep-equal "^3.1.3" +"@webpack-cli/info@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-2.0.2.tgz#cc3fbf22efeb88ff62310cf885c5b09f44ae0fdd" + integrity sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A== -ajv@^8.0.0, ajv@^8.8.0: - version "8.12.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" - integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" +"@webpack-cli/serve@^2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-2.0.5.tgz#325db42395cd49fe6c14057f9a900e427df8810e" + integrity sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ== ansi-styles@^3.2.1: version "3.2.1" @@ -214,6 +184,13 @@ ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" +ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + braces@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" @@ -230,6 +207,23 @@ chalk@^2.0.0: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -237,22 +231,41 @@ color-convert@^1.9.0: dependencies: color-name "1.1.3" +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== -copy-webpack-plugin@11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz#96d4dbdb5f73d02dd72d0528d1958721ab72e04a" - integrity sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ== +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colorette@^2.0.14: + version "2.0.20" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== + +commander@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" + integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== + +cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== dependencies: - fast-glob "^3.2.11" - glob-parent "^6.0.1" - globby "^13.1.1" - normalize-path "^3.0.0" - schema-utils "^4.0.0" - serialize-javascript "^6.0.0" + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" debug@^4.3.4: version "4.3.4" @@ -261,12 +274,18 @@ debug@^4.3.4: dependencies: ms "2.1.2" -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== +enhanced-resolve@^5.0.0: + version "5.15.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz#1af946c7d93603eb88e9896cee4904dc012e9c35" + integrity sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg== dependencies: - path-type "^4.0.0" + graceful-fs "^4.2.4" + tapable "^2.2.0" + +envinfo@^7.7.3: + version "7.11.1" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.11.1.tgz#2ffef77591057081b0129a8fd8cf6118da1b94e1" + integrity sha512-8PiZgZNIB4q/Lw4AhOvAfB/ityHAd2bli3lESSWmWSzSsl5dKpy5N1d1Rfkd2teq/g9xN90lc6o98DOjMeYHpg== es-module-lexer@^1.0.5: version "1.2.1" @@ -311,28 +330,10 @@ estree-walker@^2.0.2: resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-glob@^3.2.11: - version "3.2.12" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" - integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - -fastq@^1.6.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" - integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== - dependencies: - reusify "^1.0.4" +fastest-levenshtein@^1.0.12: + version "1.0.16" + resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" + integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== fill-range@^7.0.1: version "7.0.1" @@ -341,63 +342,93 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" +find-up@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + fsevents@~2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== -glob-parent@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== -glob-parent@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -globby@^13.1.1: - version "13.1.4" - resolved "https://registry.yarnpkg.com/globby/-/globby-13.1.4.tgz#2f91c116066bcec152465ba36e5caa4a13c01317" - integrity sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g== - dependencies: - dir-glob "^3.0.1" - fast-glob "^3.2.11" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^4.0.0" +graceful-fs@^4.2.4: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== -ignore@^5.2.0: - version "5.2.4" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" - integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== +hasown@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" + integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== + dependencies: + function-bind "^1.1.2" -is-glob@^4.0.1, is-glob@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== +import-local@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== dependencies: - is-extglob "^2.1.1" + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +interpret@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4" + integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== + +is-core-module@^2.13.0: + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + dependencies: + hasown "^2.0.0" is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== +is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + joycon@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/joycon/-/joycon-3.1.1.tgz#bce8596d6ae808f8b68168f5fc69280996894f03" @@ -408,16 +439,30 @@ js-tokens@^4.0.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -json-schema-traverse@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" - integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== - jsonc-parser@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== +kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + magic-string@^0.30.0: version "0.30.0" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.0.tgz#fd58a4748c5c4547338a424e90fa5dd17f4de529" @@ -425,12 +470,7 @@ magic-string@^0.30.0: dependencies: "@jridgewell/sourcemap-codec" "^1.4.13" -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -micromatch@^4.0.4: +micromatch@^4.0.0: version "4.0.5" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== @@ -443,47 +483,79 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -normalize-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" -path-type@^4.0.0: +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +path-exists@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -punycode@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" - integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== +rechoir@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" + integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== + dependencies: + resolve "^1.20.0" -randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== dependencies: - safe-buffer "^5.1.0" + resolve-from "^5.0.0" -require-from-string@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== +resolve@^1.20.0: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" rollup-plugin-dts@5.3.0: version "5.3.0" @@ -512,39 +584,36 @@ rollup@3.20.2: optionalDependencies: fsevents "~2.3.2" -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== +semver@^7.3.4: + version "7.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" + integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== dependencies: - queue-microtask "^1.2.2" + lru-cache "^6.0.0" -safe-buffer@^5.1.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -schema-utils@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.0.0.tgz#60331e9e3ae78ec5d16353c467c34b3a0a1d3df7" - integrity sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg== +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== dependencies: - "@types/json-schema" "^7.0.9" - ajv "^8.8.0" - ajv-formats "^2.1.1" - ajv-keywords "^5.0.0" + kind-of "^6.0.2" -serialize-javascript@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c" - integrity sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w== +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== dependencies: - randombytes "^2.1.0" + shebang-regex "^3.0.0" -slash@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" - integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +source-map@^0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== supports-color@^5.3.0: version "5.5.0" @@ -553,6 +622,23 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -560,14 +646,63 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" +ts-loader@9.5.1: + version "9.5.1" + resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.5.1.tgz#63d5912a86312f1fbe32cef0859fb8b2193d9b89" + integrity sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg== + dependencies: + chalk "^4.1.0" + enhanced-resolve "^5.0.0" + micromatch "^4.0.0" + semver "^7.3.4" + source-map "^0.7.4" + typescript@^5.0.3: version "5.0.4" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.4.tgz#b217fd20119bd61a94d4011274e0ab369058da3b" integrity sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw== -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== +webpack-cli@5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-5.1.4.tgz#c8e046ba7eaae4911d7e71e2b25b776fcc35759b" + integrity sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg== + dependencies: + "@discoveryjs/json-ext" "^0.5.0" + "@webpack-cli/configtest" "^2.1.1" + "@webpack-cli/info" "^2.0.2" + "@webpack-cli/serve" "^2.0.5" + colorette "^2.0.14" + commander "^10.0.1" + cross-spawn "^7.0.3" + envinfo "^7.7.3" + fastest-levenshtein "^1.0.12" + import-local "^3.0.2" + interpret "^3.1.1" + rechoir "^0.8.0" + webpack-merge "^5.7.3" + +webpack-merge@^5.7.3: + version "5.10.0" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.10.0.tgz#a3ad5d773241e9c682803abf628d4cd62b8a4177" + integrity sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA== + dependencies: + clone-deep "^4.0.1" + flat "^5.0.2" + wildcard "^2.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: - punycode "^2.1.0" + isexe "^2.0.0" + +wildcard@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" + integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==