diff --git a/configs/ts/tsconfig.build.json b/configs/ts/tsconfig.build.json index 39885768ab..e8f7b26cfb 100644 --- a/configs/ts/tsconfig.build.json +++ b/configs/ts/tsconfig.build.json @@ -46,13 +46,13 @@ "path": "./references/tsconfig.i18n.json" }, { - "path": "./references/tsconfig.status-bar.json" + "path": "./references/tsconfig.monaco.json" }, { - "path": "./references/tsconfig.main-layout.json" + "path": "./references/tsconfig.status-bar.json" }, { - "path": "./references/tsconfig.monaco.json" + "path": "./references/tsconfig.main-layout.json" }, { "path": "./references/tsconfig.quick-open.json" diff --git a/packages/ai-native/src/browser/chat/chat.view.tsx b/packages/ai-native/src/browser/chat/chat.view.tsx index 3bb1247004..bda5ffa009 100644 --- a/packages/ai-native/src/browser/chat/chat.view.tsx +++ b/packages/ai-native/src/browser/chat/chat.view.tsx @@ -1,4 +1,3 @@ -import { observer } from 'mobx-react-lite'; import * as React from 'react'; import { MessageList } from 'react-chat-elements'; @@ -25,13 +24,7 @@ import { import { IMainLayoutService } from '@opensumi/ide-main-layout'; import 'react-chat-elements/dist/main.css'; -import { - AI_CHAT_VIEW_ID, - IChatAgentService, - IChatInternalService, - IChatMessageStructure, - SLASH_SYMBOL, -} from '../../common'; +import { AI_CHAT_VIEW_ID, IChatAgentService, IChatInternalService, IChatMessageStructure } from '../../common'; import { CodeBlockWrapperInput } from '../components/ChatEditor'; import { ChatInput } from '../components/ChatInput'; import { ChatMarkdown } from '../components/ChatMarkdown'; @@ -39,7 +32,6 @@ import { ChatNotify, ChatReply } from '../components/ChatReply'; import { SlashCustomRender } from '../components/SlashCustomRender'; import { MessageData, createMessageByAI, createMessageByUser } from '../components/utils'; import { WelcomeMessage } from '../components/WelcomeMsg'; -import { MsgHistoryManager } from '../model/msg-history-manager'; import { ChatViewHeaderRender, TSlashCommandCustomRender } from '../types'; import { ChatRequestModel, ChatSlashCommandItemModel } from './chat-model'; @@ -57,7 +49,7 @@ interface TDispatchAction { payload?: MessageData[]; } -export const AIChatView = observer(() => { +export const AIChatView = () => { const aiChatService = useInjectable(IChatInternalService); const chatApiService = useInjectable(ChatServiceToken); const aiReporter = useInjectable(IAIReporter); @@ -695,7 +687,7 @@ export const AIChatView = observer(() => { ); -}); +}; export function DefaultChatViewHeader({ handleClear, diff --git a/packages/ai-native/src/browser/contrib/run-toolbar/run-toolbar.tsx b/packages/ai-native/src/browser/contrib/run-toolbar/run-toolbar.tsx index 3a15e37c86..2ff407d489 100644 --- a/packages/ai-native/src/browser/contrib/run-toolbar/run-toolbar.tsx +++ b/packages/ai-native/src/browser/contrib/run-toolbar/run-toolbar.tsx @@ -1,7 +1,6 @@ -import { observer } from 'mobx-react-lite'; -import React, { useEffect } from 'react'; +import React from 'react'; -import { localize, useInjectable } from '@opensumi/ide-core-browser'; +import { localize, useAutorun, useInjectable } from '@opensumi/ide-core-browser'; import { DebugState } from '@opensumi/ide-debug'; import { DebugAction } from '@opensumi/ide-debug/lib/browser/components'; import { DebugConfigurationService } from '@opensumi/ide-debug/lib/browser/view/configuration/debug-configuration.service'; @@ -11,7 +10,7 @@ import { DebugToolbarView } from '@opensumi/ide-debug/lib/browser/view/configura import styles from './run-toolbar.module.less'; -const CustomDebugBar = observer(() => { +const CustomDebugBar = () => { const { start } = useInjectable(DebugConfigurationService); return ( @@ -24,10 +23,11 @@ const CustomDebugBar = observer(() => { > ); -}); +}; -export const AIRunToolbar = observer(() => { - const { state } = useInjectable(DebugToolbarService); +export const AIRunToolbar = () => { + const debugToolbarService = useInjectable(DebugToolbarService); + const state = useAutorun(debugToolbarService.state); return (
@@ -38,4 +38,4 @@ export const AIRunToolbar = observer(() => { )}
); -}); +}; diff --git a/packages/ai-native/src/browser/layout/tabbar.view.tsx b/packages/ai-native/src/browser/layout/tabbar.view.tsx index 2561c564ae..0550b0f850 100644 --- a/packages/ai-native/src/browser/layout/tabbar.view.tsx +++ b/packages/ai-native/src/browser/layout/tabbar.view.tsx @@ -1,7 +1,13 @@ import cls from 'classnames'; import React, { useCallback, useEffect, useMemo } from 'react'; -import { ComponentRegistryInfo, SlotLocation, useContextMenus, useInjectable } from '@opensumi/ide-core-browser'; +import { + ComponentRegistryInfo, + SlotLocation, + useAutorun, + useContextMenus, + useInjectable, +} from '@opensumi/ide-core-browser'; import { EDirection } from '@opensumi/ide-core-browser/lib/components'; import { EnhanceIcon, @@ -102,25 +108,26 @@ export const AILeftTabRenderer = ({ }) => ; const AILeftTabbarRenderer: React.FC = () => { - const tabbarService: TabbarService = useInjectable(TabbarServiceFactory)(SlotLocation.right); const layoutService = useInjectable(IMainLayoutService); + const tabbarService: TabbarService = useInjectable(TabbarServiceFactory)(SlotLocation.right); + const currentContainerId = useAutorun(tabbarService.currentContainerId); + const extraMenus = React.useMemo(() => layoutService.getExtraMenu(), [layoutService]); const [navMenu] = useContextMenus(extraMenus); const renderOtherVisibleContainers = useCallback( ({ renderContainers }) => { - const { currentContainerId, handleTabClick } = tabbarService; const visibleContainers = tabbarService.visibleContainers.filter((container) => !container.options?.hideTab); return ( <> {visibleContainers.length > 0 && } - {visibleContainers.map((component) => renderContainers(component, handleTabClick, currentContainerId))} + {visibleContainers.map((component) => renderContainers(component, currentContainerId))} ); }, - [tabbarService], + [currentContainerId, tabbarService], ); return ( diff --git a/packages/ai-native/src/browser/widget/inline-chat/inline-chat-editor.controller.ts b/packages/ai-native/src/browser/widget/inline-chat/inline-chat-editor.controller.ts index aec2adfb9c..18c40b4d9b 100644 --- a/packages/ai-native/src/browser/widget/inline-chat/inline-chat-editor.controller.ts +++ b/packages/ai-native/src/browser/widget/inline-chat/inline-chat-editor.controller.ts @@ -1,5 +1,9 @@ -import { AINativeConfigService, IAIInlineChatService, PreferenceService } from '@opensumi/ide-core-browser'; -import { Disposable, IDisposable } from '@opensumi/ide-core-common'; +import { + AINativeConfigService, + IAIInlineChatService, + IContextKeyService, + PreferenceService, +} from '@opensumi/ide-core-browser'; import { AIInlineChatContentWidgetId, AINativeSettingSectionsId, @@ -7,21 +11,23 @@ import { ActionSourceEnum, ActionTypeEnum, CancelResponse, - CancellationTokenSource, ChatResponse, + Disposable, ErrorResponse, Event, IAIReporter, + IDisposable, ILogServiceClient, ILogger, InlineChatFeatureRegistryToken, MaybePromise, runWhenIdle, } from '@opensumi/ide-core-common'; +import { CONTEXT_IN_DEBUG_MODE_KEY } from '@opensumi/ide-debug'; import { WorkbenchEditorService } from '@opensumi/ide-editor'; import { WorkbenchEditorServiceImpl } from '@opensumi/ide-editor/lib/browser/workbench-editor.service'; -import { ICodeEditor } from '@opensumi/ide-monaco'; import * as monaco from '@opensumi/ide-monaco'; +import { ICodeEditor } from '@opensumi/ide-monaco'; import { monacoApi } from '@opensumi/ide-monaco/lib/browser/monaco-api'; import { BaseAIMonacoEditorController } from '../../contrib/base'; @@ -73,6 +79,10 @@ export class InlineChatEditorController extends BaseAIMonacoEditorController { return this.injector.get(ILogger); } + private get contextKeyService(): IContextKeyService { + return this.injector.get(IContextKeyService); + } + private aiInlineContentWidget: AIInlineContentWidget; private aiInlineChatDisposable: Disposable = new Disposable(); private aiInlineChatOperationDisposable: Disposable = new Disposable(); @@ -208,6 +218,12 @@ export class InlineChatEditorController extends BaseAIMonacoEditorController { } protected async showInlineChat(monacoEditor: monaco.ICodeEditor): Promise { + // 调试状态下禁用 inline chat。影响调试体验 + const inDebugMode = this.contextKeyService.getContextValue(CONTEXT_IN_DEBUG_MODE_KEY); + if (inDebugMode) { + return; + } + if (!this.aiNativeConfigService.capabilities.supportsInlineChat) { return; } diff --git a/packages/comments/__test__/browser/comment-thread.test.ts b/packages/comments/__test__/browser/comment-thread.test.ts index 51de2a5ad8..88108f72d2 100644 --- a/packages/comments/__test__/browser/comment-thread.test.ts +++ b/packages/comments/__test__/browser/comment-thread.test.ts @@ -78,7 +78,7 @@ describe('comment service test', () => { }, }); expect(thread.data).toEqual({ a: 1 }); - expect(thread.comments[0].data).toEqual({ b: 1 }); + expect(thread.comments.get()[0].data).toEqual({ b: 1 }); }); it('thread add comment', () => { @@ -100,8 +100,8 @@ describe('comment service test', () => { body: 'Comment Text 2', }, ); - expect(thread.comments.length).toBe(2); - expect(thread.comments[1].mode).toBe(CommentMode.Editor); + expect(thread.comments.get().length).toBe(2); + expect(thread.comments.get()[1].mode).toBe(CommentMode.Editor); }); it('thread dispose', () => { @@ -124,7 +124,7 @@ describe('comment service test', () => { }, ); thread.dispose(); - expect(thread.comments.length).toBe(0); + expect(thread.comments.get().length).toBe(0); }); it('thread context service', () => { diff --git a/packages/comments/__test__/browser/comment.service.test.ts b/packages/comments/__test__/browser/comment.service.test.ts index da2508ca27..3fc3bd603a 100644 --- a/packages/comments/__test__/browser/comment.service.test.ts +++ b/packages/comments/__test__/browser/comment.service.test.ts @@ -126,7 +126,7 @@ describe('comment service test', () => { const [thread] = createTestThreads(uri); expect(thread.uri.isEqual(uri)); expect(thread.range.startLineNumber).toBe(1); - expect(thread.comments[0].body).toBe('Comment Text'); + expect(thread.comments.get()[0].body).toBe('Comment Text'); }); it('get commentsThreads', () => { diff --git a/packages/comments/src/browser/comment-reactions.view.tsx b/packages/comments/src/browser/comment-reactions.view.tsx index 9302bf5986..a672a8bc77 100644 --- a/packages/comments/src/browser/comment-reactions.view.tsx +++ b/packages/comments/src/browser/comment-reactions.view.tsx @@ -1,4 +1,3 @@ -import { observer } from 'mobx-react-lite'; import React from 'react'; import { Disposable, IEventBus, getExternalIcon, useInjectable } from '@opensumi/ide-core-browser'; @@ -21,7 +20,7 @@ export const CommentReactionSwitcher: React.FC<{ thread: ICommentsThread; comment: IThreadComment; className?: string; -}> = observer(({ thread, comment, className }) => { +}> = ({ thread, comment, className }) => { const key = `${thread.providerId}_${thread.id}_${comment.id}`; const menuId = `${MenuId.CommentReactionSwitcherMenu}_${key}`; const menuRegistry = useInjectable(IMenuRegistry); @@ -68,12 +67,12 @@ export const CommentReactionSwitcher: React.FC<{ }, []); return [nav, []]} type='icon' />; -}); +}; export const CommentReactions: React.FC<{ thread: ICommentsThread; comment: IThreadComment; -}> = observer(({ thread, comment }) => { +}> = ({ thread, comment }) => { const eventBus = useInjectable(IEventBus); const iconService = useInjectable(IIconService); const handleClickReaction = React.useCallback((reaction: CommentReaction) => { @@ -105,4 +104,4 @@ export const CommentReactions: React.FC<{ ))} ); -}); +}; diff --git a/packages/comments/src/browser/comments-item.view.tsx b/packages/comments/src/browser/comments-item.view.tsx index 2626ed4b6a..62f9edde64 100644 --- a/packages/comments/src/browser/comments-item.view.tsx +++ b/packages/comments/src/browser/comments-item.view.tsx @@ -1,4 +1,3 @@ -import { observer } from 'mobx-react-lite'; import React from 'react'; import { Button } from '@opensumi/ide-components'; @@ -10,6 +9,7 @@ import { localize, toLocalString, toMarkdownHtml, + useAutorun, useInjectable, } from '@opensumi/ide-core-browser'; import { InlineActionBar } from '@opensumi/ide-core-browser/lib/components/actions'; @@ -111,7 +111,7 @@ const useCommentContext = ( const ReplyItem: React.FC<{ reply: IThreadComment; thread: ICommentsThread; -}> = observer(({ reply, thread }) => { +}> = ({ reply, thread }) => { const { contextKeyService } = thread; const { author, label, body, mode, timestamp } = reply; const iconUrl = author.iconPath?.toString(); @@ -214,17 +214,20 @@ const ReplyItem: React.FC<{ {reply.reactions && reply.reactions.length > 0 && } ); -}); +}; export const CommentItem: React.FC<{ thread: ICommentsThread; commentThreadContext: IMenu; widget: ICommentsZoneWidget; -}> = observer(({ thread, commentThreadContext, widget }) => { - const { readOnly, contextKeyService } = thread; +}> = ({ thread, commentThreadContext, widget }) => { const [showReply, setShowReply] = React.useState(false); const [replyText, setReplyText] = React.useState(''); - const [comment, ...replies] = thread.comments; + + const { contextKeyService } = thread; + const readOnly = useAutorun(thread.readOnly); + const [comment, ...replies] = useAutorun(thread.comments); + const { author, label, body, mode, timestamp } = comment; const iconUrl = !isString(author.iconPath) ? author.iconPath?.authority @@ -364,4 +367,4 @@ export const CommentItem: React.FC<{ ); -}); +}; diff --git a/packages/comments/src/browser/comments-thread.ts b/packages/comments/src/browser/comments-thread.ts index cffbb735f1..899e327350 100644 --- a/packages/comments/src/browser/comments-thread.ts +++ b/packages/comments/src/browser/comments-thread.ts @@ -1,9 +1,8 @@ -import { action, autorun, computed, makeObservable, observable, runInAction } from 'mobx'; - import { Autowired, INJECTOR_TOKEN, Injectable, Injector } from '@opensumi/di'; import { Disposable, Emitter, IContextKeyService, IRange, URI, localize, uuid } from '@opensumi/ide-core-browser'; import { ResourceContextKey } from '@opensumi/ide-core-browser/lib/contextkey/resource'; import { EditorCollectionService, IEditor } from '@opensumi/ide-editor'; +import { autorun, derived, observableValue, transaction } from '@opensumi/ide-monaco/lib/common/observable'; import { CommentThreadCollapsibleState, @@ -33,17 +32,10 @@ export class CommentsThread extends Disposable implements ICommentsThread { @Autowired(INJECTOR_TOKEN) private readonly injector: Injector; - @observable.shallow - public comments: IThreadComment[] = []; - - @observable - public label: string | undefined; - - @observable - private _readOnly = false; - - @observable - public isCollapsed: boolean; + public readonly comments = observableValue(this, []); + public readonly label = observableValue(this, undefined); + public readonly readOnly = observableValue(this, false); + public readonly isCollapsed = observableValue(this, false); public data: any; @@ -78,7 +70,6 @@ export class CommentsThread extends Disposable implements ICommentsThread { public options: ICommentsThreadOptions, ) { super(); - makeObservable(this); this.updateComments( options.comments ? options.comments.map((comment) => ({ @@ -93,33 +84,40 @@ export class CommentsThread extends Disposable implements ICommentsThread { const resourceContext = new ResourceContextKey(this._contextKeyService); resourceContext.set(uri); this._contextKeyService.createKey('thread', options.contextValue); - this.readOnly = !!options.readOnly; - this.label = options.label; - this.isCollapsed = !!this.options.isCollapsed; + transaction((tx) => { + this.setReadOnly(!!options.readOnly); + this.label.set(options.label, tx); + this.isCollapsed.set(!!this.options.isCollapsed, tx); + }); const threadsLengthContext = this._contextKeyService.createKey( 'threadsLength', this.commentsService.getThreadsByUri(uri).length, ); - const commentsLengthContext = this._contextKeyService.createKey('commentsLength', this.comments.length); + const comments = this.comments.get(); + const commentsLengthContext = this._contextKeyService.createKey('commentsLength', comments.length); // vscode 用于判断 thread 是否为空 const commentThreadIsEmptyContext = this._contextKeyService.createKey( 'commentThreadIsEmpty', - !this.comments.length, + !comments.length, ); // vscode 用于判断是否为当前 controller 注册 this._contextKeyService.createKey('commentController', providerId); // 监听 comments 的变化 - autorun(() => { - commentsLengthContext.set(this.comments.length); - commentThreadIsEmptyContext.set(!this.comments.length); - }); - autorun(() => { - if (this.isCollapsed) { - this.hideAll(); - } else { - this.showAll(); - } - }); + this.addDispose( + autorun((reader) => { + const length = this.comments.read(reader).length; + + commentsLengthContext.set(length); + commentThreadIsEmptyContext.set(!length); + + const isCollapsed = this.isCollapsed.read(reader); + if (isCollapsed) { + this.hideAll(); + } else { + this.showAll(); + } + }), + ); // 监听每次 thread 的变化,重新设置 threadsLength this.addDispose( this.commentsService.onThreadsChanged((thread) => { @@ -136,9 +134,10 @@ export class CommentsThread extends Disposable implements ICommentsThread { this.onDidChangeEmitter.fire(); } - @action updateComments(comments: IThreadComment[]) { - this.comments = comments; + transaction((tx) => { + this.comments.set(comments, tx); + }); } getWidgetByEditor(editor: IEditor): ICommentsZoneWidget | undefined { @@ -153,28 +152,26 @@ export class CommentsThread extends Disposable implements ICommentsThread { return this._contextKeyService; } - @computed - get readOnly() { - return this._readOnly; - } - - set readOnly(readOnly: boolean) { - runInAction(() => (this._readOnly = readOnly)); - this._contextKeyService.createKey('readOnly', this._readOnly); + setReadOnly(readOnly: boolean) { + transaction((tx) => { + this.readOnly.set(readOnly, tx); + this._contextKeyService.createKey('readOnly', readOnly); + }); } - @computed - get threadHeaderTitle() { - if (this.label) { - return this.label; + readonly threadHeaderTitle = derived(this, (reader) => { + const label = this.label.read(reader); + if (label) { + return label; } - if (this.comments.length) { - const commentAuthors = new Set(this.comments.map((comment) => `@${comment.author.name}`)); + const comments = this.comments.read(reader); + if (comments.length) { + const commentAuthors = new Set(comments.map((comment) => `@${comment.author.name}`)); return `${localize('comments.participants')}: ` + [...commentAuthors].join(' '); } else { return localize('comments.zone.title'); } - } + }); private getEditorsByUri(uri: URI): IEditor[] { return this.editorCollectionService.listEditors().filter((editor) => editor.currentUri?.isEqual(uri)); @@ -207,7 +204,8 @@ export class CommentsThread extends Disposable implements ICommentsThread { } public toggle = (editor: IEditor) => { - if (this.comments.length > 0) { + const comments = this.comments.get(); + if (comments.length > 0) { const widget = this.widgets.get(editor); if (widget) { widget.toggle(); @@ -283,18 +281,20 @@ export class CommentsThread extends Disposable implements ICommentsThread { } } - @action public showAll() { - this.isCollapsed = false; + transaction((tx) => { + this.isCollapsed.set(false, tx); + }); for (const [, widget] of this.widgets) { widget.show(); } this.onDidChangeCollapsibleStateEmitter.fire(CommentThreadCollapsibleState.Expanded); } - @action public hideAll(isDospose?: boolean) { - this.isCollapsed = true; + transaction((tx) => { + this.isCollapsed.set(true, tx); + }); for (const [editor, widget] of this.widgets) { if (isDospose) { // 如果 thread 出现在当前 editor 则不隐藏 @@ -306,23 +306,32 @@ export class CommentsThread extends Disposable implements ICommentsThread { this.onDidChangeCollapsibleStateEmitter.fire(CommentThreadCollapsibleState.Collapsed); } - @action public addComment(...comments: IComment[]) { - this.comments.push( - ...comments.map((comment) => ({ - ...comment, - id: uuid(), - })), - ); + const preComments = this.comments.get(); + + transaction((tx) => { + this.comments.set( + [ + ...preComments, + ...comments.map((comment) => ({ + ...comment, + id: uuid(), + })), + ], + tx, + ); + }); + this.onDidChangeEmitter.fire(); } - @action public removeComment(comment: IComment) { - const index = this.comments.findIndex((c) => c === comment); - if (index !== -1) { - this.comments.splice(index, 1); - } + transaction((tx) => { + this.comments.set( + this.comments.get().filter((c) => c !== comment), + tx, + ); + }); this.onDidChangeEmitter.fire(); } diff --git a/packages/comments/src/browser/comments-zone.view.tsx b/packages/comments/src/browser/comments-zone.view.tsx index cc87cb43a5..c472bb60cd 100644 --- a/packages/comments/src/browser/comments-zone.view.tsx +++ b/packages/comments/src/browser/comments-zone.view.tsx @@ -1,10 +1,17 @@ import cls from 'classnames'; -import { observer } from 'mobx-react-lite'; import React from 'react'; import ReactDOM from 'react-dom/client'; import { Autowired, INJECTOR_TOKEN, Injectable } from '@opensumi/di'; -import { AppConfig, ConfigProvider, Emitter, Event, localize, useInjectable } from '@opensumi/ide-core-browser'; +import { + AppConfig, + ConfigProvider, + Emitter, + Event, + localize, + useAutorun, + useInjectable, +} from '@opensumi/ide-core-browser'; import { InlineActionBar } from '@opensumi/ide-core-browser/lib/components/actions'; import { MenuId } from '@opensumi/ide-core-browser/lib/menu/next'; import { IEditor } from '@opensumi/ide-editor'; @@ -28,8 +35,11 @@ export interface ICommentProps { widget: ICommentsZoneWidget; } -const CommentsZone: React.FC = observer(({ thread, widget }) => { - const { comments, threadHeaderTitle, contextKeyService } = thread; +const CommentsZone: React.FC = ({ thread, widget }) => { + const { contextKeyService } = thread; + const comments = useAutorun(thread.comments); + const threadHeaderTitle = useAutorun(thread.threadHeaderTitle); + const injector = useInjectable(INJECTOR_TOKEN); const commentsZoneService: CommentsZoneService = injector.get(CommentsZoneService, [thread]); const commentsFeatureRegistry = useInjectable(ICommentsFeatureRegistry); @@ -154,7 +164,7 @@ const CommentsZone: React.FC = observer(({ thread, widget }) => { ); -}); +}; @Injectable({ multiple: true }) export class CommentsZoneWidget extends ResizeZoneWidget implements ICommentsZoneWidget { @@ -182,7 +192,7 @@ export class CommentsZoneWidget extends ResizeZoneWidget implements ICommentsZon }); this._editor = editor; this._wrapper = document.createElement('div'); - this._isShow = !thread.isCollapsed; + this._isShow = !thread.isCollapsed.get(); this._container.appendChild(this._wrapper); this.observeContainer(this._wrapper); const customRender = this.commentsFeatureRegistry.getZoneWidgetRender(); diff --git a/packages/comments/src/browser/comments.contribution.ts b/packages/comments/src/browser/comments.contribution.ts index 339818a951..11e5a8cff1 100644 --- a/packages/comments/src/browser/comments.contribution.ts +++ b/packages/comments/src/browser/comments.contribution.ts @@ -101,7 +101,7 @@ export class CommentsBrowserContribution { execute: (threadTitle: ICommentThreadTitle) => { const { thread, widget } = threadTitle; - if (!thread.comments.length) { + if (!thread.comments.get().length) { thread.dispose(); } else { if (widget.isShow) { diff --git a/packages/comments/src/browser/comments.service.ts b/packages/comments/src/browser/comments.service.ts index 3a89af20bb..70dd683cf1 100644 --- a/packages/comments/src/browser/comments.service.ts +++ b/packages/comments/src/browser/comments.service.ts @@ -160,8 +160,8 @@ export class CommentsService extends Disposable implements ICommentsService { */ private createThreadDecoration(thread: ICommentsThread): model.IModelDecorationOptions { // 对于新增的空的 thread,默认显示当前用户的头像,否则使用第一个用户的头像 - const avatar = - thread.comments.length === 0 ? this.currentAuthorAvatar : thread.comments[0].author.iconPath?.toString(); + const comments = thread.comments.get(); + const avatar = comments.length === 0 ? this.currentAuthorAvatar : comments[0].author.iconPath?.toString(); const icon = avatar ? `${this.iconService.fromIcon('', avatar, IconType.Background)} avatar-icon` : this.iconService.fromString('$(comment)'); @@ -190,7 +190,7 @@ export class CommentsService extends Disposable implements ICommentsService { if (thread) { const range = thread.range; - if (!thread.isCollapsed) { + if (!thread.isCollapsed.get()) { this.currentThreadCollapseStateListener = thread.onDidChangeCollapsibleState((state) => { if (state === CommentThreadCollapsibleState.Collapsed) { this.updateActiveThreadDecoration(undefined); @@ -375,7 +375,7 @@ export class CommentsService extends Disposable implements ICommentsService { if ( !this.commentsThreads.some( (thread) => - thread.comments.length === 0 && + thread.comments.get().length === 0 && editor.currentUri && thread.uri.isEqual(editor.currentUri) && thread.range.startLineNumber === range.startLineNumber && @@ -399,7 +399,7 @@ export class CommentsService extends Disposable implements ICommentsService { if ( !this.commentsThreads.some( (thread) => - thread.comments.length === 0 && + thread.comments.get().length === 0 && editor.currentUri && thread.uri.isEqual(editor.currentUri) && thread.range.startLineNumber === range.startLineNumber && @@ -568,7 +568,7 @@ export class CommentsService extends Disposable implements ICommentsService { const shouldShowComments = editor.currentUri ? this.shouldShowCommentsSchemes.has(editor.currentUri.scheme) : false; const hasComments = this.commentsThreads.some( - (thread) => editor.currentUri && thread.uri.isEqual(editor.currentUri) && thread.comments.length > 0, + (thread) => editor.currentUri && thread.uri.isEqual(editor.currentUri) && thread.comments.get().length > 0, ); const hasCommentsOrRanges = shouldShowComments || hasComments; @@ -863,7 +863,7 @@ export class CommentsService extends Disposable implements ICommentsService { public handleCommentFileNode(parent: CommentRoot): CommentFileNode[] { const childs: CommentFileNode[] = []; - const commentThreads = [...this.threads.values()].filter((thread) => thread.comments.length); + const commentThreads = [...this.threads.values()].filter((thread) => thread.comments.get().length); const threadUris = groupBy(commentThreads, (thread: ICommentsThread) => thread.uri); Object.keys(threadUris).map((uri) => { const threads: ICommentsThread[] = threadUris[uri]; @@ -893,7 +893,8 @@ export class CommentsService extends Disposable implements ICommentsService { const childs: CommentContentNode[] = []; for (const thread of (parent as CommentFileNode).threads) { - const [first] = thread.comments; + const comments = thread.comments.get(); + const [first] = comments; const comment = typeof first.body === 'string' ? first.body : first.body.value; let description = `[Ln ${thread.range.startLineNumber}]`; if (thread.range.startLineNumber !== thread.range.endLineNumber) { @@ -922,7 +923,8 @@ export class CommentsService extends Disposable implements ICommentsService { const childs: CommentReplyNode[] = []; const thread = parent.thread; - const [_, ...others] = thread.comments; + const comments = thread.comments.get(); + const [_, ...others] = comments; const lastReply = others[others.length - 1].author.name; childs.push( new CommentReplyNode( @@ -1020,7 +1022,7 @@ export class CommentsService extends Disposable implements ICommentsService { this.commentsThreads .map((thread) => { if (thread.uri.isEqual(uri)) { - if (thread.comments.length) { + if (thread.comments.get().length) { // 存在评论内容 恢复之前的现场 thread.showWidgetsIfShowed(); } diff --git a/packages/comments/src/common/index.ts b/packages/comments/src/common/index.ts index c071fec5c2..cd837d6e62 100644 --- a/packages/comments/src/common/index.ts +++ b/packages/comments/src/common/index.ts @@ -11,6 +11,7 @@ import { URI, } from '@opensumi/ide-core-browser'; import { IEditor } from '@opensumi/ide-editor'; +import { IObservable, ISettableObservable } from '@opensumi/ide-monaco/lib/common/observable'; import type { ITree, ITreeNode } from '@opensumi/ide-components'; import type { IEditorDocumentModel } from '@opensumi/ide-editor/lib/common/editor'; @@ -470,7 +471,7 @@ export interface ICommentsThread extends IDisposable { /** * 评论 */ - comments: IThreadComment[]; + comments: IObservable; /** * 当前 thread 的 uri */ @@ -482,7 +483,7 @@ export interface ICommentsThread extends IDisposable { /** * 是否折叠,默认为 false */ - isCollapsed: boolean; + isCollapsed: ISettableObservable; /** * 附属数据 */ @@ -494,7 +495,7 @@ export interface ICommentsThread extends IDisposable { /** * 在 header 组件显示的文案 */ - label?: string; + label?: ISettableObservable; /** * thread 参数 */ @@ -502,11 +503,11 @@ export interface ICommentsThread extends IDisposable { /** * thread 头部文案 */ - threadHeaderTitle: string; + threadHeaderTitle: IObservable; /** * 是否是只读 */ - readOnly: boolean; + readOnly: IObservable; /** * 评论面板的 context key service */ @@ -582,6 +583,10 @@ export interface ICommentsThread extends IDisposable { * dispise 时会执行 */ onDispose: Event; + /** + * 设置只读状态 + */ + setReadOnly(readOnly: boolean): void; } export interface ICommentsThreadOptions { diff --git a/packages/core-browser/__tests__/progress-service.test.ts b/packages/core-browser/__tests__/progress-service.test.ts index 998745c744..ed871c3dcd 100644 --- a/packages/core-browser/__tests__/progress-service.test.ts +++ b/packages/core-browser/__tests__/progress-service.test.ts @@ -91,16 +91,16 @@ describe('progress service test', () => { }, ); const indicator = service.getIndicator('scm'); - expect(indicator?.progressModel.show).toBeFalsy(); - expect(indicator?.progressModel.total).toEqual(100); + expect(indicator?.progressModel.show.get()).toBeFalsy(); + expect(indicator?.progressModel.total.get()).toEqual(100); jest.advanceTimersByTime(200); - expect(indicator?.progressModel.show).toBeTruthy(); + expect(indicator?.progressModel.show.get()).toBeTruthy(); jest.advanceTimersByTime(100); await flushPromises(); - expect(indicator?.progressModel.worked).toEqual(20); + expect(indicator?.progressModel.worked.get()).toEqual(20); jest.advanceTimersByTime(200); await flushPromises(); - expect(indicator?.progressModel.worked).toEqual(50); + expect(indicator?.progressModel.worked.get()).toEqual(50); jest.advanceTimersByTime(200); }); @@ -113,10 +113,10 @@ describe('progress service test', () => { (_) => new Promise((resolve) => setTimeout(resolve, 400)), ); const indicator = service.getIndicator('explorer'); - expect(indicator?.progressModel.total).toBeUndefined(); - expect(indicator?.progressModel.show).toBeTruthy(); + expect(indicator?.progressModel.total.get()).toBeUndefined(); + expect(indicator?.progressModel.show.get()).toBeTruthy(); jest.advanceTimersByTime(400); await flushPromises(); - expect(indicator?.progressModel.show).toBeFalsy(); + expect(indicator?.progressModel.show.get()).toBeFalsy(); }); }); diff --git a/packages/core-browser/package.json b/packages/core-browser/package.json index ec30c5d62a..3cd2aa07a7 100644 --- a/packages/core-browser/package.json +++ b/packages/core-browser/package.json @@ -29,8 +29,6 @@ "jsonc-parser": "^2.1.0", "keycode": "^2.2.0", "lodash": "^4.17.21", - "mobx": "^6.12.0", - "mobx-react-lite": "^4.0.5", "react": "^18.2.0", "react-dom": "^18.2.0", "react-is": "^18.2.0", diff --git a/packages/core-browser/src/menu/next/renderer/ctxmenu/browser.ts b/packages/core-browser/src/menu/next/renderer/ctxmenu/browser.ts index 64eca545e8..8559bdb51a 100644 --- a/packages/core-browser/src/menu/next/renderer/ctxmenu/browser.ts +++ b/packages/core-browser/src/menu/next/renderer/ctxmenu/browser.ts @@ -1,6 +1,7 @@ import omit from 'lodash/omit'; import { Autowired, Injectable } from '@opensumi/di'; +import { IObservable } from '@opensumi/monaco-editor-core/esm/vs/base/common/observableInternal/base'; import { MenuNode } from '../../base'; import { AbstractContextMenuService } from '../../menu.interface'; @@ -14,6 +15,8 @@ export interface IMenuRenderProps { export abstract class IBrowserCtxMenu extends ICtxMenuRenderer { visible: boolean; + visibleObservable: IObservable; + onHide: ((canceled: boolean) => void) | undefined; point?: { pageX: number; diff --git a/packages/core-browser/src/progress/index.ts b/packages/core-browser/src/progress/index.ts index b690a21bcd..c2b13d9bf1 100644 --- a/packages/core-browser/src/progress/index.ts +++ b/packages/core-browser/src/progress/index.ts @@ -7,12 +7,13 @@ import { IProgressStep, IProgressWindowOptions, } from '@opensumi/ide-core-common'; +import { IObservable } from '@opensumi/monaco-editor-core/esm/vs/base/common/observableInternal/base'; export interface IProgressModel { - show: boolean; - fade: boolean; - worked: number; - total: number | undefined; + show: IObservable; + fade: IObservable; + worked: IObservable; + total: IObservable; } export const IProgressService = Symbol('IProgressService'); diff --git a/packages/core-browser/src/progress/progress-bar.tsx b/packages/core-browser/src/progress/progress-bar.tsx index 928f18c70a..8568a0629e 100644 --- a/packages/core-browser/src/progress/progress-bar.tsx +++ b/packages/core-browser/src/progress/progress-bar.tsx @@ -1,24 +1,30 @@ import cls from 'classnames'; -import { observer } from 'mobx-react-lite'; import React from 'react'; +import { useAutorun } from '../utils'; + import styles from './progress.module.less'; import { IProgressModel } from '.'; -export const ProgressBar: React.FC<{ progressModel: IProgressModel; className?: string }> = observer( - ({ progressModel, className }) => { - const { worked, total, show, fade } = progressModel; - return ( -
-
-
- ); - }, -); +export const ProgressBar: React.FC<{ progressModel: IProgressModel; className?: string }> = ({ + progressModel, + className, +}) => { + const worked = useAutorun(progressModel.worked); + const total = useAutorun(progressModel.total); + const show = useAutorun(progressModel.show); + const fade = useAutorun(progressModel.fade); + + return ( +
+
+
+ ); +}; export const Progress: React.FC<{ loading: boolean; diff --git a/packages/core-browser/src/progress/progress-indicator.ts b/packages/core-browser/src/progress/progress-indicator.ts index 517e1b37d5..ed76d45aa4 100644 --- a/packages/core-browser/src/progress/progress-indicator.ts +++ b/packages/core-browser/src/progress/progress-indicator.ts @@ -1,41 +1,40 @@ -import { action, makeObservable, observable } from 'mobx'; - import { Injectable } from '@opensumi/di'; +import { observableValue, transaction } from '@opensumi/monaco-editor-core/esm/vs/base/common/observableInternal/base'; -import { IProgressIndicator, IProgressModel, IProgressRunner } from '.'; +import { IProgressIndicator, IProgressRunner } from '.'; @Injectable({ multiple: true }) export class ProgressIndicator implements IProgressIndicator { - @observable - public progressModel: IProgressModel = { - show: false, - fade: false, - worked: 0, - total: undefined, + public readonly progressModel = { + show: observableValue(this, false), + fade: observableValue(this, false), + worked: observableValue(this, 0), + total: observableValue(this, undefined), }; - constructor() { - makeObservable(this); - } - - @action show(totalOrInfinite: true | number, delay?: number | undefined): IProgressRunner { if (totalOrInfinite !== true) { - this.progressModel.total = totalOrInfinite; + transaction((tx) => { + this.progressModel.total.set(totalOrInfinite, tx); + }); } this.showOnceScheduler(delay); return { total: (value) => { - this.progressModel.worked = 0; - this.progressModel.total = value; + transaction((tx) => { + this.progressModel.worked.set(0, tx); + this.progressModel.total.set(value, tx); + }); }, worked: (value) => { - if (this.progressModel.total) { - const worked = Math.max(1, Number(value)); - const fullWorked = Math.min(worked + this.progressModel.worked, this.progressModel.total); - this.progressModel.worked = fullWorked; - } - this.progressModel.show = true; + transaction((tx) => { + if (this.progressModel.total.get()) { + const worked = Math.max(1, Number(value)); + const fullWorked = Math.min(worked + this.progressModel.worked.get(), this.progressModel.total.get()!); + this.progressModel.worked.set(fullWorked, tx); + } + this.progressModel.show.set(true, tx); + }); }, done: () => { this.doDone(true); @@ -43,9 +42,11 @@ export class ProgressIndicator implements IProgressIndicator { }; } - @action async showWhile(promise: Promise, delay?: number | undefined): Promise { - this.progressModel.total = undefined; + transaction((tx) => { + this.progressModel.total.set(undefined, tx); + }); + this.showOnceScheduler(delay); await promise; this.doDone(false); @@ -55,18 +56,23 @@ export class ProgressIndicator implements IProgressIndicator { private showOnceScheduler(delay?: number) { if (typeof delay === 'number') { clearTimeout(this.scheduled); - this.scheduled = setTimeout(this.on, delay); + this.scheduled = setTimeout(() => this.on(), delay); } else { this.on(); } } - @action private doDone(delayed?: boolean) { - this.progressModel.fade = true; - if (this.progressModel.total) { + transaction((tx) => { + this.progressModel.fade.set(true, tx); + }); + + if (this.progressModel.total.get()) { // 进度100%随后隐藏 - this.progressModel.worked = this.progressModel.total; + transaction((tx) => { + this.progressModel.worked.set(this.progressModel.total.get()!, tx); + }); + if (delayed) { setTimeout(this.off, 800); } else { @@ -82,16 +88,18 @@ export class ProgressIndicator implements IProgressIndicator { } } - @action.bound private off() { - this.progressModel.total = undefined; - this.progressModel.worked = 0; - this.progressModel.show = false; - this.progressModel.fade = false; + transaction((tx) => { + this.progressModel.total.set(undefined, tx); + this.progressModel.worked.set(0, tx); + this.progressModel.show.set(false, tx); + this.progressModel.fade.set(false, tx); + }); } - @action.bound private on() { - this.progressModel.show = true; + transaction((tx) => { + this.progressModel.show.set(true, tx); + }); } } diff --git a/packages/core-browser/src/quick-open/index.ts b/packages/core-browser/src/quick-open/index.ts index ac6fadd3b2..fd17ef9d25 100644 --- a/packages/core-browser/src/quick-open/index.ts +++ b/packages/core-browser/src/quick-open/index.ts @@ -1,6 +1,7 @@ -import { makeObservable, observable } from 'mobx'; import React from 'react'; +import { observableValue, transaction } from '@opensumi/monaco-editor-core/esm/vs/base/common/observableInternal/base'; + import type { Keybinding } from '../keybinding'; import type { VALIDATE_TYPE } from '@opensumi/ide-components'; import type { Event, IDisposable, MaybePromise, URI } from '@opensumi/ide-core-common'; @@ -161,12 +162,12 @@ export class QuickOpenItem { private detailHighlights?: Highlight[]; - @observable - public checked = false; + public readonly checked = observableValue(this, false); constructor(protected options: QuickOpenItemOptions) { - makeObservable(this); - this.checked = options.checked || false; + transaction((tx) => { + this.checked.set(options.checked || false, tx); + }); } getTooltip(): string | undefined { diff --git a/packages/core-browser/src/services/status-bar-service.ts b/packages/core-browser/src/services/status-bar-service.ts index dd9b5576f5..741c887168 100644 --- a/packages/core-browser/src/services/status-bar-service.ts +++ b/packages/core-browser/src/services/status-bar-service.ts @@ -1,4 +1,5 @@ import { IDisposable, IMarkdownString, IThemeColor, StatusBarHoverCommand } from '@opensumi/ide-core-common'; +import { IObservable } from '@opensumi/monaco-editor-core/esm/vs/base/common/observableInternal/base'; import { IMenu } from '../menu/next'; @@ -24,8 +25,8 @@ export interface IStatusBarService { */ toggleElement(entryId: string): void; contextMenu: IMenu; - leftEntries: StatusBarEntry[]; - rightEntries: StatusBarEntry[]; + leftEntries: IObservable; + rightEntries: IObservable; } export interface StatusBarHoverContent { diff --git a/packages/core-browser/src/utils/react-hooks.ts b/packages/core-browser/src/utils/react-hooks.ts index 463398dc5e..d83a1b8e9f 100644 --- a/packages/core-browser/src/utils/react-hooks.ts +++ b/packages/core-browser/src/utils/react-hooks.ts @@ -2,6 +2,8 @@ import _debounce from 'lodash/debounce'; import { DependencyList, useEffect, useMemo, useRef, useState } from 'react'; import { Disposable, DisposableStore, IDisposable } from '@opensumi/ide-core-common'; +import { autorun } from '@opensumi/monaco-editor-core/esm/vs/base/common/observableInternal/autorun'; +import { IObservable } from '@opensumi/monaco-editor-core/esm/vs/base/common/observableInternal/base'; import { IDesignStyleService } from '../design'; import { MenuNode } from '../menu/next/base'; @@ -135,3 +137,17 @@ export const useLatest = (value: T): { readonly current: T } => { ref.current = value; return ref; }; + +export const useAutorun = (observable: IObservable): T => { + const [value, setValue] = useState(observable.get()); + + useDisposable( + () => + autorun((reader) => { + setValue(observable.read(reader)); + }), + [observable], + ); + + return value; +}; diff --git a/packages/debug/__tests__/browser/view/breakpoint/debug-breakpoints.service.test.ts b/packages/debug/__tests__/browser/view/breakpoint/debug-breakpoints.service.test.ts index d3521acc13..b8a553f3c8 100644 --- a/packages/debug/__tests__/browser/view/breakpoint/debug-breakpoints.service.test.ts +++ b/packages/debug/__tests__/browser/view/breakpoint/debug-breakpoints.service.test.ts @@ -150,9 +150,9 @@ describe('Debug Breakpoints Service', () => { }); it('toggleBreakpoints method should be work', () => { - expect(debugBreakpointsService.enable).toBeFalsy(); + expect(debugBreakpointsService.enable.get()).toBeFalsy(); debugBreakpointsService.toggleBreakpoints(); - expect(debugBreakpointsService.enable).toBeTruthy(); + expect(debugBreakpointsService.enable.get()).toBeTruthy(); }); it('onRenameFile should be work', async () => { diff --git a/packages/debug/__tests__/browser/view/configuration/debug-configuration.service.test.ts b/packages/debug/__tests__/browser/view/configuration/debug-configuration.service.test.ts index 9b7fde3f14..c5200e85e6 100644 --- a/packages/debug/__tests__/browser/view/configuration/debug-configuration.service.test.ts +++ b/packages/debug/__tests__/browser/view/configuration/debug-configuration.service.test.ts @@ -116,11 +116,11 @@ describe('Debug Configuration Service', () => { it('should have enough API', () => { expect(typeof debugConfigurationService.init).toBe('function'); - expect(debugConfigurationService.currentValue).toBe( + expect(debugConfigurationService.currentValue.get()).toBe( `test${DEFAULT_CONFIGURATION_NAME_SEPARATOR}file:///home/workspace__INDEX__0`, ); - expect(debugConfigurationService.float).toBeTruthy(); - expect(debugConfigurationService.configurationOptions).toEqual(mockDebugConfigurationManager.all); + expect(debugConfigurationService.float.get()).toBeTruthy(); + expect(debugConfigurationService.configurationOptions.get()).toEqual(mockDebugConfigurationManager.all); expect(typeof debugConfigurationService.updateCurrentValue).toBe('function'); expect(typeof debugConfigurationService.updateConfigurationOptions).toBe('function'); expect(typeof debugConfigurationService.start).toBe('function'); @@ -141,12 +141,12 @@ describe('Debug Configuration Service', () => { it('updateCurrentValue method should be work', () => { const value = 'test'; debugConfigurationService.updateCurrentValue(value); - expect(debugConfigurationService.currentValue).toBe(value); + expect(debugConfigurationService.currentValue.get()).toBe(value); }); it('updateConfigurationOptions method should be work', () => { debugConfigurationService.updateConfigurationOptions(); - expect(debugConfigurationService.currentValue).toBe( + expect(debugConfigurationService.currentValue.get()).toBe( `test${DEFAULT_CONFIGURATION_NAME_SEPARATOR}file:///home/workspace__INDEX__0`, ); }); diff --git a/packages/debug/__tests__/browser/view/configuration/debug-toolbar.service.test.ts b/packages/debug/__tests__/browser/view/configuration/debug-toolbar.service.test.ts index 05190e0381..2843b3e9ae 100644 --- a/packages/debug/__tests__/browser/view/configuration/debug-toolbar.service.test.ts +++ b/packages/debug/__tests__/browser/view/configuration/debug-toolbar.service.test.ts @@ -4,6 +4,10 @@ import { DebugViewModel } from '@opensumi/ide-debug/lib/browser/view/debug-view- import { createBrowserInjector } from '@opensumi/ide-dev-tool/src/injector-helper'; import { MockInjector } from '@opensumi/ide-dev-tool/src/mock-injector'; +function flushPromises() { + return Promise.resolve(); +} + describe('Debug Configuration Service', () => { const mockInjector = createBrowserInjector( [], @@ -62,16 +66,18 @@ describe('Debug Configuration Service', () => { expect(typeof debugToolbarService.doStepOut).toBe('function'); expect(typeof debugToolbarService.updateCurrentSession).toBe('function'); expect(typeof debugToolbarService.toolBarMenuMap).toBe('object'); - expect(Array.isArray(debugToolbarService.sessions)).toBeTruthy(); - expect(debugToolbarService.currentSession).toBeUndefined(); + expect(Array.isArray(debugToolbarService.sessions.get())).toBeTruthy(); + expect(debugToolbarService.currentSession.get()).toBeUndefined(); }); it('should init success', () => { expect(mockDebugViewModel.onDidChange).toHaveBeenCalledTimes(1); }); - it('onStart method should be work', () => { - debugToolbarService.doStart(); + it('onStart method should be work', async () => { + await debugToolbarService.doStart(); + jest.useFakeTimers({ advanceTimers: 100 }); + await flushPromises(); expect(mockDebugViewModel.start).toHaveBeenCalledTimes(1); }); @@ -114,12 +120,7 @@ describe('Debug Configuration Service', () => { const session = {} as any; debugToolbarService.updateCurrentSession(session); debugToolbarService.updateModel(); - expect(debugToolbarService.currentSession).toEqual(session); - }); - - it('updateModel method should be work', () => { - debugToolbarService.updateModel(); - expect(debugToolbarService.sessionCount).toBe(0); + expect(debugToolbarService.currentSession.get()).toEqual(session); }); it('updateToolBarMenu method should be work', () => { diff --git a/packages/debug/src/browser/components/floating-click-widget/index.tsx b/packages/debug/src/browser/components/floating-click-widget/index.tsx index 9fb29deca4..8b598c6e92 100644 --- a/packages/debug/src/browser/components/floating-click-widget/index.tsx +++ b/packages/debug/src/browser/components/floating-click-widget/index.tsx @@ -1,30 +1,31 @@ import cls from 'classnames'; -import { observer } from 'mobx-react-lite'; import React, { useEffect, useState } from 'react'; import { Button } from '@opensumi/ide-components'; -import { getIcon, localize, useInjectable } from '@opensumi/ide-core-browser'; +import { getIcon, localize, useAutorun, useInjectable } from '@opensumi/ide-core-browser'; import { EditorContext } from '@opensumi/ide-editor/lib/browser/editor.context'; import { DebugConfigurationService } from '../../view/configuration/debug-configuration.service'; import styles from './index.module.less'; -export const FloatingClickWidget = observer(() => { +export const FloatingClickWidget = () => { const { addConfiguration, openLaunchEditor, showDynamicQuickPickToInsert, dynamicConfigurations } = useInjectable(DebugConfigurationService); + const autorunDynamicConfigurations = useAutorun(dynamicConfigurations); + const { minimapWidth } = React.useContext(EditorContext); const [showSmartWidget, setShowSmartWidget] = useState(false); useEffect(() => { // 如果没有注册的 Dynamic Configuration Provider,就不显示智能添加配置按钮 - if (Array.isArray(dynamicConfigurations) && dynamicConfigurations.length > 0) { + if (Array.isArray(autorunDynamicConfigurations) && autorunDynamicConfigurations.length > 0) { setShowSmartWidget(true); } else { setShowSmartWidget(false); } - }, [dynamicConfigurations]); + }, [autorunDynamicConfigurations]); return (
@@ -41,4 +42,4 @@ export const FloatingClickWidget = observer(() => {
); -}); +}; diff --git a/packages/debug/src/browser/debug-contribution.ts b/packages/debug/src/browser/debug-contribution.ts index 078839325d..e6334d3d0c 100644 --- a/packages/debug/src/browser/debug-contribution.ts +++ b/packages/debug/src/browser/debug-contribution.ts @@ -426,7 +426,7 @@ export class DebugContribution commands.registerCommand(DEBUG_COMMANDS.ACTIVE_BREAKPOINTS, { execute: () => { const { enable } = this.debugBreakpointsService; - if (!enable) { + if (!enable.get()) { this.debugBreakpointsService.toggleBreakpoints(); } }, @@ -434,7 +434,7 @@ export class DebugContribution commands.registerCommand(DEBUG_COMMANDS.DEACTIVE_BREAKPOINTS, { execute: () => { const { enable } = this.debugBreakpointsService; - if (enable) { + if (enable.get()) { this.debugBreakpointsService.toggleBreakpoints(); } }, diff --git a/packages/debug/src/browser/editor/debug-hover.view.tsx b/packages/debug/src/browser/editor/debug-hover.view.tsx index bf5fe1c6c5..fb285c322d 100644 --- a/packages/debug/src/browser/editor/debug-hover.view.tsx +++ b/packages/debug/src/browser/editor/debug-hover.view.tsx @@ -1,5 +1,4 @@ import cls from 'classnames'; -import { observer } from 'mobx-react-lite'; import React from 'react'; import { INodeRendererWrapProps, IRecycleTreeHandle, RecycleTree, TreeNodeEvent } from '@opensumi/ide-components'; @@ -18,10 +17,10 @@ import { DebugHoverModel } from './debug-hover-model'; import { DebugHoverTreeModelService, IDebugHoverUpdateData } from './debug-hover-tree.model.service'; import styles from './debug-hover.module.less'; -export const DebugHoverView = observer(() => { +export const DebugHoverView = () => { const debugHoverTreeModelService: DebugHoverTreeModelService = useInjectable(DebugHoverTreeModelService); - const DEFAULT_LAYOUT_HEIGHT = 250; + const DEFAULT_LAYOUT_HEIGHT = 250; const [model, setModel] = React.useState<{ treeModel?: DebugHoverModel; variable?: DebugVariable }>({}); const [treeLayoutHeight, setTreeLayoutHeight] = React.useState(DEFAULT_LAYOUT_HEIGHT); const wrapperRef = React.useRef(null); @@ -144,4 +143,4 @@ export const DebugHoverView = observer(() => { {renderVariableTree()} ); -}); +}; diff --git a/packages/debug/src/browser/view/breakpoints/debug-breakpoints.service.ts b/packages/debug/src/browser/view/breakpoints/debug-breakpoints.service.ts index b5a73c3bd1..d0593a28ad 100644 --- a/packages/debug/src/browser/view/breakpoints/debug-breakpoints.service.ts +++ b/packages/debug/src/browser/view/breakpoints/debug-breakpoints.service.ts @@ -1,5 +1,3 @@ -import { action, makeObservable, observable, runInAction } from 'mobx'; - import { Autowired, Injectable } from '@opensumi/di'; import { Emitter, @@ -15,6 +13,7 @@ import { import { LabelService } from '@opensumi/ide-core-browser/lib/services'; import { EditorCollectionService, ICodeEditor, getSimpleEditorOptions } from '@opensumi/ide-editor'; import { IEditorDocumentModelService } from '@opensumi/ide-editor/lib/browser'; +import { observableValue, transaction } from '@opensumi/ide-monaco/lib/common/observable'; import { IWorkspaceService } from '@opensumi/ide-workspace'; import { WorkspaceEditDidDeleteFileEvent, WorkspaceEditDidRenameFileEvent } from '@opensumi/ide-workspace-edit'; @@ -78,17 +77,13 @@ export class DebugBreakpointsService extends WithEventBus { public treeNodeMap: Map = new Map(); - @observable - public enable: boolean; - - @observable - public inDebugMode: boolean; + public enable = observableValue(this, false); + public inDebugMode = observableValue(this, false); public roots: URI[]; constructor() { super(); - makeObservable(this); this.init(); } @@ -113,8 +108,8 @@ export class DebugBreakpointsService extends WithEventBus { }); this.contextKeyService.onDidChangeContext((e) => { if (e.payload.affectsSome(new Set([CONTEXT_IN_DEBUG_MODE_KEY]))) { - runInAction(() => { - this.inDebugMode = this.contextKeyService.getContextValue(CONTEXT_IN_DEBUG_MODE_KEY) || false; + transaction((tx) => { + this.inDebugMode.set(this.contextKeyService.getContextValue(CONTEXT_IN_DEBUG_MODE_KEY) || false, tx); }); } }); @@ -139,15 +134,15 @@ export class DebugBreakpointsService extends WithEventBus { this.updateBreakpoints(); } - @action async updateRoots() { - this.enable = this.breakpoints.breakpointsEnabled; - this.inDebugMode = this.contextKeyService.getContextValue(CONTEXT_IN_DEBUG_MODE_KEY) || false; + transaction((tx) => { + this.enable.set(this.breakpoints.breakpointsEnabled, tx); + this.inDebugMode.set(this.contextKeyService.getContextValue(CONTEXT_IN_DEBUG_MODE_KEY) || false, tx); + }); const roots = await this.workspaceService.roots; this.roots = roots.map((file) => new URI(file.uri)); } - @action.bound toggleBreakpointEnable(data: IDebugBreakpoint | DebugExceptionBreakpoint) { if (isDebugBreakpoint(data)) { const real = this.breakpoints.getBreakpoint(URI.parse(data.uri), { @@ -185,7 +180,6 @@ export class DebugBreakpointsService extends WithEventBus { } } - @action private async updateBreakpoints() { await this.breakpoints.whenReady; this.treeNodeMap.clear(); @@ -244,12 +238,13 @@ export class DebugBreakpointsService extends WithEventBus { this.breakpoints.delBreakpoint(bp); } - @action toggleBreakpoints() { this.breakpoints.breakpointsEnabled = !this.breakpoints.breakpointsEnabled; - this.enable = this.breakpoints.breakpointsEnabled; + transaction((tx) => { + this.enable.set(this.breakpoints.breakpointsEnabled, tx); + }); - if (this.enable) { + if (this.enable.get()) { this.reporterService.point(DEBUG_REPORT_NAME?.DEBUG_BREAKPOINT, 'enabled'); } else { this.reporterService.point(DEBUG_REPORT_NAME?.DEBUG_BREAKPOINT, 'unenabled'); diff --git a/packages/debug/src/browser/view/breakpoints/debug-breakpoints.view.tsx b/packages/debug/src/browser/view/breakpoints/debug-breakpoints.view.tsx index ccadad1c1b..b73c873d96 100644 --- a/packages/debug/src/browser/view/breakpoints/debug-breakpoints.view.tsx +++ b/packages/debug/src/browser/view/breakpoints/debug-breakpoints.view.tsx @@ -1,5 +1,4 @@ import cls from 'classnames'; -import { observer } from 'mobx-react-lite'; import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'; import { Badge, BasicRecycleTree, CheckBox, IBasicTreeData } from '@opensumi/ide-components'; @@ -14,6 +13,7 @@ import { getExternalIcon, getIcon, localize, + useAutorun, useInjectable, } from '@opensumi/ide-core-browser'; import { IResourceOpenOptions } from '@opensumi/ide-editor'; @@ -46,11 +46,13 @@ export interface BreakpointItem { breakpoint: IDebugBreakpoint | DebugExceptionBreakpoint; } -export const DebugBreakpointView = observer(({ viewState }: React.PropsWithChildren<{ viewState: ViewState }>) => { +export const DebugBreakpointView = ({ viewState }: React.PropsWithChildren<{ viewState: ViewState }>) => { const debugBreakpointsService: DebugBreakpointsService = useInjectable(DebugBreakpointsService); - const { enable, toggleBreakpointEnable } = debugBreakpointsService; const isDisposed = useRef(false); const [treeData, setTreeData] = useState([]); + const { enable, inDebugMode, toggleBreakpointEnable } = debugBreakpointsService; + const autorunEnable = useAutorun(enable); + const autorunInDebugMode = useAutorun(inDebugMode); const getBreakpointClsState = (options: { data: BreakpointItem; @@ -127,8 +129,8 @@ export const DebugBreakpointView = observer(({ viewState }: React.PropsWithChild iconClassName: cls( getBreakpointClsState({ data: item.rawData, - inDebugMode: debugBreakpointsService.inDebugMode, - breakpointEnabled: enable, + inDebugMode: autorunInDebugMode, + breakpointEnabled: autorunEnable, }), styles.debug_breakpoints_icon, ), @@ -173,7 +175,7 @@ export const DebugBreakpointView = observer(({ viewState }: React.PropsWithChild }, [treeData]); return ( -
+
{ if (item.raw.breakpoint) { @@ -193,7 +195,7 @@ export const DebugBreakpointView = observer(({ viewState }: React.PropsWithChild />
); -}); +}; interface BreakpointFileItemProps { label: string; diff --git a/packages/debug/src/browser/view/configuration/debug-configuration.service.ts b/packages/debug/src/browser/view/configuration/debug-configuration.service.ts index 4067250559..47a80a70c5 100644 --- a/packages/debug/src/browser/view/configuration/debug-configuration.service.ts +++ b/packages/debug/src/browser/view/configuration/debug-configuration.service.ts @@ -1,7 +1,6 @@ -import { action, makeObservable, observable, runInAction } from 'mobx'; - import { Autowired, Injectable } from '@opensumi/di'; import { IEventBus, PreferenceConfigurations, PreferenceService, URI, isUndefined } from '@opensumi/ide-core-browser'; +import { observableValue, transaction } from '@opensumi/ide-monaco/lib/common/observable'; import { IWorkspaceService } from '@opensumi/ide-workspace'; import { WorkspaceVariableContribution } from '@opensumi/ide-workspace/lib/browser/workspace-variable-contribution'; @@ -51,27 +50,15 @@ export class DebugConfigurationService { private _whenReady: Promise; constructor() { - makeObservable(this); this._whenReady = this.init(); } - @observable - currentValue: string = DEFAULT_ADD_CONFIGURATION_KEY; - - @observable - float = true; - - @observable - isMultiRootWorkspace: boolean; - - @observable.shallow - workspaceRoots: string[] = observable.array([]); - - @observable.shallow - configurationOptions: DebugSessionOptions[] = observable.array([]); - - @observable.shallow - dynamicConfigurations: DebugConfigurationType[] = []; + currentValue = observableValue(this, DEFAULT_ADD_CONFIGURATION_KEY); + float = observableValue(this, false); + configurationOptions = observableValue(this, []); + dynamicConfigurations = observableValue(this, []); + isMultiRootWorkspace = observableValue(this, false); + workspaceRoots = observableValue(this, []); get whenReady() { return this._whenReady; @@ -88,7 +75,7 @@ export class DebugConfigurationService { this.preferenceService.onPreferenceChanged((event) => { const { preferenceName, newValue } = event; if (preferenceName === 'debug.toolbar.float') { - if (this.float !== newValue) { + if (this.float.get() !== newValue) { this.updateFloat(newValue); } } @@ -107,30 +94,33 @@ export class DebugConfigurationService { async updateWorkspaceState() { const roots = (await this.workspaceService.tryGetRoots()).map((root) => root.uri); - runInAction(() => { - this.isMultiRootWorkspace = this.workspaceService.isMultiRootWorkspaceOpened; - this.workspaceRoots = roots; + transaction((tx) => { + this.isMultiRootWorkspace.set(this.workspaceService.isMultiRootWorkspaceOpened, tx); + this.workspaceRoots.set(roots, tx); }); } - @action async updateDynamicConfigurations() { - this.dynamicConfigurations = await this.debugConfigurationManager.getDynamicConfigurationsSupportTypes(); + const types = await this.debugConfigurationManager.getDynamicConfigurationsSupportTypes(); + transaction((tx) => { + this.dynamicConfigurations.set(types, tx); + }); } - @action updateFloat(value: boolean) { - this.float = value; + this.float.set(value, undefined); } - @action updateCurrentValue(value: string) { - this.currentValue = value; + transaction((tx) => { + this.currentValue.set(value, tx); + }); } - @action async updateConfigurationOptions() { - this.configurationOptions = this.debugConfigurationManager.all; + transaction((tx) => { + this.configurationOptions.set(this.debugConfigurationManager.all, tx); + }); const { current } = this.debugConfigurationManager; if (current) { const currentValue = this.toValue(current); @@ -203,13 +193,12 @@ export class DebugConfigurationService { if (config) { this.debugSessionManager.start({ configuration: config, - workspaceFolderUri: this.workspaceRoots[0], + workspaceFolderUri: this.workspaceRoots.get()[0], index: -1, }); } }; - @action.bound toValue({ configuration, workspaceFolderUri, index }: DebugSessionOptions) { if (!workspaceFolderUri) { return configuration.name; @@ -219,7 +208,7 @@ export class DebugConfigurationService { if (options && options.index) { return this.toValue(options); } - return this.currentValue; + return this.currentValue.get(); } return ( configuration.name + diff --git a/packages/debug/src/browser/view/configuration/debug-configuration.view.tsx b/packages/debug/src/browser/view/configuration/debug-configuration.view.tsx index 029ae23591..03288f4c7b 100644 --- a/packages/debug/src/browser/view/configuration/debug-configuration.view.tsx +++ b/packages/debug/src/browser/view/configuration/debug-configuration.view.tsx @@ -1,9 +1,8 @@ import cls from 'classnames'; -import { observer } from 'mobx-react-lite'; import React from 'react'; import { Option, Popover, Select } from '@opensumi/ide-components'; -import { AppConfig, URI, localize, useInjectable } from '@opensumi/ide-core-browser'; +import { AppConfig, URI, localize, useAutorun, useInjectable } from '@opensumi/ide-core-browser'; import { Select as NativeSelect } from '@opensumi/ide-core-browser/lib/components/select'; import { @@ -260,8 +259,9 @@ export const DebugActionBar = React.memo(({ runDebug, openConfiguration, openDeb
)); -export const DebugConfigurationContainerView = observer(() => { - const { float } = useInjectable(DebugConfigurationService); +export const DebugConfigurationContainerView = () => { + const debugConfigurationService = useInjectable(DebugConfigurationService); + const float = useAutorun(debugConfigurationService.float); return ( <> @@ -269,7 +269,7 @@ export const DebugConfigurationContainerView = observer(() => { {!float && } ); -}); +}; export interface DebugControllerViewProps { className?: string; @@ -280,21 +280,27 @@ export interface DebugControllerViewProps { * 该组件支持用户导入 * 后续如果有一些改动需要考虑是否有 breakchange */ -export const DebugControllerView = observer((props: DebugControllerViewProps) => { +export const DebugControllerView = (props: DebugControllerViewProps) => { const { - configurationOptions, - dynamicConfigurations, toValue, - currentValue, openConfiguration, addConfiguration, openDebugConsole, updateConfiguration, start, showDynamicQuickPick, + currentValue, + configurationOptions, + dynamicConfigurations, isMultiRootWorkspace, workspaceRoots, } = useInjectable(DebugConfigurationService); + const autorunDynamicConfigurations = useAutorun(dynamicConfigurations); + const autorunCurrentValue = useAutorun(currentValue); + const autorunConfigurationOptions = useAutorun(configurationOptions); + const autorunIsMultiRootWorkspace = useAutorun(isMultiRootWorkspace); + const autorunWorkspaceRoots = useAutorun(workspaceRoots); + const appConfig = useInjectable(AppConfig); const addConfigurationLabel = localize('debug.action.add.configuration'); const editConfigurationLabel = localize('debug.action.edit.configuration'); @@ -329,16 +335,16 @@ export const DebugControllerView = observer((props: DebugControllerViewProps) => return (
{CustomActionBar ? ( @@ -347,4 +353,4 @@ export const DebugControllerView = observer((props: DebugControllerViewProps) => )}
); -}); +}; diff --git a/packages/debug/src/browser/view/configuration/debug-toolbar.service.ts b/packages/debug/src/browser/view/configuration/debug-toolbar.service.ts index c46ca7f458..5deda95522 100644 --- a/packages/debug/src/browser/view/configuration/debug-toolbar.service.ts +++ b/packages/debug/src/browser/view/configuration/debug-toolbar.service.ts @@ -1,9 +1,8 @@ -import { action, makeObservable, observable } from 'mobx'; - import { Autowired, INJECTOR_TOKEN, Injectable, Injector } from '@opensumi/di'; import { IContextKeyService, IReporterService, memoize } from '@opensumi/ide-core-browser'; import { AbstractContextMenuService, IContextMenu, MenuId } from '@opensumi/ide-core-browser/lib/menu/next'; import { IElectronMainUIService } from '@opensumi/ide-core-common/lib/electron'; +import { observableValue, transaction } from '@opensumi/ide-monaco/lib/common/observable'; import { DEBUG_REPORT_NAME, DebugState } from '../../../common'; import { DebugSession } from '../../debug-session'; @@ -26,22 +25,13 @@ export class DebugToolbarService { @Autowired(INJECTOR_TOKEN) private readonly injector: Injector; - @observable - state: DebugState = DebugState.Inactive; - - @observable - sessionCount: number; - - @observable.shallow - currentSession: DebugSession | undefined; - - @observable.shallow - sessions: DebugSession[] = []; + state = observableValue(this, DebugState.Inactive); + currentSession = observableValue(this, undefined); + sessions = observableValue(this, []); public readonly toolBarMenuMap: Map = new Map(); constructor() { - makeObservable(this); this.model.onDidChange(() => { this.updateToolBarMenu(); this.updateModel(); @@ -53,28 +43,31 @@ export class DebugToolbarService { return this.injector.get(IElectronMainUIService); } - @action updateModel() { - this.state = this.model.state; - this.currentSession = this.model.currentSession; - this.sessions = Array.from(this.model.sessions).filter( - (session: DebugSession) => session && session.state > DebugState.Inactive, - ); - this.sessionCount = this.sessions.length; + transaction((tx) => { + this.state.set(this.model.state, tx); + this.currentSession.set(this.model.currentSession, tx); + this.sessions.set( + Array.from(this.model.sessions).filter( + (session: DebugSession) => session && session.state > DebugState.Inactive, + ), + tx, + ); + }); } - @action updateToolBarMenu() { - if (this.currentSession && this.currentSession.id && !this.toolBarMenuMap.has(this.currentSession.id)) { + const currentSession = this.currentSession.get(); + if (currentSession && currentSession.id && !this.toolBarMenuMap.has(currentSession.id)) { const contextMenu = this.contextMenuService.createMenu({ id: MenuId.DebugToolBar, contextKeyService: this.contextKeyService.createScoped(), }); - this.currentSession.on('terminated', () => { - this.toolBarMenuMap.delete(this.currentSession?.id!); + currentSession.on('terminated', () => { + this.toolBarMenuMap.delete(currentSession.id); }); - this.toolBarMenuMap.set(this.currentSession.id, contextMenu); + this.toolBarMenuMap.set(currentSession.id, contextMenu); } } @@ -86,7 +79,7 @@ export class DebugToolbarService { this.model.reportAction(session.id, threadId, name); const extra = { type: languageType, - request: this.currentSession?.configuration.request, + request: this.currentSession.get()?.configuration?.request, sessionId: session.id, threadId, }; @@ -97,7 +90,7 @@ export class DebugToolbarService { }; } - doStart = () => this.model.start(); + doStart = async () => await this.model.start(); doRestart = async () => { const reportTimeEnd = this.instrumentReporter('restart'); diff --git a/packages/debug/src/browser/view/configuration/debug-toolbar.view.tsx b/packages/debug/src/browser/view/configuration/debug-toolbar.view.tsx index 9963fab196..af30bfed61 100644 --- a/packages/debug/src/browser/view/configuration/debug-toolbar.view.tsx +++ b/packages/debug/src/browser/view/configuration/debug-toolbar.view.tsx @@ -1,6 +1,4 @@ import cls from 'classnames'; -import { action, makeObservable, observable } from 'mobx'; -import { observer } from 'mobx-react-lite'; import React, { useCallback, useEffect, useState } from 'react'; import { Injectable } from '@opensumi/di'; @@ -12,6 +10,7 @@ import { electronEnv, getIcon, localize, + useAutorun, useDesignStyles, useInjectable, } from '@opensumi/ide-core-browser'; @@ -19,6 +18,7 @@ import { InlineMenuBar } from '@opensumi/ide-core-browser/lib/components/actions import { Select as NativeSelect } from '@opensumi/ide-core-browser/lib/components/select'; import { LayoutViewSizeConfig } from '@opensumi/ide-core-browser/lib/layout/constants'; import { IElectronMainUIService } from '@opensumi/ide-core-common/lib/electron'; +import { derived, observableValue, transaction } from '@opensumi/ide-monaco/lib/common/observable'; import { DebugState } from '../../../common'; import { DebugAction } from '../../components'; @@ -31,50 +31,45 @@ import { DebugToolbarService } from './debug-toolbar.service'; @Injectable() class FloatController { - @observable - x: number; - - @observable - line: number; - - @observable - enable: boolean; - - private _origin: number; - private _last: number; - - private _y: number; - - constructor() { - makeObservable(this); - this.x = 0; - this.line = 0; - this.enable = false; - this._origin = 0; - this._last = 0; - this._y = 0; + private _x = observableValue(this, 0); + private _line = observableValue(this, 0); + private _enable = observableValue(this, false); + + private y: number = 0; + private last: number = 0; + private origin: number = 0; + + state = derived(this, (reader) => ({ + enable: this._enable.read(reader), + x: this._x.read(reader), + line: this._line.read(reader), + })); + + setEnable(value: boolean) { + transaction((tx) => { + this._enable.set(value, tx); + }); } - @action.bound onMouseDown(e: React.MouseEvent) { - this.enable = true; - this._origin = e.clientX; - this._y = e.clientY; + this.setEnable(true); + this.y = e.clientY; + this.origin = e.clientX; } - @action.bound onMouseMove(e: React.MouseEvent) { e.stopPropagation(); - if (this.enable) { - this.x = e.clientX - this._origin + this._last; - this.line = e.clientY - this._y > 10 ? 1 : 0; - } + transaction((tx) => { + if (this._enable.get()) { + this._x.set(e.clientX - this.origin + this.last, tx); + this._line.set(e.clientY - this.y > 10 ? 1 : 0, tx); + } + }); } - @action.bound onMouseUp() { - this.enable = false; - this._last = this.x; + this.setEnable(false); + this.last = this._x.get(); } } @@ -87,7 +82,7 @@ export interface DebugToolbarViewProps { * 该组件支持用户导入 * 后续如果有一些改动需要考虑是否有 breakchange */ -export const DebugToolbarView = observer((props: DebugToolbarViewProps) => { +export const DebugToolbarView = (props: DebugToolbarViewProps) => { const { state, toolBarMenuMap, @@ -102,13 +97,17 @@ export const DebugToolbarView = observer((props: DebugToolbarViewProps) => { sessions, updateCurrentSession, } = useInjectable(DebugToolbarService); + const autorunState = useAutorun(state); + const autorunCurrentSession = useAutorun(currentSession); + const autorunSessions = useAutorun(sessions); + const { isElectronRenderer } = useInjectable(AppConfig); const isAttach = - !!currentSession && - currentSession.configuration.request === 'attach' && - !isExtensionHostDebugging(currentSession.configuration); + !!autorunCurrentSession && + autorunCurrentSession.configuration?.request === 'attach' && + !isExtensionHostDebugging(autorunCurrentSession.configuration); - const currentSessionId = currentSession && currentSession.id; + const currentSessionId = autorunCurrentSession && autorunCurrentSession.id; const renderToolBar = useCallback( (session: DebugSession | undefined): React.ReactNode => { @@ -129,7 +128,7 @@ export const DebugToolbarView = observer((props: DebugToolbarViewProps) => { return ( @@ -138,7 +137,7 @@ export const DebugToolbarView = observer((props: DebugToolbarViewProps) => { return ( @@ -155,7 +154,7 @@ export const DebugToolbarView = observer((props: DebugToolbarViewProps) => { return ( @@ -183,29 +182,32 @@ export const DebugToolbarView = observer((props: DebugToolbarViewProps) => { [], ); - const renderSelections = useCallback((sessions: DebugSession[]) => { - if (sessions.length > 1) { - return ( -
- {isElectronRenderer ? ( - - {renderSessionOptions(sessions)} - - ) : ( - - )} -
- ); - } - }, []); + const renderSelections = useCallback( + (sessions: DebugSession[]) => { + if (sessions.length > 1) { + return ( +
+ {isElectronRenderer ? ( + + {renderSessionOptions(sessions)} + + ) : ( + + )} +
+ ); + } + }, + [currentSessionId], + ); const setCurrentSession = useCallback( (event: React.ChangeEvent | string | number) => { @@ -214,66 +216,69 @@ export const DebugToolbarView = observer((props: DebugToolbarViewProps) => { value = (event as React.ChangeEvent).target.value; } - if (!sessions) { + if (!autorunSessions) { return; } - for (const session of sessions) { + for (const session of autorunSessions) { if (session.id === value) { updateCurrentSession(session); } } }, - [updateCurrentSession], + [autorunSessions, updateCurrentSession], ); return (
- {renderSelections(sessions.filter((s: DebugSession) => !s.parentSession))} + {renderSelections(autorunSessions.filter((s: DebugSession) => !s.parentSession))}
- {renderContinue(state)} + {renderContinue(autorunState)} - {renderStop(state)} - {renderToolBar(currentSession)} + {renderStop(autorunState)} + {renderToolBar(autorunCurrentSession)}
); -}); +}; const DebugPreferenceTopKey = 'debug.toolbar.top'; const DebugPreferenceHeightKey = 'debug.toolbar.height'; -const FloatDebugToolbarView = observer(() => { - const controller = useInjectable(FloatController); +const FloatDebugToolbarView = () => { const preference = useInjectable(PreferenceService); const { isElectronRenderer } = useInjectable(AppConfig); const layoutViewSize = useInjectable(LayoutViewSizeConfig); - const debugToolbarService = useInjectable(DebugToolbarService); const styles_debug_toolbar_wrapper = useDesignStyles(styles.debug_toolbar_wrapper, 'debug_toolbar_wrapper'); const [toolbarOffsetTop, setToolbarOffsetTop] = useState(0); - const { state } = debugToolbarService; + + const controller = useInjectable(FloatController); + const derivedController = useAutorun(controller.state); + + const debugToolbarService = useInjectable(DebugToolbarService); + const state = useAutorun(debugToolbarService.state); useEffect(() => { const disposableCollection = new DisposableCollection(); @@ -311,15 +316,15 @@ const FloatDebugToolbarView = observer(() => { if (state) { return (
controller.onMouseMove(e)} onMouseUp={(e) => controller.onMouseUp()} >
{ ); } - controller.enable = false; + controller.setEnable(false); return null; -}); +}; + +export const DebugToolbarOverlayWidget = () => { + const debugConfigurationService = useInjectable(DebugConfigurationService); + const float = useAutorun(debugConfigurationService.float); -export const DebugToolbarOverlayWidget = observer(() => { - const { float } = useInjectable(DebugConfigurationService); if (!float) { return null; } return ; -}); +}; diff --git a/packages/debug/src/browser/view/console/debug-console-filter.view.tsx b/packages/debug/src/browser/view/console/debug-console-filter.view.tsx index 9ee74b1369..c959ccc0b5 100644 --- a/packages/debug/src/browser/view/console/debug-console-filter.view.tsx +++ b/packages/debug/src/browser/view/console/debug-console-filter.view.tsx @@ -1,5 +1,4 @@ import debounce from 'lodash/debounce'; -import { observer } from 'mobx-react-lite'; import React from 'react'; import { HistoryInputBox, IHistoryInputBoxHandler } from '@opensumi/ide-components/lib/input/HistoryInputBox'; @@ -11,7 +10,7 @@ import styles from './debug-console.module.less'; /** * 调试控制台筛选器 */ -export const DebugConsoleFilterView = observer(() => { +export const DebugConsoleFilterView = () => { const debugConsoleFilterService = useInjectable(DebugConsoleFilterService); const [filterValue, setFilterValue] = React.useState(''); const [historyApi, setHistoryApi] = React.useState(); @@ -75,4 +74,4 @@ export const DebugConsoleFilterView = observer(() => { >
); -}); +}; diff --git a/packages/debug/src/browser/view/console/debug-console.contribution.ts b/packages/debug/src/browser/view/console/debug-console.contribution.ts index 7fba874933..851be1624d 100644 --- a/packages/debug/src/browser/view/console/debug-console.contribution.ts +++ b/packages/debug/src/browser/view/console/debug-console.contribution.ts @@ -158,6 +158,7 @@ export class DebugConsoleContribution command: DEBUG_COMMANDS.CONSOLE_ENTER_EVALUATE.id, keybinding: 'enter', when: `${CONTEXT_IN_DEBUG_REPL.raw} && ${CONTEXT_IN_DEBUG_MODE.raw}`, + priority: 0, }); bindings.registerKeybinding({ command: DEBUG_COMMANDS.CONSOLE_INPUT_DOWN_ARROW.id, diff --git a/packages/debug/src/browser/view/console/debug-console.view.tsx b/packages/debug/src/browser/view/console/debug-console.view.tsx index 4951fbd231..07cfa6be0b 100644 --- a/packages/debug/src/browser/view/console/debug-console.view.tsx +++ b/packages/debug/src/browser/view/console/debug-console.view.tsx @@ -1,5 +1,4 @@ import cls from 'classnames'; -import { observer } from 'mobx-react-lite'; import React from 'react'; import { @@ -35,7 +34,7 @@ import { IDebugConsoleModel } from './debug-console-tree.model.service'; import styles from './debug-console.module.less'; import { DebugConsoleService } from './debug-console.service'; -export const DebugConsoleView = observer(({ viewState }: { viewState: ViewState }) => { +export const DebugConsoleView = ({ viewState }: { viewState: ViewState }) => { const debugConsoleService = useInjectable(DebugConsoleService); const debugConsoleFilterService = useInjectable(DebugConsoleFilterService); const preferenceService = useInjectable(PreferenceService); @@ -225,7 +224,7 @@ export const DebugConsoleView = observer(({ viewState }: { viewState: ViewState
); -}); +}; export interface IDebugConsoleNodeProps { item: any; diff --git a/packages/debug/src/browser/view/frames/debug-call-stack-frame.view.tsx b/packages/debug/src/browser/view/frames/debug-call-stack-frame.view.tsx index 2746c095fa..d24e4df0ba 100644 --- a/packages/debug/src/browser/view/frames/debug-call-stack-frame.view.tsx +++ b/packages/debug/src/browser/view/frames/debug-call-stack-frame.view.tsx @@ -1,5 +1,4 @@ import cls from 'classnames'; -import { observer } from 'mobx-react-lite'; import React, { useCallback, useEffect, useRef, useState } from 'react'; import { RecycleList } from '@opensumi/ide-components'; @@ -30,7 +29,7 @@ export interface DebugStackSessionViewProps { isBottom?: boolean; } -export const DebugStackFramesView = observer((props: DebugStackSessionViewProps) => { +export const DebugStackFramesView = (props: DebugStackSessionViewProps) => { const { viewState, frames: rawFrames, thread, indent = 0, session, isBottom } = props; const [selected, setSelected] = useState(); const [isLoading, setIsLoading] = useState(false); @@ -360,4 +359,4 @@ export const DebugStackFramesView = observer((props: DebugStackSessionViewProps) footer={isLoading || canLoadMore ? footer : undefined} /> ); -}); +}; diff --git a/packages/debug/src/browser/view/frames/debug-call-stack.view.tsx b/packages/debug/src/browser/view/frames/debug-call-stack.view.tsx index 4def3c94f0..9c2df9d16e 100644 --- a/packages/debug/src/browser/view/frames/debug-call-stack.view.tsx +++ b/packages/debug/src/browser/view/frames/debug-call-stack.view.tsx @@ -1,4 +1,3 @@ -import { observer } from 'mobx-react-lite'; import React from 'react'; import { ViewState, useInjectable } from '@opensumi/ide-core-browser'; @@ -10,7 +9,7 @@ import { DebugSessionManager } from '../../debug-session-manager'; import { DebugStackSessionView } from './debug-call-stack-session.view'; import styles from './debug-call-stack.module.less'; -export const DebugCallStackView = observer(({ viewState }: React.PropsWithChildren<{ viewState: ViewState }>) => { +export const DebugCallStackView = ({ viewState }: React.PropsWithChildren<{ viewState: ViewState }>) => { const manager = useInjectable(IDebugSessionManager); const [sessions, setSessions] = React.useState([]); @@ -41,4 +40,4 @@ export const DebugCallStackView = observer(({ viewState }: React.PropsWithChildr ))} ); -}); +}; diff --git a/packages/debug/src/browser/view/variables/debug-variables.view.tsx b/packages/debug/src/browser/view/variables/debug-variables.view.tsx index 01539d87c1..25502dbbf3 100644 --- a/packages/debug/src/browser/view/variables/debug-variables.view.tsx +++ b/packages/debug/src/browser/view/variables/debug-variables.view.tsx @@ -1,5 +1,4 @@ import cls from 'classnames'; -import { observer } from 'mobx-react-lite'; import React from 'react'; import { @@ -28,15 +27,13 @@ import styles from './debug-variables.module.less'; export const DEBUG_VARIABLE_TREE_FIELD_NAME = 'DEBUG_VARIABLE_TREE_FIELD'; -export const DebugVariableView = observer(({ viewState }: React.PropsWithChildren<{ viewState: ViewState }>) => { - const DEBUG_VARIABLE_ITEM_HEIGHT = 22; - - const { width, height } = viewState; +export const DebugVariableView = ({ viewState }: React.PropsWithChildren<{ viewState: ViewState }>) => { + const debugVariablesModelService = useInjectable(DebugVariablesModelService); const wrapperRef = React.useRef(null); const [model, setModel] = React.useState(); - - const debugVariablesModelService = useInjectable(DebugVariablesModelService); + const DEBUG_VARIABLE_ITEM_HEIGHT = 22; + const { width, height } = viewState; React.useEffect(() => { const disposable = debugVariablesModelService.onDidUpdateTreeModel(async (nextModel: TreeModel) => { @@ -150,7 +147,7 @@ export const DebugVariableView = observer(({ viewState }: React.PropsWithChildre {renderContent()} ); -}); +}; export interface IDebugVariableNodeProps { item: any; diff --git a/packages/debug/src/browser/view/watch/debug-watch.view.tsx b/packages/debug/src/browser/view/watch/debug-watch.view.tsx index 70d8212dc2..44b3ad5dad 100644 --- a/packages/debug/src/browser/view/watch/debug-watch.view.tsx +++ b/packages/debug/src/browser/view/watch/debug-watch.view.tsx @@ -1,5 +1,4 @@ import cls from 'classnames'; -import { observer } from 'mobx-react-lite'; import React from 'react'; import { @@ -35,15 +34,13 @@ import styles from './debug-watch.module.less'; export const DEBUG_WATCH_TREE_FIELD_NAME = 'DEBUG_WATCH_TREE_FIELD'; -export const DebugWatchView = observer(({ viewState }: React.PropsWithChildren<{ viewState: ViewState }>) => { - const DEBUG_VARIABLE_ITEM_HEIGHT = 22; - - const { height } = viewState; +export const DebugWatchView = ({ viewState }: React.PropsWithChildren<{ viewState: ViewState }>) => { + const debugWatchModelService = useInjectable(DebugWatchModelService); + const DEBUG_VARIABLE_ITEM_HEIGHT = 22; const wrapperRef = React.useRef(null); const [model, setModel] = React.useState(); - - const debugWatchModelService = useInjectable(DebugWatchModelService); + const { height } = viewState; React.useEffect(() => initTreeModel(), []); @@ -170,7 +167,7 @@ export const DebugWatchView = observer(({ viewState }: React.PropsWithChildren<{ {renderContent()} ); -}); +}; export interface IDebugVariableNodeProps { item: any; diff --git a/packages/design/src/browser/menu-bar/menu-bar.view.tsx b/packages/design/src/browser/menu-bar/menu-bar.view.tsx index 0608900437..174f707c70 100644 --- a/packages/design/src/browser/menu-bar/menu-bar.view.tsx +++ b/packages/design/src/browser/menu-bar/menu-bar.view.tsx @@ -121,7 +121,7 @@ export const DesignMenuBarView = () => { const isVisiable = React.useCallback(() => { const tabbarService = mainLayoutService.getTabbarService(SlotLocation.left); - return !!tabbarService.currentContainerId; + return !!tabbarService.currentContainerId.get(); }, [mainLayoutService]); return ( diff --git a/packages/editor/src/browser/editor.view.tsx b/packages/editor/src/browser/editor.view.tsx index 8051320e40..f61833d924 100644 --- a/packages/editor/src/browser/editor.view.tsx +++ b/packages/editor/src/browser/editor.view.tsx @@ -1,5 +1,4 @@ import cls from 'classnames'; -import { observer } from 'mobx-react-lite'; import React from 'react'; import ReactDOM from 'react-dom/client'; @@ -238,7 +237,7 @@ const EditorEmptyComponent: React.FC<{ ); }; -export const EditorGroupView = observer(({ group }: { group: EditorGroup }) => { +export const EditorGroupView = ({ group }: { group: EditorGroup }) => { const groupWrapperRef = React.useRef(); const [isEmpty, setIsEmpty] = React.useState(group.resources.length === 0); @@ -305,9 +304,9 @@ export const EditorGroupView = observer(({ group }: { group: EditorGroup }) => { )} ); -}); +}; -export const EditorGroupBody = observer(({ group }: { group: EditorGroup }) => { +export const EditorGroupBody = ({ group }: { group: EditorGroup }) => { const [context, setContext] = React.useState(defaultEditorContext); const editorBodyRef = React.useRef(null); @@ -490,7 +489,7 @@ export const EditorGroupBody = observer(({ group }: { group: EditorGroup }) => { ); -}); +}; export const ComponentsWrapper = ({ component, diff --git a/packages/editor/src/browser/navigation.view.tsx b/packages/editor/src/browser/navigation.view.tsx index 2ba84c5a11..e6a53ec39c 100644 --- a/packages/editor/src/browser/navigation.view.tsx +++ b/packages/editor/src/browser/navigation.view.tsx @@ -1,6 +1,4 @@ import cls from 'classnames'; -import { action, makeObservable, observable } from 'mobx'; -import { observer } from 'mobx-react-lite'; import React, { memo, useCallback, useEffect, useRef } from 'react'; import { Injectable } from '@opensumi/di'; @@ -10,10 +8,12 @@ import { DomListener, fastdom, getIcon, + useAutorun, useDesignStyles, useInjectable, useUpdateOnEvent, } from '@opensumi/ide-core-browser'; +import { observableValue, transaction } from '@opensumi/ide-monaco/lib/common/observable'; import { BreadCrumbsMenuService } from './menu/breadcrumbs.menus'; import styles from './navigation.module.less'; @@ -108,7 +108,7 @@ export const NavigationItem = memo(({ part, editorGroup }: { part: IBreadCrumbPa ); }); -export const NavigationMenu = observer(({ model }: { model: NavigationMenuModel }) => { +export const NavigationMenu = ({ model }: { model: NavigationMenuModel }) => { let maxHeight = window.innerHeight - model.y - 20; let top = model.y; const height = model.parts.length * 22; @@ -122,6 +122,8 @@ export const NavigationMenu = observer(({ model }: { model: NavigationMenuModel const styles_navigation_menu_item = useDesignStyles(styles.navigation_menu_item, 'navigation_menu_item'); const viewService = useInjectable(NavigationBarViewService) as NavigationBarViewService; + const subMenu = useAutorun(model.subMenu); + const scrollToCurrent = useCallback(() => { fastdom.measure(() => { try { @@ -209,14 +211,15 @@ export const NavigationMenu = observer(({ model }: { model: NavigationMenuModel ); })} - {model.subMenu && } + {subMenu && } ); -}); +}; -export const NavigationMenuContainer = observer(() => { - const viewService = useInjectable(NavigationBarViewService) as NavigationBarViewService; +export const NavigationMenuContainer = () => { const menuRef = useRef(); + const viewService = useInjectable(NavigationBarViewService) as NavigationBarViewService; + const current = useAutorun(viewService.current); useEffect(() => { if (menuRef.current) { @@ -235,43 +238,39 @@ export const NavigationMenuContainer = observer(() => { } }); - if (!viewService.current) { + if (!current) { return null; } else { return (
- +
); } -}); +}; @Injectable() export class NavigationBarViewService { - @observable.ref current: NavigationMenuModel | null = null; - @observable.ref editorGroup: EditorGroup | null = null; - - constructor() { - makeObservable(this); - } + readonly current = observableValue(this, null); - @action showMenu(parts: IBreadCrumbPart[], x, y, currentIndex, uri, editorGroup) { - this.current = new NavigationMenuModel(parts, x, y, currentIndex, uri); - this.editorGroup = editorGroup; + transaction((tx) => { + this.current.set(new NavigationMenuModel(parts, x, y, currentIndex, uri), tx); + }); } - @action dispose() { - if (this.current) { - this.current.dispose(); - } - this.current = null; + transaction((tx) => { + const current = this.current.get(); + current?.dispose(); + + this.current.set(null, tx); + }); } } export class NavigationMenuModel { - @observable.ref subMenu: NavigationMenuModel | null = null; + readonly subMenu = observableValue(this, null); constructor( public readonly parts: IBreadCrumbPart[], @@ -279,20 +278,20 @@ export class NavigationMenuModel { public readonly y, public readonly initialIndex: number = -1, public readonly uri, - ) { - makeObservable(this); - } + ) {} - @action showSubMenu(parts: IBreadCrumbPart[], x, y, uri) { - this.subMenu = new NavigationMenuModel(parts, x, y, -1, uri); + transaction((tx) => { + this.subMenu.set(new NavigationMenuModel(parts, x, y, -1, uri), tx); + }); } - @action dispose() { - if (this.subMenu) { - this.subMenu.dispose(); - } - this.subMenu = null; + transaction((tx) => { + const subMenu = this.subMenu.get(); + subMenu?.dispose(); + + this.subMenu.set(null, tx); + }); } } diff --git a/packages/editor/src/browser/resource.service.ts b/packages/editor/src/browser/resource.service.ts index 6500ea08ad..f97f2f6319 100644 --- a/packages/editor/src/browser/resource.service.ts +++ b/packages/editor/src/browser/resource.service.ts @@ -1,5 +1,3 @@ -import { observable } from 'mobx'; - import { Autowired, Injectable } from '@opensumi/di'; import { IDisposable, OnEvent, URI, WithEventBus } from '@opensumi/ide-core-browser'; import { Disposable, Emitter, ILogger, LRUMap, arrays } from '@opensumi/ide-core-common'; @@ -100,7 +98,7 @@ export class ResourceServiceImpl extends WithEventBus implements ResourceService return null; } const resource = { - resource: observable(Object.assign({}, r.resource)), + resource: r.resource, provider: r.provider, }; this.resources.set(uri.toString(), resource); @@ -233,7 +231,7 @@ export class ResourceServiceImpl extends WithEventBus implements ResourceService public getResourceDecoration(uri: URI): IResourceDecoration { if (!this.resourceDecoration.has(uri.toString())) { - this.resourceDecoration.set(uri.toString(), observable(DefaultResourceDecoration)); + this.resourceDecoration.set(uri.toString(), { ...DefaultResourceDecoration }); } return this.resourceDecoration.get(uri.toString()) as IResourceDecoration; } diff --git a/packages/editor/src/browser/workbench-editor.service.ts b/packages/editor/src/browser/workbench-editor.service.ts index cbde99393a..3968589737 100644 --- a/packages/editor/src/browser/workbench-editor.service.ts +++ b/packages/editor/src/browser/workbench-editor.service.ts @@ -1,5 +1,3 @@ -import { observable } from 'mobx'; - import { Autowired, INJECTOR_TOKEN, Injectable, Injector } from '@opensumi/di'; import { AppConfig, @@ -729,7 +727,6 @@ export class EditorGroup extends WithEventBus implements IGridEditorGroup { private cachedResourcesOpenTypes = new Map(); - @observable.shallow availableOpenTypes: IEditorOpenType[] = []; activeComponents = new Map(); diff --git a/packages/electron-basic/src/browser/header/header.view.tsx b/packages/electron-basic/src/browser/header/header.view.tsx index 83451ad580..888a0df5c9 100644 --- a/packages/electron-basic/src/browser/header/header.view.tsx +++ b/packages/electron-basic/src/browser/header/header.view.tsx @@ -1,5 +1,4 @@ import cls from 'classnames'; -import { observer } from 'mobx-react-lite'; import React, { useEffect, useMemo, useRef, useState } from 'react'; import { @@ -130,65 +129,63 @@ interface ElectronHeaderBarPorps { /** * autoHide: Hide the HeaderBar when the macOS full screen */ -export const ElectronHeaderBar = observer( - ({ - LeftComponent, - RightComponent, - TitleComponent, - autoHide = true, - height, - }: React.PropsWithChildren) => { - const windowService: IWindowService = useInjectable(IWindowService); - const layoutViewSize = useInjectable(LayoutViewSizeConfig); - - const { isFullScreen } = useFullScreen(); - const { getMaximized } = useMaximize(); - if (!LeftComponent) { - LeftComponent = HeaderBarLeftComponent; - } - if (!RightComponent) { - RightComponent = HeaderBarRightComponent; - } - if (!TitleComponent) { - TitleComponent = HeaderBarTitleComponent; - } - - const safeHeight = useMemo(() => { - if (height) { - return height; - } +export const ElectronHeaderBar = ({ + LeftComponent, + RightComponent, + TitleComponent, + autoHide = true, + height, +}: React.PropsWithChildren) => { + const windowService: IWindowService = useInjectable(IWindowService); + const layoutViewSize = useInjectable(LayoutViewSizeConfig); - return layoutViewSize.calcElectronHeaderHeight(); - }, [layoutViewSize, height]); + const { isFullScreen } = useFullScreen(); + const { getMaximized } = useMaximize(); + if (!LeftComponent) { + LeftComponent = HeaderBarLeftComponent; + } + if (!RightComponent) { + RightComponent = HeaderBarRightComponent; + } + if (!TitleComponent) { + TitleComponent = HeaderBarTitleComponent; + } - // in Mac, hide the header bar if it is in full screen mode - if (isMacintosh && isFullScreen && autoHide) { - return ( -
-
- ); + const safeHeight = useMemo(() => { + if (height) { + return height; } + return layoutViewSize.calcElectronHeaderHeight(); + }, [layoutViewSize, height]); + + // in Mac, hide the header bar if it is in full screen mode + if (isMacintosh && isFullScreen && autoHide) { return ( -
{ - if (await getMaximized()) { - windowService.unmaximize(); - } else { - windowService.maximize(); - } - }} - > - - - +
+
); - }, -); + } + + return ( +
{ + if (await getMaximized()) { + windowService.unmaximize(); + } else { + windowService.maximize(); + } + }} + > + + + +
+ ); +}; declare const ResizeObserver: any; @@ -204,7 +201,7 @@ export interface TitleBarProps { hidden?: boolean; } -export const HeaderBarTitleComponent = observer(({ hidden }: TitleBarProps) => { +export const HeaderBarTitleComponent = ({ hidden }: TitleBarProps) => { const headerService = useInjectable(IElectronHeaderService) as IElectronHeaderService; const ref = useRef(null); const spanRef = useRef(null); @@ -270,4 +267,4 @@ export const HeaderBarTitleComponent = observer(({ hidden }: TitleBarProps) => { {appTitle}
); -}); +}; diff --git a/packages/extension-manager/package.json b/packages/extension-manager/package.json index e6d98ddbeb..32061e787b 100644 --- a/packages/extension-manager/package.json +++ b/packages/extension-manager/package.json @@ -25,6 +25,7 @@ "@opensumi/ide-editor": "workspace:*", "@opensumi/ide-main-layout": "workspace:*", "@opensumi/ide-markdown": "workspace:*", + "@opensumi/ide-monaco": "workspace:*", "@opensumi/ide-overlay": "workspace:*", "@opensumi/ide-theme": "workspace:*", "@types/node-fetch": "^2.6.1" diff --git a/packages/extension-manager/src/browser/vsx-extension.service.ts b/packages/extension-manager/src/browser/vsx-extension.service.ts index d6cca61ace..459ac283a8 100644 --- a/packages/extension-manager/src/browser/vsx-extension.service.ts +++ b/packages/extension-manager/src/browser/vsx-extension.service.ts @@ -1,5 +1,3 @@ -import { action, makeObservable, observable, runInAction } from 'mobx'; - import { Autowired, Injectable } from '@opensumi/di'; import { CommandService, @@ -15,6 +13,7 @@ import { import { WorkbenchEditorService } from '@opensumi/ide-editor/lib/browser'; import { ExtensionManagementService } from '@opensumi/ide-extension/lib/browser/extension-management.service'; import { AbstractExtInstanceManagementService } from '@opensumi/ide-extension/lib/browser/types'; +import { observableValue, transaction } from '@opensumi/ide-monaco/lib/common/observable'; import { IIconService, IProductIconService, IThemeService } from '@opensumi/ide-theme'; import { ICON_THEME_TOGGLE_COMMAND, @@ -57,14 +56,20 @@ export class VSXExtensionService extends Disposable implements IVSXExtensionServ @Autowired(CommandService) protected readonly commandService: CommandService; - @observable.shallow - public extensions: VSXExtension[] = observable.array([]); + public readonly extensionsObservable = observableValue(this, []); + get extensions() { + return this.extensionsObservable.get(); + } - @observable - public installedExtensions: VSXExtension[] = observable.array([]); + public readonly installedExtensionsObservable = observableValue(this, []); + get installedExtensions() { + return this.installedExtensionsObservable.get(); + } - @observable - public openVSXRegistry = ''; + public readonly openVSXRegistryObservable = observableValue(this, ''); + get openVSXRegistry() { + return this.openVSXRegistryObservable.get(); + } @Autowired(IStatusBarService) protected readonly statusBarService: IStatusBarService; @@ -72,12 +77,10 @@ export class VSXExtensionService extends Disposable implements IVSXExtensionServ private installStatus?: StatusBarEntryAccessor; private searchValue: string; - @observable private tasks: Map> = new Map(); constructor() { super(); - makeObservable(this); this.getInstalledExtensions(); this.disposables.push( this.extensionInstanceService.onDidChange(() => { @@ -200,7 +203,10 @@ export class VSXExtensionService extends Disposable implements IVSXExtensionServ } async getOpenVSXRegistry() { - this.openVSXRegistry = await this.backService.getOpenVSXRegistry(); + const res = await this.backService.getOpenVSXRegistry(); + transaction((tx) => { + this.openVSXRegistryObservable.set(res, tx); + }); } async openExtensionEditor(extensionId: string, state: InstallState) { @@ -220,38 +226,45 @@ export class VSXExtensionService extends Disposable implements IVSXExtensionServ const res = await this.backService.search(param); if (res.extensions) { - runInAction(() => { - this.extensions = res.extensions - .filter((ext) => !this.installedExtensions.find((e) => this.getExtensionId(e) === this.getExtensionId(ext))) - .map((ext) => ({ - ...ext, - publisher: ext.namespace, - iconUrl: ext.files.icon, - downloadUrl: ext.files.download, - readme: ext.files.readme, - })); + transaction((tx) => { + this.extensionsObservable.set( + res.extensions + .filter((ext) => !this.installedExtensions.find((e) => this.getExtensionId(e) === this.getExtensionId(ext))) + .map((ext) => ({ + ...ext, + publisher: ext.namespace, + iconUrl: ext.files.icon, + downloadUrl: ext.files.download, + readme: ext.files.readme, + })), + tx, + ); }); } } - @action async searchInstalledExtensions(keyword: string) { - this.installedExtensions = this.installedExtensions.sort((a, b) => { - const scoreA = fuzzyScore(keyword, keyword.toLowerCase(), 0, a.name, a.name.toLowerCase(), 0, true); - const scoreB = fuzzyScore(keyword, keyword.toLowerCase(), 0, b.name, b.name.toLowerCase(), 0, true); - if (!scoreA) { - return 1; - } - if (!scoreB) { - return -1; - } - return scoreB[0] - scoreA[0]; + transaction((tx) => { + const prev = this.installedExtensions; + this.installedExtensionsObservable.set( + prev.sort((a, b) => { + const scoreA = fuzzyScore(keyword, keyword.toLowerCase(), 0, a.name, a.name.toLowerCase(), 0, true); + const scoreB = fuzzyScore(keyword, keyword.toLowerCase(), 0, b.name, b.name.toLowerCase(), 0, true); + if (!scoreA) { + return 1; + } + if (!scoreB) { + return -1; + } + return scoreB[0] - scoreA[0]; + }), + tx, + ); }); } - @action getInstalledExtensions() { - this.installedExtensions = this.extensionInstanceService.getExtensionInstances().map((e) => { + const installedExtensions = this.extensionInstanceService.getExtensionInstances().map((e) => { const extensionId = e.extensionId; const namespace = extensionId && extensionId.includes('.') ? extensionId.split('.')[0] : e.packageJSON.publisher; @@ -268,5 +281,8 @@ export class VSXExtensionService extends Disposable implements IVSXExtensionServ realpath: e.realPath, }; }); + transaction((tx) => { + this.installedExtensionsObservable.set(installedExtensions, tx); + }); } } diff --git a/packages/extension-manager/src/browser/vsx-extension.view.tsx b/packages/extension-manager/src/browser/vsx-extension.view.tsx index c499399155..4416bf1aeb 100644 --- a/packages/extension-manager/src/browser/vsx-extension.view.tsx +++ b/packages/extension-manager/src/browser/vsx-extension.view.tsx @@ -1,10 +1,9 @@ import debounce from 'lodash/debounce'; -import { observer } from 'mobx-react-lite'; import * as React from 'react'; import { useCallback, useState } from 'react'; import { Tabs } from '@opensumi/ide-components'; -import { useInjectable } from '@opensumi/ide-core-browser'; +import { useAutorun, useInjectable } from '@opensumi/ide-core-browser'; import { Progress } from '@opensumi/ide-core-browser/lib/progress/progress-bar'; import { localize } from '@opensumi/ide-core-common'; import { AutoFocusedInput } from '@opensumi/ide-main-layout/lib/browser/input'; @@ -17,10 +16,14 @@ import styles from './vsx-extension.module.less'; const tabMap = [TabActiveKey.MARKETPLACE, TabActiveKey.INSTALLED]; -export const VSXExtensionView = observer(() => { +export const VSXExtensionView = () => { const [activeKey, setActiveKey] = useState(TabActiveKey.MARKETPLACE); const [loading, setLoading] = useState(false); + const vsxExtensionService = useInjectable(VSXExtensionServiceToken); + const extensions = useAutorun(vsxExtensionService.extensionsObservable); + const installedExtensions = useAutorun(vsxExtensionService.installedExtensionsObservable); + const openVSXRegistry = useAutorun(vsxExtensionService.openVSXRegistryObservable); const onChange = debounce((keyword: string) => { setLoading(true); @@ -71,33 +74,33 @@ export const VSXExtensionView = observer(() => { {activeKey === TabActiveKey.MARKETPLACE && (
- {vsxExtensionService.extensions.map((e: VSXExtension, index: number) => ( + {extensions.map((e: VSXExtension, index: number) => ( ))}
)} {activeKey === TabActiveKey.INSTALLED && (
- {vsxExtensionService.installedExtensions.map((e: VSXExtension, index: number) => ( + {installedExtensions.map((e: VSXExtension, index: number) => ( ))}
)} ); -}); +}; diff --git a/packages/extension-manager/src/common/index.ts b/packages/extension-manager/src/common/index.ts index eb79474978..e284a969e4 100644 --- a/packages/extension-manager/src/common/index.ts +++ b/packages/extension-manager/src/common/index.ts @@ -1,3 +1,5 @@ +import { IObservable } from '@opensumi/ide-monaco/lib/common/observable'; + import { QueryParam, QueryResult, VSXExtensionRaw, VSXSearchParam, VSXSearchResult } from './vsx-registry-types'; export enum EnableScope { @@ -85,8 +87,13 @@ export interface IVSXExtensionService { openExtensionEditor(extensionId: string, state: InstallState): Promise; extensions: VSXExtension[]; + extensionsObservable: IObservable; + installedExtensions: VSXExtension[]; + installedExtensionsObservable: IObservable; + openVSXRegistry: string; + openVSXRegistryObservable: IObservable; } export const VSXExtensionServicePath = 'VSXExtensionServicePath'; diff --git a/packages/extension/__tests__/browser/main.thread.statusbar.test.ts b/packages/extension/__tests__/browser/main.thread.statusbar.test.ts index 6b858b64e1..62d78562d6 100644 --- a/packages/extension/__tests__/browser/main.thread.statusbar.test.ts +++ b/packages/extension/__tests__/browser/main.thread.statusbar.test.ts @@ -65,8 +65,8 @@ describe('MainThreadStatusBar API Test Suites', () => { statusbar.tooltip = 'testtooltip'; setTimeout(() => { - expect(statusbarService.rightEntries.length).toBe(1); - const mainthreadStatusbarItem = statusbarService.rightEntries[0]; + expect(statusbarService.rightEntries.get().length).toBe(1); + const mainthreadStatusbarItem = statusbarService.rightEntries.get()[0]; expect(mainthreadStatusbarItem.text).toBe('test1'); expect(mainthreadStatusbarItem.alignment).toBe(1); expect(mainthreadStatusbarItem.color).toBe('#ff004f'); @@ -96,7 +96,7 @@ describe('MainThreadStatusBar API Test Suites', () => { statusbar.command = 'test:statusbar'; statusbar.show(); setTimeout(() => { - const mainthreadStatusbarItem = statusbarService.leftEntries[0]; + const mainthreadStatusbarItem = statusbarService.leftEntries.get()[0]; if (mainthreadStatusbarItem.onClick) { mainthreadStatusbarItem.onClick({}); } diff --git a/packages/extension/src/browser/components/extension-tree-view.tsx b/packages/extension/src/browser/components/extension-tree-view.tsx index da6759a225..cd1dab2cd0 100644 --- a/packages/extension/src/browser/components/extension-tree-view.tsx +++ b/packages/extension/src/browser/components/extension-tree-view.tsx @@ -1,4 +1,3 @@ -import { observer } from 'mobx-react-lite'; import React, { DragEvent, MouseEvent, @@ -34,187 +33,190 @@ export interface ExtensionTabBarTreeViewProps { treeViewId: string; } -export const ExtensionTabBarTreeView = observer( - ({ viewState, model, dataProvider, treeViewId }: PropsWithChildren) => { - const layoutService = useInjectable(IMainLayoutService); - const decorationService = useInjectable(IDecorationsService); - const accordionService = useMemo(() => layoutService.getViewAccordionService(treeViewId), []); - - const isVisible = useMemo(() => { - const state = accordionService?.getViewState(treeViewId); - if (!state) { - return false; - } - return !state.collapsed && !state.hidden; - }, [accordionService]); - - const { height } = viewState; - const { canSelectMany } = model.treeViewOptions || {}; - const wrapperRef = useRef(null); - - const handleTreeReady = useCallback( - (handle: IRecycleTreeHandle) => { - model.handleTreeHandler({ - ...handle, - getModel: () => model.treeModel, - hasDirectFocus: () => wrapperRef.current === document.activeElement, - }); - }, - [model], - ); +export const ExtensionTabBarTreeView = ({ + viewState, + model, + dataProvider, + treeViewId, +}: PropsWithChildren) => { + const layoutService = useInjectable(IMainLayoutService); + const decorationService = useInjectable(IDecorationsService); + const accordionService = useMemo(() => layoutService.getViewAccordionService(treeViewId), []); + + const isVisible = useMemo(() => { + const state = accordionService?.getViewState(treeViewId); + if (!state) { + return false; + } + return !state.collapsed && !state.hidden; + }, [accordionService]); + + const { height } = viewState; + const { canSelectMany } = model.treeViewOptions || {}; + const wrapperRef = useRef(null); + + const handleTreeReady = useCallback( + (handle: IRecycleTreeHandle) => { + model.handleTreeHandler({ + ...handle, + getModel: () => model.treeModel, + hasDirectFocus: () => wrapperRef.current === document.activeElement, + }); + }, + [model], + ); - const handleTwistierClick = useCallback( - (ev: MouseEvent, item: ExtensionCompositeTreeNode) => { - // 阻止点击事件冒泡 - ev.stopPropagation(); + const handleTwistierClick = useCallback( + (ev: MouseEvent, item: ExtensionCompositeTreeNode) => { + // 阻止点击事件冒泡 + ev.stopPropagation(); - const { toggleDirectory } = model; + const { toggleDirectory } = model; - toggleDirectory(item); - }, - [model], - ); + toggleDirectory(item); + }, + [model], + ); - const hasShiftMask = useCallback((event): boolean => { - // Ctrl/Cmd 权重更高 - if (hasCtrlCmdMask(event)) { - return false; + const hasShiftMask = useCallback((event): boolean => { + // Ctrl/Cmd 权重更高 + if (hasCtrlCmdMask(event)) { + return false; + } + return event.shiftKey; + }, []); + + const hasCtrlCmdMask = useCallback((event): boolean => { + const { metaKey, ctrlKey } = event; + return (isOSX && metaKey) || ctrlKey; + }, []); + + const handleItemClicked = useCallback( + (ev: MouseEvent, item: ExtensionTreeNode | ExtensionCompositeTreeNode, type: TreeNodeType) => { + // 阻止点击事件冒泡 + ev.stopPropagation(); + + const { handleItemClick, handleItemToggleClick, handleItemRangeClick } = model; + if (!item) { + return; } - return event.shiftKey; - }, []); - - const hasCtrlCmdMask = useCallback((event): boolean => { - const { metaKey, ctrlKey } = event; - return (isOSX && metaKey) || ctrlKey; - }, []); - - const handleItemClicked = useCallback( - (ev: MouseEvent, item: ExtensionTreeNode | ExtensionCompositeTreeNode, type: TreeNodeType) => { - // 阻止点击事件冒泡 - ev.stopPropagation(); - - const { handleItemClick, handleItemToggleClick, handleItemRangeClick } = model; - if (!item) { - return; - } - const shiftMask = hasShiftMask(event); - const ctrlCmdMask = hasCtrlCmdMask(event); - if (canSelectMany) { - if (shiftMask) { - handleItemRangeClick(item, type); - } else if (ctrlCmdMask) { - handleItemToggleClick(item, type); - } else { - handleItemClick(item, type); - } + const shiftMask = hasShiftMask(event); + const ctrlCmdMask = hasCtrlCmdMask(event); + if (canSelectMany) { + if (shiftMask) { + handleItemRangeClick(item, type); + } else if (ctrlCmdMask) { + handleItemToggleClick(item, type); } else { handleItemClick(item, type); } - }, - [canSelectMany, model], - ); - - const handleContextMenu = useCallback( - (ev: MouseEvent, node: ExtensionTreeNode | ExtensionCompositeTreeNode) => { - const { handleContextMenu } = model; - handleContextMenu(ev, node); - }, - [model], - ); + } else { + handleItemClick(item, type); + } + }, + [canSelectMany, model], + ); - const handleOuterContextMenu = (ev: MouseEvent) => { + const handleContextMenu = useCallback( + (ev: MouseEvent, node: ExtensionTreeNode | ExtensionCompositeTreeNode) => { const { handleContextMenu } = model; - // 空白区域右键菜单 - handleContextMenu(ev); - }; + handleContextMenu(ev, node); + }, + [model], + ); - const handleOuterClick = useCallback(() => { - // 空白区域点击,取消焦点状态 - const { enactiveNodeDecoration } = model; - enactiveNodeDecoration(); - }, [model]); - - const handleDragStart = useCallback( - (ev: DragEvent, node: ExtensionTreeNode | ExtensionCompositeTreeNode) => { - const { handleDragStart } = model; - handleDragStart(ev, node); - }, - [model], - ); + const handleOuterContextMenu = (ev: MouseEvent) => { + const { handleContextMenu } = model; + // 空白区域右键菜单 + handleContextMenu(ev); + }; + + const handleOuterClick = useCallback(() => { + // 空白区域点击,取消焦点状态 + const { enactiveNodeDecoration } = model; + enactiveNodeDecoration(); + }, [model]); + + const handleDragStart = useCallback( + (ev: DragEvent, node: ExtensionTreeNode | ExtensionCompositeTreeNode) => { + const { handleDragStart } = model; + handleDragStart(ev, node); + }, + [model], + ); - const handleDragOver = useCallback( - (ev: DragEvent, node: ExtensionTreeNode | ExtensionCompositeTreeNode) => { - const { handleDragOver } = model; - handleDragOver(ev, node); - }, - [model], - ); + const handleDragOver = useCallback( + (ev: DragEvent, node: ExtensionTreeNode | ExtensionCompositeTreeNode) => { + const { handleDragOver } = model; + handleDragOver(ev, node); + }, + [model], + ); - const handleDragEnter = useCallback( - (ev: DragEvent, node: ExtensionTreeNode | ExtensionCompositeTreeNode) => { - const { handleDragEnter } = model; - handleDragEnter(ev, node); - }, - [model], - ); + const handleDragEnter = useCallback( + (ev: DragEvent, node: ExtensionTreeNode | ExtensionCompositeTreeNode) => { + const { handleDragEnter } = model; + handleDragEnter(ev, node); + }, + [model], + ); - const handleDrop = useCallback( - (ev: DragEvent, node: ExtensionTreeNode | ExtensionCompositeTreeNode) => { - const { handleDrop } = model; - handleDrop(ev, node); - }, - [model], - ); + const handleDrop = useCallback( + (ev: DragEvent, node: ExtensionTreeNode | ExtensionCompositeTreeNode) => { + const { handleDrop } = model; + handleDrop(ev, node); + }, + [model], + ); - const handleDragLeave = useCallback( - (ev: DragEvent, node: ExtensionTreeNode | ExtensionCompositeTreeNode) => { - const { handleDragLeave } = model; - handleDragLeave(ev, node); - }, - [model], - ); + const handleDragLeave = useCallback( + (ev: DragEvent, node: ExtensionTreeNode | ExtensionCompositeTreeNode) => { + const { handleDragLeave } = model; + handleDragLeave(ev, node); + }, + [model], + ); - useEffect(() => { - const handleBlur = () => { - model.handleTreeBlur(); - }; - wrapperRef.current?.addEventListener('blur', handleBlur, true); - return () => { - wrapperRef.current?.removeEventListener('blur', handleBlur, true); - }; - }, [wrapperRef.current]); - - return ( -
- -
- ); - }, -); + useEffect(() => { + const handleBlur = () => { + model.handleTreeBlur(); + }; + wrapperRef.current?.addEventListener('blur', handleBlur, true); + return () => { + wrapperRef.current?.removeEventListener('blur', handleBlur, true); + }; + }, [wrapperRef.current]); + + return ( +
+ +
+ ); +}; interface TreeViewProps { isVisible: boolean; diff --git a/packages/extension/src/browser/vscode/api/main.thread.comments.ts b/packages/extension/src/browser/vscode/api/main.thread.comments.ts index 8c6722a048..6acb7d73b4 100644 --- a/packages/extension/src/browser/vscode/api/main.thread.comments.ts +++ b/packages/extension/src/browser/vscode/api/main.thread.comments.ts @@ -23,6 +23,7 @@ import { isUndefined, } from '@opensumi/ide-core-common'; import { positionToRange } from '@opensumi/ide-monaco'; +import { transaction } from '@opensumi/ide-monaco/lib/common/observable'; import { CommentInput, CommentThread, @@ -242,11 +243,13 @@ export class MainThreadCommentThread extends Disposable implements CommentThread } get label(): string | undefined { - return this._thread.label; + return this._thread.label?.get(); } set label(label: string | undefined) { - this._thread.label = label; + transaction((tx) => { + this._thread.label?.set(label, tx); + }); this._onDidChangeLabel.fire(label); } @@ -311,7 +314,7 @@ export class MainThreadCommentThread extends Disposable implements CommentThread } public get comments(): CoreComment[] | undefined { - return this._thread.comments.map((comment) => this.convertToCoreComment(comment)); + return this._thread.comments.get().map((comment) => this.convertToCoreComment(comment)); } public set comments(newComments: CoreComment[] | undefined) { @@ -343,12 +346,12 @@ export class MainThreadCommentThread extends Disposable implements CommentThread return this._onDidChangeCanReply.event; } set canReply(state: boolean) { - this._thread.readOnly = !state; + this._thread.setReadOnly(!state); this._onDidChangeCanReply.fire(state); } get canReply() { - return !this._thread.readOnly; + return !this._thread.readOnly.get(); } private readonly _onDidChangeRange = new Emitter(); @@ -356,11 +359,15 @@ export class MainThreadCommentThread extends Disposable implements CommentThread private _collapsibleState: CommentThreadCollapsibleState | undefined; get collapsibleState() { - return this._thread.isCollapsed ? CommentThreadCollapsibleState.Collapsed : CommentThreadCollapsibleState.Expanded; + return this._thread.isCollapsed.get() + ? CommentThreadCollapsibleState.Collapsed + : CommentThreadCollapsibleState.Expanded; } set collapsibleState(newState: CommentThreadCollapsibleState | undefined) { - this._thread.isCollapsed = newState === CommentThreadCollapsibleState.Collapsed; + transaction((tx) => { + this._thread.isCollapsed.set(newState === CommentThreadCollapsibleState.Collapsed, tx); + }); this._onDidChangeCollasibleState.fire(this._collapsibleState); } diff --git a/packages/extension/src/browser/vscode/contributes/actions.ts b/packages/extension/src/browser/vscode/contributes/actions.ts index 3062e39f4c..88d113fe91 100644 --- a/packages/extension/src/browser/vscode/contributes/actions.ts +++ b/packages/extension/src/browser/vscode/contributes/actions.ts @@ -5,7 +5,6 @@ import { IToolbarActionService, } from '@opensumi/ide-core-browser/lib/menu/next/toolbar-action.service'; import { LifeCyclePhase } from '@opensumi/ide-core-common'; -import { IToolBarViewService } from '@opensumi/ide-toolbar/lib/browser'; import { Contributes, LifeCycle, VSCodeContributePoint } from '../../../common'; @@ -32,9 +31,6 @@ export type ActionContributionSchema = Array { - @Autowired(IToolBarViewService) - toolbarViewService: IToolBarViewService; - @Autowired(CommandService) private readonly commandService: CommandService; diff --git a/packages/main-layout/__tests__/browser/layout.service.test.tsx b/packages/main-layout/__tests__/browser/layout.service.test.tsx index bf2edda69d..a5e48b20cf 100644 --- a/packages/main-layout/__tests__/browser/layout.service.test.tsx +++ b/packages/main-layout/__tests__/browser/layout.service.test.tsx @@ -279,13 +279,13 @@ describe('main layout test', () => { act(() => { handler.activate(); }); - expect(tabbarService.currentContainerId).toEqual(testContainerId2); + expect(tabbarService.currentContainerId.get()).toEqual(testContainerId2); expect(handler.isActivated()).toBeTruthy(); act(() => { handler.deactivate(); }); expect(handler.isActivated()).toBeFalsy(); - expect(tabbarService.currentContainerId).toEqual(''); + expect(tabbarService.currentContainerId.get()).toEqual(''); act(() => { handler.disposeView('test-view-id4'); }); @@ -428,11 +428,11 @@ describe('main layout test', () => { it('toggle slot should work', async () => { const rightTabbarService = service.getTabbarService('right'); // currentContainerId 空字符串表示当前未选中任何tab - expect(rightTabbarService.currentContainerId).toEqual(''); + expect(rightTabbarService.currentContainerId.get()).toEqual(''); act(() => { service.toggleSlot('right'); }); - expect(rightTabbarService.currentContainerId).toBeTruthy(); + expect(rightTabbarService.currentContainerId.get()).toBeTruthy(); // panel visible expect((document.getElementsByClassName(testContainerId)[0] as HTMLDivElement).style.display).toEqual('block'); }); diff --git a/packages/main-layout/package.json b/packages/main-layout/package.json index 5a0223716d..c9f9c4099d 100644 --- a/packages/main-layout/package.json +++ b/packages/main-layout/package.json @@ -24,6 +24,7 @@ "@opensumi/ide-theme": "workspace:*" }, "devDependencies": { - "@opensumi/ide-dev-tool": "workspace:*" + "@opensumi/ide-dev-tool": "workspace:*", + "@opensumi/ide-monaco": "workspace:*" } } diff --git a/packages/main-layout/src/browser/accordion/accordion.service.ts b/packages/main-layout/src/browser/accordion/accordion.service.ts index bf727086cb..60ad9d83eb 100644 --- a/packages/main-layout/src/browser/accordion/accordion.service.ts +++ b/packages/main-layout/src/browser/accordion/accordion.service.ts @@ -1,6 +1,5 @@ import debounce from 'lodash/debounce'; import isEqual from 'lodash/isEqual'; -import { action, makeObservable, observable, runInAction } from 'mobx'; import { Autowired, Injectable } from '@opensumi/di'; import { @@ -37,6 +36,12 @@ import { MenuId, } from '@opensumi/ide-core-browser/lib/menu/next'; import { IProgressService } from '@opensumi/ide-core-browser/lib/progress'; +import { + derived, + observableValue, + recomputeInitiallyAndOnChange, + transaction, +} from '@opensumi/ide-monaco/lib/common/observable'; import { IMainLayoutService, ViewCollapseChangedEvent } from '../../common'; @@ -104,19 +109,30 @@ export class AccordionService extends WithEventBus { // 所有带contextKey视图 private viewsWithContextKey = new Set(); - @observable.shallow - views: View[] = []; + private readonly viewsObservable = observableValue(this, []); + get views() { + return this.viewsObservable.get(); + } - @observable - state: { [viewId: string]: SectionState } = {}; + public readonly stateObservable = observableValue<{ [viewId: string]: SectionState }>(this, {}); + private get state() { + return this.stateObservable.get(); + } - rendered = false; + readonly visibleViews = derived(this, (reader) => { + const views = this.viewsObservable.read(reader); + this.stateObservable.read(reader); + return views.filter((view) => { + const viewState = this.getViewState(view.id); + return !viewState.hidden; + }); + }); + private rendered = false; private headerSize: number; private minSize: number; private menuId = `${MenuId.AccordionContext}/${this.containerId}`; private toDispose: Map = new Map(); - private topViewKey: IContextKey; private scopedCtxKeyService: IScopedContextKeyService; @@ -136,7 +152,8 @@ export class AccordionService extends WithEventBus { constructor(public containerId: string, private noRestore?: boolean) { super(); - makeObservable(this); + this.addDispose(recomputeInitiallyAndOnChange(this.visibleViews)); + this.splitPanelService = this.splitPanelManager.getService(containerId); this.addDispose(this.splitPanelService); @@ -169,7 +186,6 @@ export class AccordionService extends WithEventBus { }); } - @action updateViewTitle(viewId: string, title: string) { const view = this.views.find((view) => view.id === viewId); if (view) { @@ -180,7 +196,6 @@ export class AccordionService extends WithEventBus { } } - @action updateViewDesciption(viewId: string, desc: string) { const view = this.views.find((view) => view.id === viewId); if (view) { @@ -191,7 +206,6 @@ export class AccordionService extends WithEventBus { } } - @action updateViewMessage(viewId: string, msg: string) { const view = this.views.find((view) => view.id === viewId); if (view) { @@ -202,7 +216,6 @@ export class AccordionService extends WithEventBus { } } - @action updateViewBadge(viewId: string, badge: string) { const view = this.views.find((view) => view.id === viewId); if (view) { @@ -217,16 +230,17 @@ export class AccordionService extends WithEventBus { this.doUpdateResize(); } - @action restoreState() { if (this.noRestore) { return; } const defaultState: { [containerId: string]: SectionState } = {}; - this.visibleViews.forEach((view) => (defaultState[view.id] = { collapsed: false, hidden: false })); + this.visibleViews.get().forEach((view) => (defaultState[view.id] = { collapsed: false, hidden: false })); const restoredState = this.layoutState.getState(LAYOUT_STATE.getContainerSpace(this.containerId), defaultState); if (!isEqual(restoredState, defaultState)) { - this.state = restoredState; + transaction((tx) => { + this.stateObservable.set({ ...restoredState }, tx); + }); } this.popViewKeyIfOnlyOneViewVisible(); this.splitPanelService.whenReady.then(() => { @@ -236,12 +250,11 @@ export class AccordionService extends WithEventBus { } // 调用时需要保证dom可见 - @action restoreSize() { // 计算存储总高度与当前窗口总高度差,加到最后一个展开的面板 let availableSize = this.splitPanelService.rootNode?.clientHeight || 0; let finalUncollapsedIndex: number | undefined; - this.visibleViews.forEach((view, index) => { + this.visibleViews.get().forEach((view, index) => { const savedState = this.state[view.id]; if (savedState.collapsed) { this.setSize(index, 0, false, true); @@ -253,10 +266,8 @@ export class AccordionService extends WithEventBus { } }); if (finalUncollapsedIndex) { - this.setSize( - finalUncollapsedIndex, - this.state[this.visibleViews[finalUncollapsedIndex].id].size! + availableSize, - ); + const view = this.visibleViews.get()[finalUncollapsedIndex]; + this.setSize(finalUncollapsedIndex, this.state[view.id].size! + availableSize); } } @@ -287,17 +298,19 @@ export class AccordionService extends WithEventBus { return menu; } - @action private updateView(view: View) { - if (view.priority) { - const index = this.views.findIndex((value) => (value.priority || 0) < (view.priority || 0)); - this.views.splice(index === -1 ? this.views.length : index, 0, view); - } else { - this.views.push(view); - } + transaction((tx) => { + const preViews = this.views; + if (view.priority) { + const index = preViews.findIndex((value) => (value.priority || 0) < (view.priority || 0)); + preViews.splice(index === -1 ? preViews.length : index, 0, view); + this.viewsObservable.set([...preViews], tx); + } else { + this.viewsObservable.set([...preViews, view], tx); + } + }); } - @action appendView(view: View, replace?: boolean) { if (this.appendedViewSet.has(view.id) && !replace) { return; @@ -307,7 +320,11 @@ export class AccordionService extends WithEventBus { // 已存在的viewId直接替换 const existIndex = this.views.findIndex((item) => item.id === view.id); if (existIndex !== -1) { - this.views[existIndex] = Object.assign({}, this.views[existIndex], view); + transaction((tx) => { + const preView = this.views; + preView[existIndex] = Object.assign({}, preView[existIndex], view); + this.viewsObservable.set([...preView], tx); + }); return; } // 带contextKey视图需要先判断下 @@ -343,11 +360,14 @@ export class AccordionService extends WithEventBus { this.afterAppendViewEmitter.fire(view.id); } - @action disposeView(viewId: string) { const existIndex = this.views.findIndex((item) => item.id === viewId); if (existIndex > -1) { - this.views.splice(existIndex, 1); + transaction((tx) => { + const preViews = this.views; + preViews.splice(existIndex, 1); + this.viewsObservable.set([...preViews], tx); + }); } const disposable = this.toDispose.get(viewId); if (disposable) { @@ -365,15 +385,15 @@ export class AccordionService extends WithEventBus { } } - @action disposeAll() { - this.views = observable.array([]); + transaction((tx) => { + this.viewsObservable.set([], tx); + }); this.toDispose.forEach((disposable) => { disposable.dispose(); }); } - @action @OnEvent(ResizeEvent) protected onResize(e: ResizeEvent) { // 监听来自resize组件的事件 @@ -384,7 +404,11 @@ export class AccordionService extends WithEventBus { // get dom of viewId const sectionDom = document.getElementById(id); if (sectionDom) { - this.state[id].size = sectionDom.clientHeight; + const preState = this.state; + preState[id].size = sectionDom.clientHeight; + transaction((tx) => { + this.stateObservable.set({ ...preState }, tx); + }); this.storeState(); } }); @@ -410,8 +434,10 @@ export class AccordionService extends WithEventBus { if (this.splitPanelService.rootNode?.clientHeight) { const diffSize = this.splitPanelService.rootNode?.clientHeight - this.getPanelFullHeight(); if (diffSize) { - runInAction(() => { - this.state[largestViewId!].size! += diffSize; + const preState = this.state; + preState[largestViewId!].size! += diffSize; + transaction((tx) => { + this.stateObservable.set({ ...preState }, tx); }); this.toggleOpen(largestViewId!, false); } @@ -461,7 +487,7 @@ export class AccordionService extends WithEventBus { execute: ({ viewId }: { viewId: string }) => { this.doToggleView(viewId); }, - isEnabled: () => this.visibleViews.length > 1, + isEnabled: () => this.visibleViews.get().length > 1, }, ); return commandId; @@ -485,7 +511,7 @@ export class AccordionService extends WithEventBus { }, isEnabled: () => { const state = this.getViewState(viewId); - return state.hidden || this.visibleViews.length > 1; + return state.hidden || this.visibleViews.get().length > 1; }, }, ), @@ -494,7 +520,6 @@ export class AccordionService extends WithEventBus { return commandId; } - @action protected doToggleView(viewId: string, forceShow?: boolean) { const state = this.getViewState(viewId); let nextState: boolean; @@ -514,7 +539,7 @@ export class AccordionService extends WithEventBus { // 可能还没初始化 return; } - const visibleViews = this.visibleViews; + const visibleViews = this.visibleViews.get(); if (visibleViews.length === 1) { this.topViewKey.set(visibleViews[0].id); } else { @@ -526,13 +551,6 @@ export class AccordionService extends WithEventBus { this.doToggleView(viewId, show); } - get visibleViews(): View[] { - return this.views.filter((view) => { - const viewState = this.getViewState(view.id); - return !viewState.hidden; - }); - } - get expandedViews(): View[] { return this.views.filter((view) => { const viewState = this.state[view.id]; @@ -541,7 +559,7 @@ export class AccordionService extends WithEventBus { } toggleOpen(viewId: string, collapsed: boolean) { - const index = this.visibleViews.findIndex((view) => view.id === viewId); + const index = this.visibleViews.get().findIndex((view) => view.id === viewId); if (index > -1) { this.doToggleOpen(viewId, collapsed, index, true); } @@ -579,15 +597,17 @@ export class AccordionService extends WithEventBus { return viewState; } - @action public updateViewState(viewId: string, state: SectionState) { - this.state[viewId] = state; + const preState = this.state; + preState[viewId] = state; + transaction((tx) => { + this.stateObservable.set({ ...preState }, tx); + }); } - @action protected doToggleOpen(viewId: string, collapsed: boolean, index: number, noAnimation?: boolean) { const viewState = this.getViewState(viewId); - viewState.collapsed = collapsed; + this.updateViewState(viewId, { ...viewState, collapsed }); const container = this.mainLayoutService.getContainer(this.containerId)!; if (container?.options?.alignment !== 'horizontal') { @@ -605,8 +625,8 @@ export class AccordionService extends WithEventBus { } // 下方视图被影响的情况下,上方视图不会同时变化,该情况会在sizeIncrement=0上体现 // 从视图下方最后一个展开的视图起依次减去对应的高度 - for (let i = this.visibleViews.length - 1; i > index; i--) { - if (this.getViewState(this.visibleViews[i].id).collapsed !== true) { + for (let i = this.visibleViews.get().length - 1; i > index; i--) { + if (this.getViewState(this.visibleViews.get()[i].id).collapsed !== true) { sizeIncrement = this.setSize(i, sizeIncrement, true, noAnimation); } else { this.setSize(i, 0, false, noAnimation); @@ -614,7 +634,7 @@ export class AccordionService extends WithEventBus { } // 找到视图上方首个展开的视图减去对应的高度 for (let i = index - 1; i >= 0; i--) { - if ((this.state[this.visibleViews[i].id] || {}).collapsed !== true) { + if ((this.state[this.visibleViews.get()[i].id] || {}).collapsed !== true) { sizeIncrement = this.setSize(i, sizeIncrement, true, noAnimation); } else { this.setSize(i, 0, false, noAnimation); @@ -625,43 +645,48 @@ export class AccordionService extends WithEventBus { this.eventBus.fire( new ViewCollapseChangedEvent({ viewId, - collapsed: viewState.collapsed, + collapsed, }), ); } - @action protected setSize(index: number, targetSize: number, isIncrement?: boolean, noAnimation?: boolean): number { + const view = this.visibleViews.get()[index]; const fullHeight = this.splitPanelService.rootNode?.clientHeight; const panel = this.splitPanelService.panels[index]; + if (!noAnimation) { panel.classList.add('resize-ease'); } + if (!targetSize && !isIncrement) { targetSize = this.headerSize; panel.classList.add(RESIZE_LOCK); } else { panel.classList.remove(RESIZE_LOCK); } + // clientHeight会被上次展开的元素挤掉 const prevSize = panel.clientHeight; - const viewState = this.getViewState(this.visibleViews[index].id); + const viewState = this.getViewState(view.id); let calcTargetSize: number = targetSize; // 视图即将折叠时、受其他视图影响尺寸变化时、主动展开时、resize时均需要存储尺寸信息 if (isIncrement) { calcTargetSize = Math.max(prevSize - targetSize, this.minSize); } + if (index === this.expandedViews.length - 1 && isDefined(fullHeight)) { // 最后一个视图需要兼容最大高度超出总视图高度及最大高度不足总视图高度的情况 if (calcTargetSize + index * this.minSize > fullHeight) { calcTargetSize -= calcTargetSize + index * this.minSize - fullHeight; } else { - const restSize = this.getPanelFullHeight(this.visibleViews[index].id); + const restSize = this.getPanelFullHeight(view.id); if (calcTargetSize + restSize < fullHeight) { calcTargetSize += fullHeight - (calcTargetSize + restSize); } } } + if (this.rendered) { let toSaveSize: number; if (targetSize === this.headerSize) { @@ -675,20 +700,23 @@ export class AccordionService extends WithEventBus { viewState.size = toSaveSize; } } + this.storeState(); viewState.nextSize = calcTargetSize; + if (!noAnimation) { setTimeout(() => { // 动画 0.1s,保证结束后移除 panel.classList.remove('resize-ease'); }, 200); } + return isIncrement ? calcTargetSize - (prevSize - targetSize) : targetSize - prevSize; } protected getAvailableSize() { const fullHeight = this.splitPanelService.rootNode?.clientHeight; - return fullHeight ? fullHeight - (this.visibleViews.length - 1) * this.headerSize : 0; + return fullHeight ? fullHeight - (this.visibleViews.get().length - 1) * this.headerSize : 0; } private handleContextKeyChange() { diff --git a/packages/main-layout/src/browser/accordion/accordion.view.tsx b/packages/main-layout/src/browser/accordion/accordion.view.tsx index d5743cde89..6ab2a672dd 100644 --- a/packages/main-layout/src/browser/accordion/accordion.view.tsx +++ b/packages/main-layout/src/browser/accordion/accordion.view.tsx @@ -1,7 +1,6 @@ -import { observer } from 'mobx-react-lite'; import React, { useMemo } from 'react'; -import { View, useInjectable } from '@opensumi/ide-core-browser'; +import { View, useAutorun, useInjectable } from '@opensumi/ide-core-browser'; import { EDirection, Layout, SplitPanel } from '@opensumi/ide-core-browser/lib/components'; import { LayoutViewSizeConfig } from '@opensumi/ide-core-browser/lib/layout/constants'; import { replaceLocalizePlaceholder } from '@opensumi/ide-core-common'; @@ -21,83 +20,87 @@ interface AccordionContainerProps { style?: React.CSSProperties; } -export const AccordionContainer = observer( - ({ - alignment = 'vertical', - views, - containerId, - headerSize = 24, - minSize = 120, - className, - noRestore, - style, - }: AccordionContainerProps) => { - const accordionService: AccordionService = useInjectable(AccordionServiceFactory)(containerId, noRestore); - const layoutViewSize = useInjectable(LayoutViewSizeConfig); +export const AccordionContainer = ({ + alignment = 'vertical', + views, + containerId, + headerSize = 24, + minSize = 120, + className, + noRestore, + style, +}: AccordionContainerProps) => { + const layoutViewSize = useInjectable(LayoutViewSizeConfig); - const layoutHeaderSize = useMemo(() => headerSize || layoutViewSize.accordionHeaderSizeHeight!, [headerSize]); + const accordionService: AccordionService = useInjectable(AccordionServiceFactory)(containerId, noRestore); + const visibleViews = useAutorun(accordionService.visibleViews); - React.useEffect(() => { - // 解决视图在渲染前注册的问题 - if (!views.length) { - return; - } - for (const view of views) { - accordionService.appendView(view); - } - }, [views]); - React.useEffect(() => { - accordionService.initConfig({ headerSize: layoutHeaderSize, minSize }); - }, []); + useAutorun(accordionService.stateObservable); - return ( - - {accordionService.visibleViews.map((view, index) => { - const viewState: SectionState = accordionService.getViewState(view.id); - const titleMenu = view.titleMenu || accordionService.getSectionToolbarMenu(view.id); - const { collapsed, nextSize } = viewState; - return ( - { - accordionService.handleSectionClick(view.id, !collapsed, index); - }} - onContextMenuHandler={accordionService.handleContextMenu} - alignment={alignment as Layout.alignment} - header={(view.name && replaceLocalizePlaceholder(view.name)) || view.id} - viewId={view.id} - key={view.id} - message={view.message} - description={view.description} - badge={view.badge} - title={view.name} - expanded={!collapsed} - accordionService={accordionService} - index={index} - headerSize={headerSize} - minSize={headerSize} - initialProps={view.initialProps} - titleMenu={titleMenu} - titleMenuContext={view.titleMenuContext} - savedSize={collapsed ? headerSize : nextSize} - flex={view.weight || 1} - > - {view.component} - - ); - })} - - ); - }, -); + const layoutHeaderSize = useMemo(() => headerSize || layoutViewSize.accordionHeaderSizeHeight!, [headerSize]); + + React.useEffect(() => { + // 解决视图在渲染前注册的问题 + if (!views.length) { + return; + } + for (const view of views) { + accordionService.appendView(view); + } + }, [views]); + + React.useEffect(() => { + accordionService.initConfig({ headerSize: layoutHeaderSize, minSize }); + }, []); + + return ( + + {visibleViews.map((view, index) => { + const viewState: SectionState = accordionService.getViewState(view.id); + const titleMenu = view.titleMenu || accordionService.getSectionToolbarMenu(view.id); + const { collapsed, nextSize } = viewState; + + return ( + { + accordionService.handleSectionClick(view.id, !collapsed, index); + }} + onContextMenuHandler={accordionService.handleContextMenu} + alignment={alignment as Layout.alignment} + header={(view.name && replaceLocalizePlaceholder(view.name)) || view.id} + viewId={view.id} + key={view.id} + message={view.message} + description={view.description} + badge={view.badge} + title={view.name} + expanded={!collapsed} + accordionService={accordionService} + index={index} + headerSize={headerSize} + minSize={headerSize} + initialProps={view.initialProps} + titleMenu={titleMenu} + titleMenuContext={view.titleMenuContext} + savedSize={collapsed ? headerSize : nextSize} + flex={view.weight || 1} + > + {view.component} + + ); + })} + + ); +}; AccordionContainer.displayName = 'AccordionContainer'; diff --git a/packages/main-layout/src/browser/accordion/section.view.tsx b/packages/main-layout/src/browser/accordion/section.view.tsx index e12658cd3b..61f0dfb2ed 100644 --- a/packages/main-layout/src/browser/accordion/section.view.tsx +++ b/packages/main-layout/src/browser/accordion/section.view.tsx @@ -1,7 +1,14 @@ import cls from 'classnames'; import React from 'react'; -import { ErrorBoundary, getIcon, useDesignStyles, useInjectable, useViewState } from '@opensumi/ide-core-browser'; +import { + ErrorBoundary, + getIcon, + useAutorun, + useDesignStyles, + useInjectable, + useViewState, +} from '@opensumi/ide-core-browser'; import { Layout } from '@opensumi/ide-core-browser/lib/components'; import { InlineActionBar, InlineMenuBar } from '@opensumi/ide-core-browser/lib/components/actions'; import { IContextMenu, IMenu, isIMenu } from '@opensumi/ide-core-browser/lib/menu/next'; @@ -146,6 +153,7 @@ export const AccordionSection = ({ const viewState = useViewState(viewId, contentRef, true); const progressService: IProgressService = useInjectable(IProgressService); const indicator = progressService.getIndicator(viewId); + const Component: any = children; const computedHeaderSize = React.useMemo(() => { if (expanded) { @@ -196,7 +204,7 @@ export const AccordionSection = ({ style={bodyStyle} ref={contentRef} > - + {} {metadata.message &&
{metadata.message}
} { this.logger.error(`[TabbarService:${location}] restore state error`, err); }); - const debouncedStoreState = debounce(() => this.storeState(service, service.currentContainerId), 100); + const debouncedStoreState = debounce(() => this.storeState(service, service.currentContainerId.get()), 100); service.addDispose(service.onSizeChange(debouncedStoreState)); if (location === SlotLocation.bottom) { // use this getter's side effect to set bottomExpanded contextKey @@ -451,7 +451,7 @@ export class LayoutService extends WithEventBus implements IMainLayoutService { const containerId = this.viewToContainerMap.get(viewId)!; const viewReady = new Deferred(); const accordionService = this.getAccordionService(containerId); - if (!accordionService.visibleViews.find((view) => view.id === viewId)) { + if (!accordionService.visibleViews.get().find((view) => view.id === viewId)) { accordionService.addDispose( accordionService.onAfterAppendViewEvent((id) => { if (id === viewId) { @@ -548,9 +548,9 @@ export class LayoutService extends WithEventBus implements IMainLayoutService { // TODO 这样很耦合,不能做到tab renderer自由拆分 expandBottom(expand: boolean): void { const tabbarService = this.getTabbarService(SlotLocation.bottom); - if (!tabbarService.currentContainerId) { + if (!tabbarService.currentContainerId.get()) { tabbarService.updateCurrentContainerId( - tabbarService.currentContainerId || + tabbarService.currentContainerId.get() || tabbarService.previousContainerId || tabbarService.containersMap.keys().next().value, ); diff --git a/packages/main-layout/src/browser/main-layout.contribution.ts b/packages/main-layout/src/browser/main-layout.contribution.ts index 28de2776a5..32eb92faf3 100644 --- a/packages/main-layout/src/browser/main-layout.contribution.ts +++ b/packages/main-layout/src/browser/main-layout.contribution.ts @@ -258,7 +258,7 @@ export class MainLayoutModuleContribution }); commands.registerCommand(WORKBENCH_ACTION_CLOSEPANEL); commands.registerCommand(IS_VISIBLE_BOTTOM_PANEL_COMMAND, { - execute: () => this.mainLayoutService.getTabbarService('bottom').currentContainerId !== '', + execute: () => this.mainLayoutService.getTabbarService('bottom').currentContainerId.get() !== '', }); commands.registerCommand(IS_VISIBLE_LEFT_PANEL_COMMAND, { execute: () => this.mainLayoutService.isVisible(SlotLocation.left), diff --git a/packages/main-layout/src/browser/tabbar-handler.ts b/packages/main-layout/src/browser/tabbar-handler.ts index 66402754f6..99c767e25b 100644 --- a/packages/main-layout/src/browser/tabbar-handler.ts +++ b/packages/main-layout/src/browser/tabbar-handler.ts @@ -25,7 +25,7 @@ export class TabBarHandler { constructor(public readonly containerId: string, private tabbarService: TabbarService) { // 如果当前视图已经激活,则设置一些激活的标志 - if (tabbarService.currentContainerId === this.containerId) { + if (tabbarService.currentContainerId.get() === this.containerId) { this.onActivateEmitter.fire(); this.isVisible = true; } @@ -70,7 +70,7 @@ export class TabBarHandler { * 当前视图激活状态 */ isActivated() { - return this.tabbarService.currentContainerId === this.containerId; + return this.tabbarService.currentContainerId.get() === this.containerId; } /** * 显示当前视图(区别于激活) diff --git a/packages/main-layout/src/browser/tabbar/bar.view.tsx b/packages/main-layout/src/browser/tabbar/bar.view.tsx index 3a1103234d..dea4094388 100644 --- a/packages/main-layout/src/browser/tabbar/bar.view.tsx +++ b/packages/main-layout/src/browser/tabbar/bar.view.tsx @@ -1,5 +1,4 @@ import cls from 'classnames'; -import { observer } from 'mobx-react-lite'; import React, { useEffect } from 'react'; import { Badge, Icon } from '@opensumi/ide-components'; @@ -8,8 +7,8 @@ import { ComponentRegistryProvider, KeybindingRegistry, addClassName, - createClassNameTokens, getIcon, + useAutorun, useDesignStyles, useInjectable, usePreference, @@ -55,15 +54,11 @@ export interface ITabbarViewProps { canHideTabbar?: boolean; renderOtherVisibleContainers?: React.FC<{ props: ITabbarViewProps; - renderContainers: ( - component: ComponentRegistryInfo, - handleTabClick, - currentContainerId: string, - ) => JSX.Element | null; + renderContainers: (component: ComponentRegistryInfo, currentContainerId: string) => JSX.Element | null; }>; } -export const TabbarViewBase: React.FC = observer((props) => { +export const TabbarViewBase: React.FC = (props) => { const { TabView, MoreTabView, @@ -87,7 +82,8 @@ export const TabbarViewBase: React.FC = observer((props) => { // 内部只关注总的宽度 tabbarService.updateBarSize(barSize + panelBorderSize); }, []); - const { currentContainerId, handleTabClick } = tabbarService; + + const currentContainerId = useAutorun(tabbarService.currentContainerId); const hideTabBarWhenHidePanel = usePreference('workbench.hideSlotTabBarWhenHidePanel', false); @@ -113,11 +109,7 @@ export const TabbarViewBase: React.FC = observer((props) => { }); const renderContainers = React.useCallback( - ( - component: ComponentRegistryInfo, - handleTabClick: (e: React.MouseEvent, forbidCollapse?: boolean | undefined) => void, - currentContainerId?: string, - ) => { + (component: ComponentRegistryInfo, currentContainerId?: string) => { const containerId = component.options?.containerId; if (!containerId) { return null; @@ -164,7 +156,7 @@ export const TabbarViewBase: React.FC = observer((props) => { id={containerId} onContextMenu={(e) => tabbarService.handleContextMenu(e, containerId)} // 如果设置了可隐藏 Tabbar,那么就不允许点击 tab 时隐藏整个 panel 了 通过设置 forbidCollapse 来阻止这个动作 - onClick={(e) => handleTabClick(e, willHideTabbar || forbidCollapse)} + onClick={(e) => tabbarService.handleTabClick(e, willHideTabbar || forbidCollapse)} ref={(el) => (ref = el)} className={cls({ active: currentContainerId === containerId }, tabClassName)} > @@ -172,13 +164,13 @@ export const TabbarViewBase: React.FC = observer((props) => { ); }, - [], + [tabbarService], ); return (
- {visibleContainers.map((component) => renderContainers(component, handleTabClick, currentContainerId))} + {visibleContainers.map((component) => renderContainers(component, currentContainerId))} {renderOtherVisibleContainers({ props, renderContainers })} {hideContainers.length ? (
  • = observer((props) => {
  • ); -}); - -export const IconTabView: React.FC<{ component: ComponentRegistryProvider }> = observer( - ({ component: defaultComponent }) => { - const progressService: IProgressService = useInjectable(IProgressService); - const keybindingRegistry: KeybindingRegistry = useInjectable(KeybindingRegistry); - const styles_icon_tab = useDesignStyles(styles.icon_tab, 'icon_tab'); - const [component, setComponent] = React.useState(defaultComponent); - const inProgress = progressService.getIndicator(component.options?.containerId || '')?.progressModel.show; - const title = React.useMemo(() => { - const options = component.options; - if (options?.activateKeyBinding) { - return `${options?.title} (${keybindingRegistry.acceleratorForKeyString(options.activateKeyBinding, '+')})`; - } - return options?.title; - }, [component]); - - useEffect(() => { - const dispose = component.onChange((newComponent) => { - setComponent(newComponent); - }); - return () => { - dispose.dispose(); - }; - }, []); - - return ( -
    -
    - {inProgress ? ( - - - - - - ) : ( - component.options?.badge && ( - - {parseInt(component.options.badge, 10) > 99 ? '99+' : component.options.badge} - - ) - )} -
    - ); - }, -); +}; -export const TextTabView: React.FC<{ component: ComponentRegistryProvider }> = observer( - ({ component: defaultComponent }) => { - const [component, setComponent] = React.useState(defaultComponent); - useEffect(() => { - const dispose = component.onChange((newComponent) => { - setComponent(newComponent); - }); - return () => { - dispose.dispose(); - }; - }, []); - return ( -
    -
    {component.options?.title?.toUpperCase()}
    - {component.options?.badge && ( +export const IconTabView: React.FC<{ component: ComponentRegistryProvider }> = ({ component: defaultComponent }) => { + const progressService: IProgressService = useInjectable(IProgressService); + const keybindingRegistry: KeybindingRegistry = useInjectable(KeybindingRegistry); + const styles_icon_tab = useDesignStyles(styles.icon_tab, 'icon_tab'); + const [component, setComponent] = React.useState(defaultComponent); + const indicator = progressService.getIndicator(component.options?.containerId || ''); + + const inProgress = useAutorun(indicator!.progressModel.show); + + const title = React.useMemo(() => { + const options = component.options; + if (options?.activateKeyBinding) { + return `${options?.title} (${keybindingRegistry.acceleratorForKeyString(options.activateKeyBinding, '+')})`; + } + return options?.title; + }, [component]); + + useEffect(() => { + const dispose = component.onChange((newComponent) => { + setComponent(newComponent); + }); + return () => { + dispose.dispose(); + }; + }, []); + + return ( +
    +
    + {inProgress ? ( + + + + + + ) : ( + component.options?.badge && ( {parseInt(component.options.badge, 10) > 99 ? '99+' : component.options.badge} - )} -
    - ); - }, -); + ) + )} +
    + ); +}; + +export const TextTabView: React.FC<{ component: ComponentRegistryProvider }> = ({ component: defaultComponent }) => { + const [component, setComponent] = React.useState(defaultComponent); + useEffect(() => { + const dispose = component.onChange((newComponent) => { + setComponent(newComponent); + }); + return () => { + dispose.dispose(); + }; + }, []); + return ( +
    +
    {component.options?.title?.toUpperCase()}
    + {component.options?.badge && ( + + {parseInt(component.options.badge, 10) > 99 ? '99+' : component.options.badge} + + )} +
    + ); +}; export const IconElipses: React.FC = () => { const styles_icon_tab = useDesignStyles(styles.icon_tab, 'icon_tab'); @@ -317,11 +308,7 @@ export const RightTabbarRenderer: React.FC<{ barSize?: number; style?: React.CSS export const LeftTabbarRenderer: React.FC<{ renderOtherVisibleContainers?: React.FC<{ props: ITabbarViewProps; - renderContainers: ( - component: ComponentRegistryInfo, - handleTabClick, - currentContainerId: string, - ) => JSX.Element | null; + renderContainers: (component: ComponentRegistryInfo, currentContainerId: string) => JSX.Element | null; }>; isRenderExtraTopMenus?: boolean; renderExtraMenus?: React.ReactNode; diff --git a/packages/main-layout/src/browser/tabbar/panel.view.tsx b/packages/main-layout/src/browser/tabbar/panel.view.tsx index 9c009fa564..7d2346d664 100644 --- a/packages/main-layout/src/browser/tabbar/panel.view.tsx +++ b/packages/main-layout/src/browser/tabbar/panel.view.tsx @@ -1,6 +1,5 @@ import cls from 'classnames'; -import { observer } from 'mobx-react-lite'; -import React from 'react'; +import React, { useCallback } from 'react'; import { INJECTOR_TOKEN, Injector } from '@opensumi/di'; import { @@ -9,6 +8,7 @@ import { ComponentRenderer, ConfigProvider, ErrorBoundary, + useAutorun, useDesignStyles, useInjectable, useViewState, @@ -43,13 +43,15 @@ export interface IBaseTabPanelView { panelSize?: number; } -export const BaseTabPanelView: React.FC = observer((props) => { +export const BaseTabPanelView: React.FC = (props) => { const { PanelView, panelSize, id, PanelViewProps } = props; const { side } = React.useContext(TabbarConfig); - const tabbarService: TabbarService = useInjectable(TabbarServiceFactory)(side); const appConfig: AppConfig = useInjectable(AppConfig); const customPanelSize = appConfig.panelSizes && appConfig.panelSizes[side]; + const tabbarService: TabbarService = useInjectable(TabbarServiceFactory)(side); + const currentContainerId = useAutorun(tabbarService.currentContainerId); + const styles_tab_panel = useDesignStyles(styles.tab_panel, 'tab_panel'); const styles_tab_panel_hidden = useDesignStyles(styles.tab_panel_hidden, 'tab_panel_hidden'); @@ -62,7 +64,7 @@ export const BaseTabPanelView: React.FC = observer((props) =>
    {tabbarService.visibleContainers.map((component) => { @@ -76,11 +78,11 @@ export const BaseTabPanelView: React.FC = observer((props) => key={containerId} className={cls(styles.panel_wrap, containerId) /* @deprecated: query by data-viewlet-id */} data-viewlet-id={containerId} - style={tabbarService.currentContainerId === containerId ? panelVisible : panelInVisible} + style={currentContainerId === containerId ? panelVisible : panelInVisible} id={id} > - + @@ -89,7 +91,7 @@ export const BaseTabPanelView: React.FC = observer((props) => })}
    ); -}); +}; export const ContainerView: React.FC<{ component: ComponentRegistryInfo; @@ -99,7 +101,7 @@ export const ContainerView: React.FC<{ children: React.ReactNode; }>; className?: string; -}> = observer(({ component, titleMenu, side, renderContainerWrap, className }) => { +}> = ({ component, titleMenu, side, renderContainerWrap, className }) => { const ref = React.useRef(); const containerRef = React.useRef(null); const appConfig = useInjectable(AppConfig); @@ -107,10 +109,14 @@ export const ContainerView: React.FC<{ const injector: Injector = useInjectable(INJECTOR_TOKEN); const layoutViewSize = useInjectable(LayoutViewSizeConfig); - const handleContextMenu = (e: React.MouseEvent) => { - const accordionService: AccordionService = injector.get(AccordionServiceFactory)(containerId); - accordionService.handleContextMenu(e); - }; + const handleContextMenu = useCallback( + (e: React.MouseEvent) => { + const accordionService: AccordionService = injector.get(AccordionServiceFactory)(containerId); + accordionService.handleContextMenu(e); + }, + [containerId], + ); + if (!containerId) { return null; } @@ -173,13 +179,13 @@ export const ContainerView: React.FC<{ ); -}); +}; const BottomPanelView: React.FC<{ component: ComponentRegistryInfo; side: string; titleMenu: IMenu; -}> = observer(({ component, titleMenu, side }) => { +}> = ({ component, titleMenu, side }) => { const ref = React.useRef(); const containerRef = React.useRef(null); const appConfig = useInjectable(AppConfig); @@ -236,7 +242,7 @@ const BottomPanelView: React.FC<{ ); -}); +}; export const RightTabPanelRenderer: React.FC = () => ; diff --git a/packages/main-layout/src/browser/tabbar/tabbar.service.ts b/packages/main-layout/src/browser/tabbar/tabbar.service.ts index 634448d0d2..6167abdefd 100644 --- a/packages/main-layout/src/browser/tabbar/tabbar.service.ts +++ b/packages/main-layout/src/browser/tabbar/tabbar.service.ts @@ -1,5 +1,4 @@ import debounce from 'lodash/debounce'; -import { action, makeObservable, observable, reaction, runInAction } from 'mobx'; import { Autowired, Injectable, Injector } from '@opensumi/di'; import { @@ -42,6 +41,7 @@ import { getTabbarCommonMenuId, } from '@opensumi/ide-core-browser/lib/menu/next'; import { IProgressService } from '@opensumi/ide-core-browser/lib/progress'; +import { autorunDelta, observableValue, transaction } from '@opensumi/ide-monaco/lib/common/observable'; import { IMainLayoutService, SUPPORT_ACCORDION_LOCATION, TabBarRegistrationEvent } from '../../common'; import { EXPAND_BOTTOM_PANEL, RETRACT_BOTTOM_PANEL, TOGGLE_BOTTOM_PANEL_COMMAND } from '../main-layout.contribution'; @@ -67,27 +67,20 @@ const NONE_CONTAINER_ID = undefined; @Injectable({ multiple: true }) export class TabbarService extends WithEventBus { - @observable - // currentContainerId 默认值应该为一个非空且唯一的字符串,避免在切换容器时触发 MobX 不变错误 - currentContainerId?: string = NONE_CONTAINER_ID; + readonly currentContainerId = observableValue(this, NONE_CONTAINER_ID); private nextContainerId = ''; private useFirstContainerId = false; - previousContainerId = ''; - - containersMap: Map = new Map(); - - @observable - state: Map = new Map(); - - private storedState: { [containerId: string]: TabState } = {}; - + public previousContainerId: string | undefined = undefined; + public containersMap: Map = new Map(); public prevSize?: number; public commonTitleMenu: IContextMenu; - public viewReady = new Deferred(); + private state: Map = new Map(); + private storedState: { [containerId: string]: TabState } = {}; + resizeHandle?: { setSize: (targetSize?: number) => void; setRelativeSize: (prev: number, next: number) => void; @@ -157,7 +150,6 @@ export class TabbarService extends WithEventBus { constructor(public location: string) { super(); this.setIsLatter(location === SlotLocation.right || location === SlotLocation.bottom); - makeObservable(this); this.scopedCtxKeyService = this.contextKeyService.createScoped(); this.scopedCtxKeyService.createKey('triggerWithTab', true); this.menuRegistry.registerMenuItem(this.menuId, { @@ -195,12 +187,12 @@ export class TabbarService extends WithEventBus { } } - @action updateCurrentContainerId(containerId: string) { - this.currentContainerId = containerId; + transaction((tx) => { + this.currentContainerId.set(containerId, tx); + }); } - @action updateBadge(containerId: string, value: string) { const component = this.getContainer(containerId); if (component && component.options) { @@ -232,7 +224,6 @@ export class TabbarService extends WithEventBus { return viewState!; } - @action public hideContainer(containerId: string) { const viewState = this.state.get(containerId); if (viewState) { @@ -240,7 +231,6 @@ export class TabbarService extends WithEventBus { } } - @action public showContainer(containerId: string) { const viewState = this.state.get(containerId); if (viewState) { @@ -337,7 +327,6 @@ export class TabbarService extends WithEventBus { return this.listenCurrentChange(); } - @action registerContainer(containerId: string, componentInfo: ComponentRegistryInfo) { if (this.containersMap.has(containerId)) { return; @@ -360,7 +349,7 @@ export class TabbarService extends WithEventBus { fireChange: (component: ComponentRegistryProvider) => componentChangeEmitter.fire(component), onChange: componentChangeEmitter.event, views: componentInfo.views, - options: observable.object(options, undefined, { deep: false }), + options, }); disposables.push({ @@ -372,8 +361,7 @@ export class TabbarService extends WithEventBus { this.updatePanelVisibility(this.containersMap.size > 0); - // 为了避免在计算 visibleContainers 时触发 MobX 不变错误,需要立即设置状态。 - // 此外,由于 containersMap 不是可观察的,使用 setState 会触发 visibleContainers 的更新。 + // 由于 containersMap 不是可观察的,使用 setState 会触发 visibleContainers 的更新。 // 在注册过程中,根据优先级对组件进行排序。 // 在恢复状态时,组件将按照先前的顺序进行恢复(除了在 onDidStart 之后注册的视图,它们没有顺序恢复的能力)。 let insertIndex = this.sortedContainers.findIndex( @@ -388,16 +376,14 @@ export class TabbarService extends WithEventBus { const containerId = info.options?.containerId; if (containerId) { const prevState = this.storedState[containerId] || this.getContainerState(containerId) || {}; // 保留原有的hidden状态 - runInAction(() => { - this.state.set(containerId, { hidden: prevState.hidden, priority: i }); - }); + this.state.set(containerId, { hidden: prevState.hidden, priority: i }); } } disposables.push(this.registerSideEffects(componentInfo)); this.eventBus.fire(new TabBarRegistrationEvent({ tabBarId: containerId })); - if (containerId === this.currentContainerId) { + if (containerId === this.currentContainerId.get()) { this.handleChange(containerId, ''); } @@ -477,7 +463,7 @@ export class TabbarService extends WithEventBus { }, { execute: () => { - if (this.currentContainerId === containerId) { + if (this.currentContainerId.get() === containerId) { this.updateCurrentContainerId(''); } else { this.updateCurrentContainerId(containerId); @@ -529,18 +515,16 @@ export class TabbarService extends WithEventBus { return disposables; } - @action disposeContainer(containerId: string) { const disposables = this.disposableMap.get(containerId); if (disposables) { disposables.dispose(); } - if (this.currentContainerId === containerId) { + if (this.currentContainerId.get() === containerId) { this.updateCurrentContainerId(this.visibleContainers[0].options?.containerId || ''); } } - @action updateTitle(containerId: string, title: string) { const container = this.getContainer(containerId); if (container) { @@ -548,8 +532,8 @@ export class TabbarService extends WithEventBus { } } - getContainer(containerId: string) { - return this.containersMap.get(containerId); + getContainer(containerId: string | undefined) { + return containerId ? this.containersMap.get(containerId) : undefined; } // 针对 containerId 对 menu 进行缓存 @@ -612,10 +596,9 @@ export class TabbarService extends WithEventBus { return false; } - @action.bound handleTabClick(e: React.MouseEvent, forbidCollapse?: boolean) { const containerId = e.currentTarget.id; - if (containerId === this.currentContainerId && !forbidCollapse) { + if (containerId === this.currentContainerId.get() && !forbidCollapse) { // 双击同一个 tab 时隐藏 panel this.updateCurrentContainerId(''); } else { @@ -623,7 +606,6 @@ export class TabbarService extends WithEventBus { } } - @action.bound handleContextMenu(event: React.MouseEvent, containerId?: string) { event.preventDefault(); event.stopPropagation(); @@ -669,7 +651,6 @@ export class TabbarService extends WithEventBus { } } - @action restoreState() { this.storedState = this.layoutState.getState(LAYOUT_STATE.getTabbarSpace(this.location), {}); for (const containerId of this.state.keys()) { @@ -732,7 +713,7 @@ export class TabbarService extends WithEventBus { execute: ({ forceShow }: { forceShow?: boolean } = {}) => { // 支持toggle if (this.location === 'bottom' && !forceShow) { - this.updateCurrentContainerId(this.currentContainerId === containerId ? '' : containerId); + this.updateCurrentContainerId(this.currentContainerId.get() === containerId ? '' : containerId); } else { this.updateCurrentContainerId(containerId); } @@ -851,7 +832,6 @@ export class TabbarService extends WithEventBus { }); } - @action protected doToggleTab(containerId: string, forceShow?: boolean) { const state = this.getContainerState(containerId); if (forceShow === undefined) { @@ -860,14 +840,14 @@ export class TabbarService extends WithEventBus { state.hidden = !forceShow; } - if (state.hidden && this.currentContainerId === containerId) { + if (state.hidden && this.currentContainerId.get() === containerId) { // 如果隐藏的是当前激活的 tab,则激活第一个可见 tab this.updateCurrentContainerId(this.visibleContainers[0].options!.containerId); } this.storeState(); } - protected shouldExpand(containerId: string) { + protected shouldExpand(containerId: string | undefined) { const info = this.getContainer(containerId); return info && info.options && info.options.expanded; } @@ -880,7 +860,7 @@ export class TabbarService extends WithEventBus { } const size = this.resizeHandle.getSize(); - if (size !== this.barSize && !this.shouldExpand(this.currentContainerId)) { + if (size !== this.barSize && !this.shouldExpand(this.currentContainerId.get())) { this.prevSize = size; this.onSizeChangeEmitter.fire({ size }); } @@ -888,13 +868,10 @@ export class TabbarService extends WithEventBus { } protected listenCurrentChange() { - return reaction( - () => this.currentContainerId, - (nextContainerId, previousContainerId) => { - this.previousContainerId = previousContainerId === NONE_CONTAINER_ID ? '' : previousContainerId; - this.handleChange(nextContainerId, previousContainerId); - }, - ); + return autorunDelta(this.currentContainerId, ({ lastValue, newValue }) => { + this.previousContainerId = lastValue === NONE_CONTAINER_ID ? '' : lastValue; + this.handleChange(newValue, lastValue); + }); } private handleChange(currentId, previousId) { diff --git a/packages/markers/src/browser/markers-filter.view.tsx b/packages/markers/src/browser/markers-filter.view.tsx index 42c0a19b1a..171041f638 100644 --- a/packages/markers/src/browser/markers-filter.view.tsx +++ b/packages/markers/src/browser/markers-filter.view.tsx @@ -1,5 +1,4 @@ import debounce from 'lodash/debounce'; -import { observer } from 'mobx-react-lite'; import React from 'react'; import { useDesignStyles, useDisposable, useInjectable } from '@opensumi/ide-core-browser'; @@ -15,7 +14,7 @@ import Messages from './messages'; /** * Marker过滤面板 */ -export const MarkerFilterPanel = observer(() => { +export const MarkerFilterPanel = () => { const markerService: MarkerService = useInjectable(IMarkerService); const styles_markerFilterContent = useDesignStyles(styles.markerFilterContent, 'markerFilterContent'); const styles_filterInput = useDesignStyles(styles.filterInput, 'filterInput'); @@ -47,4 +46,4 @@ export const MarkerFilterPanel = observer(() => { /> ); -}); +}; diff --git a/packages/markers/src/browser/markers-service.ts b/packages/markers/src/browser/markers-service.ts index c0b8f45015..d098b7eed8 100644 --- a/packages/markers/src/browser/markers-service.ts +++ b/packages/markers/src/browser/markers-service.ts @@ -1,5 +1,3 @@ -import { makeObservable, observable } from 'mobx'; - import { Autowired, Injectable } from '@opensumi/di'; import { LabelService } from '@opensumi/ide-core-browser/lib/services'; import { Deferred, Emitter, Event, IBaseMarkerManager, MarkerManager, OnEvent } from '@opensumi/ide-core-common'; @@ -16,10 +14,6 @@ import { MarkerGroupNode, MarkerNode, MarkerRoot } from './tree/tree-node.define const MAX_DIAGNOSTICS_BADGE = 1000; -export interface ViewSize { - h: number; -} - @Injectable() export class MarkerService extends Themable implements IMarkerService { @Autowired(LabelService) @@ -31,9 +25,6 @@ export class MarkerService extends Themable implements IMarkerService { // marker 显示模型 private markerViewModel: MarkerViewModel; - @observable - public viewSize: ViewSize = { h: 0 }; - @Autowired(MarkersContextKey) markersContextKey: MarkersContextKey; @@ -55,7 +46,6 @@ export class MarkerService extends Themable implements IMarkerService { constructor() { super(); - makeObservable(this); this.markerViewModel = new MarkerViewModel(this, this.labelService); } diff --git a/packages/markers/src/browser/markers.model.ts b/packages/markers/src/browser/markers.model.ts index 24838436c3..f42ade66f5 100644 --- a/packages/markers/src/browser/markers.model.ts +++ b/packages/markers/src/browser/markers.model.ts @@ -1,5 +1,3 @@ -import { makeObservable, observable } from 'mobx'; - import { LabelService } from '@opensumi/ide-core-browser/lib/services'; import { Disposable, IMarker, MarkerSeverity, URI, arrays, compareRangesUsingStarts } from '@opensumi/ide-core-common'; @@ -17,8 +15,6 @@ function compareMarkers(a: IMarker, b: IMarker): number { * marker view model for display */ export class MarkerViewModel extends Disposable { - // view data - @observable public markers: Map = new Map(); // marker filter @@ -26,7 +22,6 @@ export class MarkerViewModel extends Disposable { constructor(private _service: IMarkerService, private labelService: LabelService) { super(); - makeObservable(this); this.addDispose([ this._service.getManager().onMarkerChanged(this._onMarkerChanged, this), this._service.onMarkerFilterChanged(this._onMarkerFilterChanged, this), diff --git a/packages/menu-bar/__tests__/browser/menu-bar.store.test.ts b/packages/menu-bar/__tests__/browser/menu-bar.store.test.ts index e0382903de..64e1856ac0 100644 --- a/packages/menu-bar/__tests__/browser/menu-bar.store.test.ts +++ b/packages/menu-bar/__tests__/browser/menu-bar.store.test.ts @@ -82,21 +82,21 @@ describe('test for packages/menu-bar/src/browser/menu-bar.store.ts', () => { }); it('ok for state#menubarItems', () => { - expect(menubarStore.menubarItems).toEqual([]); + expect(menubarStore.menubarItems.get()).toEqual([]); menubarService.menubarItems = [ { id: 'helpMenu', label: 'help' }, { id: 'windowMenu', label: 'window' }, ]; - expect(menubarStore.menubarItems).toEqual([ + expect(menubarStore.menubarItems.get()).toEqual([ { id: 'helpMenu', label: 'help' }, { id: 'windowMenu', label: 'window' }, ]); menubarService.menubarItems = [{ id: 'helpMenu', label: 'help' }]; - expect(menubarStore.menubarItems).toEqual([{ id: 'helpMenu', label: 'help' }]); + expect(menubarStore.menubarItems.get()).toEqual([{ id: 'helpMenu', label: 'help' }]); }); it('ok for state#menuItems', () => { diff --git a/packages/menu-bar/package.json b/packages/menu-bar/package.json index 98d777ee24..1230e257f5 100644 --- a/packages/menu-bar/package.json +++ b/packages/menu-bar/package.json @@ -24,6 +24,7 @@ "devDependencies": { "@opensumi/ide-components": "workspace:*", "@opensumi/ide-core-browser": "workspace:*", - "@opensumi/ide-dev-tool": "workspace:*" + "@opensumi/ide-dev-tool": "workspace:*", + "@opensumi/ide-monaco": "workspace:*" } } diff --git a/packages/menu-bar/src/browser/menu-bar.store.ts b/packages/menu-bar/src/browser/menu-bar.store.ts index 8847a8be26..cb16bb885d 100644 --- a/packages/menu-bar/src/browser/menu-bar.store.ts +++ b/packages/menu-bar/src/browser/menu-bar.store.ts @@ -1,5 +1,4 @@ import debounce from 'lodash/debounce'; -import { action, makeObservable, observable } from 'mobx'; import { Autowired, Injectable } from '@opensumi/di'; import { Disposable, Emitter, Event, getExternalIcon } from '@opensumi/ide-core-browser'; @@ -11,9 +10,10 @@ import { MenuId, MenuNode, } from '@opensumi/ide-core-browser/lib/menu/next'; +import { IObservable, observableValue, transaction } from '@opensumi/ide-monaco/lib/common/observable'; export abstract class AbstractMenubarStore extends Disposable { - menubarItems: IMenubarItem[]; + menubarItems: IObservable; abstract handleMenubarClick(menuId: string): void; } @@ -25,11 +25,8 @@ export class MenubarStore extends Disposable implements AbstractMenubarStore { @Autowired(IMenuRegistry) private readonly menuRegistry: IMenuRegistry; - @observable - public menubarItems = observable.array([]); - - @observable - public menuItems = observable.map(); + public readonly menubarItems = observableValue(this, []); + public readonly menuItems: Map = (this, new Map()); private readonly _onDidMenuBarChange = new Emitter(); public get onDidMenuBarChange(): Event { @@ -38,7 +35,6 @@ export class MenubarStore extends Disposable implements AbstractMenubarStore { constructor() { super(); - makeObservable(this); this.build(); this.registerDispose(this.menubarService.onDidMenubarChange(this.handleMenubarChanged, this, this.disposables)); this.registerDispose(this.menubarService.onDidMenuChange(this.handleMenuChanged, this, this.disposables)); @@ -49,34 +45,37 @@ export class MenubarStore extends Disposable implements AbstractMenubarStore { return this.menubarService.getMenuNodes(menuId) || []; } - @action.bound private updateMenuNodes(menuId: string) { const menuItems = this.getMenubarSubItems(menuId); this.menuItems.set(menuId, menuItems); } - @action.bound private build() { const menubarItems = this.menubarService.getMenubarItems(); - this.menubarItems.splice(0, this.menubarItems.length, ...menubarItems); + const itemsValue = this.menubarItems.get(); + transaction((tx) => { + itemsValue.splice(0, itemsValue.length, ...menubarItems); + this.menubarItems.set(itemsValue, tx); + }); + menubarItems.forEach(({ id: menuId }) => { this.updateMenuNodes(menuId); }); - this._onDidMenuBarChange.fire(this.menubarItems); + this._onDidMenuBarChange.fire(itemsValue); } private handleMenuChanged(menuId: string) { this.updateMenuNodes(menuId); } - @action.bound private handleMenubarChanged() { const menubarItems = this.menubarService.getMenubarItems(); - this.menubarItems.replace(menubarItems); - this._onDidMenuBarChange.fire(this.menubarItems); + transaction((tx) => { + this.menubarItems.set(menubarItems, tx); + }); + this._onDidMenuBarChange.fire(this.menubarItems.get()); } - @action.bound public handleMenubarClick: (menuId: string) => void = debounce( (menuId: string) => { this.updateMenuNodes(menuId); @@ -98,7 +97,7 @@ export class MenubarStore extends Disposable implements AbstractMenubarStore { }); } - public registerMenusBarByCompact(menubarItems: IMenubarItem[] = this.menubarItems) { + public registerMenusBarByCompact(menubarItems: IMenubarItem[] = this.menubarItems.get()) { this.menuRegistry.registerMenuItems( MenuId.MenubarCompactMenu, menubarItems.map( diff --git a/packages/menu-bar/src/browser/menu-bar.view.tsx b/packages/menu-bar/src/browser/menu-bar.view.tsx index 6b3e90cd06..20ca51e9fe 100644 --- a/packages/menu-bar/src/browser/menu-bar.view.tsx +++ b/packages/menu-bar/src/browser/menu-bar.view.tsx @@ -1,11 +1,10 @@ import cls from 'classnames'; -import { observer } from 'mobx-react-lite'; import React from 'react'; import { ClickOutside } from '@opensumi/ide-components'; import { Dropdown } from '@opensumi/ide-components/lib/dropdown'; import { Deprecated } from '@opensumi/ide-components/lib/utils/deprecated'; -import { ComponentRegistry, SlotRenderer, useInjectable } from '@opensumi/ide-core-browser'; +import { ComponentRegistry, SlotRenderer, useAutorun, useInjectable } from '@opensumi/ide-core-browser'; import { InlineActionBar, MenuActionList } from '@opensumi/ide-core-browser/lib/components/actions'; import { LayoutViewSizeConfig } from '@opensumi/ide-core-browser/lib/layout/constants'; import { AbstractMenuService, IMenubarItem, MenuId } from '@opensumi/ide-core-browser/lib/menu/next'; @@ -14,13 +13,17 @@ import { IIconService } from '@opensumi/ide-theme/lib/common/theme.service'; import styles from './menu-bar.module.less'; import { MenubarStore } from './menu-bar.store'; -const MenubarItem = observer< - IMenubarItem & { - focusMode: boolean; - afterMenuClick: () => void; - afterMenubarClick: () => void; - } ->(({ id, label, focusMode, afterMenubarClick, afterMenuClick }) => { +const MenubarItem = ({ + id, + label, + focusMode, + afterMenubarClick, + afterMenuClick, +}: IMenubarItem & { + focusMode: boolean; + afterMenuClick: () => void; + afterMenubarClick: () => void; +}) => { const menubarStore = useInjectable(MenubarStore); const iconService = useInjectable(IIconService); const [menuOpen, setMenuOpen] = React.useState(false); @@ -74,14 +77,16 @@ const MenubarItem = observer< ); -}); +}; // 点击一次后开启 focus mode, 此时 hover 也能出现子菜单 // outside click/contextmenu 之后解除 focus mode // 点击 MenubarItem 也会解除 focus mode // 点击 MenuItem 也会解除 focus mode -export const MenuBar = observer(() => { +export const MenuBar = () => { const menubarStore = useInjectable(MenubarStore); + const menubarItems = useAutorun(menubarStore.menubarItems); + const componentRegistry: ComponentRegistry = useInjectable(ComponentRegistry); const layoutViewSize = useInjectable(LayoutViewSizeConfig); @@ -119,7 +124,7 @@ export const MenuBar = observer(() => { onOutsideClick={handleMouseLeave} > {LogoIcon ? :
    } - {menubarStore.menubarItems.map(({ id, label }) => ( + {menubarItems.map(({ id, label }) => ( { ))} ); -}); +}; MenuBar.displayName = 'MenuBar'; diff --git a/packages/menu-bar/src/browser/toolbar-action.view.tsx b/packages/menu-bar/src/browser/toolbar-action.view.tsx index facdfb4e86..cfeab4a18a 100644 --- a/packages/menu-bar/src/browser/toolbar-action.view.tsx +++ b/packages/menu-bar/src/browser/toolbar-action.view.tsx @@ -1,38 +1,11 @@ import cls from 'classnames'; -import { observer } from 'mobx-react-lite'; import React from 'react'; import { ToolbarLocation } from '@opensumi/ide-core-browser'; import styles from './toolbar-action.module.less'; -// const ActionGroup = observer(({ group, id }: { group: IToolbarActionGroup; id: string }) => { -// return (
    -// {group.map((action) => { -// switch (action.type) { -// case 'action': -// return ( -// -//
    ); -}); +}; diff --git a/packages/quick-open/__tests__/browser/prefix-quick-open-command.service.test.ts b/packages/quick-open/__tests__/browser/prefix-quick-open-command.service.test.ts index 21ff6ed3e2..a27138e0b1 100644 --- a/packages/quick-open/__tests__/browser/prefix-quick-open-command.service.test.ts +++ b/packages/quick-open/__tests__/browser/prefix-quick-open-command.service.test.ts @@ -14,7 +14,6 @@ import { IWorkspaceService } from '@opensumi/ide-workspace'; import { PrefixQuickOpenServiceImpl, QuickOpenHandlerRegistry } from '../../src/browser/prefix-quick-open.service'; import { QuickCommandHandler } from '../../src/browser/quick-open.command.service'; -import { QuickTitleBar } from '../../src/browser/quick-title-bar'; describe('prefix quick open command service test', () => { let injector: MockInjector; @@ -30,10 +29,6 @@ describe('prefix quick open command service test', () => { getMostRecentlyUsedCommands: () => [{ id: 'a', label: 'aaa' }], }, }, - { - token: QuickTitleBar, - useValue: mockService({}), - }, { token: IThemeService, useValue: mockService({}), diff --git a/packages/quick-open/__tests__/browser/prefix-quick-open.service.test.ts b/packages/quick-open/__tests__/browser/prefix-quick-open.service.test.ts index b91cb04789..e48ec70596 100644 --- a/packages/quick-open/__tests__/browser/prefix-quick-open.service.test.ts +++ b/packages/quick-open/__tests__/browser/prefix-quick-open.service.test.ts @@ -90,10 +90,6 @@ describe('prefix quick open service test', () => { let quickOpenOptions: QuickOpenOptions; let d: Deferred; injector.addProviders( - { - token: QuickTitleBar, - useValue: mockService({}), - }, { token: IThemeService, useValue: mockService({}), diff --git a/packages/quick-open/__tests__/browser/quick-open.service.test.ts b/packages/quick-open/__tests__/browser/quick-open.service.test.ts index d5fa557fa3..2ed893e4a3 100644 --- a/packages/quick-open/__tests__/browser/quick-open.service.test.ts +++ b/packages/quick-open/__tests__/browser/quick-open.service.test.ts @@ -124,7 +124,7 @@ describe('quick-open service test', () => { }); quickOpenService.hide(HideReason.ELEMENT_SELECTED); expect($widgetHide).toHaveBeenCalledTimes(1); - expect(widget.isShow).toBeFalsy(); + expect(widget.isShow.get()).toBeFalsy(); expect($onClose).toHaveBeenCalledTimes(1); // false 为非取消类型的关闭 expect($onClose).toHaveBeenCalledWith(false); @@ -138,7 +138,7 @@ describe('quick-open service test', () => { }); quickOpenService.hide(HideReason.FOCUS_LOST); expect($widgetHide).toHaveBeenCalledTimes(1); - expect(widget.isShow).toBeFalsy(); + expect(widget.isShow.get()).toBeFalsy(); // true 为取消类型的关闭 expect($onClose).toHaveBeenCalledWith(true); }); @@ -147,15 +147,15 @@ describe('quick-open service test', () => { quickOpenService.open(model); quickOpenService.refresh(); // refresh 时 onType 会被重新调用 - expect(model.onType).toHaveBeenCalledWith(widget.inputValue, expect.anything()); + expect(model.onType).toHaveBeenCalledWith(widget.inputValue.get(), expect.anything()); }); it('show quick-open decoration', () => { quickOpenService.open(model); quickOpenService.showDecoration(VALIDATE_TYPE.ERROR); - expect(widget.validateType).toBe(VALIDATE_TYPE.ERROR); + expect(widget.validateType.get()).toBe(VALIDATE_TYPE.ERROR); quickOpenService.hideDecoration(); - expect(widget.validateType).toBeUndefined(); + expect(widget.validateType.get()).toBeUndefined(); }); it('show quick-open item buttons', () => { @@ -201,7 +201,7 @@ describe('quick-open service test', () => { quickOpenService.open(model, { prefix: 'AAA', }); - expect(widget.items).toStrictEqual(items); + expect(widget.items.get()).toStrictEqual(items); }); it('match label', () => { @@ -209,9 +209,9 @@ describe('quick-open service test', () => { prefix: 'AAA', fuzzyMatchLabel: true, }); - expect(widget.items).toHaveLength(2); - expect(widget.items[0].getLabel()).toBe('AAAAA'); - expect(widget.items[1].getLabel()).toBe('AAAAA2'); + expect(widget.items.get()).toHaveLength(2); + expect(widget.items.get()[0].getLabel()).toBe('AAAAA'); + expect(widget.items.get()[1].getLabel()).toBe('AAAAA2'); }); it('match label width enableSeparateSubstringMatching', () => { @@ -221,8 +221,8 @@ describe('quick-open service test', () => { enableSeparateSubstringMatching: true, }, }); - expect(widget.items).toHaveLength(1); - const [labelHighlights] = widget.items[0].getHighlights(); + expect(widget.items.get()).toHaveLength(1); + const [labelHighlights] = widget.items.get()[0].getHighlights(); expect(labelHighlights).toStrictEqual([ { end: 1, start: 0 }, { end: 3, start: 2 }, @@ -244,7 +244,7 @@ describe('quick-open service test', () => { quickOpenService.open(model, { prefix: 'AAA', }); - expect(widget.items).toHaveLength(1); + expect(widget.items.get()).toHaveLength(1); }); it('match description', () => { @@ -252,8 +252,8 @@ describe('quick-open service test', () => { prefix: 'BBB', fuzzyMatchDescription: true, }); - expect(widget.items).toHaveLength(4); - const [, descriptionHighlights] = widget.items[2].getHighlights(); + expect(widget.items.get()).toHaveLength(4); + const [, descriptionHighlights] = widget.items.get()[2].getHighlights(); expect(descriptionHighlights).toStrictEqual([{ start: 23, end: 26 }]); }); @@ -262,8 +262,8 @@ describe('quick-open service test', () => { prefix: 'Hello', fuzzyMatchDetail: true, }); - expect(widget.items).toHaveLength(4); - const [, , detailHighlights] = widget.items[3].getHighlights(); + expect(widget.items.get()).toHaveLength(4); + const [, , detailHighlights] = widget.items.get()[3].getHighlights(); expect(detailHighlights).toStrictEqual([{ start: 8, end: 13 }]); }); @@ -283,8 +283,8 @@ describe('quick-open service test', () => { enableSeparateSubstringMatching: true, }, }); - expect(widget.items).toHaveLength(2); - expect(widget.items[0].getLabel()).toBe('Hon'); + expect(widget.items.get()).toHaveLength(2); + expect(widget.items.get()[0].getLabel()).toBe('Hon'); }); }); diff --git a/packages/quick-open/__tests__/browser/quick-pick.service.test.ts b/packages/quick-open/__tests__/browser/quick-pick.service.test.ts index 341d3ca1da..f2cf5aba4e 100644 --- a/packages/quick-open/__tests__/browser/quick-pick.service.test.ts +++ b/packages/quick-open/__tests__/browser/quick-pick.service.test.ts @@ -63,7 +63,7 @@ describe('quick-pick service test', () => { expect(item).toBe('sumi'); done(); }); - const [item] = widget.items; + const [item] = widget.items.get(); item.run(QuickOpenMode.OPEN); }); @@ -78,6 +78,6 @@ describe('quick-pick service test', () => { expect(items![1]).toBe('vscode'); done(); }); - widget.callbacks.onConfirm(widget.items); + widget.callbacks.onConfirm(widget.items.get()); }); }); diff --git a/packages/quick-open/src/browser/prefix-quick-open.service.ts b/packages/quick-open/src/browser/prefix-quick-open.service.ts index f955dffa25..fa1080e14e 100644 --- a/packages/quick-open/src/browser/prefix-quick-open.service.ts +++ b/packages/quick-open/src/browser/prefix-quick-open.service.ts @@ -271,7 +271,7 @@ export class PrefixQuickOpenServiceImpl implements PrefixQuickOpenService { } protected doOpen(options?: QuickOpenOptions): void { - if (this.quickTitleBar.isAttached) { + if (this.quickTitleBar.isAttached.get()) { this.quickTitleBar.hide(); } diff --git a/packages/quick-open/src/browser/quick-input-service.ts b/packages/quick-open/src/browser/quick-input-service.ts index 7080c11e9b..98952e4257 100644 --- a/packages/quick-open/src/browser/quick-input-service.ts +++ b/packages/quick-open/src/browser/quick-input-service.ts @@ -3,7 +3,6 @@ import { VALIDATE_TYPE } from '@opensumi/ide-components'; import { IQuickInputService, QuickInputOptions, QuickOpenService } from '@opensumi/ide-core-browser/lib/quick-open'; import { Deferred, Emitter, Event, withNullAsUndefined } from '@opensumi/ide-core-common'; -import { QuickTitleBar } from './quick-title-bar'; import { InputBoxImpl } from './quickInput.inputBox'; @Injectable() @@ -11,9 +10,6 @@ export class QuickInputService implements IQuickInputService { @Autowired(QuickOpenService) protected readonly quickOpenService: QuickOpenService; - @Autowired(QuickTitleBar) - protected readonly quickTitleBar: QuickTitleBar; - @Autowired(INJECTOR_TOKEN) protected injector: Injector; diff --git a/packages/quick-open/src/browser/quick-open.service.tsx b/packages/quick-open/src/browser/quick-open.service.tsx index d094091b10..07c02d92cc 100644 --- a/packages/quick-open/src/browser/quick-open.service.tsx +++ b/packages/quick-open/src/browser/quick-open.service.tsx @@ -139,7 +139,7 @@ export class MonacoQuickOpenService implements QuickOpenService { } refresh(): void { - this.onType(this.widget.inputValue); + this.onType(this.widget.inputValue.get()); } public get widget(): QuickOpenWidget { @@ -230,11 +230,11 @@ export class MonacoQuickOpenService implements QuickOpenService { } showDecoration(type: VALIDATE_TYPE): void { - this.widget.validateType = type; + this.widget.validateType.set(type, undefined); } hideDecoration(): void { - this.widget.validateType = undefined; + this.widget.validateType.set(undefined, undefined); } } diff --git a/packages/quick-open/src/browser/quick-open.type.ts b/packages/quick-open/src/browser/quick-open.type.ts index 294e390a22..77b95e4872 100644 --- a/packages/quick-open/src/browser/quick-open.type.ts +++ b/packages/quick-open/src/browser/quick-open.type.ts @@ -8,6 +8,7 @@ import { QuickOpenTabOptions, } from '@opensumi/ide-core-browser'; import { VALIDATE_TYPE } from '@opensumi/ide-core-browser/lib/components'; +import { IObservable } from '@opensumi/ide-monaco/lib/common/observable'; export const QuickOpenContext = React.createContext<{ widget: IQuickOpenWidget; @@ -92,23 +93,24 @@ export interface QuickOpenInputOptions extends QuickOpenTabOptions { } export interface IQuickOpenWidget extends QuickOpenTabOptions { - inputValue: string; - selectIndex: number; - validateType?: VALIDATE_TYPE; - keepScrollPosition?: boolean; - busy?: boolean; + readonly inputValue: IObservable; + readonly selectIndex: IObservable; + readonly validateType: IObservable; + readonly keepScrollPosition: IObservable; + readonly busy: IObservable; + readonly isShow: IObservable; + readonly items: IObservable; + readonly actionProvider: IObservable; + readonly autoFocus: IObservable; + readonly selectAll: IObservable; + readonly isPassword: IObservable; + readonly valueSelection: IObservable<[number, number] | undefined>; + readonly canSelectMany: IObservable; + readonly inputPlaceholder: IObservable; + readonly inputEnable: IObservable; + readonly MAX_HEIGHT: number; - readonly isShow: boolean; - readonly items: QuickOpenItem[]; readonly callbacks: IQuickOpenCallbacks; - readonly selectAll: boolean; - readonly isPassword?: boolean; - readonly inputPlaceholder?: string; - readonly inputEnable?: boolean; - readonly actionProvider: QuickOpenActionProvider | null; - readonly autoFocus: IAutoFocus | null; - readonly valueSelection?: [number, number]; - readonly canSelectMany?: boolean; setInput(model: IQuickOpenModel, autoFocus: IAutoFocus, ariaLabel?: string): void; show(prefix: string, options: QuickOpenInputOptions): void; hide(reason?: HideReason): void; diff --git a/packages/quick-open/src/browser/quick-open.view.tsx b/packages/quick-open/src/browser/quick-open.view.tsx index 6149ba02a9..af6575fb6b 100644 --- a/packages/quick-open/src/browser/quick-open.view.tsx +++ b/packages/quick-open/src/browser/quick-open.view.tsx @@ -1,5 +1,4 @@ import cls from 'classnames'; -import { observer } from 'mobx-react-lite'; import React from 'react'; import { @@ -10,7 +9,15 @@ import { VALIDATE_TYPE, ValidateInput, } from '@opensumi/ide-components'; -import { Key, KeyCode, isUndefined, localize, useDesignStyles, useInjectable } from '@opensumi/ide-core-browser'; +import { + Key, + KeyCode, + isUndefined, + localize, + useAutorun, + useDesignStyles, + useInjectable, +} from '@opensumi/ide-core-browser'; import { VIEW_CONTAINERS } from '@opensumi/ide-core-browser/lib/layout/view-id'; import { IProgressService } from '@opensumi/ide-core-browser/lib/progress'; import { ProgressBar } from '@opensumi/ide-core-browser/lib/progress/progress-bar'; @@ -23,6 +30,7 @@ import { QuickTitleButton, } from '@opensumi/ide-core-browser/lib/quick-open'; import { KEY_CODE_MAP } from '@opensumi/ide-monaco/lib/browser/monaco.keycode-map'; +import { transaction } from '@opensumi/ide-monaco/lib/common/observable'; import { KeyCode as KeyCodeEnum } from '@opensumi/monaco-editor-core/esm/vs/base/common/keyCodes'; import { HighlightLabel } from './components/highlight-label'; @@ -43,33 +51,40 @@ const QuickOpenButton: React.FC< { button: QuickTitleButton; } & React.ButtonHTMLAttributes -> = observer(({ button, ...props }) => ( +> = ({ button, ...props }) => ( )} ); -}); +}; -const QuickOpenItemView: React.FC = observer(({ data, index }) => { +const QuickOpenItemView: React.FC = ({ data, index }) => { const { widget } = React.useContext(QuickOpenContext); + const actionProvider = useAutorun(widget.actionProvider); + const selectIndex = useAutorun(widget.selectIndex); + const canSelectMany = useAutorun(widget.canSelectMany); + const checked = useAutorun(data.checked); + const quickOpenItemService = useInjectable(QuickOpenItemService); const label = React.useMemo(() => data.getLabel(), [data]); - const description = React.useMemo(() => data.getDescription(), [data]); - const detail = React.useMemo(() => data.getDetail(), [data]); - const iconClass = React.useMemo(() => data.getIconClass(), [data]); - const keybinding = React.useMemo(() => data.getKeybinding(), [data]); - const groupLabel = React.useMemo(() => data.getGroupLabel(), [data]); - const showBorder = React.useMemo(() => data.showBorder(), [data]); const iconPath = React.useMemo(() => data.getIconPath(), [data]); @@ -198,23 +234,22 @@ const QuickOpenItemView: React.FC = observer(({ data, index ); const buttons = React.useMemo(() => quickOpenItemService.getButtons(data.getButtons()), [data]); - const [labelHighlights, descriptionHighlights, detailHighlights] = React.useMemo(() => data.getHighlights(), [data]); - const [mouseOver, setMouseOver] = React.useState(false); const actions = React.useMemo(() => { - const provider = widget.actionProvider; - if (provider && provider.hasActions(data)) { - return provider.getActions(data); + if (actionProvider && actionProvider.hasActions(data)) { + return actionProvider.getActions(data); } - }, [data]); + }, [actionProvider, data]); const runQuickOpenItem = React.useCallback( (event: React.MouseEvent) => { // 如果为多选,则点击 item 为切换选中状态 - if (widget.canSelectMany) { - data.checked = !data.checked; + if (canSelectMany) { + transaction((tx) => { + data.checked.set(!checked, tx); + }); event.stopPropagation(); } else { // 如果为鼠标中键,则为 BACKGROUND 类型 @@ -224,7 +259,7 @@ const QuickOpenItemView: React.FC = observer(({ data, index } } }, - [data], + [data, canSelectMany], ); const runQuickOpenItemAction = React.useCallback( @@ -249,7 +284,7 @@ const QuickOpenItemView: React.FC = observer(({ data, index tabIndex={0} className={cls( { - [styles.item_selected]: widget.selectIndex === index, + [styles.item_selected]: selectIndex === index, [styles.item_border]: showBorder, }, styles.item, @@ -258,11 +293,15 @@ const QuickOpenItemView: React.FC = observer(({ data, index onMouseLeave={() => setMouseOver(false)} aria-label={label} > - {widget.canSelectMany && ( + {canSelectMany && ( (data.checked = (event.target as HTMLInputElement).checked)} + checked={checked} + onChange={(event) => { + transaction((tx) => { + data.checked.set((event.target as HTMLInputElement).checked, tx); + }); + }} /> )} {/* tabIndex is needed here, pls see https://stackoverflow.com/questions/42764494/blur-event-relatedtarget-returns-null */} @@ -314,64 +353,75 @@ const QuickOpenItemView: React.FC = observer(({ data, index className={cls(styles.item_action, action.class)} > ))} - {(mouseOver || widget.selectIndex === index) && + {(mouseOver || selectIndex === index) && buttons?.map((button) => ( onSelectButton(event, button)} button={button} /> ))} ); -}); +}; export const QuickOpenList: React.FC<{ onReady: (api: IRecycleListHandler) => void; onScroll: (props: ListOnScrollProps) => void; -}> = observer(({ onReady, onScroll }) => { +}> = ({ onReady, onScroll }) => { const { widget } = React.useContext(QuickOpenContext); + const items = useAutorun(widget.items); + const validateType = useAutorun(widget.validateType); + const styles_quickopen_list = useDesignStyles(styles.quickopen_list, 'quickopen_list'); const getSize = React.useCallback( - (index) => { - const item = widget.items[index]; + (index: number) => { + const item = items[index]; return item?.getDetail() ? 44 : 22; }, - [widget.items], + [items], ); - return widget.items.length > 0 ? ( + return items.length > 0 ? ( ) : null; -}); +}; -export const QuickOpenProgress = observer(() => { +export const QuickOpenProgress = () => { const { widget } = React.useContext(QuickOpenContext); + const busy = useAutorun(widget.busy); + const progressService: IProgressService = useInjectable(IProgressService); const indicator = progressService.getIndicator(VIEW_CONTAINERS.QUICKPICK_PROGRESS); React.useEffect(() => { - widget.updateProgressStatus(!!widget.busy); - }, [widget.busy]); + widget.updateProgressStatus(!!busy); + }, [busy]); return (
    ); -}); +}; -export const QuickOpenView = observer(() => { +export const QuickOpenView = () => { const { widget } = React.useContext(QuickOpenContext); + const items = useAutorun(widget.items); + const autoFocus = useAutorun(widget.autoFocus); + const selectIndex = useAutorun(widget.selectIndex); + const keepScrollPosition = useAutorun(widget.keepScrollPosition); + const isShow = useAutorun(widget.isShow); + const listApi = React.useRef(); const scrollOffsetBefore = React.useRef(0); @@ -430,8 +480,6 @@ export const QuickOpenView = observer(() => { // 执行 autoFocus React.useEffect(() => { - const { items, autoFocus } = widget; - if (!autoFocus) { return; } @@ -478,84 +526,87 @@ export const QuickOpenView = observer(() => { widget.setSelectIndex(items.length - 1); } } - }, [widget.items, widget.autoFocus]); + }, [items, autoFocus]); React.useEffect(() => { - if (widget.keepScrollPosition) { + if (keepScrollPosition) { listApi.current?.scrollTo(scrollOffsetBefore.current); } else { // smart 效果可以还原 vscode quickopen 上下切换的效果 - listApi.current?.scrollToIndex(widget.selectIndex, 'smart'); + listApi.current?.scrollToIndex(selectIndex, 'smart'); } - if (widget.items.length === 0) { + if (items.length === 0) { return; } // 执行 run in background - const item = widget.items[widget.selectIndex]; + const item = items[selectIndex]; if (!item) { return; } item.run(QuickOpenMode.PREVIEW); - widget.callbacks.onSelect(item, widget.selectIndex); - }, [widget.items, widget.selectIndex, widget.keepScrollPosition]); + widget.callbacks.onSelect(item, selectIndex); + }, [items, selectIndex, keepScrollPosition]); - const onKeydown = React.useCallback((event: React.KeyboardEvent) => { - // 处于 composition 的输入,不做处理,否则在按 enter 后会直接打开选择的第一个文件,并且快捷键完全失效 - if (KEY_CODE_MAP[event.nativeEvent.keyCode] === KeyCodeEnum.KEY_IN_COMPOSITION) { - return; - } - const { key } = KeyCode.createKeyCode(event.nativeEvent); - if (!key) { - return; - } - const length = widget.items.length; - switch (key.keyCode) { - case Key.ARROW_UP.keyCode: { - event.preventDefault(); - event.stopPropagation(); - const selectIndex = widget.selectIndex - 1; - widget.setSelectIndex((length + (selectIndex % length)) % length); - break; - } - case Key.ARROW_DOWN.keyCode: { - event.preventDefault(); - event.stopPropagation(); - const selectIndex = widget.selectIndex + 1; - widget.setSelectIndex(selectIndex % length); - break; + const onKeydown = React.useCallback( + (event: React.KeyboardEvent) => { + // 处于 composition 的输入,不做处理,否则在按 enter 后会直接打开选择的第一个文件,并且快捷键完全失效 + if (KEY_CODE_MAP[event.nativeEvent.keyCode] === KeyCodeEnum.KEY_IN_COMPOSITION) { + return; } - case Key.ESCAPE.keyCode: { - event.preventDefault(); - event.stopPropagation(); - widget.hide(HideReason.CANCELED); - break; + const { key } = KeyCode.createKeyCode(event.nativeEvent); + if (!key) { + return; } - case Key.ENTER.keyCode: { - event.preventDefault(); - event.stopPropagation(); - const item = widget.items[widget.selectIndex]; - if (!item) { - return; + const length = items.length; + switch (key.keyCode) { + case Key.ARROW_UP.keyCode: { + event.preventDefault(); + event.stopPropagation(); + const preSelectIndex = selectIndex - 1; + widget.setSelectIndex((length + (preSelectIndex % length)) % length); + break; } - const hide = item.run(QuickOpenMode.OPEN); - if (hide) { - widget.hide(HideReason.ELEMENT_SELECTED); + case Key.ARROW_DOWN.keyCode: { + event.preventDefault(); + event.stopPropagation(); + const nextSelectIndex = selectIndex + 1; + widget.setSelectIndex(nextSelectIndex % length); + break; } - break; - } - case Key.TAB.keyCode: { - if (widget.toggleTab) { + case Key.ESCAPE.keyCode: { + event.preventDefault(); + event.stopPropagation(); + widget.hide(HideReason.CANCELED); + break; + } + case Key.ENTER.keyCode: { event.preventDefault(); event.stopPropagation(); - widget.toggleTab(); + const item = items[selectIndex]; + if (!item) { + return; + } + const hide = item.run(QuickOpenMode.OPEN); + if (hide) { + widget.hide(HideReason.ELEMENT_SELECTED); + } + break; + } + case Key.TAB.keyCode: { + if (widget.toggleTab) { + event.preventDefault(); + event.stopPropagation(); + widget.toggleTab(); + } + break; } - break; } - } - }, []); + }, + [items, widget, selectIndex], + ); - return widget.isShow ? ( + return isShow ? (
    @@ -564,4 +615,4 @@ export const QuickOpenView = observer(() => {
    ) : null; -}); +}; diff --git a/packages/quick-open/src/browser/quick-open.widget.tsx b/packages/quick-open/src/browser/quick-open.widget.tsx index d953b3004f..d1c3de5a27 100644 --- a/packages/quick-open/src/browser/quick-open.widget.tsx +++ b/packages/quick-open/src/browser/quick-open.widget.tsx @@ -1,5 +1,3 @@ -import { action, computed, makeObservable, observable } from 'mobx'; - import { Autowired, Injectable } from '@opensumi/di'; import { DisposableCollection, @@ -9,10 +7,12 @@ import { QuickOpenActionProvider, QuickOpenItem, addDisposableListener, + isNumber, } from '@opensumi/ide-core-browser'; import { VALIDATE_TYPE } from '@opensumi/ide-core-browser/lib/components'; import { VIEW_CONTAINERS } from '@opensumi/ide-core-browser/lib/layout/view-id'; import { IProgressService } from '@opensumi/ide-core-browser/lib/progress'; +import { derived, observableValue, transaction } from '@opensumi/ide-monaco/lib/common/observable'; import { IAutoFocus, @@ -24,163 +24,80 @@ import { @Injectable({ multiple: true }) export class QuickOpenWidget implements IQuickOpenWidget { - public MAX_HEIGHT = 440; - - @observable - public inputValue = ''; - - @observable - private _isShow = false; - - @observable - public validateType?: VALIDATE_TYPE; - - @observable.shallow - private _items: QuickOpenItem[] = observable.array([]); - - @computed - public get isShow() { - return this._isShow; - } - - @observable.ref - private _actionProvider: QuickOpenActionProvider | null = null; - - @observable.ref - private _autoFocus: IAutoFocus | null = null; - - @observable - private _isPassword = false; - - @observable - private _keepScrollPosition = false; - - @observable - private _busy = false; - - @computed - get isPassword() { - return this._isPassword; - } - - @computed - get selectAll() { - return this.items.every((item) => item.checked); - } - - @observable - private _valueSelection?: [number, number]; - - get valueSelection() { - return this._valueSelection; - } - - @observable - private _canSelectMany?: boolean; - - @computed - get canSelectMany() { - return this._canSelectMany; - } - - @observable - public selectIndex = 0; - - @computed - public get items(): QuickOpenItem[] { - return this._items || []; - } - - @observable - private _inputPlaceholder?: string; - - @computed - get inputPlaceholder() { - return this._inputPlaceholder; - } - - @observable - private _inputEnable?: boolean; - - @computed - get inputEnable() { - return this._inputEnable; - } - - @computed - get actionProvider() { - return this._actionProvider; - } - - @computed - get autoFocus() { - return this._autoFocus; - } - - @computed - get keepScrollPosition() { - return this._keepScrollPosition; - } - - @computed - get busy() { - return this._busy; - } - @Autowired(IProgressService) protected readonly progressService: IProgressService; - private progressResolve?: (value: void | PromiseLike) => void; + readonly MAX_HEIGHT = 440; + readonly inputValue = observableValue(this, ''); + readonly validateType = observableValue(this, undefined); + readonly isShow = observableValue(this, false); + readonly items = observableValue(this, []); + readonly actionProvider = observableValue(this, null); + readonly autoFocus = observableValue(this, null); + readonly selectAll = derived(this, (reader) => this.items.read(reader).every((item) => item.checked.read(reader))); + readonly isPassword = observableValue(this, false); + readonly selectIndex = observableValue(this, 0); + readonly keepScrollPosition = observableValue(this, false); + readonly busy = observableValue(this, false); + readonly valueSelection = observableValue<[number, number] | undefined>(this, undefined); + readonly canSelectMany = observableValue(this, false); + readonly inputPlaceholder = observableValue(this, ''); + readonly inputEnable = observableValue(this, false); + private progressResolve?: (value: void | PromiseLike) => void; private modifierListeners: DisposableCollection = new DisposableCollection(); public renderTab?: () => React.ReactNode; public toggleTab?: () => void; - constructor(public callbacks: IQuickOpenCallbacks) { - makeObservable(this); - } + constructor(readonly callbacks: IQuickOpenCallbacks) {} - @action setSelectIndex(index: number) { - this.selectIndex = index; + transaction((tx) => { + const safeIndex = isNumber(index) ? index : 0; + this.selectIndex.set(safeIndex, tx); + }); } - @action setInputValue(value: string) { - this.inputValue = value; + transaction((tx) => { + this.inputValue.set(value, tx); + }); } - @action show(prefix: string, options: QuickOpenInputOptions): void { - this._isShow = true; - this.inputValue = prefix; - this._inputPlaceholder = options.placeholder; - this._isPassword = !!options.password; - this._inputEnable = options.inputEnable; - this._valueSelection = options.valueSelection; - this._canSelectMany = options.canSelectMany; - this._keepScrollPosition = !!options.keepScrollPosition; - this._busy = !!options.busy; - this.renderTab = options.renderTab; - this.toggleTab = options.toggleTab; - // 获取第一次要展示的内容 - this.callbacks.onType(prefix); - this.registerKeyModsListeners(); + transaction((tx) => { + this.isShow.set(true, tx); + this.inputValue.set(prefix, tx); + this.inputPlaceholder.set(options.placeholder, tx); + this.isPassword.set(!!options.password, tx); + this.inputEnable.set(options.inputEnable, tx); + this.valueSelection.set(options.valueSelection, tx); + this.canSelectMany.set(options.canSelectMany, tx); + this.keepScrollPosition.set(!!options.keepScrollPosition, tx); + this.busy.set(!!options.busy, tx); + + this.renderTab = options.renderTab; + this.toggleTab = options.toggleTab; + // 获取第一次要展示的内容 + this.callbacks.onType(prefix); + this.registerKeyModsListeners(); + }); } - @action hide(reason?: HideReason): void { if (!this.modifierListeners.disposed) { this.modifierListeners.dispose(); } - if (!this._isShow) { + if (!this.isShow.get()) { return; } - this._isShow = false; - this._items = []; + transaction((tx) => { + this.isShow.set(false, tx); + this.items.set([], tx); + }); // Callbacks if (reason === HideReason.ELEMENT_SELECTED) { @@ -192,9 +109,8 @@ export class QuickOpenWidget implements IQuickOpenWidget { this.callbacks.onHide(reason); } - @action blur() { - if (!this._isShow) { + if (!this.isShow.get()) { return; } // 判断移出焦点后是否需要关闭组件 @@ -204,14 +120,14 @@ export class QuickOpenWidget implements IQuickOpenWidget { } } - @action setInput(model: IQuickOpenModel, autoFocus: IAutoFocus, ariaLabel?: string): void { - this._items = model.items; - this._actionProvider = model.actionProvider || null; - this._autoFocus = autoFocus; + transaction((tx) => { + this.items.set(model.items, tx); + this.actionProvider.set(model.actionProvider || null, tx); + this.autoFocus.set(autoFocus, tx); + }); } - @action updateOptions(options: Partial) { Object.keys(options).forEach((key) => { const privateKey = `_${key}`; @@ -221,7 +137,6 @@ export class QuickOpenWidget implements IQuickOpenWidget { }); } - @action updateProgressStatus(visible: boolean) { if (visible === true) { this.progressService.withProgress( diff --git a/packages/quick-open/src/browser/quick-title-bar.ts b/packages/quick-open/src/browser/quick-title-bar.ts index 744fb0c84b..ab2139411a 100644 --- a/packages/quick-open/src/browser/quick-title-bar.ts +++ b/packages/quick-open/src/browser/quick-title-bar.ts @@ -1,12 +1,11 @@ -import { action, computed, makeObservable, observable } from 'mobx'; - import { Autowired, Injectable } from '@opensumi/di'; import { getExternalIcon } from '@opensumi/ide-core-browser'; import { QuickTitleButton, QuickTitleButtonSide } from '@opensumi/ide-core-browser/lib/quick-open'; import { StaticResourceService } from '@opensumi/ide-core-browser/lib/static-resource'; import { Emitter, Event, ThemeIcon, URI, isUndefined } from '@opensumi/ide-core-common'; -import './quick-title-bar.less'; +import { derived, observableValue, transaction } from '@opensumi/ide-monaco/lib/common/observable'; import { IIconService, IThemeService, IconType } from '@opensumi/ide-theme'; +import './quick-title-bar.less'; import { iconPath2URI } from '../common/icon'; @@ -23,29 +22,16 @@ export class QuickTitleBar { private readonly onDidTriggerButtonEmitter: Emitter = new Emitter(); - @observable - private _isAttached: boolean; - - @observable - private _title: string | undefined; - - @computed - public get title() { - return this._title; - } - - @observable - private _step: number | undefined; - - @observable - private _totalSteps: number | undefined; + readonly isAttached = observableValue(this, false); + readonly title = observableValue(this, undefined); + readonly step = observableValue(this, undefined); + readonly totalSteps = observableValue(this, undefined); + readonly buttons = observableValue(this, []); + readonly leftButtons = derived>(this, (reader) => this.buttons.read(reader).filter((btn) => btn.side === QuickTitleButtonSide.LEFT)); - @observable.shallow - private _buttons: QuickTitleButton[] = []; - - constructor() { - makeObservable(this); - } + readonly rightButtons = derived>(this, (reader) => this.buttons + .read(reader) + .filter((btn) => btn.side === QuickTitleButtonSide.RIGHT || typeof btn.side === 'undefined')); get onDidTriggerButton(): Event { return this.onDidTriggerButtonEmitter.event; @@ -55,83 +41,54 @@ export class QuickTitleBar { this.onDidTriggerButtonEmitter.fire(button); } - @computed - get isAttached(): boolean { - return this._isAttached; - } - - @computed - get step(): number | undefined { - return this._step; - } - - @computed - get totalSteps(): number | undefined { - return this._totalSteps; - } - - @computed - get buttons(): QuickTitleButton[] { - if (this._buttons === undefined || this._buttons.length === 0) { - return []; - } - return this._buttons.map((btn, i) => { - if (ThemeIcon.isThemeIcon(btn.iconPath)) { - return { - ...btn, - iconClass: getExternalIcon(btn.iconPath.id), - handle: i, - }; - } - - const iconUri = iconPath2URI( - btn.iconPath as URI | { light: URI; dark: URI }, - this.themeService.getCurrentThemeSync().type, - ); - const iconPath = iconUri && this.staticResourceService.resolveStaticResource(iconUri).toString(); - const iconClass = iconPath && this.iconService.fromIcon('', iconPath, IconType.Background); - return { - ...btn, - iconClass, - handler: i, - }; - }); - } - - @computed - get leftButtons(): ReadonlyArray { - return this.buttons.filter((btn) => btn.side === QuickTitleButtonSide.LEFT); - } - - @computed - get rightButtons(): ReadonlyArray { - return this.buttons.filter((btn) => btn.side === QuickTitleButtonSide.RIGHT || typeof btn.side === 'undefined'); - } - - @action public attachTitleBar( title: string | undefined, step: number | undefined, totalSteps: number | undefined, buttons: QuickTitleButton[] | undefined, ): void { - this._title = title; - this._step = step; - this._totalSteps = totalSteps; - - if (buttons) { - this._buttons = buttons; - } - this._isAttached = true; + transaction((tx) => { + this.title.set(title, tx); + this.step.set(step, tx); + this.totalSteps.set(totalSteps, tx); + + if (buttons) { + this.buttons.set( + buttons.map((btn, i) => { + if (ThemeIcon.isThemeIcon(btn.iconPath)) { + return { + ...btn, + iconClass: getExternalIcon(btn.iconPath.id), + handle: i, + }; + } + const iconUri = iconPath2URI( + btn.iconPath as URI | { light: URI; dark: URI }, + this.themeService.getCurrentThemeSync().type, + ); + const iconPath = iconUri && this.staticResourceService.resolveStaticResource(iconUri).toString(); + const iconClass = iconPath && this.iconService.fromIcon('', iconPath, IconType.Background); + return { + ...btn, + iconClass, + handler: i, + }; + }), + tx, + ); + } + this.isAttached.set(true, tx); + }); } - @action hide(): void { - this._title = undefined; - this._buttons = []; - this._step = undefined; - this._totalSteps = undefined; - this._isAttached = false; + transaction((tx) => { + this.title.set(undefined, tx); + this.buttons.set([], tx); + this.step.set(undefined, tx); + this.totalSteps.set(undefined, tx); + this.isAttached.set(false, tx); + }); } shouldShowTitleBar( diff --git a/packages/quick-open/src/browser/quickInput.inputBox.ts b/packages/quick-open/src/browser/quickInput.inputBox.ts index 98e547047c..8e7240a81b 100644 --- a/packages/quick-open/src/browser/quickInput.inputBox.ts +++ b/packages/quick-open/src/browser/quickInput.inputBox.ts @@ -13,11 +13,7 @@ import { QuickTitleBar } from './quick-title-bar'; @Injectable({ multiple: true }) export class InputBoxImpl { - private _options: QuickInputOptions = {}; - - constructor(options: QuickInputOptions) { - this._options = options; - } + constructor(private _options: QuickInputOptions) {} getDerivedOptionsFromValue: ((value: string) => Promise) | undefined; diff --git a/packages/quick-open/src/common/icon.ts b/packages/quick-open/src/common/icon.ts index 114381a702..734d3caba1 100644 --- a/packages/quick-open/src/common/icon.ts +++ b/packages/quick-open/src/common/icon.ts @@ -5,7 +5,7 @@ export function iconPath2URI(iconPath: URI | { light: URI; dark: URI }, themeTyp return 'codeUri' in iconPath ? iconPath : new URI((iconPath as URI).toString()); } - if ((iconPath.dark || iconPath.light) && themeType) { + if ((iconPath?.dark || iconPath?.light) && themeType) { return themeType === 'dark' ? new URI(iconPath.dark.toString()) : new URI(iconPath.light.toString()); } } diff --git a/packages/scm/__tests__/browser/scm-model.test.ts b/packages/scm/__tests__/browser/scm-model.test.ts index 9ec587048d..f348b492b0 100644 --- a/packages/scm/__tests__/browser/scm-model.test.ts +++ b/packages/scm/__tests__/browser/scm-model.test.ts @@ -72,8 +72,8 @@ describe('test for scm.store.ts', () => { // 只会注册进去首个 SCMProvider expect(store.repoList[0].provider).toEqual(provider1); - expect(store.selectedRepos.length).toBe(1); - expect(store.selectedRepos[0]).toEqual(repo1); + expect(store.selectedRepos.get().length).toBe(1); + expect(store.selectedRepos.get()[0]).toEqual(repo1); repo1.dispose(); expect(store.repoList.length).toBe(0); @@ -101,12 +101,12 @@ describe('test for scm.store.ts', () => { repo1.setSelected(false); repo2.setSelected(true); - expect(store.selectedRepos).toEqual([repo2]); + expect(store.selectedRepos.get()).toEqual([repo2]); expect(store.selectedRepo).toEqual(repo2); repo2.setSelected(false); repo1.setSelected(true); - expect(store.selectedRepos).toEqual([repo1]); + expect(store.selectedRepos.get()).toEqual([repo1]); expect(store.selectedRepo).toEqual(repo1); }); diff --git a/packages/scm/src/browser/components/scm-resource-tree/index.tsx b/packages/scm/src/browser/components/scm-resource-tree/index.tsx index 76f153ab29..d163f60c0d 100644 --- a/packages/scm/src/browser/components/scm-resource-tree/index.tsx +++ b/packages/scm/src/browser/components/scm-resource-tree/index.tsx @@ -2,7 +2,7 @@ import cls from 'classnames'; import React, { FC, memo, useCallback, useEffect, useRef, useState } from 'react'; import { IRecycleTreeHandle, RecycleTree, TreeModel, TreeNodeType } from '@opensumi/ide-components'; -import { IDisposable, isOSX } from '@opensumi/ide-core-browser'; +import { IDisposable, isOSX, useAutorun } from '@opensumi/ide-core-browser'; import { useInjectable } from '@opensumi/ide-core-browser/lib/react-hooks'; import { ViewModelContext } from '../../scm-model'; @@ -194,6 +194,8 @@ const SCMTreeView = memo( onContextMenu, }: TreeViewProps) => { const scmTreeModelService = useInjectable(SCMTreeModelService); + const iconThemeDesc = useAutorun(scmTreeModelService.iconThemeDesc); + const scmTreeService = useInjectable(SCMTreeService); const renderSCMTreeNode = useCallback( (props: ISCMTreeNodeProps) => ( @@ -210,10 +212,10 @@ const SCMTreeView = memo( onContextMenu={onContextMenu} defaultLeftPadding={scmTreeService.isTreeMode ? -4 : 4} leftPadding={scmTreeService.isTreeMode ? 8 : 0} - iconTheme={scmTreeModelService.iconThemeDesc} + iconTheme={iconThemeDesc} /> ), - [model, scmTreeService, scmTreeModelService], + [model, scmTreeService, scmTreeModelService, iconThemeDesc], ); if (isReady && !!model) { diff --git a/packages/scm/src/browser/components/scm-resource-tree/scm-tree-model.service.ts b/packages/scm/src/browser/components/scm-resource-tree/scm-tree-model.service.ts index 4dc229b88d..ee34780639 100644 --- a/packages/scm/src/browser/components/scm-resource-tree/scm-tree-model.service.ts +++ b/packages/scm/src/browser/components/scm-resource-tree/scm-tree-model.service.ts @@ -1,5 +1,3 @@ -import { makeObservable, observable } from 'mobx'; - import { Autowired, INJECTOR_TOKEN, Injectable, Injector } from '@opensumi/di'; import { Decoration, DecorationsManager, IRecycleTreeHandle, TreeNodeType } from '@opensumi/ide-components'; import { @@ -19,6 +17,7 @@ import { ICtxMenuRenderer } from '@opensumi/ide-core-browser/lib/menu/next/rende import { IProgressService } from '@opensumi/ide-core-browser/lib/progress'; import { LabelService } from '@opensumi/ide-core-browser/lib/services'; import { WorkbenchEditorService } from '@opensumi/ide-editor'; +import { observableValue, transaction } from '@opensumi/ide-monaco/lib/common/observable'; import { IIconService, IIconTheme } from '@opensumi/ide-theme'; import { IWorkspaceService } from '@opensumi/ide-workspace'; @@ -128,10 +127,6 @@ export class SCMTreeModelService { } > = new Map(); - constructor() { - makeObservable(this); - } - init() { this.showProgress((this._whenReady = this.initTreeModel(this.scmTreeService.isTreeMode))); this._whenReady.then(() => { @@ -178,16 +173,19 @@ export class SCMTreeModelService { ); } - @observable.deep - public iconThemeDesc: Pick = - defaultIconThemeDesc; + public readonly iconThemeDesc = observableValue(this, defaultIconThemeDesc); private setIconThemeDesc(theme: IIconTheme) { - this.iconThemeDesc = { - hasFolderIcons: !!theme.hasFolderIcons, - hasFileIcons: !!theme.hasFileIcons, - hidesExplorerArrows: !!theme.hidesExplorerArrows, - }; + transaction((tx) => { + this.iconThemeDesc.set( + { + hasFolderIcons: !!theme.hasFolderIcons, + hasFileIcons: !!theme.hasFileIcons, + hidesExplorerArrows: !!theme.hidesExplorerArrows, + }, + tx, + ); + }); } private showProgress(promise: Promise) { diff --git a/packages/scm/src/browser/scm-model.ts b/packages/scm/src/browser/scm-model.ts index 262847a7a2..f61b34f453 100644 --- a/packages/scm/src/browser/scm-model.ts +++ b/packages/scm/src/browser/scm-model.ts @@ -1,5 +1,3 @@ -import { action, makeObservable, observable } from 'mobx'; - import { Autowired, Injectable } from '@opensumi/di'; import { PreferenceService } from '@opensumi/ide-core-browser'; import { @@ -16,6 +14,7 @@ import { dispose, toDisposable, } from '@opensumi/ide-core-common'; +import { observableValue, transaction } from '@opensumi/ide-monaco/lib/common/observable'; import { ISCMMenus, ISCMRepository, ISCMResource, ISCMResourceGroup, SCMService } from '../common'; @@ -244,14 +243,12 @@ export class ViewModelContext extends Disposable { private _currentWorkspace: Uri; - @observable - public selectedRepos = observable.array([]); + public readonly selectedRepos = observableValue(this, []); public alwaysShowActions: boolean; constructor() { super(); - makeObservable(this); this.start(); this.initTreeAlwaysShowActions(); @@ -396,9 +393,10 @@ export class ViewModelContext extends Disposable { this.onDidSCMRepoListChangeEmitter.fire(this.repoList); } - @action private changeSelectedRepos(repos: ISCMRepository[]) { - this.selectedRepos.replace(repos); + transaction((tx) => { + this.selectedRepos.set(repos, tx); + }); const selectedRepo = repos[0]; this.selectedRepo = selectedRepo; this.onDidSelectedRepoChangeEmitter.fire(selectedRepo); diff --git a/packages/scm/src/browser/scm-view-container.tsx b/packages/scm/src/browser/scm-view-container.tsx index f8cafbb636..a5ce672dd5 100644 --- a/packages/scm/src/browser/scm-view-container.tsx +++ b/packages/scm/src/browser/scm-view-container.tsx @@ -1,7 +1,6 @@ -import { observer } from 'mobx-react-lite'; import React, { FC, memo, useCallback, useEffect, useMemo, useRef, useState } from 'react'; -import { AppConfig, IContextKeyService, View, ViewState, useInjectable } from '@opensumi/ide-core-browser'; +import { IContextKeyService, View, ViewState, useAutorun, useInjectable } from '@opensumi/ide-core-browser'; import { InlineMenuBar } from '@opensumi/ide-core-browser/lib/components/actions'; import { LayoutViewSizeConfig } from '@opensumi/ide-core-browser/lib/layout/constants'; import { IContextMenu, IMenuRegistry, MenuId } from '@opensumi/ide-core-browser/lib/menu/next'; @@ -26,7 +25,7 @@ const SCM_EXTRA_PADDING_TOP = 10; export const SCMResourcesView: FC<{ repository: ISCMRepository; viewState: ViewState; -}> = observer(({ repository, viewState }) => { +}> = ({ repository, viewState }) => { const contextKeyService = useInjectable(IContextKeyService); const menuRegistry = useInjectable(IMenuRegistry); const viewModel = useInjectable(ViewModelContext); @@ -118,24 +117,25 @@ export const SCMResourcesView: FC<{ ); -}); +}; SCMResourcesView.displayName = 'SCMResourcesView'; -export const SCMResourcesViewWrapper: FC<{ viewState: ViewState }> = observer((props) => { +export const SCMResourcesViewWrapper: FC<{ viewState: ViewState }> = (props) => { const viewModel = useInjectable(ViewModelContext); + const selectedRepos = useAutorun(viewModel.selectedRepos); - if (!viewModel.selectedRepos.length) { + if (!selectedRepos.length) { return ; } - const selectedRepo = viewModel.selectedRepos[0]; + const selectedRepo = selectedRepos[0]; if (!selectedRepo || !selectedRepo.provider) { return null; } return ; -}); +}; SCMResourcesViewWrapper.displayName = 'SCMResourcesViewWrapper'; diff --git a/packages/scm/src/common/scm.service.ts b/packages/scm/src/common/scm.service.ts index 02a9f34c09..e164ed7723 100644 --- a/packages/scm/src/common/scm.service.ts +++ b/packages/scm/src/common/scm.service.ts @@ -1,5 +1,3 @@ -import { action, computed, makeObservable, observable } from 'mobx'; - import { Injectable } from '@opensumi/di'; import { IInputBaseProps } from '@opensumi/ide-components'; import { @@ -131,10 +129,8 @@ class SCMRepository implements ISCMRepository, IDisposable { private _onDidFocus = this._disposables.add(new Emitter()); readonly onDidFocus: Event = this._onDidFocus.event; - @observable private _selected = false; - @computed get selected(): boolean { return this._selected; } @@ -144,15 +140,12 @@ class SCMRepository implements ISCMRepository, IDisposable { readonly input: ISCMInput = new SCMInput(); - constructor(public readonly provider: ISCMProvider, private disposable: IDisposable) { - makeObservable(this); - } + constructor(public readonly provider: ISCMProvider, private disposable: IDisposable) {} focus(): void { this._onDidFocus.fire(); } - @action setSelected(selected: boolean): void { this._selected = selected; this._onDidChangeSelection.fire(this); diff --git a/packages/status-bar/__tests__/browser/status-bar.service.test.ts b/packages/status-bar/__tests__/browser/status-bar.service.test.ts index f94f8e4d17..d254250c7b 100644 --- a/packages/status-bar/__tests__/browser/status-bar.service.test.ts +++ b/packages/status-bar/__tests__/browser/status-bar.service.test.ts @@ -48,7 +48,7 @@ describe('template test', () => { }); it('new StatusBar elements', () => { - expect(statusBarService.leftEntries.length).toBe(1); + expect(statusBarService.leftEntries.get().length).toBe(1); }); it('modify StatusBar elements', () => { @@ -56,7 +56,7 @@ describe('template test', () => { text: 'GBK', alignment: StatusBarAlignment.RIGHT, }); - expect(statusBarService.rightEntries[0].text).toBe('GBK'); + expect(statusBarService.rightEntries.get()[0].text).toBe('GBK'); }); it('modify not exists StatusBar elements will throw error', () => { @@ -89,7 +89,7 @@ describe('template test', () => { it('delete elements', () => { statusBarService.removeElement(EN_CODING_ENTRY_ID); - expect(statusBarService.leftEntries.length).toBe(0); + expect(statusBarService.leftEntries.get().length).toBe(0); }); it('compare elements', () => { @@ -101,9 +101,9 @@ describe('template test', () => { }); // 加上 beforeEach 的应该有两个 - expect(statusBarService.leftEntries.length).toBe(2); + expect(statusBarService.leftEntries.get().length).toBe(2); // 权重高的在前面 - expect(statusBarService.leftEntries[0].id).toBe('git'); + expect(statusBarService.leftEntries.get()[0].id).toBe('git'); statusBarService.removeElement('git'); }); @@ -124,7 +124,7 @@ describe('template test', () => { text: 'scm', alignment: StatusBarAlignment.RIGHT, }); - expect(statusBarService.rightEntries[0].name).toBe('Source Control'); + expect(statusBarService.rightEntries.get()[0].name).toBe('Source Control'); expect($registerMenu).toHaveBeenCalledTimes(1); expect($registerMenu).toHaveBeenCalledWith('statusbar/context', { command: { id: 'statusbar.toggleElement', label: 'Source Control' }, @@ -149,8 +149,8 @@ describe('template test', () => { text: 'scm-1', alignment: StatusBarAlignment.RIGHT, }); - expect(statusBarService.rightEntries.length).toBe(2); - expect(statusBarService.rightEntries[0].name).toBe('Source Control'); + expect(statusBarService.rightEntries.get().length).toBe(2); + expect(statusBarService.rightEntries.get()[0].name).toBe('Source Control'); // 菜单只应该注册一次 expect($registerMenu).toHaveBeenCalledTimes(1); }); @@ -185,7 +185,7 @@ describe('template test', () => { }); it('setting element tobe hidden', () => { - expect(statusBarService.leftEntries.length).toBe(1); + expect(statusBarService.leftEntries.get().length).toBe(1); statusBarService.addElement('status.scm', { text: 'scm', @@ -193,15 +193,15 @@ describe('template test', () => { hidden: true, }); // 设置隐藏后 leftEntries 长度应该还是一个 - expect(statusBarService.leftEntries.length).toBe(1); + expect(statusBarService.leftEntries.get().length).toBe(1); }); it('toggle element visible', () => { // 默认显示 - expect(statusBarService.leftEntries[0].hidden).toBeFalsy(); + expect(statusBarService.leftEntries.get()[0].hidden).toBeFalsy(); statusBarService.toggleElement(EN_CODING_ENTRY_ID); // 隐藏后 leftEntries 应该长度为 0 - expect(statusBarService.leftEntries.length).toBe(0); + expect(statusBarService.leftEntries.get().length).toBe(0); }); it('the same StatusBar elements should be triggered at the same time', () => { @@ -225,10 +225,10 @@ describe('template test', () => { text: 'other', alignment: StatusBarAlignment.RIGHT, }); - expect(statusBarService.rightEntries.length).toBe(3); + expect(statusBarService.rightEntries.get().length).toBe(3); // 隐藏 scm 相关状态栏 statusBarService.toggleElement('status.scm'); // 隐藏后 leftEntries 应该长度为 1 - expect(statusBarService.rightEntries.length).toBe(1); + expect(statusBarService.rightEntries.get().length).toBe(1); }); }); diff --git a/packages/status-bar/package.json b/packages/status-bar/package.json index 632381de5b..0936836490 100644 --- a/packages/status-bar/package.json +++ b/packages/status-bar/package.json @@ -20,6 +20,7 @@ "@opensumi/events": "^1.0.0", "@opensumi/ide-components": "workspace:*", "@opensumi/ide-core-common": "workspace:*", + "@opensumi/ide-monaco": "workspace:*", "@opensumi/ide-theme": "workspace:*" }, "devDependencies": { diff --git a/packages/status-bar/src/browser/status-bar.service.ts b/packages/status-bar/src/browser/status-bar.service.ts index 1f356530a4..d7ab29f8a6 100644 --- a/packages/status-bar/src/browser/status-bar.service.ts +++ b/packages/status-bar/src/browser/status-bar.service.ts @@ -1,5 +1,3 @@ -import { action, computed, makeObservable, observable } from 'mobx'; - import { Autowired, Injectable } from '@opensumi/di'; import { EventEmitter } from '@opensumi/events'; import { AppConfig, Disposable, IContextKeyService, IDisposable, isUndefined } from '@opensumi/ide-core-browser'; @@ -15,6 +13,7 @@ import { StatusBarState, } from '@opensumi/ide-core-browser/lib/services'; import { CommandService, DisposableCollection, memoize } from '@opensumi/ide-core-common'; +import { derived, observableValue, transaction } from '@opensumi/ide-monaco/lib/common/observable'; @Injectable() export class StatusBarService extends Disposable implements IStatusBarService { @@ -28,8 +27,7 @@ export class StatusBarService extends Disposable implements IStatusBarService { private background: string | undefined; private foreground: string | undefined; - @observable - private entries: Map = new Map(); + private entriesObservable = observableValue>(this, new Map()); @Autowired(CommandService) private commandService: CommandService; @@ -51,11 +49,6 @@ export class StatusBarService extends Disposable implements IStatusBarService { protected disposableCollection = new Map(); - constructor() { - super(); - makeObservable(this); - } - /** * 获取背景颜色 */ @@ -74,7 +67,6 @@ export class StatusBarService extends Disposable implements IStatusBarService { * 设置整个 Status Bar 背景颜色 * @param color */ - @action setBackgroundColor(color?: string | undefined) { this.background = color; this.emitter.emit('backgroundColor', color); @@ -83,7 +75,6 @@ export class StatusBarService extends Disposable implements IStatusBarService { * 设置 Status Bar 所有文字颜色,当设置值为 undefined 时,文件将回复原有颜色配置 * @param color */ - @action setColor(color?: string | undefined) { this.foreground = color; this.emitter.emit('color', color); @@ -91,7 +82,6 @@ export class StatusBarService extends Disposable implements IStatusBarService { // 暴露给其他地方获取配置数据以自定义渲染 // 目前 scm 使用 - @action getElementConfig(entryId: string, entry: StatusBarEntry): StatusBarEntry { // 如果有 command,覆盖自定义的 click 方法 if (entry.command) { @@ -112,7 +102,7 @@ export class StatusBarService extends Disposable implements IStatusBarService { * @returns */ private getEntriesById(id: string) { - return this.entriesArray.filter((entry) => entry.id === id); + return this.entriesArray.get().filter((entry) => entry.id === id); } /** @@ -134,7 +124,6 @@ export class StatusBarService extends Disposable implements IStatusBarService { * @param id * @param entry */ - @action addElement(entryId: string, entry: StatusBarEntry): StatusBarEntryAccessor { const disposables = new DisposableCollection(); entry = this.getElementConfig(entryId, entry); @@ -164,12 +153,22 @@ export class StatusBarService extends Disposable implements IStatusBarService { }); disposables.push(menuDisposer); } - this.entries.set(entryId, entry); + const preEntries = this.entriesObservable.get(); + preEntries.set(entryId, entry); + transaction((tx) => { + this.entriesObservable.set(new Map(preEntries), tx); + }); + disposables.push( Disposable.create(() => { - this.entries.delete(entryId); + const preEntries = this.entriesObservable.get(); + preEntries.delete(entryId); + transaction((tx) => { + this.entriesObservable.set(new Map(preEntries), tx); + }); }), ); + this.disposableCollection.set(entryId, disposables); return { dispose: () => { @@ -181,9 +180,9 @@ export class StatusBarService extends Disposable implements IStatusBarService { }; } - @action toggleElement(entryId: string): void { - const entry = this.entries.get(entryId); + const entries = this.entriesObservable.get(); + const entry = entries.get(entryId); if (entry?.id) { const toggleContextKey = `${entry.id}:toggle`; const hidden = !entry.hidden; @@ -204,15 +203,18 @@ export class StatusBarService extends Disposable implements IStatusBarService { * @param id * @param fields */ - @action setElement(entryId: string, fields: Partial) { - const current = this.entries.get(entryId); + const entries = this.entriesObservable.get(); + const current = entries.get(entryId); if (current) { const entry = { ...current, ...fields, }; - this.entries.set(entryId, this.getElementConfig(entryId, entry)); + entries.set(entryId, this.getElementConfig(entryId, entry)); + transaction((tx) => { + this.entriesObservable.set(new Map(entries), tx); + }); } else { throw new Error(`not found id is ${entryId} element`); } @@ -222,7 +224,6 @@ export class StatusBarService extends Disposable implements IStatusBarService { * 删除一个元素 * @param id */ - @action removeElement(entryId: string) { this.disposableCollection.get(entryId)?.dispose(); this.disposableCollection.delete(entryId); @@ -235,14 +236,14 @@ export class StatusBarService extends Disposable implements IStatusBarService { * @type {StatusBarEntry[]} * @memberof StatusBarService */ - @computed - get entriesArray(): StatusBarEntry[] { - return Array.from(this.entries.values()).sort((left, right) => { + readonly entriesArray = derived(this, (reader) => { + const entries = this.entriesObservable.read(reader); + return Array.from(entries.values()).sort((left, right) => { const lp = left.priority || 0; const rp = right.priority || 0; return rp - lp; }); - } + }); /** * Status Bar 左边的 Item @@ -250,10 +251,10 @@ export class StatusBarService extends Disposable implements IStatusBarService { * @type {StatusBarEntry[]} * @memberof StatusBarService */ - @computed - public get leftEntries(): StatusBarEntry[] { - return this.entriesArray.filter((entry) => !entry.hidden && entry.alignment === StatusBarAlignment.LEFT); - } + readonly leftEntries = derived(this, (reader) => { + const entries = this.entriesArray.read(reader); + return entries.filter((entry) => !entry.hidden && entry.alignment === StatusBarAlignment.LEFT); + }); /** * Status Bar 右边的 Item @@ -262,10 +263,10 @@ export class StatusBarService extends Disposable implements IStatusBarService { * @type {StatusBarEntry[]} * @memberof StatusBarService */ - @computed - public get rightEntries(): StatusBarEntry[] { - return this.entriesArray.filter((entry) => !entry.hidden && entry.alignment === StatusBarAlignment.RIGHT); - } + readonly rightEntries = derived(this, (reader) => { + const entries = this.entriesArray.read(reader); + return entries.filter((entry) => !entry.hidden && entry.alignment === StatusBarAlignment.RIGHT); + }); /** * command 转换 onClick 的方法 diff --git a/packages/status-bar/src/browser/status-bar.view.tsx b/packages/status-bar/src/browser/status-bar.view.tsx index 8e521f3bdb..f24cb44def 100644 --- a/packages/status-bar/src/browser/status-bar.view.tsx +++ b/packages/status-bar/src/browser/status-bar.view.tsx @@ -1,8 +1,7 @@ import cls from 'classnames'; -import { observer } from 'mobx-react-lite'; import React, { memo, useCallback } from 'react'; -import { StatusBarEntry, useEventDrivenState } from '@opensumi/ide-core-browser'; +import { StatusBarEntry, useAutorun, useEventDrivenState } from '@opensumi/ide-core-browser'; import { LayoutViewSizeConfig } from '@opensumi/ide-core-browser/lib/layout/constants'; import { VIEW_CONTAINERS } from '@opensumi/ide-core-browser/lib/layout/view-id'; import { ICtxMenuRenderer, generateCtxMenu } from '@opensumi/ide-core-browser/lib/menu/next'; @@ -12,61 +11,61 @@ import { IStatusBarService } from '@opensumi/ide-core-browser/lib/services'; import { StatusBarItem } from './status-bar-item.view'; import styles from './status-bar.module.less'; -export const StatusBarView = memo( - observer(() => { - const statusBar: IStatusBarService = useInjectable(IStatusBarService); - const ctxMenuRenderer = useInjectable(ICtxMenuRenderer); - const layoutViewSize = useInjectable(LayoutViewSizeConfig); +export const StatusBarView = memo(() => { + const statusBar: IStatusBarService = useInjectable(IStatusBarService); + const leftEntries = useAutorun(statusBar.leftEntries); + const rightEntries = useAutorun(statusBar.rightEntries); + const ctxMenuRenderer = useInjectable(ICtxMenuRenderer); + const layoutViewSize = useInjectable(LayoutViewSizeConfig); - const backgroundColor = useEventDrivenState(statusBar.emitter, 'backgroundColor', () => - statusBar.getBackgroundColor(), - ); - const foregroundColor = useEventDrivenState(statusBar.emitter, 'color', () => statusBar.getColor()); + const backgroundColor = useEventDrivenState(statusBar.emitter, 'backgroundColor', () => + statusBar.getBackgroundColor(), + ); + const foregroundColor = useEventDrivenState(statusBar.emitter, 'color', () => statusBar.getColor()); - const handleCtxMenu = useCallback((e: React.MouseEvent) => { - e.preventDefault(); - const result = generateCtxMenu({ - menus: statusBar.contextMenu, - args: [], - }); + const handleCtxMenu = useCallback((e: React.MouseEvent) => { + e.preventDefault(); + const result = generateCtxMenu({ + menus: statusBar.contextMenu, + args: [], + }); - ctxMenuRenderer.show({ - anchor: { x: e.clientX, y: e.clientY }, - menuNodes: result[1], - }); - }, []); - return ( -
    -
    - {statusBar.leftEntries.length - ? statusBar.leftEntries.map((entry: StatusBarEntry, index: number) => ( - - )) - : null} -
    -
    - {statusBar.rightEntries.length - ? statusBar.rightEntries.map((entry: StatusBarEntry, index: number) => ( - - )) - : null} -
    + ctxMenuRenderer.show({ + anchor: { x: e.clientX, y: e.clientY }, + menuNodes: result[1], + }); + }, []); + return ( +
    +
    + {leftEntries.length + ? leftEntries.map((entry: StatusBarEntry, index: number) => ( + + )) + : null}
    - ); - }), -); +
    + {rightEntries.length + ? rightEntries.map((entry: StatusBarEntry, index: number) => ( + + )) + : null} +
    +
    + ); +}); StatusBarView.displayName = 'StatusBar'; diff --git a/packages/terminal-next/__tests__/browser/view.test.ts b/packages/terminal-next/__tests__/browser/view.test.ts index 3169f9b1a9..d1d7639910 100644 --- a/packages/terminal-next/__tests__/browser/view.test.ts +++ b/packages/terminal-next/__tests__/browser/view.test.ts @@ -24,14 +24,14 @@ describe('Terminal View Test', () => { }); it('Create Widget Without Id', () => { - const group = view.currentGroup; + const group = view.currentGroup.get(); const widget = view.createWidget(group); expect(widget).toBeInstanceOf(Widget); expect(view.empty()).toBeFalsy(); }); it('Remove Group', () => { - const index = view.currentGroupIndex; + const index = view.currentGroupIndex.get(); view.removeGroup(index); expect(view.empty()).toBeTruthy(); }); @@ -39,7 +39,7 @@ describe('Terminal View Test', () => { it('Create Widget With Id', () => { const id = uuid(); view.createGroup(); - const widget = view.createWidget(view.currentGroup, id); + const widget = view.createWidget(view.currentGroup.get(), id); expect(view.empty()).toBeFalsy(); expect(widget.id).toEqual(id); }); @@ -53,9 +53,9 @@ describe('Terminal View Test', () => { const widget11 = view.createWidget(group1); const widget12 = view.createWidget(group1); view.selectWidget(widget11.id); - expect(view.currentWidgetId === widget11.id).toBeTruthy(); + expect(view.currentWidgetId.get() === widget11.id).toBeTruthy(); view.selectWidget(widget12.id); - expect(view.currentWidgetId === widget12.id).toBeTruthy(); + expect(view.currentWidgetId.get() === widget12.id).toBeTruthy(); }); it('Clear View And Clear Event', () => { @@ -83,7 +83,7 @@ describe('Terminal View Test', () => { const group = view.getGroup(index); const widget = view.createWidget(group); view.selectWidget(widget.id); - view.removeWidget(view.currentWidgetId); + view.removeWidget(view.currentWidgetId.get()); }); afterAll(() => { diff --git a/packages/terminal-next/package.json b/packages/terminal-next/package.json index 5377006992..2589e00532 100644 --- a/packages/terminal-next/package.json +++ b/packages/terminal-next/package.json @@ -36,6 +36,7 @@ "@opensumi/ide-dev-tool": "workspace:*", "@opensumi/ide-editor": "workspace:*", "@opensumi/ide-main-layout": "workspace:*", + "@opensumi/ide-monaco": "workspace:*", "@opensumi/ide-overlay": "workspace:*", "@opensumi/ide-status-bar": "workspace:*", "@opensumi/ide-theme": "workspace:*", diff --git a/packages/terminal-next/src/browser/component/resize.view.tsx b/packages/terminal-next/src/browser/component/resize.view.tsx index 581cbc453f..8fb257761e 100644 --- a/packages/terminal-next/src/browser/component/resize.view.tsx +++ b/packages/terminal-next/src/browser/component/resize.view.tsx @@ -1,8 +1,7 @@ import cls from 'classnames'; -import { observer } from 'mobx-react-lite'; import React from 'react'; -import { getIcon, useInjectable } from '@opensumi/ide-core-browser'; +import { getIcon, useAutorun, useInjectable } from '@opensumi/ide-core-browser'; import { ITerminalGroupViewService } from '../../common/controller'; import { IWidget, IWidgetGroup } from '../../common/resize'; @@ -23,8 +22,46 @@ export interface IResizeViewProps { draw: (widget: IWidget) => JSX.Element; } -export default observer((props: IResizeViewProps) => { +const ResizeItem = ({ index, widget, wholeWidth, setEvent, self, left, right, last }) => { + const shadowDynamic = useAutorun(widget.shadowDynamic); + + return ( +
    + setEvent(true)} + stop={() => setEvent(false)} + self={self} + left={left} + right={right} + last={last} + /> +
    + ); +}; + +const ResizePanelItem = ({ widget, dynamic, draw, handleRemoveWidget, widgetsLength }) => { + const _dynamic = useAutorun(dynamic); + + return ( +
    + {draw(widget)} + {widgetsLength > 1 && ( +
    { + handleRemoveWidget(widget.id); + }} + /> + )} +
    + ); +}; + +export default (props: IResizeViewProps) => { const { group, shadow } = props; + const widgets = useAutorun(group.widgets); + const [event, setEvent] = React.useState(false); const [wholeWidth, setWholeWidth] = React.useState(Infinity); const view = useInjectable(ITerminalGroupViewService); @@ -42,61 +79,39 @@ export default observer((props: IResizeViewProps) => { return (
    -
    - {group && - group.widgets.map((widget, index) => { - const left = index - 1 > -1 ? group.widgets[index - 1] : null; - const self = group.widgets[index]; - const right = index + 1 < group.widgets.length ? group.widgets[index + 1] : null; +
    + {widgets && + widgets.map((widget, index) => { + const left = index - 1 > -1 ? widgets[index - 1] : null; + const self = widgets[index]; + const right = index + 1 < widgets.length ? widgets[index + 1] : null; + return ( -
    - setEvent(true)} - stop={() => setEvent(false)} - self={self} - left={left} - right={right} - last={index === group.widgets.length - 1} - /> -
    + ); })}
    -
    - {group && - group.widgets.map((widget) => ( -
    - {props.draw(widget)} - {group.widgets.length > 1 && ( -
    { - handleRemoveWidget(widget.id); - }} - /> - )} -
    - ))} +
    + {widgets && + widgets.map((widget) => ( + + ))}
    ); -}); +}; diff --git a/packages/terminal-next/src/browser/component/tab.item.tsx b/packages/terminal-next/src/browser/component/tab.item.tsx index 2d41c098f5..2ecae61b7b 100644 --- a/packages/terminal-next/src/browser/component/tab.item.tsx +++ b/packages/terminal-next/src/browser/component/tab.item.tsx @@ -1,15 +1,14 @@ import cls from 'classnames'; import debounce from 'lodash/debounce'; -import { observer } from 'mobx-react-lite'; -import React, { KeyboardEvent, createElement, useEffect, useRef } from 'react'; +import React, { KeyboardEvent, createElement, useCallback, useEffect, useRef } from 'react'; import { Icon } from '@opensumi/ide-components/lib/icon/icon'; import { - AppConfig, TERMINAL_COMMANDS, URI, getIcon, localize, + useAutorun, useDesignStyles, useInjectable, } from '@opensumi/ide-core-browser'; @@ -22,7 +21,7 @@ import { ItemProps, ItemType } from '../../common'; import styles from './tab.module.less'; -export const renderInfoItem = observer((props: ItemProps) => { +export const renderInfoItem = (props: ItemProps) => { const iconService = useInjectable(IconService); const handleSelect = debounce(() => props.onClick && props.onClick(), 20); const handleClose = debounce(() => props.onClose && props.onClose(), 20); @@ -31,31 +30,45 @@ export const renderInfoItem = observer((props: ItemProps) => { const styles_item_info_name = useDesignStyles(styles.item_info_name, 'item_info_name'); const styles_tab_close_icon = useDesignStyles(styles.tab_close_icon, 'tab_close_icon'); const layoutViewSize = useInjectable(LayoutViewSizeConfig); - - const handleOnKeyDown = (e: KeyboardEvent) => { - if (e.key === 'Enter' && props.onInputEnter && props.id) { - props.onInputEnter(props.id, (e.target as any).value); - } - }; const ref = useRef(null); + + const { group } = props; + if (!group) { + return null; + } + + const { options, id } = group; + + const editable = useAutorun(group.editable); + const name = useAutorun(group.snapshot); + + const handleOnKeyDown = useCallback( + (e: KeyboardEvent) => { + if (e.key === 'Enter' && props.onInputEnter && id) { + props.onInputEnter(id, (e.target as any).value); + } + }, + [id, props.onInputEnter], + ); + useEffect(() => { if (props.selected) { ref.current?.scrollIntoView(); } - }, [props.selected]); + }, [ref, props.selected]); let iconClass; - if (props.options?.icon) { - if ((props.options.icon as any)?.id) { - iconClass = iconService.fromString(`$(${(props.options.icon as any)?.id})`); - } else if (props.options.icon instanceof URI) { - iconClass = iconService.fromIcon(props.options?.icon.toString()); - } else if ((props.options.icon as any)?.light || (props.options?.icon as any)?.dark) { + if (options?.icon) { + if ((options.icon as any)?.id) { + iconClass = iconService.fromString(`$(${(options.icon as any)?.id})`); + } else if (options.icon instanceof URI) { + iconClass = iconService.fromIcon(options?.icon.toString()); + } else if ((options.icon as any)?.light || (options?.icon as any)?.dark) { iconClass = props.theme === 'light' - ? iconService.fromIcon((props.options.icon as any).light.toString()) - : iconService.fromIcon((props.options.icon as any).dark.toString()); + ? iconService.fromIcon((options.icon as any).light.toString()) + : iconService.fromIcon((options.icon as any).dark.toString()); } } @@ -70,34 +83,32 @@ export const renderInfoItem = observer((props: ItemProps) => { onClick={() => handleSelect()} onContextMenu={(event) => props.onContextMenu && props.onContextMenu(event)} > - {props.editable ? ( + {editable ? ( ele && ele.select()} className={styles.item_info_input} - defaultValue={props.name} + defaultValue={name} onClick={(e) => e.stopPropagation()} - onBlur={() => props.onInputBlur && props.id && props.onInputBlur(props.id)} + onBlur={() => props.onInputBlur && group.id && props.onInputBlur(group.id)} onKeyDown={(e) => handleOnKeyDown(e)} > ) : ( -
    - {props.name !== '' ? ( +
    + {name !== '' ? ( <> - {props.name} + {name} ) : ( )}
    )} - {props.editable ? ( + {editable ? (
    ) : (
    { )}
    ); -}); +}; -export const renderAddItem = observer((props: ItemProps) => { +export const renderAddItem = (props: ItemProps) => { const handleAdd = debounce(() => props.onClick && props.onClick(), 20); const keybinding = props.getKeybinding && props.getKeybinding(TERMINAL_COMMANDS.ADD.id); const createTitle = keybinding ? `${localize('terminal.new')}(${keybinding})` : localize('terminal.new'); @@ -138,7 +149,7 @@ export const renderAddItem = observer((props: ItemProps) => { />
    ); -}); +}; export default (props: ItemProps) => { const type = props.type || ItemType.info; diff --git a/packages/terminal-next/src/browser/component/tab.view.tsx b/packages/terminal-next/src/browser/component/tab.view.tsx index 29e5c8f4e7..fe48809d65 100644 --- a/packages/terminal-next/src/browser/component/tab.view.tsx +++ b/packages/terminal-next/src/browser/component/tab.view.tsx @@ -1,8 +1,7 @@ -import { observer } from 'mobx-react-lite'; import React, { useCallback, useEffect, useRef, useState } from 'react'; import { Scrollbars } from '@opensumi/ide-components'; -import { KeybindingRegistry, useDesignStyles, useInjectable } from '@opensumi/ide-core-browser'; +import { KeybindingRegistry, useAutorun, useDesignStyles, useInjectable } from '@opensumi/ide-core-browser'; import { IThemeService, ThemeType } from '@opensumi/ide-theme'; import { ITerminalGroupViewService, ITerminalRenderProvider, ItemType } from '../../common'; @@ -11,7 +10,7 @@ import { TerminalContextMenuService } from '../terminal.context-menu'; import TabItem from './tab.item'; import styles from './tab.module.less'; -export default observer(() => { +export default () => { const view = useInjectable(ITerminalGroupViewService); const provider = useInjectable(ITerminalRenderProvider); const menuService = useInjectable(TerminalContextMenuService); @@ -21,6 +20,9 @@ export default observer(() => { const [theme, setTheme] = useState('dark'); const styles_tab_contents = useDesignStyles(styles.tab_contents, 'tab_contents'); + const groups = useAutorun(view.groups); + const currentGroup = useAutorun(view.currentGroup); + const init = useCallback(() => { themeService.getCurrentTheme().then((theme) => { setTheme(theme.type); @@ -36,23 +38,17 @@ export default observer(() => { disposable.dispose(); }; }, []); + return (
    (el ? (tabContainer.current = el.ref) : null)}>
    - {view.groups.map((group, index) => { - if (!group) { - return; - } - return ( + {groups.filter(Boolean).map((group, index) => ( group.unedit()} onInputEnter={(_: string, name: string) => group.rename(name)} onClick={() => view.selectGroup(index)} @@ -61,8 +57,7 @@ export default observer(() => { provider={provider} theme={theme} > - ); - })} + ))}
    {
    ); -}); +}; diff --git a/packages/terminal-next/src/browser/component/terminal.select.tsx b/packages/terminal-next/src/browser/component/terminal.select.tsx deleted file mode 100644 index 5cb951a085..0000000000 --- a/packages/terminal-next/src/browser/component/terminal.select.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import { observer } from 'mobx-react-lite'; -import React from 'react'; - -import { useInjectable } from '@opensumi/ide-core-browser'; - -import { ITerminalGroupViewService } from '../../common'; - -import styles from './terminal.module.less'; - -export default observer(() => { - const view = useInjectable(ITerminalGroupViewService); - - const onChange = (event: React.ChangeEvent) => { - const index = event.target.value; - view.selectGroup(parseInt(index, 10)); - }; - - const index = view.currentGroupIndex; - - return ( -
    - -
    - ); -}); diff --git a/packages/terminal-next/src/browser/component/terminal.view.tsx b/packages/terminal-next/src/browser/component/terminal.view.tsx index 74aceb043d..e516939172 100644 --- a/packages/terminal-next/src/browser/component/terminal.view.tsx +++ b/packages/terminal-next/src/browser/component/terminal.view.tsx @@ -1,9 +1,8 @@ import cls from 'classnames'; import debounce from 'lodash/debounce'; -import { observer } from 'mobx-react-lite'; import React from 'react'; -import { FRAME_THREE, getIcon, localize, useEventEffect, useInjectable } from '@opensumi/ide-core-browser'; +import { FRAME_THREE, getIcon, localize, useAutorun, useEventEffect, useInjectable } from '@opensumi/ide-core-browser'; import { ITerminalController, @@ -21,16 +20,20 @@ import TerminalWidget from './terminal.widget'; import '@xterm/xterm/css/xterm.css'; -export default observer(() => { +export default () => { const controller = useInjectable(ITerminalController); - const view = useInjectable(ITerminalGroupViewService); const searchService = useInjectable(ITerminalSearchService); const errorService = useInjectable(ITerminalErrorService); const network = useInjectable(ITerminalNetwork); - const { groups, currentGroupIndex, currentGroupId } = view; + const inputRef = React.useRef(null); const wrapperRef = React.useRef(null); + const view = useInjectable(ITerminalGroupViewService); + const currentGroupId = useAutorun(view.currentGroupId); + const currentGroupIndex = useAutorun(view.currentGroupIndex); + const groups = useAutorun(view.groups); + React.useEffect(() => { const dispose = searchService.onVisibleChange((show) => { if (show && inputRef.current) { @@ -130,12 +133,12 @@ export default observer(() => {
    )} {groups.map((group, index) => { - if (!group.activated) { + if (!group.activated.get()) { return; } return (
    { })}
    ); -}); +}; diff --git a/packages/terminal-next/src/browser/contribution/terminal.command.ts b/packages/terminal-next/src/browser/contribution/terminal.command.ts index f7bcdd08c0..d0b0f3ad27 100644 --- a/packages/terminal-next/src/browser/contribution/terminal.command.ts +++ b/packages/terminal-next/src/browser/contribution/terminal.command.ts @@ -114,7 +114,7 @@ export class TerminalCommandContribution implements CommandContribution, ClientA }, { execute: () => { - const group = this.view.currentGroup; + const group = this.view.currentGroup.get(); if (!group) { return; } @@ -161,7 +161,7 @@ export class TerminalCommandContribution implements CommandContribution, ClientA }, { execute: async () => { - const widgetId = this.view.currentWidgetId; + const widgetId = this.view.currentWidgetId.get(); if (widgetId) { this.view.removeWidget(widgetId); } @@ -193,7 +193,7 @@ export class TerminalCommandContribution implements CommandContribution, ClientA }, { execute: () => { - const widgetId = this.view.currentWidgetId; + const widgetId = this.view.currentWidgetId.get(); const client = this.terminalController.findClientFromWidgetId(widgetId); if (client) { client.selectAll(); @@ -209,7 +209,7 @@ export class TerminalCommandContribution implements CommandContribution, ClientA }, { execute: () => { - const current = this.view.currentWidgetId; + const current = this.view.currentWidgetId.get(); const client = this.terminalController.findClientFromWidgetId(current); if (client) { client.clear(); @@ -267,7 +267,7 @@ export class TerminalCommandContribution implements CommandContribution, ClientA registry.registerCommand(TERMINAL_COMMANDS.COPY, { execute: async () => { - const current = this.view.currentWidgetId; + const current = this.view.currentWidgetId.get(); const client = this.terminalController.findClientFromWidgetId(current); if (client) { await this.clipboardService.writeText(client.getSelection()); @@ -277,7 +277,7 @@ export class TerminalCommandContribution implements CommandContribution, ClientA registry.registerCommand(TERMINAL_COMMANDS.PASTE, { execute: async () => { - const current = this.view.currentWidgetId; + const current = this.view.currentWidgetId.get(); const client = this.terminalController.findClientFromWidgetId(current); if (client) { client.paste(await this.clipboardService.readText()); @@ -287,7 +287,7 @@ export class TerminalCommandContribution implements CommandContribution, ClientA registry.registerCommand(TERMINAL_COMMANDS.SELECT_ALL, { execute: () => { - const current = this.view.currentWidgetId; + const current = this.view.currentWidgetId.get(); const client = this.terminalController.findClientFromWidgetId(current); if (client) { client.selectAll(); @@ -297,9 +297,10 @@ export class TerminalCommandContribution implements CommandContribution, ClientA registry.registerCommand(TERMINAL_COMMANDS.RE_LAUNCH, { execute: () => { - const groups = this.view.groups; + const groups = this.view.groups.get(); for (const group of groups) { - group.widgets.forEach((widget) => { + const widgets = group.widgets.get(); + widgets.forEach((widget) => { const client = this.terminalController.findClientFromWidgetId(widget.id); if (client) { client.reset(); @@ -318,8 +319,8 @@ export class TerminalCommandContribution implements CommandContribution, ClientA registry.registerCommand(TERMINAL_COMMANDS.FOCUS_NEXT_TERMINAL, { execute: () => { - const group = this.view.currentGroup; - if (group.widgets.length <= 1) { + const group = this.view.currentGroup.get(); + if (group && group.widgets.get().length <= 1) { return; } const client = this.getNextOrPrevTerminalClient('next'); @@ -329,8 +330,8 @@ export class TerminalCommandContribution implements CommandContribution, ClientA registry.registerCommand(TERMINAL_COMMANDS.FOCUS_PREVIOUS_TERMINAL, { execute: () => { - const group = this.view.currentGroup; - if (group.widgets.length <= 1) { + const group = this.view.currentGroup.get(); + if (group && group.widgets.get().length <= 1) { return; } const client = this.getNextOrPrevTerminalClient('prev'); @@ -340,7 +341,7 @@ export class TerminalCommandContribution implements CommandContribution, ClientA registry.registerCommand(TERMINAL_COMMANDS.KILL_PROCESS, { execute: async () => { - const current = this.view.currentWidgetId; + const current = this.view.currentWidgetId.get(); const client = this.terminalController.findClientFromWidgetId(current); if (client) { const select = client.getSelection(); @@ -357,17 +358,22 @@ export class TerminalCommandContribution implements CommandContribution, ClientA } private getNextOrPrevTerminalClient(kind: 'next' | 'prev'): ITerminalClient | undefined { - const group = this.view.currentGroup; - const currentIdx = group.widgets.findIndex((w) => w.id === this.view.currentWidgetId); + const group = this.view.currentGroup.get(); + if (!group) { + return; + } + + const widgets = group.widgets.get(); + const currentIdx = widgets.findIndex((w) => w.id === this.view.currentWidgetId.get()); - let index; + let index: number; if (kind === 'next') { - index = currentIdx === group.widgets.length - 1 ? 0 : currentIdx + 1; + index = currentIdx === widgets.length - 1 ? 0 : currentIdx + 1; } else { - index = currentIdx === 0 ? group.widgets.length - 1 : currentIdx - 1; + index = currentIdx === 0 ? widgets.length - 1 : currentIdx - 1; } - const widget = group.widgets[index]; + const widget = widgets[index]; return this.terminalController.findClientFromWidgetId(widget.id); } } diff --git a/packages/terminal-next/src/browser/terminal.api.ts b/packages/terminal-next/src/browser/terminal.api.ts index c61c089585..d48b22e394 100644 --- a/packages/terminal-next/src/browser/terminal.api.ts +++ b/packages/terminal-next/src/browser/terminal.api.ts @@ -2,6 +2,7 @@ import capitalize from 'lodash/capitalize'; import { Autowired, Injectable } from '@opensumi/di'; import { Emitter, Event } from '@opensumi/ide-core-common'; +import { transaction } from '@opensumi/ide-monaco/lib/common/observable'; import { ITerminalApiService, @@ -67,7 +68,7 @@ export class TerminalApiService implements ITerminalApiService { return Array.from(this.controller.clients.values()).map((v) => ({ id: v.id, name: v.name, - isActive: this.view.currentWidgetId === v.id, + isActive: this.view.currentWidgetId.get() === v.id, })); } @@ -164,7 +165,10 @@ export class TerminalApiService implements ITerminalApiService { const groupIndex = this.view.createGroup(); const group = this.view.getGroup(groupIndex); const widget = this.view.createWidget(group, widgetId, false, true); - widget.name = capitalize(uniqName); + transaction((tx) => { + widget.name.set(capitalize(uniqName), tx); + }); + this.view.selectWidget(widgetId); widget.onRender(() => { diff --git a/packages/terminal-next/src/browser/terminal.client.ts b/packages/terminal-next/src/browser/terminal.client.ts index 2a76a87f22..8788ea7a41 100644 --- a/packages/terminal-next/src/browser/terminal.client.ts +++ b/packages/terminal-next/src/browser/terminal.client.ts @@ -17,6 +17,7 @@ import { } from '@opensumi/ide-core-common'; import { WorkbenchEditorService } from '@opensumi/ide-editor/lib/common'; import { IFileServiceClient } from '@opensumi/ide-file-service/lib/common'; +import { transaction } from '@opensumi/ide-monaco/lib/common/observable'; import { IMessageService } from '@opensumi/ide-overlay'; import { IVariableResolverService } from '@opensumi/ide-variable/lib/common'; import { IWorkspaceService } from '@opensumi/ide-workspace/lib/common'; @@ -191,7 +192,9 @@ export class TerminalClient extends Disposable implements ITerminalClient { this.addDispose( this.internalService.onProcessChange((e) => { if (e.sessionId === this.id) { - this.widget.processName = e.processName; + transaction((tx) => { + this.widget.processName.set(e.processName, tx); + }); } }), ); @@ -281,8 +284,9 @@ export class TerminalClient extends Disposable implements ITerminalClient { if (!options.cwd) { // resolve cwd from the group first widget const group = widget.group; - if (group.widgets.length > 1 && group.widgets[0]) { - const cwd = await this.internalService.getCwd(group.widgets[0].id); + const widgets = group.widgets.get(); + if (widgets.length > 1 && widgets[0]) { + const cwd = await this.internalService.getCwd(widgets[0].id); if (cwd) { options.cwd = cwd; } @@ -755,7 +759,7 @@ export class TerminalClient extends Disposable implements ITerminalClient { } updateTerminalName(options: { name: string }) { - if (!this.name && !this._widget.name) { + if (!this.name && !this._widget.name.get()) { this._widget.rename(options.name || this.name); } } diff --git a/packages/terminal-next/src/browser/terminal.controller.ts b/packages/terminal-next/src/browser/terminal.controller.ts index 2fa5f06d9d..2e05889616 100644 --- a/packages/terminal-next/src/browser/terminal.controller.ts +++ b/packages/terminal-next/src/browser/terminal.controller.ts @@ -321,16 +321,6 @@ export class TerminalController extends WithEventBus implements ITerminalControl let firstAvailableId = ''; const { groups, current } = history; - // const ids: (string | { client: string })[] = []; - - // groups.forEach((widgets) => ids.push(...widgets.map((widget) => widget.client))); - - // 之前OpenSumi的Check终端活跃机制是有问题的,暂时不启用,这部分逻辑在PtyService会兜住 - // const checked = await this.service.check(ids.map((id) => (typeof id === 'string' ? id : id.clientId))); - // if (!checked) { - // return; - // } - for (const widgets of groups) { if (!widgets) { continue; @@ -397,7 +387,7 @@ export class TerminalController extends WithEventBus implements ITerminalControl await Promise.all(promises); } - const selectedIndex = this.terminalView.groups.findIndex((group) => group.widgetsMap.has(currentWidgetId)); + const selectedIndex = this.terminalView.groups.get().findIndex((group) => group.widgetsMap.has(currentWidgetId)); if (selectedIndex > -1 && currentWidgetId) { this.terminalView.selectWidget(currentWidgetId); @@ -501,7 +491,7 @@ export class TerminalController extends WithEventBus implements ITerminalControl this.terminalView.selectWidget(current.id); } else { this.terminalView.selectGroup( - this.terminalView.currentGroupIndex > -1 ? this.terminalView.currentGroupIndex : 0, + this.terminalView.currentGroupIndex.get() > -1 ? this.terminalView.currentGroupIndex.get() : 0, ); } }), @@ -521,7 +511,7 @@ export class TerminalController extends WithEventBus implements ITerminalControl this.terminalView.selectWidget(widget.id); } else { this.terminalView.selectGroup( - this.terminalView.currentGroupIndex > -1 ? this.terminalView.currentGroupIndex : 0, + this.terminalView.currentGroupIndex.get() > -1 ? this.terminalView.currentGroupIndex.get() : 0, ); } } @@ -569,11 +559,12 @@ export class TerminalController extends WithEventBus implements ITerminalControl toJSON() { const groups: { client: string }[][] = []; - let cClient = this._clients.get(this.terminalView.currentWidgetId); - this.terminalView.groups.forEach((wGroup) => { + let cClient = this._clients.get(this.terminalView.currentWidgetId.get()); + this.terminalView.groups.get().forEach((wGroup) => { const group: { client: string }[] = []; - wGroup.widgets.forEach((widget) => { + const widgets = wGroup.widgets.get(); + widgets.forEach((widget) => { const client = this._clients.get(widget.id); const disablePersistence = !this.preferenceService.get(CodeTerminalSettingId.EnablePersistentSessions) || @@ -723,13 +714,16 @@ export class TerminalController extends WithEventBus implements ITerminalControl } clearCurrentGroup() { - this.terminalView.currentGroup && - this.terminalView.currentGroup.widgets.forEach((widget) => { + const group = this.terminalView.currentGroup.get(); + if (group) { + const widgets = group.widgets.get(); + widgets.forEach((widget) => { const client = this._clients.get(widget.id); if (client) { client.clear(); } }); + } } clearAllGroups() { diff --git a/packages/terminal-next/src/browser/terminal.search.ts b/packages/terminal-next/src/browser/terminal.search.ts index cda5549118..b96cc4be2f 100644 --- a/packages/terminal-next/src/browser/terminal.search.ts +++ b/packages/terminal-next/src/browser/terminal.search.ts @@ -24,7 +24,7 @@ export class TerminalSearchService implements ITerminalSearchService { onVisibleChange: Event = this._onVisibleChange.event; get client(): ITerminalClient | undefined { - return this.controller.findClientFromWidgetId(this.terminalView.currentWidget.id); + return this.controller.findClientFromWidgetId(this.terminalView.currentWidget.get().id); } open() { diff --git a/packages/terminal-next/src/browser/terminal.view.ts b/packages/terminal-next/src/browser/terminal.view.ts index 316dfb4880..b21c90f8ea 100644 --- a/packages/terminal-next/src/browser/terminal.view.ts +++ b/packages/terminal-next/src/browser/terminal.view.ts @@ -1,7 +1,6 @@ -import { action, computed, makeObservable, observable } from 'mobx'; - import { Autowired, Injectable } from '@opensumi/di'; import { Disposable, Emitter, Event } from '@opensumi/ide-core-browser'; +import { derived, observableValue, transaction } from '@opensumi/ide-monaco/lib/common/observable'; import { IShellLaunchConfig, @@ -13,32 +12,18 @@ import { } from '../common'; export class Widget extends Disposable implements IWidget { - protected _id: string; protected _group: WidgetGroup; protected _element: HTMLDivElement; protected _show: boolean; protected _error: boolean; - @observable - dynamic = 0; - - @observable - shadowDynamic = 0; + readonly dynamic = observableValue(this, 0); + readonly shadowDynamic = observableValue(this, 0); + readonly name = observableValue(this, ''); + readonly processName = observableValue(this, ''); - @observable - name = ''; - - @observable - processName: string | undefined; - - constructor(id: string, public reuse: boolean = false, public recovery: boolean = false) { + constructor(public readonly id: string, public reuse: boolean = false, public recovery: boolean = false) { super(); - makeObservable(this); - this._id = id; - } - - get id() { - return this._id; } get group() { @@ -88,22 +73,28 @@ export class Widget extends Disposable implements IWidget { onShow: Event = this._onShow.event; onError: Event = this._onError.event; - @action resize(dynamic?: number) { - this.dynamic = dynamic || this.shadowDynamic; - this.shadowDynamic = this.dynamic; + transaction((tx) => { + const dynamicValue = dynamic || this.shadowDynamic.get(); + + this.dynamic.set(dynamicValue, tx); + this.shadowDynamic.set(dynamicValue, tx); + }); this._onResize.fire(); } - @action increase(increment: number) { - this.shadowDynamic += increment; + transaction((tx) => { + const preValue = this.shadowDynamic.get(); + this.shadowDynamic.set(preValue + increment, tx); + }); this._onResize.fire(); } - @action rename(name: string) { - this.name = name; + transaction((tx) => { + this.name.set(name, tx); + }); } } @@ -116,20 +107,11 @@ export class WidgetGroup extends Disposable implements IWidgetGroup { protected _name: string; protected _activated: boolean; - @observable - widgets: Widget[] = []; - - @observable - editable = false; - - @observable - activated = false; - - @observable - name = ''; - - @observable - currentId: string; + readonly widgets = observableValue(this, []); + readonly editable = observableValue(this, false); + readonly activated = observableValue(this, false); + readonly name = observableValue(this, ''); + readonly currentId = observableValue(this, ''); widgetsMap: Map = new Map(); @@ -149,54 +131,62 @@ export class WidgetGroup extends Disposable implements IWidgetGroup { } get length() { - return this.widgets.length; + return this.widgets.get().length; } get first() { - return this.widgets[0]; + return this.widgets.get()[0]; } get last() { - return this.widgets[this.length - 1]; - } - - get current() { - return this.widgetsMap.get(this.currentId); + return this.widgets.get()[this.length - 1]; } - @computed - get snapshot() { - return this.name || this.current?.name || this.processName || ''; - } + readonly current = derived(this, (reader) => { + const currentId = this.currentId.read(reader); + return this.widgetsMap.get(currentId); + }); - @computed - get processName() { - return this.current?.processName; - } + readonly snapshot = derived(this, (reader) => { + const current = this.current.read(reader); + return this.name.read(reader) || current?.name.read(reader) || current?.processName.read(reader) || ''; + }); - @action addWidget(widget: Widget) { - this.widgets.push(widget); + transaction((tx) => { + const preWidgets = this.widgets.get(); + this.widgets.set([...preWidgets, widget], tx); + }); this.widgetsMap.set(widget.id, widget); - if (!this.currentId) { - this.currentId = widget.id; + if (!this.currentId.get()) { + transaction((tx) => { + this.currentId.set(widget.id, tx); + }); } this._averageLayout(); } findWidget(widget: Widget) { - return this.widgets.findIndex((item) => item.id === widget.id); + return this.widgets.get().findIndex((item) => item.id === widget.id); } - @action selectWidget(widget: Widget) { - this.currentId = widget.id; + transaction((tx) => { + this.currentId.set(widget.id, tx); + }); } removeWidgetByIndex(index: number) { - const widget = this.widgets.splice(index, 1); + const widgets = this.widgets.get(); + const widget = widgets.splice(index, 1); this.widgetsMap.delete(widget[0].id); + transaction((tx) => { + this.widgets.set( + widgets.filter((w) => w !== widget[0]), + tx, + ); + }); this._averageLayout(); if (this.last) { @@ -206,31 +196,34 @@ export class WidgetGroup extends Disposable implements IWidgetGroup { return widget[0]; } - @action edit() { - this.editable = true; + transaction((tx) => { + this.editable.set(true, tx); + }); } - @action unedit() { - this.editable = false; + transaction((tx) => { + this.editable.set(false, tx); + }); } - @action rename(name: string) { - this.name = name; - this.editable = false; + transaction((tx) => { + this.name.set(name, tx); + this.editable.set(false, tx); + }); } private _isLast(widget: Widget) { - return widget.id === this.widgets[this.widgets.length - 1].id; + return widget.id === this.widgets.get()[this.widgets.get().length - 1].id; } private _averageLayout() { - const average = Math.round((WidgetGroup.whole / this.widgets.length) * WidgetGroup.float) / WidgetGroup.float; - this.widgets.forEach((widget) => { + const average = Math.round((WidgetGroup.whole / this.widgets.get().length) * WidgetGroup.float) / WidgetGroup.float; + this.widgets.get().forEach((widget) => { if (this._isLast(widget)) { - widget.resize(WidgetGroup.whole - average * (this.widgets.length - 1)); + widget.resize(WidgetGroup.whole - average * (this.widgets.get().length - 1)); } else { widget.resize(average); } @@ -240,41 +233,35 @@ export class WidgetGroup extends Disposable implements IWidgetGroup { @Injectable() export class TerminalGroupViewService implements ITerminalGroupViewService { - protected _widgets: Map; - - @observable - groups: WidgetGroup[] = observable.array([]); - - @observable - currentGroupId = ''; - - @observable - currentGroupIndex = -1; - @Autowired(ITerminalInternalService) private readonly service: ITerminalInternalService; + protected _widgets: Map = new Map(); + + readonly groups = observableValue(this, []); + readonly currentGroupIndex = observableValue(this, -1); + readonly currentGroupId = observableValue(this, ''); + protected _onWidgetCreated = new Emitter(); protected _onWidgetSelected = new Emitter(); protected _onWidgetDisposed = new Emitter(); protected _onWidgetEmpty = new Emitter(); - constructor() { - makeObservable(this); - this._widgets = new Map(); - } - - get currentGroup() { - return this.groups[this.currentGroupIndex]; - } + readonly currentGroup = derived(this, (reader) => { + const groups = this.groups.read(reader); + const index = this.currentGroupIndex.read(reader); + return groups[index]; + }); - get currentWidget() { - return this.getWidget(this.currentGroup.currentId); - } + readonly currentWidget = derived(this, (reader) => { + const group = this.currentGroup.read(reader); + return group && this.getWidget(group.currentId.read(reader)); + }); - get currentWidgetId() { - return this.currentGroup && this.currentGroup.currentId; - } + readonly currentWidgetId = derived(this, (reader) => { + const group = this.currentGroup.read(reader); + return group && group.currentId.read(reader); + }); onWidgetCreated = this._onWidgetCreated.event; onWidgetSelected = this._onWidgetSelected.event; @@ -282,24 +269,26 @@ export class TerminalGroupViewService implements ITerminalGroupViewService { onWidgetEmpty = this._onWidgetEmpty.event; getGroup(index: number): WidgetGroup { - if (index > this.groups.length - 1) { + if (index > this.groups.get().length - 1) { throw new Error('out of groups length'); } - return this.groups[index]; + return this.groups.get()[index]; } - @action private _doSelectGroup(index: number) { const group = this.getGroup(index); - this.currentGroupIndex = index; - this.currentGroupId = group.id; - group.activated = true; + transaction((tx) => { + this.currentGroupIndex.set(index, tx); + this.currentGroupId.set(group.id, tx); + group.activated.set(true, tx); + }); // 恢复的 group.current 为空,手动选择第一个 widget if (!group.current && group.first) { group.selectWidget(group.first); } - if (group.current) { - this._onWidgetSelected.fire(group.current); + const current = group.current.get(); + if (current) { + this._onWidgetSelected.fire(current); this.resize(); } } @@ -308,11 +297,13 @@ export class TerminalGroupViewService implements ITerminalGroupViewService { this._doSelectGroup(index); } - @action private _doCreateGroup(id?: string, options?: IShellLaunchConfig) { const group = new WidgetGroup(id, options); - this.groups.push(group); - return this.groups.length - 1; + transaction((tx) => { + const preGroups = this.groups.get(); + this.groups.set([...preGroups, group], tx); + }); + return this.groups.get().length - 1; } createGroup(options?: IShellLaunchConfig) { @@ -325,26 +316,35 @@ export class TerminalGroupViewService implements ITerminalGroupViewService { if (this.empty()) { this._onWidgetEmpty.fire(); } else { - if (index === this.currentGroupIndex) { - this._doSelectGroup(this.groups.length - 1); + const currentGroupIndex = this.currentGroupIndex.get(); + if (index === currentGroupIndex) { + this._doSelectGroup(this.groups.get().length - 1); } - if (index < this.currentGroupIndex) { - this._doSelectGroup(this.currentGroupIndex - 1); + if (index < currentGroupIndex) { + this._doSelectGroup(currentGroupIndex - 1); } } } - @action private _doRemoveGroup(index: number) { - const [group] = this.groups.splice(index, 1); + const preGroups = this.groups.get(); + + const [group] = preGroups.splice(index, 1); if (group) { - group.widgets.forEach((widget) => { + group.widgets.get().forEach((widget) => { this._widgets.delete(widget.id); widget.dispose(); this._onWidgetDisposed.fire(widget); }); group.dispose(); + + transaction((tx) => { + this.groups.set( + preGroups.filter((g) => g.id !== group.id), + tx, + ); + }); } this._checkIfEmpty(index); @@ -367,7 +367,7 @@ export class TerminalGroupViewService implements ITerminalGroupViewService { selectWidget(id: string) { const widget = this.getWidget(id); const group = widget.group; - const index = this.groups.findIndex((g) => g.id === group.id); + const index = this.groups.get().findIndex((g) => g.id === group.id); group.selectWidget(widget); this.selectGroup(index); } @@ -392,22 +392,26 @@ export class TerminalGroupViewService implements ITerminalGroupViewService { removeWidget(id: string) { const widget = this.getWidget(id); const group = widget.group; - const groupIndex = this.groups.findIndex((g) => group.id === g.id); + + const groupIndex = this.groups.get().findIndex((g) => group.id === g.id); const index = group.findWidget(widget); group.removeWidgetByIndex(index); + this._widgets.delete(id); widget.dispose(); this._onWidgetDisposed.fire(widget); this._checkIfGroupEmpty(groupIndex); - if (group.current) { - this._onWidgetSelected.fire(group.current); + const current = group.current.get(); + if (current) { + this._onWidgetSelected.fire(current); } } resize() { - if (this.currentGroup) { - this.currentGroup.widgets.forEach((widget) => { + const group = this.currentGroup.get(); + if (group) { + group.widgets.get().forEach((widget) => { widget.resize(); }); } @@ -417,9 +421,10 @@ export class TerminalGroupViewService implements ITerminalGroupViewService { return this._widgets.size === 0; } - @action clear() { - this.groups = observable.array([]); + transaction((tx) => { + this.groups.set([], tx); + }); this._widgets.clear(); this._onWidgetEmpty.fire(); } diff --git a/packages/terminal-next/src/common/controller.ts b/packages/terminal-next/src/common/controller.ts index ffc6a09a59..cd347cf0ff 100644 --- a/packages/terminal-next/src/common/controller.ts +++ b/packages/terminal-next/src/common/controller.ts @@ -1,7 +1,6 @@ import { IContextKeyService } from '@opensumi/ide-core-browser'; import { Deferred, Disposable, Event, IDisposable, Uri } from '@opensumi/ide-core-common'; - -// eslint-disable-next-line import/no-restricted-paths +import { IObservable } from '@opensumi/ide-monaco/lib/common/observable'; import { ITerminalClient, @@ -129,12 +128,12 @@ export interface ITerminalSearchService { export const ITerminalGroupViewService = Symbol('ITerminalGroupViewService'); export interface ITerminalGroupViewService { - currentGroupIndex: number; - currentGroupId: string; - currentWidgetId: string; - currentGroup: IWidgetGroup; - currentWidget: IWidget; - groups: IWidgetGroup[]; + readonly groups: IObservable; + readonly currentGroupIndex: IObservable; + readonly currentGroup: IObservable; + readonly currentGroupId: IObservable; + readonly currentWidgetId: IObservable; + readonly currentWidget: IObservable; createGroup(): number; getGroup(index: number): IWidgetGroup; diff --git a/packages/terminal-next/src/common/render.ts b/packages/terminal-next/src/common/render.ts index 25c3beb398..7d1e79836f 100644 --- a/packages/terminal-next/src/common/render.ts +++ b/packages/terminal-next/src/common/render.ts @@ -1,6 +1,6 @@ import { ThemeType } from '@opensumi/ide-theme/lib/common'; -import { IShellLaunchConfig } from './pty'; +import { IWidgetGroup } from '../index'; export enum ItemType { info = 0, @@ -8,12 +8,9 @@ export enum ItemType { } export interface ItemProps { - id?: string; - name?: string; + group?: IWidgetGroup; selected?: boolean; type?: ItemType; - editable?: boolean; - options?: IShellLaunchConfig; onClick?: () => void; onClose?: () => void; onInputBlur?: (id: string) => void; diff --git a/packages/terminal-next/src/common/resize.ts b/packages/terminal-next/src/common/resize.ts index c5951cf48f..7cd389b3da 100644 --- a/packages/terminal-next/src/common/resize.ts +++ b/packages/terminal-next/src/common/resize.ts @@ -1,19 +1,22 @@ import { Disposable, Event } from '@opensumi/ide-core-common'; +import { IObservable, ISettableObservable } from '@opensumi/ide-monaco/lib/common/observable'; import { IShellLaunchConfig } from './pty'; export interface IWidget extends Disposable { + dynamic: IObservable; + shadowDynamic: IObservable; + name: ISettableObservable; + processName: ISettableObservable; + id: string; - name: string; - processName?: string; - dynamic: number; - shadowDynamic: number; element: HTMLDivElement; group: IWidgetGroup; reuse: boolean; recovery: boolean; show: boolean; error: boolean; + resize: (dynamic?: number) => void; increase: (increment: number) => void; rename(name: string): void; @@ -25,16 +28,17 @@ export interface IWidget extends Disposable { } export interface IWidgetGroup extends Disposable { + name: IObservable; + snapshot: IObservable; + activated: IObservable; + editable: IObservable; + widgets: IObservable; + id: string; - name: string; options?: IShellLaunchConfig; - editable: boolean; - activated: boolean; length: number; - widgets: IWidget[]; widgetsMap: Map; last: IWidget; - snapshot: string; addWidget(widget: IWidget): void; removeWidgetByIndex: (index: number) => IWidget; edit(): void; diff --git a/packages/testing/src/browser/components/testing.explorer.tree.tsx b/packages/testing/src/browser/components/testing.explorer.tree.tsx index 7712fda6d5..c3cccd3fbd 100644 --- a/packages/testing/src/browser/components/testing.explorer.tree.tsx +++ b/packages/testing/src/browser/components/testing.explorer.tree.tsx @@ -1,4 +1,3 @@ -import { observer } from 'mobx-react-lite'; import React, { useEffect, useState } from 'react'; import { BasicRecycleTree, IRecycleTreeHandle } from '@opensumi/ide-components/lib/recycle-tree'; @@ -16,7 +15,7 @@ import { TestTreeItem, TestTreeViewModelImpl } from '../test-tree-view.model'; import styles from './testing.module.less'; -export const TestingExplorerTree: React.FC<{}> = observer(() => { +export const TestingExplorerTree: React.FC<{}> = () => { const testViewModel = useInjectable(TestTreeViewModelToken); const testService = useInjectable(TestServiceToken); const commandService = useInjectable(CommandService); @@ -137,4 +136,4 @@ export const TestingExplorerTree: React.FC<{}> = observer(() => { )}
    ); -}); +}; diff --git a/packages/toolbar/src/browser/toolbar.view.service.tsx b/packages/toolbar/src/browser/toolbar.view.service.tsx index 782be5dbc0..88e5d59fb1 100644 --- a/packages/toolbar/src/browser/toolbar.view.service.tsx +++ b/packages/toolbar/src/browser/toolbar.view.service.tsx @@ -1,4 +1,3 @@ -import { makeObservable, observable } from 'mobx'; import React from 'react'; import { Autowired, Injectable } from '@opensumi/di'; @@ -91,25 +90,15 @@ export class ToolBarViewService implements IToolBarViewService { * @deprecated */ getVisibleElements(position: ToolBarPosition): (IToolBarComponent | IToolBarAction)[] { - // const index = mappedIndex[position]; - // if (index === undefined) { - // getDebugLogger('Toolbar').warn('getVisibleElements with invalid position:', position); - // return []; - // } - // return this.elements[index] - // .filter((handle) => handle.visible) - // .map((handle) => handle.element); return []; } } export class ToolBarElementHandle extends Disposable implements IToolBarElementHandle { - @observable public visible = true; constructor(public readonly element: IToolBarAction | IToolBarComponent) { super(); - makeObservable(this); } setVisible(visible: boolean) { diff --git a/packages/toolbar/src/browser/toolbar.view.tsx b/packages/toolbar/src/browser/toolbar.view.tsx index f072e946f1..e8514b053f 100644 --- a/packages/toolbar/src/browser/toolbar.view.tsx +++ b/packages/toolbar/src/browser/toolbar.view.tsx @@ -1,6 +1,5 @@ import cls from 'classnames'; import debounce from 'lodash/debounce'; -import { observer } from 'mobx-react-lite'; import React from 'react'; import { Disposable, ToolbarLocation } from '@opensumi/ide-core-browser'; @@ -9,7 +8,7 @@ import styles from './toolbar.module.less'; declare let ResizeObserver: any; -export const ToolBar = observer, 'className'>>(({ className }) => { +export const ToolBar = ({ className }: Pick, 'className'>) => { const toolbarRef = React.useRef(); React.useEffect(() => { if (toolbarRef.current) { @@ -60,6 +59,6 @@ export const ToolBar = observer, 'className'>>
    ); -}); +}; ToolBar.displayName = 'ToolBar'; diff --git a/packages/workspace-edit/src/browser/refactor-preview.service.tsx b/packages/workspace-edit/src/browser/refactor-preview.service.tsx index 05eefddfd3..9ba455f9f0 100644 --- a/packages/workspace-edit/src/browser/refactor-preview.service.tsx +++ b/packages/workspace-edit/src/browser/refactor-preview.service.tsx @@ -1,9 +1,9 @@ -import { action, makeObservable, observable } from 'mobx'; import React from 'react'; import { Autowired, INJECTOR_TOKEN, Injectable, Injector } from '@opensumi/di'; import { Deferred, MessageType, localize } from '@opensumi/ide-core-common'; import { IMainLayoutService } from '@opensumi/ide-main-layout'; +import { IObservable, observableValue, transaction } from '@opensumi/ide-monaco/lib/common/observable'; import { IDialogService } from '@opensumi/ide-overlay'; import { ResourceEdit } from '@opensumi/monaco-editor-core/esm/vs/editor/browser/services/bulkEditService'; @@ -17,12 +17,11 @@ import type { export const PreviewViewId = 'RefactorPreview'; export interface IRefactorPreviewService { - edits: Array; - selectedFileOrTextEdits: Set; + edits: IObservable>; previewEdits(edit: ResourceEdit[]): Promise; - filterEdit(edit: IWorkspaceTextEdit | IWorkspaceFileEdit, checked: boolean): void; + filterEdit(edit: WorkspaceEditModel, checked: boolean): void; applyEdits(): void; @@ -31,13 +30,18 @@ export interface IRefactorPreviewService { export const IRefactorPreviewService = Symbol('IRefactorPreviewService'); -@Injectable() -export class RefactorPreviewServiceImpl implements IRefactorPreviewService { - @observable.shallow - public edits: Array = []; +export class WorkspaceEditModel { + constructor(private raw: ResourceEdit) {} - public selectedFileOrTextEdits = observable.set([], { deep: false }); + get edit() { + return this.raw; + } + readonly isChecked = observableValue(this, true); +} + +@Injectable() +export class RefactorPreviewServiceImpl implements IRefactorPreviewService { @Autowired(IMainLayoutService) protected readonly mainLayout: IMainLayoutService; @@ -49,15 +53,15 @@ export class RefactorPreviewServiceImpl implements IRefactorPreviewService { private previewDeferred: Deferred> | null; - constructor() { - makeObservable(this); - } + public readonly edits = observableValue>(this, []); private clear() { this.togglePreviewView(false); - this.edits = []; this.previewDeferred = null; - this.selectedFileOrTextEdits.clear(); + + transaction((tx) => { + this.edits.set([], tx); + }); } private registerRefactorPreviewView() { @@ -115,10 +119,11 @@ export class RefactorPreviewServiceImpl implements IRefactorPreviewService { this.togglePreviewView(true); - this.edits = edits; - // 默认全选 - edits.forEach((edit) => { - this.selectedFileOrTextEdits.add(edit); + transaction((tx) => { + this.edits.set( + edits.map((edit) => new WorkspaceEditModel(edit)), + tx, + ); }); this.previewDeferred = new Deferred(); @@ -126,13 +131,10 @@ export class RefactorPreviewServiceImpl implements IRefactorPreviewService { return this.previewDeferred.promise; } - @action - filterEdit(edit: IWorkspaceTextEdit | IWorkspaceFileEdit, checked: boolean) { - if (checked) { - this.selectedFileOrTextEdits.add(edit); - } else { - this.selectedFileOrTextEdits.delete(edit); - } + filterEdit(edit: WorkspaceEditModel, checked: boolean) { + transaction((tx) => { + edit.isChecked.set(checked, tx); + }); } applyEdits(): void { @@ -141,9 +143,9 @@ export class RefactorPreviewServiceImpl implements IRefactorPreviewService { return; } - const candidate = this.edits.filter((edit: IWorkspaceTextEdit) => this.selectedFileOrTextEdits.has(edit)); + const candidate = this.edits.get().filter((edit) => edit.isChecked.get()); - this.previewDeferred.resolve(candidate); + this.previewDeferred.resolve(candidate.map((edit) => edit.edit)); this.clear(); } diff --git a/packages/workspace-edit/src/browser/refactor-preview.tsx b/packages/workspace-edit/src/browser/refactor-preview.tsx index 614164fb22..1def7a1ac9 100644 --- a/packages/workspace-edit/src/browser/refactor-preview.tsx +++ b/packages/workspace-edit/src/browser/refactor-preview.tsx @@ -1,8 +1,8 @@ -import { observer } from 'mobx-react-lite'; import React from 'react'; import { CheckBox } from '@opensumi/ide-components/lib/checkbox'; import { RecycleList } from '@opensumi/ide-components/lib/recycle-list'; +import { useAutorun } from '@opensumi/ide-core-browser'; import { ViewState } from '@opensumi/ide-core-browser/lib/layout'; import { useInjectable } from '@opensumi/ide-core-browser/lib/react-hooks'; import { LabelService } from '@opensumi/ide-core-browser/lib/services/label-service'; @@ -12,7 +12,7 @@ import { IEditorDocumentModelService } from '@opensumi/ide-editor/lib/browser/do import * as monaco from '@opensumi/ide-monaco'; import { ITextModel } from '@opensumi/ide-monaco/lib/browser/monaco-api/types'; -import { IRefactorPreviewService } from './refactor-preview.service'; +import { IRefactorPreviewService, WorkspaceEditModel } from './refactor-preview.service'; import styles from './refactor_preview.module.less'; import { isResourceFileEdit } from './utils'; @@ -23,18 +23,8 @@ import type { import type { IRange } from '@opensumi/monaco-editor-core/esm/vs/editor/common/core/range'; interface IRefactorNodeProps { - data: ResourceTextEdit | ResourceFileEdit; - onClick: (item: ResourceTextEdit | ResourceFileEdit) => void; -} - -interface ITextEditNodeProps { - data: ResourceTextEdit; - onClick: (item: ResourceTextEdit) => void; -} - -interface IFileEditNodeProps { - data: ResourceFileEdit; - onClick: (item: ResourceFileEdit) => void; + data: WorkspaceEditModel; + onClick: (item: WorkspaceEditModel) => void; } /** @@ -79,24 +69,27 @@ const ResourceIcon: React.FC<{ uri: Uri }> = (props) => { return ; }; -const TextEditNode = observer(({ data: item }) => { +const TextEditNode = ({ data: item }: IRefactorNodeProps) => { + const edit = item.edit as ResourceTextEdit; + const isChecked = useAutorun(item.isChecked); + const modelService = useInjectable(IEditorDocumentModelService); const refactorPreviewService = useInjectable(IRefactorPreviewService); const renderTextEditDiff = () => { - const modelRef = modelService.getModelReference(URI.from(item.resource)); + const modelRef = modelService.getModelReference(URI.from(edit.resource)); if (!modelRef) { - return
    {item.textEdit.text}
    ; + return
    {edit.textEdit.text}
    ; } const textModel = modelRef.instance.getMonacoModel(); - const { leftPad, base, rightPad } = splitLeftAndRightPadInTextModel(item.textEdit.range, textModel); + const { leftPad, base, rightPad } = splitLeftAndRightPadInTextModel(edit.textEdit.range, textModel); modelRef.dispose(); return (
    {leftPad} {base} - {item.textEdit.text} + {edit.textEdit.text} {rightPad}
    ); @@ -105,17 +98,17 @@ const TextEditNode = observer(({ data: item }) => { return (
    ) => { refactorPreviewService.filterEdit(item, event.target.checked); }} /> - + {renderTextEditDiff()} - {item.resource.path} + {edit.resource.path}
    ); -}); +}; function mapDescForFileEdit(edit: ResourceFileEdit) { if (edit.newResource && edit.oldResource) { @@ -141,10 +134,13 @@ function mapDescForFileEdit(edit: ResourceFileEdit) { return undefined; } -const FileEditNode = observer(({ data: item }) => { +const FileEditNode = ({ data: item }: IRefactorNodeProps) => { + const edit = item.edit as ResourceFileEdit; + const isChecked = useAutorun(item.isChecked); + const refactorPreviewService = useInjectable(IRefactorPreviewService); - const editDesc = mapDescForFileEdit(item); + const editDesc = mapDescForFileEdit(edit); if (editDesc === undefined) { return null; } @@ -155,7 +151,7 @@ const FileEditNode = observer(({ data: item }) => { return (
    ) => { refactorPreviewService.filterEdit(item, event.target.checked); }} @@ -167,29 +163,30 @@ const FileEditNode = observer(({ data: item }) => {
    ); -}); +}; -const RefactorNode = observer(({ data, ...restProps }) => { +const RefactorNode = ({ data, ...restProps }: IRefactorNodeProps) => { if (isResourceFileEdit(data)) { return ; } return ; -}); +}; -export const RefactorPreview = observer(({ viewState }: React.PropsWithChildren<{ viewState: ViewState }>) => { +export const RefactorPreview = ({ viewState }: React.PropsWithChildren<{ viewState: ViewState }>) => { const refactorPreviewService = useInjectable(IRefactorPreviewService); + const edits = useAutorun(refactorPreviewService.edits); return (
    - {refactorPreviewService.edits.length > 0 && ( + {edits.length > 0 && ( )}
    ); -}); +}; diff --git a/packages/workspace-edit/src/browser/workspace-edit.service.ts b/packages/workspace-edit/src/browser/workspace-edit.service.ts index 62428cdb74..ac52efa434 100644 --- a/packages/workspace-edit/src/browser/workspace-edit.service.ts +++ b/packages/workspace-edit/src/browser/workspace-edit.service.ts @@ -1,7 +1,5 @@ -import { runInAction } from 'mobx'; - import { Autowired, Injectable } from '@opensumi/di'; -import { IEventBus, URI, isUndefined, isWindows } from '@opensumi/ide-core-browser'; +import { IEventBus, URI, isUndefined, isWindows, runWhenIdle } from '@opensumi/ide-core-browser'; import { WorkbenchEditorService } from '@opensumi/ide-editor'; import { IEditorDocumentModelService, IResource, isDiffResource } from '@opensumi/ide-editor/lib/browser'; import { EditorGroup } from '@opensumi/ide-editor/lib/browser/workbench-editor.service'; @@ -250,7 +248,7 @@ export class ResourceFileEdit implements IResourceFileEdit { editorService.editorGroups.map(async (g) => { const index = g.resources.findIndex((r) => r.uri.isEqual(oldResource)); if (index !== -1) { - await runInAction(async () => { + runWhenIdle(async () => { await g.open(newResource, { index, backend: !(g.currentResource && g.currentResource.uri.isEqual(oldResource)), diff --git a/scripts/depcheck.ts b/scripts/depcheck.ts index 7c345f0a8c..7fd146c7de 100644 --- a/scripts/depcheck.ts +++ b/scripts/depcheck.ts @@ -21,8 +21,6 @@ const ghostDepsWhiteLists = [ 'react-dom', 'fs-extra', 'lodash', - 'mobx', - 'mobx-react-lite', '@opensumi/monaco-editor-core', '@opensumi/vscode-debugprotocol', 'vscode', diff --git a/tools/dev-tool/package.json b/tools/dev-tool/package.json index dd29fe3b4b..2a6a026926 100644 --- a/tools/dev-tool/package.json +++ b/tools/dev-tool/package.json @@ -26,8 +26,6 @@ "less": "^3.9.0", "less-loader": "^12.1.0", "mini-css-extract-plugin": "^2.7.7", - "mobx": "^6.12.0", - "mobx-react-lite": "^4.0.5", "null-loader": "^4.0.1", "optimize-css-assets-webpack-plugin": "^6.0.1", "react-dom": "^18.2.0", diff --git a/tools/electron/package.json b/tools/electron/package.json index 46e713baee..267133dff7 100644 --- a/tools/electron/package.json +++ b/tools/electron/package.json @@ -58,8 +58,6 @@ "less": "^3.9.0", "less-loader": "^12.1.0", "mini-css-extract-plugin": "^2.7.7", - "mobx": "^6.12.0", - "mobx-react-lite": "^4.0.5", "npm-run": "^5.0.1", "npm-run-all": "^4.1.5", "react-dom": "^18.2.0", diff --git a/tools/electron/yarn.lock b/tools/electron/yarn.lock index 732a45d497..758dfc5080 100644 --- a/tools/electron/yarn.lock +++ b/tools/electron/yarn.lock @@ -8,7 +8,7 @@ __metadata: "7zip-bin@npm:~5.1.1": version: 5.1.1 resolution: "7zip-bin@npm:5.1.1" - checksum: 8/1e58ba3742ac86daa84d2e60c46fd545f235c9f60a00cd36a87a70bf824cc0c821fdc418994f1745081b17e7bc83d155e1e82bd44b06996e7cab0a491ce644c1 + checksum: 10/853e636745131719b85650df93d1a3a9af0b0db1c0e2a0884451ec87e14c8b0f4fb911c04805984ece1211ff1235f7869547b780e06939469410f2da9b5e0da6 languageName: node linkType: hard @@ -17,7 +17,7 @@ __metadata: resolution: "@babel/code-frame@npm:7.18.6" dependencies: "@babel/highlight": "npm:^7.18.6" - checksum: 8/195e2be3172d7684bf95cff69ae3b7a15a9841ea9d27d3c843662d50cdd7d6470fd9c8e64be84d031117e4a4083486effba39f9aef6bbb2c89f7f21bcfba33ba + checksum: 10/195e2be3172d7684bf95cff69ae3b7a15a9841ea9d27d3c843662d50cdd7d6470fd9c8e64be84d031117e4a4083486effba39f9aef6bbb2c89f7f21bcfba33ba languageName: node linkType: hard @@ -27,21 +27,21 @@ __metadata: dependencies: "@babel/highlight": "npm:^7.23.4" chalk: "npm:^2.4.2" - checksum: 8/d90981fdf56a2824a9b14d19a4c0e8db93633fd488c772624b4e83e0ceac6039a27cd298a247c3214faa952bf803ba23696172ae7e7235f3b97f43ba278c569a + checksum: 10/44e58529c9d93083288dc9e649c553c5ba997475a7b0758cc3ddc4d77b8a7d985dbe78cc39c9bbc61f26d50af6da1ddf0a3427eae8cc222a9370619b671ed8f5 languageName: node linkType: hard "@babel/helper-validator-identifier@npm:^7.18.6": version: 7.19.1 resolution: "@babel/helper-validator-identifier@npm:7.19.1" - checksum: 8/0eca5e86a729162af569b46c6c41a63e18b43dbe09fda1d2a3c8924f7d617116af39cac5e4cd5d431bb760b4dca3c0970e0c444789b1db42bcf1fa41fbad0a3a + checksum: 10/30ecd53b7276970d59d65e68e147ea885f8812e50d06a59315dd1f12dc41467d29d6c56bf1fd02e91100f939cba378815b2c19f5d3604331a153aed9efcbd2a9 languageName: node linkType: hard "@babel/helper-validator-identifier@npm:^7.22.20": version: 7.22.20 resolution: "@babel/helper-validator-identifier@npm:7.22.20" - checksum: 8/136412784d9428266bcdd4d91c32bcf9ff0e8d25534a9d94b044f77fe76bc50f941a90319b05aafd1ec04f7d127cd57a179a3716009ff7f3412ef835ada95bdc + checksum: 10/df882d2675101df2d507b95b195ca2f86a3ef28cb711c84f37e79ca23178e13b9f0d8b522774211f51e40168bf5142be4c1c9776a150cddb61a0d5bf3e95750b languageName: node linkType: hard @@ -52,7 +52,7 @@ __metadata: "@babel/helper-validator-identifier": "npm:^7.18.6" chalk: "npm:^2.0.0" js-tokens: "npm:^4.0.0" - checksum: 8/92d8ee61549de5ff5120e945e774728e5ccd57fd3b2ed6eace020ec744823d4a98e242be1453d21764a30a14769ecd62170fba28539b211799bbaf232bbb2789 + checksum: 10/92d8ee61549de5ff5120e945e774728e5ccd57fd3b2ed6eace020ec744823d4a98e242be1453d21764a30a14769ecd62170fba28539b211799bbaf232bbb2789 languageName: node linkType: hard @@ -63,7 +63,7 @@ __metadata: "@babel/helper-validator-identifier": "npm:^7.22.20" chalk: "npm:^2.4.2" js-tokens: "npm:^4.0.0" - checksum: 8/643acecdc235f87d925979a979b539a5d7d1f31ae7db8d89047269082694122d11aa85351304c9c978ceeb6d250591ccadb06c366f358ccee08bb9c122476b89 + checksum: 10/62fef9b5bcea7131df4626d009029b1ae85332042f4648a4ce6e740c3fd23112603c740c45575caec62f260c96b11054d3be5987f4981a5479793579c3aac71f languageName: node linkType: hard @@ -73,14 +73,14 @@ __metadata: dependencies: ajv: "npm:^6.12.0" ajv-keywords: "npm:^3.4.1" - checksum: 8/e1c3771af7fb934a0a985c31b901ece41a3015ef352b58e8e1c4bce691fe5792ebb65712e43ec70fa91a8fa0c929ccacf6b52c8f8de0fd83681db2cbeb62d143 + checksum: 10/a219d60afca9abe708171d7b361907e36526fa8e6e7c480c6c8b05c6611d7e0989b11c1b21b7bceff5d7ccdc92315d364358ec3fd8bc5113d4e869288f32ae9c languageName: node linkType: hard "@discoveryjs/json-ext@npm:^0.5.0": version: 0.5.7 resolution: "@discoveryjs/json-ext@npm:0.5.7" - checksum: 8/2176d301cc258ea5c2324402997cf8134ebb212469c0d397591636cea8d3c02f2b3cf9fd58dcb748c7a0dade77ebdc1b10284fa63e608c033a1db52fddc69918 + checksum: 10/b95682a852448e8ef50d6f8e3b7ba288aab3fd98a2bafbe46881a3db0c6e7248a2debe9e1ee0d4137c521e4743ca5bbcb1c0765c9d7b3e0ef53231506fec42b4 languageName: node linkType: hard @@ -99,7 +99,7 @@ __metadata: dependenciesMeta: global-agent: optional: true - checksum: 8/98f7713e1dda6d1b9d1598890e4e12e38e2d2cb7634e44c31bd494c60a1e97583cdfe4a38408985daaa8deee0a1ea3b6b1add3520874bdb00b6bffba86e7e30d + checksum: 10/ac736cdeac52513b23038c761ebcb9fd315d443675f12c975805d7bcddcdabe5be492310ce5f6f1915d27013bcdcf19d0dac73c72353120948bbdf01fb3e11bf languageName: node linkType: hard @@ -114,14 +114,14 @@ __metadata: fs-extra: "npm:^9.0.1" minimatch: "npm:^3.0.4" plist: "npm:^3.0.4" - checksum: 8/9a7d98cf2b8414ff0274384fef1b72b5a545a0feb7ce03163d2e2ee1b13e4f7064dfe7147cdd652708a1314d1b5e68acdd907847a1747866ec8d2d3e757ec1f7 + checksum: 10/0474beb599afb5ec3c929a2a33567a1433aae903bd7ac2045f53ce78eee311e13a2a33445403d2e8e1f0ff6f538c92ff173a69242fb047b11c1ea88dc61cb1c9 languageName: node linkType: hard "@gar/promisify@npm:^1.1.3": version: 1.1.3 resolution: "@gar/promisify@npm:1.1.3" - checksum: 8/4059f790e2d07bf3c3ff3e0fec0daa8144fe35c1f6e0111c9921bd32106adaa97a4ab096ad7dab1e28ee6a9060083c4d1a4ada42a7f5f3f7a96b8812e2b757c1 + checksum: 10/052dd232140fa60e81588000cbe729a40146579b361f1070bce63e2a761388a22a16d00beeffc504bd3601cb8e055c57b21a185448b3ed550cf50716f4fd442e languageName: node linkType: hard @@ -132,21 +132,21 @@ __metadata: "@jridgewell/set-array": "npm:^1.0.1" "@jridgewell/sourcemap-codec": "npm:^1.4.10" "@jridgewell/trace-mapping": "npm:^0.3.9" - checksum: 8/4a74944bd31f22354fc01c3da32e83c19e519e3bbadafa114f6da4522ea77dd0c2842607e923a591d60a76699d819a2fbb6f3552e277efdb9b58b081390b60ab + checksum: 10/072ace159c39ab85944bdabe017c3de15c5e046a4a4a772045b00ff05e2ebdcfa3840b88ae27e897d473eb4d4845b37be3c78e28910c779f5aeeeae2fb7f0cc2 languageName: node linkType: hard "@jridgewell/resolve-uri@npm:^3.1.0": version: 3.1.1 resolution: "@jridgewell/resolve-uri@npm:3.1.1" - checksum: 8/f5b441fe7900eab4f9155b3b93f9800a916257f4e8563afbcd3b5a5337b55e52bd8ae6735453b1b745457d9f6cdb16d74cd6220bbdd98cf153239e13f6cbb653 + checksum: 10/64d59df8ae1a4e74315eb1b61e012f1c7bc8aac47a3a1e683f6fe7008eab07bc512a742b7aa7c0405685d1421206de58c9c2e6adbfe23832f8bd69408ffc183e languageName: node linkType: hard "@jridgewell/set-array@npm:^1.0.1": version: 1.1.2 resolution: "@jridgewell/set-array@npm:1.1.2" - checksum: 8/69a84d5980385f396ff60a175f7177af0b8da4ddb81824cb7016a9ef914eee9806c72b6b65942003c63f7983d4f39a5c6c27185bbca88eb4690b62075602e28e + checksum: 10/69a84d5980385f396ff60a175f7177af0b8da4ddb81824cb7016a9ef914eee9806c72b6b65942003c63f7983d4f39a5c6c27185bbca88eb4690b62075602e28e languageName: node linkType: hard @@ -156,21 +156,21 @@ __metadata: dependencies: "@jridgewell/gen-mapping": "npm:^0.3.0" "@jridgewell/trace-mapping": "npm:^0.3.9" - checksum: 8/1ad4dec0bdafbade57920a50acec6634f88a0eb735851e0dda906fa9894e7f0549c492678aad1a10f8e144bfe87f238307bf2a914a1bc85b7781d345417e9f6f + checksum: 10/73838ac43235edecff5efc850c0d759704008937a56b1711b28c261e270fe4bf2dc06d0b08663aeb1ab304f81f6de4f5fb844344403cf53ba7096967a9953cae languageName: node linkType: hard "@jridgewell/sourcemap-codec@npm:^1.4.10": version: 1.4.14 resolution: "@jridgewell/sourcemap-codec@npm:1.4.14" - checksum: 8/61100637b6d173d3ba786a5dff019e1a74b1f394f323c1fee337ff390239f053b87266c7a948777f4b1ee68c01a8ad0ab61e5ff4abb5a012a0b091bec391ab97 + checksum: 10/26e768fae6045481a983e48aa23d8fcd23af5da70ebd74b0649000e815e7fbb01ea2bc088c9176b3fffeb9bec02184e58f46125ef3320b30eaa1f4094cfefa38 languageName: node linkType: hard "@jridgewell/sourcemap-codec@npm:^1.4.14": version: 1.4.15 resolution: "@jridgewell/sourcemap-codec@npm:1.4.15" - checksum: 8/b881c7e503db3fc7f3c1f35a1dd2655a188cc51a3612d76efc8a6eb74728bef5606e6758ee77423e564092b4a518aba569bbb21c9bac5ab7a35b0c6ae7e344c8 + checksum: 10/89960ac087781b961ad918978975bcdf2051cd1741880469783c42de64239703eab9db5230d776d8e6a09d73bb5e4cb964e07d93ee6e2e7aea5a7d726e865c09 languageName: node linkType: hard @@ -180,7 +180,7 @@ __metadata: dependencies: "@jridgewell/resolve-uri": "npm:^3.1.0" "@jridgewell/sourcemap-codec": "npm:^1.4.14" - checksum: 8/ac7dd2cfe0b479aa1b81776d40d789243131cc792dc8b6b6a028c70fcd6171958ae1a71bf67b618ffe3c0c3feead9870c095ee46a5e30319410d92976b28f498 + checksum: 10/48d3e3db00dbecb211613649a1849876ba5544a3f41cf5e6b99ea1130272d6cf18591b5b67389bce20f1c871b4ede5900c3b6446a7aab6d0a3b2fe806a834db7 languageName: node linkType: hard @@ -189,7 +189,7 @@ __metadata: resolution: "@malept/cross-spawn-promise@npm:1.1.1" dependencies: cross-spawn: "npm:^7.0.1" - checksum: 8/1aa468f9ff3aa59dbaa720731ddf9c1928228b6844358d8821b86628953e0608420e88c6366d85af35acad73b1addaa472026a1836ad3fec34813eb38b2bd25a + checksum: 10/8f04dcbe023e7ee4e82040e32aa29c1774a2d79a36d4a1df2da381281f99419e51a950c77d54662cfd2bc9195db2fbb0068e0f790ac08d7ad981180687051e96 languageName: node linkType: hard @@ -201,7 +201,7 @@ __metadata: fs-extra: "npm:^9.0.0" lodash: "npm:^4.17.15" tmp-promise: "npm:^3.0.2" - checksum: 8/12527e42c2865504eb2a91cc419e52dd7a68c1eda1138c0713a1520a5413ef9dabfa9d21b7908d211998b75c60035d1d5ae87c00fe8ff5be8fa8449525235dd5 + checksum: 10/14e04215bcc3dc4cafe8343893ab869f69ad768272563cbb39e7d2e876dc5e03dde9f0c1b0506308a4d90d945871491b05b77c26521b2b4b38245aeed8085d3b languageName: node linkType: hard @@ -211,14 +211,14 @@ __metadata: dependencies: "@nodelib/fs.stat": "npm:2.0.5" run-parallel: "npm:^1.1.9" - checksum: 8/a970d595bd23c66c880e0ef1817791432dbb7acbb8d44b7e7d0e7a22f4521260d4a83f7f9fd61d44fda4610105577f8f58a60718105fb38352baed612fd79e59 + checksum: 10/6ab2a9b8a1d67b067922c36f259e3b3dfd6b97b219c540877a4944549a4d49ea5ceba5663905ab5289682f1f3c15ff441d02f0447f620a42e1cb5e1937174d4b languageName: node linkType: hard "@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": version: 2.0.5 resolution: "@nodelib/fs.stat@npm:2.0.5" - checksum: 8/012480b5ca9d97bff9261571dbbec7bbc6033f69cc92908bc1ecfad0792361a5a1994bc48674b9ef76419d056a03efadfce5a6cf6dbc0a36559571a7a483f6f0 + checksum: 10/012480b5ca9d97bff9261571dbbec7bbc6033f69cc92908bc1ecfad0792361a5a1994bc48674b9ef76419d056a03efadfce5a6cf6dbc0a36559571a7a483f6f0 languageName: node linkType: hard @@ -228,7 +228,7 @@ __metadata: dependencies: "@nodelib/fs.scandir": "npm:2.1.5" fastq: "npm:^1.6.0" - checksum: 8/190c643f156d8f8f277bf2a6078af1ffde1fd43f498f187c2db24d35b4b4b5785c02c7dc52e356497b9a1b65b13edc996de08de0b961c32844364da02986dc53 + checksum: 10/40033e33e96e97d77fba5a238e4bba4487b8284678906a9f616b5579ddaf868a18874c0054a75402c9fbaaa033a25ceae093af58c9c30278e35c23c9479e79b0 languageName: node linkType: hard @@ -238,7 +238,7 @@ __metadata: dependencies: "@gar/promisify": "npm:^1.1.3" semver: "npm:^7.3.5" - checksum: 8/405074965e72d4c9d728931b64d2d38e6ea12066d4fad651ac253d175e413c06fe4350970c783db0d749181da8fe49c42d3880bd1cbc12cd68e3a7964d820225 + checksum: 10/c5d4dfee80de2236e1e4ed595d17e217aada72ebd8215183fc46096fa010f583dd2aaaa486758de7cc0b89440dbc31cfe8b276269d75d47af35c716e896f78ec languageName: node linkType: hard @@ -248,7 +248,7 @@ __metadata: dependencies: mkdirp: "npm:^1.0.4" rimraf: "npm:^3.0.2" - checksum: 8/52dc02259d98da517fae4cb3a0a3850227bdae4939dda1980b788a7670636ca2b4a01b58df03dd5f65c1e3cb70c50fa8ce5762b582b3f499ec30ee5ce1fd9380 + checksum: 10/52dc02259d98da517fae4cb3a0a3850227bdae4939dda1980b788a7670636ca2b4a01b58df03dd5f65c1e3cb70c50fa8ce5762b582b3f499ec30ee5ce1fd9380 languageName: node linkType: hard @@ -270,8 +270,6 @@ __metadata: less: "npm:^3.9.0" less-loader: "npm:^12.1.0" mini-css-extract-plugin: "npm:^2.7.7" - mobx: "npm:^6.12.0" - mobx-react-lite: "npm:^4.0.5" null-loader: "npm:^4.0.1" optimize-css-assets-webpack-plugin: "npm:^6.0.1" react-dom: "npm:^18.2.0" @@ -308,8 +306,6 @@ __metadata: less: "npm:^3.9.0" less-loader: "npm:^12.1.0" mini-css-extract-plugin: "npm:^2.7.7" - mobx: "npm:^6.12.0" - mobx-react-lite: "npm:^4.0.5" node-gyp: "npm:^9.3.0" node-pty: "npm:1.0.0" npm-run: "npm:^5.0.1" @@ -333,7 +329,7 @@ __metadata: resolution: "@opensumi/vscode-ripgrep@npm:1.4.0" dependencies: "@types/node": "npm:^10.12.0" - checksum: 8/ce16b6e71eb3e654cffeed4601ac9fdd71aabd9bb61490498dea051345761522a8a3e2288fb03f0929163666f4faf54133db8256e7764fce1a1d23856f332a50 + checksum: 10/ce16b6e71eb3e654cffeed4601ac9fdd71aabd9bb61490498dea051345761522a8a3e2288fb03f0929163666f4faf54133db8256e7764fce1a1d23856f332a50 languageName: node linkType: hard @@ -346,21 +342,21 @@ __metadata: node-addon-api: "npm:^3.2.1" node-gyp: "npm:latest" node-gyp-build: "npm:^4.3.0" - checksum: 8/17f512ad6d5dbb40053ceea7091f8af754afc63786b8f050b225b89a8ba24900468aad8bc4edb25c0349b4c0c8d061f50aa19242c0af52cbc30e6ebf50c7bf4c + checksum: 10/33d68a0f42bee67e1ec371040dac149fdf7cf862dc4800b18584d54531e01ebea091a94d3c5b061050b96aabb3c3d4e38c16c2899762df1b3392d02f1cca9282 languageName: node linkType: hard "@sindresorhus/is@npm:^4.0.0": version: 4.6.0 resolution: "@sindresorhus/is@npm:4.6.0" - checksum: 8/83839f13da2c29d55c97abc3bc2c55b250d33a0447554997a85c539e058e57b8da092da396e252b11ec24a0279a0bed1f537fa26302209327060643e327f81d2 + checksum: 10/e7f36ed72abfcd5e0355f7423a72918b9748bb1ef370a59f3e5ad8d40b728b85d63b272f65f63eec1faf417cda89dcb0aeebe94015647b6054659c1442fe5ce0 languageName: node linkType: hard "@sindresorhus/merge-streams@npm:^1.0.0": version: 1.0.0 resolution: "@sindresorhus/merge-streams@npm:1.0.0" - checksum: 8/453c2a28164113a5ec4fd23ba636e291a4112f6ee9e91cd5476b9a96e0fc9ee5ff40d405fe81bbf284c9773b7ed718a3a0f31df7895a0efd413b1f9775d154fe + checksum: 10/453c2a28164113a5ec4fd23ba636e291a4112f6ee9e91cd5476b9a96e0fc9ee5ff40d405fe81bbf284c9773b7ed718a3a0f31df7895a0efd413b1f9775d154fe languageName: node linkType: hard @@ -369,21 +365,21 @@ __metadata: resolution: "@szmarczak/http-timer@npm:4.0.6" dependencies: defer-to-connect: "npm:^2.0.0" - checksum: 8/c29df3bcec6fc3bdec2b17981d89d9c9fc9bd7d0c9bcfe92821dc533f4440bc890ccde79971838b4ceed1921d456973c4180d7175ee1d0023ad0562240a58d95 + checksum: 10/c29df3bcec6fc3bdec2b17981d89d9c9fc9bd7d0c9bcfe92821dc533f4440bc890ccde79971838b4ceed1921d456973c4180d7175ee1d0023ad0562240a58d95 languageName: node linkType: hard "@tootallnate/once@npm:2": version: 2.0.0 resolution: "@tootallnate/once@npm:2.0.0" - checksum: 8/ad87447820dd3f24825d2d947ebc03072b20a42bfc96cbafec16bff8bbda6c1a81fcb0be56d5b21968560c5359a0af4038a68ba150c3e1694fe4c109a063bed8 + checksum: 10/ad87447820dd3f24825d2d947ebc03072b20a42bfc96cbafec16bff8bbda6c1a81fcb0be56d5b21968560c5359a0af4038a68ba150c3e1694fe4c109a063bed8 languageName: node linkType: hard "@trysound/sax@npm:0.2.0": version: 0.2.0 resolution: "@trysound/sax@npm:0.2.0" - checksum: 8/11226c39b52b391719a2a92e10183e4260d9651f86edced166da1d95f39a0a1eaa470e44d14ac685ccd6d3df7e2002433782872c0feeb260d61e80f21250e65c + checksum: 10/7379713eca480ac0d9b6c7b063e06b00a7eac57092354556c81027066eb65b61ea141a69d0cc2e15d32e05b2834d4c9c2184793a5e36bbf5daf05ee5676af18c languageName: node linkType: hard @@ -392,7 +388,7 @@ __metadata: resolution: "@types/accepts@npm:1.3.5" dependencies: "@types/node": "npm:*" - checksum: 8/590b7580570534a640510c071e09074cf63b5958b237a728f94322567350aea4d239f8a9d897a12b15c856b992ee4d7907e9812bb079886af2c00714e7fb3f60 + checksum: 10/3984edd631d9e308ef10286454a05e2388812a740d404abf93522a3bc3d10032ae6a60816e8cc4ae1bc96367db39e543d3ef862944cea53d1eea48be1f624fc2 languageName: node linkType: hard @@ -402,7 +398,7 @@ __metadata: dependencies: "@types/connect": "npm:*" "@types/node": "npm:*" - checksum: 8/e17840c7d747a549f00aebe72c89313d09fbc4b632b949b2470c5cb3b1cb73863901ae84d9335b567a79ec5efcfb8a28ff8e3f36bc8748a9686756b6d5681f40 + checksum: 10/e17840c7d747a549f00aebe72c89313d09fbc4b632b949b2470c5cb3b1cb73863901ae84d9335b567a79ec5efcfb8a28ff8e3f36bc8748a9686756b6d5681f40 languageName: node linkType: hard @@ -414,7 +410,7 @@ __metadata: "@types/keyv": "npm:^3.1.4" "@types/node": "npm:*" "@types/responselike": "npm:^1.0.0" - checksum: 8/d9b26403fe65ce6b0cb3720b7030104c352bcb37e4fac2a7089a25a97de59c355fa08940658751f2f347a8512aa9d18fdb66ab3ade835975b2f454f2d5befbd9 + checksum: 10/159f9fdb2a1b7175eef453ae2ced5ea04c0d2b9610cc9ccd9f9abb066d36dacb1f37acd879ace10ad7cbb649490723feb396fb7307004c9670be29636304b988 languageName: node linkType: hard @@ -423,14 +419,14 @@ __metadata: resolution: "@types/connect@npm:3.4.35" dependencies: "@types/node": "npm:*" - checksum: 8/fe81351470f2d3165e8b12ce33542eef89ea893e36dd62e8f7d72566dfb7e448376ae962f9f3ea888547ce8b55a40020ca0e01d637fab5d99567673084542641 + checksum: 10/fe81351470f2d3165e8b12ce33542eef89ea893e36dd62e8f7d72566dfb7e448376ae962f9f3ea888547ce8b55a40020ca0e01d637fab5d99567673084542641 languageName: node linkType: hard "@types/content-disposition@npm:*": version: 0.5.5 resolution: "@types/content-disposition@npm:0.5.5" - checksum: 8/fdf7379db1d509990bcf9a21d85f05aad878596f28b1418f9179f6436cb22513262c670ce88c6055054a7f5804a9303eeacb70aa59a5e11ffdc1434559db9692 + checksum: 10/fdf7379db1d509990bcf9a21d85f05aad878596f28b1418f9179f6436cb22513262c670ce88c6055054a7f5804a9303eeacb70aa59a5e11ffdc1434559db9692 languageName: node linkType: hard @@ -442,7 +438,7 @@ __metadata: "@types/express": "npm:*" "@types/keygrip": "npm:*" "@types/node": "npm:*" - checksum: 8/d3759efc1182cb0651808570ae13638677b67b0ea724eef7b174e58ffe6ea044b62c7c2715e532f76f88fce4dd8101ed32ac6fbb73226db654017924e8a2a1e6 + checksum: 10/0571f0f1da070c5df3fca2ec35092b137a6ceb6cfbad4094a7d185e6e0fff6abfd53ad96d1b9e6abe3ff2c0d0232afb20c459b784614877c7c5d05057dc6f528 languageName: node linkType: hard @@ -451,7 +447,7 @@ __metadata: resolution: "@types/debug@npm:4.1.7" dependencies: "@types/ms": "npm:*" - checksum: 8/0a7b89d8ed72526858f0b61c6fd81f477853e8c4415bb97f48b1b5545248d2ae389931680b94b393b993a7cfe893537a200647d93defe6d87159b96812305adc + checksum: 10/0a7b89d8ed72526858f0b61c6fd81f477853e8c4415bb97f48b1b5545248d2ae389931680b94b393b993a7cfe893537a200647d93defe6d87159b96812305adc languageName: node linkType: hard @@ -461,7 +457,7 @@ __metadata: dependencies: "@types/eslint": "npm:*" "@types/estree": "npm:*" - checksum: 8/e2889a124aaab0b89af1bab5959847c5bec09809209255de0e63b9f54c629a94781daa04adb66bffcdd742f5e25a17614fb933965093c0eea64aacda4309380e + checksum: 10/e2889a124aaab0b89af1bab5959847c5bec09809209255de0e63b9f54c629a94781daa04adb66bffcdd742f5e25a17614fb933965093c0eea64aacda4309380e languageName: node linkType: hard @@ -471,14 +467,14 @@ __metadata: dependencies: "@types/estree": "npm:*" "@types/json-schema": "npm:*" - checksum: 8/38e054971596f5c0413f66a62dc26b10e0a21ac46ceacb06fbf8cfb838d20820787209b17218b3916e4c23d990ff77cfdb482d655cac0e0d2b837d430fcc5db8 + checksum: 10/9e4805e770ea90a561e1f69e5edce28b8f66e92e290705100e853c7c252cf87bef654168d0d47fc60c0effbe4517dd7a8d2fa6d3f04c7f831367d568009fd368 languageName: node linkType: hard "@types/estree@npm:*, @types/estree@npm:^1.0.5": version: 1.0.5 resolution: "@types/estree@npm:1.0.5" - checksum: 8/dd8b5bed28e6213b7acd0fb665a84e693554d850b0df423ac8076cc3ad5823a6bc26b0251d080bdc545af83179ede51dd3f6fa78cad2c46ed1f29624ddf3e41a + checksum: 10/7de6d928dd4010b0e20c6919e1a6c27b61f8d4567befa89252055fad503d587ecb9a1e3eab1b1901f923964d7019796db810b7fd6430acb26c32866d126fd408 languageName: node linkType: hard @@ -489,7 +485,7 @@ __metadata: "@types/node": "npm:*" "@types/qs": "npm:*" "@types/range-parser": "npm:*" - checksum: 8/70ec1b8f386628850b315a7b9fd4240a5a70297b41ef1c39af65c8b9661d2c775cfff4686b491fd90e5b6eef43088af203700c5541aec0d063db0c6cbeff254c + checksum: 10/5407b8902078b70ac088d171fec063dd69321ddfe6d6bc5e5c02bc8d598422a8cdfc107283ab2a5698d102c97e802bc80768dc0f21effddac42af1dfc4e96756 languageName: node linkType: hard @@ -501,7 +497,7 @@ __metadata: "@types/express-serve-static-core": "npm:^4.17.31" "@types/qs": "npm:*" "@types/serve-static": "npm:*" - checksum: 8/b4acd8a836d4f6409cdf79b12d6e660485249b62500cccd61e7997d2f520093edf77d7f8498ca79d64a112c6434b6de5ca48039b8fde2c881679eced7e96979b + checksum: 10/0bcda0e398a13f9d77e414de389ae4218cf96c064d837dd39093eaade20cd0c6de4f69ba77c3f46df9a1af49f9ae88b81ac92650c07b5adf35f72ce1b79d72ad languageName: node linkType: hard @@ -510,7 +506,7 @@ __metadata: resolution: "@types/fs-extra@npm:9.0.13" dependencies: "@types/node": "npm:*" - checksum: 8/add79e212acd5ac76b97b9045834e03a7996aef60a814185e0459088fd290519a3c1620865d588fa36c4498bf614210d2a703af5cf80aa1dbc125db78f6edac3 + checksum: 10/ac545e377248039c596ef27d9f277b813507ebdd95d05f32fe7e9c67eb1ed567dafb4ba59f5fdcb6601dd7fd396ff9ba24f8c122e89cef096cdc17987c50a7fa languageName: node linkType: hard @@ -520,56 +516,56 @@ __metadata: dependencies: "@types/minimatch": "npm:*" "@types/node": "npm:*" - checksum: 8/6ae717fedfdfdad25f3d5a568323926c64f52ef35897bcac8aca8e19bc50c0bd84630bbd063e5d52078b2137d8e7d3c26eabebd1a2f03ff350fff8a91e79fc19 + checksum: 10/6ae717fedfdfdad25f3d5a568323926c64f52ef35897bcac8aca8e19bc50c0bd84630bbd063e5d52078b2137d8e7d3c26eabebd1a2f03ff350fff8a91e79fc19 languageName: node linkType: hard "@types/html-minifier-terser@npm:^6.0.0": version: 6.1.0 resolution: "@types/html-minifier-terser@npm:6.1.0" - checksum: 8/eb843f6a8d662d44fb18ec61041117734c6aae77aa38df1be3b4712e8e50ffaa35f1e1c92fdd0fde14a5675fecf457abcd0d15a01fae7506c91926176967f452 + checksum: 10/06bb3e1e8ebff43602c826d67f53f1fd3a6b9c751bfbc67d7ea4e85679446a639e20e60adad8c9d44ab4baf1337b3861b91e7e5e2be798575caf0cc1a5712552 languageName: node linkType: hard "@types/http-assert@npm:*": version: 1.5.3 resolution: "@types/http-assert@npm:1.5.3" - checksum: 8/9553e5a0b8bcfdac4b51d3fa3b89a91b5450171861a667a5b4c47204e0f4a1ca865d97396e6ceaf220e87b64d06b7a8bad7bfba15ef97acb41a87507c9940dbc + checksum: 10/9553e5a0b8bcfdac4b51d3fa3b89a91b5450171861a667a5b4c47204e0f4a1ca865d97396e6ceaf220e87b64d06b7a8bad7bfba15ef97acb41a87507c9940dbc languageName: node linkType: hard "@types/http-cache-semantics@npm:*": version: 4.0.2 resolution: "@types/http-cache-semantics@npm:4.0.2" - checksum: 8/513429786a45d8124f93cc7ea1454b692008190ef743e9fec75a6a3c998309782d216f1e67d7d497ffece9c9212310ae05a8c56e8955492ee400eacdd7620e61 + checksum: 10/6cf83a583a559ecaa95bae6d122d854028c0b0e0e3ad70fb46c0bcb1f447235fcf2e9516993b45bbb41e4dd5b54719cb1614b2e0057278a86b689a75cb732561 languageName: node linkType: hard "@types/http-errors@npm:*": version: 2.0.1 resolution: "@types/http-errors@npm:2.0.1" - checksum: 8/3bb0c50b0a652e679a84c30cd0340d696c32ef6558518268c238840346c077f899315daaf1c26c09c57ddd5dc80510f2a7f46acd52bf949e339e35ed3ee9654f + checksum: 10/3bb0c50b0a652e679a84c30cd0340d696c32ef6558518268c238840346c077f899315daaf1c26c09c57ddd5dc80510f2a7f46acd52bf949e339e35ed3ee9654f languageName: node linkType: hard "@types/json-schema@npm:*, @types/json-schema@npm:^7.0.9": version: 7.0.15 resolution: "@types/json-schema@npm:7.0.15" - checksum: 8/97ed0cb44d4070aecea772b7b2e2ed971e10c81ec87dd4ecc160322ffa55ff330dace1793489540e3e318d90942064bb697cc0f8989391797792d919737b3b98 + checksum: 10/1a3c3e06236e4c4aab89499c428d585527ce50c24fe8259e8b3926d3df4cfbbbcf306cfc73ddfb66cbafc973116efd15967020b0f738f63e09e64c7d260519e7 languageName: node linkType: hard "@types/json-schema@npm:^7.0.8": version: 7.0.11 resolution: "@types/json-schema@npm:7.0.11" - checksum: 8/527bddfe62db9012fccd7627794bd4c71beb77601861055d87e3ee464f2217c85fca7a4b56ae677478367bbd248dbde13553312b7d4dbc702a2f2bbf60c4018d + checksum: 10/e50864a93f4dcb9de64c0c605d836f5416341c824d7a8cde1aa15a5fc68bed44b33cdcb2e04e5098339e9121848378f2d0cc5b124dec41c89203c6f67d6f344a languageName: node linkType: hard "@types/keygrip@npm:*": version: 1.0.2 resolution: "@types/keygrip@npm:1.0.2" - checksum: 8/60bc2738a4f107070ee3d96f44709cb38f3a96c7ccabab09f56c1b2b4d85f869fd8fb9f1f2937e863d0e9e781f005c2223b823bf32b859185b4f52370c352669 + checksum: 10/60bc2738a4f107070ee3d96f44709cb38f3a96c7ccabab09f56c1b2b4d85f869fd8fb9f1f2937e863d0e9e781f005c2223b823bf32b859185b4f52370c352669 languageName: node linkType: hard @@ -578,7 +574,7 @@ __metadata: resolution: "@types/keyv@npm:3.1.4" dependencies: "@types/node": "npm:*" - checksum: 8/e009a2bfb50e90ca9b7c6e8f648f8464067271fd99116f881073fa6fa76dc8d0133181dd65e6614d5fb1220d671d67b0124aef7d97dc02d7e342ab143a47779d + checksum: 10/e009a2bfb50e90ca9b7c6e8f648f8464067271fd99116f881073fa6fa76dc8d0133181dd65e6614d5fb1220d671d67b0124aef7d97dc02d7e342ab143a47779d languageName: node linkType: hard @@ -587,7 +583,7 @@ __metadata: resolution: "@types/koa-bodyparser@npm:4.3.10" dependencies: "@types/koa": "npm:*" - checksum: 8/4b4cd176815a6c1fb0d593bfea03de1285e606d3a96e56ad3691144e35061750ed95e4ecf2ff8e25599d360a93646e29dbb167fdfaaa73ccf87ca5b6141ff0db + checksum: 10/4b4cd176815a6c1fb0d593bfea03de1285e606d3a96e56ad3691144e35061750ed95e4ecf2ff8e25599d360a93646e29dbb167fdfaaa73ccf87ca5b6141ff0db languageName: node linkType: hard @@ -596,7 +592,7 @@ __metadata: resolution: "@types/koa-compose@npm:3.2.5" dependencies: "@types/koa": "npm:*" - checksum: 8/5d1147c4b057eb158195f442f0384f06503f3e69dba99fb517b30a05261a9f92928945c12bb1cfc17a5b7d60db003f38b455a3a9b125f12e4fc81fffa396b3cf + checksum: 10/0f46016227c9d17fd4ff5fb1fbec7f658a95dbf36f15e08d4f3aae8f24599c8069cadff6c2d6af5350d56e4c234b634066636bb2eaa216d5c29f453858c1f798 languageName: node linkType: hard @@ -605,7 +601,7 @@ __metadata: resolution: "@types/koa-router@npm:7.4.4" dependencies: "@types/koa": "npm:*" - checksum: 8/23ff5b725daa1427dc822602f5d4fdcecca5f990595af48879e41338a9c71819ae312326028eef4645beb6ea32ea852416e2f0761a2abd5bf80c2575a3301837 + checksum: 10/9fde5d7cc2897b7df3341cfbfcd3814fe1e956c16ef388090510d0355a60fb1877731ff2a5adb0c4eb43c376c77271b79f561b54b6c3ba39a6510efb1d31b383 languageName: node linkType: hard @@ -621,7 +617,7 @@ __metadata: "@types/keygrip": "npm:*" "@types/koa-compose": "npm:*" "@types/node": "npm:*" - checksum: 8/e3b634d934b79ce8f394bf4130511596081f9c073dbfb4309aa32e4c421c47049a002b65111f8d9687eabec55d5a27b1b9ae0699afa83894cb7032c3536bfa17 + checksum: 10/1c7b1ff5d5d482d8459c59c9901917aaf503440307825bfe935ea6baba1ce686c8e9671dbcec82bea199bb8d7f78ab145b610cd59dec04fa2e259387679f6e22 languageName: node linkType: hard @@ -637,49 +633,49 @@ __metadata: "@types/keygrip": "npm:*" "@types/koa-compose": "npm:*" "@types/node": "npm:*" - checksum: 8/57d809e42350c9ddefa2150306355e40757877468bb027e0bd99f5aeb43cfaf8ba8b14761ea65e419d6fb4c2403a1f3ed0762872a9cf040dbd14357caca56548 + checksum: 10/00bd0dd9f2366eabbd05a9af1c83e10679b4241e69b75927c7653826508c03e9b19b2c03499c5ff6496acbb192f5c0a860b4e95308462e945e2fb79636cbf3cf languageName: node linkType: hard "@types/mime@npm:*": version: 3.0.1 resolution: "@types/mime@npm:3.0.1" - checksum: 8/4040fac73fd0cea2460e29b348c1a6173da747f3a87da0dbce80dd7a9355a3d0e51d6d9a401654f3e5550620e3718b5a899b2ec1debf18424e298a2c605346e7 + checksum: 10/4040fac73fd0cea2460e29b348c1a6173da747f3a87da0dbce80dd7a9355a3d0e51d6d9a401654f3e5550620e3718b5a899b2ec1debf18424e298a2c605346e7 languageName: node linkType: hard "@types/minimatch@npm:*": version: 5.1.2 resolution: "@types/minimatch@npm:5.1.2" - checksum: 8/0391a282860c7cb6fe262c12b99564732401bdaa5e395bee9ca323c312c1a0f45efbf34dce974682036e857db59a5c9b1da522f3d6055aeead7097264c8705a8 + checksum: 10/94db5060d20df2b80d77b74dd384df3115f01889b5b6c40fa2dfa27cfc03a68fb0ff7c1f2a0366070263eb2e9d6bfd8c87111d4bc3ae93c3f291297c1bf56c85 languageName: node linkType: hard "@types/ms@npm:*": version: 0.7.31 resolution: "@types/ms@npm:0.7.31" - checksum: 8/daadd354aedde024cce6f5aa873fefe7b71b22cd0e28632a69e8b677aeb48ae8caa1c60e5919bb781df040d116b01cb4316335167a3fc0ef6a63fa3614c0f6da + checksum: 10/6647b295fb2a5b8347c35efabaaed1777221f094be9941d387b4bf11df0eeacb3f8a4e495b8b66ce0e4c00593bc53ab5fc25f01ebb274cd989a834ae578099de languageName: node linkType: hard "@types/node@npm:*": version: 18.11.11 resolution: "@types/node@npm:18.11.11" - checksum: 8/c4b1176a8f1714a3ee3fc2a5e1d568b0cd50209000282db5c68154b3c975952928dbb834ef3a0ce55bd7b345ae29f2cbf4a34635a070294d135a24254231386a + checksum: 10/514ba7f9e2ab971afd3c5405dbee305e3abba4d62d4500d65e72ec341456635766d43ed7dbea4bb62e88b70922a1c9abc697c2d67014bf377100d97cdf23b384 languageName: node linkType: hard "@types/node@npm:^10.12.0": version: 10.17.60 resolution: "@types/node@npm:10.17.60" - checksum: 8/2cdb3a77d071ba8513e5e8306fa64bf50e3c3302390feeaeff1fd325dd25c8441369715dfc8e3701011a72fed5958c7dfa94eb9239a81b3c286caa4d97db6eef + checksum: 10/f9161493b3284b1d41d5d594c2768625acdd9e33f992f71ccde47861916e662e2ae438d2cc5f1b285053391a31b52a7564ecedc22d485610d236bfad9c7e6a1c languageName: node linkType: hard "@types/node@npm:^16.11.26": version: 16.18.6 resolution: "@types/node@npm:16.18.6" - checksum: 8/85b6a11c347e1edfe014eb2c520aec37117152c932b632f455d4e2a71a311fb25578602c7c25f825c6f1c3e4a912506857c1aa679717318296f5590ac0d33254 + checksum: 10/99b7fe2f12286567a191aea42ad5ba36312ecc27a4db0a53d35e565321d1c20e93b44f75bd7a0747549d712ff679333617c8e5bfb7352468c93063244d72ce8b languageName: node linkType: hard @@ -689,21 +685,21 @@ __metadata: dependencies: "@types/node": "npm:*" xmlbuilder: "npm:>=11.0.1" - checksum: 8/b8f9e6b21fb41a7e8ea5250717da972cde40b120109d5d2ed79e0a25406a9f6793abcba048d9b8ecc3df4b25735d9e4223b4d8a56dff893665c4a8c8573b77ad + checksum: 10/676f85127fc8f4b5bafff3d9148f9403af51cfc32e75dd5424e4d410ea633fae7b4b9f6e44ced67b10f57f1c52d47087e3117dad4aff2b337a139804ec8f2990 languageName: node linkType: hard "@types/qs@npm:*": version: 6.9.7 resolution: "@types/qs@npm:6.9.7" - checksum: 8/7fd6f9c25053e9b5bb6bc9f9f76c1d89e6c04f7707a7ba0e44cc01f17ef5284adb82f230f542c2d5557d69407c9a40f0f3515e8319afd14e1e16b5543ac6cdba + checksum: 10/7fd6f9c25053e9b5bb6bc9f9f76c1d89e6c04f7707a7ba0e44cc01f17ef5284adb82f230f542c2d5557d69407c9a40f0f3515e8319afd14e1e16b5543ac6cdba languageName: node linkType: hard "@types/range-parser@npm:*": version: 1.2.4 resolution: "@types/range-parser@npm:1.2.4" - checksum: 8/b7c0dfd5080a989d6c8bb0b6750fc0933d9acabeb476da6fe71d8bdf1ab65e37c136169d84148034802f48378ab94e3c37bb4ef7656b2bec2cb9c0f8d4146a95 + checksum: 10/b7c0dfd5080a989d6c8bb0b6750fc0933d9acabeb476da6fe71d8bdf1ab65e37c136169d84148034802f48378ab94e3c37bb4ef7656b2bec2cb9c0f8d4146a95 languageName: node linkType: hard @@ -712,7 +708,7 @@ __metadata: resolution: "@types/responselike@npm:1.0.0" dependencies: "@types/node": "npm:*" - checksum: 8/e99fc7cc6265407987b30deda54c1c24bb1478803faf6037557a774b2f034c5b097ffd65847daa87e82a61a250d919f35c3588654b0fdaa816906650f596d1b0 + checksum: 10/e4972389457e4edce3cbba5e8474fb33684d73879433a9eec989d0afb7e550fd6fa3ffb8fe68dbb429288d10707796a193bc0007c4e8429fd267bdc4d8404632 languageName: node linkType: hard @@ -722,21 +718,21 @@ __metadata: dependencies: "@types/mime": "npm:*" "@types/node": "npm:*" - checksum: 8/b6ac93d471fb0f53ddcac1f9b67572a09cd62806f7db5855244b28f6f421139626f24799392566e97d1ffc61b12f9de7f30380c39fcae3c8a161fe161d44edf2 + checksum: 10/5f2f36a8f5970e350c19a2bfac385f0a225e16b5cc9a2441e8b01df32f2f5cb0f2950da53f67579f77c52236b3580909c3fe83d50d64fb56b216ea0a67c1d12b languageName: node linkType: hard "@types/verror@npm:^1.10.3": version: 1.10.6 resolution: "@types/verror@npm:1.10.6" - checksum: 8/650620b851d42cda6e5f6fa84f4d89c259b3f85f7443ee1c85f4f9a9e1ce7b472640c833ef483d0803f8100d6228a82fb9776f53d5539cfe1d8f06adfb04e10c + checksum: 10/650620b851d42cda6e5f6fa84f4d89c259b3f85f7443ee1c85f4f9a9e1ce7b472640c833ef483d0803f8100d6228a82fb9776f53d5539cfe1d8f06adfb04e10c languageName: node linkType: hard "@types/yargs-parser@npm:*": version: 21.0.0 resolution: "@types/yargs-parser@npm:21.0.0" - checksum: 8/b2f4c8d12ac18a567440379909127cf2cec393daffb73f246d0a25df36ea983b93b7e9e824251f959e9f928cbc7c1aab6728d0a0ff15d6145f66cec2be67d9a2 + checksum: 10/c4caec730c1ee09466588389ba4ac83d85a01423c539b9565bb5b5a084bff3f4e47bfb7c06e963c0ef8d4929cf6fca0bc2923a33ef16727cdba60e95c8cdd0d0 languageName: node linkType: hard @@ -745,7 +741,7 @@ __metadata: resolution: "@types/yargs@npm:17.0.16" dependencies: "@types/yargs-parser": "npm:*" - checksum: 8/a92e0fbeba641f657f5aa052fbbb94a591b1b9cd52613c51627f0efc04291623c088503015ac9badd755ac91a3473cd7b75b730e070705e5ff9c3ea20228b746 + checksum: 10/a6ff54d5f3ed8fb5735f21ae22c558e8771dffaf164fee28d152072df925a9cdea6860a5e86ce86244784e6f5095c70433752a501a9f5130c49e0da673715dbe languageName: node linkType: hard @@ -754,7 +750,7 @@ __metadata: resolution: "@types/yauzl@npm:2.10.1" dependencies: "@types/node": "npm:*" - checksum: 8/3377916a2d493cb2422b167fb7dfff8cb3ea045a9489dab4955858719bf7fe6808e5f6a51ee819904fb7f623f7ac092b87f9d6a857ea1214a45070d19c8b3d7e + checksum: 10/3377916a2d493cb2422b167fb7dfff8cb3ea045a9489dab4955858719bf7fe6808e5f6a51ee819904fb7f623f7ac092b87f9d6a857ea1214a45070d19c8b3d7e languageName: node linkType: hard @@ -764,7 +760,7 @@ __metadata: dependencies: "@webassemblyjs/helper-numbers": "npm:1.11.6" "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" - checksum: 8/38ef1b526ca47c210f30975b06df2faf1a8170b1636ce239fc5738fc231ce28389dd61ecedd1bacfc03cbe95b16d1af848c805652080cb60982836eb4ed2c6cf + checksum: 10/4c1303971ccd5188731c9b01073d9738333f37b946a48c4e049f7b788706cdc66f473cd6f3e791423a94c52a3b2230d070007930d29bccbce238b23835839f3c languageName: node linkType: hard @@ -781,21 +777,21 @@ __metadata: "@webassemblyjs/floating-point-hex-parser@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.6" - checksum: 8/29b08758841fd8b299c7152eda36b9eb4921e9c584eb4594437b5cd90ed6b920523606eae7316175f89c20628da14326801090167cc7fbffc77af448ac84b7e2 + checksum: 10/29b08758841fd8b299c7152eda36b9eb4921e9c584eb4594437b5cd90ed6b920523606eae7316175f89c20628da14326801090167cc7fbffc77af448ac84b7e2 languageName: node linkType: hard "@webassemblyjs/helper-api-error@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/helper-api-error@npm:1.11.6" - checksum: 8/e8563df85161096343008f9161adb138a6e8f3c2cc338d6a36011aa55eabb32f2fd138ffe63bc278d009ada001cc41d263dadd1c0be01be6c2ed99076103689f + checksum: 10/e8563df85161096343008f9161adb138a6e8f3c2cc338d6a36011aa55eabb32f2fd138ffe63bc278d009ada001cc41d263dadd1c0be01be6c2ed99076103689f languageName: node linkType: hard "@webassemblyjs/helper-buffer@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/helper-buffer@npm:1.11.6" - checksum: 8/b14d0573bf680d22b2522e8a341ec451fddd645d1f9c6bd9012ccb7e587a2973b86ab7b89fe91e1c79939ba96095f503af04369a3b356c8023c13a5893221644 + checksum: 10/b14d0573bf680d22b2522e8a341ec451fddd645d1f9c6bd9012ccb7e587a2973b86ab7b89fe91e1c79939ba96095f503af04369a3b356c8023c13a5893221644 languageName: node linkType: hard @@ -813,14 +809,14 @@ __metadata: "@webassemblyjs/floating-point-hex-parser": "npm:1.11.6" "@webassemblyjs/helper-api-error": "npm:1.11.6" "@xtuc/long": "npm:4.2.2" - checksum: 8/f4b562fa219f84368528339e0f8d273ad44e047a07641ffcaaec6f93e5b76fd86490a009aa91a294584e1436d74b0a01fa9fde45e333a4c657b58168b04da424 + checksum: 10/9ffd258ad809402688a490fdef1fd02222f20cdfe191c895ac215a331343292164e5033dbc0347f0f76f2447865c0b5c2d2e3304ee948d44f7aa27857028fd08 languageName: node linkType: hard "@webassemblyjs/helper-wasm-bytecode@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.6" - checksum: 8/3535ef4f1fba38de3475e383b3980f4bbf3de72bbb631c2b6584c7df45be4eccd62c6ff48b5edd3f1bcff275cfd605a37679ec199fc91fd0a7705d7f1e3972dc + checksum: 10/4ebf03e9c1941288c10e94e0f813f413f972bfaa1f09be2cc2e5577f300430906b61aa24d52f5ef2f894e8e24e61c6f7c39871d7e3d98bc69460e1b8e00bb20b languageName: node linkType: hard @@ -832,7 +828,7 @@ __metadata: "@webassemblyjs/helper-buffer": "npm:1.11.6" "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" "@webassemblyjs/wasm-gen": "npm:1.11.6" - checksum: 8/b2cf751bf4552b5b9999d27bbb7692d0aca75260140195cb58ea6374d7b9c2dc69b61e10b211a0e773f66209c3ddd612137ed66097e3684d7816f854997682e9 + checksum: 10/38a615ab3d55f953daaf78b69f145e2cc1ff5288ab71715d1a164408b735c643a87acd7e7ba3e9633c5dd965439a45bb580266b05a06b22ff678d6c013514108 languageName: node linkType: hard @@ -853,7 +849,7 @@ __metadata: resolution: "@webassemblyjs/ieee754@npm:1.11.6" dependencies: "@xtuc/ieee754": "npm:^1.2.0" - checksum: 8/13574b8e41f6ca39b700e292d7edf102577db5650fe8add7066a320aa4b7a7c09a5056feccac7a74eb68c10dea9546d4461412af351f13f6b24b5f32379b49de + checksum: 10/13574b8e41f6ca39b700e292d7edf102577db5650fe8add7066a320aa4b7a7c09a5056feccac7a74eb68c10dea9546d4461412af351f13f6b24b5f32379b49de languageName: node linkType: hard @@ -862,14 +858,14 @@ __metadata: resolution: "@webassemblyjs/leb128@npm:1.11.6" dependencies: "@xtuc/long": "npm:4.2.2" - checksum: 8/7ea942dc9777d4b18a5ebfa3a937b30ae9e1d2ce1fee637583ed7f376334dd1d4274f813d2e250056cca803e0952def4b954913f1a3c9068bcd4ab4ee5143bf0 + checksum: 10/ec3b72db0e7ce7908fe08ec24395bfc97db486063824c0edc580f0973a4cfbadf30529569d9c7db663a56513e45b94299cca03be9e1992ea3308bb0744164f3d languageName: node linkType: hard "@webassemblyjs/utf8@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/utf8@npm:1.11.6" - checksum: 8/807fe5b5ce10c390cfdd93e0fb92abda8aebabb5199980681e7c3743ee3306a75729bcd1e56a3903980e96c885ee53ef901fcbaac8efdfa480f9c0dae1d08713 + checksum: 10/361a537bd604101b320a5604c3c96d1038d83166f1b9fb86cedadc7e81bae54c3785ae5d90bf5b1842f7da08194ccaf0f44a64fcca0cbbd6afe1a166196986d6 languageName: node linkType: hard @@ -885,7 +881,7 @@ __metadata: "@webassemblyjs/wasm-opt": "npm:1.11.6" "@webassemblyjs/wasm-parser": "npm:1.11.6" "@webassemblyjs/wast-printer": "npm:1.11.6" - checksum: 8/29ce75870496d6fad864d815ebb072395a8a3a04dc9c3f4e1ffdc63fc5fa58b1f34304a1117296d8240054cfdbc38aca88e71fb51483cf29ffab0a61ef27b481 + checksum: 10/c168bfc6d0cdd371345f36f95a4766d098a96ccc1257e6a6e3a74d987a5c4f2ddd2244a6aecfa5d032a47d74ed2c3b579e00a314d31e4a0b76ad35b31cdfa162 languageName: node linkType: hard @@ -914,7 +910,7 @@ __metadata: "@webassemblyjs/ieee754": "npm:1.11.6" "@webassemblyjs/leb128": "npm:1.11.6" "@webassemblyjs/utf8": "npm:1.11.6" - checksum: 8/a645a2eecbea24833c3260a249704a7f554ef4a94c6000984728e94bb2bc9140a68dfd6fd21d5e0bbb09f6dfc98e083a45760a83ae0417b41a0196ff6d45a23a + checksum: 10/f91903506ce50763592863df5d80ffee80f71a1994a882a64cdb83b5e44002c715f1ef1727d8ccb0692d066af34d3d4f5e59e8f7a4e2eeb2b7c32692ac44e363 languageName: node linkType: hard @@ -939,7 +935,7 @@ __metadata: "@webassemblyjs/helper-buffer": "npm:1.11.6" "@webassemblyjs/wasm-gen": "npm:1.11.6" "@webassemblyjs/wasm-parser": "npm:1.11.6" - checksum: 8/b4557f195487f8e97336ddf79f7bef40d788239169aac707f6eaa2fa5fe243557c2d74e550a8e57f2788e70c7ae4e7d32f7be16101afe183d597b747a3bdd528 + checksum: 10/e0cfeea381ecbbd0ca1616e9a08974acfe7fc81f8a16f9f2d39f565dc51784dd7043710b6e972f9968692d273e32486b9a8a82ca178d4bd520b2d5e2cf28234d languageName: node linkType: hard @@ -965,7 +961,7 @@ __metadata: "@webassemblyjs/ieee754": "npm:1.11.6" "@webassemblyjs/leb128": "npm:1.11.6" "@webassemblyjs/utf8": "npm:1.11.6" - checksum: 8/8200a8d77c15621724a23fdabe58d5571415cda98a7058f542e670ea965dd75499f5e34a48675184947c66f3df23adf55df060312e6d72d57908e3f049620d8a + checksum: 10/6995e0b7b8ebc52b381459c6a555f87763dcd3975c4a112407682551e1c73308db7af23385972a253dceb5af94e76f9c97cb861e8239b5ed1c3e79b95d8e2097 languageName: node linkType: hard @@ -989,7 +985,7 @@ __metadata: dependencies: "@webassemblyjs/ast": "npm:1.11.6" "@xtuc/long": "npm:4.2.2" - checksum: 8/d2fa6a4c427325ec81463e9c809aa6572af6d47f619f3091bf4c4a6fc34f1da3df7caddaac50b8e7a457f8784c62cd58c6311b6cb69b0162ccd8d4c072f79cf8 + checksum: 10/fd45fd0d693141d678cc2f6ff2d3a0d7a8884acb1c92fb0c63cf43b7978e9560be04118b12792638a39dd185640453510229e736f3049037d0c361f6435f2d5f languageName: node linkType: hard @@ -1009,7 +1005,7 @@ __metadata: peerDependencies: webpack: 5.x.x webpack-cli: 5.x.x - checksum: 8/9f9f9145c2d05471fc83d426db1df85cf49f329836b0c4b9f46b6948bed4b013464c00622b136d2a0a26993ce2306976682592245b08ee717500b1db45009a72 + checksum: 10/9f9f9145c2d05471fc83d426db1df85cf49f329836b0c4b9f46b6948bed4b013464c00622b136d2a0a26993ce2306976682592245b08ee717500b1db45009a72 languageName: node linkType: hard @@ -1019,7 +1015,7 @@ __metadata: peerDependencies: webpack: 5.x.x webpack-cli: 5.x.x - checksum: 8/8f9a178afca5c82e113aed1efa552d64ee5ae4fdff63fe747c096a981ec74f18a5d07bd6e89bbe6715c3e57d96eea024a410e58977169489fe1df044c10dd94e + checksum: 10/8f9a178afca5c82e113aed1efa552d64ee5ae4fdff63fe747c096a981ec74f18a5d07bd6e89bbe6715c3e57d96eea024a410e58977169489fe1df044c10dd94e languageName: node linkType: hard @@ -1032,28 +1028,28 @@ __metadata: peerDependenciesMeta: webpack-dev-server: optional: true - checksum: 8/75f0e54681796d567a71ac3e2781d2901a8d8cf1cdfc82f261034dddac59a8343e8c3bc5e32b4bb9d6766759ba49fb29a5cd86ef1701d79c506fe886bb63ac75 + checksum: 10/20424e5c1e664e4d7ab11facee7033bb729f6acd86493138069532934c1299c1426da72942822dedb00caca8fc60cc8aec1626e610ee0e8a9679e3614f555860 languageName: node linkType: hard "@xtuc/ieee754@npm:^1.2.0": version: 1.2.0 resolution: "@xtuc/ieee754@npm:1.2.0" - checksum: 8/ac56d4ca6e17790f1b1677f978c0c6808b1900a5b138885d3da21732f62e30e8f0d9120fcf8f6edfff5100ca902b46f8dd7c1e3f903728634523981e80e2885a + checksum: 10/ab033b032927d77e2f9fa67accdf31b1ca7440974c21c9cfabc8349e10ca2817646171c4f23be98d0e31896d6c2c3462a074fe37752e523abc3e45c79254259c languageName: node linkType: hard "@xtuc/long@npm:4.2.2": version: 4.2.2 resolution: "@xtuc/long@npm:4.2.2" - checksum: 8/8ed0d477ce3bc9c6fe2bf6a6a2cc316bb9c4127c5a7827bae947fa8ec34c7092395c5a283cc300c05b5fa01cbbfa1f938f410a7bf75db7c7846fea41949989ec + checksum: 10/7217bae9fe240e0d804969e7b2af11cb04ec608837c78b56ca88831991b287e232a0b7fce8d548beaff42aaf0197ffa471d81be6ac4c4e53b0148025a2c076ec languageName: node linkType: hard "abbrev@npm:^1.0.0": version: 1.1.1 resolution: "abbrev@npm:1.1.1" - checksum: 8/a4a97ec07d7ea112c517036882b2ac22f3109b7b19077dc656316d07d308438aac28e4d9746dc4d84bf6b1e75b4a7b0a5f3cb30592419f128ca9a8cee3bcfa17 + checksum: 10/2d882941183c66aa665118bafdab82b7a177e9add5eb2776c33e960a4f3c89cff88a1b38aba13a456de01d0dd9d66a8bea7c903268b21ea91dd1097e1e2e8243 languageName: node linkType: hard @@ -1063,7 +1059,7 @@ __metadata: dependencies: mime-types: "npm:~2.1.34" negotiator: "npm:0.6.3" - checksum: 8/50c43d32e7b50285ebe84b613ee4a3aa426715a7d131b65b786e2ead0fd76b6b60091b9916d3478a75f11f162628a2139991b6c03ab3f1d9ab7c86075dc8eab4 + checksum: 10/67eaaa90e2917c58418e7a9b89392002d2b1ccd69bcca4799135d0c632f3b082f23f4ae4ddeedbced5aa59bcc7bdf4699c69ebed4593696c922462b7bc5744d6 languageName: node linkType: hard @@ -1072,7 +1068,7 @@ __metadata: resolution: "acorn-import-assertions@npm:1.9.0" peerDependencies: acorn: ^8 - checksum: 8/944fb2659d0845c467066bdcda2e20c05abe3aaf11972116df457ce2627628a81764d800dd55031ba19de513ee0d43bb771bc679cc0eda66dc8b4fade143bc0c + checksum: 10/af8dd58f6b0c6a43e85849744534b99f2133835c6fcdabda9eea27d0a0da625a0d323c4793ba7cb25cf4507609d0f747c210ccc2fc9b5866de04b0e59c9c5617 languageName: node linkType: hard @@ -1090,7 +1086,7 @@ __metadata: resolution: "acorn@npm:8.11.3" bin: acorn: bin/acorn - checksum: 8/76d8e7d559512566b43ab4aadc374f11f563f0a9e21626dd59cb2888444e9445923ae9f3699972767f18af61df89cd89f5eaaf772d1327b055b45cb829b4a88c + checksum: 10/b688e7e3c64d9bfb17b596e1b35e4da9d50553713b3b3630cf5690f2b023a84eac90c56851e6912b483fe60e8b4ea28b254c07e92f17ef83d72d78745a8352dd languageName: node linkType: hard @@ -1099,7 +1095,7 @@ __metadata: resolution: "agent-base@npm:6.0.2" dependencies: debug: "npm:4" - checksum: 8/f52b6872cc96fd5f622071b71ef200e01c7c4c454ee68bc9accca90c98cfb39f2810e3e9aa330435835eedc8c23f4f8a15267f67c6e245d2b33757575bdac49d + checksum: 10/21fb903e0917e5cb16591b4d0ef6a028a54b83ac30cd1fca58dece3d4e0990512a8723f9f83130d88a41e2af8b1f7be1386fda3ea2d181bb1a62155e75e95e23 languageName: node linkType: hard @@ -1110,7 +1106,7 @@ __metadata: debug: "npm:^4.1.0" depd: "npm:^1.1.2" humanize-ms: "npm:^1.2.1" - checksum: 8/39cb49ed8cf217fd6da058a92828a0a84e0b74c35550f82ee0a10e1ee403c4b78ade7948be2279b188b7a7303f5d396ea2738b134731e464bf28de00a4f72a18 + checksum: 10/63961cba1afa26d708da94159f3b9428d46fdc137b783fbc399b848e750c5e28c97d96839efa8cb3c2d11ecd12dd411298c00d164600212f660e8c55369c9e55 languageName: node linkType: hard @@ -1120,7 +1116,7 @@ __metadata: dependencies: clean-stack: "npm:^2.0.0" indent-string: "npm:^4.0.0" - checksum: 8/1101a33f21baa27a2fa8e04b698271e64616b886795fd43c31068c07533c7b3facfcaf4e9e0cab3624bd88f729a592f1c901a1a229c9e490eafce411a8644b79 + checksum: 10/1101a33f21baa27a2fa8e04b698271e64616b886795fd43c31068c07533c7b3facfcaf4e9e0cab3624bd88f729a592f1c901a1a229c9e490eafce411a8644b79 languageName: node linkType: hard @@ -1134,7 +1130,7 @@ __metadata: peerDependenciesMeta: ajv: optional: true - checksum: 8/4a287d937f1ebaad4683249a4c40c0fa3beed30d9ddc0adba04859026a622da0d317851316ea64b3680dc60f5c3c708105ddd5d5db8fe595d9d0207fd19f90b7 + checksum: 10/70c263ded219bf277ffd9127f793b625f10a46113b2e901e150da41931fcfd7f5592da6d66862f4449bb157ffe65867c3294a7df1d661cc232c4163d5a1718ed languageName: node linkType: hard @@ -1143,7 +1139,7 @@ __metadata: resolution: "ajv-keywords@npm:3.5.2" peerDependencies: ajv: ^6.9.1 - checksum: 8/7dc5e5931677a680589050f79dcbe1fefbb8fea38a955af03724229139175b433c63c68f7ae5f86cf8f65d55eb7c25f75a046723e2e58296707617ca690feae9 + checksum: 10/d57c9d5bf8849bddcbd801b79bc3d2ddc736c2adb6b93a6a365429589dd7993ddbd5d37c6025ed6a7f89c27506b80131d5345c5b1fa6a97e40cd10a96bcd228c languageName: node linkType: hard @@ -1154,7 +1150,7 @@ __metadata: fast-deep-equal: "npm:^3.1.3" peerDependencies: ajv: ^8.8.2 - checksum: 8/c35193940b853119242c6757787f09ecf89a2c19bcd36d03ed1a615e710d19d450cb448bfda407b939aba54b002368c8bff30529cc50a0536a8e10bcce300421 + checksum: 10/5021f96ab7ddd03a4005326bd06f45f448ebfbb0fe7018b1b70b6c28142fa68372bda2057359814b83fd0b2d4c8726c297f0a7557b15377be7b56ce5344533d8 languageName: node linkType: hard @@ -1166,7 +1162,7 @@ __metadata: fast-json-stable-stringify: "npm:^2.0.0" json-schema-traverse: "npm:^0.4.1" uri-js: "npm:^4.2.2" - checksum: 8/874972efe5c4202ab0a68379481fbd3d1b5d0a7bd6d3cc21d40d3536ebff3352a2a1fabb632d4fd2cc7fe4cbdcd5ed6782084c9bbf7f32a1536d18f9da5007d4 + checksum: 10/48d6ad21138d12eb4d16d878d630079a2bda25a04e745c07846a4ad768319533031e28872a9b3c5790fa1ec41aabdf2abed30a56e5a03ebc2cf92184b8ee306c languageName: node linkType: hard @@ -1178,14 +1174,14 @@ __metadata: json-schema-traverse: "npm:^1.0.0" require-from-string: "npm:^2.0.2" uri-js: "npm:^4.2.2" - checksum: 8/4dc13714e316e67537c8b31bc063f99a1d9d9a497eb4bbd55191ac0dcd5e4985bbb71570352ad6f1e76684fb6d790928f96ba3b2d4fd6e10024be9612fe3f001 + checksum: 10/b406f3b79b5756ac53bfe2c20852471b08e122bc1ee4cde08ae4d6a800574d9cd78d60c81c69c63ff81e4da7cd0b638fafbb2303ae580d49cf1600b9059efb85 languageName: node linkType: hard "ansi-regex@npm:^5.0.1": version: 5.0.1 resolution: "ansi-regex@npm:5.0.1" - checksum: 8/2aa4bb54caf2d622f1afdad09441695af2a83aa3fe8b8afa581d205e57ed4261c183c4d3877cee25794443fde5876417d859c108078ab788d6af7e4fe52eb66b + checksum: 10/2aa4bb54caf2d622f1afdad09441695af2a83aa3fe8b8afa581d205e57ed4261c183c4d3877cee25794443fde5876417d859c108078ab788d6af7e4fe52eb66b languageName: node linkType: hard @@ -1194,7 +1190,7 @@ __metadata: resolution: "ansi-styles@npm:3.2.1" dependencies: color-convert: "npm:^1.9.0" - checksum: 8/d85ade01c10e5dd77b6c89f34ed7531da5830d2cb5882c645f330079975b716438cd7ebb81d0d6e6b4f9c577f19ae41ab55f07f19786b02f9dfd9e0377395665 + checksum: 10/d85ade01c10e5dd77b6c89f34ed7531da5830d2cb5882c645f330079975b716438cd7ebb81d0d6e6b4f9c577f19ae41ab55f07f19786b02f9dfd9e0377395665 languageName: node linkType: hard @@ -1203,7 +1199,7 @@ __metadata: resolution: "ansi-styles@npm:4.3.0" dependencies: color-convert: "npm:^2.0.1" - checksum: 8/513b44c3b2105dd14cc42a19271e80f386466c4be574bccf60b627432f9198571ebf4ab1e4c3ba17347658f4ee1711c163d574248c0c1cdc2d5917a0ad582ec4 + checksum: 10/b4494dfbfc7e4591b4711a396bd27e540f8153914123dccb4cdbbcb514015ada63a3809f362b9d8d4f6b17a706f1d7bea3c6f974b15fa5ae76b5b502070889ff languageName: node linkType: hard @@ -1213,14 +1209,14 @@ __metadata: dependencies: normalize-path: "npm:^3.0.0" picomatch: "npm:^2.0.4" - checksum: 8/3e044fd6d1d26545f235a9fe4d7a534e2029d8e59fa7fd9f2a6eb21230f6b5380ea1eaf55136e60cbf8e613544b3b766e7a6fa2102e2a3a117505466e3025dc2 + checksum: 10/3e044fd6d1d26545f235a9fe4d7a534e2029d8e59fa7fd9f2a6eb21230f6b5380ea1eaf55136e60cbf8e613544b3b766e7a6fa2102e2a3a117505466e3025dc2 languageName: node linkType: hard "app-builder-bin@npm:4.0.0": version: 4.0.0 resolution: "app-builder-bin@npm:4.0.0" - checksum: 8/c3c8fd85c371b7a396c1bb1160ab2e3231ba4309abea5b36a5b366e42511e347c65a33ff50d56f4960b337833d539c263137b0ba131e2fa268c32edeb6c9f683 + checksum: 10/5d401b2670acb381c76f96467320af0569748c66950adacc239ef85f5ac9d7b44e93c387ad3fea22c25d42ca9f6f6ccd53e827cdf9eb6b6cddd2091d88c5289d languageName: node linkType: hard @@ -1254,14 +1250,14 @@ __metadata: semver: "npm:^7.3.7" tar: "npm:^6.1.11" temp-file: "npm:^3.4.0" - checksum: 8/da3cc9f24e127add651197076c5fa2f68bc7979bcd6a441df7f69629e96bf3aca3118d61c63a85d382a824748f8056a7639464f07b1ded09db53ff1c4b3101be + checksum: 10/e515d58e7ce6ea41087fee7cb09eb53f7c9a73904ca0e2a562006ed0735f7d26981f0fcde2d8b596ffe5b121c3a9890c555a1dd641ce8021685f1005e7d8e4fc languageName: node linkType: hard "aproba@npm:^1.0.3 || ^2.0.0": version: 2.0.0 resolution: "aproba@npm:2.0.0" - checksum: 8/5615cadcfb45289eea63f8afd064ab656006361020e1735112e346593856f87435e02d8dcc7ff0d11928bc7d425f27bc7c2a84f6c0b35ab0ff659c814c138a24 + checksum: 10/c2b9a631298e8d6f3797547e866db642f68493808f5b37cd61da778d5f6ada890d16f668285f7d60bd4fc3b03889bd590ffe62cf81b700e9bb353431238a0a7b languageName: node linkType: hard @@ -1271,14 +1267,14 @@ __metadata: dependencies: delegates: "npm:^1.0.0" readable-stream: "npm:^3.6.0" - checksum: 8/52590c24860fa7173bedeb69a4c05fb573473e860197f618b9a28432ee4379049336727ae3a1f9c4cb083114601c1140cee578376164d0e651217a9843f9fe83 + checksum: 10/390731720e1bf9ed5d0efc635ea7df8cbc4c90308b0645a932f06e8495a0bf1ecc7987d3b97e805f62a17d6c4b634074b25200aa4d149be2a7b17250b9744bc4 languageName: node linkType: hard "argparse@npm:^2.0.1": version: 2.0.1 resolution: "argparse@npm:2.0.1" - checksum: 8/83644b56493e89a254bae05702abf3a1101b4fa4d0ca31df1c9985275a5a5bd47b3c27b7fa0b71098d41114d8ca000e6ed90cad764b306f8a503665e4d517ced + checksum: 10/18640244e641a417ec75a9bd38b0b2b6b95af5199aa241b131d4b2fb206f334d7ecc600bd194861610a5579084978bfcbb02baa399dbe442d56d0ae5e60dbaef languageName: node linkType: hard @@ -1287,14 +1283,14 @@ __metadata: resolution: "array-union@npm:1.0.2" dependencies: array-uniq: "npm:^1.0.1" - checksum: 8/82cec6421b6e6766556c484835a6d476a873f1b71cace5ab2b4f1b15b1e3162dc4da0d16f7a2b04d4aec18146c6638fe8f661340b31ba8e469fd811a1b45dc8d + checksum: 10/82cec6421b6e6766556c484835a6d476a873f1b71cace5ab2b4f1b15b1e3162dc4da0d16f7a2b04d4aec18146c6638fe8f661340b31ba8e469fd811a1b45dc8d languageName: node linkType: hard "array-uniq@npm:^1.0.1": version: 1.0.3 resolution: "array-uniq@npm:1.0.3" - checksum: 8/1625f06b093d8bf279b81adfec6e72951c0857d65b5e3f65f053fffe9f9dd61c2fc52cff57e38a4700817e7e3f01a4faa433d505ea9e33cdae4514c334e0bf9e + checksum: 10/1625f06b093d8bf279b81adfec6e72951c0857d65b5e3f65f053fffe9f9dd61c2fc52cff57e38a4700817e7e3f01a4faa433d505ea9e33cdae4514c334e0bf9e languageName: node linkType: hard @@ -1312,77 +1308,77 @@ __metadata: optional: true bin: asar: bin/asar.js - checksum: 8/f7d30b45970b053252ac124230bf319459d0728d7f6dedbe2f765cd2a83792d5a716d2c3f2861ceda69372b401f335e1f46460335169eadd0e91a0904a4f5a15 + checksum: 10/9b73d0c130f4f2ec3808fbdbdd9ea451cc1dde1e027105b9d8c42797e8587da36529f5f3c9927e33e7b6bd28a9a95245d8868df66b3d28f97867f16ea24c4edc languageName: node linkType: hard "assert-plus@npm:^1.0.0": version: 1.0.0 resolution: "assert-plus@npm:1.0.0" - checksum: 8/19b4340cb8f0e6a981c07225eacac0e9d52c2644c080198765d63398f0075f83bbc0c8e95474d54224e297555ad0d631c1dcd058adb1ddc2437b41a6b424ac64 + checksum: 10/f4f991ae2df849cc678b1afba52d512a7cbf0d09613ba111e72255409ff9158550c775162a47b12d015d1b82b3c273e8e25df0e4783d3ddb008a293486d00a07 languageName: node linkType: hard "astral-regex@npm:^2.0.0": version: 2.0.0 resolution: "astral-regex@npm:2.0.0" - checksum: 8/876231688c66400473ba505731df37ea436e574dd524520294cc3bbc54ea40334865e01fa0d074d74d036ee874ee7e62f486ea38bc421ee8e6a871c06f011766 + checksum: 10/876231688c66400473ba505731df37ea436e574dd524520294cc3bbc54ea40334865e01fa0d074d74d036ee874ee7e62f486ea38bc421ee8e6a871c06f011766 languageName: node linkType: hard "async-exit-hook@npm:^2.0.1": version: 2.0.1 resolution: "async-exit-hook@npm:2.0.1" - checksum: 8/b72cbdd19ea90fa33a3a57b0dbff83e4bf2f4e4acd70b2b3847a588f9f16a45d38590ee13f285375dd919c224f60fa58dc3d315a87678d3aa24ff686d1c0200a + checksum: 10/fffabbe5ef194ec8283efed48eaf8f4b7982d547de6d4cf7aadf83c8690f0f7929ad01b7cb5de99935ea8f3deb2c21fd009892d8215a43b5a2dcc55c04d42c9f languageName: node linkType: hard "async@npm:^3.2.3": version: 3.2.4 resolution: "async@npm:3.2.4" - checksum: 8/43d07459a4e1d09b84a20772414aa684ff4de085cbcaec6eea3c7a8f8150e8c62aa6cd4e699fe8ee93c3a5b324e777d34642531875a0817a35697522c1b02e89 + checksum: 10/bebb5dc2258c45b83fa1d3be179ae0eb468e1646a62d443c8d60a45e84041b28fccebe1e2d1f234bfc3dcad44e73dcdbf4ba63d98327c9f6556e3dbd47c2ae8b languageName: node linkType: hard "asynckit@npm:^0.4.0": version: 0.4.0 resolution: "asynckit@npm:0.4.0" - checksum: 8/7b78c451df768adba04e2d02e63e2d0bf3b07adcd6e42b4cf665cb7ce899bedd344c69a1dcbce355b5f972d597b25aaa1c1742b52cffd9caccb22f348114f6be + checksum: 10/3ce727cbc78f69d6a4722517a58ee926c8c21083633b1d3fdf66fd688f6c127a53a592141bd4866f9b63240a86e9d8e974b13919450bd17fa33c2d22c4558ad8 languageName: node linkType: hard "at-least-node@npm:^1.0.0": version: 1.0.0 resolution: "at-least-node@npm:1.0.0" - checksum: 8/463e2f8e43384f1afb54bc68485c436d7622acec08b6fad269b421cb1d29cebb5af751426793d0961ed243146fe4dc983402f6d5a51b720b277818dbf6f2e49e + checksum: 10/463e2f8e43384f1afb54bc68485c436d7622acec08b6fad269b421cb1d29cebb5af751426793d0961ed243146fe4dc983402f6d5a51b720b277818dbf6f2e49e languageName: node linkType: hard "balanced-match@npm:^1.0.0": version: 1.0.2 resolution: "balanced-match@npm:1.0.2" - checksum: 8/9706c088a283058a8a99e0bf91b0a2f75497f185980d9ffa8b304de1d9e58ebda7c72c07ebf01dadedaac5b2907b2c6f566f660d62bd336c3468e960403b9d65 + checksum: 10/9706c088a283058a8a99e0bf91b0a2f75497f185980d9ffa8b304de1d9e58ebda7c72c07ebf01dadedaac5b2907b2c6f566f660d62bd336c3468e960403b9d65 languageName: node linkType: hard "base64-js@npm:^1.3.1, base64-js@npm:^1.5.1": version: 1.5.1 resolution: "base64-js@npm:1.5.1" - checksum: 8/669632eb3745404c2f822a18fc3a0122d2f9a7a13f7fb8b5823ee19d1d2ff9ee5b52c53367176ea4ad093c332fd5ab4bd0ebae5a8e27917a4105a4cfc86b1005 + checksum: 10/669632eb3745404c2f822a18fc3a0122d2f9a7a13f7fb8b5823ee19d1d2ff9ee5b52c53367176ea4ad093c332fd5ab4bd0ebae5a8e27917a4105a4cfc86b1005 languageName: node linkType: hard "big.js@npm:^5.2.2": version: 5.2.2 resolution: "big.js@npm:5.2.2" - checksum: 8/b89b6e8419b097a8fb4ed2399a1931a68c612bce3cfd5ca8c214b2d017531191070f990598de2fc6f3f993d91c0f08aa82697717f6b3b8732c9731866d233c9e + checksum: 10/c04416aeb084f4aa1c5857722439c327cc0ada9bd99ab80b650e3f30e2e4f1b92a04527ed1e7df8ffcd7c0ea311745a04af12d53e2f091bf09a06f1292003827 languageName: node linkType: hard "binary-extensions@npm:^2.0.0": version: 2.2.0 resolution: "binary-extensions@npm:2.2.0" - checksum: 8/ccd267956c58d2315f5d3ea6757cf09863c5fc703e50fbeb13a7dc849b812ef76e3cf9ca8f35a0c48498776a7478d7b4a0418e1e2b8cb9cb9731f2922aaad7f8 + checksum: 10/ccd267956c58d2315f5d3ea6757cf09863c5fc703e50fbeb13a7dc849b812ef76e3cf9ca8f35a0c48498776a7478d7b4a0418e1e2b8cb9cb9731f2922aaad7f8 languageName: node linkType: hard @@ -1391,7 +1387,7 @@ __metadata: resolution: "bindings@npm:1.5.0" dependencies: file-uri-to-path: "npm:1.0.0" - checksum: 8/65b6b48095717c2e6105a021a7da4ea435aa8d3d3cd085cb9e85bcb6e5773cf318c4745c3f7c504412855940b585bdf9b918236612a1c7a7942491de176f1ae7 + checksum: 10/593d5ae975ffba15fbbb4788fe5abd1e125afbab849ab967ab43691d27d6483751805d98cb92f7ac24a2439a8a8678cd0131c535d5d63de84e383b0ce2786133 languageName: node linkType: hard @@ -1400,28 +1396,28 @@ __metadata: resolution: "bluebird-lst@npm:1.0.9" dependencies: bluebird: "npm:^3.5.5" - checksum: 8/5662542d7303cfc2dcd63e87e153cd0cc6adb2d8b383d08cb11582625ba5f0116b2eb725ea471feaea74e993482634c4c5bcb39b0b6efd42fc2fc749f5c6e0da + checksum: 10/9c06c4b2539ac03dca757b25b1381ae6d316bed24103c92e9f37a97cef00fec730240dd730b8bea73eb6a96ee34f2508652b4987ada69e6dca0267fdc7e72da4 languageName: node linkType: hard "bluebird@npm:^3.5.0, bluebird@npm:^3.5.5": version: 3.7.2 resolution: "bluebird@npm:3.7.2" - checksum: 8/869417503c722e7dc54ca46715f70e15f4d9c602a423a02c825570862d12935be59ed9c7ba34a9b31f186c017c23cac6b54e35446f8353059c101da73eac22ef + checksum: 10/007c7bad22c5d799c8dd49c85b47d012a1fe3045be57447721e6afbd1d5be43237af1db62e26cb9b0d9ba812d2e4ca3bac82f6d7e016b6b88de06ee25ceb96e7 languageName: node linkType: hard "boolbase@npm:^1.0.0": version: 1.0.0 resolution: "boolbase@npm:1.0.0" - checksum: 8/3e25c80ef626c3a3487c73dbfc70ac322ec830666c9ad915d11b701142fab25ec1e63eff2c450c74347acfd2de854ccde865cd79ef4db1683f7c7b046ea43bb0 + checksum: 10/3e25c80ef626c3a3487c73dbfc70ac322ec830666c9ad915d11b701142fab25ec1e63eff2c450c74347acfd2de854ccde865cd79ef4db1683f7c7b046ea43bb0 languageName: node linkType: hard "boolean@npm:^3.0.1": version: 3.2.0 resolution: "boolean@npm:3.2.0" - checksum: 8/fb29535b8bf710ef45279677a86d14f5185d604557204abd2ca5fa3fb2a5c80e04d695c8dbf13ab269991977a79bb6c04b048220a6b2a3849853faa94f4a7d77 + checksum: 10/d28a49dcaeef7fe10cf9fdf488214d3859f07350be8f5caa0c73ec621baf20650e5da6523262e5ce9221909519d4261c16d8430a5bf307fee9ef0e170cdb29f3 languageName: node linkType: hard @@ -1431,7 +1427,7 @@ __metadata: dependencies: balanced-match: "npm:^1.0.0" concat-map: "npm:0.0.1" - checksum: 8/faf34a7bb0c3fcf4b59c7808bc5d2a96a40988addf2e7e09dfbb67a2251800e0d14cd2bfc1aa79174f2f5095c54ff27f46fb1289fe2d77dac755b5eb3434cc07 + checksum: 10/faf34a7bb0c3fcf4b59c7808bc5d2a96a40988addf2e7e09dfbb67a2251800e0d14cd2bfc1aa79174f2f5095c54ff27f46fb1289fe2d77dac755b5eb3434cc07 languageName: node linkType: hard @@ -1440,7 +1436,7 @@ __metadata: resolution: "brace-expansion@npm:2.0.1" dependencies: balanced-match: "npm:^1.0.0" - checksum: 8/a61e7cd2e8a8505e9f0036b3b6108ba5e926b4b55089eeb5550cd04a471fe216c96d4fe7e4c7f995c728c554ae20ddfc4244cad10aef255e72b62930afd233d1 + checksum: 10/a61e7cd2e8a8505e9f0036b3b6108ba5e926b4b55089eeb5550cd04a471fe216c96d4fe7e4c7f995c728c554ae20ddfc4244cad10aef255e72b62930afd233d1 languageName: node linkType: hard @@ -1463,7 +1459,7 @@ __metadata: update-browserslist-db: "npm:^1.0.9" bin: browserslist: cli.js - checksum: 8/4af3793704dbb4615bcd29059ab472344dc7961c8680aa6c4bb84f05340e14038d06a5aead58724eae69455b8fade8b8c69f1638016e87e5578969d74c078b79 + checksum: 10/8d12915f0eb4804ff6e276d7db85a8dde15325f3acd1bc4d6e18f41763984797b8e718d9d04a8b9c092cf034ca886328fdf3b06c9ab2ee064dd3d10962f1da99 languageName: node linkType: hard @@ -1477,14 +1473,14 @@ __metadata: update-browserslist-db: "npm:^1.0.13" bin: browserslist: cli.js - checksum: 8/33ddfcd9145220099a7a1ac533cecfe5b7548ffeb29b313e1b57be6459000a1f8fa67e781cf4abee97268ac594d44134fcc4a6b2b4750ceddc9796e3a22076d9 + checksum: 10/e3590793db7f66ad3a50817e7b7f195ce61e029bd7187200244db664bfbe0ac832f784e4f6b9c958aef8ea4abe001ae7880b7522682df521f4bc0a5b67660b5e languageName: node linkType: hard "buffer-alloc-unsafe@npm:^1.1.0": version: 1.1.0 resolution: "buffer-alloc-unsafe@npm:1.1.0" - checksum: 8/c5e18bf51f67754ec843c9af3d4c005051aac5008a3992938dda1344e5cfec77c4b02b4ca303644d1e9a6e281765155ce6356d85c6f5ccc5cd21afc868def396 + checksum: 10/c5e18bf51f67754ec843c9af3d4c005051aac5008a3992938dda1344e5cfec77c4b02b4ca303644d1e9a6e281765155ce6356d85c6f5ccc5cd21afc868def396 languageName: node linkType: hard @@ -1494,35 +1490,35 @@ __metadata: dependencies: buffer-alloc-unsafe: "npm:^1.1.0" buffer-fill: "npm:^1.0.0" - checksum: 8/560cd27f3cbe73c614867da373407d4506309c62fe18de45a1ce191f3785ec6ca2488d802ff82065798542422980ca25f903db078c57822218182c37c3576df5 + checksum: 10/560cd27f3cbe73c614867da373407d4506309c62fe18de45a1ce191f3785ec6ca2488d802ff82065798542422980ca25f903db078c57822218182c37c3576df5 languageName: node linkType: hard "buffer-crc32@npm:~0.2.3": version: 0.2.13 resolution: "buffer-crc32@npm:0.2.13" - checksum: 8/06252347ae6daca3453b94e4b2f1d3754a3b146a111d81c68924c22d91889a40623264e95e67955b1cb4a68cbedf317abeabb5140a9766ed248973096db5ce1c + checksum: 10/06252347ae6daca3453b94e4b2f1d3754a3b146a111d81c68924c22d91889a40623264e95e67955b1cb4a68cbedf317abeabb5140a9766ed248973096db5ce1c languageName: node linkType: hard "buffer-equal@npm:1.0.0": version: 1.0.0 resolution: "buffer-equal@npm:1.0.0" - checksum: 8/c63a62d25ffc6f3a7064a86dd0d92d93a32d03b14f22d17374790bc10e94bca2312302895fdd28a2b0060999d4385cf90cbf6ad1a6678065156c664016d3be45 + checksum: 10/c63a62d25ffc6f3a7064a86dd0d92d93a32d03b14f22d17374790bc10e94bca2312302895fdd28a2b0060999d4385cf90cbf6ad1a6678065156c664016d3be45 languageName: node linkType: hard "buffer-fill@npm:^1.0.0": version: 1.0.0 resolution: "buffer-fill@npm:1.0.0" - checksum: 8/c29b4723ddeab01e74b5d3b982a0c6828f2ded49cef049ddca3dac661c874ecdbcecb5dd8380cf0f4adbeb8cff90a7de724126750a1f1e5ebd4eb6c59a1315b1 + checksum: 10/c29b4723ddeab01e74b5d3b982a0c6828f2ded49cef049ddca3dac661c874ecdbcecb5dd8380cf0f4adbeb8cff90a7de724126750a1f1e5ebd4eb6c59a1315b1 languageName: node linkType: hard "buffer-from@npm:^1.0.0": version: 1.1.2 resolution: "buffer-from@npm:1.1.2" - checksum: 8/0448524a562b37d4d7ed9efd91685a5b77a50672c556ea254ac9a6d30e3403a517d8981f10e565db24e8339413b43c97ca2951f10e399c6125a0d8911f5679bb + checksum: 10/0448524a562b37d4d7ed9efd91685a5b77a50672c556ea254ac9a6d30e3403a517d8981f10e565db24e8339413b43c97ca2951f10e399c6125a0d8911f5679bb languageName: node linkType: hard @@ -1532,7 +1528,7 @@ __metadata: dependencies: base64-js: "npm:^1.3.1" ieee754: "npm:^1.1.13" - checksum: 8/e2cf8429e1c4c7b8cbd30834ac09bd61da46ce35f5c22a78e6c2f04497d6d25541b16881e30a019c6fd3154150650ccee27a308eff3e26229d788bbdeb08ab84 + checksum: 10/997434d3c6e3b39e0be479a80288875f71cd1c07d75a3855e6f08ef848a3c966023f79534e22e415ff3a5112708ce06127277ab20e527146d55c84566405c7c6 languageName: node linkType: hard @@ -1542,7 +1538,7 @@ __metadata: dependencies: debug: "npm:^4.3.4" sax: "npm:^1.2.4" - checksum: 8/3458f9c8accad6e934c841cffa93f5d4b342c22b10b9c1a2eb3fd44ca96ea2c662b1048f9a075da9b8a4fada17206887b7e92ebdca331b1071520916e013e245 + checksum: 10/6b429ea2830816cafd9f9b0dcdf53acbd17765933884107d7019129fceb789b5514a160d20d9178a71ea8f63603ecb9797afda990ab1ae5885094785040486d3 languageName: node linkType: hard @@ -1567,14 +1563,14 @@ __metadata: source-map-support: "npm:^0.5.19" stat-mode: "npm:^1.0.0" temp-file: "npm:^3.4.0" - checksum: 8/138fb9abed01ea2e5ac895e6a6ed75310ca6c89e0050483c81801b052f61b42ae5a042f457088b6e205ec8b4403b1ff3a325955f110255afb4da2310e3cf14ad + checksum: 10/48a4923f194f4fad26bcbf270518a28a59113eb45f226cb3e1e853fc0d1a40da201e515a9c838782f7fdd01bcd9a9e2d21ba2ca2e2511e95959b94f7ff397e03 languageName: node linkType: hard "bytes@npm:3.1.2": version: 3.1.2 resolution: "bytes@npm:3.1.2" - checksum: 8/e4bcd3948d289c5127591fbedf10c0b639ccbf00243504e4e127374a15c3bc8eed0d28d4aaab08ff6f1cf2abc0cce6ba3085ed32f4f90e82a5683ce0014e1b6e + checksum: 10/a10abf2ba70c784471d6b4f58778c0beeb2b5d405148e66affa91f23a9f13d07603d0a0354667310ae1d6dc141474ffd44e2a074be0f6e2254edb8fc21445388 languageName: node linkType: hard @@ -1600,7 +1596,7 @@ __metadata: ssri: "npm:^9.0.0" tar: "npm:^6.1.11" unique-filename: "npm:^2.0.0" - checksum: 8/d91409e6e57d7d9a3a25e5dcc589c84e75b178ae8ea7de05cbf6b783f77a5fae938f6e8fda6f5257ed70000be27a681e1e44829251bfffe4c10216002f8f14e6 + checksum: 10/a14524d90e377ee691d63a81173b33c473f8bc66eb299c64290b58e1d41b28842397f8d6c15a01b4c57ca340afcec019ae112a45c2f67a79f76130d326472e92 languageName: node linkType: hard @@ -1610,14 +1606,14 @@ __metadata: dependencies: mime-types: "npm:^2.1.18" ylru: "npm:^1.2.0" - checksum: 8/18db4d59452669ccbfd7146a1510a37eb28e9eccf18ca7a4eb603dff2edc5cccdca7498fc3042a2978f76f11151fba486eb9eb69d9afa3fb124957870aef4fd3 + checksum: 10/18db4d59452669ccbfd7146a1510a37eb28e9eccf18ca7a4eb603dff2edc5cccdca7498fc3042a2978f76f11151fba486eb9eb69d9afa3fb124957870aef4fd3 languageName: node linkType: hard "cacheable-lookup@npm:^5.0.3": version: 5.0.4 resolution: "cacheable-lookup@npm:5.0.4" - checksum: 8/763e02cf9196bc9afccacd8c418d942fc2677f22261969a4c2c2e760fa44a2351a81557bd908291c3921fe9beb10b976ba8fa50c5ca837c5a0dd945f16468f2d + checksum: 10/618a8b3eea314060e74cb3285a6154e8343c244a34235acf91cfe626ee0705c24e3cd11e4b1a7b3900bd749ee203ae65afe13adf610c8ab173e99d4a208faf75 languageName: node linkType: hard @@ -1632,7 +1628,7 @@ __metadata: lowercase-keys: "npm:^2.0.0" normalize-url: "npm:^6.0.1" responselike: "npm:^2.0.0" - checksum: 8/0de9df773fd4e7dd9bd118959878f8f2163867e2e1ab3575ffbecbe6e75e80513dd0c68ba30005e5e5a7b377cc6162bbc00ab1db019bb4e9cb3c2f3f7a6f1ee4 + checksum: 10/0f4f2001260ecca78b9f64fc8245e6b5a5dcde24ea53006daab71f5e0e1338095aa1512ec099c4f9895a9e5acfac9da423cb7c079e131485891e9214aca46c41 languageName: node linkType: hard @@ -1642,14 +1638,14 @@ __metadata: dependencies: function-bind: "npm:^1.1.1" get-intrinsic: "npm:^1.0.2" - checksum: 8/f8e31de9d19988a4b80f3e704788c4a2d6b6f3d17cfec4f57dc29ced450c53a49270dc66bf0fbd693329ee948dd33e6c90a329519aef17474a4d961e8d6426b0 + checksum: 10/ca787179c1cbe09e1697b56ad499fd05dc0ae6febe5081d728176ade699ea6b1589240cb1ff1fe11fcf9f61538c1af60ad37e8eb2ceb4ef21cd6085dfd3ccedd languageName: node linkType: hard "callsites@npm:^3.0.0": version: 3.1.0 resolution: "callsites@npm:3.1.0" - checksum: 8/072d17b6abb459c2ba96598918b55868af677154bec7e73d222ef95a8fdb9bbf7dae96a8421085cdad8cd190d86653b5b6dc55a4484f2e5b2e27d5e0c3fc15b3 + checksum: 10/072d17b6abb459c2ba96598918b55868af677154bec7e73d222ef95a8fdb9bbf7dae96a8421085cdad8cd190d86653b5b6dc55a4484f2e5b2e27d5e0c3fc15b3 languageName: node linkType: hard @@ -1659,7 +1655,7 @@ __metadata: dependencies: pascal-case: "npm:^3.1.2" tslib: "npm:^2.0.3" - checksum: 8/bcbd25cd253b3cbc69be3f535750137dbf2beb70f093bdc575f73f800acc8443d34fd52ab8f0a2413c34f1e8203139ffc88428d8863e4dfe530cfb257a379ad6 + checksum: 10/bcbd25cd253b3cbc69be3f535750137dbf2beb70f093bdc575f73f800acc8443d34fd52ab8f0a2413c34f1e8203139ffc88428d8863e4dfe530cfb257a379ad6 languageName: node linkType: hard @@ -1671,21 +1667,21 @@ __metadata: caniuse-lite: "npm:^1.0.0" lodash.memoize: "npm:^4.1.2" lodash.uniq: "npm:^4.5.0" - checksum: 8/db2a229383b20d0529b6b589dde99d7b6cb56ba371366f58cbbfa2929c9f42c01f873e2b6ef641d4eda9f0b4118de77dbb2805814670bdad4234bf08e720b0b4 + checksum: 10/db2a229383b20d0529b6b589dde99d7b6cb56ba371366f58cbbfa2929c9f42c01f873e2b6ef641d4eda9f0b4118de77dbb2805814670bdad4234bf08e720b0b4 languageName: node linkType: hard "caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001400": version: 1.0.30001441 resolution: "caniuse-lite@npm:1.0.30001441" - checksum: 8/0f5aa8f7ea4d165e88e0d1eaa44564c5bfee66641f265a1fd959e74f0a7e6bc0207db6c28e2fb63dc8b2cd23e0e3cee06c4f372de11c93c57ff5ff4207962c3f + checksum: 10/1833f3c915268e3f6220dc92771030e2284bfa6d370b2cf8ec1db9ebe0e7214ad3a270f6c3e3335b66021d341a0f39b2c40bc38a53189a0258f2376c4407987b languageName: node linkType: hard "caniuse-lite@npm:^1.0.30001565": version: 1.0.30001579 resolution: "caniuse-lite@npm:1.0.30001579" - checksum: 8/7539dcff74d2243a30c428393dc690c87fa34d7da36434731853e9bcfe783757763b2971f5cc878e25242a93e184e53f167d11bd74955af956579f7af71cc764 + checksum: 10/2cd0c02e5d66b09888743ad2b624dbde697ace5c76b55bfd6065ea033f6abea8ac3f5d3c9299c042f91b396e2141b49bc61f5e17086dc9ba3a866cc6790134c0 languageName: node linkType: hard @@ -1696,7 +1692,7 @@ __metadata: ansi-styles: "npm:^3.2.1" escape-string-regexp: "npm:^1.0.5" supports-color: "npm:^5.3.0" - checksum: 8/ec3661d38fe77f681200f878edbd9448821924e0f93a9cefc0e26a33b145f1027a2084bf19967160d11e1f03bfe4eaffcabf5493b89098b2782c3fe0b03d80c2 + checksum: 10/3d1d103433166f6bfe82ac75724951b33769675252d8417317363ef9d54699b7c3b2d46671b772b893a8e50c3ece70c4b933c73c01e81bc60ea4df9b55afa303 languageName: node linkType: hard @@ -1706,7 +1702,7 @@ __metadata: dependencies: ansi-styles: "npm:^4.1.0" supports-color: "npm:^7.1.0" - checksum: 8/fe75c9d5c76a7a98d45495b91b2172fa3b7a09e0cc9370e5c8feb1c567b85c4288e2b3fded7cfdd7359ac28d6b3844feb8b82b8686842e93d23c827c417e83fc + checksum: 10/cb3f3e594913d63b1814d7ca7c9bafbf895f75fbf93b92991980610dfd7b48500af4e3a5d4e3a8f337990a96b168d7eb84ee55efdce965e2ee8efc20f8c8f139 languageName: node linkType: hard @@ -1725,35 +1721,35 @@ __metadata: dependenciesMeta: fsevents: optional: true - checksum: 8/b49fcde40176ba007ff361b198a2d35df60d9bb2a5aab228279eb810feae9294a6b4649ab15981304447afe1e6ffbf4788ad5db77235dc770ab777c6e771980c + checksum: 10/863e3ff78ee7a4a24513d2a416856e84c8e4f5e60efbe03e8ab791af1a183f569b62fc6f6b8044e2804966cb81277ddbbc1dc374fba3265bd609ea8efd62f5b3 languageName: node linkType: hard "chownr@npm:^2.0.0": version: 2.0.0 resolution: "chownr@npm:2.0.0" - checksum: 8/c57cf9dd0791e2f18a5ee9c1a299ae6e801ff58fee96dc8bfd0dcb4738a6ce58dd252a3605b1c93c6418fe4f9d5093b28ffbf4d66648cb2a9c67eaef9679be2f + checksum: 10/c57cf9dd0791e2f18a5ee9c1a299ae6e801ff58fee96dc8bfd0dcb4738a6ce58dd252a3605b1c93c6418fe4f9d5093b28ffbf4d66648cb2a9c67eaef9679be2f languageName: node linkType: hard "chrome-trace-event@npm:^1.0.2": version: 1.0.3 resolution: "chrome-trace-event@npm:1.0.3" - checksum: 8/cb8b1fc7e881aaef973bd0c4a43cd353c2ad8323fb471a041e64f7c2dd849cde4aad15f8b753331a32dda45c973f032c8a03b8177fc85d60eaa75e91e08bfb97 + checksum: 10/b5fbdae5bf00c96fa3213de919f2b2617a942bfcb891cdf735fbad2a6f4f3c25d42e3f2b1703328619d352c718b46b9e18999fd3af7ef86c26c91db6fae1f0da languageName: node linkType: hard "chromium-pickle-js@npm:^0.2.0": version: 0.2.0 resolution: "chromium-pickle-js@npm:0.2.0" - checksum: 8/5ccacc538b0a1ecf3484c8fb3327eae129ceee858db0f64eb0a5ff87bda096a418d0d3e6f6e0967c6334d336a2c7463f7b683ec0e1cafbe736907fa2ee2f58ca + checksum: 10/4722e78edf21e8e21e14066fce98bce96f2244c82fcb4da5cf2811ccfc66dbb78fc1e0be94b79aed18ba33b8940bb3f3919822151d0b23e12c95574f62f7796f languageName: node linkType: hard "ci-info@npm:^3.2.0": version: 3.7.0 resolution: "ci-info@npm:3.7.0" - checksum: 8/6e5df0250382ff3732703b36b958d2d892dd3c481f9671666f96c2ab7888be744bc4dca81395be958dcb828502d94f18fa9aa8901c5a3c9923cda212df02724c + checksum: 10/426643f146ec6b13cc327ae892415ffc59b69fb132384c4c2233109d522f60f6effb870ea57e784b50c3b13ba38bbaa8a2b466f4265684f87ccbc69fbec296df languageName: node linkType: hard @@ -1762,14 +1758,14 @@ __metadata: resolution: "clean-css@npm:5.3.3" dependencies: source-map: "npm:~0.6.0" - checksum: 8/941987c14860dd7d346d5cf121a82fd2caf8344160b1565c5387f7ccca4bbcaf885bace961be37c4f4713ce2d8c488dd89483c1add47bb779790edbfdcc79cbc + checksum: 10/2db1ae37b384c8ff0a06a12bfa80f56cc02b4abcaaf340db98c0ae88a61dd67c856653fd8135ace6eb0ec13aeab3089c425d2e4238d2a2ad6b6917e6ccc74729 languageName: node linkType: hard "clean-stack@npm:^2.0.0": version: 2.2.0 resolution: "clean-stack@npm:2.2.0" - checksum: 8/2ac8cd2b2f5ec986a3c743935ec85b07bc174d5421a5efc8017e1f146a1cf5f781ae962618f416352103b32c9cd7e203276e8c28241bbe946160cab16149fb68 + checksum: 10/2ac8cd2b2f5ec986a3c743935ec85b07bc174d5421a5efc8017e1f146a1cf5f781ae962618f416352103b32c9cd7e203276e8c28241bbe946160cab16149fb68 languageName: node linkType: hard @@ -1780,7 +1776,7 @@ __metadata: del: "npm:^4.1.1" peerDependencies: webpack: ">=4.0.0 <6.0.0" - checksum: 8/199425e87b8c4a24ea321ec8116408219930f2ef86e27dd4cdf0ed77ed7b8b3a6908ed5160e4e981c773e015ba1d79d3f53f2fdcfebc5dc0b68f1478dea08fff + checksum: 10/fce27be7cf7f67576ff0a13f684eb93a0cee8d297c786add7ffa18609d6e07f9064c4107213364b7e0a03810e4dff45f71e2c38188bd3233a8955a52294cac1a languageName: node linkType: hard @@ -1790,7 +1786,7 @@ __metadata: dependencies: slice-ansi: "npm:^3.0.0" string-width: "npm:^4.2.0" - checksum: 8/bf1e4e6195392dc718bf9cd71f317b6300dc4a9191d052f31046b8773230ece4fa09458813bf0e3455a5e68c0690d2ea2c197d14a8b85a7b5e01c97f4b5feb5d + checksum: 10/976f1887de067a8cd6ec830a7a8508336aebe6cec79b521d98ed13f67ef073b637f7305675b6247dd22f9e9cf045ec55fe746c7bdb288fbe8db0dfdc9fd52e55 languageName: node linkType: hard @@ -1801,7 +1797,7 @@ __metadata: string-width: "npm:^4.2.0" strip-ansi: "npm:^6.0.1" wrap-ansi: "npm:^7.0.0" - checksum: 8/79648b3b0045f2e285b76fb2e24e207c6db44323581e421c3acbd0e86454cba1b37aea976ab50195a49e7384b871e6dfb2247ad7dec53c02454ac6497394cb56 + checksum: 10/eaa5561aeb3135c2cddf7a3b3f562fc4238ff3b3fc666869ef2adf264be0f372136702f16add9299087fb1907c2e4ec5dbfe83bd24bce815c70a80c6c1a2e950 languageName: node linkType: hard @@ -1812,7 +1808,7 @@ __metadata: is-plain-object: "npm:^2.0.4" kind-of: "npm:^6.0.2" shallow-clone: "npm:^3.0.0" - checksum: 8/770f912fe4e6f21873c8e8fbb1e99134db3b93da32df271d00589ea4a29dbe83a9808a322c93f3bcaf8584b8b4fa6fc269fc8032efbaa6728e0c9886c74467d2 + checksum: 10/770f912fe4e6f21873c8e8fbb1e99134db3b93da32df271d00589ea4a29dbe83a9808a322c93f3bcaf8584b8b4fa6fc269fc8032efbaa6728e0c9886c74467d2 languageName: node linkType: hard @@ -1821,7 +1817,7 @@ __metadata: resolution: "clone-response@npm:1.0.3" dependencies: mimic-response: "npm:^1.0.0" - checksum: 8/4e671cac39b11c60aa8ba0a450657194a5d6504df51bca3fac5b3bd0145c4f8e8464898f87c8406b83232e3bc5cca555f51c1f9c8ac023969ebfbf7f6bdabb2e + checksum: 10/4e671cac39b11c60aa8ba0a450657194a5d6504df51bca3fac5b3bd0145c4f8e8464898f87c8406b83232e3bc5cca555f51c1f9c8ac023969ebfbf7f6bdabb2e languageName: node linkType: hard @@ -1833,14 +1829,14 @@ __metadata: qs: "npm:^6.5.2" raw-body: "npm:^2.3.3" type-is: "npm:^1.6.16" - checksum: 8/d0a78831a6651f2085fce16b0ecdc49f45fb5baf4f94148c2f499e7ec89d188205362548b9c500eae15a819360cfda208079e68a72c204cf66ca3ffa2fc0f57e + checksum: 10/2484710f70941b42512a349fab0fac8a16430fd56d88ad0de1d8dde129d66597de9d0a8edd8d8164683c55a3fd998457dc74a04a03de2281def8abaaecd1317e languageName: node linkType: hard "co@npm:^4.6.0": version: 4.6.0 resolution: "co@npm:4.6.0" - checksum: 8/5210d9223010eb95b29df06a91116f2cf7c8e0748a9013ed853b53f362ea0e822f1e5bb054fb3cefc645239a4cf966af1f6133a3b43f40d591f3b68ed6cf0510 + checksum: 10/a5d9f37091c70398a269e625cedff5622f200ed0aa0cff22ee7b55ed74a123834b58711776eb0f1dc58eb6ebbc1185aa7567b57bd5979a948c6e4f85073e2c05 languageName: node linkType: hard @@ -1849,7 +1845,7 @@ __metadata: resolution: "color-convert@npm:1.9.3" dependencies: color-name: "npm:1.1.3" - checksum: 8/fd7a64a17cde98fb923b1dd05c5f2e6f7aefda1b60d67e8d449f9328b4e53b228a428fd38bfeaeb2db2ff6b6503a776a996150b80cdf224062af08a5c8a3a203 + checksum: 10/ffa319025045f2973919d155f25e7c00d08836b6b33ea2d205418c59bd63a665d713c52d9737a9e0fe467fb194b40fbef1d849bae80d674568ee220a31ef3d10 languageName: node linkType: hard @@ -1858,21 +1854,21 @@ __metadata: resolution: "color-convert@npm:2.0.1" dependencies: color-name: "npm:~1.1.4" - checksum: 8/79e6bdb9fd479a205c71d89574fccfb22bd9053bd98c6c4d870d65c132e5e904e6034978e55b43d69fcaa7433af2016ee203ce76eeba9cfa554b373e7f7db336 + checksum: 10/fa00c91b4332b294de06b443923246bccebe9fab1b253f7fe1772d37b06a2269b4039a85e309abe1fe11b267b11c08d1d0473fda3badd6167f57313af2887a64 languageName: node linkType: hard "color-name@npm:1.1.3": version: 1.1.3 resolution: "color-name@npm:1.1.3" - checksum: 8/09c5d3e33d2105850153b14466501f2bfb30324a2f76568a408763a3b7433b0e50e5b4ab1947868e65cb101bb7cb75029553f2c333b6d4b8138a73fcc133d69d + checksum: 10/09c5d3e33d2105850153b14466501f2bfb30324a2f76568a408763a3b7433b0e50e5b4ab1947868e65cb101bb7cb75029553f2c333b6d4b8138a73fcc133d69d languageName: node linkType: hard "color-name@npm:~1.1.4": version: 1.1.4 resolution: "color-name@npm:1.1.4" - checksum: 8/b0445859521eb4021cd0fb0cc1a75cecf67fceecae89b63f62b201cca8d345baf8b952c966862a9d9a2632987d4f6581f0ec8d957dfacece86f0a7919316f610 + checksum: 10/b0445859521eb4021cd0fb0cc1a75cecf67fceecae89b63f62b201cca8d345baf8b952c966862a9d9a2632987d4f6581f0ec8d957dfacece86f0a7919316f610 languageName: node linkType: hard @@ -1881,28 +1877,28 @@ __metadata: resolution: "color-support@npm:1.1.3" bin: color-support: bin.js - checksum: 8/9b7356817670b9a13a26ca5af1c21615463b500783b739b7634a0c2047c16cef4b2865d7576875c31c3cddf9dd621fa19285e628f20198b233a5cfdda6d0793b + checksum: 10/4bcfe30eea1498fe1cabc852bbda6c9770f230ea0e4faf4611c5858b1b9e4dde3730ac485e65f54ca182f4c50b626c1bea7c8441ceda47367a54a818c248aa7a languageName: node linkType: hard "colord@npm:^2.9.1": version: 2.9.3 resolution: "colord@npm:2.9.3" - checksum: 8/95d909bfbcfd8d5605cbb5af56f2d1ce2b323990258fd7c0d2eb0e6d3bb177254d7fb8213758db56bb4ede708964f78c6b992b326615f81a18a6aaf11d64c650 + checksum: 10/907a4506d7307e2f580b471b581e992181ed75ab0c6925ece9ca46d88161d2fc50ed15891cd0556d0d9321237ca75afc9d462e4c050b939ef88428517f047f30 languageName: node linkType: hard "colorette@npm:^2.0.14": version: 2.0.20 resolution: "colorette@npm:2.0.20" - checksum: 8/0c016fea2b91b733eb9f4bcdb580018f52c0bc0979443dad930e5037a968237ac53d9beb98e218d2e9235834f8eebce7f8e080422d6194e957454255bde71d3d + checksum: 10/0b8de48bfa5d10afc160b8eaa2b9938f34a892530b2f7d7897e0458d9535a066e3998b49da9d21161c78225b272df19ae3a64d6df28b4c9734c0e55bbd02406f languageName: node linkType: hard "colors@npm:1.0.3": version: 1.0.3 resolution: "colors@npm:1.0.3" - checksum: 8/234e8d3ab7e4003851cdd6a1f02eaa16dabc502ee5f4dc576ad7959c64b7477b15bd21177bab4055a4c0a66aa3d919753958030445f87c39a253d73b7a3637f5 + checksum: 10/8d81835f217ffca6de6665c8dd9ed132c562d108d4ba842d638c7cb5f8127cff47cb1b54c6bbea49e22eaa7b56caee6b85278dde9c2564f8a0eaef161e028ae0 languageName: node linkType: hard @@ -1911,7 +1907,7 @@ __metadata: resolution: "combined-stream@npm:1.0.8" dependencies: delayed-stream: "npm:~1.0.0" - checksum: 8/49fa4aeb4916567e33ea81d088f6584749fc90c7abec76fd516bf1c5aa5c79f3584b5ba3de6b86d26ddd64bae5329c4c7479343250cfe71c75bb366eae53bb7c + checksum: 10/2e969e637d05d09fa50b02d74c83a1186f6914aae89e6653b62595cc75a221464f884f55f231b8f4df7a49537fba60bdc0427acd2bf324c09a1dbb84837e36e4 languageName: node linkType: hard @@ -1920,63 +1916,63 @@ __metadata: resolution: "commander@npm:2.9.0" dependencies: graceful-readlink: "npm:>= 1.0.0" - checksum: 8/37939b6866ae190784fa946ea5b926dfe713731064c746e818642ac59e28f513b54e88e35d8c34b4d24d063cb465977dca2efd2ec974f91e495c743fcb2ae7a2 + checksum: 10/65d08cbbf0ce36d3326e4904b8b8be1571547e96ae33834a7296fc84ab2d703c4b9f4ac2836ab8a7d33b145b545d20ac820f67bfef52cca021dbc8fbdf960686 languageName: node linkType: hard "commander@npm:^10.0.1": version: 10.0.1 resolution: "commander@npm:10.0.1" - checksum: 8/436901d64a818295803c1996cd856621a74f30b9f9e28a588e726b2b1670665bccd7c1a77007ebf328729f0139838a88a19265858a0fa7a8728c4656796db948 + checksum: 10/8799faa84a30da985802e661cc9856adfaee324d4b138413013ef7f087e8d7924b144c30a1f1405475f0909f467665cd9e1ce13270a2f41b141dab0b7a58f3fb languageName: node linkType: hard "commander@npm:^2.20.0, commander@npm:^2.9.0": version: 2.20.3 resolution: "commander@npm:2.20.3" - checksum: 8/ab8c07884e42c3a8dbc5dd9592c606176c7eb5c1ca5ff274bcf907039b2c41de3626f684ea75ccf4d361ba004bbaff1f577d5384c155f3871e456bdf27becf9e + checksum: 10/90c5b6898610cd075984c58c4f88418a4fb44af08c1b1415e9854c03171bec31b336b7f3e4cefe33de994b3f12b03c5e2d638da4316df83593b9e82554e7e95b languageName: node linkType: hard "commander@npm:^5.0.0": version: 5.1.0 resolution: "commander@npm:5.1.0" - checksum: 8/0b7fec1712fbcc6230fcb161d8d73b4730fa91a21dc089515489402ad78810547683f058e2a9835929c212fead1d6a6ade70db28bbb03edbc2829a9ab7d69447 + checksum: 10/3e2ef5c003c5179250161e42ce6d48e0e69a54af970c65b7f985c70095240c260fd647453efd4c2c5a31b30ce468f373dc70f769c2f54a2c014abc4792aaca28 languageName: node linkType: hard "commander@npm:^7.2.0": version: 7.2.0 resolution: "commander@npm:7.2.0" - checksum: 8/53501cbeee61d5157546c0bef0fedb6cdfc763a882136284bed9a07225f09a14b82d2a84e7637edfd1a679fb35ed9502fd58ef1d091e6287f60d790147f68ddc + checksum: 10/9973af10727ad4b44f26703bf3e9fdc323528660a7590efe3aa9ad5042b4584c0deed84ba443f61c9d6f02dade54a5a5d3c95e306a1e1630f8374ae6db16c06d languageName: node linkType: hard "commander@npm:^8.3.0": version: 8.3.0 resolution: "commander@npm:8.3.0" - checksum: 8/0f82321821fc27b83bd409510bb9deeebcfa799ff0bf5d102128b500b7af22872c0c92cb6a0ebc5a4cf19c6b550fba9cedfa7329d18c6442a625f851377bacf0 + checksum: 10/6b7b5d334483ce24bd73c5dac2eab901a7dbb25fd983ea24a1eeac6e7166bb1967f641546e8abf1920afbde86a45fbfe5812fbc69d0dc451bb45ca416a12a3a3 languageName: node linkType: hard "compare-version@npm:^0.1.2": version: 0.1.2 resolution: "compare-version@npm:0.1.2" - checksum: 8/0ceaf50b5f912c8eb8eeca19375e617209d200abebd771e9306510166462e6f91ad764f33f210a3058ee27c83f2f001a7a4ca32f509da2d207d0143a3438a020 + checksum: 10/0ceaf50b5f912c8eb8eeca19375e617209d200abebd771e9306510166462e6f91ad764f33f210a3058ee27c83f2f001a7a4ca32f509da2d207d0143a3438a020 languageName: node linkType: hard "concat-map@npm:0.0.1": version: 0.0.1 resolution: "concat-map@npm:0.0.1" - checksum: 8/902a9f5d8967a3e2faf138d5cb784b9979bad2e6db5357c5b21c568df4ebe62bcb15108af1b2253744844eb964fc023fbd9afbbbb6ddd0bcc204c6fb5b7bf3af + checksum: 10/9680699c8e2b3af0ae22592cb764acaf973f292a7b71b8a06720233011853a58e256c89216a10cbe889727532fd77f8bcd49a760cedfde271b8e006c20e079f2 languageName: node linkType: hard "console-control-strings@npm:^1.1.0": version: 1.1.0 resolution: "console-control-strings@npm:1.1.0" - checksum: 8/8755d76787f94e6cf79ce4666f0c5519906d7f5b02d4b884cf41e11dcd759ed69c57da0670afd9236d229a46e0f9cf519db0cd829c6dca820bb5a5c3def584ed + checksum: 10/27b5fa302bc8e9ae9e98c03c66d76ca289ad0c61ce2fe20ab288d288bee875d217512d2edb2363fc83165e88f1c405180cf3f5413a46e51b4fe1a004840c6cdb languageName: node linkType: hard @@ -1985,14 +1981,14 @@ __metadata: resolution: "content-disposition@npm:0.5.4" dependencies: safe-buffer: "npm:5.2.1" - checksum: 8/afb9d545e296a5171d7574fcad634b2fdf698875f4006a9dd04a3e1333880c5c0c98d47b560d01216fb6505a54a2ba6a843ee3a02ec86d7e911e8315255f56c3 + checksum: 10/b7f4ce176e324f19324be69b05bf6f6e411160ac94bc523b782248129eb1ef3be006f6cff431aaea5e337fe5d176ce8830b8c2a1b721626ead8933f0cbe78720 languageName: node linkType: hard "content-type@npm:^1.0.4": version: 1.0.4 resolution: "content-type@npm:1.0.4" - checksum: 8/3d93585fda985d1554eca5ebd251994327608d2e200978fdbfba21c0c679914d5faf266d17027de44b34a72c7b0745b18584ecccaa7e1fdfb6a68ac7114f12e0 + checksum: 10/5ea85c5293475c0cdf2f84e2c71f0519ced565840fb8cbda35997cb67cc45b879d5b9dbd37760c4041ca7415a3687f8a5f2f87b556b2aaefa49c0f3436a346d4 languageName: node linkType: hard @@ -2002,7 +1998,7 @@ __metadata: dependencies: depd: "npm:~2.0.0" keygrip: "npm:~1.1.0" - checksum: 8/213e4d14847b582fbd8a003203d3621a4b9fa792a315c37954e89332d38fac5bcc34ba92ef316ad6d5fe28f0187aaa115927fbbe2080744ad1707a93b4313247 + checksum: 10/4816461a38d907b20f3fb7a2bc4741fe580e7a195f3e248ef7025cb3be56a07638a0f4e72553a5f535554ca30172c8a3245c63ac72c9737cec034e9a47773392 languageName: node linkType: hard @@ -2011,14 +2007,14 @@ __metadata: resolution: "copy-anything@npm:2.0.6" dependencies: is-what: "npm:^3.14.1" - checksum: 8/7318dc00ca14f846d14fc886845cff63bf20a3c5f4fcdd31f68c40a213648c78a1093426947ac0f8f8577845e9a7a11eeaaeefb05d9a6f1b78ca5ec60c2aaf6e + checksum: 10/3b41be8f6322c2c13e93cde62a64d532f138f31d44ab85a3405d88601134afccc068be06534c162ed5c06b209788c423d7aaa50f1c34a92db81a1f8560d199eb languageName: node linkType: hard "copy-to@npm:^2.0.1": version: 2.0.1 resolution: "copy-to@npm:2.0.1" - checksum: 8/05ea12875bdc96ae053a3b30148e9d992026035ff2bfcc0b615e8d49d1cf8fc3d1f40843f9a4b7b1b6d9118eeebcba31e621076d7de525828aa9c07d22a81dab + checksum: 10/05ea12875bdc96ae053a3b30148e9d992026035ff2bfcc0b615e8d49d1cf8fc3d1f40843f9a4b7b1b6d9118eeebcba31e621076d7de525828aa9c07d22a81dab languageName: node linkType: hard @@ -2034,14 +2030,14 @@ __metadata: serialize-javascript: "npm:^6.0.2" peerDependencies: webpack: ^5.1.0 - checksum: 8/98127735336c6db5924688486d3a1854a41835963d0c0b81695b2e3d58c6675164be7d23dee7090b84a56d3c9923175d3d0863ac1942bcc3317d2efc1962b927 + checksum: 10/674725d4d9556b7b9a32bb85393532ef2bb75ffce785d942681b3575a86d900751f67cebbb089ddd050757f58c84edc18732e17880f12c45c9775ca94328526c languageName: node linkType: hard "core-util-is@npm:1.0.2": version: 1.0.2 resolution: "core-util-is@npm:1.0.2" - checksum: 8/7a4c925b497a2c91421e25bf76d6d8190f0b2359a9200dbeed136e63b2931d6294d3b1893eda378883ed363cd950f44a12a401384c609839ea616befb7927dab + checksum: 10/d0f7587346b44a1fe6c269267e037dd34b4787191e473c3e685f507229d88561c40eb18872fabfff02977301815d474300b7bfbd15396c13c5377393f7e87ec3 languageName: node linkType: hard @@ -2058,7 +2054,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 8/dc339ebea427898c9e03bf01b56ba7afbac07fc7d2a2d5a15d6e9c14de98275a9565da949375aee1809591c152c0a3877bb86dbeaf74d5bd5aaa79955ad9e7a0 + checksum: 10/91d082baca0f33b1c085bf010f9ded4af43cbedacba8821da0fb5667184d0a848addc52c31fadd080007f904a555319c238cf5f4c03e6d58ece2e4876b2e73d6 languageName: node linkType: hard @@ -2067,7 +2063,7 @@ __metadata: resolution: "crc@npm:3.8.0" dependencies: buffer: "npm:^5.1.0" - checksum: 8/dabbc4eba223b206068b92ca82bb471d583eb6be2384a87f5c3712730cfd6ba4b13a45e8ba3ef62174d5a781a2c5ac5c20bf36cf37bba73926899bd0aa19186f + checksum: 10/3a43061e692113d60fbaf5e438c5f6aa3374fe2368244a75cc083ecee6762513bcee8583f67c2c56feea0b0c72b41b7304fbd3c1e26cfcfaec310b9a18543fa8 languageName: node linkType: hard @@ -2080,7 +2076,7 @@ __metadata: semver: "npm:^5.5.0" shebang-command: "npm:^1.2.0" which: "npm:^1.2.9" - checksum: 8/f893bb0d96cd3d5751d04e67145bdddf25f99449531a72e82dcbbd42796bbc8268c1076c6b3ea51d4d455839902804b94bc45dfb37ecbb32ea8e54a6741c3ab9 + checksum: 10/f07e643b4875f26adffcd7f13bc68d9dff20cf395f8ed6f43a23f3ee24fc3a80a870a32b246fd074e514c8fd7da5f978ac6a7668346eec57aa87bac89c1ed3a1 languageName: node linkType: hard @@ -2091,7 +2087,7 @@ __metadata: path-key: "npm:^3.1.0" shebang-command: "npm:^2.0.0" which: "npm:^2.0.1" - checksum: 8/671cc7c7288c3a8406f3c69a3ae2fc85555c04169e9d611def9a675635472614f1c0ed0ef80955d5b6d4e724f6ced67f0ad1bb006c2ea643488fcfef994d7f52 + checksum: 10/e1a13869d2f57d974de0d9ef7acbf69dc6937db20b918525a01dacb5032129bd552d290d886d981e99f1b624cb03657084cc87bd40f115c07ecf376821c729ce languageName: node linkType: hard @@ -2100,7 +2096,7 @@ __metadata: resolution: "css-declaration-sorter@npm:6.4.1" peerDependencies: postcss: ^8.0.9 - checksum: 8/cbdc9e0d481011b1a28fd5b60d4eb55fe204391d31a0b1b490b2cecf4baa85810f9b8c48adab4df644f4718104ed3ed72c64a9745e3216173767bf4aeca7f9b8 + checksum: 10/06cbfd1f470b8accf5e235b0e658e2f82d33a1cea8c2a21b55dfef5280769b874a8979c50f2c035af9213836cf85fb7e4687748a9162d564d7638ed4a194888e languageName: node linkType: hard @@ -2118,7 +2114,7 @@ __metadata: semver: "npm:^7.5.4" peerDependencies: webpack: ^5.0.0 - checksum: 8/b0c1776f9c46474219eb471eeb8f4c8986a7735dc8356e578a63303cf292a7c8cb868fa74bf94a1a174e948fcb6523c63fca081cac6bbf246be8275b3cc384f0 + checksum: 10/6f897406188ed7f6db03daab0602ed86df1e967b48a048ab72d0ee223e59ab9e13c5235481b12deb79e12aadf0be43bc3bdee71e1dc1e875e4bcd91c05b464af languageName: node linkType: hard @@ -2131,7 +2127,7 @@ __metadata: domhandler: "npm:^4.3.1" domutils: "npm:^2.8.0" nth-check: "npm:^2.0.1" - checksum: 8/d6202736839194dd7f910320032e7cfc40372f025e4bf21ca5bf6eb0a33264f322f50ba9c0adc35dadd342d3d6fae5ca244779a4873afbfa76561e343f2058e0 + checksum: 10/8f7310c9af30ccaba8f72cb4a54d32232c53bf9ba05d019b693e16bfd7ba5df0affc1f4d74b1ee55923643d23b80a837eedcf60938c53356e479b04049ff9994 languageName: node linkType: hard @@ -2141,14 +2137,14 @@ __metadata: dependencies: mdn-data: "npm:2.0.14" source-map: "npm:^0.6.1" - checksum: 8/79f9b81803991b6977b7fcb1588799270438274d89066ce08f117f5cdb5e20019b446d766c61506dd772c839df84caa16042d6076f20c97187f5abe3b50e7d1f + checksum: 10/29710728cc4b136f1e9b23ee1228ec403ec9f3d487bc94a9c5dbec563c1e08c59bc917dd6f82521a35e869ff655c298270f43ca673265005b0cd05b292eb05ab languageName: node linkType: hard "css-what@npm:^6.0.1": version: 6.1.0 resolution: "css-what@npm:6.1.0" - checksum: 8/b975e547e1e90b79625918f84e67db5d33d896e6de846c9b584094e529f0c63e2ab85ee33b9daffd05bff3a146a1916bec664e18bb76dd5f66cbff9fc13b2bbe + checksum: 10/c67a3a2d0d81843af87f8bf0a4d0845b0f952377714abbb2884e48942409d57a2110eabee003609d02ee487b054614bdfcfc59ee265728ff105bd5aa221c1d0e languageName: node linkType: hard @@ -2157,7 +2153,7 @@ __metadata: resolution: "cssesc@npm:3.0.0" bin: cssesc: bin/cssesc - checksum: 8/f8c4ababffbc5e2ddf2fa9957dda1ee4af6048e22aeda1869d0d00843223c1b13ad3f5d88b51caa46c994225eacb636b764eb807a8883e2fb6f99b4f4e8c48b2 + checksum: 10/0e161912c1306861d8f46e1883be1cbc8b1b2879f0f509287c0db71796e4ddfb97ac96bdfca38f77f452e2c10554e1bb5678c99b07a5cf947a12778f73e47e12 languageName: node linkType: hard @@ -2196,7 +2192,7 @@ __metadata: postcss-unique-selectors: "npm:^5.1.1" peerDependencies: postcss: ^8.2.15 - checksum: 8/d3bbbe3d50c6174afb28d0bdb65b511fdab33952ec84810aef58b87189f3891c34aaa8b6a6101acd5314f8acded839b43513e39a75f91a698ddc985a1b1d9e95 + checksum: 10/4103f879a594e24eef7b2f175cd46b59d777982be23f0d1b84e962d044e0bea2f26aa107dea59a711e6394fdd77faf313cee6ae4be61d34656fdf33ff278f69d languageName: node linkType: hard @@ -2205,7 +2201,7 @@ __metadata: resolution: "cssnano-utils@npm:3.1.0" peerDependencies: postcss: ^8.2.15 - checksum: 8/975c84ce9174cf23bb1da1e9faed8421954607e9ea76440cd3bb0c1bea7e17e490d800fca5ae2812d1d9e9d5524eef23ede0a3f52497d7ccc628e5d7321536f2 + checksum: 10/975c84ce9174cf23bb1da1e9faed8421954607e9ea76440cd3bb0c1bea7e17e490d800fca5ae2812d1d9e9d5524eef23ede0a3f52497d7ccc628e5d7321536f2 languageName: node linkType: hard @@ -2218,7 +2214,7 @@ __metadata: yaml: "npm:^1.10.2" peerDependencies: postcss: ^8.2.15 - checksum: 8/ca9e1922178617c66c2f1548824b2c7af2ecf69cc3a187fc96bf8d29251c2e84d9e4966c69cf64a2a6a057a37dff7d6d057bc8a2a0957e6ea382e452ae9d0bbb + checksum: 10/8c5acbeabd10ffc05d01c63d3a82dcd8742299ead3f6da4016c853548b687d9b392de43e6d0f682dad1c2200d577c9360d8e709711c23721509aa4e55e052fb3 languageName: node linkType: hard @@ -2227,7 +2223,7 @@ __metadata: resolution: "csso@npm:4.2.0" dependencies: css-tree: "npm:^1.1.2" - checksum: 8/380ba9663da3bcea58dee358a0d8c4468bb6539be3c439dc266ac41c047217f52fd698fb7e4b6b6ccdfb8cf53ef4ceed8cc8ceccb8dfca2aa628319826b5b998 + checksum: 10/8b6a2dc687f2a8165dde13f67999d5afec63cb07a00ab100fbb41e4e8b28d986cfa0bc466b4f5ba5de7260c2448a64e6ad26ec718dd204d3a7d109982f0bf1aa languageName: node linkType: hard @@ -2239,7 +2235,7 @@ __metadata: peerDependenciesMeta: supports-color: optional: true - checksum: 8/3dbad3f94ea64f34431a9cbf0bafb61853eda57bff2880036153438f50fb5a84f27683ba0d8e5426bf41a8c6ff03879488120cf5b3a761e77953169c0600a708 + checksum: 10/0073c3bcbd9cb7d71dd5f6b55be8701af42df3e56e911186dfa46fac3a5b9eb7ce7f377dd1d3be6db8977221f8eb333d945216f645cf56f6b688cd484837d255 languageName: node linkType: hard @@ -2248,7 +2244,7 @@ __metadata: resolution: "debug@npm:2.6.9" dependencies: ms: "npm:2.0.0" - checksum: 8/d2f51589ca66df60bf36e1fa6e4386b318c3f1e06772280eea5b1ae9fd3d05e9c2b7fd8a7d862457d00853c75b00451aa2d7459b924629ee385287a650f58fe6 + checksum: 10/e07005f2b40e04f1bd14a3dd20520e9c4f25f60224cb006ce9d6781732c917964e9ec029fc7f1a151083cd929025ad5133814d4dc624a9aaf020effe4914ed14 languageName: node linkType: hard @@ -2257,7 +2253,7 @@ __metadata: resolution: "debug@npm:3.2.7" dependencies: ms: "npm:^2.1.1" - checksum: 8/b3d8c5940799914d30314b7c3304a43305fd0715581a919dacb8b3176d024a782062368405b47491516d2091d6462d4d11f2f4974a405048094f8bfebfa3071c + checksum: 10/d86fd7be2b85462297ea16f1934dc219335e802f629ca9a69b63ed8ed041dda492389bb2ee039217c02e5b54792b1c51aa96ae954cf28634d363a2360c7a1639 languageName: node linkType: hard @@ -2266,28 +2262,28 @@ __metadata: resolution: "decompress-response@npm:6.0.0" dependencies: mimic-response: "npm:^3.1.0" - checksum: 8/d377cf47e02d805e283866c3f50d3d21578b779731e8c5072d6ce8c13cc31493db1c2f6784da9d1d5250822120cefa44f1deab112d5981015f2e17444b763812 + checksum: 10/d377cf47e02d805e283866c3f50d3d21578b779731e8c5072d6ce8c13cc31493db1c2f6784da9d1d5250822120cefa44f1deab112d5981015f2e17444b763812 languageName: node linkType: hard "deep-equal@npm:~1.0.1": version: 1.0.1 resolution: "deep-equal@npm:1.0.1" - checksum: 8/5af8cbfcebf190491878a498caccc7dc9592f8ebd1685b976eacc3825619d222b5e929923163b92c4f414494e2b884f7ebf00c022e8198e8292deb70dd9785f4 + checksum: 10/cbecc071afb2891334ced9e9de5834889b9a9992ae8d8369b7eb74c513529eb6d1f6c04d4e2b5f34d8386f7816cd7a6cda45edff847695faea45e43c23973f45 languageName: node linkType: hard "deepmerge@npm:^4.2.2": version: 4.2.2 resolution: "deepmerge@npm:4.2.2" - checksum: 8/a8c43a1ed8d6d1ed2b5bf569fa4c8eb9f0924034baf75d5d406e47e157a451075c4db353efea7b6bcc56ec48116a8ce72fccf867b6e078e7c561904b5897530b + checksum: 10/0e58ed14f530d08f9b996cfc3a41b0801691620235bc5e1883260e3ed1c1b4a1dfb59f865770e45d5dfb1d7ee108c4fc10c2f85e822989d4123490ea90be2545 languageName: node linkType: hard "defer-to-connect@npm:^2.0.0": version: 2.0.1 resolution: "defer-to-connect@npm:2.0.1" - checksum: 8/8a9b50d2f25446c0bfefb55a48e90afd58f85b21bcf78e9207cd7b804354f6409032a1705c2491686e202e64fc05f147aa5aa45f9aa82627563f045937f5791b + checksum: 10/8a9b50d2f25446c0bfefb55a48e90afd58f85b21bcf78e9207cd7b804354f6409032a1705c2491686e202e64fc05f147aa5aa45f9aa82627563f045937f5791b languageName: node linkType: hard @@ -2297,7 +2293,7 @@ __metadata: dependencies: has-property-descriptors: "npm:^1.0.0" object-keys: "npm:^1.1.1" - checksum: 8/ce0aef3f9eb193562b5cfb79b2d2c86b6a109dfc9fdcb5f45d680631a1a908c06824ddcdb72b7573b54e26ace07f0a23420aaba0d5c627b34d2c1de8ef527e2b + checksum: 10/ce0aef3f9eb193562b5cfb79b2d2c86b6a109dfc9fdcb5f45d680631a1a908c06824ddcdb72b7573b54e26ace07f0a23420aaba0d5c627b34d2c1de8ef527e2b languageName: node linkType: hard @@ -2312,49 +2308,49 @@ __metadata: p-map: "npm:^2.0.0" pify: "npm:^4.0.1" rimraf: "npm:^2.6.3" - checksum: 8/521f7da44bd79da841c06d573923d1f64f423aee8b8219c973478d3150ce1dcc024d03ad605929292adbff56d6448bca60d96dcdd2d8a53b46dbcb27e265c94b + checksum: 10/521f7da44bd79da841c06d573923d1f64f423aee8b8219c973478d3150ce1dcc024d03ad605929292adbff56d6448bca60d96dcdd2d8a53b46dbcb27e265c94b languageName: node linkType: hard "delayed-stream@npm:~1.0.0": version: 1.0.0 resolution: "delayed-stream@npm:1.0.0" - checksum: 8/46fe6e83e2cb1d85ba50bd52803c68be9bd953282fa7096f51fc29edd5d67ff84ff753c51966061e5ba7cb5e47ef6d36a91924eddb7f3f3483b1c560f77a0020 + checksum: 10/46fe6e83e2cb1d85ba50bd52803c68be9bd953282fa7096f51fc29edd5d67ff84ff753c51966061e5ba7cb5e47ef6d36a91924eddb7f3f3483b1c560f77a0020 languageName: node linkType: hard "delegates@npm:^1.0.0": version: 1.0.0 resolution: "delegates@npm:1.0.0" - checksum: 8/a51744d9b53c164ba9c0492471a1a2ffa0b6727451bdc89e31627fdf4adda9d51277cfcbfb20f0a6f08ccb3c436f341df3e92631a3440226d93a8971724771fd + checksum: 10/a51744d9b53c164ba9c0492471a1a2ffa0b6727451bdc89e31627fdf4adda9d51277cfcbfb20f0a6f08ccb3c436f341df3e92631a3440226d93a8971724771fd languageName: node linkType: hard "depd@npm:2.0.0, depd@npm:^2.0.0, depd@npm:~2.0.0": version: 2.0.0 resolution: "depd@npm:2.0.0" - checksum: 8/abbe19c768c97ee2eed6282d8ce3031126662252c58d711f646921c9623f9052e3e1906443066beec1095832f534e57c523b7333f8e7e0d93051ab6baef5ab3a + checksum: 10/c0c8ff36079ce5ada64f46cc9d6fd47ebcf38241105b6e0c98f412e8ad91f084bcf906ff644cc3a4bd876ca27a62accb8b0fff72ea6ed1a414b89d8506f4a5ca languageName: node linkType: hard "depd@npm:^1.1.2, depd@npm:~1.1.2": version: 1.1.2 resolution: "depd@npm:1.1.2" - checksum: 8/6b406620d269619852885ce15965272b829df6f409724415e0002c8632ab6a8c0a08ec1f0bd2add05dc7bd7507606f7e2cc034fa24224ab829580040b835ecd9 + checksum: 10/2ed6966fc14463a9e85451db330ab8ba041efed0b9a1a472dbfc6fbf2f82bab66491915f996b25d8517dddc36c8c74e24c30879b34877f3c4410733444a51d1d languageName: node linkType: hard "destroy@npm:^1.0.4": version: 1.2.0 resolution: "destroy@npm:1.2.0" - checksum: 8/0acb300b7478a08b92d810ab229d5afe0d2f4399272045ab22affa0d99dbaf12637659411530a6fcd597a9bdac718fc94373a61a95b4651bbc7b83684a565e38 + checksum: 10/0acb300b7478a08b92d810ab229d5afe0d2f4399272045ab22affa0d99dbaf12637659411530a6fcd597a9bdac718fc94373a61a95b4651bbc7b83684a565e38 languageName: node linkType: hard "detect-node@npm:^2.0.4": version: 2.1.0 resolution: "detect-node@npm:2.1.0" - checksum: 8/832184ec458353e41533ac9c622f16c19f7c02d8b10c303dfd3a756f56be93e903616c0bb2d4226183c9351c15fc0b3dba41a17a2308262afabcfa3776e6ae6e + checksum: 10/832184ec458353e41533ac9c622f16c19f7c02d8b10c303dfd3a756f56be93e903616c0bb2d4226183c9351c15fc0b3dba41a17a2308262afabcfa3776e6ae6e languageName: node linkType: hard @@ -2368,7 +2364,7 @@ __metadata: minimatch: "npm:3.0.4" bin: dircompare: src/cli/dircompare.js - checksum: 8/16710bcb640b0edb753c6ecf10440c20a073588d797f624288601c52bca64a1f8c4dcd474d1fb7fda3595361b7cf528dee856140d83ecdaa19ba5695112d1209 + checksum: 10/a29c11cecc0da7ac7514dd572f6b40565efa190ec770ca79aa1208feda430f4cee1b481c5a6d279ab826118ee8976172b2f2b5c9c1eb509836052bd8325014df languageName: node linkType: hard @@ -2386,7 +2382,7 @@ __metadata: dependenciesMeta: dmg-license: optional: true - checksum: 8/3e37a4b191cf40c9c7b97d07408c2bf58e7632d78de0dc49a142fb7c68670fd2a7123f31ee8803b3cd100f38feea7b785c28698dfaace508254659d81ecc0b80 + checksum: 10/a10599eaf1d4e8ec735dc2c720ea2f8a155788596e3353ecb406c8ab7134a5ac303f7e173d5069abca776f181a36b86d9728d5590a7714cbefad5e46aae828b5 languageName: node linkType: hard @@ -2413,7 +2409,7 @@ __metadata: resolution: "dom-converter@npm:0.2.0" dependencies: utila: "npm:~0.4" - checksum: 8/ea52fe303f5392e48dea563abef0e6fb3a478b8dbe3c599e99bb5d53981c6c38fc4944e56bb92a8ead6bb989d10b7914722ae11febbd2fd0910e33b9fc4aaa77 + checksum: 10/71b22f56bce6255a963694a72860a99f08763cf500f02ff38ce4c7489f95b07e7a0069f10b04c7d200e21375474abe01232833ca1600f104bdee7173e493a5b9 languageName: node linkType: hard @@ -2424,14 +2420,14 @@ __metadata: domelementtype: "npm:^2.0.1" domhandler: "npm:^4.2.0" entities: "npm:^2.0.0" - checksum: 8/fbb0b01f87a8a2d18e6e5a388ad0f7ec4a5c05c06d219377da1abc7bb0f674d804f4a8a94e3f71ff15f6cb7dcfc75704a54b261db672b9b3ab03da6b758b0b22 + checksum: 10/53b217bcfed4a0f90dd47f34f239b1c81fff53ffa39d164d722325817fdb554903b145c2d12c8421ce0df7d31c1b180caf7eacd3c86391dd925f803df8027dcc languageName: node linkType: hard "domelementtype@npm:^2.0.1, domelementtype@npm:^2.2.0": version: 2.3.0 resolution: "domelementtype@npm:2.3.0" - checksum: 8/ee837a318ff702622f383409d1f5b25dd1024b692ef64d3096ff702e26339f8e345820f29a68bcdcea8cfee3531776b3382651232fbeae95612d6f0a75efb4f6 + checksum: 10/ee837a318ff702622f383409d1f5b25dd1024b692ef64d3096ff702e26339f8e345820f29a68bcdcea8cfee3531776b3382651232fbeae95612d6f0a75efb4f6 languageName: node linkType: hard @@ -2440,7 +2436,7 @@ __metadata: resolution: "domhandler@npm:4.3.1" dependencies: domelementtype: "npm:^2.2.0" - checksum: 8/4c665ceed016e1911bf7d1dadc09dc888090b64dee7851cccd2fcf5442747ec39c647bb1cb8c8919f8bbdd0f0c625a6bafeeed4b2d656bbecdbae893f43ffaaa + checksum: 10/e0d2af7403997a3ca040a9ace4a233b75ebe321e0ef628b417e46d619d65d47781b2f2038b6c2ef6e56e73e66aec99caf6a12c7e687ecff18ef74af6dfbde5de languageName: node linkType: hard @@ -2451,7 +2447,7 @@ __metadata: dom-serializer: "npm:^1.0.1" domelementtype: "npm:^2.2.0" domhandler: "npm:^4.2.0" - checksum: 8/abf7434315283e9aadc2a24bac0e00eab07ae4313b40cc239f89d84d7315ebdfd2fb1b5bf750a96bc1b4403d7237c7b2ebf60459be394d625ead4ca89b934391 + checksum: 10/1f316a03f00b09a8893d4a25d297d5cbffd02c564509dede28ef72d5ce38d93f6d61f1de88d439f31b14a1d9b42f587ed711b9e8b1b4d3bf6001399832bfc4e0 languageName: node linkType: hard @@ -2461,28 +2457,28 @@ __metadata: dependencies: no-case: "npm:^3.0.4" tslib: "npm:^2.0.3" - checksum: 8/a65e3519414856df0228b9f645332f974f2bf5433370f544a681122eab59e66038fc3349b4be1cdc47152779dac71a5864f1ccda2f745e767c46e9c6543b1169 + checksum: 10/a65e3519414856df0228b9f645332f974f2bf5433370f544a681122eab59e66038fc3349b4be1cdc47152779dac71a5864f1ccda2f745e767c46e9c6543b1169 languageName: node linkType: hard "dotenv-expand@npm:^5.1.0": version: 5.1.0 resolution: "dotenv-expand@npm:5.1.0" - checksum: 8/8017675b7f254384915d55f9eb6388e577cf0a1231a28d54b0ca03b782be9501b0ac90ac57338636d395fa59051e6209e9b44b8ddf169ce6076dffb5dea227d3 + checksum: 10/d52af2a6e4642979ae4221408f1b75102508dbe4f5bac1c0613f92a3cf3880d5c31f86b2f5cff3273f7c23e10421e75028546e8b6cd0376fcd20e3803b374e15 languageName: node linkType: hard "dotenv@npm:^9.0.2": version: 9.0.2 resolution: "dotenv@npm:9.0.2" - checksum: 8/6b7980330a653089bc9b83362248547791151ee74f9881eb223ac2f4d641b174b708f77315d88708b551d45b4177afd3ba71bca4832f8807e003f71c2a0f83e7 + checksum: 10/8a31ab90b097907a42932b972228e10470e8f0de9aea58c7f2134582e7810f229a2ce5861af40efeb7751c7bf2aae0c8347d72ba3935b72c834fbbac30f80f08 languageName: node linkType: hard "ee-first@npm:1.1.1": version: 1.1.1 resolution: "ee-first@npm:1.1.1" - checksum: 8/1b4cac778d64ce3b582a7e26b218afe07e207a0f9bfe13cc7395a6d307849cfe361e65033c3251e00c27dd060cab43014c2d6b2647676135e18b77d2d05b3f4f + checksum: 10/1b4cac778d64ce3b582a7e26b218afe07e207a0f9bfe13cc7395a6d307849cfe361e65033c3251e00c27dd060cab43014c2d6b2647676135e18b77d2d05b3f4f languageName: node linkType: hard @@ -2493,7 +2489,7 @@ __metadata: jake: "npm:^10.8.5" bin: ejs: bin/cli.js - checksum: 8/1d40d198ad52e315ccf37e577bdec06e24eefdc4e3c27aafa47751a03a0c7f0ec4310254c9277a5f14763c3cd4bbacce27497332b2d87c74232b9b1defef8efc + checksum: 10/879f84c8ee56d06dea7b47a8b493e1b398dba578ec7a701660cf77c8a6d565b932c5896639d1dc4a3be29204eccdb70ee4e1bdf634647c2490227f727d5d6a3d languageName: node linkType: hard @@ -2516,7 +2512,7 @@ __metadata: bin: electron-builder: cli.js install-app-deps: install-app-deps.js - checksum: 8/227f8fb9c9bb11a11d999f2ade6a5cd1afb720d6ff5053c88b4be62d1265b6268c8f6b4b3b8ad6d0a7261d57ea5acd6619ef301b843865f260b616c474cf8cbd + checksum: 10/0bd9e21447f6e599bc7e2af8cf6412f4d4e79b0fb0cd781dca634f8352b6c9b3ab48471b82fa55f37e85e6e06b4f5ded9624e15cd38ed06ca86da576ab4e864f languageName: node linkType: hard @@ -2533,7 +2529,7 @@ __metadata: bin: electron-osx-flat: bin/electron-osx-flat.js electron-osx-sign: bin/electron-osx-sign.js - checksum: 8/b688f9efb013670b4226cff7c38101e7b1384ea44e1ab203259995f1eefc019c63aa18e936217a76d33b5a5a452b987ab3d86a56a961294582ce42acbb950de6 + checksum: 10/c30d040fca62a1a81880e827173a5e806fc08a5877a9c97bfe5a6b09834bd1c8dbe8738d17a04adecff35b6441c69bbb2858c7dbd0af194a8eb6a99fc4938b8d languageName: node linkType: hard @@ -2548,21 +2544,21 @@ __metadata: fs-extra: "npm:^10.0.0" lazy-val: "npm:^1.0.5" mime: "npm:^2.5.2" - checksum: 8/70473d800f0607b5ffc32473e87004079fe3e5f133242bb498dcff0be89bfaa4ce967860809e12b97ce216b1e907649a8a916b7483daf7a00ea28db3d665878e + checksum: 10/3356838c2d12d78823c0f7b1170f16865e3635339b99bef607f8032c5d9e5089d4e6a2daaf661bd6b62434d9a9e4b336afdd30ce531481a930166a080d4ea02b languageName: node linkType: hard "electron-to-chromium@npm:^1.4.251": version: 1.4.284 resolution: "electron-to-chromium@npm:1.4.284" - checksum: 8/be496e9dca6509dbdbb54dc32146fc99f8eb716d28a7ee8ccd3eba0066561df36fc51418d8bd7cf5a5891810bf56c0def3418e74248f51ea4a843d423603d10a + checksum: 10/ffbf6e9939a53a4da90720db0fe64dcac9fb762891c21b2909d4c393fff916f6f6b86b95a32abe06f7f3a75625a433b54ed889f1aad8efa9229bbbb3f7a29556 languageName: node linkType: hard "electron-to-chromium@npm:^1.4.601": version: 1.4.645 resolution: "electron-to-chromium@npm:1.4.645" - checksum: 8/ac7d23b8123f09e2343016216b1a8f297ccfb4ae9dccefe3716023344cda8a81656916d40a87039fa3d448cac31c2c4147c6b913b22178a3a00d0221a8019513 + checksum: 10/245ba4bf9881a924b3ac29b276f83c5ed333c70dd44a1f4630a8c523719fc537fa1f14ee88d2ea6dbc195f571ce5d84ba2a067180ca6a5e3458acd9a168ada39 languageName: node linkType: hard @@ -2575,28 +2571,28 @@ __metadata: extract-zip: "npm:^2.0.1" bin: electron: cli.js - checksum: 8/b28a30c84b90b9a4f280c5e090066f4d7b0a2a31eb01ffbb32ce9bd50c6da51edd84f9c251f33b1c1e2ed0f02c221ebab15cdb2cf6c3c8011fce7163009e5f1a + checksum: 10/5472ee9bc0265996e5cd20fba188f7ff2131db50cdd1b159adcac6387cdd74dc9689af1e7f72ce443ea7202ab3b45c6af13a1aeb540edac66fb117a398c7365f languageName: node linkType: hard "emoji-regex@npm:^8.0.0": version: 8.0.0 resolution: "emoji-regex@npm:8.0.0" - checksum: 8/d4c5c39d5a9868b5fa152f00cada8a936868fd3367f33f71be515ecee4c803132d11b31a6222b2571b1e5f7e13890156a94880345594d0ce7e3c9895f560f192 + checksum: 10/c72d67a6821be15ec11997877c437491c313d924306b8da5d87d2a2bcc2cec9903cb5b04ee1a088460501d8e5b44f10df82fdc93c444101a7610b80c8b6938e1 languageName: node linkType: hard "emojis-list@npm:^3.0.0": version: 3.0.0 resolution: "emojis-list@npm:3.0.0" - checksum: 8/ddaaa02542e1e9436c03970eeed445f4ed29a5337dfba0fe0c38dfdd2af5da2429c2a0821304e8a8d1cadf27fdd5b22ff793571fa803ae16852a6975c65e8e70 + checksum: 10/114f47d6d45612621497d2b1556c8f142c35332a591780a54e863e42d281e72d6c7d7c419f2e419319d4eb7f6ebf1db82d9744905d90f275db20d06a763b5e19 languageName: node linkType: hard "encodeurl@npm:^1.0.2": version: 1.0.2 resolution: "encodeurl@npm:1.0.2" - checksum: 8/e50e3d508cdd9c4565ba72d2012e65038e5d71bdc9198cb125beb6237b5b1ade6c0d343998da9e170fb2eae52c1bed37d4d6d98a46ea423a0cddbed5ac3f780c + checksum: 10/e50e3d508cdd9c4565ba72d2012e65038e5d71bdc9198cb125beb6237b5b1ade6c0d343998da9e170fb2eae52c1bed37d4d6d98a46ea423a0cddbed5ac3f780c languageName: node linkType: hard @@ -2605,7 +2601,7 @@ __metadata: resolution: "encoding@npm:0.1.13" dependencies: iconv-lite: "npm:^0.6.2" - checksum: 8/bb98632f8ffa823996e508ce6a58ffcf5856330fde839ae42c9e1f436cc3b5cc651d4aeae72222916545428e54fd0f6aa8862fd8d25bdbcc4589f1e3f3715e7f + checksum: 10/bb98632f8ffa823996e508ce6a58ffcf5856330fde839ae42c9e1f436cc3b5cc651d4aeae72222916545428e54fd0f6aa8862fd8d25bdbcc4589f1e3f3715e7f languageName: node linkType: hard @@ -2614,7 +2610,7 @@ __metadata: resolution: "end-of-stream@npm:1.4.4" dependencies: once: "npm:^1.4.0" - checksum: 8/530a5a5a1e517e962854a31693dbb5c0b2fc40b46dad2a56a2deec656ca040631124f4795823acc68238147805f8b021abbe221f4afed5ef3c8e8efc2024908b + checksum: 10/530a5a5a1e517e962854a31693dbb5c0b2fc40b46dad2a56a2deec656ca040631124f4795823acc68238147805f8b021abbe221f4afed5ef3c8e8efc2024908b languageName: node linkType: hard @@ -2624,7 +2620,7 @@ __metadata: dependencies: graceful-fs: "npm:^4.2.4" tapable: "npm:^2.2.0" - checksum: 8/fbd8cdc9263be71cc737aa8a7d6c57b43d6aa38f6cc75dde6fcd3598a130cc465f979d2f4d01bb3bf475acb43817749c79f8eef9be048683602ca91ab52e4f11 + checksum: 10/180c3f2706f9117bf4dc7982e1df811dad83a8db075723f299245ef4488e0cad7e96859c5f0e410682d28a4ecd4da021ec7d06265f7e4eb6eed30c69ca5f7d3e languageName: node linkType: hard @@ -2644,21 +2640,21 @@ __metadata: dependencies: graceful-fs: "npm:^4.2.4" tapable: "npm:^2.2.0" - checksum: 8/bf3f787facaf4ce3439bef59d148646344e372bef5557f0d37ea8aa02c51f50a925cd1f07b8d338f18992c29f544ec235a8c64bcdb56030196c48832a5494174 + checksum: 10/ea5b49a0641827c6a083eaa3a625f953f4bd4e8f015bf70b9fb8cf60a35aaeb44e567df2da91ed28efaea3882845016e1d22a3152c2fdf773ea14f39cbe3d8a9 languageName: node linkType: hard "entities@npm:^2.0.0": version: 2.2.0 resolution: "entities@npm:2.2.0" - checksum: 8/19010dacaf0912c895ea262b4f6128574f9ccf8d4b3b65c7e8334ad0079b3706376360e28d8843ff50a78aabcb8f08f0a32dbfacdc77e47ed77ca08b713669b3 + checksum: 10/2c765221ee324dbe25e1b8ca5d1bf2a4d39e750548f2e85cbf7ca1d167d709689ddf1796623e66666ae747364c11ed512c03b48c5bbe70968d30f2a4009509b7 languageName: node linkType: hard "env-paths@npm:^2.2.0": version: 2.2.1 resolution: "env-paths@npm:2.2.1" - checksum: 8/65b5df55a8bab92229ab2b40dad3b387fad24613263d103a97f91c9fe43ceb21965cd3392b1ccb5d77088021e525c4e0481adb309625d0cb94ade1d1fb8dc17e + checksum: 10/65b5df55a8bab92229ab2b40dad3b387fad24613263d103a97f91c9fe43ceb21965cd3392b1ccb5d77088021e525c4e0481adb309625d0cb94ade1d1fb8dc17e languageName: node linkType: hard @@ -2667,14 +2663,14 @@ __metadata: resolution: "envinfo@npm:7.11.0" bin: envinfo: dist/cli.js - checksum: 8/c45a7d20409d5f4cda72483b150d3816b15b434f2944d72c1495d8838bd7c4e7b2f32c12128ffb9b92b5f66f436237b8a525eb3a9a5da2d20013bc4effa28aef + checksum: 10/8cba09db181329b243fe02b3384ec275ebf93d5d3663c31e2064697aa96576c7de9b7e1c878a250f8eaec0db8026bace747709dcdc8d8a4ecd9a653cdbc08926 languageName: node linkType: hard "err-code@npm:^2.0.2": version: 2.0.3 resolution: "err-code@npm:2.0.3" - checksum: 8/8b7b1be20d2de12d2255c0bc2ca638b7af5171142693299416e6a9339bd7d88fc8d7707d913d78e0993176005405a236b066b45666b27b797252c771156ace54 + checksum: 10/1d20d825cdcce8d811bfbe86340f4755c02655a7feb2f13f8c880566d9d72a3f6c92c192a6867632e490d6da67b678271f46e01044996a6443e870331100dfdd languageName: node linkType: hard @@ -2685,7 +2681,7 @@ __metadata: prr: "npm:~1.0.1" bin: errno: cli.js - checksum: 8/1271f7b9fbb3bcbec76ffde932485d1e3561856d21d847ec613a9722ee924cdd4e523a62dc71a44174d91e898fe21fdc8d5b50823f4b5e0ce8c35c8271e6ef4a + checksum: 10/93076ed11bedb8f0389cbefcbdd3445f66443159439dccbaac89a053428ad92147676736235d275612dc0296d3f9a7e6b7177ed78a566b6cd15dacd4fa0d5888 languageName: node linkType: hard @@ -2694,7 +2690,7 @@ __metadata: resolution: "error-ex@npm:1.3.2" dependencies: is-arrayish: "npm:^0.2.1" - checksum: 8/c1c2b8b65f9c91b0f9d75f0debaa7ec5b35c266c2cac5de412c1a6de86d4cbae04ae44e510378cb14d032d0645a36925d0186f8bb7367bcc629db256b743a001 + checksum: 10/d547740aa29c34e753fb6fed2c5de81802438529c12b3673bd37b6bb1fe49b9b7abdc3c11e6062fe625d8a296b3cf769a80f878865e25e685f787763eede3ffb languageName: node linkType: hard @@ -2726,14 +2722,14 @@ __metadata: string.prototype.trimend: "npm:^1.0.5" string.prototype.trimstart: "npm:^1.0.5" unbox-primitive: "npm:^1.0.2" - checksum: 8/89297cc785c31aedf961a603d5a07ed16471e435d3a1b6d070b54f157cf48454b95cda2ac55e4b86ff4fe3276e835fcffd2771578e6fa634337da49b26826141 + checksum: 10/04fc6bd5e0389d157f119b59eb98dbdd3d2c5873470b375f01d6eff6ecb3ca67f91a5d7ee93c5bf0c2c475c5de2b813229f5269e087634ad84fb7827c8a66959 languageName: node linkType: hard "es-module-lexer@npm:^1.2.1": version: 1.4.1 resolution: "es-module-lexer@npm:1.4.1" - checksum: 8/a11b5a256d4e8e9c7d94c2fd87415ccd1591617b6edd847e064503f8eaece2d25e2e9078a02c5ce3ed5e83bb748f5b4820efbe78072c8beb07ac619c2edec35d + checksum: 10/cf453613468c417af6e189b03d9521804033fdd5a229a36fedec28d37ea929fccf6822d42abff1126eb01ba1d2aa2845a48d5d1772c0724f8204464d9d3855f6 languageName: node linkType: hard @@ -2744,42 +2740,42 @@ __metadata: is-callable: "npm:^1.1.4" is-date-object: "npm:^1.0.1" is-symbol: "npm:^1.0.2" - checksum: 8/4ead6671a2c1402619bdd77f3503991232ca15e17e46222b0a41a5d81aebc8740a77822f5b3c965008e631153e9ef0580540007744521e72de8e33599fca2eed + checksum: 10/74aeeefe2714cf99bb40cab7ce3012d74e1e2c1bd60d0a913b467b269edde6e176ca644b5ba03a5b865fb044a29bca05671cd445c85ca2cdc2de155d7fc8fe9b languageName: node linkType: hard "es6-error@npm:^4.1.1": version: 4.1.1 resolution: "es6-error@npm:4.1.1" - checksum: 8/ae41332a51ec1323da6bbc5d75b7803ccdeddfae17c41b6166ebbafc8e8beb7a7b80b884b7fab1cc80df485860ac3c59d78605e860bb4f8cd816b3d6ade0d010 + checksum: 10/48483c25701dc5a6376f39bbe2eaf5da0b505607ec5a98cd3ade472c1939242156660636e2e508b33211e48e88b132d245341595c067bd4a95ac79fa7134da06 languageName: node linkType: hard "escalade@npm:^3.1.1": version: 3.1.1 resolution: "escalade@npm:3.1.1" - checksum: 8/a3e2a99f07acb74b3ad4989c48ca0c3140f69f923e56d0cba0526240ee470b91010f9d39001f2a4a313841d237ede70a729e92125191ba5d21e74b106800b133 + checksum: 10/afa618e73362576b63f6ca83c975456621095a1ed42ff068174e3f5cea48afc422814dda548c96e6ebb5333e7265140c7292abcc81bbd6ccb1757d50d3a4e182 languageName: node linkType: hard "escape-html@npm:^1.0.3": version: 1.0.3 resolution: "escape-html@npm:1.0.3" - checksum: 8/6213ca9ae00d0ab8bccb6d8d4e0a98e76237b2410302cf7df70aaa6591d509a2a37ce8998008cbecae8fc8ffaadf3fb0229535e6a145f3ce0b211d060decbb24 + checksum: 10/6213ca9ae00d0ab8bccb6d8d4e0a98e76237b2410302cf7df70aaa6591d509a2a37ce8998008cbecae8fc8ffaadf3fb0229535e6a145f3ce0b211d060decbb24 languageName: node linkType: hard "escape-string-regexp@npm:^1.0.5": version: 1.0.5 resolution: "escape-string-regexp@npm:1.0.5" - checksum: 8/6092fda75c63b110c706b6a9bfde8a612ad595b628f0bd2147eea1d3406723020810e591effc7db1da91d80a71a737a313567c5abb3813e8d9c71f4aa595b410 + checksum: 10/6092fda75c63b110c706b6a9bfde8a612ad595b628f0bd2147eea1d3406723020810e591effc7db1da91d80a71a737a313567c5abb3813e8d9c71f4aa595b410 languageName: node linkType: hard "escape-string-regexp@npm:^4.0.0": version: 4.0.0 resolution: "escape-string-regexp@npm:4.0.0" - checksum: 8/98b48897d93060f2322108bf29db0feba7dd774be96cd069458d1453347b25ce8682ecc39859d4bca2203cc0ab19c237bcc71755eff49a0f8d90beadeeba5cc5 + checksum: 10/98b48897d93060f2322108bf29db0feba7dd774be96cd069458d1453347b25ce8682ecc39859d4bca2203cc0ab19c237bcc71755eff49a0f8d90beadeeba5cc5 languageName: node linkType: hard @@ -2789,7 +2785,7 @@ __metadata: dependencies: esrecurse: "npm:^4.3.0" estraverse: "npm:^4.1.1" - checksum: 8/47e4b6a3f0cc29c7feedee6c67b225a2da7e155802c6ea13bbef4ac6b9e10c66cd2dcb987867ef176292bf4e64eccc680a49e35e9e9c669f4a02bac17e86abdb + checksum: 10/c541ef384c92eb5c999b7d3443d80195fcafb3da335500946f6db76539b87d5826c8f2e1d23bf6afc3154ba8cd7c8e566f8dc00f1eea25fdf3afc8fb9c87b238 languageName: node linkType: hard @@ -2798,28 +2794,28 @@ __metadata: resolution: "esrecurse@npm:4.3.0" dependencies: estraverse: "npm:^5.2.0" - checksum: 8/ebc17b1a33c51cef46fdc28b958994b1dc43cd2e86237515cbc3b4e5d2be6a811b2315d0a1a4d9d340b6d2308b15322f5c8291059521cc5f4802f65e7ec32837 + checksum: 10/44ffcd89e714ea6b30143e7f119b104fc4d75e77ee913f34d59076b40ef2d21967f84e019f84e1fd0465b42cdbf725db449f232b5e47f29df29ed76194db8e16 languageName: node linkType: hard "estraverse@npm:^4.1.1": version: 4.3.0 resolution: "estraverse@npm:4.3.0" - checksum: 8/a6299491f9940bb246124a8d44b7b7a413a8336f5436f9837aaa9330209bd9ee8af7e91a654a3545aee9c54b3308e78ee360cef1d777d37cfef77d2fa33b5827 + checksum: 10/3f67ad02b6dbfaddd9ea459cf2b6ef4ecff9a6082a7af9d22e445b9abc082ad9ca47e1825557b293fcdae477f4714e561123e30bb6a5b2f184fb2bad4a9497eb languageName: node linkType: hard "estraverse@npm:^5.2.0": version: 5.3.0 resolution: "estraverse@npm:5.3.0" - checksum: 8/072780882dc8416ad144f8fe199628d2b3e7bbc9989d9ed43795d2c90309a2047e6bc5979d7e2322a341163d22cfad9e21f4110597fe487519697389497e4e2b + checksum: 10/37cbe6e9a68014d34dbdc039f90d0baf72436809d02edffcc06ba3c2a12eb298048f877511353b130153e532aac8d68ba78430c0dd2f44806ebc7c014b01585e languageName: node linkType: hard "events@npm:^3.2.0": version: 3.3.0 resolution: "events@npm:3.3.0" - checksum: 8/f6f487ad2198aa41d878fa31452f1a3c00958f46e9019286ff4787c84aac329332ab45c9cdc8c445928fc6d7ded294b9e005a7fce9426488518017831b272780 + checksum: 10/a3d47e285e28d324d7180f1e493961a2bbb4cad6412090e4dec114f4db1f5b560c7696ee8e758f55e23913ede856e3689cd3aa9ae13c56b5d8314cd3b3ddd1be languageName: node linkType: hard @@ -2836,21 +2832,21 @@ __metadata: optional: true bin: extract-zip: cli.js - checksum: 8/8cbda9debdd6d6980819cc69734d874ddd71051c9fe5bde1ef307ebcedfe949ba57b004894b585f758b7c9eeeea0e3d87f2dda89b7d25320459c2c9643ebb635 + checksum: 10/8cbda9debdd6d6980819cc69734d874ddd71051c9fe5bde1ef307ebcedfe949ba57b004894b585f758b7c9eeeea0e3d87f2dda89b7d25320459c2c9643ebb635 languageName: node linkType: hard "extsprintf@npm:^1.2.0": version: 1.4.1 resolution: "extsprintf@npm:1.4.1" - checksum: 8/a2f29b241914a8d2bad64363de684821b6b1609d06ae68d5b539e4de6b28659715b5bea94a7265201603713b7027d35399d10b0548f09071c5513e65e8323d33 + checksum: 10/bfd6d55f3c0c04d826fe0213264b383c03f32825af6b1ff777f3f2dc49467e599361993568d75b7b19a8ea1bb08c8e7cd8c3d87d179ced91bb0dcf81ca6938e0 languageName: node linkType: hard "fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": version: 3.1.3 resolution: "fast-deep-equal@npm:3.1.3" - checksum: 8/e21a9d8d84f53493b6aa15efc9cfd53dd5b714a1f23f67fb5dc8f574af80df889b3bce25dc081887c6d25457cce704e636395333abad896ccdec03abaf1f3f9d + checksum: 10/e21a9d8d84f53493b6aa15efc9cfd53dd5b714a1f23f67fb5dc8f574af80df889b3bce25dc081887c6d25457cce704e636395333abad896ccdec03abaf1f3f9d languageName: node linkType: hard @@ -2863,21 +2859,21 @@ __metadata: glob-parent: "npm:^5.1.2" merge2: "npm:^1.3.0" micromatch: "npm:^4.0.4" - checksum: 8/900e4979f4dbc3313840078419245621259f349950411ca2fa445a2f9a1a6d98c3b5e7e0660c5ccd563aa61abe133a21765c6c0dec8e57da1ba71d8000b05ec1 + checksum: 10/222512e9315a0efca1276af9adb2127f02105d7288fa746145bf45e2716383fb79eb983c89601a72a399a56b7c18d38ce70457c5466218c5f13fad957cee16df languageName: node linkType: hard "fast-json-stable-stringify@npm:^2.0.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" - checksum: 8/b191531e36c607977e5b1c47811158733c34ccb3bfde92c44798929e9b4154884378536d26ad90dfecd32e1ffc09c545d23535ad91b3161a27ddbb8ebe0cbecb + checksum: 10/2c20055c1fa43c922428f16ca8bb29f2807de63e5c851f665f7ac9790176c01c3b40335257736b299764a8d383388dabc73c8083b8e1bc3d99f0a941444ec60e languageName: node linkType: hard "fastest-levenshtein@npm:^1.0.12": version: 1.0.16 resolution: "fastest-levenshtein@npm:1.0.16" - checksum: 8/a78d44285c9e2ae2c25f3ef0f8a73f332c1247b7ea7fb4a191e6bb51aa6ee1ef0dfb3ed113616dcdc7023e18e35a8db41f61c8d88988e877cf510df8edafbc71 + checksum: 10/ee85d33b5cef592033f70e1c13ae8624055950b4eb832435099cd56aa313d7f251b873bedbc06a517adfaff7b31756d139535991e2406967438e03a1bf1b008e languageName: node linkType: hard @@ -2886,7 +2882,7 @@ __metadata: resolution: "fastq@npm:1.16.0" dependencies: reusify: "npm:^1.0.4" - checksum: 8/1d40ed1f100ae625e5720484e8602b7ad07649370f1cbc3e34a6b9630a0bfed6946bab0322d8a368a1e3cde87bb9bbb8d3bc2ae01a0c1f022fac1d07c04e4feb + checksum: 10/de151543aab9d91900ed5da88860c46987ece925c628df586fac664235f25e020ec20729e1c032edb5fd2520fd4aa5b537d69e39b689e65e82112cfbecb4479e languageName: node linkType: hard @@ -2895,14 +2891,14 @@ __metadata: resolution: "fd-slicer@npm:1.1.0" dependencies: pend: "npm:~1.2.0" - checksum: 8/c8585fd5713f4476eb8261150900d2cb7f6ff2d87f8feb306ccc8a1122efd152f1783bdb2b8dc891395744583436bfd8081d8e63ece0ec8687eeefea394d4ff2 + checksum: 10/db3e34fa483b5873b73f248e818f8a8b59a6427fd8b1436cd439c195fdf11e8659419404826059a642b57d18075c856d06d6a50a1413b714f12f833a9341ead3 languageName: node linkType: hard "file-uri-to-path@npm:1.0.0": version: 1.0.0 resolution: "file-uri-to-path@npm:1.0.0" - checksum: 8/b648580bdd893a008c92c7ecc96c3ee57a5e7b6c4c18a9a09b44fb5d36d79146f8e442578bc0e173dc027adf3987e254ba1dfd6e3ec998b7c282873010502144 + checksum: 10/b648580bdd893a008c92c7ecc96c3ee57a5e7b6c4c18a9a09b44fb5d36d79146f8e442578bc0e173dc027adf3987e254ba1dfd6e3ec998b7c282873010502144 languageName: node linkType: hard @@ -2911,7 +2907,7 @@ __metadata: resolution: "filelist@npm:1.0.4" dependencies: minimatch: "npm:^5.0.1" - checksum: 8/a303573b0821e17f2d5e9783688ab6fbfce5d52aaac842790ae85e704a6f5e4e3538660a63183d6453834dedf1e0f19a9dadcebfa3e926c72397694ea11f5160 + checksum: 10/4b436fa944b1508b95cffdfc8176ae6947b92825483639ef1b9a89b27d82f3f8aa22b21eed471993f92709b431670d4e015b39c087d435a61e1bb04564cf51de languageName: node linkType: hard @@ -2930,7 +2926,7 @@ __metadata: dependencies: locate-path: "npm:^5.0.0" path-exists: "npm:^4.0.0" - checksum: 8/4c172680e8f8c1f78839486e14a43ef82e9decd0e74145f40707cc42e7420506d5ec92d9a11c22bd2c48fb0c384ea05dd30e10dd152fefeec6f2f75282a8b844 + checksum: 10/4c172680e8f8c1f78839486e14a43ef82e9decd0e74145f40707cc42e7420506d5ec92d9a11c22bd2c48fb0c384ea05dd30e10dd152fefeec6f2f75282a8b844 languageName: node linkType: hard @@ -2939,7 +2935,7 @@ __metadata: resolution: "flat@npm:5.0.2" bin: flat: cli.js - checksum: 8/12a1536ac746db74881316a181499a78ef953632ddd28050b7a3a43c62ef5462e3357c8c29d76072bb635f147f7a9a1f0c02efef6b4be28f8db62ceb3d5c7f5d + checksum: 10/72479e651c15eab53e25ce04c31bab18cfaac0556505cac19221dbbe85bbb9686bc76e4d397e89e5bf516ce667dcf818f8b07e585568edba55abc2bf1f698fb5 languageName: node linkType: hard @@ -2962,7 +2958,7 @@ __metadata: peerDependencies: typescript: ">3.6.0" webpack: ^5.11.0 - checksum: 8/136a87bfa36cb6ca27d2ae0feb3c6cabe0de734c1c1ed38f95b71ddb3eb4b6c461829a2dbb04f18f0f717fc6341f544327598255758c269cec9774ccee035afc + checksum: 10/3399ea114d9397da5e51baaa1cf2ca704f4616c8255df672889cafc2a823f77e8bf9913133852d29d676657b1d40e4a2fba8eb9fafee09e00faeda924289220e languageName: node linkType: hard @@ -2973,14 +2969,14 @@ __metadata: asynckit: "npm:^0.4.0" combined-stream: "npm:^1.0.8" mime-types: "npm:^2.1.12" - checksum: 8/01135bf8675f9d5c61ff18e2e2932f719ca4de964e3be90ef4c36aacfc7b9cb2fceb5eca0b7e0190e3383fe51c5b37f4cb80b62ca06a99aaabfcfd6ac7c9328c + checksum: 10/7264aa760a8cf09482816d8300f1b6e2423de1b02bba612a136857413fdc96d7178298ced106817655facc6b89036c6e12ae31c9eb5bdc16aabf502ae8a5d805 languageName: node linkType: hard "fresh@npm:~0.5.2": version: 0.5.2 resolution: "fresh@npm:0.5.2" - checksum: 8/13ea8b08f91e669a64e3ba3a20eb79d7ca5379a81f1ff7f4310d54e2320645503cc0c78daedc93dfb6191287295f6479544a649c64d8e41a1c0fb0c221552346 + checksum: 10/64c88e489b5d08e2f29664eb3c79c705ff9a8eb15d3e597198ef76546d4ade295897a44abb0abd2700e7ef784b2e3cbf1161e4fbf16f59129193fd1030d16da1 languageName: node linkType: hard @@ -2991,7 +2987,7 @@ __metadata: graceful-fs: "npm:^4.2.0" jsonfile: "npm:^6.0.1" universalify: "npm:^2.0.0" - checksum: 8/dc94ab37096f813cc3ca12f0f1b5ad6744dfed9ed21e953d72530d103cea193c2f81584a39e9dee1bea36de5ee66805678c0dddc048e8af1427ac19c00fffc50 + checksum: 10/05ce2c3b59049bcb7b52001acd000e44b3c4af4ec1f8839f383ef41ec0048e3cfa7fd8a637b1bddfefad319145db89be91f4b7c1db2908205d38bf91e7d1d3b7 languageName: node linkType: hard @@ -3002,7 +2998,7 @@ __metadata: graceful-fs: "npm:^4.2.0" jsonfile: "npm:^4.0.0" universalify: "npm:^0.1.0" - checksum: 8/bf44f0e6cea59d5ce071bba4c43ca76d216f89e402dc6285c128abc0902e9b8525135aa808adad72c9d5d218e9f4bcc63962815529ff2f684ad532172a284880 + checksum: 10/6fb12449f5349be724a138b4a7b45fe6a317d2972054517f5971959c26fbd17c0e145731a11c7324460262baa33e0a799b183ceace98f7a372c95fbb6f20f5de languageName: node linkType: hard @@ -3014,7 +3010,7 @@ __metadata: graceful-fs: "npm:^4.2.0" jsonfile: "npm:^6.0.1" universalify: "npm:^2.0.0" - checksum: 8/ba71ba32e0faa74ab931b7a0031d1523c66a73e225de7426e275e238e312d07313d2da2d33e34a52aa406c8763ade5712eb3ec9ba4d9edce652bcacdc29e6b20 + checksum: 10/08600da1b49552ed23dfac598c8fc909c66776dd130fea54fbcad22e330f7fcc13488bb995f6bc9ce5651aa35b65702faf616fe76370ee56f1aade55da982dca languageName: node linkType: hard @@ -3023,21 +3019,21 @@ __metadata: resolution: "fs-minipass@npm:2.1.0" dependencies: minipass: "npm:^3.0.0" - checksum: 8/1b8d128dae2ac6cc94230cc5ead341ba3e0efaef82dab46a33d171c044caaa6ca001364178d42069b2809c35a1c3c35079a32107c770e9ffab3901b59af8c8b1 + checksum: 10/03191781e94bc9a54bd376d3146f90fe8e082627c502185dbf7b9b3032f66b0b142c1115f3b2cc5936575fc1b44845ce903dd4c21bec2a8d69f3bd56f9cee9ec languageName: node linkType: hard "fs-monkey@npm:^1.0.4": version: 1.0.5 resolution: "fs-monkey@npm:1.0.5" - checksum: 8/424b67f65b37fe66117ae2bb061f790fe6d4b609e1d160487c74b3d69fbf42f262c665ccfba32e8b5f113f96f92e9a58fcdebe42d5f6649bdfc72918093a3119 + checksum: 10/7fcdf9267006800d61f1722cf9fa92ed8be8b3ed86614f6d43ab6f87a30f13bc784020465e20728ca4ea65ea7377bfcdbde52b54bf8c3cc2f43a6d62270ebf64 languageName: node linkType: hard "fs.realpath@npm:^1.0.0": version: 1.0.0 resolution: "fs.realpath@npm:1.0.0" - checksum: 8/99ddea01a7e75aa276c250a04eedeffe5662bce66c65c07164ad6264f9de18fb21be9433ead460e54cff20e31721c811f4fb5d70591799df5f85dce6d6746fd0 + checksum: 10/e703107c28e362d8d7b910bbcbfd371e640a3bb45ae157a362b5952c0030c0b6d4981140ec319b347bce7adc025dd7813da1ff908a945ac214d64f5402a51b96 languageName: node linkType: hard @@ -3046,7 +3042,7 @@ __metadata: resolution: "fsevents@npm:2.3.2" dependencies: node-gyp: "npm:latest" - checksum: 8/97ade64e75091afee5265e6956cb72ba34db7819b4c3e94c431d4be2b19b8bb7a2d4116da417950c3425f17c8fe693d25e20212cac583ac1521ad066b77ae31f + checksum: 10/6b5b6f5692372446ff81cf9501c76e3e0459a4852b3b5f1fc72c103198c125a6b8c72f5f166bdd76ffb2fca261e7f6ee5565daf80dca6e571e55bcc589cc1256 conditions: os=darwin languageName: node linkType: hard @@ -3063,14 +3059,14 @@ __metadata: "function-bind@npm:^1.1.1": version: 1.1.1 resolution: "function-bind@npm:1.1.1" - checksum: 8/b32fbaebb3f8ec4969f033073b43f5c8befbb58f1a79e12f1d7490358150359ebd92f49e72ff0144f65f2c48ea2a605bff2d07965f548f6474fd8efd95bf361a + checksum: 10/d83f2968030678f0b8c3f2183d63dcd969344eb8b55b4eb826a94ccac6de8b87c95bebffda37a6386c74f152284eb02956ff2c496897f35d32bdc2628ac68ac5 languageName: node linkType: hard "function-bind@npm:^1.1.2": version: 1.1.2 resolution: "function-bind@npm:1.1.2" - checksum: 8/2b0ff4ce708d99715ad14a6d1f894e2a83242e4a52ccfcefaee5e40050562e5f6dafc1adbb4ce2d4ab47279a45dc736ab91ea5042d843c3c092820dfe032efb1 + checksum: 10/185e20d20f10c8d661d59aac0f3b63b31132d492e1b11fcc2a93cb2c47257ebaee7407c38513efd2b35cafdf972d9beb2ea4593c1e0f3bf8f2744836928d7454 languageName: node linkType: hard @@ -3082,14 +3078,14 @@ __metadata: define-properties: "npm:^1.1.3" es-abstract: "npm:^1.19.0" functions-have-names: "npm:^1.2.2" - checksum: 8/acd21d733a9b649c2c442f067567743214af5fa248dbeee69d8278ce7df3329ea5abac572be9f7470b4ec1cd4d8f1040e3c5caccf98ebf2bf861a0deab735c27 + checksum: 10/5d426e5a38ac41747bcfce6191e0ec818ed18678c16cfc36b5d1ca87f56ff98c4ce958ee2c1ea2a18dc3da989844a37b1065311e2d2ae4cf12da8f82418b686b languageName: node linkType: hard "functions-have-names@npm:^1.2.2": version: 1.2.3 resolution: "functions-have-names@npm:1.2.3" - checksum: 8/c3f1f5ba20f4e962efb71344ce0a40722163e85bee2101ce25f88214e78182d2d2476aa85ef37950c579eb6cf6ee811c17b3101bb84004bb75655f3e33f3fdb5 + checksum: 10/0ddfd3ed1066a55984aaecebf5419fbd9344a5c38dd120ffb0739fac4496758dcf371297440528b115e4367fc46e3abc86a2cc0ff44612181b175ae967a11a05 languageName: node linkType: hard @@ -3105,14 +3101,14 @@ __metadata: string-width: "npm:^4.2.3" strip-ansi: "npm:^6.0.1" wide-align: "npm:^1.1.5" - checksum: 8/788b6bfe52f1dd8e263cda800c26ac0ca2ff6de0b6eee2fe0d9e3abf15e149b651bd27bf5226be10e6e3edb5c4e5d5985a5a1a98137e7a892f75eff76467ad2d + checksum: 10/09535dd53b5ced6a34482b1fa9f3929efdeac02f9858569cde73cef3ed95050e0f3d095706c1689614059898924b7a74aa14042f51381a1ccc4ee5c29d2389c4 languageName: node linkType: hard "get-caller-file@npm:^2.0.5": version: 2.0.5 resolution: "get-caller-file@npm:2.0.5" - checksum: 8/b9769a836d2a98c3ee734a88ba712e62703f1df31b94b784762c433c27a386dd6029ff55c2a920c392e33657d80191edbf18c61487e198844844516f843496b9 + checksum: 10/b9769a836d2a98c3ee734a88ba712e62703f1df31b94b784762c433c27a386dd6029ff55c2a920c392e33657d80191edbf18c61487e198844844516f843496b9 languageName: node linkType: hard @@ -3123,7 +3119,7 @@ __metadata: function-bind: "npm:^1.1.1" has: "npm:^1.0.3" has-symbols: "npm:^1.0.3" - checksum: 8/152d79e87251d536cf880ba75cfc3d6c6c50e12b3a64e1ea960e73a3752b47c69f46034456eae1b0894359ce3bc64c55c186f2811f8a788b75b638b06fab228a + checksum: 10/ab4d7d83d6d08036d197291927442d1c05d5329484f8bdcdf895f5d6ecf158ec99a8ccd9f548bcfe917382ea3b74a423bdf5bee03f5c166359045d2f8a24c7a5 languageName: node linkType: hard @@ -3132,7 +3128,7 @@ __metadata: resolution: "get-stream@npm:5.2.0" dependencies: pump: "npm:^3.0.0" - checksum: 8/8bc1a23174a06b2b4ce600df38d6c98d2ef6d84e020c1ddad632ad75bac4e092eeb40e4c09e0761c35fc2dbc5e7fff5dab5e763a383582c4a167dd69a905bd12 + checksum: 10/13a73148dca795e41421013da6e3ebff8ccb7fba4d2f023fd0c6da2c166ec4e789bec9774a73a7b49c08daf2cae552f8a3e914042ac23b5f59dd278cc8f9cbfb languageName: node linkType: hard @@ -3142,7 +3138,7 @@ __metadata: dependencies: call-bind: "npm:^1.0.2" get-intrinsic: "npm:^1.1.1" - checksum: 8/9ceff8fe968f9270a37a1f73bf3f1f7bda69ca80f4f80850670e0e7b9444ff99323f7ac52f96567f8b5f5fbe7ac717a0d81d3407c7313e82810c6199446a5247 + checksum: 10/7e5f298afe0f0872747dce4a949ce490ebc5d6dd6aefbbe5044543711c9b19a4dfaebdbc627aee99e1299d58a435b2fbfa083458c1d58be6dc03a3bada24d359 languageName: node linkType: hard @@ -3151,7 +3147,7 @@ __metadata: resolution: "glob-parent@npm:5.1.2" dependencies: is-glob: "npm:^4.0.1" - checksum: 8/f4f2bfe2425296e8a47e36864e4f42be38a996db40420fe434565e4480e3322f18eb37589617a98640c5dc8fdec1a387007ee18dbb1f3f5553409c34d17f425e + checksum: 10/32cd106ce8c0d83731966d31517adb766d02c3812de49c30cfe0675c7c0ae6630c11214c54a5ae67aca882cf738d27fd7768f21aa19118b9245950554be07247 languageName: node linkType: hard @@ -3160,14 +3156,14 @@ __metadata: resolution: "glob-parent@npm:6.0.2" dependencies: is-glob: "npm:^4.0.3" - checksum: 8/c13ee97978bef4f55106b71e66428eb1512e71a7466ba49025fc2aec59a5bfb0954d5abd58fc5ee6c9b076eef4e1f6d3375c2e964b88466ca390da4419a786a8 + checksum: 10/c13ee97978bef4f55106b71e66428eb1512e71a7466ba49025fc2aec59a5bfb0954d5abd58fc5ee6c9b076eef4e1f6d3375c2e964b88466ca390da4419a786a8 languageName: node linkType: hard "glob-to-regexp@npm:0.4.1, glob-to-regexp@npm:^0.4.1": version: 0.4.1 resolution: "glob-to-regexp@npm:0.4.1" - checksum: 8/e795f4e8f06d2a15e86f76e4d92751cf8bbfcf0157cea5c2f0f35678a8195a750b34096b1256e436f0cebc1883b5ff0888c47348443e69546a5a87f9e1eb1167 + checksum: 10/9009529195a955c40d7b9690794aeff5ba665cc38f1519e111c58bb54366fd0c106bde80acf97ba4e533208eb53422c83b136611a54c5fefb1edd8dc267cb62e languageName: node linkType: hard @@ -3181,7 +3177,7 @@ __metadata: minimatch: "npm:^3.1.1" once: "npm:^1.3.0" path-is-absolute: "npm:^1.0.0" - checksum: 8/29452e97b38fa704dabb1d1045350fb2467cf0277e155aa9ff7077e90ad81d1ea9d53d3ee63bd37c05b09a065e90f16aec4a65f5b8de401d1dac40bc5605d133 + checksum: 10/59452a9202c81d4508a43b8af7082ca5c76452b9fcc4a9ab17655822e6ce9b21d4f8fbadabe4fe3faef448294cec249af305e2cd824b7e9aaf689240e5e96a7b languageName: node linkType: hard @@ -3194,7 +3190,7 @@ __metadata: inherits: "npm:2" minimatch: "npm:^5.0.1" once: "npm:^1.3.0" - checksum: 8/50bcdea19d8e79d8de5f460b1939ffc2b3299eac28deb502093fdca22a78efebc03e66bf54f0abc3d3d07d8134d19a32850288b7440d77e072aa55f9d33b18c5 + checksum: 10/cd002c04010ffddba426376c3046466b923b5450f89a434e6a9df6bfec369a4e907afc436303d7fbc34366dcf37056dcc3bec41e41ce983ed8d78b6035ecc317 languageName: node linkType: hard @@ -3208,7 +3204,7 @@ __metadata: roarr: "npm:^2.15.3" semver: "npm:^7.3.2" serialize-error: "npm:^7.0.1" - checksum: 8/75074d80733b4bd5386c47f5df028e798018025beac0ab310e9908c72bf5639e408203e7bca0130d5ee01b5f4abc6d34385d96a9f950ea5fe1979bb431c808f7 + checksum: 10/a26d96d1d79af57a8ef957f66cef6f3889a8fa55131f0bbd72b8e1bc340a9b7ed7b627b96eaf5eb14aee08a8b4ad44395090e2cf77146e993f1d2df7abaa0a0d languageName: node linkType: hard @@ -3217,7 +3213,7 @@ __metadata: resolution: "globalthis@npm:1.0.3" dependencies: define-properties: "npm:^1.1.3" - checksum: 8/fbd7d760dc464c886d0196166d92e5ffb4c84d0730846d6621a39fbbc068aeeb9c8d1421ad330e94b7bca4bb4ea092f5f21f3d36077812af5d098b4dc006c998 + checksum: 10/45ae2f3b40a186600d0368f2a880ae257e8278b4c7704f0417d6024105ad7f7a393661c5c2fa1334669cd485ea44bc883a08fdd4516df2428aec40c99f52aa89 languageName: node linkType: hard @@ -3231,7 +3227,7 @@ __metadata: path-type: "npm:^5.0.0" slash: "npm:^5.1.0" unicorn-magic: "npm:^0.1.0" - checksum: 8/f331b42993e420c8f2b61a6ca062276977ea6d95f181640ff018f00200f4fe5b50f1fae7540903483e6570ca626fe16234ab88e848d43381a2529220548a9d39 + checksum: 10/6e7d84bbc69d8d21a07507af090998c6546c385702a350ff14f6fb08207f90ed40bd41c7b19c11a23851c3b86666e79503373e0f8b400a91a29b13952b1e960c languageName: node linkType: hard @@ -3244,7 +3240,7 @@ __metadata: object-assign: "npm:^4.0.1" pify: "npm:^2.0.0" pinkie-promise: "npm:^2.0.0" - checksum: 8/18109d6b9d55643d2b98b59c3cfae7073ccfe39829632f353d516cc124d836c2ddebe48a23f04af63d66a621b6d86dd4cbd7e6af906f2458a7fe510ffc4bd424 + checksum: 10/18109d6b9d55643d2b98b59c3cfae7073ccfe39829632f353d516cc124d836c2ddebe48a23f04af63d66a621b6d86dd4cbd7e6af906f2458a7fe510ffc4bd424 languageName: node linkType: hard @@ -3263,49 +3259,49 @@ __metadata: lowercase-keys: "npm:^2.0.0" p-cancelable: "npm:^2.0.0" responselike: "npm:^2.0.0" - checksum: 8/bbc783578a8d5030c8164ef7f57ce41b5ad7db2ed13371e1944bef157eeca5a7475530e07c0aaa71610d7085474d0d96222c9f4268d41db333a17e39b463f45d + checksum: 10/a30c74029d81bd5fe50dea1a0c970595d792c568e188ff8be254b5bc11e6158d1b014570772d4a30d0a97723e7dd34e7c8cc1a2f23018f60aece3070a7a5c2a5 languageName: node linkType: hard "graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6": version: 4.2.10 resolution: "graceful-fs@npm:4.2.10" - checksum: 8/3f109d70ae123951905d85032ebeae3c2a5a7a997430df00ea30df0e3a6c60cf6689b109654d6fdacd28810a053348c4d14642da1d075049e6be1ba5216218da + checksum: 10/0c83c52b62c68a944dcfb9d66b0f9f10f7d6e3d081e8067b9bfdc9e5f3a8896584d576036f82915773189eec1eba599397fc620e75c03c0610fb3d67c6713c1a languageName: node linkType: hard "graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.9": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" - checksum: 8/ac85f94da92d8eb6b7f5a8b20ce65e43d66761c55ce85ac96df6865308390da45a8d3f0296dd3a663de65d30ba497bd46c696cc1e248c72b13d6d567138a4fc7 + checksum: 10/bf152d0ed1dc159239db1ba1f74fdbc40cb02f626770dcd5815c427ce0688c2635a06ed69af364396da4636d0408fcf7d4afdf7881724c3307e46aff30ca49e2 languageName: node linkType: hard "graceful-readlink@npm:>= 1.0.0": version: 1.0.1 resolution: "graceful-readlink@npm:1.0.1" - checksum: 8/4c1889ca0a6fc0bb9585b55c26a99719be132cbc4b7d84036193b70608059b9783e52e2a866d5a8e39821b16a69e899644ca75c6206563f1319b6720836b9ab2 + checksum: 10/9ecd6cbbcac5a0070c89f3e4279a9a812f21270aa0eacd3d7150c05ec27e0a0773064813226cbb18fa28162f44a7175a9a4911ca9e539d6c03ee9d3f21b78381 languageName: node linkType: hard "has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": version: 1.0.2 resolution: "has-bigints@npm:1.0.2" - checksum: 8/390e31e7be7e5c6fe68b81babb73dfc35d413604d7ee5f56da101417027a4b4ce6a27e46eff97ad040c835b5d228676eae99a9b5c3bc0e23c8e81a49241ff45b + checksum: 10/4e0426c900af034d12db14abfece02ce7dbf53f2022d28af1a97913ff4c07adb8799476d57dc44fbca0e07d1dbda2a042c2928b1f33d3f09c15de0640a7fb81b languageName: node linkType: hard "has-flag@npm:^3.0.0": version: 3.0.0 resolution: "has-flag@npm:3.0.0" - checksum: 8/4a15638b454bf086c8148979aae044dd6e39d63904cd452d970374fa6a87623423da485dfb814e7be882e05c096a7ccf1ebd48e7e7501d0208d8384ff4dea73b + checksum: 10/4a15638b454bf086c8148979aae044dd6e39d63904cd452d970374fa6a87623423da485dfb814e7be882e05c096a7ccf1ebd48e7e7501d0208d8384ff4dea73b languageName: node linkType: hard "has-flag@npm:^4.0.0": version: 4.0.0 resolution: "has-flag@npm:4.0.0" - checksum: 8/261a1357037ead75e338156b1f9452c016a37dcd3283a972a30d9e4a87441ba372c8b81f818cd0fbcd9c0354b4ae7e18b9e1afa1971164aef6d18c2b6095a8ad + checksum: 10/261a1357037ead75e338156b1f9452c016a37dcd3283a972a30d9e4a87441ba372c8b81f818cd0fbcd9c0354b4ae7e18b9e1afa1971164aef6d18c2b6095a8ad languageName: node linkType: hard @@ -3314,14 +3310,14 @@ __metadata: resolution: "has-property-descriptors@npm:1.0.0" dependencies: get-intrinsic: "npm:^1.1.1" - checksum: 8/a6d3f0a266d0294d972e354782e872e2fe1b6495b321e6ef678c9b7a06a40408a6891817350c62e752adced73a94ac903c54734fee05bf65b1905ee1368194bb + checksum: 10/a6d3f0a266d0294d972e354782e872e2fe1b6495b321e6ef678c9b7a06a40408a6891817350c62e752adced73a94ac903c54734fee05bf65b1905ee1368194bb languageName: node linkType: hard "has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": version: 1.0.3 resolution: "has-symbols@npm:1.0.3" - checksum: 8/a054c40c631c0d5741a8285010a0777ea0c068f99ed43e5d6eb12972da223f8af553a455132fdb0801bdcfa0e0f443c0c03a68d8555aa529b3144b446c3f2410 + checksum: 10/464f97a8202a7690dadd026e6d73b1ceeddd60fe6acfd06151106f050303eaa75855aaa94969df8015c11ff7c505f196114d22f7386b4a471038da5874cf5e9b languageName: node linkType: hard @@ -3330,14 +3326,14 @@ __metadata: resolution: "has-tostringtag@npm:1.0.0" dependencies: has-symbols: "npm:^1.0.2" - checksum: 8/cc12eb28cb6ae22369ebaad3a8ab0799ed61270991be88f208d508076a1e99abe4198c965935ce85ea90b60c94ddda73693b0920b58e7ead048b4a391b502c1c + checksum: 10/95546e7132efc895a9ae64a8a7cf52588601fc3d52e0304ed228f336992cdf0baaba6f3519d2655e560467db35a1ed79f6420c286cc91a13aa0647a31ed92570 languageName: node linkType: hard "has-unicode@npm:^2.0.1": version: 2.0.1 resolution: "has-unicode@npm:2.0.1" - checksum: 8/1eab07a7436512db0be40a710b29b5dc21fa04880b7f63c9980b706683127e3c1b57cb80ea96d47991bdae2dfe479604f6a1ba410106ee1046a41d1bd0814400 + checksum: 10/041b4293ad6bf391e21c5d85ed03f412506d6623786b801c4ab39e4e6ca54993f13201bceb544d92963f9e0024e6e7fbf0cb1d84c9d6b31cb9c79c8c990d13d8 languageName: node linkType: hard @@ -3346,7 +3342,7 @@ __metadata: resolution: "has@npm:1.0.3" dependencies: function-bind: "npm:^1.1.1" - checksum: 8/b9ad53d53be4af90ce5d1c38331e712522417d017d5ef1ebd0507e07c2fbad8686fffb8e12ddecd4c39ca9b9b47431afbb975b8abf7f3c3b82c98e9aad052792 + checksum: 10/a449f3185b1d165026e8d25f6a8c3390bd25c201ff4b8c1aaf948fc6a5fcfd6507310b8c00c13a3325795ea9791fcc3d79d61eafa313b5750438fc19183df57b languageName: node linkType: hard @@ -3355,7 +3351,7 @@ __metadata: resolution: "hasown@npm:2.0.0" dependencies: function-bind: "npm:^1.1.2" - checksum: 8/6151c75ca12554565098641c98a40f4cc86b85b0fd5b6fe92360967e4605a4f9610f7757260b4e8098dd1c2ce7f4b095f2006fe72a570e3b6d2d28de0298c176 + checksum: 10/c330f8d93f9d23fe632c719d4db3d698ef7d7c367d51548b836069e06a90fa9151e868c8e67353cfe98d67865bf7354855db28fa36eb1b18fa5d4a3f4e7f1c90 languageName: node linkType: hard @@ -3364,14 +3360,14 @@ __metadata: resolution: "he@npm:1.2.0" bin: he: bin/he - checksum: 8/3d4d6babccccd79c5c5a3f929a68af33360d6445587d628087f39a965079d84f18ce9c3d3f917ee1e3978916fc833bb8b29377c3b403f919426f91bc6965e7a7 + checksum: 10/d09b2243da4e23f53336e8de3093e5c43d2c39f8d0d18817abfa32ce3e9355391b2edb4bb5edc376aea5d4b0b59d6a0482aab4c52bc02ef95751e4b818e847f1 languageName: node linkType: hard "hosted-git-info@npm:^2.1.4": version: 2.8.9 resolution: "hosted-git-info@npm:2.8.9" - checksum: 8/c955394bdab888a1e9bb10eb33029e0f7ce5a2ac7b3f158099dc8c486c99e73809dca609f5694b223920ca2174db33d32b12f9a2a47141dc59607c29da5a62dd + checksum: 10/96da7d412303704af41c3819207a09ea2cab2de97951db4cf336bb8bce8d8e36b9a6821036ad2e55e67d3be0af8f967a7b57981203fbfb88bc05cd803407b8c3 languageName: node linkType: hard @@ -3380,7 +3376,7 @@ __metadata: resolution: "hosted-git-info@npm:4.1.0" dependencies: lru-cache: "npm:^6.0.0" - checksum: 8/c3f87b3c2f7eb8c2748c8f49c0c2517c9a95f35d26f4bf54b2a8cba05d2e668f3753548b6ea366b18ec8dadb4e12066e19fa382a01496b0ffa0497eb23cbe461 + checksum: 10/4dc67022b7ecb12829966bd731fb9a5f14d351547aafc6520ef3c8e7211f4f0e69452d24e29eae3d9b17df924d660052e53d8ca321cf3008418fb7e6c7c47d6f languageName: node linkType: hard @@ -3397,7 +3393,7 @@ __metadata: terser: "npm:^5.10.0" bin: html-minifier-terser: cli.js - checksum: 8/ac52c14006476f773204c198b64838477859dc2879490040efab8979c0207424da55d59df7348153f412efa45a0840a1ca3c757bf14767d23a15e3e389d37a93 + checksum: 10/a244fa944e002b57c66cc829a3f2dfdb9514b1833c2d838ada624964bf8c0afaf61d36c371758c7e44dedae95cea740a84d8d1067b916ed204f35175184d0e27 languageName: node linkType: hard @@ -3418,7 +3414,7 @@ __metadata: optional: true webpack: optional: true - checksum: 8/32a6e41da538e798fd0be476637d7611a5e8a98a3508f031996e9eb27804dcdc282cb01f847cf5d066f21b49cfb8e21627fcf977ffd0c9bea81cf80e5a65070d + checksum: 10/d651f3a88a7c932c72c6a30f0fdd610b49a864a69f1ddb34562c750f1602ea471e27fd8fc32c01adadd484b38fa6b74f055d1ccce26e5f8fcf814ee0d398a121 languageName: node linkType: hard @@ -3430,7 +3426,7 @@ __metadata: domhandler: "npm:^4.0.0" domutils: "npm:^2.5.2" entities: "npm:^2.0.0" - checksum: 8/81a7b3d9c3bb9acb568a02fc9b1b81ffbfa55eae7f1c41ae0bf840006d1dbf54cb3aa245b2553e2c94db674840a9f0fdad7027c9a9d01a062065314039058c4e + checksum: 10/c9c34b0b722f5923c4ae05e59268aeb768582152969e3338a1cd3342b87f8dd2c0420f4745e46d2fd87f1b677ea2f314c3a93436ed8831905997e6347e081a5d languageName: node linkType: hard @@ -3440,14 +3436,14 @@ __metadata: dependencies: deep-equal: "npm:~1.0.1" http-errors: "npm:~1.8.0" - checksum: 8/69c9b3c14cf8b2822916360a365089ce936c883c49068f91c365eccba5c141a9964d19fdda589150a480013bf503bf37d8936c732e9635819339e730ab0e7527 + checksum: 10/69c9b3c14cf8b2822916360a365089ce936c883c49068f91c365eccba5c141a9964d19fdda589150a480013bf503bf37d8936c732e9635819339e730ab0e7527 languageName: node linkType: hard "http-cache-semantics@npm:^4.0.0, http-cache-semantics@npm:^4.1.0": version: 4.1.1 resolution: "http-cache-semantics@npm:4.1.1" - checksum: 8/83ac0bc60b17a3a36f9953e7be55e5c8f41acc61b22583060e8dedc9dd5e3607c823a88d0926f9150e571f90946835c7fe150732801010845c72cd8bbff1a236 + checksum: 10/362d5ed66b12ceb9c0a328fb31200b590ab1b02f4a254a697dc796850cc4385603e75f53ec59f768b2dad3bfa1464bd229f7de278d2899a0e3beffc634b6683f languageName: node linkType: hard @@ -3460,7 +3456,7 @@ __metadata: setprototypeof: "npm:1.2.0" statuses: "npm:2.0.1" toidentifier: "npm:1.0.1" - checksum: 8/9b0a3782665c52ce9dc658a0d1560bcb0214ba5699e4ea15aefb2a496e2ca83db03ebc42e1cce4ac1f413e4e0d2d736a3fd755772c556a9a06853ba2a0b7d920 + checksum: 10/0e7f76ee8ff8a33e58a3281a469815b893c41357378f408be8f6d4aa7d1efafb0da064625518e7078381b6a92325949b119dc38fcb30bdbc4e3a35f78c44c439 languageName: node linkType: hard @@ -3473,7 +3469,7 @@ __metadata: setprototypeof: "npm:1.2.0" statuses: "npm:>= 1.5.0 < 2" toidentifier: "npm:1.0.1" - checksum: 8/d3c7e7e776fd51c0a812baff570bdf06fe49a5dc448b700ab6171b1250e4cf7db8b8f4c0b133e4bfe2451022a5790c1ca6c2cae4094dedd6ac8304a1267f91d2 + checksum: 10/76fc491bd8df2251e21978e080d5dae20d9736cfb29bb72b5b76ec1bcebb1c14f0f58a3a128dd89288934379d2173cfb0421c571d54103e93dd65ef6243d64d8 languageName: node linkType: hard @@ -3485,7 +3481,7 @@ __metadata: inherits: "npm:2.0.3" setprototypeof: "npm:1.1.0" statuses: "npm:>= 1.4.0 < 2" - checksum: 8/a9654ee027e3d5de305a56db1d1461f25709ac23267c6dc28cdab8323e3f96caa58a9a6a5e93ac15d7285cee0c2f019378c3ada9026e7fe19c872d695f27de7c + checksum: 10/e48732657ea0b4a09853d2696a584fa59fa2a8c1ba692af7af3137b5491a997d7f9723f824e7e08eb6a87098532c09ce066966ddf0f9f3dd30905e52301acadb languageName: node linkType: hard @@ -3496,7 +3492,7 @@ __metadata: "@tootallnate/once": "npm:2" agent-base: "npm:6" debug: "npm:4" - checksum: 8/e2ee1ff1656a131953839b2a19cd1f3a52d97c25ba87bd2559af6ae87114abf60971e498021f9b73f9fd78aea8876d1fb0d4656aac8a03c6caa9fc175f22b786 + checksum: 10/5ee19423bc3e0fd5f23ce991b0755699ad2a46a440ce9cec99e8126bb98448ad3479d2c0ea54be5519db5b19a4ffaa69616bac01540db18506dd4dac3dc418f0 languageName: node linkType: hard @@ -3506,7 +3502,7 @@ __metadata: dependencies: quick-lru: "npm:^5.1.1" resolve-alpn: "npm:^1.0.0" - checksum: 8/74160b862ec699e3f859739101ff592d52ce1cb207b7950295bf7962e4aa1597ef709b4292c673bece9c9b300efad0559fc86c71b1409c7a1e02b7229456003e + checksum: 10/8097ee2699440c2e64bda52124990cc5b0fb347401c7797b1a0c1efd5a0f79a4ebaa68e8a6ac3e2dde5f09460c1602764da6da2412bad628ed0a3b0ae35e72d4 languageName: node linkType: hard @@ -3516,7 +3512,7 @@ __metadata: dependencies: agent-base: "npm:6" debug: "npm:4" - checksum: 8/571fccdf38184f05943e12d37d6ce38197becdd69e58d03f43637f7fa1269cf303a7d228aa27e5b27bbd3af8f09fd938e1c91dcfefff2df7ba77c20ed8dfc765 + checksum: 10/f0dce7bdcac5e8eaa0be3c7368bb8836ed010fb5b6349ffb412b172a203efe8f807d9a6681319105ea1b6901e1972c7b5ea899672a7b9aad58309f766dcbe0df languageName: node linkType: hard @@ -3525,7 +3521,7 @@ __metadata: resolution: "humanize-ms@npm:1.2.1" dependencies: ms: "npm:^2.0.0" - checksum: 8/9c7a74a2827f9294c009266c82031030eae811ca87b0da3dceb8d6071b9bde22c9f3daef0469c3c533cc67a97d8a167cd9fc0389350e5f415f61a79b171ded16 + checksum: 10/9c7a74a2827f9294c009266c82031030eae811ca87b0da3dceb8d6071b9bde22c9f3daef0469c3c533cc67a97d8a167cd9fc0389350e5f415f61a79b171ded16 languageName: node linkType: hard @@ -3544,7 +3540,7 @@ __metadata: resolution: "iconv-lite@npm:0.4.24" dependencies: safer-buffer: "npm:>= 2.1.2 < 3" - checksum: 8/bd9f120f5a5b306f0bc0b9ae1edeb1577161503f5f8252a20f1a9e56ef8775c9959fd01c55f2d3a39d9a8abaf3e30c1abeb1895f367dcbbe0a8fd1c9ca01c4f6 + checksum: 10/6d3a2dac6e5d1fb126d25645c25c3a1209f70cceecc68b8ef51ae0da3cdc078c151fade7524a30b12a3094926336831fca09c666ef55b37e2c69638b5d6bd2e3 languageName: node linkType: hard @@ -3553,7 +3549,7 @@ __metadata: resolution: "iconv-lite@npm:0.6.3" dependencies: safer-buffer: "npm:>= 2.1.2 < 3.0.0" - checksum: 8/3f60d47a5c8fc3313317edfd29a00a692cc87a19cac0159e2ce711d0ebc9019064108323b5e493625e25594f11c6236647d8e256fbe7a58f4a3b33b89e6d30bf + checksum: 10/24e3292dd3dadaa81d065c6f8c41b274a47098150d444b96e5f53b4638a9a71482921ea6a91a1f59bb71d9796de25e04afd05919fa64c360347ba65d3766f10f languageName: node linkType: hard @@ -3562,21 +3558,21 @@ __metadata: resolution: "icss-utils@npm:5.1.0" peerDependencies: postcss: ^8.1.0 - checksum: 8/5c324d283552b1269cfc13a503aaaa172a280f914e5b81544f3803bc6f06a3b585fb79f66f7c771a2c052db7982c18bf92d001e3b47282e3abbbb4c4cc488d68 + checksum: 10/5c324d283552b1269cfc13a503aaaa172a280f914e5b81544f3803bc6f06a3b585fb79f66f7c771a2c052db7982c18bf92d001e3b47282e3abbbb4c4cc488d68 languageName: node linkType: hard "ieee754@npm:^1.1.13": version: 1.2.1 resolution: "ieee754@npm:1.2.1" - checksum: 8/5144c0c9815e54ada181d80a0b810221a253562422e7c6c3a60b1901154184f49326ec239d618c416c1c5945a2e197107aee8d986a3dd836b53dffefd99b5e7e + checksum: 10/d9f2557a59036f16c282aaeb107832dc957a93d73397d89bbad4eb1130560560eb695060145e8e6b3b498b15ab95510226649a0b8f52ae06583575419fe10fc4 languageName: node linkType: hard "ignore@npm:^5.2.4": version: 5.3.0 resolution: "ignore@npm:5.3.0" - checksum: 8/2736da6621f14ced652785cb05d86301a66d70248597537176612bd0c8630893564bd5f6421f8806b09e8472e75c591ef01672ab8059c07c6eb2c09cefe04bf9 + checksum: 10/51594355cea4c6ad6b28b3b85eb81afa7b988a1871feefd7062baf136c95aa06760ee934fa9590e43d967bd377ce84a4cf6135fbeb6063e063f1182a0e9a3bcd languageName: node linkType: hard @@ -3585,7 +3581,7 @@ __metadata: resolution: "image-size@npm:0.5.5" bin: image-size: bin/image-size.js - checksum: 8/6709d5cb73e96d5097ae5e9aa746dd36d6a9c8cf645e7eecac72ea07dbd6f312a65183752762fa92e2f3b698d4ed8d85dd55bf5207b6367245996bd16576d8fe + checksum: 10/f41ec6cfccfa6471980e83568033a66ec53f84d1bcb70033e946a7db9c1b6bbf5645ec90fa5a8bdcdc84d86af0032014eff6fa078a60c2398dfce6676c46bdb7 languageName: node linkType: hard @@ -3595,7 +3591,7 @@ __metadata: dependencies: parent-module: "npm:^1.0.0" resolve-from: "npm:^4.0.0" - checksum: 8/2cacfad06e652b1edc50be650f7ec3be08c5e5a6f6d12d035c440a42a8cc028e60a5b99ca08a77ab4d6b1346da7d971915828f33cdab730d3d42f08242d09baa + checksum: 10/2cacfad06e652b1edc50be650f7ec3be08c5e5a6f6d12d035c440a42a8cc028e60a5b99ca08a77ab4d6b1346da7d971915828f33cdab730d3d42f08242d09baa languageName: node linkType: hard @@ -3607,35 +3603,35 @@ __metadata: resolve-cwd: "npm:^3.0.0" bin: import-local-fixture: fixtures/cli.js - checksum: 8/bfcdb63b5e3c0e245e347f3107564035b128a414c4da1172a20dc67db2504e05ede4ac2eee1252359f78b0bfd7b19ef180aec427c2fce6493ae782d73a04cddd + checksum: 10/bfcdb63b5e3c0e245e347f3107564035b128a414c4da1172a20dc67db2504e05ede4ac2eee1252359f78b0bfd7b19ef180aec427c2fce6493ae782d73a04cddd languageName: node linkType: hard "imurmurhash@npm:^0.1.4": version: 0.1.4 resolution: "imurmurhash@npm:0.1.4" - checksum: 8/7cae75c8cd9a50f57dadd77482359f659eaebac0319dd9368bcd1714f55e65badd6929ca58569da2b6494ef13fdd5598cd700b1eba23f8b79c5f19d195a3ecf7 + checksum: 10/2d30b157a91fe1c1d7c6f653cbf263f039be6c5bfa959245a16d4ee191fc0f2af86c08545b6e6beeb041c56b574d2d5b9f95343d378ab49c0f37394d541e7fc8 languageName: node linkType: hard "indent-string@npm:^4.0.0": version: 4.0.0 resolution: "indent-string@npm:4.0.0" - checksum: 8/824cfb9929d031dabf059bebfe08cf3137365e112019086ed3dcff6a0a7b698cb80cf67ccccde0e25b9e2d7527aa6cc1fed1ac490c752162496caba3e6699612 + checksum: 10/cd3f5cbc9ca2d624c6a1f53f12e6b341659aba0e2d3254ae2b4464aaea8b4294cdb09616abbc59458f980531f2429784ed6a420d48d245bcad0811980c9efae9 languageName: node linkType: hard "infer-owner@npm:^1.0.4": version: 1.0.4 resolution: "infer-owner@npm:1.0.4" - checksum: 8/181e732764e4a0611576466b4b87dac338972b839920b2a8cde43642e4ed6bd54dc1fb0b40874728f2a2df9a1b097b8ff83b56d5f8f8e3927f837fdcb47d8a89 + checksum: 10/181e732764e4a0611576466b4b87dac338972b839920b2a8cde43642e4ed6bd54dc1fb0b40874728f2a2df9a1b097b8ff83b56d5f8f8e3927f837fdcb47d8a89 languageName: node linkType: hard "inflation@npm:^2.0.0": version: 2.0.0 resolution: "inflation@npm:2.0.0" - checksum: 8/a0494871b12275afdef9e2710ee1af1e0fc642b04613a9be69c05ef8b5e9627f3bd7d358a937fa47aa20235ee7313a4f30255048533add0ad4918beb918a586e + checksum: 10/a0494871b12275afdef9e2710ee1af1e0fc642b04613a9be69c05ef8b5e9627f3bd7d358a937fa47aa20235ee7313a4f30255048533add0ad4918beb918a586e languageName: node linkType: hard @@ -3645,21 +3641,21 @@ __metadata: dependencies: once: "npm:^1.3.0" wrappy: "npm:1" - checksum: 8/f4f76aa072ce19fae87ce1ef7d221e709afb59d445e05d47fba710e85470923a75de35bfae47da6de1b18afc3ce83d70facf44cfb0aff89f0a3f45c0a0244dfd + checksum: 10/d2ebd65441a38c8336c223d1b80b921b9fa737e37ea466fd7e253cb000c64ae1f17fa59e68130ef5bda92cfd8d36b83d37dab0eb0a4558bcfec8e8cdfd2dcb67 languageName: node linkType: hard "inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.3": version: 2.0.4 resolution: "inherits@npm:2.0.4" - checksum: 8/4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 + checksum: 10/cd45e923bee15186c07fa4c89db0aace24824c482fb887b528304694b2aa6ff8a898da8657046a5dcf3e46cd6db6c61629551f9215f208d7c3f157cf9b290521 languageName: node linkType: hard "inherits@npm:2.0.3": version: 2.0.3 resolution: "inherits@npm:2.0.3" - checksum: 8/78cb8d7d850d20a5e9a7f3620db31483aa00ad5f722ce03a55b110e5a723539b3716a3b463e2b96ce3fe286f33afc7c131fa2f91407528ba80cea98a7545d4c0 + checksum: 10/8771303d66c51be433b564427c16011a8e3fbc3449f1f11ea50efb30a4369495f1d0e89f0fc12bdec0bd7e49102ced5d137e031d39ea09821cb3c717fcf21e69 languageName: node linkType: hard @@ -3670,28 +3666,28 @@ __metadata: get-intrinsic: "npm:^1.1.0" has: "npm:^1.0.3" side-channel: "npm:^1.0.4" - checksum: 8/1944f92e981e47aebc98a88ff0db579fd90543d937806104d0b96557b10c1f170c51fb777b97740a8b6ddeec585fca8c39ae99fd08a8e058dfc8ab70937238bf + checksum: 10/1c6d22f7977b325e51387191a992a553bf7c380db548a32c09bbb4563a799d739d3ef629841234290a032dc555ca7e89178e8a35404dad77b55f2676be8a1ba2 languageName: node linkType: hard "interpret@npm:^3.1.1": version: 3.1.1 resolution: "interpret@npm:3.1.1" - checksum: 8/35cebcf48c7351130437596d9ab8c8fe131ce4038da4561e6d665f25640e0034702a031cf7e3a5cea60ac7ac548bf17465e0571ede126f3d3a6933152171ac82 + checksum: 10/bc9e11126949c4e6ff49b0b819e923a9adc8e8bf3f9d4f2d782de6d5f592774f6fee4457c10bd08c6a2146b4baee460ccb242c99e5397defa9c846af0d00505a languageName: node linkType: hard "ip@npm:^2.0.0": version: 2.0.1 resolution: "ip@npm:2.0.1" - checksum: 8/d765c9fd212b8a99023a4cde6a558a054c298d640fec1020567494d257afd78ca77e37126b1a3ef0e053646ced79a816bf50621d38d5e768cdde0431fa3b0d35 + checksum: 10/d6dd154e1bc5e8725adfdd6fb92218635b9cbe6d873d051bd63b178f009777f751a5eea4c67021723a7056325fc3052f8b6599af0a2d56f042c93e684b4a0349 languageName: node linkType: hard "is-arrayish@npm:^0.2.1": version: 0.2.1 resolution: "is-arrayish@npm:0.2.1" - checksum: 8/eef4417e3c10e60e2c810b6084942b3ead455af16c4509959a27e490e7aee87cfb3f38e01bbde92220b528a0ee1a18d52b787e1458ee86174d8c7f0e58cd488f + checksum: 10/73ced84fa35e59e2c57da2d01e12cd01479f381d7f122ce41dcbb713f09dbfc651315832cd2bf8accba7681a69e4d6f1e03941d94dd10040d415086360e7005e languageName: node linkType: hard @@ -3700,7 +3696,7 @@ __metadata: resolution: "is-bigint@npm:1.0.4" dependencies: has-bigints: "npm:^1.0.1" - checksum: 8/c56edfe09b1154f8668e53ebe8252b6f185ee852a50f9b41e8d921cb2bed425652049fbe438723f6cb48a63ca1aa051e948e7e401e093477c99c84eba244f666 + checksum: 10/cc981cf0564c503aaccc1e5f39e994ae16ae2d1a8fcd14721f14ad431809071f39ec568cfceef901cff408045f1a6d6bac90d1b43eeb0b8e3bc34c8eb1bdb4c4 languageName: node linkType: hard @@ -3709,7 +3705,7 @@ __metadata: resolution: "is-binary-path@npm:2.1.0" dependencies: binary-extensions: "npm:^2.0.0" - checksum: 8/84192eb88cff70d320426f35ecd63c3d6d495da9d805b19bc65b518984b7c0760280e57dbf119b7e9be6b161784a5a673ab2c6abe83abb5198a432232ad5b35c + checksum: 10/078e51b4f956c2c5fd2b26bb2672c3ccf7e1faff38e0ebdba45612265f4e3d9fc3127a1fa8370bbf09eab61339203c3d3b7af5662cbf8be4030f8fac37745b0e languageName: node linkType: hard @@ -3719,14 +3715,14 @@ __metadata: dependencies: call-bind: "npm:^1.0.2" has-tostringtag: "npm:^1.0.0" - checksum: 8/c03b23dbaacadc18940defb12c1c0e3aaece7553ef58b162a0f6bba0c2a7e1551b59f365b91e00d2dbac0522392d576ef322628cb1d036a0fe51eb466db67222 + checksum: 10/ba794223b56a49a9f185e945eeeb6b7833b8ea52a335cec087d08196cf27b538940001615d3bb976511287cefe94e5907d55f00bb49580533f9ca9b4515fcc2e languageName: node linkType: hard "is-callable@npm:^1.1.4, is-callable@npm:^1.2.7": version: 1.2.7 resolution: "is-callable@npm:1.2.7" - checksum: 8/61fd57d03b0d984e2ed3720fb1c7a897827ea174bd44402878e059542ea8c4aeedee0ea0985998aa5cc2736b2fa6e271c08587addb5b3959ac52cf665173d1ac + checksum: 10/48a9297fb92c99e9df48706241a189da362bff3003354aea4048bd5f7b2eb0d823cd16d0a383cece3d76166ba16d85d9659165ac6fcce1ac12e6c649d66dbdb9 languageName: node linkType: hard @@ -3737,7 +3733,7 @@ __metadata: ci-info: "npm:^3.2.0" bin: is-ci: bin.js - checksum: 8/192c66dc7826d58f803ecae624860dccf1899fc1f3ac5505284c0a5cf5f889046ffeb958fa651e5725d5705c5bcb14f055b79150ea5fcad7456a9569de60260e + checksum: 10/192c66dc7826d58f803ecae624860dccf1899fc1f3ac5505284c0a5cf5f889046ffeb958fa651e5725d5705c5bcb14f055b79150ea5fcad7456a9569de60260e languageName: node linkType: hard @@ -3746,7 +3742,7 @@ __metadata: resolution: "is-core-module@npm:2.13.1" dependencies: hasown: "npm:^2.0.0" - checksum: 8/256559ee8a9488af90e4bad16f5583c6d59e92f0742e9e8bb4331e758521ee86b810b93bae44f390766ffbc518a0488b18d9dab7da9a5ff997d499efc9403f7c + checksum: 10/d53bd0cc24b0a0351fb4b206ee3908f71b9bbf1c47e9c9e14e5f06d292af1663704d2abd7e67700d6487b2b7864e0d0f6f10a1edf1892864bdffcb197d1845a2 languageName: node linkType: hard @@ -3755,7 +3751,7 @@ __metadata: resolution: "is-core-module@npm:2.11.0" dependencies: has: "npm:^1.0.3" - checksum: 8/f96fd490c6b48eb4f6d10ba815c6ef13f410b0ba6f7eb8577af51697de523e5f2cd9de1c441b51d27251bf0e4aebc936545e33a5d26d5d51f28d25698d4a8bab + checksum: 10/9b09ce78f1f281e20c596023e8464d51dfc93b5933bf23f00c002eafbebdaa766726be42bacfb4459c4cfe14569f0987db11fe6bc30d6e57985c9071a289966e languageName: node linkType: hard @@ -3764,21 +3760,21 @@ __metadata: resolution: "is-date-object@npm:1.0.5" dependencies: has-tostringtag: "npm:^1.0.0" - checksum: 8/baa9077cdf15eb7b58c79398604ca57379b2fc4cf9aa7a9b9e295278648f628c9b201400c01c5e0f7afae56507d741185730307cbe7cad3b9f90a77e5ee342fc + checksum: 10/cc80b3a4b42238fa0d358b9a6230dae40548b349e64a477cb7c5eff9b176ba194c11f8321daaf6dd157e44073e9b7fd01f87db1f14952a88d5657acdcd3a56e2 languageName: node linkType: hard "is-extglob@npm:^2.1.1": version: 2.1.1 resolution: "is-extglob@npm:2.1.1" - checksum: 8/df033653d06d0eb567461e58a7a8c9f940bd8c22274b94bf7671ab36df5719791aae15eef6d83bbb5e23283967f2f984b8914559d4449efda578c775c4be6f85 + checksum: 10/df033653d06d0eb567461e58a7a8c9f940bd8c22274b94bf7671ab36df5719791aae15eef6d83bbb5e23283967f2f984b8914559d4449efda578c775c4be6f85 languageName: node linkType: hard "is-fullwidth-code-point@npm:^3.0.0": version: 3.0.0 resolution: "is-fullwidth-code-point@npm:3.0.0" - checksum: 8/44a30c29457c7fb8f00297bce733f0a64cd22eca270f83e58c105e0d015e45c019491a4ab2faef91ab51d4738c670daff901c799f6a700e27f7314029e99e348 + checksum: 10/44a30c29457c7fb8f00297bce733f0a64cd22eca270f83e58c105e0d015e45c019491a4ab2faef91ab51d4738c670daff901c799f6a700e27f7314029e99e348 languageName: node linkType: hard @@ -3787,7 +3783,7 @@ __metadata: resolution: "is-generator-function@npm:1.0.10" dependencies: has-tostringtag: "npm:^1.0.0" - checksum: 8/d54644e7dbaccef15ceb1e5d91d680eb5068c9ee9f9eb0a9e04173eb5542c9b51b5ab52c5537f5703e48d5fddfd376817c1ca07a84a407b7115b769d4bdde72b + checksum: 10/499a3ce6361064c3bd27fbff5c8000212d48506ebe1977842bbd7b3e708832d0deb1f4cc69186ece3640770e8c4f1287b24d99588a0b8058b2dbdd344bc1f47f languageName: node linkType: hard @@ -3796,21 +3792,21 @@ __metadata: resolution: "is-glob@npm:4.0.3" dependencies: is-extglob: "npm:^2.1.1" - checksum: 8/d381c1319fcb69d341cc6e6c7cd588e17cd94722d9a32dbd60660b993c4fb7d0f19438674e68dfec686d09b7c73139c9166b47597f846af387450224a8101ab4 + checksum: 10/3ed74f2b0cdf4f401f38edb0442ddfde3092d79d7d35c9919c86641efdbcbb32e45aa3c0f70ce5eecc946896cd5a0f26e4188b9f2b881876f7cb6c505b82da11 languageName: node linkType: hard "is-lambda@npm:^1.0.1": version: 1.0.1 resolution: "is-lambda@npm:1.0.1" - checksum: 8/93a32f01940220532e5948538699ad610d5924ac86093fcee83022252b363eb0cc99ba53ab084a04e4fb62bf7b5731f55496257a4c38adf87af9c4d352c71c35 + checksum: 10/93a32f01940220532e5948538699ad610d5924ac86093fcee83022252b363eb0cc99ba53ab084a04e4fb62bf7b5731f55496257a4c38adf87af9c4d352c71c35 languageName: node linkType: hard "is-negative-zero@npm:^2.0.2": version: 2.0.2 resolution: "is-negative-zero@npm:2.0.2" - checksum: 8/f3232194c47a549da60c3d509c9a09be442507616b69454716692e37ae9f37c4dea264fb208ad0c9f3efd15a796a46b79df07c7e53c6227c32170608b809149a + checksum: 10/edbec1a9e6454d68bf595a114c3a72343d2d0be7761d8173dae46c0b73d05bb8fe9398c85d121e7794a66467d2f40b4a610b0be84cd804262d234fc634c86131 languageName: node linkType: hard @@ -3819,21 +3815,21 @@ __metadata: resolution: "is-number-object@npm:1.0.7" dependencies: has-tostringtag: "npm:^1.0.0" - checksum: 8/d1e8d01bb0a7134c74649c4e62da0c6118a0bfc6771ea3c560914d52a627873e6920dd0fd0ebc0e12ad2ff4687eac4c308f7e80320b973b2c8a2c8f97a7524f7 + checksum: 10/8700dcf7f602e0a9625830541345b8615d04953655acbf5c6d379c58eb1af1465e71227e95d501343346e1d49b6f2d53cbc166b1fc686a7ec19151272df582f9 languageName: node linkType: hard "is-number@npm:^7.0.0": version: 7.0.0 resolution: "is-number@npm:7.0.0" - checksum: 8/456ac6f8e0f3111ed34668a624e45315201dff921e5ac181f8ec24923b99e9f32ca1a194912dc79d539c97d33dba17dc635202ff0b2cf98326f608323276d27a + checksum: 10/6a6c3383f68afa1e05b286af866017c78f1226d43ac8cb064e115ff9ed85eb33f5c4f7216c96a71e4dfea289ef52c5da3aef5bbfade8ffe47a0465d70c0c8e86 languageName: node linkType: hard "is-path-cwd@npm:^2.0.0": version: 2.2.0 resolution: "is-path-cwd@npm:2.2.0" - checksum: 8/46a840921bb8cc0dc7b5b423a14220e7db338072a4495743a8230533ce78812dc152548c86f4b828411fe98c5451959f07cf841c6a19f611e46600bd699e8048 + checksum: 10/46a840921bb8cc0dc7b5b423a14220e7db338072a4495743a8230533ce78812dc152548c86f4b828411fe98c5451959f07cf841c6a19f611e46600bd699e8048 languageName: node linkType: hard @@ -3842,7 +3838,7 @@ __metadata: resolution: "is-path-in-cwd@npm:2.1.0" dependencies: is-path-inside: "npm:^2.1.0" - checksum: 8/6b01b3f8c9172e9682ea878d001836a0cc5a78cbe6236024365d478c2c9e384da2417e5f21f2ad2da2761d0465309fc5baf6e71187d2a23f0058da69790f7f48 + checksum: 10/84387d09913e55cb5bedd241816b9186b00319bed4471e7c6128d31eb10d31b6db54b8b8fc67799f05b6c10983686f75456be55988cc406cd69727ea8148b338 languageName: node linkType: hard @@ -3851,7 +3847,7 @@ __metadata: resolution: "is-path-inside@npm:2.1.0" dependencies: path-is-inside: "npm:^1.0.2" - checksum: 8/6ca34dbd84d5c50a3ee1547afb6ada9b06d556a4ff42da9b303797e4acc3ac086516a4833030aa570f397f8c58dacabd57ee8e6c2ce8b2396a986ad2af10fcaf + checksum: 10/6ca34dbd84d5c50a3ee1547afb6ada9b06d556a4ff42da9b303797e4acc3ac086516a4833030aa570f397f8c58dacabd57ee8e6c2ce8b2396a986ad2af10fcaf languageName: node linkType: hard @@ -3860,7 +3856,7 @@ __metadata: resolution: "is-plain-object@npm:2.0.4" dependencies: isobject: "npm:^3.0.1" - checksum: 8/2a401140cfd86cabe25214956ae2cfee6fbd8186809555cd0e84574f88de7b17abacb2e477a6a658fa54c6083ecbda1e6ae404c7720244cd198903848fca70ca + checksum: 10/2a401140cfd86cabe25214956ae2cfee6fbd8186809555cd0e84574f88de7b17abacb2e477a6a658fa54c6083ecbda1e6ae404c7720244cd198903848fca70ca languageName: node linkType: hard @@ -3870,7 +3866,7 @@ __metadata: dependencies: call-bind: "npm:^1.0.2" has-tostringtag: "npm:^1.0.0" - checksum: 8/362399b33535bc8f386d96c45c9feb04cf7f8b41c182f54174c1a45c9abbbe5e31290bbad09a458583ff6bf3b2048672cdb1881b13289569a7c548370856a652 + checksum: 10/36d9174d16d520b489a5e9001d7d8d8624103b387be300c50f860d9414556d0485d74a612fdafc6ebbd5c89213d947dcc6b6bff6b2312093f71ea03cbb19e564 languageName: node linkType: hard @@ -3879,7 +3875,7 @@ __metadata: resolution: "is-shared-array-buffer@npm:1.0.2" dependencies: call-bind: "npm:^1.0.2" - checksum: 8/9508929cf14fdc1afc9d61d723c6e8d34f5e117f0bffda4d97e7a5d88c3a8681f633a74f8e3ad1fe92d5113f9b921dc5ca44356492079612f9a247efbce7032a + checksum: 10/23d82259d6cd6dbb7c4ff3e4efeff0c30dbc6b7f88698498c17f9821cb3278d17d2b6303a5341cbd638ab925a28f3f086a6c79b3df70ac986cc526c725d43b4f languageName: node linkType: hard @@ -3888,7 +3884,7 @@ __metadata: resolution: "is-string@npm:1.0.7" dependencies: has-tostringtag: "npm:^1.0.0" - checksum: 8/323b3d04622f78d45077cf89aab783b2f49d24dc641aa89b5ad1a72114cfeff2585efc8c12ef42466dff32bde93d839ad321b26884cf75e5a7892a938b089989 + checksum: 10/2bc292fe927493fb6dfc3338c099c3efdc41f635727c6ebccf704aeb2a27bca7acb9ce6fd34d103db78692b10b22111a8891de26e12bfa1c5e11e263c99d1fef languageName: node linkType: hard @@ -3897,7 +3893,7 @@ __metadata: resolution: "is-symbol@npm:1.0.4" dependencies: has-symbols: "npm:^1.0.2" - checksum: 8/92805812ef590738d9de49d677cd17dfd486794773fb6fa0032d16452af46e9b91bb43ffe82c983570f015b37136f4b53b28b8523bfb10b0ece7a66c31a54510 + checksum: 10/a47dd899a84322528b71318a89db25c7ecdec73197182dad291df15ffea501e17e3c92c8de0bfb50e63402747399981a687b31c519971b1fa1a27413612be929 languageName: node linkType: hard @@ -3906,14 +3902,14 @@ __metadata: resolution: "is-weakref@npm:1.0.2" dependencies: call-bind: "npm:^1.0.2" - checksum: 8/95bd9a57cdcb58c63b1c401c60a474b0f45b94719c30f548c891860f051bc2231575c290a6b420c6bc6e7ed99459d424c652bd5bf9a1d5259505dc35b4bf83de + checksum: 10/0023fd0e4bdf9c338438ffbe1eed7ebbbff7e7e18fb7cdc227caaf9d4bd024a2dcdf6a8c9f40c92192022eac8391243bb9e66cccebecbf6fe1d8a366108f8513 languageName: node linkType: hard "is-what@npm:^3.14.1": version: 3.14.1 resolution: "is-what@npm:3.14.1" - checksum: 8/a9a6ce92d33799f1ae0916c7afb6f8128a23ce9d28bd69d9ec3ec88910e7a1f68432e6236c3c8a4d544cf0b864675e5d828437efde60ee0cf8102061d395c1df + checksum: 10/249beb4a8c1729c80ed24fa8527835301c8c70d2fa99706a301224576e0650df61edd7a0a8853999bf5fbe2c551f07148d2c3535260772e05a4c373d3d5362e1 languageName: node linkType: hard @@ -3922,28 +3918,28 @@ __metadata: resolution: "isbinaryfile@npm:3.0.3" dependencies: buffer-alloc: "npm:^1.2.0" - checksum: 8/9a555786857c66fe36024d15a54e0ca371c02275622b007356d6afca2b3bca179cb0bd97e1adf5d3922b3325c0fe22813645c7f7eafb4c4bdab1da9d635133c2 + checksum: 10/58d5817572c56eb998fccccd2c128f61829f5b514e0dfa290149f725e5cb424880559aa7022370252adf91ac97e1596ac8251af75092777981e19613cdbc803e languageName: node linkType: hard "isbinaryfile@npm:^4.0.10": version: 4.0.10 resolution: "isbinaryfile@npm:4.0.10" - checksum: 8/a6b28db7e23ac7a77d3707567cac81356ea18bd602a4f21f424f862a31d0e7ab4f250759c98a559ece35ffe4d99f0d339f1ab884ffa9795172f632ab8f88e686 + checksum: 10/7f9dbf3e992a020cd3e6845ba49b47de93cda19edadf338bbf82f1453d7a14a73c390ea7f18a1940f09324089e470cce9ea001bd544aea52df641a658ed51c54 languageName: node linkType: hard "isexe@npm:^2.0.0": version: 2.0.0 resolution: "isexe@npm:2.0.0" - checksum: 8/26bf6c5480dda5161c820c5b5c751ae1e766c587b1f951ea3fcfc973bafb7831ae5b54a31a69bd670220e42e99ec154475025a468eae58ea262f813fdc8d1c62 + checksum: 10/7c9f715c03aff08f35e98b1fadae1b9267b38f0615d501824f9743f3aab99ef10e303ce7db3f186763a0b70a19de5791ebfc854ff884d5a8c4d92211f642ec92 languageName: node linkType: hard "isobject@npm:^3.0.1": version: 3.0.1 resolution: "isobject@npm:3.0.1" - checksum: 8/db85c4c970ce30693676487cca0e61da2ca34e8d4967c2e1309143ff910c207133a969f9e4ddb2dc6aba670aabce4e0e307146c310350b298e74a31f7d464703 + checksum: 10/db85c4c970ce30693676487cca0e61da2ca34e8d4967c2e1309143ff910c207133a969f9e4ddb2dc6aba670aabce4e0e307146c310350b298e74a31f7d464703 languageName: node linkType: hard @@ -3957,7 +3953,7 @@ __metadata: minimatch: "npm:^3.0.4" bin: jake: ./bin/cli.js - checksum: 8/56c913ecf5a8d74325d0af9bc17a233bad50977438d44864d925bb6c45c946e0fee8c4c1f5fe2225471ef40df5222e943047982717ebff0d624770564d3c46ba + checksum: 10/6eaf1cd7fe78b92fa52d7258fb0f16f9bef856a18dc6e2f4da8e610264d293210d6e6e09a89d4e4ce1fc83d07c82963bd00bdcbb88e7a09aa62cc4cdf6e3bdf2 languageName: node linkType: hard @@ -3968,14 +3964,14 @@ __metadata: "@types/node": "npm:*" merge-stream: "npm:^2.0.0" supports-color: "npm:^8.0.0" - checksum: 8/98cd68b696781caed61c983a3ee30bf880b5bd021c01d98f47b143d4362b85d0737f8523761e2713d45e18b4f9a2b98af1eaee77afade4111bb65c77d6f7c980 + checksum: 10/06c6e2a84591d9ede704d5022fc13791e8876e83397c89d481b0063332abbb64c0f01ef4ca7de520b35c7a1058556078d6bdc3631376f4e9ffb42316c1a8488e languageName: node linkType: hard "js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0": version: 4.0.0 resolution: "js-tokens@npm:4.0.0" - checksum: 8/8a95213a5a77deb6cbe94d86340e8d9ace2b93bc367790b260101d2f36a2eaf4e4e22d9fa9cf459b38af3a32fb4190e638024cf82ec95ef708680e405ea7cc78 + checksum: 10/af37d0d913fb56aec6dc0074c163cc71cd23c0b8aad5c2350747b6721d37ba118af35abdd8b33c47ec2800de07dedb16a527ca9c530ee004093e04958bd0cbf2 languageName: node linkType: hard @@ -3986,49 +3982,49 @@ __metadata: argparse: "npm:^2.0.1" bin: js-yaml: bin/js-yaml.js - checksum: 8/c7830dfd456c3ef2c6e355cc5a92e6700ceafa1d14bba54497b34a99f0376cecbb3e9ac14d3e5849b426d5a5140709a66237a8c991c675431271c4ce5504151a + checksum: 10/c138a34a3fd0d08ebaf71273ad4465569a483b8a639e0b118ff65698d257c2791d3199e3f303631f2cb98213fa7b5f5d6a4621fd0fff819421b990d30d967140 languageName: node linkType: hard "json-buffer@npm:3.0.1": version: 3.0.1 resolution: "json-buffer@npm:3.0.1" - checksum: 8/9026b03edc2847eefa2e37646c579300a1f3a4586cfb62bf857832b60c852042d0d6ae55d1afb8926163fa54c2b01d83ae24705f34990348bdac6273a29d4581 + checksum: 10/82876154521b7b68ba71c4f969b91572d1beabadd87bd3a6b236f85fbc7dc4695089191ed60bb59f9340993c51b33d479f45b6ba9f3548beb519705281c32c3c languageName: node linkType: hard "json-parse-better-errors@npm:^1.0.1": version: 1.0.2 resolution: "json-parse-better-errors@npm:1.0.2" - checksum: 8/ff2b5ba2a70e88fd97a3cb28c1840144c5ce8fae9cbeeddba15afa333a5c407cf0e42300cd0a2885dbb055227fe68d405070faad941beeffbfde9cf3b2c78c5d + checksum: 10/5553232045359b767b0f2039a6777fede1a8d7dca1a0ffb1f9ef73a7519489ae7f566b2e040f2b4c38edb8e35e37ae07af7f0a52420902f869ee0dbf5dc6c784 languageName: node linkType: hard "json-parse-even-better-errors@npm:^2.3.0, json-parse-even-better-errors@npm:^2.3.1": version: 2.3.1 resolution: "json-parse-even-better-errors@npm:2.3.1" - checksum: 8/798ed4cf3354a2d9ccd78e86d2169515a0097a5c133337807cdf7f1fc32e1391d207ccfc276518cc1d7d8d4db93288b8a50ba4293d212ad1336e52a8ec0a941f + checksum: 10/5f3a99009ed5f2a5a67d06e2f298cc97bc86d462034173308156f15b43a6e850be8511dc204b9b94566305da2947f7d90289657237d210351a39059ff9d666cf languageName: node linkType: hard "json-schema-traverse@npm:^0.4.1": version: 0.4.1 resolution: "json-schema-traverse@npm:0.4.1" - checksum: 8/7486074d3ba247769fda17d5181b345c9fb7d12e0da98b22d1d71a5db9698d8b4bd900a3ec1a4ffdd60846fc2556274a5c894d0c48795f14cb03aeae7b55260b + checksum: 10/7486074d3ba247769fda17d5181b345c9fb7d12e0da98b22d1d71a5db9698d8b4bd900a3ec1a4ffdd60846fc2556274a5c894d0c48795f14cb03aeae7b55260b languageName: node linkType: hard "json-schema-traverse@npm:^1.0.0": version: 1.0.0 resolution: "json-schema-traverse@npm:1.0.0" - checksum: 8/02f2f466cdb0362558b2f1fd5e15cce82ef55d60cd7f8fa828cf35ba74330f8d767fcae5c5c2adb7851fa811766c694b9405810879bc4e1ddd78a7c0e03658ad + checksum: 10/02f2f466cdb0362558b2f1fd5e15cce82ef55d60cd7f8fa828cf35ba74330f8d767fcae5c5c2adb7851fa811766c694b9405810879bc4e1ddd78a7c0e03658ad languageName: node linkType: hard "json-stringify-safe@npm:^5.0.1": version: 5.0.1 resolution: "json-stringify-safe@npm:5.0.1" - checksum: 8/48ec0adad5280b8a96bb93f4563aa1667fd7a36334f79149abd42446d0989f2ddc58274b479f4819f1f00617957e6344c886c55d05a4e15ebb4ab931e4a6a8ee + checksum: 10/59169a081e4eeb6f9559ae1f938f656191c000e0512aa6df9f3c8b2437a4ab1823819c6b9fd1818a4e39593ccfd72e9a051fdd3e2d1e340ed913679e888ded8c languageName: node linkType: hard @@ -4037,7 +4033,7 @@ __metadata: resolution: "json5@npm:2.2.1" bin: json5: lib/cli.js - checksum: 8/74b8a23b102a6f2bf2d224797ae553a75488b5adbaee9c9b6e5ab8b510a2fc6e38f876d4c77dea672d4014a44b2399e15f2051ac2b37b87f74c0c7602003543b + checksum: 10/ee31060b929fbfdc3c80288286e4403ed95f47d9fe2d29f46c833b8cd4ec98b2cdb3537e2c0f15846db90950ae70bc01d2aaae3c303d70523e8039cf0e810cf5 languageName: node linkType: hard @@ -4046,7 +4042,7 @@ __metadata: resolution: "json5@npm:2.2.3" bin: json5: lib/cli.js - checksum: 8/2a7436a93393830bce797d4626275152e37e877b265e94ca69c99e3d20c2b9dab021279146a39cdb700e71b2dd32a4cebd1514cd57cee102b1af906ce5040349 + checksum: 10/1db67b853ff0de3534085d630691d3247de53a2ed1390ba0ddff681ea43e9b3e30ecbdb65c5e9aab49435e44059c23dbd6fee8ee619419ba37465bb0dd7135da languageName: node linkType: hard @@ -4058,7 +4054,7 @@ __metadata: dependenciesMeta: graceful-fs: optional: true - checksum: 8/6447d6224f0d31623eef9b51185af03ac328a7553efcee30fa423d98a9e276ca08db87d71e17f2310b0263fd3ffa6c2a90a6308367f661dc21580f9469897c9e + checksum: 10/17796f0ab1be8479827d3683433f97ebe0a1c6932c3360fa40348eac36904d69269aab26f8b16da311882d94b42e9208e8b28e490bf926364f3ac9bff134c226 languageName: node linkType: hard @@ -4071,7 +4067,7 @@ __metadata: dependenciesMeta: graceful-fs: optional: true - checksum: 8/7af3b8e1ac8fe7f1eccc6263c6ca14e1966fcbc74b618d3c78a0a2075579487547b94f72b7a1114e844a1e15bb00d440e5d1720bfc4612d790a6f285d5ea8354 + checksum: 10/03014769e7dc77d4cf05fa0b534907270b60890085dd5e4d60a382ff09328580651da0b8b4cdf44d91e4c8ae64d91791d965f05707beff000ed494a38b6fec85 languageName: node linkType: hard @@ -4080,7 +4076,7 @@ __metadata: resolution: "keygrip@npm:1.1.0" dependencies: tsscmp: "npm:1.0.6" - checksum: 8/078cd16a463d187121f0a27c1c9c95c52ad392b620f823431689f345a0501132cee60f6e96914b07d570105af470b96960402accd6c48a0b1f3cd8fac4fa2cae + checksum: 10/078cd16a463d187121f0a27c1c9c95c52ad392b620f823431689f345a0501132cee60f6e96914b07d570105af470b96960402accd6c48a0b1f3cd8fac4fa2cae languageName: node linkType: hard @@ -4089,14 +4085,14 @@ __metadata: resolution: "keyv@npm:4.5.3" dependencies: json-buffer: "npm:3.0.1" - checksum: 8/3ffb4d5b72b6b4b4af443bbb75ca2526b23c750fccb5ac4c267c6116888b4b65681015c2833cb20d26cf3e6e32dac6b988c77f7f022e1a571b7d90f1442257da + checksum: 10/2c96e345ecee2c7bf8876b368190b0067308b8da080c1462486fbe71a5b863242c350f1507ddad8f373c5d886b302c42f491de4d3be725071c6743a2f1188ff2 languageName: node linkType: hard "kind-of@npm:^6.0.2": version: 6.0.3 resolution: "kind-of@npm:6.0.3" - checksum: 8/3ab01e7b1d440b22fe4c31f23d8d38b4d9b91d9f291df683476576493d5dfd2e03848a8b05813dd0c3f0e835bc63f433007ddeceb71f05cb25c45ae1b19c6d3b + checksum: 10/5873d303fb36aad875b7538798867da2ae5c9e328d67194b0162a3659a627d22f742fc9c4ae95cd1704132a24b00cae5041fc00c0f6ef937dc17080dc4dbb962 languageName: node linkType: hard @@ -4106,14 +4102,14 @@ __metadata: dependencies: co-body: "npm:^6.0.0" copy-to: "npm:^2.0.1" - checksum: 8/c227fe0fb5a55b98fc91d865e80229b60178d216d53b732b07833eb38f48a7ed6aa768a083bc06e359db33298547e9a65842fbe9d3f0fdaf5149fe0becafc88f + checksum: 10/c227fe0fb5a55b98fc91d865e80229b60178d216d53b732b07833eb38f48a7ed6aa768a083bc06e359db33298547e9a65842fbe9d3f0fdaf5149fe0becafc88f languageName: node linkType: hard "koa-compose@npm:^4.1.0": version: 4.1.0 resolution: "koa-compose@npm:4.1.0" - checksum: 8/46cb16792d96425e977c2ae4e5cb04930280740e907242ec9c25e3fb8b4a1d7b54451d7432bc24f40ec62255edea71894d2ceeb8238501842b4e48014f2e83db + checksum: 10/46cb16792d96425e977c2ae4e5cb04930280740e907242ec9c25e3fb8b4a1d7b54451d7432bc24f40ec62255edea71894d2ceeb8238501842b4e48014f2e83db languageName: node linkType: hard @@ -4123,7 +4119,7 @@ __metadata: dependencies: co: "npm:^4.6.0" koa-compose: "npm:^4.1.0" - checksum: 8/7385b3391995f59c1312142e110d5dff677f9850dbfbcf387cd36a7b0af03b5d26e82b811eb9bb008b4f3e661cdab1f8817596e46b1929da2cf6e97a2f7456ed + checksum: 10/7385b3391995f59c1312142e110d5dff677f9850dbfbcf387cd36a7b0af03b5d26e82b811eb9bb008b4f3e661cdab1f8817596e46b1929da2cf6e97a2f7456ed languageName: node linkType: hard @@ -4147,7 +4143,7 @@ __metadata: debug: "npm:^4.1.1" http-errors: "npm:^1.7.3" resolve-path: "npm:^1.4.0" - checksum: 8/a9fbaadbe0f50efd157a733df4a1cc2b3b79b0cdf12e67c718641e6038d1792c0bebe40913e6d4ceb707d970301155be3859b98d1ef08b0fd1766f7326b82853 + checksum: 10/a9fbaadbe0f50efd157a733df4a1cc2b3b79b0cdf12e67c718641e6038d1792c0bebe40913e6d4ceb707d970301155be3859b98d1ef08b0fd1766f7326b82853 languageName: node linkType: hard @@ -4157,7 +4153,7 @@ __metadata: dependencies: debug: "npm:^3.1.0" koa-send: "npm:^5.0.0" - checksum: 8/8d9b9c4d2b3b13e8818e804245d784099c4b353b55ddd7dbeeb90f27a2e9f5b6f86bd16a4909e337cb89db4d332d9002e6c0f5056caf75749cab62f93c1f0cc5 + checksum: 10/8d9b9c4d2b3b13e8818e804245d784099c4b353b55ddd7dbeeb90f27a2e9f5b6f86bd16a4909e337cb89db4d332d9002e6c0f5056caf75749cab62f93c1f0cc5 languageName: node linkType: hard @@ -4188,7 +4184,7 @@ __metadata: statuses: "npm:^1.5.0" type-is: "npm:^1.6.16" vary: "npm:^1.1.2" - checksum: 8/a97741f89f328f25ae94d82d0ee608377d89e086c73f2d868023e6050dea682ef93e0a5c80097f3aaad28121853aea50a7fb3c0c12ecc45798da2fd1255f580b + checksum: 10/8063140a80f274f5075880cb4b19bdc7e7ce34a590fc4a7b6ae9c6876f93cfe099276769767419da5d74c1a74ead63437ecc90e9bc23edce9236656743d27350 languageName: node linkType: hard @@ -4198,14 +4194,14 @@ __metadata: dependencies: lodash: "npm:^4.17.5" webpack-sources: "npm:^1.1.0" - checksum: 8/23c25a2397c9f75b769b5238ab798873e857baf2363d471d186c9f05212457943f0de16181f33aeecbfd42116b72a0f343fe8910d5d8010f24956d95d536c743 + checksum: 10/bec1cd120eb50b67400c56d16c5443653b40ff534ca220a919c337bf55185abd4ca6a0c406750c83e21ad131bcdc909ca5064cd0ccc99f315d39cdc20f93a5f1 languageName: node linkType: hard "lazy-val@npm:^1.0.4, lazy-val@npm:^1.0.5": version: 1.0.5 resolution: "lazy-val@npm:1.0.5" - checksum: 8/31e12e0b118826dfae74f8f3ff8ebcddfe4200ff88d0d448db175c7265ee537e0ba55488d411728246337f3ed3c9ec68416f10889f632a2ce28fb7a970909fb5 + checksum: 10/31e12e0b118826dfae74f8f3ff8ebcddfe4200ff88d0d448db175c7265ee537e0ba55488d411728246337f3ed3c9ec68416f10889f632a2ce28fb7a970909fb5 languageName: node linkType: hard @@ -4215,7 +4211,7 @@ __metadata: peerDependencies: less: ^3.5.0 || ^4.0.0 webpack: ^5.0.0 - checksum: 8/e950ef8d8cf10a2a53dccc8daf1118604e10ed817ca32e4a292a026c3ab985bf8f00d6b8c74ca9007bd33d6c98315139a7be26f4c59423a68a83a6755a1a285f + checksum: 10/e4d1ceae89b2bde9b8dcf99080743cb484989d25001506d7ad189cabf01f92ec380c5bd4004741d89e660c0e89b677a62fb4dc94edb1c5bfa6d8b93eba417aa0 languageName: node linkType: hard @@ -4249,21 +4245,21 @@ __metadata: optional: true bin: lessc: ./bin/lessc - checksum: 8/cfc2c56f135bbf47d8e53a6d083640e98ed8e92ae8ef36a7103aee571949779af5ee299342a5be83eca8932625adf9ff97017a3c82018e63e8fb9f5e5ab948a5 + checksum: 10/6f35916f8b3598784edab3c758ac654c6057592282f29933d02e04ad5b3031062edebdc2a0b4737557580cb91dab73fb0cbb5637e2e79d6f83f64041e63c7958 languageName: node linkType: hard "lilconfig@npm:^2.0.3": version: 2.1.0 resolution: "lilconfig@npm:2.1.0" - checksum: 8/8549bb352b8192375fed4a74694cd61ad293904eee33f9d4866c2192865c44c4eb35d10782966242634e0cbc1e91fe62b1247f148dc5514918e3a966da7ea117 + checksum: 10/b1314a2e55319013d5e7d7d08be39015829d2764a1eaee130129545d40388499d81b1c31b0f9b3417d4db12775a88008b72ec33dd06e0184cf7503b32ca7cc0b languageName: node linkType: hard "lines-and-columns@npm:^1.1.6": version: 1.2.4 resolution: "lines-and-columns@npm:1.2.4" - checksum: 8/0c37f9f7fa212b38912b7145e1cd16a5f3cd34d782441c3e6ca653485d326f58b3caccda66efce1c5812bde4961bbde3374fae4b0d11bf1226152337f3894aa5 + checksum: 10/0c37f9f7fa212b38912b7145e1cd16a5f3cd34d782441c3e6ca653485d326f58b3caccda66efce1c5812bde4961bbde3374fae4b0d11bf1226152337f3894aa5 languageName: node linkType: hard @@ -4275,14 +4271,14 @@ __metadata: parse-json: "npm:^4.0.0" pify: "npm:^3.0.0" strip-bom: "npm:^3.0.0" - checksum: 8/8f5d6d93ba64a9620445ee9bde4d98b1eac32cf6c8c2d20d44abfa41a6945e7969456ab5f1ca2fb06ee32e206c9769a20eec7002fe290de462e8c884b6b8b356 + checksum: 10/8f5d6d93ba64a9620445ee9bde4d98b1eac32cf6c8c2d20d44abfa41a6945e7969456ab5f1ca2fb06ee32e206c9769a20eec7002fe290de462e8c884b6b8b356 languageName: node linkType: hard "loader-runner@npm:^4.2.0": version: 4.3.0 resolution: "loader-runner@npm:4.3.0" - checksum: 8/a90e00dee9a16be118ea43fec3192d0b491fe03a32ed48a4132eb61d498f5536a03a1315531c19d284392a8726a4ecad71d82044c28d7f22ef62e029bf761569 + checksum: 10/555ae002869c1e8942a0efd29a99b50a0ce6c3296efea95caf48f00d7f6f7f659203ed6613688b6181aa81dc76de3e65ece43094c6dffef3127fe1a84d973cd3 languageName: node linkType: hard @@ -4293,7 +4289,7 @@ __metadata: big.js: "npm:^5.2.2" emojis-list: "npm:^3.0.0" json5: "npm:^2.1.2" - checksum: 8/a5281f5fff1eaa310ad5e1164095689443630f3411e927f95031ab4fb83b4a98f388185bb1fe949e8ab8d4247004336a625e9255c22122b815bb9a4c5d8fc3b7 + checksum: 10/28bd9af2025b0cb2fc6c9c2d8140a75a3ab61016e5a86edf18f63732216e985a50bf2479a662555beb472a54d12292e380423705741bfd2b54cab883aa067f18 languageName: node linkType: hard @@ -4302,28 +4298,28 @@ __metadata: resolution: "locate-path@npm:5.0.0" dependencies: p-locate: "npm:^4.1.0" - checksum: 8/83e51725e67517287d73e1ded92b28602e3ae5580b301fe54bfb76c0c723e3f285b19252e375712316774cf52006cb236aed5704692c32db0d5d089b69696e30 + checksum: 10/83e51725e67517287d73e1ded92b28602e3ae5580b301fe54bfb76c0c723e3f285b19252e375712316774cf52006cb236aed5704692c32db0d5d089b69696e30 languageName: node linkType: hard "lodash.memoize@npm:^4.1.2": version: 4.1.2 resolution: "lodash.memoize@npm:4.1.2" - checksum: 8/9ff3942feeccffa4f1fafa88d32f0d24fdc62fd15ded5a74a5f950ff5f0c6f61916157246744c620173dddf38d37095a92327d5fd3861e2063e736a5c207d089 + checksum: 10/192b2168f310c86f303580b53acf81ab029761b9bd9caa9506a019ffea5f3363ea98d7e39e7e11e6b9917066c9d36a09a11f6fe16f812326390d8f3a54a1a6da languageName: node linkType: hard "lodash.uniq@npm:^4.5.0": version: 4.5.0 resolution: "lodash.uniq@npm:4.5.0" - checksum: 8/a4779b57a8d0f3c441af13d9afe7ecff22dd1b8ce1129849f71d9bbc8e8ee4e46dfb4b7c28f7ad3d67481edd6e51126e4e2a6ee276e25906d10f7140187c392d + checksum: 10/86246ca64ac0755c612e5df6d93cfe92f9ecac2e5ff054b965efbbb1d9a647b6310969e78545006f70f52760554b03233ad0103324121ae31474c20d5f7a2812 languageName: node linkType: hard "lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.17.5": version: 4.17.21 resolution: "lodash@npm:4.17.21" - checksum: 8/eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 + checksum: 10/c08619c038846ea6ac754abd6dd29d2568aa705feb69339e836dfa8d8b09abbb2f859371e86863eda41848221f9af43714491467b5b0299122431e202bb0c532 languageName: node linkType: hard @@ -4334,7 +4330,7 @@ __metadata: js-tokens: "npm:^3.0.0 || ^4.0.0" bin: loose-envify: cli.js - checksum: 8/6517e24e0cad87ec9888f500c5b5947032cdfe6ef65e1c1936a0c48a524b81e65542c9c3edc91c97d5bddc806ee2a985dbc79be89215d613b1de5db6d1cfe6f4 + checksum: 10/6517e24e0cad87ec9888f500c5b5947032cdfe6ef65e1c1936a0c48a524b81e65542c9c3edc91c97d5bddc806ee2a985dbc79be89215d613b1de5db6d1cfe6f4 languageName: node linkType: hard @@ -4343,14 +4339,14 @@ __metadata: resolution: "lower-case@npm:2.0.2" dependencies: tslib: "npm:^2.0.3" - checksum: 8/83a0a5f159ad7614bee8bf976b96275f3954335a84fad2696927f609ddae902802c4f3312d86668722e668bef41400254807e1d3a7f2e8c3eede79691aa1f010 + checksum: 10/83a0a5f159ad7614bee8bf976b96275f3954335a84fad2696927f609ddae902802c4f3312d86668722e668bef41400254807e1d3a7f2e8c3eede79691aa1f010 languageName: node linkType: hard "lowercase-keys@npm:^2.0.0": version: 2.0.0 resolution: "lowercase-keys@npm:2.0.0" - checksum: 8/24d7ebd56ccdf15ff529ca9e08863f3c54b0b9d1edb97a3ae1af34940ae666c01a1e6d200707bce730a8ef76cb57cc10e65f245ecaaf7e6bc8639f2fb460ac23 + checksum: 10/1c233d2da35056e8c49fae8097ee061b8c799b2f02e33c2bf32f9913c7de8fb481ab04dab7df35e94156c800f5f34e99acbf32b21781d87c3aa43ef7b748b79e languageName: node linkType: hard @@ -4359,14 +4355,14 @@ __metadata: resolution: "lru-cache@npm:6.0.0" dependencies: yallist: "npm:^4.0.0" - checksum: 8/f97f499f898f23e4585742138a22f22526254fdba6d75d41a1c2526b3b6cc5747ef59c5612ba7375f42aca4f8461950e925ba08c991ead0651b4918b7c978297 + checksum: 10/fc1fe2ee205f7c8855fa0f34c1ab0bcf14b6229e35579ec1fd1079f31d6fc8ef8eb6fd17f2f4d99788d7e339f50e047555551ebd5e434dda503696e7c6591825 languageName: node linkType: hard "lru-cache@npm:^7.7.1": version: 7.14.1 resolution: "lru-cache@npm:7.14.1" - checksum: 8/d72c6713c6a6d86836a7a6523b3f1ac6764768cca47ec99341c3e76db06aacd4764620e5e2cda719a36848785a52a70e531822dc2b33fb071fa709683746c104 + checksum: 10/f29a86e9eb3fac3dd2f41c218f6e5b1668786a9ab12d095525994cf1072ad66d0850a41957b6b5da1aea6209c691a1b2bc14e5111467e97112bbf2323d680df2 languageName: node linkType: hard @@ -4376,7 +4372,7 @@ __metadata: dependencies: pify: "npm:^4.0.1" semver: "npm:^5.6.0" - checksum: 8/043548886bfaf1820323c6a2997e6d2fa51ccc2586ac14e6f14634f7458b4db2daf15f8c310e2a0abd3e0cddc64df1890d8fc7263033602c47bb12cbfcf86aab + checksum: 10/043548886bfaf1820323c6a2997e6d2fa51ccc2586ac14e6f14634f7458b4db2daf15f8c310e2a0abd3e0cddc64df1890d8fc7263033602c47bb12cbfcf86aab languageName: node linkType: hard @@ -4400,7 +4396,7 @@ __metadata: promise-retry: "npm:^2.0.1" socks-proxy-agent: "npm:^7.0.0" ssri: "npm:^9.0.0" - checksum: 8/2332eb9a8ec96f1ffeeea56ccefabcb4193693597b132cd110734d50f2928842e22b84cfa1508e921b8385cdfd06dda9ad68645fed62b50fff629a580f5fb72c + checksum: 10/fef5acb865a46f25ad0b5ad7d979799125db5dbb24ea811ffa850fbb804bc8e495df2237a8ec3a4fc6250e73c2f95549cca6d6d36a73b1faa61224504eb1188f languageName: node linkType: hard @@ -4409,21 +4405,21 @@ __metadata: resolution: "matcher@npm:3.0.0" dependencies: escape-string-regexp: "npm:^4.0.0" - checksum: 8/8bee1a7ab7609c2c21d9c9254b6785fa708eadf289032b556d57a34e98fcd4c537659a004dafee6ce80ab157099e645c199dc52678dff1e7fb0a6684e0da4dbe + checksum: 10/8bee1a7ab7609c2c21d9c9254b6785fa708eadf289032b556d57a34e98fcd4c537659a004dafee6ce80ab157099e645c199dc52678dff1e7fb0a6684e0da4dbe languageName: node linkType: hard "mdn-data@npm:2.0.14": version: 2.0.14 resolution: "mdn-data@npm:2.0.14" - checksum: 8/9d0128ed425a89f4cba8f787dca27ad9408b5cb1b220af2d938e2a0629d17d879a34d2cb19318bdb26c3f14c77dd5dfbae67211f5caaf07b61b1f2c5c8c7dc16 + checksum: 10/64c629fcf14807e30d6dc79f97cbcafa16db066f53a294299f3932b3beb0eb0d1386d3a7fe408fc67348c449a4e0999360c894ba4c81eb209d7be4e36503de0e languageName: node linkType: hard "media-typer@npm:0.3.0": version: 0.3.0 resolution: "media-typer@npm:0.3.0" - checksum: 8/af1b38516c28ec95d6b0826f6c8f276c58aec391f76be42aa07646b4e39d317723e869700933ca6995b056db4b09a78c92d5440dc23657e6764be5d28874bba1 + checksum: 10/38e0984db39139604756903a01397e29e17dcb04207bb3e081412ce725ab17338ecc47220c1b186b6bbe79a658aad1b0d41142884f5a481f36290cdefbe6aa46 languageName: node linkType: hard @@ -4432,35 +4428,35 @@ __metadata: resolution: "memfs@npm:3.5.3" dependencies: fs-monkey: "npm:^1.0.4" - checksum: 8/18dfdeacad7c8047b976a6ccd58bc98ba76e122ad3ca0e50a21837fe2075fc0d9aafc58ab9cf2576c2b6889da1dd2503083f2364191b695273f40969db2ecc44 + checksum: 10/7c9cdb453a6b06e87f11e2dbe6c518fd3c1c1581b370ffa24f42f3fd5b1db8c2203f596e43321a0032963f3e9b66400f2c3cf043904ac496d6ae33eafd0878fe languageName: node linkType: hard "memorystream@npm:^0.3.1": version: 0.3.1 resolution: "memorystream@npm:0.3.1" - checksum: 8/f18b42440d24d09516d01466c06adf797df7873f0d40aa7db02e5fb9ed83074e5e65412d0720901d7069363465f82dc4f8bcb44f0cde271567a61426ce6ca2e9 + checksum: 10/2e34a1e35e6eb2e342f788f75f96c16f115b81ff6dd39e6c2f48c78b464dbf5b1a4c6ebfae4c573bd0f8dbe8c57d72bb357c60523be184655260d25855c03902 languageName: node linkType: hard "merge-stream@npm:^2.0.0": version: 2.0.0 resolution: "merge-stream@npm:2.0.0" - checksum: 8/6fa4dcc8d86629705cea944a4b88ef4cb0e07656ebf223fa287443256414283dd25d91c1cd84c77987f2aec5927af1a9db6085757cb43d90eb170ebf4b47f4f4 + checksum: 10/6fa4dcc8d86629705cea944a4b88ef4cb0e07656ebf223fa287443256414283dd25d91c1cd84c77987f2aec5927af1a9db6085757cb43d90eb170ebf4b47f4f4 languageName: node linkType: hard "merge2@npm:^1.3.0": version: 1.4.1 resolution: "merge2@npm:1.4.1" - checksum: 8/7268db63ed5169466540b6fb947aec313200bcf6d40c5ab722c22e242f651994619bcd85601602972d3c85bd2cc45a358a4c61937e9f11a061919a1da569b0c2 + checksum: 10/7268db63ed5169466540b6fb947aec313200bcf6d40c5ab722c22e242f651994619bcd85601602972d3c85bd2cc45a358a4c61937e9f11a061919a1da569b0c2 languageName: node linkType: hard "methods@npm:^1.1.2": version: 1.1.2 resolution: "methods@npm:1.1.2" - checksum: 8/0917ff4041fa8e2f2fda5425a955fe16ca411591fbd123c0d722fcf02b73971ed6f764d85f0a6f547ce49ee0221ce2c19a5fa692157931cecb422984f1dcd13a + checksum: 10/a385dd974faa34b5dd021b2bbf78c722881bf6f003bfe6d391d7da3ea1ed625d1ff10ddd13c57531f628b3e785be38d3eed10ad03cebd90b76932413df9a1820 languageName: node linkType: hard @@ -4477,7 +4473,7 @@ __metadata: "mime-db@npm:1.52.0": version: 1.52.0 resolution: "mime-db@npm:1.52.0" - checksum: 8/0d99a03585f8b39d68182803b12ac601d9c01abfa28ec56204fa330bc9f3d1c5e14beb049bafadb3dbdf646dfb94b87e24d4ec7b31b7279ef906a8ea9b6a513f + checksum: 10/54bb60bf39e6f8689f6622784e668a3d7f8bed6b0d886f5c3c446cb3284be28b30bf707ed05d0fe44a036f8469976b2629bbea182684977b084de9da274694d7 languageName: node linkType: hard @@ -4486,7 +4482,7 @@ __metadata: resolution: "mime-types@npm:2.1.35" dependencies: mime-db: "npm:1.52.0" - checksum: 8/89a5b7f1def9f3af5dad6496c5ed50191ae4331cc5389d7c521c8ad28d5fdad2d06fd81baf38fed813dc4e46bb55c8145bb0ff406330818c9cf712fb2e9b3836 + checksum: 10/89aa9651b67644035de2784a6e665fc685d79aba61857e02b9c8758da874a754aed4a9aced9265f5ed1171fd934331e5516b84a7f0218031b6fa0270eca1e51a languageName: node linkType: hard @@ -4495,7 +4491,7 @@ __metadata: resolution: "mime@npm:1.6.0" bin: mime: cli.js - checksum: 8/fef25e39263e6d207580bdc629f8872a3f9772c923c7f8c7e793175cee22777bbe8bba95e5d509a40aaa292d8974514ce634ae35769faa45f22d17edda5e8557 + checksum: 10/b7d98bb1e006c0e63e2c91b590fe1163b872abf8f7ef224d53dd31499c2197278a6d3d0864c45239b1a93d22feaf6f9477e9fc847eef945838150b8c02d03170 languageName: node linkType: hard @@ -4504,21 +4500,21 @@ __metadata: resolution: "mime@npm:2.6.0" bin: mime: cli.js - checksum: 8/1497ba7b9f6960694268a557eae24b743fd2923da46ec392b042469f4b901721ba0adcf8b0d3c2677839d0e243b209d76e5edcbd09cfdeffa2dfb6bb4df4b862 + checksum: 10/7da117808b5cd0203bb1b5e33445c330fe213f4d8ee2402a84d62adbde9716ca4fb90dd6d9ab4e77a4128c6c5c24a9c4c9f6a4d720b095b1b342132d02dba58d languageName: node linkType: hard "mimic-response@npm:^1.0.0": version: 1.0.1 resolution: "mimic-response@npm:1.0.1" - checksum: 8/034c78753b0e622bc03c983663b1cdf66d03861050e0c8606563d149bc2b02d63f62ce4d32be4ab50d0553ae0ffe647fc34d1f5281184c6e1e8cf4d85e8d9823 + checksum: 10/034c78753b0e622bc03c983663b1cdf66d03861050e0c8606563d149bc2b02d63f62ce4d32be4ab50d0553ae0ffe647fc34d1f5281184c6e1e8cf4d85e8d9823 languageName: node linkType: hard "mimic-response@npm:^3.1.0": version: 3.1.0 resolution: "mimic-response@npm:3.1.0" - checksum: 8/25739fee32c17f433626bf19f016df9036b75b3d84a3046c7d156e72ec963dd29d7fc8a302f55a3d6c5a4ff24259676b15d915aad6480815a969ff2ec0836867 + checksum: 10/7e719047612411fe071332a7498cf0448bbe43c485c0d780046c76633a771b223ff49bd00267be122cedebb897037fdb527df72335d0d0f74724604ca70b37ad languageName: node linkType: hard @@ -4529,7 +4525,7 @@ __metadata: schema-utils: "npm:^4.0.0" peerDependencies: webpack: ^5.0.0 - checksum: 8/04af0e7d8c1a4ff31c70ac2d0895837dae3d51cce3bfd90e3c1d90d50eef7de21778361a3064531df046d775d80b3bf056324dddea93831c7def2047c5aa8718 + checksum: 10/55e9cb89a648e9d493dd66eb54cbf02783c6623d0e332ddb4c2374891fcd8de051d5f97473e40478eb2e091ea32fc9ac84c3cd583b445df9f444cc6b7483e1b1 languageName: node linkType: hard @@ -4538,7 +4534,7 @@ __metadata: resolution: "minimatch@npm:3.0.4" dependencies: brace-expansion: "npm:^1.1.7" - checksum: 8/66ac295f8a7b59788000ea3749938b0970344c841750abd96694f80269b926ebcafad3deeb3f1da2522978b119e6ae3a5869b63b13a7859a456b3408bd18a078 + checksum: 10/3b3f17f76582417dd139646505f1d1bb5f148ea5191eb98fe73cd41224a678dadb94cc674c7d06b36de4ab5c303f039cfd7cd2d089348d6f70d04db169cf3770 languageName: node linkType: hard @@ -4547,7 +4543,7 @@ __metadata: resolution: "minimatch@npm:3.1.2" dependencies: brace-expansion: "npm:^1.1.7" - checksum: 8/c154e566406683e7bcb746e000b84d74465b3a832c45d59912b9b55cd50dee66e5c4b1e5566dba26154040e51672f9aa450a9aef0c97cfc7336b78b7afb9540a + checksum: 10/e0b25b04cd4ec6732830344e5739b13f8690f8a012d73445a4a19fbc623f5dd481ef7a5827fde25954cd6026fede7574cc54dc4643c99d6c6b653d6203f94634 languageName: node linkType: hard @@ -4556,14 +4552,14 @@ __metadata: resolution: "minimatch@npm:5.1.1" dependencies: brace-expansion: "npm:^2.0.1" - checksum: 8/215edd0978320a3354188f84a537d45841f2449af4df4379f79b9b777e71aa4f5722cc9d1717eabd2a70d38ef76ab7b708d24d83ea6a6c909dfd8833de98b437 + checksum: 10/85db02f056f8a9c4010aa0f35da70644f77bc9889725f291c2c4933a055501d71df0d4990237c80594886603d725d8014bda3a925f3b71a3131932100ea7dd7c languageName: node linkType: hard "minimist@npm:^1.2.0, minimist@npm:^1.2.6": version: 1.2.7 resolution: "minimist@npm:1.2.7" - checksum: 8/7346574a1038ca23c32e02252f603801f09384dd1d78b69a943a4e8c2c28730b80e96193882d3d3b22a063445f460e48316b29b8a25addca2d7e5e8f75478bec + checksum: 10/0202378a8eb1a9d98a44f623f43c89793a095f4bde6981bda29f6ae61e82a15c18b1690b5efc4c66ddbd402a3e9b7175e6ebdabb2b28037c279ac823b7360e00 languageName: node linkType: hard @@ -4572,7 +4568,7 @@ __metadata: resolution: "minipass-collect@npm:1.0.2" dependencies: minipass: "npm:^3.0.0" - checksum: 8/14df761028f3e47293aee72888f2657695ec66bd7d09cae7ad558da30415fdc4752bbfee66287dcc6fd5e6a2fa3466d6c484dc1cbd986525d9393b9523d97f10 + checksum: 10/14df761028f3e47293aee72888f2657695ec66bd7d09cae7ad558da30415fdc4752bbfee66287dcc6fd5e6a2fa3466d6c484dc1cbd986525d9393b9523d97f10 languageName: node linkType: hard @@ -4587,7 +4583,7 @@ __metadata: dependenciesMeta: encoding: optional: true - checksum: 8/3f216be79164e915fc91210cea1850e488793c740534985da017a4cbc7a5ff50506956d0f73bb0cb60e4fe91be08b6b61ef35101706d3ef5da2c8709b5f08f91 + checksum: 10/8cfc589563ae2a11eebbf79121ef9a526fd078fca949ed3f1e4a51472ca4a4aad89fcea1738982ce9d7d833116ecc9c6ae9ebbd844832a94e3f4a3d4d1b9d3b9 languageName: node linkType: hard @@ -4596,7 +4592,7 @@ __metadata: resolution: "minipass-flush@npm:1.0.5" dependencies: minipass: "npm:^3.0.0" - checksum: 8/56269a0b22bad756a08a94b1ffc36b7c9c5de0735a4dd1ab2b06c066d795cfd1f0ac44a0fcae13eece5589b908ecddc867f04c745c7009be0b566421ea0944cf + checksum: 10/56269a0b22bad756a08a94b1ffc36b7c9c5de0735a4dd1ab2b06c066d795cfd1f0ac44a0fcae13eece5589b908ecddc867f04c745c7009be0b566421ea0944cf languageName: node linkType: hard @@ -4605,7 +4601,7 @@ __metadata: resolution: "minipass-pipeline@npm:1.2.4" dependencies: minipass: "npm:^3.0.0" - checksum: 8/b14240dac0d29823c3d5911c286069e36d0b81173d7bdf07a7e4a91ecdef92cdff4baaf31ea3746f1c61e0957f652e641223970870e2353593f382112257971b + checksum: 10/b14240dac0d29823c3d5911c286069e36d0b81173d7bdf07a7e4a91ecdef92cdff4baaf31ea3746f1c61e0957f652e641223970870e2353593f382112257971b languageName: node linkType: hard @@ -4614,7 +4610,7 @@ __metadata: resolution: "minipass-sized@npm:1.0.3" dependencies: minipass: "npm:^3.0.0" - checksum: 8/79076749fcacf21b5d16dd596d32c3b6bf4d6e62abb43868fac21674078505c8b15eaca4e47ed844985a4514854f917d78f588fcd029693709417d8f98b2bd60 + checksum: 10/40982d8d836a52b0f37049a0a7e5d0f089637298e6d9b45df9c115d4f0520682a78258905e5c8b180fb41b593b0a82cc1361d2c74b45f7ada66334f84d1ecfdd languageName: node linkType: hard @@ -4623,14 +4619,14 @@ __metadata: resolution: "minipass@npm:3.3.6" dependencies: yallist: "npm:^4.0.0" - checksum: 8/a30d083c8054cee83cdcdc97f97e4641a3f58ae743970457b1489ce38ee1167b3aaf7d815cd39ec7a99b9c40397fd4f686e83750e73e652b21cb516f6d845e48 + checksum: 10/a5c6ef069f70d9a524d3428af39f2b117ff8cd84172e19b754e7264a33df460873e6eb3d6e55758531580970de50ae950c496256bb4ad3691a2974cddff189f0 languageName: node linkType: hard "minipass@npm:^5.0.0": version: 5.0.0 resolution: "minipass@npm:5.0.0" - checksum: 8/425dab288738853fded43da3314a0b5c035844d6f3097a8e3b5b29b328da8f3c1af6fc70618b32c29ff906284cf6406b6841376f21caaadd0793c1d5a6a620ea + checksum: 10/61682162d29f45d3152b78b08bab7fb32ca10899bc5991ffe98afc18c9e9543bd1e3be94f8b8373ba6262497db63607079dc242ea62e43e7b2270837b7347c93 languageName: node linkType: hard @@ -4640,7 +4636,7 @@ __metadata: dependencies: minipass: "npm:^3.0.0" yallist: "npm:^4.0.0" - checksum: 8/f1fdeac0b07cf8f30fcf12f4b586795b97be856edea22b5e9072707be51fc95d41487faec3f265b42973a304fe3a64acd91a44a3826a963e37b37bafde0212c3 + checksum: 10/ae0f45436fb51344dcb87938446a32fbebb540d0e191d63b35e1c773d47512e17307bf54aa88326cc6d176594d00e4423563a091f7266c2f9a6872cdc1e234d1 languageName: node linkType: hard @@ -4651,7 +4647,7 @@ __metadata: minimist: "npm:^1.2.6" bin: mkdirp: bin/cmd.js - checksum: 8/0c91b721bb12c3f9af4b77ebf73604baf350e64d80df91754dc509491ae93bf238581e59c7188360cec7cb62fc4100959245a42cfe01834efedc5e9d068376c2 + checksum: 10/0c91b721bb12c3f9af4b77ebf73604baf350e64d80df91754dc509491ae93bf238581e59c7188360cec7cb62fc4100959245a42cfe01834efedc5e9d068376c2 languageName: node linkType: hard @@ -4660,52 +4656,28 @@ __metadata: resolution: "mkdirp@npm:1.0.4" bin: mkdirp: bin/cmd.js - checksum: 8/a96865108c6c3b1b8e1d5e9f11843de1e077e57737602de1b82030815f311be11f96f09cce59bd5b903d0b29834733e5313f9301e3ed6d6f6fba2eae0df4298f - languageName: node - linkType: hard - -"mobx-react-lite@npm:^4.0.5": - version: 4.0.5 - resolution: "mobx-react-lite@npm:4.0.5" - dependencies: - use-sync-external-store: "npm:^1.2.0" - peerDependencies: - mobx: ^6.9.0 - react: ^16.8.0 || ^17 || ^18 - peerDependenciesMeta: - react-dom: - optional: true - react-native: - optional: true - checksum: 8/b0a3e4345c1449eee7c0a6aa2369475024a0c8227e11305cc965229527e3ddede4ca7b8337912a7fe396e24bd83986f2a88a21813c51cabdc18330fa484023b5 - languageName: node - linkType: hard - -"mobx@npm:^6.12.0": - version: 6.12.0 - resolution: "mobx@npm:6.12.0" - checksum: 8/482914d39199cadc8808907a2b9dbc634c74534d6c6d6cb34984c199aa94665ce07e7d183c0e97d54f4b06c8e42fec0a48c79484f4bbeac04a4dfd0f160290c6 + checksum: 10/d71b8dcd4b5af2fe13ecf3bd24070263489404fe216488c5ba7e38ece1f54daf219e72a833a3a2dc404331e870e9f44963a33399589490956bff003a3404d3b2 languageName: node linkType: hard "ms@npm:2.0.0": version: 2.0.0 resolution: "ms@npm:2.0.0" - checksum: 8/0e6a22b8b746d2e0b65a430519934fefd41b6db0682e3477c10f60c76e947c4c0ad06f63ffdf1d78d335f83edee8c0aa928aa66a36c7cd95b69b26f468d527f4 + checksum: 10/0e6a22b8b746d2e0b65a430519934fefd41b6db0682e3477c10f60c76e947c4c0ad06f63ffdf1d78d335f83edee8c0aa928aa66a36c7cd95b69b26f468d527f4 languageName: node linkType: hard "ms@npm:2.1.2": version: 2.1.2 resolution: "ms@npm:2.1.2" - checksum: 8/673cdb2c3133eb050c745908d8ce632ed2c02d85640e2edb3ace856a2266a813b30c613569bf3354fdf4ea7d1a1494add3bfa95e2713baa27d0c2c71fc44f58f + checksum: 10/673cdb2c3133eb050c745908d8ce632ed2c02d85640e2edb3ace856a2266a813b30c613569bf3354fdf4ea7d1a1494add3bfa95e2713baa27d0c2c71fc44f58f languageName: node linkType: hard "ms@npm:^2.0.0, ms@npm:^2.1.1": version: 2.1.3 resolution: "ms@npm:2.1.3" - checksum: 8/aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d + checksum: 10/aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d languageName: node linkType: hard @@ -4714,7 +4686,7 @@ __metadata: resolution: "nan@npm:2.17.0" dependencies: node-gyp: "npm:latest" - checksum: 8/ec609aeaf7e68b76592a3ba96b372aa7f5df5b056c1e37410b0f1deefbab5a57a922061e2c5b369bae9c7c6b5e6eecf4ad2dac8833a1a7d3a751e0a7c7f849ed + checksum: 10/bba1efee2475afb0cce154300b554863fb4bb0a683a28f5d0fa7390794b3b4381356aabeab6472c70651d9c8a2830e7595963f3ec0aa2008e5c4d83dbeb820fa languageName: node linkType: hard @@ -4723,7 +4695,7 @@ __metadata: resolution: "nan@npm:2.18.0" dependencies: node-gyp: "npm:latest" - checksum: 8/4fe42f58456504eab3105c04a5cffb72066b5f22bd45decf33523cb17e7d6abc33cca2a19829407b9000539c5cb25f410312d4dc5b30220167a3594896ea6a0a + checksum: 10/5520e22c64e2b5b495b1d765d6334c989b848bbe1502fec89c5857cabcc7f9f0474563377259e7574bff1c8a041d3b90e9ffa1f5e15502ffddee7b2550cc26a0 languageName: node linkType: hard @@ -4732,35 +4704,35 @@ __metadata: resolution: "nanoid@npm:3.3.7" bin: nanoid: bin/nanoid.cjs - checksum: 8/d36c427e530713e4ac6567d488b489a36582ef89da1d6d4e3b87eded11eb10d7042a877958c6f104929809b2ab0bafa17652b076cdf84324aa75b30b722204f2 + checksum: 10/ac1eb60f615b272bccb0e2b9cd933720dad30bf9708424f691b8113826bb91aca7e9d14ef5d9415a6ba15c266b37817256f58d8ce980c82b0ba3185352565679 languageName: node linkType: hard "native-request@npm:^1.0.5": version: 1.1.0 resolution: "native-request@npm:1.1.0" - checksum: 8/ab96f79c7a5e726a88eaa90c700d4d844af884e68d9784d90d42134c12224105453e4db82b5985624b458e4a304d5f664c1be760e88b63f7f247001f4e755603 + checksum: 10/ab96f79c7a5e726a88eaa90c700d4d844af884e68d9784d90d42134c12224105453e4db82b5985624b458e4a304d5f664c1be760e88b63f7f247001f4e755603 languageName: node linkType: hard "negotiator@npm:0.6.3, negotiator@npm:^0.6.3": version: 0.6.3 resolution: "negotiator@npm:0.6.3" - checksum: 8/b8ffeb1e262eff7968fc90a2b6767b04cfd9842582a9d0ece0af7049537266e7b2506dfb1d107a32f06dd849ab2aea834d5830f7f4d0e5cb7d36e1ae55d021d9 + checksum: 10/2723fb822a17ad55c93a588a4bc44d53b22855bf4be5499916ca0cab1e7165409d0b288ba2577d7b029f10ce18cf2ed8e703e5af31c984e1e2304277ef979837 languageName: node linkType: hard "neo-async@npm:^2.6.2": version: 2.6.2 resolution: "neo-async@npm:2.6.2" - checksum: 8/deac9f8d00eda7b2e5cd1b2549e26e10a0faa70adaa6fdadca701cc55f49ee9018e427f424bac0c790b7c7e2d3068db97f3093f1093975f2acb8f8818b936ed9 + checksum: 10/1a7948fea86f2b33ec766bc899c88796a51ba76a4afc9026764aedc6e7cde692a09067031e4a1bf6db4f978ccd99e7f5b6c03fe47ad9865c3d4f99050d67e002 languageName: node linkType: hard "nice-try@npm:^1.0.4": version: 1.0.5 resolution: "nice-try@npm:1.0.5" - checksum: 8/0b4af3b5bb5d86c289f7a026303d192a7eb4417231fe47245c460baeabae7277bcd8fd9c728fb6bd62c30b3e15cd6620373e2cf33353b095d8b403d3e8a15aff + checksum: 10/0b4af3b5bb5d86c289f7a026303d192a7eb4417231fe47245c460baeabae7277bcd8fd9c728fb6bd62c30b3e15cd6620373e2cf33353b095d8b403d3e8a15aff languageName: node linkType: hard @@ -4770,14 +4742,14 @@ __metadata: dependencies: lower-case: "npm:^2.0.2" tslib: "npm:^2.0.3" - checksum: 8/0b2ebc113dfcf737d48dde49cfebf3ad2d82a8c3188e7100c6f375e30eafbef9e9124aadc3becef237b042fd5eb0aad2fd78669c20972d045bbe7fea8ba0be5c + checksum: 10/0b2ebc113dfcf737d48dde49cfebf3ad2d82a8c3188e7100c6f375e30eafbef9e9124aadc3becef237b042fd5eb0aad2fd78669c20972d045bbe7fea8ba0be5c languageName: node linkType: hard "node-abort-controller@npm:^3.0.1": version: 3.1.1 resolution: "node-abort-controller@npm:3.1.1" - checksum: 8/2c340916af9710328b11c0828223fc65ba320e0d082214a211311bf64c2891028e42ef276b9799188c4ada9e6e1c54cf7a0b7c05dd9d59fcdc8cd633304c8047 + checksum: 10/0a2cdb7ec0aeaf3cb31e1ca0e192f5add48f1c5c9c9ed822129f9dddbd9432f69b7425982f94ce803c56a2104884530aa67cd57696e5774b2e5b8ec2f58de042 languageName: node linkType: hard @@ -4786,7 +4758,7 @@ __metadata: resolution: "node-addon-api@npm:1.7.2" dependencies: node-gyp: "npm:latest" - checksum: 8/938922b3d7cb34ee137c5ec39df6289a3965e8cab9061c6848863324c21a778a81ae3bc955554c56b6b86962f6ccab2043dd5fa3f33deab633636bd28039333f + checksum: 10/6bf8217a8cd8148f4bbfd319b46d33587e9fb2e63e3c856ded67a76715167f7a6b17e1d9b8bbf3b8508befeb6a4adb10d92b8998ed5c19ca8448343f4cea11d6 languageName: node linkType: hard @@ -4795,7 +4767,7 @@ __metadata: resolution: "node-addon-api@npm:3.2.1" dependencies: node-gyp: "npm:latest" - checksum: 8/2369986bb0881ccd9ef6bacdf39550e07e089a9c8ede1cbc5fc7712d8e2faa4d50da0e487e333d4125f8c7a616c730131d1091676c9d499af1d74560756b4a18 + checksum: 10/681b52dfa3e15b0a8e5cf283cc0d8cd5fd2a57c559ae670fcfd20544cbb32f75de7648674110defcd17ab2c76ebef630aa7d2d2f930bc7a8cc439b20fe233518 languageName: node linkType: hard @@ -4806,7 +4778,7 @@ __metadata: node-gyp-build: bin.js node-gyp-build-optional: optional.js node-gyp-build-test: build-test.js - checksum: 8/d888bae0fb88335f69af1b57a2294a931c5042f36e413d8d364c992c9ebfa0b96ffe773179a5a2c8f04b73856e8634e09cce108dbb9804396d3cc8c5455ff2db + checksum: 10/1f6c2b519cfbf13fc60589d40b65d9aa8c8bfaefe99763a9a982a6518a9292c83f41adf558628cfcb748e2a55418ac91718b68bb6be7e02cfac90c82e412de9b languageName: node linkType: hard @@ -4826,7 +4798,7 @@ __metadata: which: "npm:^2.0.2" bin: node-gyp: bin/node-gyp.js - checksum: 8/589ddd3ed967724ef425f9624bfa47cf73022640ab3eba6d556e92cdc4ddef33b63fce3a467c93b995a3f61df92eafd3c3d1e8dbe4a2c00c383334487dea99c3 + checksum: 10/b64c70a3984f9f23b9ae4606940e16c99edb93e7c455965afb0342ac961680efc4e553fed9f2654b9816072298da59fadfb832aeac6c625517cc228edb54c2c3 languageName: node linkType: hard @@ -4836,21 +4808,21 @@ __metadata: dependencies: nan: "npm:^2.17.0" node-gyp: "npm:latest" - checksum: 8/861b1708d81030da4f1f8cf06f367737de4e2e88ee6144bd0d1aadb57bdf1c09bd4c481453e462d2c9af9cc122d9643c7a8ac9c4a9ef1462c0486d741b220d09 + checksum: 10/f1803531bfee71fdc8fb97fc544364e64de6bad91d6221b79b6a8e3518032768bff8738960d15f29e5a14aa16b9eb550e1a26ba1ad8c66f86424b9f56fd0ccad languageName: node linkType: hard "node-releases@npm:^2.0.14": version: 2.0.14 resolution: "node-releases@npm:2.0.14" - checksum: 8/59443a2f77acac854c42d321bf1b43dea0aef55cd544c6a686e9816a697300458d4e82239e2d794ea05f7bbbc8a94500332e2d3ac3f11f52e4b16cbe638b3c41 + checksum: 10/0f7607ec7db5ef1dc616899a5f24ae90c869b6a54c2d4f36ff6d84a282ab9343c7ff3ca3670fe4669171bb1e8a9b3e286e1ef1c131f09a83d70554f855d54f24 languageName: node linkType: hard "node-releases@npm:^2.0.6": version: 2.0.8 resolution: "node-releases@npm:2.0.8" - checksum: 8/b1ab02c0d5d8e081bf9537232777a7a787dc8fef07f70feabe70a344599b220fe16462f746ac30f3eed5a58549445ad69368964d12a1f8b3b764f6caab7ba34a + checksum: 10/b1ab02c0d5d8e081bf9537232777a7a787dc8fef07f70feabe70a344599b220fe16462f746ac30f3eed5a58549445ad69368964d12a1f8b3b764f6caab7ba34a languageName: node linkType: hard @@ -4861,7 +4833,7 @@ __metadata: abbrev: "npm:^1.0.0" bin: nopt: bin/nopt.js - checksum: 8/82149371f8be0c4b9ec2f863cc6509a7fd0fa729929c009f3a58e4eb0c9e4cae9920e8f1f8eb46e7d032fec8fb01bede7f0f41a67eb3553b7b8e14fa53de1dac + checksum: 10/3c1128e07cd0241ae66d6e6a472170baa9f3e84dd4203950ba8df5bafac4efa2166ce917a57ef02b01ba7c40d18b2cc64b29b225fd3640791fe07b24f0b33a32 languageName: node linkType: hard @@ -4873,21 +4845,21 @@ __metadata: resolve: "npm:^1.10.0" semver: "npm:2 || 3 || 4 || 5" validate-npm-package-license: "npm:^3.0.1" - checksum: 8/7999112efc35a6259bc22db460540cae06564aa65d0271e3bdfa86876d08b0e578b7b5b0028ee61b23f1cae9fc0e7847e4edc0948d3068a39a2a82853efc8499 + checksum: 10/644f830a8bb9b7cc9bf2f6150618727659ee27cdd0840d1c1f97e8e6cab0803a098a2c19f31c6247ad9d3a0792e61521a13a6e8cd87cc6bb676e3150612c03d4 languageName: node linkType: hard "normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": version: 3.0.0 resolution: "normalize-path@npm:3.0.0" - checksum: 8/88eeb4da891e10b1318c4b2476b6e2ecbeb5ff97d946815ffea7794c31a89017c70d7f34b3c2ebf23ef4e9fc9fb99f7dffe36da22011b5b5c6ffa34f4873ec20 + checksum: 10/88eeb4da891e10b1318c4b2476b6e2ecbeb5ff97d946815ffea7794c31a89017c70d7f34b3c2ebf23ef4e9fc9fb99f7dffe36da22011b5b5c6ffa34f4873ec20 languageName: node linkType: hard "normalize-url@npm:^6.0.1": version: 6.1.0 resolution: "normalize-url@npm:6.1.0" - checksum: 8/4a4944631173e7d521d6b80e4c85ccaeceb2870f315584fa30121f505a6dfd86439c5e3fdd8cd9e0e291290c41d0c3599f0cb12ab356722ed242584c30348e50 + checksum: 10/5ae699402c9d5ffa330adc348fcd6fc6e6a155ab7c811b96e30b7ecab60ceef821d8f86443869671dda71bbc47f4b9625739c82ad247e883e9aefe875bfb8659 languageName: node linkType: hard @@ -4898,7 +4870,7 @@ __metadata: which: "npm:^1.2.10" bin: npm-path: bin/npm-path - checksum: 8/3dfe24d9bb69380f1544a5770550d7ad6a32c033a6f97dd707ac15d12aeefa794b7c802674a6935b98fe2f8ecb01964b2c7c41daeaa1ee1db525c46a82692003 + checksum: 10/b62f5c7739da994684a1df64ccc987f232dc348ae307986eadf2234338b54714ba44b5372e0327cff9794ed0f57e4c0382dab79af710ce0e33bd1f124b1d6e35 languageName: node linkType: hard @@ -4919,7 +4891,7 @@ __metadata: npm-run-all: bin/npm-run-all/index.js run-p: bin/run-p/index.js run-s: bin/run-s/index.js - checksum: 8/373b72c6a36564da13c1642c1fd9bb4dcc756bce7a3648f883772f02661095319820834ff813762d2fee403e9b40c1cd27c8685807c107440f10eb19c006d4a0 + checksum: 10/46020e92813223d015f4178cce5a2338164be5f25b0c391e256c0e84ac082544986c220013f1be7f002dcac07b81c7ee0cb5c5c30b84fd6ebb6de96a8d713745 languageName: node linkType: hard @@ -4933,7 +4905,7 @@ __metadata: serializerr: "npm:^1.0.3" bin: npm-run: bin/npm-run.js - checksum: 8/1c6e171bf0c089566e70e974b8419236166726e9f0e973dd7b7c045b182cdbefd21bd023d2e8f13135d3a9df262b04cfd1eb4da1a720f8a53cabb446c888b9e2 + checksum: 10/d4a13b6247b4a6d267d97d3e3b5c0b6b4fa4d5e13220404146917d34832b687631ec8e9853091be7509dafc5e431c55ef1714bd2e5ddd71d05d4e62e291520fa languageName: node linkType: hard @@ -4946,7 +4918,7 @@ __metadata: which: "npm:^1.2.10" bin: npm-which: bin/npm-which.js - checksum: 8/fba486416171b0eed12db418fb71878de97aa3623da2f907ca9201dbb193f990690a75d15a80388aa769cfb0fa3e48e363237a2806e19223a423c34d4a3cc05a + checksum: 10/742e24acdd6503edd6093bf8fa88f437760143301c6c5d846f532cf02ff40e815a7c28c96eca170398dfbbed97e7ab4dff07fbdcbb2ae3000a6a9845bc77b8c7 languageName: node linkType: hard @@ -4958,7 +4930,7 @@ __metadata: console-control-strings: "npm:^1.1.0" gauge: "npm:^4.0.3" set-blocking: "npm:^2.0.0" - checksum: 8/ae238cd264a1c3f22091cdd9e2b106f684297d3c184f1146984ecbe18aaa86343953f26b9520dedd1b1372bc0316905b736c1932d778dbeb1fcf5a1001390e2a + checksum: 10/82b123677e62deb9e7472e27b92386c09e6e254ee6c8bcd720b3011013e4168bc7088e984f4fbd53cb6e12f8b4690e23e4fa6132689313e0d0dc4feea45489bb languageName: node linkType: hard @@ -4967,7 +4939,7 @@ __metadata: resolution: "nth-check@npm:2.1.1" dependencies: boolbase: "npm:^1.0.0" - checksum: 8/5afc3dafcd1573b08877ca8e6148c52abd565f1d06b1eb08caf982e3fa289a82f2cae697ffb55b5021e146d60443f1590a5d6b944844e944714a5b549675bcd3 + checksum: 10/5afc3dafcd1573b08877ca8e6148c52abd565f1d06b1eb08caf982e3fa289a82f2cae697ffb55b5021e146d60443f1590a5d6b944844e944714a5b549675bcd3 languageName: node linkType: hard @@ -4979,28 +4951,28 @@ __metadata: schema-utils: "npm:^3.0.0" peerDependencies: webpack: ^4.0.0 || ^5.0.0 - checksum: 8/eeb4c4dd2f8f41e46f5665e4500359109e95ec1028a178a60e0161984906572da7dd87644bcc3cb29f0125d77e2b2508fb4f3813cfb1c6604a15865beb4b987b + checksum: 10/eeb4c4dd2f8f41e46f5665e4500359109e95ec1028a178a60e0161984906572da7dd87644bcc3cb29f0125d77e2b2508fb4f3813cfb1c6604a15865beb4b987b languageName: node linkType: hard "object-assign@npm:^4.0.1": version: 4.1.1 resolution: "object-assign@npm:4.1.1" - checksum: 8/fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f + checksum: 10/fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f languageName: node linkType: hard "object-inspect@npm:^1.12.2, object-inspect@npm:^1.9.0": version: 1.12.2 resolution: "object-inspect@npm:1.12.2" - checksum: 8/a534fc1b8534284ed71f25ce3a496013b7ea030f3d1b77118f6b7b1713829262be9e6243acbcb3ef8c626e2b64186112cb7f6db74e37b2789b9c789ca23048b2 + checksum: 10/aa11100d45fa919b36448347d4f7c8a78b0247886881db56a2026b512c4042a9749e64894519b00a4db8c6e2b713a965b5ceaa3b59324aeb3da007c54a33bc58 languageName: node linkType: hard "object-keys@npm:^1.1.1": version: 1.1.1 resolution: "object-keys@npm:1.1.1" - checksum: 8/b363c5e7644b1e1b04aa507e88dcb8e3a2f52b6ffd0ea801e4c7a62d5aa559affe21c55a07fd4b1fd55fc03a33c610d73426664b20032405d7b92a1414c34d6a + checksum: 10/3d81d02674115973df0b7117628ea4110d56042e5326413e4b4313f0bcdf7dd78d4a3acef2c831463fa3796a66762c49daef306f4a0ea1af44877d7086d73bde languageName: node linkType: hard @@ -5012,7 +4984,7 @@ __metadata: define-properties: "npm:^1.1.4" has-symbols: "npm:^1.0.3" object-keys: "npm:^1.1.1" - checksum: 8/76cab513a5999acbfe0ff355f15a6a125e71805fcf53de4e9d4e082e1989bdb81d1e329291e1e4e0ae7719f0e4ef80e88fb2d367ae60500d79d25a6224ac8864 + checksum: 10/fd82d45289df0a952d772817622ecbaeb4ec933d3abb53267aede083ee38f6a395af8fadfbc569ee575115b0b7c9b286e7cfb2b7a2557b1055f7acbce513bc29 languageName: node linkType: hard @@ -5021,7 +4993,7 @@ __metadata: resolution: "on-finished@npm:2.4.1" dependencies: ee-first: "npm:1.1.1" - checksum: 8/d20929a25e7f0bb62f937a425b5edeb4e4cde0540d77ba146ec9357f00b0d497cdb3b9b05b9c8e46222407d1548d08166bff69cc56dfa55ba0e4469228920ff0 + checksum: 10/8e81472c5028125c8c39044ac4ab8ba51a7cdc19a9fbd4710f5d524a74c6d8c9ded4dd0eed83f28d3d33ac1d7a6a439ba948ccb765ac6ce87f30450a26bfe2ea languageName: node linkType: hard @@ -5030,14 +5002,14 @@ __metadata: resolution: "once@npm:1.4.0" dependencies: wrappy: "npm:1" - checksum: 8/cd0a88501333edd640d95f0d2700fbde6bff20b3d4d9bdc521bdd31af0656b5706570d6c6afe532045a20bb8dc0849f8332d6f2a416e0ba6d3d3b98806c7db68 + checksum: 10/cd0a88501333edd640d95f0d2700fbde6bff20b3d4d9bdc521bdd31af0656b5706570d6c6afe532045a20bb8dc0849f8332d6f2a416e0ba6d3d3b98806c7db68 languageName: node linkType: hard "only@npm:~0.0.2": version: 0.0.2 resolution: "only@npm:0.0.2" - checksum: 8/d399710db867a1ef436dd3ce74499c87ece794aa81ab0370b5d153968766ee4aed2f98d3f92fc87c963e45b7a74d400d6f463ef651a5e7cfb861b15e88e9efe6 + checksum: 10/e2ad03e486534dc6bfb983393be83125a4669052b4a19a353eb00475b46971fb238a18223f2b609fe0d1bcb61ff8373964ccac64d05cbf970865299f655ed0ba languageName: node linkType: hard @@ -5050,14 +5022,14 @@ __metadata: postcss: "npm:^8.2.1" peerDependencies: webpack: ^4.0.0 - checksum: 8/84975f52890e98d4610e58b6bd972837c7d11c157d2b31d63f02069b58da42445445225495043c7e2e16a0f90f8dfd12221f20cc7a7917d198e68ce903a5b2a0 + checksum: 10/84975f52890e98d4610e58b6bd972837c7d11c157d2b31d63f02069b58da42445445225495043c7e2e16a0f90f8dfd12221f20cc7a7917d198e68ce903a5b2a0 languageName: node linkType: hard "p-cancelable@npm:^2.0.0": version: 2.1.1 resolution: "p-cancelable@npm:2.1.1" - checksum: 8/3dba12b4fb4a1e3e34524535c7858fc82381bbbd0f247cc32dedc4018592a3950ce66b106d0880b4ec4c2d8d6576f98ca885dc1d7d0f274d1370be20e9523ddf + checksum: 10/7f1b64db17fc54acf359167d62898115dcf2a64bf6b3b038e4faf36fc059e5ed762fb9624df8ed04b25bee8de3ab8d72dea9879a2a960cd12e23c420a4aca6ed languageName: node linkType: hard @@ -5066,7 +5038,7 @@ __metadata: resolution: "p-limit@npm:2.3.0" dependencies: p-try: "npm:^2.0.0" - checksum: 8/84ff17f1a38126c3314e91ecfe56aecbf36430940e2873dadaa773ffe072dc23b7af8e46d4b6485d302a11673fe94c6b67ca2cfbb60c989848b02100d0594ac1 + checksum: 10/84ff17f1a38126c3314e91ecfe56aecbf36430940e2873dadaa773ffe072dc23b7af8e46d4b6485d302a11673fe94c6b67ca2cfbb60c989848b02100d0594ac1 languageName: node linkType: hard @@ -5075,14 +5047,14 @@ __metadata: resolution: "p-locate@npm:4.1.0" dependencies: p-limit: "npm:^2.2.0" - checksum: 8/513bd14a455f5da4ebfcb819ef706c54adb09097703de6aeaa5d26fe5ea16df92b48d1ac45e01e3944ce1e6aa2a66f7f8894742b8c9d6e276e16cd2049a2b870 + checksum: 10/513bd14a455f5da4ebfcb819ef706c54adb09097703de6aeaa5d26fe5ea16df92b48d1ac45e01e3944ce1e6aa2a66f7f8894742b8c9d6e276e16cd2049a2b870 languageName: node linkType: hard "p-map@npm:^2.0.0": version: 2.1.0 resolution: "p-map@npm:2.1.0" - checksum: 8/9e3ad3c9f6d75a5b5661bcad78c91f3a63849189737cd75e4f1225bf9ac205194e5c44aac2ef6f09562b1facdb9bd1425584d7ac375bfaa17b3f1a142dab936d + checksum: 10/9e3ad3c9f6d75a5b5661bcad78c91f3a63849189737cd75e4f1225bf9ac205194e5c44aac2ef6f09562b1facdb9bd1425584d7ac375bfaa17b3f1a142dab936d languageName: node linkType: hard @@ -5091,14 +5063,14 @@ __metadata: resolution: "p-map@npm:4.0.0" dependencies: aggregate-error: "npm:^3.0.0" - checksum: 8/cb0ab21ec0f32ddffd31dfc250e3afa61e103ef43d957cc45497afe37513634589316de4eb88abdfd969fe6410c22c0b93ab24328833b8eb1ccc087fc0442a1c + checksum: 10/7ba4a2b1e24c05e1fc14bbaea0fc6d85cf005ae7e9c9425d4575550f37e2e584b1af97bcde78eacd7559208f20995988d52881334db16cf77bc1bcf68e48ed7c languageName: node linkType: hard "p-try@npm:^2.0.0": version: 2.2.0 resolution: "p-try@npm:2.2.0" - checksum: 8/f8a8e9a7693659383f06aec604ad5ead237c7a261c18048a6e1b5b85a5f8a067e469aa24f5bc009b991ea3b058a87f5065ef4176793a200d4917349881216cae + checksum: 10/f8a8e9a7693659383f06aec604ad5ead237c7a261c18048a6e1b5b85a5f8a067e469aa24f5bc009b991ea3b058a87f5065ef4176793a200d4917349881216cae languageName: node linkType: hard @@ -5108,7 +5080,7 @@ __metadata: dependencies: dot-case: "npm:^3.0.4" tslib: "npm:^2.0.3" - checksum: 8/b34227fd0f794e078776eb3aa6247442056cb47761e9cd2c4c881c86d84c64205f6a56ef0d70b41ee7d77da02c3f4ed2f88e3896a8fefe08bdfb4deca037c687 + checksum: 10/b34227fd0f794e078776eb3aa6247442056cb47761e9cd2c4c881c86d84c64205f6a56ef0d70b41ee7d77da02c3f4ed2f88e3896a8fefe08bdfb4deca037c687 languageName: node linkType: hard @@ -5117,7 +5089,7 @@ __metadata: resolution: "parent-module@npm:1.0.1" dependencies: callsites: "npm:^3.0.0" - checksum: 8/6ba8b255145cae9470cf5551eb74be2d22281587af787a2626683a6c20fbb464978784661478dd2a3f1dad74d1e802d403e1b03c1a31fab310259eec8ac560ff + checksum: 10/6ba8b255145cae9470cf5551eb74be2d22281587af787a2626683a6c20fbb464978784661478dd2a3f1dad74d1e802d403e1b03c1a31fab310259eec8ac560ff languageName: node linkType: hard @@ -5127,7 +5099,7 @@ __metadata: dependencies: error-ex: "npm:^1.3.1" json-parse-better-errors: "npm:^1.0.1" - checksum: 8/0fe227d410a61090c247e34fa210552b834613c006c2c64d9a05cfe9e89cf8b4246d1246b1a99524b53b313e9ac024438d0680f67e33eaed7e6f38db64cfe7b5 + checksum: 10/0fe227d410a61090c247e34fa210552b834613c006c2c64d9a05cfe9e89cf8b4246d1246b1a99524b53b313e9ac024438d0680f67e33eaed7e6f38db64cfe7b5 languageName: node linkType: hard @@ -5139,14 +5111,14 @@ __metadata: error-ex: "npm:^1.3.1" json-parse-even-better-errors: "npm:^2.3.0" lines-and-columns: "npm:^1.1.6" - checksum: 8/62085b17d64da57f40f6afc2ac1f4d95def18c4323577e1eced571db75d9ab59b297d1d10582920f84b15985cbfc6b6d450ccbf317644cfa176f3ed982ad87e2 + checksum: 10/62085b17d64da57f40f6afc2ac1f4d95def18c4323577e1eced571db75d9ab59b297d1d10582920f84b15985cbfc6b6d450ccbf317644cfa176f3ed982ad87e2 languageName: node linkType: hard "parseurl@npm:^1.3.2": version: 1.3.3 resolution: "parseurl@npm:1.3.3" - checksum: 8/407cee8e0a3a4c5cd472559bca8b6a45b82c124e9a4703302326e9ab60fc1081442ada4e02628efef1eb16197ddc7f8822f5a91fd7d7c86b51f530aedb17dfa2 + checksum: 10/407cee8e0a3a4c5cd472559bca8b6a45b82c124e9a4703302326e9ab60fc1081442ada4e02628efef1eb16197ddc7f8822f5a91fd7d7c86b51f530aedb17dfa2 languageName: node linkType: hard @@ -5156,49 +5128,49 @@ __metadata: dependencies: no-case: "npm:^3.0.4" tslib: "npm:^2.0.3" - checksum: 8/ba98bfd595fc91ef3d30f4243b1aee2f6ec41c53b4546bfa3039487c367abaa182471dcfc830a1f9e1a0df00c14a370514fa2b3a1aacc68b15a460c31116873e + checksum: 10/ba98bfd595fc91ef3d30f4243b1aee2f6ec41c53b4546bfa3039487c367abaa182471dcfc830a1f9e1a0df00c14a370514fa2b3a1aacc68b15a460c31116873e languageName: node linkType: hard "path-exists@npm:^4.0.0": version: 4.0.0 resolution: "path-exists@npm:4.0.0" - checksum: 8/505807199dfb7c50737b057dd8d351b82c033029ab94cb10a657609e00c1bc53b951cfdbccab8de04c5584d5eff31128ce6afd3db79281874a5ef2adbba55ed1 + checksum: 10/505807199dfb7c50737b057dd8d351b82c033029ab94cb10a657609e00c1bc53b951cfdbccab8de04c5584d5eff31128ce6afd3db79281874a5ef2adbba55ed1 languageName: node linkType: hard "path-is-absolute@npm:1.0.1, path-is-absolute@npm:^1.0.0": version: 1.0.1 resolution: "path-is-absolute@npm:1.0.1" - checksum: 8/060840f92cf8effa293bcc1bea81281bd7d363731d214cbe5c227df207c34cd727430f70c6037b5159c8a870b9157cba65e775446b0ab06fd5ecc7e54615a3b8 + checksum: 10/060840f92cf8effa293bcc1bea81281bd7d363731d214cbe5c227df207c34cd727430f70c6037b5159c8a870b9157cba65e775446b0ab06fd5ecc7e54615a3b8 languageName: node linkType: hard "path-is-inside@npm:^1.0.2": version: 1.0.2 resolution: "path-is-inside@npm:1.0.2" - checksum: 8/0b5b6c92d3018b82afb1f74fe6de6338c4c654de4a96123cb343f2b747d5606590ac0c890f956ed38220a4ab59baddfd7b713d78a62d240b20b14ab801fa02cb + checksum: 10/0b5b6c92d3018b82afb1f74fe6de6338c4c654de4a96123cb343f2b747d5606590ac0c890f956ed38220a4ab59baddfd7b713d78a62d240b20b14ab801fa02cb languageName: node linkType: hard "path-key@npm:^2.0.1": version: 2.0.1 resolution: "path-key@npm:2.0.1" - checksum: 8/f7ab0ad42fe3fb8c7f11d0c4f849871e28fbd8e1add65c370e422512fc5887097b9cf34d09c1747d45c942a8c1e26468d6356e2df3f740bf177ab8ca7301ebfd + checksum: 10/6e654864e34386a2a8e6bf72cf664dcabb76574dd54013add770b374384d438aca95f4357bb26935b514a4e4c2c9b19e191f2200b282422a76ee038b9258c5e7 languageName: node linkType: hard "path-key@npm:^3.1.0": version: 3.1.1 resolution: "path-key@npm:3.1.1" - checksum: 8/55cd7a9dd4b343412a8386a743f9c746ef196e57c823d90ca3ab917f90ab9f13dd0ded27252ba49dbdfcab2b091d998bc446f6220cd3cea65db407502a740020 + checksum: 10/55cd7a9dd4b343412a8386a743f9c746ef196e57c823d90ca3ab917f90ab9f13dd0ded27252ba49dbdfcab2b091d998bc446f6220cd3cea65db407502a740020 languageName: node linkType: hard "path-parse@npm:^1.0.7": version: 1.0.7 resolution: "path-parse@npm:1.0.7" - checksum: 8/49abf3d81115642938a8700ec580da6e830dde670be21893c62f4e10bd7dd4c3742ddc603fe24f898cba7eb0c6bc1777f8d9ac14185d34540c6d4d80cd9cae8a + checksum: 10/49abf3d81115642938a8700ec580da6e830dde670be21893c62f4e10bd7dd4c3742ddc603fe24f898cba7eb0c6bc1777f8d9ac14185d34540c6d4d80cd9cae8a languageName: node linkType: hard @@ -5214,42 +5186,42 @@ __metadata: resolution: "path-type@npm:3.0.0" dependencies: pify: "npm:^3.0.0" - checksum: 8/735b35e256bad181f38fa021033b1c33cfbe62ead42bb2222b56c210e42938eecb272ae1949f3b6db4ac39597a61b44edd8384623ec4d79bfdc9a9c0f12537a6 + checksum: 10/735b35e256bad181f38fa021033b1c33cfbe62ead42bb2222b56c210e42938eecb272ae1949f3b6db4ac39597a61b44edd8384623ec4d79bfdc9a9c0f12537a6 languageName: node linkType: hard "path-type@npm:^4.0.0": version: 4.0.0 resolution: "path-type@npm:4.0.0" - checksum: 8/5b1e2daa247062061325b8fdbfd1fb56dde0a448fb1455453276ea18c60685bdad23a445dc148cf87bc216be1573357509b7d4060494a6fd768c7efad833ee45 + checksum: 10/5b1e2daa247062061325b8fdbfd1fb56dde0a448fb1455453276ea18c60685bdad23a445dc148cf87bc216be1573357509b7d4060494a6fd768c7efad833ee45 languageName: node linkType: hard "path-type@npm:^5.0.0": version: 5.0.0 resolution: "path-type@npm:5.0.0" - checksum: 8/15ec24050e8932c2c98d085b72cfa0d6b4eeb4cbde151a0a05726d8afae85784fc5544f733d8dfc68536587d5143d29c0bd793623fad03d7e61cc00067291cd5 + checksum: 10/15ec24050e8932c2c98d085b72cfa0d6b4eeb4cbde151a0a05726d8afae85784fc5544f733d8dfc68536587d5143d29c0bd793623fad03d7e61cc00067291cd5 languageName: node linkType: hard "pend@npm:~1.2.0": version: 1.2.0 resolution: "pend@npm:1.2.0" - checksum: 8/6c72f5243303d9c60bd98e6446ba7d30ae29e3d56fdb6fae8767e8ba6386f33ee284c97efe3230a0d0217e2b1723b8ab490b1bbf34fcbb2180dbc8a9de47850d + checksum: 10/6c72f5243303d9c60bd98e6446ba7d30ae29e3d56fdb6fae8767e8ba6386f33ee284c97efe3230a0d0217e2b1723b8ab490b1bbf34fcbb2180dbc8a9de47850d languageName: node linkType: hard "picocolors@npm:^1.0.0": version: 1.0.0 resolution: "picocolors@npm:1.0.0" - checksum: 8/a2e8092dd86c8396bdba9f2b5481032848525b3dc295ce9b57896f931e63fc16f79805144321f72976383fc249584672a75cc18d6777c6b757603f372f745981 + checksum: 10/a2e8092dd86c8396bdba9f2b5481032848525b3dc295ce9b57896f931e63fc16f79805144321f72976383fc249584672a75cc18d6777c6b757603f372f745981 languageName: node linkType: hard "picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.3.1": version: 2.3.1 resolution: "picomatch@npm:2.3.1" - checksum: 8/050c865ce81119c4822c45d3c84f1ced46f93a0126febae20737bd05ca20589c564d6e9226977df859ed5e03dc73f02584a2b0faad36e896936238238b0446cf + checksum: 10/60c2595003b05e4535394d1da94850f5372c9427ca4413b71210f437f7b2ca091dbd611c45e8b37d10036fa8eade25c1b8951654f9d3973bfa66a2ff4d3b08bc languageName: node linkType: hard @@ -5258,28 +5230,28 @@ __metadata: resolution: "pidtree@npm:0.3.1" bin: pidtree: bin/pidtree.js - checksum: 8/eb49025099f1af89a4696f7673351421f13420f3397b963c901fe23a1c9c2ff50f4750321970d4472c0ffbb065e4a6c3c27f75e226cc62284b19e21d32ce7012 + checksum: 10/eb85b841cd168151bfadb984f9514d67a884d6962d4a2d250d4e8acf85cf031d7dab080f7272fb2735f9033364e5058c73eeebbee3cf6fd829169a75d19f189a languageName: node linkType: hard "pify@npm:^2.0.0": version: 2.3.0 resolution: "pify@npm:2.3.0" - checksum: 8/9503aaeaf4577acc58642ad1d25c45c6d90288596238fb68f82811c08104c800e5a7870398e9f015d82b44ecbcbef3dc3d4251a1cbb582f6e5959fe09884b2ba + checksum: 10/9503aaeaf4577acc58642ad1d25c45c6d90288596238fb68f82811c08104c800e5a7870398e9f015d82b44ecbcbef3dc3d4251a1cbb582f6e5959fe09884b2ba languageName: node linkType: hard "pify@npm:^3.0.0": version: 3.0.0 resolution: "pify@npm:3.0.0" - checksum: 8/6cdcbc3567d5c412450c53261a3f10991665d660961e06605decf4544a61a97a54fefe70a68d5c37080ff9d6f4cf51444c90198d1ba9f9309a6c0d6e9f5c4fde + checksum: 10/668c1dc8d9fc1b34b9ce3b16ba59deb39d4dc743527bf2ed908d2b914cb8ba40aa5ba6960b27c417c241531c5aafd0598feeac2d50cb15278cf9863fa6b02a77 languageName: node linkType: hard "pify@npm:^4.0.1": version: 4.0.1 resolution: "pify@npm:4.0.1" - checksum: 8/9c4e34278cb09987685fa5ef81499c82546c033713518f6441778fbec623fc708777fe8ac633097c72d88470d5963094076c7305cafc7ad340aae27cfacd856b + checksum: 10/8b97cbf9dc6d4c1320cc238a2db0fc67547f9dc77011729ff353faf34f1936ea1a4d7f3c63b2f4980b253be77bcc72ea1e9e76ee3fd53cce2aafb6a8854d07ec languageName: node linkType: hard @@ -5288,14 +5260,14 @@ __metadata: resolution: "pinkie-promise@npm:2.0.1" dependencies: pinkie: "npm:^2.0.0" - checksum: 8/b53a4a2e73bf56b6f421eef711e7bdcb693d6abb474d57c5c413b809f654ba5ee750c6a96dd7225052d4b96c4d053cdcb34b708a86fceed4663303abee52fcca + checksum: 10/b53a4a2e73bf56b6f421eef711e7bdcb693d6abb474d57c5c413b809f654ba5ee750c6a96dd7225052d4b96c4d053cdcb34b708a86fceed4663303abee52fcca languageName: node linkType: hard "pinkie@npm:^2.0.0": version: 2.0.4 resolution: "pinkie@npm:2.0.4" - checksum: 8/b12b10afea1177595aab036fc220785488f67b4b0fc49e7a27979472592e971614fa1c728e63ad3e7eb748b4ec3c3dbd780819331dad6f7d635c77c10537b9db + checksum: 10/11d207257a044d1047c3755374d36d84dda883a44d030fe98216bf0ea97da05a5c9d64e82495387edeb9ee4f52c455bca97cdb97629932be65e6f54b29f5aec8 languageName: node linkType: hard @@ -5304,7 +5276,7 @@ __metadata: resolution: "pkg-dir@npm:4.2.0" dependencies: find-up: "npm:^4.0.0" - checksum: 8/9863e3f35132bf99ae1636d31ff1e1e3501251d480336edb1c211133c8d58906bed80f154a1d723652df1fda91e01c7442c2eeaf9dc83157c7ae89087e43c8d6 + checksum: 10/9863e3f35132bf99ae1636d31ff1e1e3501251d480336edb1c211133c8d58906bed80f154a1d723652df1fda91e01c7442c2eeaf9dc83157c7ae89087e43c8d6 languageName: node linkType: hard @@ -5314,7 +5286,7 @@ __metadata: dependencies: base64-js: "npm:^1.5.1" xmlbuilder: "npm:^15.1.1" - checksum: 8/e21390fab8a3c388f8f51b76c0aa187242a40537119ce865d8637630e7d7df79b21f841ec6a4668e7c68d409a6f584d696619099a6125d28011561639c0823b8 + checksum: 10/10218249de9904eeb570b76d864bd8fe5e2faacba098cb5ce1cf9932b9df44074d08da2178d5ed7c22c28448e25f687c8c6db46a3f8f243d88b973f4f9f123f3 languageName: node linkType: hard @@ -5326,7 +5298,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.2 - checksum: 8/314b4cebb0c4ed0cf8356b4bce71eca78f5a7842e6a3942a3bba49db168d5296b2bd93c3f735ae1c616f2651d94719ade33becc03c73d2d79c7394fb7f73eabb + checksum: 10/f34d0cbc5d2b02071cf4de9bacbb93681c22b29048726b500b5f5327e37b590d2552ba4d8ed179e2378037fd09cc6bf5ee3e25cbd8a803c57205795fa79479a8 languageName: node linkType: hard @@ -5340,7 +5312,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 8/e5778baab30877cd1f51e7dc9d2242a162aeca6360a52956acd7f668c5bc235c2ccb7e4df0370a804d65ebe00c5642366f061db53aa823f9ed99972cebd16024 + checksum: 10/e5778baab30877cd1f51e7dc9d2242a162aeca6360a52956acd7f668c5bc235c2ccb7e4df0370a804d65ebe00c5642366f061db53aa823f9ed99972cebd16024 languageName: node linkType: hard @@ -5352,7 +5324,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 8/df48cdaffabf9737f9cfdc58a3dc2841cf282506a7a944f6c70236cff295d3a69f63de6e0935eeb8a9d3f504324e5b4e240abc29e21df9e35a02585d3060aeb5 + checksum: 10/dacb41296a4d730c9e84c1b6ba8a13f6515b65811689b8b62ad6c7174bb462b5c0bfa21803cc06d1d3af16dbc8f4be1e225970844297fab0bedfe2fef8dc603e languageName: node linkType: hard @@ -5361,7 +5333,7 @@ __metadata: resolution: "postcss-discard-comments@npm:5.1.2" peerDependencies: postcss: ^8.2.15 - checksum: 8/abfd064ebc27aeaf5037643dd51ffaff74d1fa4db56b0523d073ace4248cbb64ffd9787bd6924b0983a9d0bd0e9bf9f10d73b120e50391dc236e0d26c812fa2a + checksum: 10/abfd064ebc27aeaf5037643dd51ffaff74d1fa4db56b0523d073ace4248cbb64ffd9787bd6924b0983a9d0bd0e9bf9f10d73b120e50391dc236e0d26c812fa2a languageName: node linkType: hard @@ -5370,7 +5342,7 @@ __metadata: resolution: "postcss-discard-duplicates@npm:5.1.0" peerDependencies: postcss: ^8.2.15 - checksum: 8/88d6964201b1f4ed6bf7a32cefe68e86258bb6e42316ca01d9b32bdb18e7887d02594f89f4a2711d01b51ea6e3fcca8c54be18a59770fe5f4521c61d3eb6ca35 + checksum: 10/88d6964201b1f4ed6bf7a32cefe68e86258bb6e42316ca01d9b32bdb18e7887d02594f89f4a2711d01b51ea6e3fcca8c54be18a59770fe5f4521c61d3eb6ca35 languageName: node linkType: hard @@ -5379,7 +5351,7 @@ __metadata: resolution: "postcss-discard-empty@npm:5.1.1" peerDependencies: postcss: ^8.2.15 - checksum: 8/970adb12fae5c214c0768236ad9a821552626e77dedbf24a8213d19cc2c4a531a757cd3b8cdd3fc22fb1742471b8692a1db5efe436a71236dec12b1318ee8ff4 + checksum: 10/970adb12fae5c214c0768236ad9a821552626e77dedbf24a8213d19cc2c4a531a757cd3b8cdd3fc22fb1742471b8692a1db5efe436a71236dec12b1318ee8ff4 languageName: node linkType: hard @@ -5388,7 +5360,7 @@ __metadata: resolution: "postcss-discard-overridden@npm:5.1.0" peerDependencies: postcss: ^8.2.15 - checksum: 8/d64d4a545aa2c81b22542895cfcddc787d24119f294d35d29b0599a1c818b3cc51f4ee80b80f5a0a09db282453dd5ac49f104c2117cc09112d0ac9b40b499a41 + checksum: 10/d64d4a545aa2c81b22542895cfcddc787d24119f294d35d29b0599a1c818b3cc51f4ee80b80f5a0a09db282453dd5ac49f104c2117cc09112d0ac9b40b499a41 languageName: node linkType: hard @@ -5400,7 +5372,7 @@ __metadata: stylehacks: "npm:^5.1.1" peerDependencies: postcss: ^8.2.15 - checksum: 8/81c3fc809f001b9b71a940148e242bdd6e2d77713d1bfffa15eb25c1f06f6648d5e57cb21645746d020a2a55ff31e1740d2b27900442913a9d53d8a01fb37e1b + checksum: 10/9002696bb245634c0542af9356b44082a4c1453261a1daac6ea2f85055a5d6e14ac3ae2ba603f5eae767ebfe0e1ef50c40447b099520b8f5fa14b557da8074ad languageName: node linkType: hard @@ -5414,7 +5386,7 @@ __metadata: postcss-selector-parser: "npm:^6.0.5" peerDependencies: postcss: ^8.2.15 - checksum: 8/8ab6a569babe6cb412d6612adee74f053cea7edb91fa013398515ab36754b1fec830d68782ed8cdfb44cffdc6b78c79eab157bff650f428aa4460d3f3857447e + checksum: 10/659c3eaff9d573f07c227a7e4811159898f49a89b02bbd3a65a0ed7aaa434264443ab539bcbc273bf08986e6a185bd62af0847c9836f9e2901c5f07937c14f3f languageName: node linkType: hard @@ -5425,7 +5397,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 8/35e858fa41efa05acdeb28f1c76579c409fdc7eabb1744c3bd76e895bb9fea341a016746362a67609688ab2471f587202b9a3e14ea28ad677754d663a2777ece + checksum: 10/27e7023f06149e14db6cd30b75d233c92d34609233775d8542fe1dc70fe53170a13188ba80847d6d4f6e272beb98b9888e0f73097757a95a968a0d526e3dd495 languageName: node linkType: hard @@ -5438,7 +5410,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 8/27354072a07c5e6dab36731103b94ca2354d4ed3c5bc6aacfdf2ede5a55fa324679d8fee5450800bc50888dbb5e9ed67569c0012040c2be128143d0cebb36d67 + checksum: 10/8afc4c2240c0ddeb37b18f34e6d47d374c500376342c509b0fe577c56f9e94315a42db99a9573159efaf8853c7a1b9fee83b2f6f890a49273f3556b1ba9dbdde languageName: node linkType: hard @@ -5451,7 +5423,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 8/bd63e2cc89edcf357bb5c2a16035f6d02ef676b8cede4213b2bddd42626b3d428403849188f95576fc9f03e43ebd73a29bf61d33a581be9a510b13b7f7f100d5 + checksum: 10/bd63e2cc89edcf357bb5c2a16035f6d02ef676b8cede4213b2bddd42626b3d428403849188f95576fc9f03e43ebd73a29bf61d33a581be9a510b13b7f7f100d5 languageName: node linkType: hard @@ -5462,7 +5434,7 @@ __metadata: postcss-selector-parser: "npm:^6.0.5" peerDependencies: postcss: ^8.2.15 - checksum: 8/6fdbc84f99a60d56b43df8930707da397775e4c36062a106aea2fd2ac81b5e24e584a1892f4baa4469fa495cb87d1422560eaa8f6c9d500f9f0b691a5f95bab5 + checksum: 10/59eca33eb9ce45b688cca33cf7bb96b07c874f6d2b90f4a3363bc95067c514825c61dd8775c9aa73a161c922333474e6f249cc58677cd77b2be8cc04019e0810 languageName: node linkType: hard @@ -5471,7 +5443,7 @@ __metadata: resolution: "postcss-modules-extract-imports@npm:3.0.0" peerDependencies: postcss: ^8.1.0 - checksum: 8/4b65f2f1382d89c4bc3c0a1bdc5942f52f3cb19c110c57bd591ffab3a5fee03fcf831604168205b0c1b631a3dce2255c70b61aaae3ef39d69cd7eb450c2552d2 + checksum: 10/8d68bb735cef4d43f9cdc1053581e6c1c864860b77fcfb670372b39c5feeee018dc5ddb2be4b07fef9bcd601edded4262418bbaeaf1bd4af744446300cebe358 languageName: node linkType: hard @@ -5484,7 +5456,7 @@ __metadata: postcss-value-parser: "npm:^4.1.0" peerDependencies: postcss: ^8.1.0 - checksum: 8/578b955b0773147890caa88c30b10dfc849c5b1412a47ad51751890dba16fca9528c3ab00a19b186a8c2c150c2d08e2ce64d3d907800afee1f37c6d38252e365 + checksum: 10/45790af417b2ed6ed26e9922724cf3502569995833a2489abcfc2bb44166096762825cc02f6132cc6a2fb235165e76b859f9d90e8a057bc188a1b2c17f2d7af0 languageName: node linkType: hard @@ -5495,7 +5467,7 @@ __metadata: postcss-selector-parser: "npm:^6.0.4" peerDependencies: postcss: ^8.1.0 - checksum: 8/9e9d23abb0babc7fa243be65704d72a5a9ceb2bded4dbaef96a88210d468b03c8c3158c197f4e22300c851f08c6fdddd6ebe65f44e4c34448b45b8a2e063a16d + checksum: 10/ca035969eba62cf126864b10d7722e49c0d4f050cbd4618b6e9714d81b879cf4c53a5682501e00f9622e8f4ea6d7d7d53af295ae935fa833e0cc0bda416a287b languageName: node linkType: hard @@ -5506,7 +5478,7 @@ __metadata: icss-utils: "npm:^5.0.0" peerDependencies: postcss: ^8.1.0 - checksum: 8/f7f2cdf14a575b60e919ad5ea52fed48da46fe80db2733318d71d523fc87db66c835814940d7d05b5746b0426e44661c707f09bdb83592c16aea06e859409db6 + checksum: 10/18021961a494e69e65da9e42b4436144c9ecee65845c9bfeff2b7a26ea73d60762f69e288be8bb645447965b8fd6b26a264771136810dc0172bd31b940aee4f2 languageName: node linkType: hard @@ -5515,7 +5487,7 @@ __metadata: resolution: "postcss-normalize-charset@npm:5.1.0" peerDependencies: postcss: ^8.2.15 - checksum: 8/e79d92971fc05b8b3c9b72f3535a574e077d13c69bef68156a0965f397fdf157de670da72b797f57b0e3bac8f38155b5dd1735ecab143b9cc4032d72138193b4 + checksum: 10/e79d92971fc05b8b3c9b72f3535a574e077d13c69bef68156a0965f397fdf157de670da72b797f57b0e3bac8f38155b5dd1735ecab143b9cc4032d72138193b4 languageName: node linkType: hard @@ -5526,7 +5498,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 8/b6eb7b9b02c3bdd62bbc54e01e2b59733d73a1c156905d238e178762962efe0c6f5104544da39f32cade8a4fb40f10ff54b63a8ebfbdff51e8780afb9fbdcf86 + checksum: 10/b6eb7b9b02c3bdd62bbc54e01e2b59733d73a1c156905d238e178762962efe0c6f5104544da39f32cade8a4fb40f10ff54b63a8ebfbdff51e8780afb9fbdcf86 languageName: node linkType: hard @@ -5537,7 +5509,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 8/d9afc233729c496463c7b1cdd06732469f401deb387484c3a2422125b46ec10b4af794c101f8c023af56f01970b72b535e88373b9058ecccbbf88db81662b3c4 + checksum: 10/d9afc233729c496463c7b1cdd06732469f401deb387484c3a2422125b46ec10b4af794c101f8c023af56f01970b72b535e88373b9058ecccbbf88db81662b3c4 languageName: node linkType: hard @@ -5548,7 +5520,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 8/2c6ad2b0ae10a1fda156b948c34f78c8f1e185513593de4d7e2480973586675520edfec427645fa168c337b0a6b3ceca26f92b96149741ca98a9806dad30d534 + checksum: 10/2c6ad2b0ae10a1fda156b948c34f78c8f1e185513593de4d7e2480973586675520edfec427645fa168c337b0a6b3ceca26f92b96149741ca98a9806dad30d534 languageName: node linkType: hard @@ -5559,7 +5531,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 8/6e549c6e5b2831e34c7bdd46d8419e2278f6af1d5eef6d26884a37c162844e60339340c57e5e06058cdbe32f27fc6258eef233e811ed2f71168ef2229c236ada + checksum: 10/227ddf520266d2f9847e799b9977aaa444636ba94e473137739539ef02e7cb6302826585ffda9897cfe2a9953e65632a08279cb1f572ca95e53d8b3dd6ba737f languageName: node linkType: hard @@ -5570,7 +5542,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 8/da550f50e90b0b23e17b67449a7d1efd1aa68288e66d4aa7614ca6f5cc012896be1972b7168eee673d27da36504faccf7b9f835c0f7e81243f966a42c8c030aa + checksum: 10/da550f50e90b0b23e17b67449a7d1efd1aa68288e66d4aa7614ca6f5cc012896be1972b7168eee673d27da36504faccf7b9f835c0f7e81243f966a42c8c030aa languageName: node linkType: hard @@ -5582,7 +5554,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 8/4c24d26cc9f4b19a9397db4e71dd600dab690f1de8e14a3809e2aa1452dbc3791c208c38a6316bbc142f29e934fdf02858e68c94038c06174d78a4937e0f273c + checksum: 10/4c24d26cc9f4b19a9397db4e71dd600dab690f1de8e14a3809e2aa1452dbc3791c208c38a6316bbc142f29e934fdf02858e68c94038c06174d78a4937e0f273c languageName: node linkType: hard @@ -5594,7 +5566,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 8/3bd4b3246d6600230bc827d1760b24cb3101827ec97570e3016cbe04dc0dd28f4dbe763245d1b9d476e182c843008fbea80823061f1d2219b96f0d5c724a24c0 + checksum: 10/3bd4b3246d6600230bc827d1760b24cb3101827ec97570e3016cbe04dc0dd28f4dbe763245d1b9d476e182c843008fbea80823061f1d2219b96f0d5c724a24c0 languageName: node linkType: hard @@ -5605,7 +5577,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 8/12d8fb6d1c1cba208cc08c1830959b7d7ad447c3f5581873f7e185f99a9a4230c43d3af21ca12c818e4690a5085a95b01635b762ad4a7bef69d642609b4c0e19 + checksum: 10/12d8fb6d1c1cba208cc08c1830959b7d7ad447c3f5581873f7e185f99a9a4230c43d3af21ca12c818e4690a5085a95b01635b762ad4a7bef69d642609b4c0e19 languageName: node linkType: hard @@ -5617,7 +5589,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 8/6f3ca85b6ceffc68aadaf319d9ee4c5ac16d93195bf8cba2d1559b631555ad61941461cda6d3909faab86e52389846b2b36345cff8f0c3f4eb345b1b8efadcf9 + checksum: 10/53dd26f480a18ffb0c008ae956d8a7e11e43c37629d0fb17a7716ff3b0cd8585f97e80deac12e7f3fe129681a980d83d356217b0b8fffb70ff83859993d6d82a languageName: node linkType: hard @@ -5629,7 +5601,7 @@ __metadata: caniuse-api: "npm:^3.0.0" peerDependencies: postcss: ^8.2.15 - checksum: 8/55db697f85231a81f1969d54c894e4773912d9ddb914f9b03d2e73abc4030f2e3bef4d7465756d0c1acfcc2c2d69974bfb50a972ab27546a7d68b5a4fc90282b + checksum: 10/6234a85dab32cc3ece384f62c761c5c0dd646e2c6a419d93ee7cdb78b657e43381df39bd4620dfbdc2157e44b51305e4ebe852259d12c8b435f1aa534548db3e languageName: node linkType: hard @@ -5640,7 +5612,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 8/0c6af2cba20e3ff63eb9ad045e634ddfb9c3e5c0e614c020db2a02f3aa20632318c4ede9e0c995f9225d9a101e673de91c0a6e10bb2fa5da6d6c75d15a55882f + checksum: 10/49fffd474070a154764934b42d7d875ceadf54219f8346b4cadf931728ffba6a2dea7532ced3d267fd42d81c102211a5bf957af3b63b1ac428d454fa6ec2dbf4 languageName: node linkType: hard @@ -5650,7 +5622,7 @@ __metadata: dependencies: cssesc: "npm:^3.0.0" util-deprecate: "npm:^1.0.2" - checksum: 8/0b01aa9c2d2c8dbeb51e9b204796b678284be9823abc8d6d40a8b16d4149514e922c264a8ed4deb4d6dbced564b9be390f5942c058582d8656351516d6c49cde + checksum: 10/14d2c77e533a7b0688f35c909c07f74a9f3cc8d7aea19fd4042093c2df96d6d1ca0d41fcf0ecea28e8560e09913e8a58e5d95a6504cea31c71e23acb80927bab languageName: node linkType: hard @@ -5660,7 +5632,7 @@ __metadata: dependencies: cssesc: "npm:^3.0.0" util-deprecate: "npm:^1.0.2" - checksum: 8/57decb94152111004f15e27b9c61131eb50ee10a3288e7fcf424cebbb4aba82c2817517ae718f8b5d704ee9e02a638d4a2acff8f47685c295a33ecee4fd31055 + checksum: 10/cea591e1d9bce60eea724428863187228e27ddaebd98e5ecb4ee6d4c9a4b68e8157fd44c916b3fef1691d19ad16aa416bb7279b5eab260c32340ae630a34e200 languageName: node linkType: hard @@ -5672,7 +5644,7 @@ __metadata: svgo: "npm:^2.7.0" peerDependencies: postcss: ^8.2.15 - checksum: 8/d86eb5213d9f700cf5efe3073799b485fb7cacae0c731db3d7749c9c2b1c9bc85e95e0baeca439d699ff32ea24815fc916c4071b08f67ed8219df229ce1129bd + checksum: 10/d86eb5213d9f700cf5efe3073799b485fb7cacae0c731db3d7749c9c2b1c9bc85e95e0baeca439d699ff32ea24815fc916c4071b08f67ed8219df229ce1129bd languageName: node linkType: hard @@ -5683,14 +5655,14 @@ __metadata: postcss-selector-parser: "npm:^6.0.5" peerDependencies: postcss: ^8.2.15 - checksum: 8/637e7b786e8558265775c30400c54b6b3b24d4748923f4a39f16a65fd0e394f564ccc9f0a1d3c0e770618a7637a7502ea1d0d79f731d429cb202255253c23278 + checksum: 10/637e7b786e8558265775c30400c54b6b3b24d4748923f4a39f16a65fd0e394f564ccc9f0a1d3c0e770618a7637a7502ea1d0d79f731d429cb202255253c23278 languageName: node linkType: hard "postcss-value-parser@npm:^4.1.0, postcss-value-parser@npm:^4.2.0": version: 4.2.0 resolution: "postcss-value-parser@npm:4.2.0" - checksum: 8/819ffab0c9d51cf0acbabf8996dffbfafbafa57afc0e4c98db88b67f2094cb44488758f06e5da95d7036f19556a4a732525e84289a425f4f6fd8e412a9d7442f + checksum: 10/e4e4486f33b3163a606a6ed94f9c196ab49a37a7a7163abfcd469e5f113210120d70b8dd5e33d64636f41ad52316a3725655421eb9a1094f1bcab1db2f555c62 languageName: node linkType: hard @@ -5701,7 +5673,7 @@ __metadata: nanoid: "npm:^3.3.7" picocolors: "npm:^1.0.0" source-map-js: "npm:^1.0.2" - checksum: 8/6f98b2af4b76632a3de20c4f47bf0e984a1ce1a531cf11adcb0b1d63a6cbda0aae4165e578b66c32ca4879038e3eaad386a6be725a8fb4429c78e3c1ab858fe9 + checksum: 10/e22a4594c255f26117f38419fb494d7ecab0f596cd409f7aadc8a6173abf180ed7ea970cd13fd366ab12b5840be901d2a09b25197700c2ebcb5a8077326bf519 languageName: node linkType: hard @@ -5711,21 +5683,21 @@ __metadata: dependencies: lodash: "npm:^4.17.20" renderkid: "npm:^3.0.0" - checksum: 8/a5b9137365690104ded6947dca2e33360bf55e62a4acd91b1b0d7baa3970e43754c628cc9e16eafbdd4e8f8bcb260a5865475d4fc17c3106ff2d61db4e72cdf3 + checksum: 10/0212ad8742f8bb6f412f95b07d7f6874c55514ac4384f4f7de0defe77e767cca99f667c2316529f62a041fa654194a99c1ee7e321e1b7f794b5cc700777634d6 languageName: node linkType: hard "progress@npm:^2.0.3": version: 2.0.3 resolution: "progress@npm:2.0.3" - checksum: 8/f67403fe7b34912148d9252cb7481266a354bd99ce82c835f79070643bb3c6583d10dbcfda4d41e04bbc1d8437e9af0fb1e1f2135727878f5308682a579429b7 + checksum: 10/e6f0bcb71f716eee9dfac0fe8a2606e3704d6a64dd93baaf49fbadbc8499989a610fe14cf1bc6f61b6d6653c49408d94f4a94e124538084efd8e4cf525e0293d languageName: node linkType: hard "promise-inflight@npm:^1.0.1": version: 1.0.1 resolution: "promise-inflight@npm:1.0.1" - checksum: 8/22749483091d2c594261517f4f80e05226d4d5ecc1fc917e1886929da56e22b5718b7f2a75f3807e7a7d471bc3be2907fe92e6e8f373ddf5c64bae35b5af3981 + checksum: 10/1560d413ea20c5a74f3631d39ba8cbd1972b9228072a755d01e1f5ca5110382d9af76a1582d889445adc6e75bb5ac4886b56dc4b6eae51b30145d7bb1ac7505b languageName: node linkType: hard @@ -5735,21 +5707,21 @@ __metadata: dependencies: err-code: "npm:^2.0.2" retry: "npm:^0.12.0" - checksum: 8/f96a3f6d90b92b568a26f71e966cbbc0f63ab85ea6ff6c81284dc869b41510e6cdef99b6b65f9030f0db422bf7c96652a3fff9f2e8fb4a0f069d8f4430359429 + checksum: 10/96e1a82453c6c96eef53a37a1d6134c9f2482f94068f98a59145d0986ca4e497bf110a410adf73857e588165eab3899f0ebcf7b3890c1b3ce802abc0d65967d4 languageName: node linkType: hard "protochain@npm:^1.0.5": version: 1.0.5 resolution: "protochain@npm:1.0.5" - checksum: 8/81f417e4f59b08648d2a32ef7f6e8cb7c336d8646fbb4285dba33bab4ece0863dd91c9bcf112b9f73c18e4e5c57ed032c8562d51948903ca521a2ec828caa9d7 + checksum: 10/dc2c91e7d8d7f0bdcedc19185bbdd888e328395a678a16b2b4fe81c77320507c2cf6d8c160204802c206f404fd71490e42b5b10931bf39513ca3f10207c70823 languageName: node linkType: hard "prr@npm:~1.0.1": version: 1.0.1 resolution: "prr@npm:1.0.1" - checksum: 8/3bca2db0479fd38f8c4c9439139b0c42dcaadcc2fbb7bb8e0e6afaa1383457f1d19aea9e5f961d5b080f1cfc05bfa1fe9e45c97a1d3fd6d421950a73d3108381 + checksum: 10/3bca2db0479fd38f8c4c9439139b0c42dcaadcc2fbb7bb8e0e6afaa1383457f1d19aea9e5f961d5b080f1cfc05bfa1fe9e45c97a1d3fd6d421950a73d3108381 languageName: node linkType: hard @@ -5759,14 +5731,14 @@ __metadata: dependencies: end-of-stream: "npm:^1.1.0" once: "npm:^1.3.1" - checksum: 8/e42e9229fba14732593a718b04cb5e1cfef8254544870997e0ecd9732b189a48e1256e4e5478148ecb47c8511dca2b09eae56b4d0aad8009e6fac8072923cfc9 + checksum: 10/e42e9229fba14732593a718b04cb5e1cfef8254544870997e0ecd9732b189a48e1256e4e5478148ecb47c8511dca2b09eae56b4d0aad8009e6fac8072923cfc9 languageName: node linkType: hard "punycode@npm:^2.1.0": version: 2.1.1 resolution: "punycode@npm:2.1.1" - checksum: 8/823bf443c6dd14f669984dea25757b37993f67e8d94698996064035edd43bed8a5a17a9f12e439c2b35df1078c6bec05a6c86e336209eb1061e8025c481168e8 + checksum: 10/939daa010c2cacebdb060c40ecb52fef0a739324a66f7fffe0f94353a1ee83e3b455e9032054c4a0c4977b0a28e27086f2171c392832b59a01bd948fd8e20914 languageName: node linkType: hard @@ -5775,21 +5747,21 @@ __metadata: resolution: "qs@npm:6.11.0" dependencies: side-channel: "npm:^1.0.4" - checksum: 8/6e1f29dd5385f7488ec74ac7b6c92f4d09a90408882d0c208414a34dd33badc1a621019d4c799a3df15ab9b1d0292f97c1dd71dc7c045e69f81a8064e5af7297 + checksum: 10/5a3bfea3e2f359ede1bfa5d2f0dbe54001aa55e40e27dc3e60fab814362d83a9b30758db057c2011b6f53a2d4e4e5150194b5bac45372652aecb3e3c0d4b256e languageName: node linkType: hard "queue-microtask@npm:^1.2.2": version: 1.2.3 resolution: "queue-microtask@npm:1.2.3" - checksum: 8/b676f8c040cdc5b12723ad2f91414d267605b26419d5c821ff03befa817ddd10e238d22b25d604920340fd73efd8ba795465a0377c4adf45a4a41e4234e42dc4 + checksum: 10/72900df0616e473e824202113c3df6abae59150dfb73ed13273503127235320e9c8ca4aaaaccfd58cf417c6ca92a6e68ee9a5c3182886ae949a768639b388a7b languageName: node linkType: hard "quick-lru@npm:^5.1.1": version: 5.1.1 resolution: "quick-lru@npm:5.1.1" - checksum: 8/a516faa25574be7947969883e6068dbe4aa19e8ef8e8e0fd96cddd6d36485e9106d85c0041a27153286b0770b381328f4072aa40d3b18a19f5f7d2b78b94b5ed + checksum: 10/a516faa25574be7947969883e6068dbe4aa19e8ef8e8e0fd96cddd6d36485e9106d85c0041a27153286b0770b381328f4072aa40d3b18a19f5f7d2b78b94b5ed languageName: node linkType: hard @@ -5798,7 +5770,7 @@ __metadata: resolution: "randombytes@npm:2.1.0" dependencies: safe-buffer: "npm:^5.1.0" - checksum: 8/d779499376bd4cbb435ef3ab9a957006c8682f343f14089ed5f27764e4645114196e75b7f6abf1cbd84fd247c0cb0651698444df8c9bf30e62120fbbc52269d6 + checksum: 10/4efd1ad3d88db77c2d16588dc54c2b52fd2461e70fe5724611f38d283857094fe09040fa2c9776366803c3152cf133171b452ef717592b65631ce5dc3a2bdafc languageName: node linkType: hard @@ -5810,7 +5782,7 @@ __metadata: http-errors: "npm:2.0.0" iconv-lite: "npm:0.4.24" unpipe: "npm:1.0.0" - checksum: 8/5362adff1575d691bb3f75998803a0ffed8c64eabeaa06e54b4ada25a0cd1b2ae7f4f5ec46565d1bec337e08b5ac90c76eaa0758de6f72a633f025d754dec29e + checksum: 10/280bedc12db3490ecd06f740bdcf66093a07535374b51331242382c0e130bb273ebb611b7bc4cba1b4b4e016cc7b1f4b05a6df885a6af39c2bc3b94c02291c84 languageName: node linkType: hard @@ -5822,7 +5794,7 @@ __metadata: scheduler: "npm:^0.23.0" peerDependencies: react: ^18.2.0 - checksum: 8/7d323310bea3a91be2965f9468d552f201b1c27891e45ddc2d6b8f717680c95a75ae0bc1e3f5cf41472446a2589a75aed4483aee8169287909fcd59ad149e8cc + checksum: 10/ca5e7762ec8c17a472a3605b6f111895c9f87ac7d43a610ab7024f68cd833d08eda0625ce02ec7178cc1f3c957cf0b9273cdc17aa2cd02da87544331c43b1d21 languageName: node linkType: hard @@ -5835,7 +5807,7 @@ __metadata: js-yaml: "npm:^4.1.0" json5: "npm:^2.2.0" lazy-val: "npm:^1.0.4" - checksum: 8/51e30db82244b8ceea19143207a52c5210fa17f5282ec43e9485cf7da87ac4ee3a0fb961cccc5c7af319b06d004baa0154349e09ca8ca7235ae7e5ac7c14c3f3 + checksum: 10/2642b0e959d4e866541fbe0cac27c4eb4a1dbead4847e3ccc934214e64f93c3c5248d8688dcbce6d96e7293f967493152e26f4602b8de6c6611780d2ee1ba1d2 languageName: node linkType: hard @@ -5846,7 +5818,7 @@ __metadata: load-json-file: "npm:^4.0.0" normalize-package-data: "npm:^2.3.2" path-type: "npm:^3.0.0" - checksum: 8/398903ebae6c7e9965419a1062924436cc0b6f516c42c4679a90290d2f87448ed8f977e7aa2dbba4aa1ac09248628c43e493ac25b2bc76640e946035200e34c6 + checksum: 10/398903ebae6c7e9965419a1062924436cc0b6f516c42c4679a90290d2f87448ed8f977e7aa2dbba4aa1ac09248628c43e493ac25b2bc76640e946035200e34c6 languageName: node linkType: hard @@ -5857,7 +5829,7 @@ __metadata: inherits: "npm:^2.0.3" string_decoder: "npm:^1.1.1" util-deprecate: "npm:^1.0.1" - checksum: 8/d4ea81502d3799439bb955a3a5d1d808592cf3133350ed352aeaa499647858b27b1c4013984900238b0873ec8d0d8defce72469fb7a83e61d53f5ad61cb80dc8 + checksum: 10/b80b3e6a7fafb1c79de7db541de357f4a5ee73bd70c21672f5a7c840d27bb27bdb0151e7ba2fd82c4a888df22ce0c501b0d9f3e4dfe51688876701c437d59536 languageName: node linkType: hard @@ -5866,7 +5838,7 @@ __metadata: resolution: "readdirp@npm:3.6.0" dependencies: picomatch: "npm:^2.2.1" - checksum: 8/1ced032e6e45670b6d7352d71d21ce7edf7b9b928494dcaba6f11fba63180d9da6cd7061ebc34175ffda6ff529f481818c962952004d273178acd70f7059b320 + checksum: 10/196b30ef6ccf9b6e18c4e1724b7334f72a093d011a99f3b5920470f0b3406a51770867b3e1ae9711f227ef7a7065982f6ee2ce316746b2cb42c88efe44297fe7 languageName: node linkType: hard @@ -5875,7 +5847,7 @@ __metadata: resolution: "rechoir@npm:0.8.0" dependencies: resolve: "npm:^1.20.0" - checksum: 8/ad3caed8afdefbc33fbc30e6d22b86c35b3d51c2005546f4e79bcc03c074df804b3640ad18945e6bef9ed12caedc035655ec1082f64a5e94c849ff939dc0a788 + checksum: 10/ad3caed8afdefbc33fbc30e6d22b86c35b3d51c2005546f4e79bcc03c074df804b3640ad18945e6bef9ed12caedc035655ec1082f64a5e94c849ff939dc0a788 languageName: node linkType: hard @@ -5886,14 +5858,14 @@ __metadata: call-bind: "npm:^1.0.2" define-properties: "npm:^1.1.3" functions-have-names: "npm:^1.2.2" - checksum: 8/51228bae732592adb3ededd5e15426be25f289e9c4ef15212f4da73f4ec3919b6140806374b8894036a86020d054a8d2657d3fee6bb9b4d35d8939c20030b7a6 + checksum: 10/3cde7cd22f0cf9d04db0b77c825b14824c6e7d2ec77e17e8dba707ad1b3c70bb3f2ac5b4cad3c0932045ba61cb2fd1b8ef84a49140e952018bdae065cc001670 languageName: node linkType: hard "relateurl@npm:^0.2.7": version: 0.2.7 resolution: "relateurl@npm:0.2.7" - checksum: 8/5891e792eae1dfc3da91c6fda76d6c3de0333a60aa5ad848982ebb6dccaa06e86385fb1235a1582c680a3d445d31be01c6bfc0804ebbcab5aaf53fa856fde6b6 + checksum: 10/f5d6ba58f2a5d5076389090600c243a0ba7072bcf347490a09e4241e2427ccdb260b4e22cea7be4f1fcd3c2bf05908b1e0d0bc9605e3199d4ecf37af1d5681fa languageName: node linkType: hard @@ -5906,28 +5878,28 @@ __metadata: htmlparser2: "npm:^6.1.0" lodash: "npm:^4.17.21" strip-ansi: "npm:^6.0.1" - checksum: 8/77162b62d6f33ab81f337c39efce0439ff0d1f6d441e29c35183151f83041c7850774fb904da163d6c844264d440d10557714e6daa0b19e4561a5cd4ef305d41 + checksum: 10/434bd56d9930dd344bcba3ef7683f3dd893396b6bc7e8caa551a4cacbe75a9466dc6cf3d75bc324a5979278a73ef968d7854f8f660dbf1a52c38a73f1fb59b20 languageName: node linkType: hard "require-directory@npm:^2.1.1": version: 2.1.1 resolution: "require-directory@npm:2.1.1" - checksum: 8/fb47e70bf0001fdeabdc0429d431863e9475e7e43ea5f94ad86503d918423c1543361cc5166d713eaa7029dd7a3d34775af04764bebff99ef413111a5af18c80 + checksum: 10/a72468e2589270d91f06c7d36ec97a88db53ae5d6fe3787fadc943f0b0276b10347f89b363b2a82285f650bdcc135ad4a257c61bdd4d00d6df1fa24875b0ddaf languageName: node linkType: hard "require-from-string@npm:^2.0.2": version: 2.0.2 resolution: "require-from-string@npm:2.0.2" - checksum: 8/a03ef6895445f33a4015300c426699bc66b2b044ba7b670aa238610381b56d3f07c686251740d575e22f4c87531ba662d06937508f0f3c0f1ddc04db3130560b + checksum: 10/839a3a890102a658f4cb3e7b2aa13a1f80a3a976b512020c3d1efc418491c48a886b6e481ea56afc6c4cb5eef678f23b2a4e70575e7534eccadf5e30ed2e56eb languageName: node linkType: hard "resolve-alpn@npm:^1.0.0": version: 1.2.1 resolution: "resolve-alpn@npm:1.2.1" - checksum: 8/f558071fcb2c60b04054c99aebd572a2af97ef64128d59bef7ab73bd50d896a222a056de40ffc545b633d99b304c259ea9d0c06830d5c867c34f0bfa60b8eae0 + checksum: 10/744e87888f0b6fa0b256ab454ca0b9c0b80808715e2ef1f3672773665c92a941f6181194e30ccae4a8cd0adbe0d955d3f133102636d2ee0cca0119fec0bc9aec languageName: node linkType: hard @@ -5936,21 +5908,21 @@ __metadata: resolution: "resolve-cwd@npm:3.0.0" dependencies: resolve-from: "npm:^5.0.0" - checksum: 8/546e0816012d65778e580ad62b29e975a642989108d9a3c5beabfb2304192fa3c9f9146fbdfe213563c6ff51975ae41bac1d3c6e047dd9572c94863a057b4d81 + checksum: 10/546e0816012d65778e580ad62b29e975a642989108d9a3c5beabfb2304192fa3c9f9146fbdfe213563c6ff51975ae41bac1d3c6e047dd9572c94863a057b4d81 languageName: node linkType: hard "resolve-from@npm:^4.0.0": version: 4.0.0 resolution: "resolve-from@npm:4.0.0" - checksum: 8/f4ba0b8494846a5066328ad33ef8ac173801a51739eb4d63408c847da9a2e1c1de1e6cbbf72699211f3d13f8fc1325648b169bd15eb7da35688e30a5fb0e4a7f + checksum: 10/91eb76ce83621eea7bbdd9b55121a5c1c4a39e54a9ce04a9ad4517f102f8b5131c2cf07622c738a6683991bf54f2ce178f5a42803ecbd527ddc5105f362cc9e3 languageName: node linkType: hard "resolve-from@npm:^5.0.0": version: 5.0.0 resolution: "resolve-from@npm:5.0.0" - checksum: 8/4ceeb9113e1b1372d0cd969f3468fa042daa1dd9527b1b6bb88acb6ab55d8b9cd65dbf18819f9f9ddf0db804990901dcdaade80a215e7b2c23daae38e64f5bdf + checksum: 10/be18a5e4d76dd711778664829841cde690971d02b6cbae277735a09c1c28f407b99ef6ef3cd585a1e6546d4097b28df40ed32c4a287b9699dcf6d7f208495e23 languageName: node linkType: hard @@ -5960,7 +5932,7 @@ __metadata: dependencies: http-errors: "npm:~1.6.2" path-is-absolute: "npm:1.0.1" - checksum: 8/1a39f569ee54dd5f8ee8576ef8671c9724bea65d9f9982fbb5352af9fb4e500e1e459c1bfb1ae3ebfd8d43a709c3a01dfa4f46cf5b831e45e2caed4f1a208300 + checksum: 10/1a39f569ee54dd5f8ee8576ef8671c9724bea65d9f9982fbb5352af9fb4e500e1e459c1bfb1ae3ebfd8d43a709c3a01dfa4f46cf5b831e45e2caed4f1a208300 languageName: node linkType: hard @@ -5973,7 +5945,7 @@ __metadata: supports-preserve-symlinks-flag: "npm:^1.0.0" bin: resolve: bin/resolve - checksum: 8/07af5fc1e81aa1d866cbc9e9460fbb67318a10fa3c4deadc35c3ad8a898ee9a71a86a65e4755ac3195e0ea0cfbe201eb323ebe655ce90526fd61917313a34e4e + checksum: 10/4adcfac33f0baf6fc46d6c3a11acfad5c9345eab8bb7280d65672dc40a9694ddab6d18be2feebccf6cfc581bedd7ebfa792f6bc86db1903a41d328c23161bd23 languageName: node linkType: hard @@ -5986,7 +5958,7 @@ __metadata: supports-preserve-symlinks-flag: "npm:^1.0.0" bin: resolve: bin/resolve - checksum: 8/f8a26958aa572c9b064562750b52131a37c29d072478ea32e129063e2da7f83e31f7f11e7087a18225a8561cfe8d2f0df9dbea7c9d331a897571c0a2527dbb4c + checksum: 10/c473506ee01eb45cbcfefb68652ae5759e092e6b0fb64547feadf9736a6394f258fbc6f88e00c5ca36d5477fbb65388b272432a3600fa223062e54333c156753 languageName: node linkType: hard @@ -6021,21 +5993,21 @@ __metadata: resolution: "responselike@npm:2.0.1" dependencies: lowercase-keys: "npm:^2.0.0" - checksum: 8/b122535466e9c97b55e69c7f18e2be0ce3823c5d47ee8de0d9c0b114aa55741c6db8bfbfce3766a94d1272e61bfb1ebf0a15e9310ac5629fbb7446a861b4fd3a + checksum: 10/b122535466e9c97b55e69c7f18e2be0ce3823c5d47ee8de0d9c0b114aa55741c6db8bfbfce3766a94d1272e61bfb1ebf0a15e9310ac5629fbb7446a861b4fd3a languageName: node linkType: hard "retry@npm:^0.12.0": version: 0.12.0 resolution: "retry@npm:0.12.0" - checksum: 8/623bd7d2e5119467ba66202d733ec3c2e2e26568074923bc0585b6b99db14f357e79bdedb63cab56cec47491c4a0da7e6021a7465ca6dc4f481d3898fdd3158c + checksum: 10/1f914879f97e7ee931ad05fe3afa629bd55270fc6cf1c1e589b6a99fab96d15daad0fa1a52a00c729ec0078045fe3e399bd4fd0c93bcc906957bdc17f89cb8e6 languageName: node linkType: hard "reusify@npm:^1.0.4": version: 1.0.4 resolution: "reusify@npm:1.0.4" - checksum: 8/c3076ebcc22a6bc252cb0b9c77561795256c22b757f40c0d8110b1300723f15ec0fc8685e8d4ea6d7666f36c79ccc793b1939c748bf36f18f542744a4e379fcc + checksum: 10/14222c9e1d3f9ae01480c50d96057228a8524706db79cdeb5a2ce5bb7070dd9f409a6f84a02cbef8cdc80d39aef86f2dd03d155188a1300c599b05437dcd2ffb languageName: node linkType: hard @@ -6046,7 +6018,7 @@ __metadata: glob: "npm:^7.1.3" bin: rimraf: ./bin.js - checksum: 8/cdc7f6eacb17927f2a075117a823e1c5951792c6498ebcce81ca8203454a811d4cf8900314154d3259bb8f0b42ab17f67396a8694a54cae3283326e57ad250cd + checksum: 10/4586c296c736483e297da7cffd19475e4a3e41d07b1ae124aad5d687c79e4ffa716bdac8732ed1db942caf65271cee9dd39f8b639611de161a2753e2112ffe1d languageName: node linkType: hard @@ -6057,7 +6029,7 @@ __metadata: glob: "npm:^7.1.3" bin: rimraf: bin.js - checksum: 8/87f4164e396f0171b0a3386cc1877a817f572148ee13a7e113b238e48e8a9f2f31d009a92ec38a591ff1567d9662c6b67fd8818a2dbbaed74bc26a87a2a4a9a0 + checksum: 10/063ffaccaaaca2cfd0ef3beafb12d6a03dd7ff1260d752d62a6077b5dfff6ae81bea571f655bb6b589d366930ec1bdd285d40d560c0dae9b12f125e54eb743d5 languageName: node linkType: hard @@ -6071,7 +6043,7 @@ __metadata: json-stringify-safe: "npm:^5.0.1" semver-compare: "npm:^1.0.0" sprintf-js: "npm:^1.1.2" - checksum: 8/682e28d5491e3ae99728a35ba188f4f0ccb6347dbd492f95dc9f4bfdfe8ee63d8203ad234766ee2db88c8d7a300714304976eb095ce5c9366fe586c03a21586c + checksum: 10/baaa5ad91468bf1b7f0263c4132a40865c8638a3d0916b44dd0d42980a77fb53085a3792e3edf16fc4eea9e31c719793c88bd45b1623b760763c4dc59df97619 languageName: node linkType: hard @@ -6080,14 +6052,14 @@ __metadata: resolution: "run-parallel@npm:1.2.0" dependencies: queue-microtask: "npm:^1.2.2" - checksum: 8/cb4f97ad25a75ebc11a8ef4e33bb962f8af8516bb2001082ceabd8902e15b98f4b84b4f8a9b222e5d57fc3bd1379c483886ed4619367a7680dad65316993021d + checksum: 10/cb4f97ad25a75ebc11a8ef4e33bb962f8af8516bb2001082ceabd8902e15b98f4b84b4f8a9b222e5d57fc3bd1379c483886ed4619367a7680dad65316993021d languageName: node linkType: hard "safe-buffer@npm:5.2.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" - checksum: 8/b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd491 + checksum: 10/32872cd0ff68a3ddade7a7617b8f4c2ae8764d8b7d884c651b74457967a9e0e886267d3ecc781220629c44a865167b61c375d2da6c720c840ecd73f45d5d9451 languageName: node linkType: hard @@ -6098,14 +6070,14 @@ __metadata: call-bind: "npm:^1.0.2" get-intrinsic: "npm:^1.1.3" is-regex: "npm:^1.1.4" - checksum: 8/bc566d8beb8b43c01b94e67de3f070fd2781685e835959bbbaaec91cc53381145ca91f69bd837ce6ec244817afa0a5e974fc4e40a2957f0aca68ac3add1ddd34 + checksum: 10/c7248dfa07891aa634c8b9c55da696e246f8589ca50e7fd14b22b154a106e83209ddf061baf2fa45ebfbd485b094dc7297325acfc50724de6afe7138451b42a9 languageName: node linkType: hard "safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0": version: 2.1.2 resolution: "safer-buffer@npm:2.1.2" - checksum: 8/cab8f25ae6f1434abee8d80023d7e72b598cf1327164ddab31003c51215526801e40b66c5e65d658a0af1e9d6478cadcb4c745f4bd6751f97d8644786c0978b0 + checksum: 10/7eaf7a0cf37cc27b42fb3ef6a9b1df6e93a1c6d98c6c6702b02fe262d5fcbd89db63320793b99b21cb5348097d0a53de81bd5f4e8b86e20cc9412e3f1cfb4e83 languageName: node linkType: hard @@ -6114,14 +6086,14 @@ __metadata: resolution: "sanitize-filename@npm:1.6.3" dependencies: truncate-utf8-bytes: "npm:^1.0.0" - checksum: 8/aa733c012b7823cf65730603cf3b503c641cee6b239771d3164ca482f22d81a50e434a713938d994071db18e4202625669cc56bccc9d13d818b4c983b5f47fde + checksum: 10/1c162e2cffa797571221c3ed9fe796fa8c6eabb0812418b52a839e4fc63ab130093eb546ec39e1b94b8d3511c0d7de81db3e67906a7e76d7a7bcb6fbab4ed961 languageName: node linkType: hard "sax@npm:^1.2.4": version: 1.2.4 resolution: "sax@npm:1.2.4" - checksum: 8/d3df7d32b897a2c2f28e941f732c71ba90e27c24f62ee918bd4d9a8cfb3553f2f81e5493c7f0be94a11c1911b643a9108f231dd6f60df3fa9586b5d2e3e9e1fe + checksum: 10/09b79ff6dc09689a24323352117c94593c69db348997b2af0edbd82fa08aba47d778055bf9616b57285bb73d25d790900c044bf631a8f10c8252412e3f3fe5dd languageName: node linkType: hard @@ -6130,7 +6102,7 @@ __metadata: resolution: "scheduler@npm:0.23.0" dependencies: loose-envify: "npm:^1.1.0" - checksum: 8/d79192eeaa12abef860c195ea45d37cbf2bbf5f66e3c4dcd16f54a7da53b17788a70d109ee3d3dde1a0fd50e6a8fc171f4300356c5aee4fc0171de526bf35f8a + checksum: 10/0c4557aa37bafca44ff21dc0ea7c92e2dbcb298bc62eae92b29a39b029134f02fb23917d6ebc8b1fa536b4184934314c20d8864d156a9f6357f3398aaf7bfda8 languageName: node linkType: hard @@ -6141,7 +6113,7 @@ __metadata: "@types/json-schema": "npm:^7.0.8" ajv: "npm:^6.12.5" ajv-keywords: "npm:^3.5.2" - checksum: 8/fb73f3d759d43ba033c877628fe9751620a26879f6301d3dbeeb48cf2a65baec5cdf99da65d1bf3b4ff5444b2e59cbe4f81c2456b5e0d2ba7d7fd4aed5da29ce + checksum: 10/cfcf991f108797719d8054281272cf508543d6e092e273129fca84d569baafa5344bc23ec98cf2274943f6ed69851ced4fd0ae24471601f3f4d69c00fac47be6 languageName: node linkType: hard @@ -6152,7 +6124,7 @@ __metadata: "@types/json-schema": "npm:^7.0.8" ajv: "npm:^6.12.5" ajv-keywords: "npm:^3.5.2" - checksum: 8/ea56971926fac2487f0757da939a871388891bc87c6a82220d125d587b388f1704788f3706e7f63a7b70e49fc2db974c41343528caea60444afd5ce0fe4b85c0 + checksum: 10/2c7bbb1da967fdfd320e6cea538949006ec6e8c13ea560a4f94ff2c56809a8486fa5ec419e023452501a6befe1ca381e409c2798c24f4993c7c4094d97fdb258 languageName: node linkType: hard @@ -6164,14 +6136,14 @@ __metadata: ajv: "npm:^8.9.0" ajv-formats: "npm:^2.1.1" ajv-keywords: "npm:^5.1.0" - checksum: 8/26a0463d47683258106e6652e9aeb0823bf0b85843039e068b57da1892f7ae6b6b1094d48e9ed5ba5cbe9f7166469d880858b9d91abe8bd249421eb813850cde + checksum: 10/808784735eeb153ab7f3f787f840aa3bc63f423d2a5a7e96c9e70a0e53d0bc62d7b37ea396fc598ce19196e4fb86a72f897154b7c6ce2358bbc426166f205e14 languageName: node linkType: hard "semver-compare@npm:^1.0.0": version: 1.0.0 resolution: "semver-compare@npm:1.0.0" - checksum: 8/dd1d7e2909744cf2cf71864ac718efc990297f9de2913b68e41a214319e70174b1d1793ac16e31183b128c2b9812541300cb324db8168e6cf6b570703b171c68 + checksum: 10/75f9c7a7786d1756f64b1429017746721e07bd7691bdad6368f7643885d3a98a27586777e9699456564f4844b407e9f186cc1d588a3f9c0be71310e517e942c3 languageName: node linkType: hard @@ -6180,7 +6152,7 @@ __metadata: resolution: "semver@npm:5.7.2" bin: semver: bin/semver - checksum: 8/fb4ab5e0dd1c22ce0c937ea390b4a822147a9c53dbd2a9a0132f12fe382902beef4fbf12cf51bb955248d8d15874ce8cd89532569756384f994309825f10b686 + checksum: 10/fca14418a174d4b4ef1fecb32c5941e3412d52a4d3d85165924ce3a47fbc7073372c26faf7484ceb4bbc2bde25880c6b97e492473dc7e9708fdfb1c6a02d546e languageName: node linkType: hard @@ -6189,7 +6161,7 @@ __metadata: resolution: "semver@npm:6.3.0" bin: semver: ./bin/semver.js - checksum: 8/1b26ecf6db9e8292dd90df4e781d91875c0dcc1b1909e70f5d12959a23c7eebb8f01ea581c00783bbee72ceeaad9505797c381756326073850dc36ed284b21b9 + checksum: 10/8dd72e7c7cdbd8cff66b5530eeff9eec2342b127eef2c956259cdf66b85addf4829e6e4a045ca30d974d075595b0b03faa6318a597307eb3984649516b98b501 languageName: node linkType: hard @@ -6200,7 +6172,7 @@ __metadata: lru-cache: "npm:^6.0.0" bin: semver: bin/semver.js - checksum: 8/ba9c7cbbf2b7884696523450a61fee1a09930d888b7a8d7579025ad93d459b2d1949ee5bbfeb188b2be5f4ac163544c5e98491ad6152df34154feebc2cc337c1 + checksum: 10/c8c04a4d41d30cffa7277904e0ad6998623dd61e36bca9578b0128d8c683b705a3924beada55eae7fa004fb30a9359a53a4ead2b68468d778b602f3b1a28f8e3 languageName: node linkType: hard @@ -6211,7 +6183,7 @@ __metadata: lru-cache: "npm:^6.0.0" bin: semver: bin/semver.js - checksum: 8/12d8ad952fa353b0995bf180cdac205a4068b759a140e5d3c608317098b3575ac2f1e09182206bf2eb26120e1c0ed8fb92c48c592f6099680de56bb071423ca3 + checksum: 10/985dec0d372370229a262c737063860fabd4a1c730662c1ea3200a2f649117761a42184c96df62a0e885e76fbd5dace41087d6c1ac0351b13c0df5d6bcb1b5ac languageName: node linkType: hard @@ -6220,7 +6192,7 @@ __metadata: resolution: "semver@npm:7.0.0" bin: semver: bin/semver.js - checksum: 8/272c11bf8d083274ef79fe40a81c55c184dff84dd58e3c325299d0927ba48cece1f020793d138382b85f89bab5002a35a5ba59a3a68a7eebbb597eb733838778 + checksum: 10/be264384c7c2f283d52a28cff172a4a25b99cc10f1481ece9479987e7145d197d3c00d8a0b2662316224fb346e97f770545126b0af88f94fee0292004cf809a1 languageName: node linkType: hard @@ -6229,7 +6201,7 @@ __metadata: resolution: "serialize-error@npm:7.0.1" dependencies: type-fest: "npm:^0.13.1" - checksum: 8/e0aba4dca2fc9fe74ae1baf38dbd99190e1945445a241ba646290f2176cdb2032281a76443b02ccf0caf30da5657d510746506368889a593b9835a497fc0732e + checksum: 10/e0aba4dca2fc9fe74ae1baf38dbd99190e1945445a241ba646290f2176cdb2032281a76443b02ccf0caf30da5657d510746506368889a593b9835a497fc0732e languageName: node linkType: hard @@ -6238,7 +6210,7 @@ __metadata: resolution: "serialize-javascript@npm:6.0.2" dependencies: randombytes: "npm:^2.1.0" - checksum: 8/c4839c6206c1d143c0f80763997a361310305751171dd95e4b57efee69b8f6edd8960a0b7fbfc45042aadff98b206d55428aee0dc276efe54f100899c7fa8ab7 + checksum: 10/445a420a6fa2eaee4b70cbd884d538e259ab278200a2ededd73253ada17d5d48e91fb1f4cd224a236ab62ea7ba0a70c6af29fc93b4f3d3078bf7da1c031fde58 languageName: node linkType: hard @@ -6247,28 +6219,28 @@ __metadata: resolution: "serializerr@npm:1.0.3" dependencies: protochain: "npm:^1.0.5" - checksum: 8/20fdf7a7e3a63ba4baf0d548e22d333011217b8945bda88bb2fa9cb20569293f4a277507506bcc6d2f10c21ab8b13534b6041c356dd5e149ce71d1f684bbd20d + checksum: 10/20fdf7a7e3a63ba4baf0d548e22d333011217b8945bda88bb2fa9cb20569293f4a277507506bcc6d2f10c21ab8b13534b6041c356dd5e149ce71d1f684bbd20d languageName: node linkType: hard "set-blocking@npm:^2.0.0": version: 2.0.0 resolution: "set-blocking@npm:2.0.0" - checksum: 8/6e65a05f7cf7ebdf8b7c75b101e18c0b7e3dff4940d480efed8aad3a36a4005140b660fa1d804cb8bce911cac290441dc728084a30504d3516ac2ff7ad607b02 + checksum: 10/8980ebf7ae9eb945bb036b6e283c547ee783a1ad557a82babf758a065e2fb6ea337fd82cac30dd565c1e606e423f30024a19fff7afbf4977d784720c4026a8ef languageName: node linkType: hard "setprototypeof@npm:1.1.0": version: 1.1.0 resolution: "setprototypeof@npm:1.1.0" - checksum: 8/27cb44304d6c9e1a23bc6c706af4acaae1a7aa1054d4ec13c05f01a99fd4887109a83a8042b67ad90dbfcd100d43efc171ee036eb080667172079213242ca36e + checksum: 10/02d2564e02a260551bab3ec95358dcfde775fe61272b1b7c488de3676a4bb79f280b5668a324aebe0ec73f0d8ba408bc2d816a609ee5d93b1a7936b9d4ba1208 languageName: node linkType: hard "setprototypeof@npm:1.2.0": version: 1.2.0 resolution: "setprototypeof@npm:1.2.0" - checksum: 8/be18cbbf70e7d8097c97f713a2e76edf84e87299b40d085c6bf8b65314e994cc15e2e317727342fa6996e38e1f52c59720b53fe621e2eb593a6847bf0356db89 + checksum: 10/fde1630422502fbbc19e6844346778f99d449986b2f9cdcceb8326730d2f3d9964dbcb03c02aaadaefffecd0f2c063315ebea8b3ad895914bf1afc1747fc172e languageName: node linkType: hard @@ -6277,7 +6249,7 @@ __metadata: resolution: "shallow-clone@npm:3.0.1" dependencies: kind-of: "npm:^6.0.2" - checksum: 8/39b3dd9630a774aba288a680e7d2901f5c0eae7b8387fc5c8ea559918b29b3da144b7bdb990d7ccd9e11be05508ac9e459ce51d01fd65e583282f6ffafcba2e7 + checksum: 10/e066bd540cfec5e1b0f78134853e0d892d1c8945fb9a926a579946052e7cb0c70ca4fc34f875a8083aa7910d751805d36ae64af250a6de6f3d28f9fa7be6c21b languageName: node linkType: hard @@ -6286,7 +6258,7 @@ __metadata: resolution: "shebang-command@npm:1.2.0" dependencies: shebang-regex: "npm:^1.0.0" - checksum: 8/9eed1750301e622961ba5d588af2212505e96770ec376a37ab678f965795e995ade7ed44910f5d3d3cb5e10165a1847f52d3348c64e146b8be922f7707958908 + checksum: 10/9eed1750301e622961ba5d588af2212505e96770ec376a37ab678f965795e995ade7ed44910f5d3d3cb5e10165a1847f52d3348c64e146b8be922f7707958908 languageName: node linkType: hard @@ -6295,28 +6267,28 @@ __metadata: resolution: "shebang-command@npm:2.0.0" dependencies: shebang-regex: "npm:^3.0.0" - checksum: 8/6b52fe87271c12968f6a054e60f6bde5f0f3d2db483a1e5c3e12d657c488a15474121a1d55cd958f6df026a54374ec38a4a963988c213b7570e1d51575cea7fa + checksum: 10/6b52fe87271c12968f6a054e60f6bde5f0f3d2db483a1e5c3e12d657c488a15474121a1d55cd958f6df026a54374ec38a4a963988c213b7570e1d51575cea7fa languageName: node linkType: hard "shebang-regex@npm:^1.0.0": version: 1.0.0 resolution: "shebang-regex@npm:1.0.0" - checksum: 8/404c5a752cd40f94591dfd9346da40a735a05139dac890ffc229afba610854d8799aaa52f87f7e0c94c5007f2c6af55bdcaeb584b56691926c5eaf41dc8f1372 + checksum: 10/404c5a752cd40f94591dfd9346da40a735a05139dac890ffc229afba610854d8799aaa52f87f7e0c94c5007f2c6af55bdcaeb584b56691926c5eaf41dc8f1372 languageName: node linkType: hard "shebang-regex@npm:^3.0.0": version: 3.0.0 resolution: "shebang-regex@npm:3.0.0" - checksum: 8/1a2bcae50de99034fcd92ad4212d8e01eedf52c7ec7830eedcf886622804fe36884278f2be8be0ea5fde3fd1c23911643a4e0f726c8685b61871c8908af01222 + checksum: 10/1a2bcae50de99034fcd92ad4212d8e01eedf52c7ec7830eedcf886622804fe36884278f2be8be0ea5fde3fd1c23911643a4e0f726c8685b61871c8908af01222 languageName: node linkType: hard "shell-quote@npm:^1.6.1": version: 1.7.4 resolution: "shell-quote@npm:1.7.4" - checksum: 8/2874ea9c1a7c3ebfc9ec5734a897e16533d0d06f2e4cddc22ba3d1cab5cdc07d0f825364c1b1e39abe61236f44d8e60e933c7ad7349ce44de4f5dddc7b4354e9 + checksum: 10/e5059820d0ffc7e9298f9ee4be528cd5820c45a87d318dac5ad4b62066069fe4e62520801af639d8723b0a36af621ef6330adf8ce532cfaeb0c874c691117f1b languageName: node linkType: hard @@ -6327,14 +6299,14 @@ __metadata: call-bind: "npm:^1.0.0" get-intrinsic: "npm:^1.0.2" object-inspect: "npm:^1.9.0" - checksum: 8/351e41b947079c10bd0858364f32bb3a7379514c399edb64ab3dce683933483fc63fb5e4efe0a15a2e8a7e3c436b6a91736ddb8d8c6591b0460a24bb4a1ee245 + checksum: 10/c4998d9fc530b0e75a7fd791ad868fdc42846f072734f9080ff55cc8dc7d3899abcda24fd896aa6648c3ab7021b4bb478073eb4f44dfd55bce9714bc1a7c5d45 languageName: node linkType: hard "signal-exit@npm:^3.0.7": version: 3.0.7 resolution: "signal-exit@npm:3.0.7" - checksum: 8/a2f098f247adc367dffc27845853e9959b9e88b01cb301658cfe4194352d8d2bb32e18467c786a7fe15f1d44b233ea35633d076d5e737870b7139949d1ab6318 + checksum: 10/a2f098f247adc367dffc27845853e9959b9e88b01cb301658cfe4194352d8d2bb32e18467c786a7fe15f1d44b233ea35633d076d5e737870b7139949d1ab6318 languageName: node linkType: hard @@ -6343,14 +6315,14 @@ __metadata: resolution: "simple-update-notifier@npm:1.1.0" dependencies: semver: "npm:~7.0.0" - checksum: 8/1012e9b6c504e559a948078177b3eedbb9d7e4d15878e2bda56314d08db609ca5da485be4ac9f838759faae8057935ee0246fcdf63f1233c86bd9fecb2a5544b + checksum: 10/0f9be259b33fe34b9ac949552c62b3d89ed020ec8e2f64d17cbd1c6c09bf38b4352198cb1871fe191a1566ef4722ef90232f2629ea836b63425d7586a8cfa3f2 languageName: node linkType: hard "slash@npm:^5.1.0": version: 5.1.0 resolution: "slash@npm:5.1.0" - checksum: 8/70434b34c50eb21b741d37d455110258c42d2cf18c01e6518aeb7299f3c6e626330c889c0c552b5ca2ef54a8f5a74213ab48895f0640717cacefeef6830a1ba4 + checksum: 10/2c41ec6fb1414cd9bba0fa6b1dd00e8be739e3fe85d079c69d4b09ca5f2f86eafd18d9ce611c0c0f686428638a36c272a6ac14799146a8295f259c10cc45cde4 languageName: node linkType: hard @@ -6361,14 +6333,14 @@ __metadata: ansi-styles: "npm:^4.0.0" astral-regex: "npm:^2.0.0" is-fullwidth-code-point: "npm:^3.0.0" - checksum: 8/5ec6d022d12e016347e9e3e98a7eb2a592213a43a65f1b61b74d2c78288da0aded781f665807a9f3876b9daa9ad94f64f77d7633a0458876c3a4fdc4eb223f24 + checksum: 10/5ec6d022d12e016347e9e3e98a7eb2a592213a43a65f1b61b74d2c78288da0aded781f665807a9f3876b9daa9ad94f64f77d7633a0458876c3a4fdc4eb223f24 languageName: node linkType: hard "smart-buffer@npm:^4.0.2, smart-buffer@npm:^4.2.0": version: 4.2.0 resolution: "smart-buffer@npm:4.2.0" - checksum: 8/b5167a7142c1da704c0e3af85c402002b597081dd9575031a90b4f229ca5678e9a36e8a374f1814c8156a725d17008ae3bde63b92f9cfd132526379e580bec8b + checksum: 10/927484aa0b1640fd9473cee3e0a0bcad6fce93fd7bbc18bac9ad0c33686f5d2e2c422fba24b5899c184524af01e11dd2bd051c2bf2b07e47aff8ca72cbfc60d2 languageName: node linkType: hard @@ -6379,7 +6351,7 @@ __metadata: agent-base: "npm:^6.0.2" debug: "npm:^4.3.3" socks: "npm:^2.6.2" - checksum: 8/720554370154cbc979e2e9ce6a6ec6ced205d02757d8f5d93fe95adae454fc187a5cbfc6b022afab850a5ce9b4c7d73e0f98e381879cf45f66317a4895953846 + checksum: 10/26c75d9c62a9ed3fd494df60e65e88da442f78e0d4bc19bfd85ac37bd2c67470d6d4bba5202e804561cda6674db52864c9e2a2266775f879bc8d89c1445a5f4c languageName: node linkType: hard @@ -6389,21 +6361,21 @@ __metadata: dependencies: ip: "npm:^2.0.0" smart-buffer: "npm:^4.2.0" - checksum: 8/259d9e3e8e1c9809a7f5c32238c3d4d2a36b39b83851d0f573bfde5f21c4b1288417ce1af06af1452569cd1eb0841169afd4998f0e04ba04656f6b7f0e46d748 + checksum: 10/5074f7d6a13b3155fa655191df1c7e7a48ce3234b8ccf99afa2ccb56591c195e75e8bb78486f8e9ea8168e95a29573cbaad55b2b5e195160ae4d2ea6811ba833 languageName: node linkType: hard "source-list-map@npm:^2.0.0": version: 2.0.1 resolution: "source-list-map@npm:2.0.1" - checksum: 8/806efc6f75e7cd31e4815e7a3aaf75a45c704871ea4075cb2eb49882c6fca28998f44fc5ac91adb6de03b2882ee6fb02f951fdc85e6a22b338c32bfe19557938 + checksum: 10/3918ffba5fe8447bc816800026fe707aab233d9d05a3487225d880e23b7e37ed455b4e1b844e05644f6ecc7c9b837c0cc32da54dd37f77c993370ebcdb049246 languageName: node linkType: hard "source-map-js@npm:^1.0.2": version: 1.0.2 resolution: "source-map-js@npm:1.0.2" - checksum: 8/c049a7fc4deb9a7e9b481ae3d424cc793cb4845daa690bc5a05d428bf41bf231ced49b4cf0c9e77f9d42fdb3d20d6187619fc586605f5eabe995a316da8d377c + checksum: 10/38e2d2dd18d2e331522001fc51b54127ef4a5d473f53b1349c5cca2123562400e0986648b52e9407e348eaaed53bce49248b6e2641e6d793ca57cb2c360d6d51 languageName: node linkType: hard @@ -6413,21 +6385,21 @@ __metadata: dependencies: buffer-from: "npm:^1.0.0" source-map: "npm:^0.6.0" - checksum: 8/43e98d700d79af1d36f859bdb7318e601dfc918c7ba2e98456118ebc4c4872b327773e5a1df09b0524e9e5063bb18f0934538eace60cca2710d1fa687645d137 + checksum: 10/8317e12d84019b31e34b86d483dd41d6f832f389f7417faf8fc5c75a66a12d9686e47f589a0554a868b8482f037e23df9d040d29387eb16fa14cb85f091ba207 languageName: node linkType: hard "source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.0, source-map@npm:~0.6.1": version: 0.6.1 resolution: "source-map@npm:0.6.1" - checksum: 8/59ce8640cf3f3124f64ac289012c2b8bd377c238e316fb323ea22fbfe83da07d81e000071d7242cad7a23cd91c7de98e4df8830ec3f133cb6133a5f6e9f67bc2 + checksum: 10/59ef7462f1c29d502b3057e822cdbdae0b0e565302c4dd1a95e11e793d8d9d62006cdc10e0fd99163ca33ff2071360cf50ee13f90440806e7ed57d81cba2f7ff languageName: node linkType: hard "source-map@npm:^0.7.4": version: 0.7.4 resolution: "source-map@npm:0.7.4" - checksum: 8/01cc5a74b1f0e1d626a58d36ad6898ea820567e87f18dfc9d24a9843a351aaa2ec09b87422589906d6ff1deed29693e176194dc88bcae7c9a852dc74b311dbf5 + checksum: 10/a0f7c9b797eda93139842fd28648e868a9a03ea0ad0d9fa6602a0c1f17b7fb6a7dcca00c144476cccaeaae5042e99a285723b1a201e844ad67221bf5d428f1dc languageName: node linkType: hard @@ -6439,7 +6411,7 @@ __metadata: mkdirp: "npm:^0.5.1" nan: "npm:^2.14.0" node-gyp: "npm:latest" - checksum: 8/0c93aa33437476516b62c621e4472017fca8a454e037f7fe1ec3bbfd2b8ae1fde4b885b696eacfc20aa6fcad517565c0b4fa13c1f65824accd147e0a4c175b5c + checksum: 10/8a2b2e8926bd8b51e743a1555c175cf9e0bd94bbc3278e9675a465e76ff45e69dfaa36d00f70fa1a7c969b84bda6f3cff3b255972e94fec243af976339fc96d1 languageName: node linkType: hard @@ -6449,14 +6421,14 @@ __metadata: dependencies: spdx-expression-parse: "npm:^3.0.0" spdx-license-ids: "npm:^3.0.0" - checksum: 8/77ce438344a34f9930feffa61be0eddcda5b55fc592906ef75621d4b52c07400a97084d8701557b13f7d2aae0cb64f808431f469e566ef3fe0a3a131dcb775a6 + checksum: 10/688e028c3ca6090d1b516272a2dd60b30f163cbf166295ac4b8078fd74f524365cd996e2b18cabdaa41647aa806e117604aa3b3216f69076a554999913d09d47 languageName: node linkType: hard "spdx-exceptions@npm:^2.1.0": version: 2.3.0 resolution: "spdx-exceptions@npm:2.3.0" - checksum: 8/cb69a26fa3b46305637123cd37c85f75610e8c477b6476fa7354eb67c08128d159f1d36715f19be6f9daf4b680337deb8c65acdcae7f2608ba51931540687ac0 + checksum: 10/cb69a26fa3b46305637123cd37c85f75610e8c477b6476fa7354eb67c08128d159f1d36715f19be6f9daf4b680337deb8c65acdcae7f2608ba51931540687ac0 languageName: node linkType: hard @@ -6466,21 +6438,21 @@ __metadata: dependencies: spdx-exceptions: "npm:^2.1.0" spdx-license-ids: "npm:^3.0.0" - checksum: 8/a1c6e104a2cbada7a593eaa9f430bd5e148ef5290d4c0409899855ce8b1c39652bcc88a725259491a82601159d6dc790bedefc9016c7472f7de8de7361f8ccde + checksum: 10/a1c6e104a2cbada7a593eaa9f430bd5e148ef5290d4c0409899855ce8b1c39652bcc88a725259491a82601159d6dc790bedefc9016c7472f7de8de7361f8ccde languageName: node linkType: hard "spdx-license-ids@npm:^3.0.0": version: 3.0.12 resolution: "spdx-license-ids@npm:3.0.12" - checksum: 8/92a4dddce62ce1db6fe54a7a839cf85e06abc308fc83b776a55b44e4f1906f02e7ebd506120847039e976bbbad359ea8bdfafb7925eae5cd7e73255f02e0b7d6 + checksum: 10/ce972df2d2f8b0ce80ecc47b651a96ffa4126b47f1efd818e66da80a6513ed9bd610bcaca41eb9f8ad1fa4de4a538ff6dd0e5c7dbaed3d5a17512ecd127d6e50 languageName: node linkType: hard "sprintf-js@npm:^1.1.2": version: 1.1.2 resolution: "sprintf-js@npm:1.1.2" - checksum: 8/d4bb46464632b335e5faed381bd331157e0af64915a98ede833452663bc672823db49d7531c32d58798e85236581fb7342fd0270531ffc8f914e186187bf1c90 + checksum: 10/0044322a252b36bffc3d8a462a4882de57830e18d37d1cc000104ff4744b512d6a9b1ca6240e7ad141a987a1eaad071668fe12d11c496c11d3641c4797a6cf3f languageName: node linkType: hard @@ -6489,35 +6461,35 @@ __metadata: resolution: "ssri@npm:9.0.1" dependencies: minipass: "npm:^3.1.1" - checksum: 8/fb58f5e46b6923ae67b87ad5ef1c5ab6d427a17db0bead84570c2df3cd50b4ceb880ebdba2d60726588272890bae842a744e1ecce5bd2a2a582fccd5068309eb + checksum: 10/7638a61e91432510718e9265d48d0438a17d53065e5184f1336f234ef6aa3479663942e41e97df56cda06bb24d9d0b5ef342c10685add3cac7267a82d7fa6718 languageName: node linkType: hard "stable@npm:^0.1.8": version: 0.1.8 resolution: "stable@npm:0.1.8" - checksum: 8/2ff482bb100285d16dd75cd8f7c60ab652570e8952c0bfa91828a2b5f646a0ff533f14596ea4eabd48bb7f4aeea408dce8f8515812b975d958a4cc4fa6b9dfeb + checksum: 10/2ff482bb100285d16dd75cd8f7c60ab652570e8952c0bfa91828a2b5f646a0ff533f14596ea4eabd48bb7f4aeea408dce8f8515812b975d958a4cc4fa6b9dfeb languageName: node linkType: hard "stat-mode@npm:^1.0.0": version: 1.0.0 resolution: "stat-mode@npm:1.0.0" - checksum: 8/f9daea2dba41e1dffae5543a8af087ec8b56ff6ae1c729b5373b4f528e214f53260108dab522d2660cca2215dc3e61f164920a82136ad142dab50b3faa6f6090 + checksum: 10/a7eac989332f4d057997225af77be14428789821bfbcadd9bdd67e40c73b9d0f9e0fead7171a0e4a8c4366564adcf1d463b16e71c68af8694af3d3ee1b5f88ed languageName: node linkType: hard "statuses@npm:2.0.1": version: 2.0.1 resolution: "statuses@npm:2.0.1" - checksum: 8/18c7623fdb8f646fb213ca4051be4df7efb3484d4ab662937ca6fbef7ced9b9e12842709872eb3020cc3504b93bde88935c9f6417489627a7786f24f8031cbcb + checksum: 10/18c7623fdb8f646fb213ca4051be4df7efb3484d4ab662937ca6fbef7ced9b9e12842709872eb3020cc3504b93bde88935c9f6417489627a7786f24f8031cbcb languageName: node linkType: hard "statuses@npm:>= 1.4.0 < 2, statuses@npm:>= 1.5.0 < 2, statuses@npm:^1.5.0": version: 1.5.0 resolution: "statuses@npm:1.5.0" - checksum: 8/c469b9519de16a4bb19600205cffb39ee471a5f17b82589757ca7bd40a8d92ebb6ed9f98b5a540c5d302ccbc78f15dc03cc0280dd6e00df1335568a5d5758a5c + checksum: 10/c469b9519de16a4bb19600205cffb39ee471a5f17b82589757ca7bd40a8d92ebb6ed9f98b5a540c5d302ccbc78f15dc03cc0280dd6e00df1335568a5d5758a5c languageName: node linkType: hard @@ -6528,7 +6500,7 @@ __metadata: emoji-regex: "npm:^8.0.0" is-fullwidth-code-point: "npm:^3.0.0" strip-ansi: "npm:^6.0.1" - checksum: 8/e52c10dc3fbfcd6c3a15f159f54a90024241d0f149cf8aed2982a2d801d2e64df0bf1dc351cf8e95c3319323f9f220c16e740b06faecd53e2462df1d2b5443fb + checksum: 10/e52c10dc3fbfcd6c3a15f159f54a90024241d0f149cf8aed2982a2d801d2e64df0bf1dc351cf8e95c3319323f9f220c16e740b06faecd53e2462df1d2b5443fb languageName: node linkType: hard @@ -6539,7 +6511,7 @@ __metadata: call-bind: "npm:^1.0.2" define-properties: "npm:^1.1.4" es-abstract: "npm:^1.20.4" - checksum: 8/76e07238fe31dc12177428f0436b7ed6985f6a7ba97470fd53e4f0a6d9860bfee127d81957f3073cc879b434233df143825d140581e1340278053ad993c92f6c + checksum: 10/0625316ab60227a95d996205888bc906012c028adba052ff5044caf1ce1b127c8df512a13b17d1059c7c0139e319e251b1cfc91a4c5ebaab9432f90079dd2ea9 languageName: node linkType: hard @@ -6550,7 +6522,7 @@ __metadata: call-bind: "npm:^1.0.2" define-properties: "npm:^1.1.4" es-abstract: "npm:^1.20.4" - checksum: 8/0fdc34645a639bd35179b5a08227a353b88dc089adf438f46be8a7c197fc3f22f8514c1c9be4629b3cd29c281582730a8cbbad6466c60f76b5f99cf2addb132e + checksum: 10/3893db9267e0b8a16658c3947738536e90c400a9b7282de96925d4e210174cfe66c59d6b7eb5b4a9aaa78ef7f5e46afb117e842d93112fbd105c8d19206d8092 languageName: node linkType: hard @@ -6561,7 +6533,7 @@ __metadata: call-bind: "npm:^1.0.2" define-properties: "npm:^1.1.4" es-abstract: "npm:^1.20.4" - checksum: 8/89080feef416621e6ef1279588994305477a7a91648d9436490d56010a1f7adc39167cddac7ce0b9884b8cdbef086987c4dcb2960209f2af8bac0d23ceff4f41 + checksum: 10/05e2cd06fa5311b17f5b2c7af0a60239fa210f4bb07bbcfce4995215dce330e2b1dd2d8030d371f46252ab637522e14b6e9a78384e8515945b72654c14261d54 languageName: node linkType: hard @@ -6570,7 +6542,7 @@ __metadata: resolution: "string_decoder@npm:1.3.0" dependencies: safe-buffer: "npm:~5.2.0" - checksum: 8/8417646695a66e73aefc4420eb3b84cc9ffd89572861fe004e6aeb13c7bc00e2f616247505d2dbbef24247c372f70268f594af7126f43548565c68c117bdeb56 + checksum: 10/54d23f4a6acae0e93f999a585e673be9e561b65cd4cca37714af1e893ab8cd8dfa52a9e4f58f48f87b4a44918d3a9254326cb80ed194bf2e4c226e2b21767e56 languageName: node linkType: hard @@ -6579,14 +6551,14 @@ __metadata: resolution: "strip-ansi@npm:6.0.1" dependencies: ansi-regex: "npm:^5.0.1" - checksum: 8/f3cd25890aef3ba6e1a74e20896c21a46f482e93df4a06567cebf2b57edabb15133f1f94e57434e0a958d61186087b1008e89c94875d019910a213181a14fc8c + checksum: 10/ae3b5436d34fadeb6096367626ce987057713c566e1e7768818797e00ac5d62023d0f198c4e681eae9e20701721980b26a64a8f5b91238869592a9c6800719a2 languageName: node linkType: hard "strip-bom@npm:^3.0.0": version: 3.0.0 resolution: "strip-bom@npm:3.0.0" - checksum: 8/8d50ff27b7ebe5ecc78f1fe1e00fcdff7af014e73cf724b46fb81ef889eeb1015fc5184b64e81a2efe002180f3ba431bdd77e300da5c6685d702780fbf0c8d5b + checksum: 10/8d50ff27b7ebe5ecc78f1fe1e00fcdff7af014e73cf724b46fb81ef889eeb1015fc5184b64e81a2efe002180f3ba431bdd77e300da5c6685d702780fbf0c8d5b languageName: node linkType: hard @@ -6595,7 +6567,7 @@ __metadata: resolution: "style-loader@npm:3.3.4" peerDependencies: webpack: ^5.0.0 - checksum: 8/caac3f2fe2c3c89e49b7a2a9329e1cfa515ecf5f36b9c4885f9b218019fda207a9029939b2c35821dec177a264a007e7c391ccdd3ff7401881ce6287b9c8f38b + checksum: 10/2dd2a77d4fc689e1f73836ed7653830cb4e628af0b2979dcf6f31524c72bf44fca4bac8aebe62df95a5f9be19bea18f952a2cfcaaeff32c524c4402226d9c58f languageName: node linkType: hard @@ -6607,7 +6579,7 @@ __metadata: postcss-selector-parser: "npm:^6.0.4" peerDependencies: postcss: ^8.2.15 - checksum: 8/11175366ef52de65bf06cefba0ddc9db286dc3a1451fd2989e74c6ea47091a02329a4bf6ce10b1a36950056927b6bbbe47c5ab3a1f4c7032df932d010fbde5a2 + checksum: 10/bddce1f5a8ba5a129995fc5585fa59fda6c8c580a8b39631955ee03810957eea62d13c7711a61f3a4f3bc2f9a4a9e019846f73b669c4aa0b5c52cd0198824b5c languageName: node linkType: hard @@ -6616,7 +6588,7 @@ __metadata: resolution: "sumchecker@npm:3.0.1" dependencies: debug: "npm:^4.1.0" - checksum: 8/31ba7a62c889236b5b07f75b5c250d481158a1ca061b8f234fca0457bdbe48a20e5011c12c715343dc577e111463dc3d9e721b98015a445a2a88c35e0c9f0f91 + checksum: 10/5c69776ce2b53040c952cfbca0f7b487b1ee993c55b6d5523f674ec075f30e031fd84b6706dc8ccc4deb9761b58f9925be8806a316e5eedff2286bb48cb75044 languageName: node linkType: hard @@ -6625,7 +6597,7 @@ __metadata: resolution: "supports-color@npm:5.5.0" dependencies: has-flag: "npm:^3.0.0" - checksum: 8/95f6f4ba5afdf92f495b5a912d4abee8dcba766ae719b975c56c084f5004845f6f5a5f7769f52d53f40e21952a6d87411bafe34af4a01e65f9926002e38e1dac + checksum: 10/5f505c6fa3c6e05873b43af096ddeb22159831597649881aeb8572d6fe3b81e798cc10840d0c9735e0026b250368851b7f77b65e84f4e4daa820a4f69947f55b languageName: node linkType: hard @@ -6634,7 +6606,7 @@ __metadata: resolution: "supports-color@npm:7.2.0" dependencies: has-flag: "npm:^4.0.0" - checksum: 8/3dda818de06ebbe5b9653e07842d9479f3555ebc77e9a0280caf5a14fb877ffee9ed57007c3b78f5a6324b8dbeec648d9e97a24e2ed9fdb81ddc69ea07100f4a + checksum: 10/c8bb7afd564e3b26b50ca6ee47572c217526a1389fe018d00345856d4a9b08ffbd61fadaf283a87368d94c3dcdb8f5ffe2650a5a65863e21ad2730ca0f05210a languageName: node linkType: hard @@ -6643,14 +6615,14 @@ __metadata: resolution: "supports-color@npm:8.1.1" dependencies: has-flag: "npm:^4.0.0" - checksum: 8/c052193a7e43c6cdc741eb7f378df605636e01ad434badf7324f17fb60c69a880d8d8fcdcb562cf94c2350e57b937d7425ab5b8326c67c2adc48f7c87c1db406 + checksum: 10/157b534df88e39c5518c5e78c35580c1eca848d7dbaf31bbe06cdfc048e22c7ff1a9d046ae17b25691128f631a51d9ec373c1b740c12ae4f0de6e292037e4282 languageName: node linkType: hard "supports-preserve-symlinks-flag@npm:^1.0.0": version: 1.0.0 resolution: "supports-preserve-symlinks-flag@npm:1.0.0" - checksum: 8/53b1e247e68e05db7b3808b99b892bd36fb096e6fba213a06da7fab22045e97597db425c724f2bbd6c99a3c295e1e73f3e4de78592289f38431049e1277ca0ae + checksum: 10/a9dc19ae2220c952bd2231d08ddeecb1b0328b61e72071ff4000c8384e145cc07c1c0bdb3b5a1cb06e186a7b2790f1dee793418b332f6ddf320de25d9125be7e languageName: node linkType: hard @@ -6667,14 +6639,14 @@ __metadata: stable: "npm:^0.1.8" bin: svgo: bin/svgo - checksum: 8/b92f71a8541468ffd0b81b8cdb36b1e242eea320bf3c1a9b2c8809945853e9d8c80c19744267eb91cabf06ae9d5fff3592d677df85a31be4ed59ff78534fa420 + checksum: 10/2b74544da1a9521852fe2784252d6083b336e32528d0e424ee54d1613f17312edc7020c29fa399086560e96cba42ede4a2205328a08edeefa26de84cd769a64a languageName: node linkType: hard "tapable@npm:^2.0.0, tapable@npm:^2.1.1, tapable@npm:^2.2.0, tapable@npm:^2.2.1": version: 2.2.1 resolution: "tapable@npm:2.2.1" - checksum: 8/3b7a1b4d86fa940aad46d9e73d1e8739335efd4c48322cb37d073eb6f80f5281889bf0320c6d8ffcfa1a0dd5bfdbd0f9d037e252ef972aca595330538aac4d51 + checksum: 10/1769336dd21481ae6347611ca5fca47add0962fd8e80466515032125eca0084a4f0ede11e65341b9c0018ef4e1cf1ad820adbb0fba7cc99865c6005734000b0a languageName: node linkType: hard @@ -6688,7 +6660,7 @@ __metadata: minizlib: "npm:^2.1.1" mkdirp: "npm:^1.0.3" yallist: "npm:^4.0.0" - checksum: 8/f1322768c9741a25356c11373bce918483f40fa9a25c69c59410c8a1247632487edef5fe76c5f12ac51a6356d2f1829e96d2bc34098668a2fc34d76050ac2b6c + checksum: 10/bfbfbb2861888077fc1130b84029cdc2721efb93d1d1fb80f22a7ac3a98ec6f8972f29e564103bbebf5e97be67ebc356d37fa48dbc4960600a1eb7230fbd1ea0 languageName: node linkType: hard @@ -6698,7 +6670,7 @@ __metadata: dependencies: async-exit-hook: "npm:^2.0.1" fs-extra: "npm:^10.0.0" - checksum: 8/8e2b90321c9d865ad3e9e613cc524c9a9e22cd7820d3c8378840a01ab720116f4de4d340bbca6a50a9562b37f8ce614451fdb02dc2f993b4f9866cf81840b3cb + checksum: 10/5b7132ff488e91ae928c3e81b25e308d8fc590c08a08fb37b0f1c1e8d186e65d69472abd1af1ea11e1162db2a2e6a7970214c827c92c7c6cebbc91bb7678b037 languageName: node linkType: hard @@ -6720,7 +6692,7 @@ __metadata: optional: true uglify-js: optional: true - checksum: 8/bd6e7596cf815f3353e2a53e79cbdec959a1b0276f5e5d4e63e9d7c3c5bb5306df567729da287d1c7b39d79093e56863c569c42c6c24cc34c76aa313bd2cbcea + checksum: 10/fb1c2436ae1b4e983be043fa0a3d355c047b16b68f102437d08c736d7960c001e7420e2f722b9d99ce0dc70ca26a68cc63c0b82bc45f5b48671142b352a9d938 languageName: node linkType: hard @@ -6734,7 +6706,7 @@ __metadata: source-map-support: "npm:~0.5.20" bin: terser: bin/terser - checksum: 8/c165052cfea061e8512e9b9ba42a098c2ff6382886ae122b040fd5b6153443070cc2dcb4862269f1669c09c716763e856125a355ff984aa72be525d6fffd8729 + checksum: 10/9b2c5cb00747dea5994034ca064fb3cc7efc1be6b79a35247662d51ab43bdbe9cbf002bbf29170b5f3bd068c811d0212e22d94acd2cf0d8562687b96f1bffc9f languageName: node linkType: hard @@ -6743,7 +6715,7 @@ __metadata: resolution: "tmp-promise@npm:3.0.3" dependencies: tmp: "npm:^0.2.0" - checksum: 8/f854f5307dcee6455927ec3da9398f139897faf715c5c6dcee6d9471ae85136983ea06662eba2edf2533bdcb0fca66d16648e79e14381e30c7fb20be9c1aa62c + checksum: 10/0ca65b4f233b1d2b01e17a7a62961d32923e4b27383a370bf4d8d52f1062d79c3250e6b6b706ec390e73c9c58c13dc130b3855eedc89c86c7d90beb28b8382e5 languageName: node linkType: hard @@ -6752,7 +6724,7 @@ __metadata: resolution: "tmp@npm:0.2.1" dependencies: rimraf: "npm:^3.0.0" - checksum: 8/8b1214654182575124498c87ca986ac53dc76ff36e8f0e0b67139a8d221eaecfdec108c0e6ec54d76f49f1f72ab9325500b246f562b926f85bcdfca8bf35df9e + checksum: 10/445148d72df3ce99356bc89a7857a0c5c3b32958697a14e50952c6f7cf0a8016e746ababe9a74c1aa52f04c526661992f14659eba34d3c6701d49ba2f3cf781b languageName: node linkType: hard @@ -6761,14 +6733,14 @@ __metadata: resolution: "to-regex-range@npm:5.0.1" dependencies: is-number: "npm:^7.0.0" - checksum: 8/f76fa01b3d5be85db6a2a143e24df9f60dd047d151062d0ba3df62953f2f697b16fe5dad9b0ac6191c7efc7b1d9dcaa4b768174b7b29da89d4428e64bc0a20ed + checksum: 10/10dda13571e1f5ad37546827e9b6d4252d2e0bc176c24a101252153ef435d83696e2557fe128c4678e4e78f5f01e83711c703eef9814eb12dab028580d45980a languageName: node linkType: hard "toidentifier@npm:1.0.1": version: 1.0.1 resolution: "toidentifier@npm:1.0.1" - checksum: 8/952c29e2a85d7123239b5cfdd889a0dde47ab0497f0913d70588f19c53f7e0b5327c95f4651e413c74b785147f9637b17410ac8c846d5d4a20a5a33eb6dc3a45 + checksum: 10/952c29e2a85d7123239b5cfdd889a0dde47ab0497f0913d70588f19c53f7e0b5327c95f4651e413c74b785147f9637b17410ac8c846d5d4a20a5a33eb6dc3a45 languageName: node linkType: hard @@ -6777,7 +6749,7 @@ __metadata: resolution: "truncate-utf8-bytes@npm:1.0.2" dependencies: utf8-byte-length: "npm:^1.0.1" - checksum: 8/ad097314709ea98444ad9c80c03aac8da805b894f37ceb5685c49ad297483afe3a5ec9572ebcaff699dda72b6cd447a2ba2a3fd10e96c2628cd16d94abeb328a + checksum: 10/366e47a0e22cc271d37eb4e62820453fb877784b55b37218842758b7aa1d402eedd0f8833cfb5d6f7a6cae1535d84289bd5e32c4ee962d2a86962fb7038a6983 languageName: node linkType: hard @@ -6793,7 +6765,7 @@ __metadata: peerDependencies: typescript: "*" webpack: ^5.0.0 - checksum: 8/7cf396e656d905388ea2a9b5e82f16d3c955fda8d3df2fbf219f4bee16ff50a3c995c44ae3e584634e9443f056cec70bb3151add3917ffb4588ecd7394bac0ec + checksum: 10/a85d43bb6f72858d613290ac02d1d24e81c38ba2dcb98b90465dc97eb6c2036bf9a389542c1a7865548643e7ed39f063fdff2dbb3e5aafbc511de6a3eb275adf languageName: node linkType: hard @@ -6804,7 +6776,7 @@ __metadata: chalk: "npm:^4.1.0" enhanced-resolve: "npm:^5.7.0" tsconfig-paths: "npm:^4.1.2" - checksum: 8/f6e9a8a407e1a405b0f2531184296d9f033cb4fe5837282b757ab4a2f4cd82a3117e62c4b86d56c7d47749c7f1345aa438ec6417dbf64a0ec74a292fe9eae44d + checksum: 10/e5a36902528e51bfd13daddd9b843cf4c12d40f23bb21953bdbf4fe97ade11ccd848ca5f1353f89688c7ef4704099e26a8f9f1b1cd0a0484287b93b00215b63e languageName: node linkType: hard @@ -6815,35 +6787,35 @@ __metadata: json5: "npm:^2.2.2" minimist: "npm:^1.2.6" strip-bom: "npm:^3.0.0" - checksum: 8/28c5f7bbbcabc9dabd4117e8fdc61483f6872a1c6b02a4b1c4d68c5b79d06896c3cc9547610c4c3ba64658531caa2de13ead1ea1bf321c7b53e969c4752b98c7 + checksum: 10/5e55cc2fb6b800eb72011522e10edefccb45b1f9af055681a51354c9b597d1390c6fa9cc356b8c7529f195ac8a90a78190d563159f3a1eed10e01bbd4d01a8ab languageName: node linkType: hard "tslib@npm:^1.10.0": version: 1.14.1 resolution: "tslib@npm:1.14.1" - checksum: 8/dbe628ef87f66691d5d2959b3e41b9ca0045c3ee3c7c7b906cc1e328b39f199bb1ad9e671c39025bd56122ac57dfbf7385a94843b1cc07c60a4db74795829acd + checksum: 10/7dbf34e6f55c6492637adb81b555af5e3b4f9cc6b998fb440dac82d3b42bdc91560a35a5fb75e20e24a076c651438234da6743d139e4feabf0783f3cdfe1dddb languageName: node linkType: hard "tslib@npm:^2.0.3": version: 2.6.2 resolution: "tslib@npm:2.6.2" - checksum: 8/329ea56123005922f39642318e3d1f0f8265d1e7fcb92c633e0809521da75eeaca28d2cf96d7248229deb40e5c19adf408259f4b9640afd20d13aecc1430f3ad + checksum: 10/bd26c22d36736513980091a1e356378e8b662ded04204453d353a7f34a4c21ed0afc59b5f90719d4ba756e581a162ecbf93118dc9c6be5acf70aa309188166ca languageName: node linkType: hard "tsscmp@npm:1.0.6": version: 1.0.6 resolution: "tsscmp@npm:1.0.6" - checksum: 8/1512384def36bccc9125cabbd4c3b0e68608d7ee08127ceaa0b84a71797263f1a01c7f82fa69be8a3bd3c1396e2965d2f7b52d581d3a5eeaf3967fbc52e3b3bf + checksum: 10/850405080ea3ecb158e9e01bc4e87c9edb94a829d8ad8747f30ba103fcc41a287d7949ab84d7b27c36294036a2c9878f050db15b73a1a1961abfb7688b82ac53 languageName: node linkType: hard "type-fest@npm:^0.13.1": version: 0.13.1 resolution: "type-fest@npm:0.13.1" - checksum: 8/e6bf2e3c449f27d4ef5d56faf8b86feafbc3aec3025fc9a5fbe2db0a2587c44714521f9c30d8516a833c8c506d6263f5cc11267522b10c6ccdb6cc55b0a9d1c4 + checksum: 10/11e9476dc85bf97a71f6844fb67ba8e64a4c7e445724c0f3bd37eb2ddf4bc97c1dc9337bd880b28bce158de1c0cb275c2d03259815a5bf64986727197126ab56 languageName: node linkType: hard @@ -6853,7 +6825,7 @@ __metadata: dependencies: media-typer: "npm:0.3.0" mime-types: "npm:~2.1.24" - checksum: 8/2c8e47675d55f8b4e404bcf529abdf5036c537a04c2b20177bcf78c9e3c1da69da3942b1346e6edb09e823228c0ee656ef0e033765ec39a70d496ef601a0c657 + checksum: 10/0bd9eeae5efd27d98fd63519f999908c009e148039d8e7179a074f105362d4fcc214c38b24f6cda79c87e563cbd12083a4691381ed28559220d4a10c2047bed4 languageName: node linkType: hard @@ -6863,7 +6835,7 @@ __metadata: bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 8/17b8f816050b412403e38d48eef0e893deb6be522d6dc7caf105e54a72e34daf6835c447735fd2b28b66784e72bfbf87f627abb4818a8e43d1fa8106396128dc + checksum: 10/dda600a5a37b945ad1fff76f0c874e7bfda3fd56cfc43b9f328780d602b6e7127b4342bbc6ad68ccf7bf6645047be329586ea1b393a80fb942d608a796aba0de languageName: node linkType: hard @@ -6885,14 +6857,14 @@ __metadata: has-bigints: "npm:^1.0.2" has-symbols: "npm:^1.0.3" which-boxed-primitive: "npm:^1.0.2" - checksum: 8/b7a1cf5862b5e4b5deb091672ffa579aa274f648410009c81cca63fed3b62b610c4f3b773f912ce545bb4e31edc3138975b5bc777fc6e4817dca51affb6380e9 + checksum: 10/06e1ee41c1095e37281cb71a975cb3350f7cb470a0665d2576f02cc9564f623bd90cfc0183693b8a7fdf2d242963dcc3010b509fa3ac683f540c765c0f3e7e43 languageName: node linkType: hard "unicorn-magic@npm:^0.1.0": version: 0.1.0 resolution: "unicorn-magic@npm:0.1.0" - checksum: 8/48c5882ca3378f380318c0b4eb1d73b7e3c5b728859b060276e0a490051d4180966beeb48962d850fd0c6816543bcdfc28629dcd030bb62a286a2ae2acb5acb6 + checksum: 10/9b4d0e9809807823dc91d0920a4a4c0cff2de3ebc54ee87ac1ee9bc75eafd609b09d1f14495e0173aef26e01118706196b6ab06a75fe0841028b3983a8af313f languageName: node linkType: hard @@ -6901,7 +6873,7 @@ __metadata: resolution: "unique-filename@npm:2.0.1" dependencies: unique-slug: "npm:^3.0.0" - checksum: 8/807acf3381aff319086b64dc7125a9a37c09c44af7620bd4f7f3247fcd5565660ac12d8b80534dcbfd067e6fe88a67e621386dd796a8af828d1337a8420a255f + checksum: 10/807acf3381aff319086b64dc7125a9a37c09c44af7620bd4f7f3247fcd5565660ac12d8b80534dcbfd067e6fe88a67e621386dd796a8af828d1337a8420a255f languageName: node linkType: hard @@ -6910,28 +6882,28 @@ __metadata: resolution: "unique-slug@npm:3.0.0" dependencies: imurmurhash: "npm:^0.1.4" - checksum: 8/49f8d915ba7f0101801b922062ee46b7953256c93ceca74303bd8e6413ae10aa7e8216556b54dc5382895e8221d04f1efaf75f945c2e4a515b4139f77aa6640c + checksum: 10/26fc5bc209a875956dd5e84ca39b89bc3be777b112504667c35c861f9547df95afc80439358d836b878b6d91f6ee21fe5ba1a966e9ec2e9f071ddf3fd67d45ee languageName: node linkType: hard "universalify@npm:^0.1.0": version: 0.1.2 resolution: "universalify@npm:0.1.2" - checksum: 8/40cdc60f6e61070fe658ca36016a8f4ec216b29bf04a55dce14e3710cc84c7448538ef4dad3728d0bfe29975ccd7bfb5f414c45e7b78883567fb31b246f02dff + checksum: 10/40cdc60f6e61070fe658ca36016a8f4ec216b29bf04a55dce14e3710cc84c7448538ef4dad3728d0bfe29975ccd7bfb5f414c45e7b78883567fb31b246f02dff languageName: node linkType: hard "universalify@npm:^2.0.0": version: 2.0.0 resolution: "universalify@npm:2.0.0" - checksum: 8/2406a4edf4a8830aa6813278bab1f953a8e40f2f63a37873ffa9a3bc8f9745d06cc8e88f3572cb899b7e509013f7f6fcc3e37e8a6d914167a5381d8440518c44 + checksum: 10/2406a4edf4a8830aa6813278bab1f953a8e40f2f63a37873ffa9a3bc8f9745d06cc8e88f3572cb899b7e509013f7f6fcc3e37e8a6d914167a5381d8440518c44 languageName: node linkType: hard "unpipe@npm:1.0.0": version: 1.0.0 resolution: "unpipe@npm:1.0.0" - checksum: 8/4fa18d8d8d977c55cb09715385c203197105e10a6d220087ec819f50cb68870f02942244f1017565484237f1f8c5d3cd413631b1ae104d3096f24fdfde1b4aa2 + checksum: 10/4fa18d8d8d977c55cb09715385c203197105e10a6d220087ec819f50cb68870f02942244f1017565484237f1f8c5d3cd413631b1ae104d3096f24fdfde1b4aa2 languageName: node linkType: hard @@ -6945,7 +6917,7 @@ __metadata: browserslist: ">= 4.21.0" bin: update-browserslist-db: cli.js - checksum: 8/1e47d80182ab6e4ad35396ad8b61008ae2a1330221175d0abd37689658bdb61af9b705bfc41057fd16682474d79944fb2d86767c5ed5ae34b6276b9bed353322 + checksum: 10/9074b4ef34d2ed931f27d390aafdd391ee7c45ad83c508e8fed6aaae1eb68f81999a768ed8525c6f88d4001a4fbf1b8c0268f099d0e8e72088ec5945ac796acf languageName: node linkType: hard @@ -6959,7 +6931,7 @@ __metadata: browserslist: ">= 4.21.0" bin: browserslist-lint: cli.js - checksum: 8/12db73b4f63029ac407b153732e7cd69a1ea8206c9100b482b7d12859cd3cd0bc59c602d7ae31e652706189f1acb90d42c53ab24a5ba563ed13aebdddc5561a0 + checksum: 10/2c88096ca99918efc77a514458c4241b3f2a8e7882aa91b97251231240c30c71e82cb2043aaf12e40eba6bebda3369010e180a58bc11bbd0bca29094945c31cb languageName: node linkType: hard @@ -6968,37 +6940,28 @@ __metadata: resolution: "uri-js@npm:4.4.1" dependencies: punycode: "npm:^2.1.0" - checksum: 8/7167432de6817fe8e9e0c9684f1d2de2bb688c94388f7569f7dbdb1587c9f4ca2a77962f134ec90be0cc4d004c939ff0d05acc9f34a0db39a3c797dada262633 - languageName: node - linkType: hard - -"use-sync-external-store@npm:^1.2.0": - version: 1.2.0 - resolution: "use-sync-external-store@npm:1.2.0" - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 8/5c639e0f8da3521d605f59ce5be9e094ca772bd44a4ce7322b055a6f58eeed8dda3c94cabd90c7a41fb6fa852210092008afe48f7038792fd47501f33299116a + checksum: 10/b271ca7e3d46b7160222e3afa3e531505161c9a4e097febae9664e4b59912f4cbe94861361a4175edac3a03fee99d91e44b6a58c17a634bc5a664b19fc76fbcb languageName: node linkType: hard "utf8-byte-length@npm:^1.0.1": version: 1.0.4 resolution: "utf8-byte-length@npm:1.0.4" - checksum: 8/f188ca076ec094d58e7009fcc32623c5830c7f0f3e15802bfa4fdd1e759454a481fc4ac05e0fa83b7736e77af628a9ee0e57dcc89683d688fde3811473e42143 + checksum: 10/f188ca076ec094d58e7009fcc32623c5830c7f0f3e15802bfa4fdd1e759454a481fc4ac05e0fa83b7736e77af628a9ee0e57dcc89683d688fde3811473e42143 languageName: node linkType: hard "util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2": version: 1.0.2 resolution: "util-deprecate@npm:1.0.2" - checksum: 8/474acf1146cb2701fe3b074892217553dfcf9a031280919ba1b8d651a068c9b15d863b7303cb15bd00a862b498e6cf4ad7b4a08fb134edd5a6f7641681cb54a2 + checksum: 10/474acf1146cb2701fe3b074892217553dfcf9a031280919ba1b8d651a068c9b15d863b7303cb15bd00a862b498e6cf4ad7b4a08fb134edd5a6f7641681cb54a2 languageName: node linkType: hard "utila@npm:~0.4": version: 0.4.0 resolution: "utila@npm:0.4.0" - checksum: 8/97ffd3bd2bb80c773429d3fb8396469115cd190dded1e733f190d8b602bd0a1bcd6216b7ce3c4395ee3c79e3c879c19d268dbaae3093564cb169ad1212d436f4 + checksum: 10/b068d8cb140588da0d0c80ee3c14c6b75d3f68760d8a1c6c3908d0270e9e4056454ff16189586481b7382926c44674f6929d08e06eaf9ec8f62736cd900169c5 languageName: node linkType: hard @@ -7008,14 +6971,14 @@ __metadata: dependencies: spdx-correct: "npm:^3.0.0" spdx-expression-parse: "npm:^3.0.0" - checksum: 8/35703ac889d419cf2aceef63daeadbe4e77227c39ab6287eeb6c1b36a746b364f50ba22e88591f5d017bc54685d8137bc2d328d0a896e4d3fd22093c0f32a9ad + checksum: 10/86242519b2538bb8aeb12330edebb61b4eb37fd35ef65220ab0b03a26c0592c1c8a7300d32da3cde5abd08d18d95e8dabfad684b5116336f6de9e6f207eec224 languageName: node linkType: hard "vary@npm:^1.1.2": version: 1.1.2 resolution: "vary@npm:1.1.2" - checksum: 8/ae0123222c6df65b437669d63dfa8c36cee20a504101b2fcd97b8bf76f91259c17f9f2b4d70a1e3c6bbcee7f51b28392833adb6b2770b23b01abec84e369660b + checksum: 10/31389debef15a480849b8331b220782230b9815a8e0dbb7b9a8369559aed2e9a7800cd904d4371ea74f4c3527db456dc8e7ac5befce5f0d289014dbdf47b2242 languageName: node linkType: hard @@ -7026,14 +6989,14 @@ __metadata: assert-plus: "npm:^1.0.0" core-util-is: "npm:1.0.2" extsprintf: "npm:^1.2.0" - checksum: 8/690a8d6ad5a4001672290e9719e3107c86269bc45fe19f844758eecf502e59f8aa9631b19b839f6d3dea562334884d22d1eb95ae7c863032075a9212c889e116 + checksum: 10/2b24eb830ecee7be69ab84192946074d7e8a85a42b0784d9874a28f52616065953ab4297975c87045879505fe9a6ac38dedad29a7470bbe0324540e5b6e92f62 languageName: node linkType: hard "vscode-oniguruma@npm:1.6.1": version: 1.6.1 resolution: "vscode-oniguruma@npm:1.6.1" - checksum: 8/b019563a0d48b08c26b66c9f8729ed4ca2620b3b09c6957d5e622f0f104574bec48c7ba575bd157da40fb9a03c03495704894e3ed2d799d80a7180e3051b1f10 + checksum: 10/675893a3d6f4f72229e65b38db97a0528e90a03a118c810b745fccd0eaabdd57d25632cc04181bfa615c6a7621ca886e450357ac8e332c59fcfe1fe487bb1895 languageName: node linkType: hard @@ -7043,7 +7006,7 @@ __metadata: dependencies: glob-to-regexp: "npm:^0.4.1" graceful-fs: "npm:^4.1.2" - checksum: 8/23d4bc58634dbe13b86093e01c6a68d8096028b664ab7139d58f0c37d962d549a940e98f2f201cecdabd6f9c340338dc73ef8bf094a2249ef582f35183d1a131 + checksum: 10/4280b45bc4b5d45d5579113f2a4af93b67ae1b9607cc3d86ae41cdd53ead10db5d9dc3237f24256d05ef88b28c69a02712f78e434cb7ecc8edaca134a56e8cab languageName: node linkType: hard @@ -7085,7 +7048,7 @@ __metadata: optional: true bin: webpack-cli: bin/cli.js - checksum: 8/3a4ad0d0342a6815c850ee4633cc2a8a5dae04f918e7847f180bf24ab400803cf8a8943707ffbed03eb20fe6ce647f996f60a2aade87b0b4a9954da3da172ce0 + checksum: 10/9ac3ae7c43b032051de2803d751bd3b44e1f226b931dcd56066a8e01b12734d49730903df9235e1eb1b67b2ee7451faf24a219c8f4a229c4f42c42e827eac44c languageName: node linkType: hard @@ -7096,7 +7059,7 @@ __metadata: clone-deep: "npm:^4.0.1" flat: "npm:^5.0.2" wildcard: "npm:^2.0.0" - checksum: 8/1fe8bf5309add7298e1ac72fb3f2090e1dfa80c48c7e79fa48aa60b5961332c7d0d61efa8851acb805e6b91a4584537a347bc106e05e9aec87fa4f7088c62f2f + checksum: 10/fa46ab200f17d06c7cb49fc37ad91f15769753953c9724adac1061fa305a2a223cb37c3ed25a5f501580c91f11a0800990fe3814c70a77bf1aa5b3fca45a2ac6 languageName: node linkType: hard @@ -7106,14 +7069,14 @@ __metadata: dependencies: source-list-map: "npm:^2.0.0" source-map: "npm:~0.6.1" - checksum: 8/37463dad8d08114930f4bc4882a9602941f07c9f0efa9b6bc78738cd936275b990a596d801ef450d022bb005b109b9f451dd087db2f3c9baf53e8e22cf388f79 + checksum: 10/6237c5d1ba639a5d67bd1135c9bba487eadbd04c5e75a2849508013f13cb4b57387e689e0991c19a14a87085be7cc0b8dd1515422ae351f6e3f813ed100ccbb8 languageName: node linkType: hard "webpack-sources@npm:^3.2.3": version: 3.2.3 resolution: "webpack-sources@npm:3.2.3" - checksum: 8/989e401b9fe3536529e2a99dac8c1bdc50e3a0a2c8669cbafad31271eadd994bc9405f88a3039cd2e29db5e6d9d0926ceb7a1a4e7409ece021fe79c37d9c4607 + checksum: 10/a661f41795d678b7526ae8a88cd1b3d8ce71a7d19b6503da8149b2e667fc7a12f9b899041c1665d39e38245ed3a59ab68de648ea31040c3829aa695a5a45211d languageName: node linkType: hard @@ -7150,7 +7113,7 @@ __metadata: optional: true bin: webpack: bin/webpack.js - checksum: 8/178a0e7e9e5b26264a19dd5fe554a3508a8afafc9cce972bfd4452b5128d0db1b37832f5e615be1cff1934f24da0de967929f199be2b3fe283ca1951f98ea3fe + checksum: 10/7ff6286be54e00b2580274d8009b014fd03c6d8ade898434376c739e460da1f3a63a51006966024710061f440d6723813365b8a54ae6bcb93b94867c42cf017e languageName: node linkType: hard @@ -7199,7 +7162,7 @@ __metadata: is-number-object: "npm:^1.0.4" is-string: "npm:^1.0.5" is-symbol: "npm:^1.0.3" - checksum: 8/53ce774c7379071729533922adcca47220228405e1895f26673bbd71bdf7fb09bee38c1d6399395927c6289476b5ae0629863427fd151491b71c4b6cb04f3a5e + checksum: 10/9c7ca7855255f25ac47f4ce8b59c4cc33629e713fd7a165c9d77a2bb47bf3d9655a5664660c70337a3221cf96742f3589fae15a3a33639908d33e29aa2941efb languageName: node linkType: hard @@ -7210,7 +7173,7 @@ __metadata: isexe: "npm:^2.0.0" bin: which: ./bin/which - checksum: 8/f2e185c6242244b8426c9df1510e86629192d93c1a986a7d2a591f2c24869e7ffd03d6dac07ca863b2e4c06f59a4cc9916c585b72ee9fa1aa609d0124df15e04 + checksum: 10/549dcf1752f3ee7fbb64f5af2eead4b9a2f482108b7de3e85c781d6c26d8cf6a52d37cfbe0642a155fa6470483fe892661a859c03157f24c669cf115f3bbab5e languageName: node linkType: hard @@ -7221,7 +7184,7 @@ __metadata: isexe: "npm:^2.0.0" bin: node-which: ./bin/node-which - checksum: 8/1a5c563d3c1b52d5f893c8b61afe11abc3bab4afac492e8da5bde69d550de701cf9806235f20a47b5c8fa8a1d6a9135841de2596535e998027a54589000e66d1 + checksum: 10/4782f8a1d6b8fc12c65e968fea49f59752bf6302dc43036c3bf87da718a80710f61a062516e9764c70008b487929a73546125570acea95c5b5dcc8ac3052c70f languageName: node linkType: hard @@ -7230,14 +7193,14 @@ __metadata: resolution: "wide-align@npm:1.1.5" dependencies: string-width: "npm:^1.0.2 || 2 || 3 || 4" - checksum: 8/d5fc37cd561f9daee3c80e03b92ed3e84d80dde3365a8767263d03dacfc8fa06b065ffe1df00d8c2a09f731482fcacae745abfbb478d4af36d0a891fad4834d3 + checksum: 10/d5f8027b9a8255a493a94e4ec1b74a27bff6679d5ffe29316a3215e4712945c84ef73ca4045c7e20ae7d0c72f5f57f296e04a4928e773d4276a2f1222e4c2e99 languageName: node linkType: hard "wildcard@npm:^2.0.0": version: 2.0.1 resolution: "wildcard@npm:2.0.1" - checksum: 8/e0c60a12a219e4b12065d1199802d81c27b841ed6ad6d9d28240980c73ceec6f856771d575af367cbec2982d9ae7838759168b551776577f155044f5a5ba843c + checksum: 10/e0c60a12a219e4b12065d1199802d81c27b841ed6ad6d9d28240980c73ceec6f856771d575af367cbec2982d9ae7838759168b551776577f155044f5a5ba843c languageName: node linkType: hard @@ -7248,49 +7211,49 @@ __metadata: ansi-styles: "npm:^4.0.0" string-width: "npm:^4.1.0" strip-ansi: "npm:^6.0.0" - checksum: 8/a790b846fd4505de962ba728a21aaeda189b8ee1c7568ca5e817d85930e06ef8d1689d49dbf0e881e8ef84436af3a88bc49115c2e2788d841ff1b8b5b51a608b + checksum: 10/cebdaeca3a6880da410f75209e68cd05428580de5ad24535f22696d7d9cab134d1f8498599f344c3cf0fb37c1715807a183778d8c648d6cc0cb5ff2bb4236540 languageName: node linkType: hard "wrappy@npm:1": version: 1.0.2 resolution: "wrappy@npm:1.0.2" - checksum: 8/159da4805f7e84a3d003d8841557196034155008f817172d4e986bd591f74aa82aa7db55929a54222309e01079a65a92a9e6414da5a6aa4b01ee44a511ac3ee5 + checksum: 10/159da4805f7e84a3d003d8841557196034155008f817172d4e986bd591f74aa82aa7db55929a54222309e01079a65a92a9e6414da5a6aa4b01ee44a511ac3ee5 languageName: node linkType: hard "xmlbuilder@npm:>=11.0.1, xmlbuilder@npm:^15.1.1": version: 15.1.1 resolution: "xmlbuilder@npm:15.1.1" - checksum: 8/14f7302402e28d1f32823583d121594a9dca36408d40320b33f598bd589ca5163a352d076489c9c64d2dc1da19a790926a07bf4191275330d4de2b0d85bb1843 + checksum: 10/e6f4bab2504afdd5f80491bda948894d2146756532521dbe7db33ae0931cd3000e3b4da19b3f5b3f51bedbd9ee06582144d28136d68bd1df96579ecf4d4404a2 languageName: node linkType: hard "y18n@npm:^5.0.5": version: 5.0.8 resolution: "y18n@npm:5.0.8" - checksum: 8/54f0fb95621ee60898a38c572c515659e51cc9d9f787fb109cef6fde4befbe1c4602dc999d30110feee37456ad0f1660fa2edcfde6a9a740f86a290999550d30 + checksum: 10/5f1b5f95e3775de4514edbb142398a2c37849ccfaf04a015be5d75521e9629d3be29bd4432d23c57f37e5b61ade592fb0197022e9993f81a06a5afbdcda9346d languageName: node linkType: hard "yallist@npm:^4.0.0": version: 4.0.0 resolution: "yallist@npm:4.0.0" - checksum: 8/343617202af32df2a15a3be36a5a8c0c8545208f3d3dfbc6bb7c3e3b7e8c6f8e7485432e4f3b88da3031a6e20afa7c711eded32ddfb122896ac5d914e75848d5 + checksum: 10/4cb02b42b8a93b5cf50caf5d8e9beb409400a8a4d85e83bb0685c1457e9ac0b7a00819e9f5991ac25ffabb56a78e2f017c1acc010b3a1babfe6de690ba531abd languageName: node linkType: hard "yaml@npm:^1.10.2": version: 1.10.2 resolution: "yaml@npm:1.10.2" - checksum: 8/ce4ada136e8a78a0b08dc10b4b900936912d15de59905b2bf415b4d33c63df1d555d23acb2a41b23cf9fb5da41c256441afca3d6509de7247daa062fd2c5ea5f + checksum: 10/e088b37b4d4885b70b50c9fa1b7e54bd2e27f5c87205f9deaffd1fb293ab263d9c964feadb9817a7b129a5bf30a06582cb08750f810568ecc14f3cdbabb79cb3 languageName: node linkType: hard "yargs-parser@npm:^21.1.1": version: 21.1.1 resolution: "yargs-parser@npm:21.1.1" - checksum: 8/ed2d96a616a9e3e1cc7d204c62ecc61f7aaab633dcbfab2c6df50f7f87b393993fe6640d017759fe112d0cb1e0119f2b4150a87305cc873fd90831c6a58ccf1c + checksum: 10/9dc2c217ea3bf8d858041252d43e074f7166b53f3d010a8c711275e09cd3d62a002969a39858b92bbda2a6a63a585c7127014534a560b9c69ed2d923d113406e languageName: node linkType: hard @@ -7305,7 +7268,7 @@ __metadata: string-width: "npm:^4.2.3" y18n: "npm:^5.0.5" yargs-parser: "npm:^21.1.1" - checksum: 8/47da1b0d854fa16d45a3ded57b716b013b2179022352a5f7467409da5a04a1eef5b3b3d97a2dfc13e8bbe5f2ffc0afe3bc6a4a72f8254e60f5a4bd7947138643 + checksum: 10/77e4221b49867d50ce5ded87e91ff11f439b46aa4f01d2116f65402c3ac7dfba937d5bb29d50cecf4acda5aaf848d6ff4facd50b2428098c3990c46d58d5b539 languageName: node linkType: hard @@ -7315,13 +7278,13 @@ __metadata: dependencies: buffer-crc32: "npm:~0.2.3" fd-slicer: "npm:~1.1.0" - checksum: 8/7f21fe0bbad6e2cb130044a5d1d0d5a0e5bf3d8d4f8c4e6ee12163ce798fee3de7388d22a7a0907f563ac5f9d40f8699a223d3d5c1718da90b0156da6904022b + checksum: 10/1e4c311050dc0cf2ee3dbe8854fe0a6cde50e420b3e561a8d97042526b4cf7a0718d6c8d89e9e526a152f4a9cec55bcea9c3617264115f48bd6704cf12a04445 languageName: node linkType: hard "ylru@npm:^1.2.0": version: 1.3.2 resolution: "ylru@npm:1.3.2" - checksum: 8/b6bb3931144424114f2350c072cfeb180f205add93509c605ae025cbed8059846f8a5767655feeeab890d288b5b4c4b36f5d5d867ee4e6946c16bcc7ec3ddaee + checksum: 10/56ea73b6fd01170de8bf7f28347a832bfb87b0bf02deb8e43b1bbe11bdc14532b0fba2364d550ed20fd0ec2ec73a3e14b1b9324636718336accd325135643ae8 languageName: node linkType: hard diff --git a/tools/template/src/browser/hello-world.view.tsx b/tools/template/src/browser/hello-world.view.tsx index f7830b7bc6..337b1d08db 100644 --- a/tools/template/src/browser/hello-world.view.tsx +++ b/tools/template/src/browser/hello-world.view.tsx @@ -1,6 +1,5 @@ -import { observer } from 'mobx-react-lite'; import React from 'react'; import styles from './hello-world.module.less'; -export const HelloWorld = observer(() =>

    Hello world

    ); +export const HelloWorld = () =>

    Hello world

    ; diff --git a/yarn.lock b/yarn.lock index 1077c4c347..f46bc35d58 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2375,8 +2375,6 @@ __metadata: jsonc-parser: "npm:^2.1.0" keycode: "npm:^2.2.0" lodash: "npm:^4.17.21" - mobx: "npm:^6.12.0" - mobx-react-lite: "npm:^4.0.5" react: "npm:^18.2.0" react-dom: "npm:^18.2.0" react-is: "npm:^18.2.0" @@ -2508,8 +2506,6 @@ __metadata: less: "npm:^3.9.0" less-loader: "npm:^12.1.0" mini-css-extract-plugin: "npm:^2.7.7" - mobx: "npm:^6.12.0" - mobx-react-lite: "npm:^4.0.5" null-loader: "npm:^4.0.1" optimize-css-assets-webpack-plugin: "npm:^6.0.1" react-dom: "npm:^18.2.0" @@ -2597,6 +2593,7 @@ __metadata: "@opensumi/ide-extension": "workspace:*" "@opensumi/ide-main-layout": "workspace:*" "@opensumi/ide-markdown": "workspace:*" + "@opensumi/ide-monaco": "workspace:*" "@opensumi/ide-overlay": "workspace:*" "@opensumi/ide-theme": "workspace:*" "@types/node-fetch": "npm:^2.6.1" @@ -2788,6 +2785,7 @@ __metadata: "@opensumi/ide-core-browser": "workspace:*" "@opensumi/ide-core-common": "workspace:*" "@opensumi/ide-dev-tool": "workspace:*" + "@opensumi/ide-monaco": "workspace:*" "@opensumi/ide-theme": "workspace:*" languageName: unknown linkType: soft @@ -2827,6 +2825,7 @@ __metadata: "@opensumi/ide-core-browser": "workspace:*" "@opensumi/ide-core-common": "workspace:*" "@opensumi/ide-dev-tool": "workspace:*" + "@opensumi/ide-monaco": "workspace:*" "@opensumi/ide-theme": "workspace:*" languageName: unknown linkType: soft @@ -3113,6 +3112,7 @@ __metadata: "@opensumi/ide-core-browser": "workspace:*" "@opensumi/ide-core-common": "workspace:*" "@opensumi/ide-dev-tool": "workspace:*" + "@opensumi/ide-monaco": "workspace:*" "@opensumi/ide-theme": "workspace:*" languageName: unknown linkType: soft @@ -3158,6 +3158,7 @@ __metadata: "@opensumi/ide-editor": "workspace:*" "@opensumi/ide-file-service": "workspace:*" "@opensumi/ide-main-layout": "workspace:*" + "@opensumi/ide-monaco": "workspace:*" "@opensumi/ide-overlay": "workspace:*" "@opensumi/ide-status-bar": "workspace:*" "@opensumi/ide-theme": "workspace:*" @@ -13978,30 +13979,6 @@ __metadata: languageName: node linkType: hard -"mobx-react-lite@npm:^4.0.5": - version: 4.0.7 - resolution: "mobx-react-lite@npm:4.0.7" - dependencies: - use-sync-external-store: "npm:^1.2.0" - peerDependencies: - mobx: ^6.9.0 - react: ^16.8.0 || ^17 || ^18 - peerDependenciesMeta: - react-dom: - optional: true - react-native: - optional: true - checksum: 10/294754f8a3b44aa83ace02397530f059cce40dda09bdd546f0fca6b004be4dff2dfc6e180ab24686957e45d244408b08e13754cc74c3c2af3076f6ad0ecaa898 - languageName: node - linkType: hard - -"mobx@npm:^6.12.0": - version: 6.12.0 - resolution: "mobx@npm:6.12.0" - checksum: 10/65d784abfc141a807160e0147b25e56069fb8942caafe4ffcd53542f58695bcfa7840cc266a2386efb8f9c4e8ccc1ed662f0dab784a2e449e055a9d49a2a2126 - languageName: node - linkType: hard - "modify-values@npm:^1.0.1": version: 1.0.1 resolution: "modify-values@npm:1.0.1" @@ -19648,15 +19625,6 @@ __metadata: languageName: node linkType: hard -"use-sync-external-store@npm:^1.2.0": - version: 1.2.0 - resolution: "use-sync-external-store@npm:1.2.0" - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 10/a676216affc203876bd47981103f201f28c2731361bb186367e12d287a7566763213a8816910c6eb88265eccd4c230426eb783d64c373c4a180905be8820ed8e - languageName: node - linkType: hard - "user-home@npm:^2.0.0": version: 2.0.0 resolution: "user-home@npm:2.0.0"