Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: add @opensumi/ide-utils module #784

Merged
merged 23 commits into from
Apr 27, 2022
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
33afb7d
refactor: add @opensumi/ide-utils module
erha19 Apr 2, 2022
0fe72de
fix: module and function ref path
erha19 Apr 6, 2022
087e769
test: move utils test to utils module
erha19 Apr 6, 2022
98d38e1
chore: upgrade to 2.16.6 version
erha19 Apr 6, 2022
1f079ac
refactor: use common OperatingSystem define on platform and os file
erha19 Apr 6, 2022
99ab217
chore: remove useless utils
erha19 Apr 6, 2022
a6f2f05
test: fix unit test
erha19 Apr 6, 2022
98bb0c2
test: use ResourceLoader on jsdom to make platform correctly
erha19 Apr 6, 2022
f32d193
chore: make @opensumi/ide-utils to be public package
erha19 Apr 7, 2022
dbeca32
Merge branch 'main' of github.com:opensumi/core into refactor/use-com…
erha19 Apr 26, 2022
4b7d7fc
chore: merge cancelToken defined
erha19 Apr 26, 2022
80af0d3
Merge branch 'main' of github.com:opensumi/core into refactor/use-com…
erha19 Apr 26, 2022
dcb49c8
chore: fix function ref
erha19 Apr 26, 2022
6954980
Merge branch 'main' of github.com:opensumi/core into refactor/use-com…
erha19 Apr 26, 2022
bf65ec9
Merge branch 'main' of github.com:opensumi/core into refactor/use-com…
erha19 Apr 26, 2022
2193397
chore: add userAgent environment in jsdom
erha19 Apr 27, 2022
f8d38d3
chore: add prettierPath config
erha19 Apr 27, 2022
9e4f524
chore: update jest.config.js
erha19 Apr 27, 2022
032e78f
test: add more arrays unit test
erha19 Apr 27, 2022
9eae0dd
chore: use v8 coverageProvider
erha19 Apr 27, 2022
4c65f92
chore: use babel provider
erha19 Apr 27, 2022
1f39d15
chore: add codecov.yml
bytemain Apr 27, 2022
a13bc45
chore: update utils version
bytemain Apr 27, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
8 changes: 8 additions & 0 deletions configs/ts/references/tsconfig.utils.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"extends": "../tsconfig.base.json",
"compilerOptions": {
"rootDir": "../../../packages/utils/src",
"outDir": "../../../packages/utils/lib"
},
"include": ["../../../packages/utils/src"]
}
3 changes: 3 additions & 0 deletions configs/ts/tsconfig.build.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
{
"references": [
{
"path": "./references/tsconfig.utils.json"
},
{
"path": "./references/tsconfig.core-common.json"
},
Expand Down
2 changes: 2 additions & 0 deletions configs/ts/tsconfig.resolve.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
"compilerOptions": {
"baseUrl": "..",
"paths": {
"@opensumi/ide-utils": ["../packages/utils/src/index.ts"],
"@opensumi/ide-utils/lib/*": ["../packages/utils/src/*"],
"@opensumi/ide-addons": ["../packages/addons/src/index.ts"],
"@opensumi/ide-addons/lib/*": ["../packages/addons/src/*"],
"@opensumi/ide-comments": ["../packages/comments/src/index.ts"],
Expand Down
7 changes: 4 additions & 3 deletions packages/addons/src/browser/file-drop.service.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
import { Injectable, Autowired } from '@opensumi/di';
import { Path } from '@opensumi/ide-components/lib/utils/path';
import { Uri, formatLocalize } from '@opensumi/ide-core-browser/lib';
import { formatLocalize } from '@opensumi/ide-core-browser';
import { IStatusBarService, StatusBarAlignment, StatusBarEntryAccessor } from '@opensumi/ide-core-browser/lib/services';
import { WithEventBus } from '@opensumi/ide-core-common/lib';
import { WithEventBus, Uri, path } from '@opensumi/ide-core-common';
import { FileTreeDropEvent } from '@opensumi/ide-core-common/lib/types/dnd';
import { IFileServiceClient } from '@opensumi/ide-file-service/lib/common';

const { Path } = path;

import {
IFileDropFrontendService,
IFileDropBackendService,
Expand Down
6 changes: 4 additions & 2 deletions packages/comments/src/browser/comments.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@ import {
IDisposable,
positionToRange,
Deferred,
path,
LRUCache,
} from '@opensumi/ide-core-browser';
import { LRUCache } from '@opensumi/ide-core-common/lib/map';
import { dirname } from '@opensumi/ide-core-common/lib/path';
import { IEditor } from '@opensumi/ide-editor';
import {
IEditorDecorationCollectionService,
Expand All @@ -46,6 +46,8 @@ import {
import { CommentsPanel } from './comments-panel.view';
import { CommentsThread } from './comments-thread';

const { dirname } = path;

@Injectable()
export class CommentsService extends Disposable implements ICommentsService {
@Autowired(INJECTOR_TOKEN)
Expand Down
1 change: 1 addition & 0 deletions packages/components/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
"dependencies": {
"@ant-design/icons": "^4.6.4",
"@types/react-window": "^1.8.5",
"@opensumi/ide-utils": "2.16.6",
bytemain marked this conversation as resolved.
Show resolved Hide resolved
"fuzzy": "^0.1.3",
"lodash": "^4.17.15",
"raf": "^3.4.1",
Expand Down
4 changes: 2 additions & 2 deletions packages/components/src/recycle-tree/RecycleTree.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@ import fuzzy from 'fuzzy';
import React from 'react';
import { FixedSizeList, VariableSizeList, shouldComponentUpdate, ListProps } from 'react-window';

import { DisposableCollection, Emitter, Event, Disposable } from '@opensumi/ide-utils';

import { ScrollbarsVirtualList } from '../scrollbars';
import { DisposableCollection, Emitter, Event, Disposable } from '../utils';

import { RenamePromptHandle, PromptHandle } from './prompt';
import { NewPromptHandle } from './prompt/NewPromptHandle';
Expand All @@ -12,7 +13,6 @@ import { TreeModel } from './tree/model/TreeModel';
import { INodeRendererProps, NodeRendererWrap, INodeRenderer } from './TreeNodeRendererWrap';
import { TreeNodeType, TreeNodeEvent } from './types';


export type IRecycleTreeAlign = 'smart' | 'start' | 'center' | 'end' | 'auto';

export interface IModelChange {
Expand Down
3 changes: 2 additions & 1 deletion packages/components/src/recycle-tree/basic/tree-service.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { DisposableCollection, Emitter } from '../../utils';
import { DisposableCollection, Emitter } from '@opensumi/ide-utils';

import { TreeModel, Tree, Decoration, DecorationsManager } from '../tree';
import { TreeNodeEvent } from '../types';

Expand Down
5 changes: 3 additions & 2 deletions packages/components/src/recycle-tree/prompt/PromptHandle.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { DisposableCollection, Emitter, Event, IAsyncResult } from '@opensumi/ide-utils';

import { bindInputElement, ProxiedInputProp } from '../../input';
import { DisposableCollection, Emitter, Event, IAsyncResult } from '../../utils';

const delay = (ms) => new Promise((res) => setTimeout(res, ms));

Expand Down Expand Up @@ -171,7 +172,7 @@ export abstract class PromptHandle {
return;
}
// 获取最顶层的父级焦点容器
let element = this.focusPrevActiveElement();
const element = this.focusPrevActiveElement();
this._destroyed = true;
this.$.removeEventListener('click', this.handleClick);
this.$.removeEventListener('keyup', this.handleKeyup);
Expand Down
3 changes: 2 additions & 1 deletion packages/components/src/recycle-tree/tree/Tree.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { Emitter, DisposableCollection } from '../../utils';
import { Emitter, DisposableCollection } from '@opensumi/ide-utils';

import { ITreeNodeOrCompositeTreeNode, ITree, ICompositeTreeNode } from '../types';

import { TreeNode, CompositeTreeNode } from './TreeNode';
Expand Down
4 changes: 3 additions & 1 deletion packages/components/src/recycle-tree/tree/TreeNode.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { Event, Emitter, DisposableCollection, Path } from '../../utils';
import { Event, Emitter, DisposableCollection, path } from '@opensumi/ide-utils';

import {
IWatcherCallback,
IWatchTerminator,
Expand All @@ -17,6 +18,7 @@ import {
IAccessibilityInformation,
} from '../types';

const { Path } = path;
/**
* 裁剪数组
*
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { DisposableCollection } from '../../../utils';
import { DisposableCollection } from '@opensumi/ide-utils';

import { ITreeNodeOrCompositeTreeNode } from '../../types';

import { Decoration, TargetMatchMode, IDecorationEventData } from './Decoration';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { IDisposable, Disposable, Emitter } from '../../../utils';
import { IDisposable, Disposable, Emitter } from '@opensumi/ide-utils';

import { ITreeNode, ICompositeTreeNode } from '../../types';
import { TreeNode } from '../TreeNode';

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { IDisposable, DisposableCollection } from '../../../utils';
import { IDisposable, DisposableCollection } from '@opensumi/ide-utils';

import { TreeNodeEvent, ITreeNodeOrCompositeTreeNode } from '../../types';
import { TreeNode, CompositeTreeNode } from '../TreeNode';

Expand Down
3 changes: 2 additions & 1 deletion packages/components/src/recycle-tree/tree/model/TreeModel.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { Event, Emitter } from '../../../utils';
import { Event, Emitter } from '@opensumi/ide-utils';

import { ICompositeTreeNode, TreeNodeEvent } from '../../types';
import { CompositeTreeNode, TreeNode } from '../TreeNode';

Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
import { Event, Emitter, Path } from '../../../../utils';
import { Event, Emitter, path } from '@opensumi/ide-utils';

import { TreeNodeEvent, ITreeNodeOrCompositeTreeNode } from '../../../types';
import { CompositeTreeNode, TreeNode } from '../../TreeNode';

import { ISerializableState } from './types';

const { Path } = path;

export enum Operation {
SetExpanded = 1,
SetCollapsed,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Event, Emitter, IDisposable, DisposableCollection } from '../../../../utils';
import { Event, Emitter, IDisposable, DisposableCollection } from '@opensumi/ide-utils';

import { TreeStateManager, IPathChange, IExpansionStateChange } from './TreeStateManager';
import { ISerializableState, TreeStateWatcherChangeType as TreeStateChangeType } from './types';
Expand Down
2 changes: 1 addition & 1 deletion packages/components/src/recycle-tree/types/watcher.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { IDisposable } from '../../utils';
import { IDisposable } from '@opensumi/ide-utils';

import { ITreeNode, ICompositeTreeNode, ITreeNodeOrCompositeTreeNode } from './tree-node';

Expand Down
10 changes: 3 additions & 7 deletions packages/components/src/utils/index.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
export * from './deprecated';
export * from './disposable';
export * from './event';
export * from './iterator';
export * from './linkedList';
export * from './warning';
export * from './os';
export * from './process';
export * from './path';
export * from './type';
export * from './motion';
export * from './raf';
1 change: 0 additions & 1 deletion packages/connection/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
"@opensumi/ide-core-common": "2.16.6",
"@opensumi/vscode-jsonrpc": "^8.0.0-next.2",
"path-match": "^1.2.4",
"shortid": "^2.2.14",
"ws": "^7.2.0"
},
"devDependencies": {
Expand Down
1 change: 1 addition & 0 deletions packages/core-browser/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@
"react-window": "^1.8.5",
"reconnecting-websocket": "^4.2.0",
"resize-observer-polyfill": "1.5.1",
"strip-json-comments": "3.0.1",
"vscode-languageserver-protocol": "^3.14.1",
"vscode-textmate": "5.4.0"
}
Expand Down
4 changes: 2 additions & 2 deletions packages/core-browser/src/components/actions/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import React from 'react';

import { Button, CheckBox, Icon } from '@opensumi/ide-components';
import { ClickParam, Menu } from '@opensumi/ide-components/lib/menu';
import { mnemonicButtonLabel } from '@opensumi/ide-core-common/lib/utils/strings';
import { strings } from '@opensumi/ide-core-common';

import {
MenuNode,
Expand Down Expand Up @@ -31,7 +31,7 @@ const MenuAction: React.FC<{
// 这里遵循 native menu 的原则,保留一个 icon 位置
<div className={clsx(styles.menuAction, { [styles.disabled]: disabled, [styles.checked]: data.checked })}>
<div className={styles.icon}>{data.checked ? <Icon icon='check' /> : null}</div>
<div className={styles.label}>{data.label ? mnemonicButtonLabel(data.label, true) : ''}</div>
<div className={styles.label}>{data.label ? strings.mnemonicButtonLabel(data.label, true) : ''}</div>
<div className={styles.tip}>
{data.keybinding ? <div className={styles.shortcut}>{data.keybinding}</div> : null}
{hasSubmenu ? (
Expand Down
3 changes: 1 addition & 2 deletions packages/core-browser/src/core-preferences.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { Injector } from '@opensumi/di';
import { localize, getAvailableLanguages, isElectronRenderer, isWindows } from '@opensumi/ide-core-common';
import { SUPPORTED_ENCODINGS } from '@opensumi/ide-core-common/lib/const';
import { localize, getAvailableLanguages, isElectronRenderer, SUPPORTED_ENCODINGS } from '@opensumi/ide-core-common';

import { createPreferenceProxy, PreferenceProxy, PreferenceService, PreferenceSchema } from './preferences';

Expand Down
2 changes: 1 addition & 1 deletion packages/core-browser/src/dom/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Disposable, Emitter, Event as BaseEvent, IDisposable } from '@opensumi/ide-core-common';
import { isWebKit } from '@opensumi/ide-core-common/lib/platform';
import { isWebKit } from '@opensumi/ide-core-common';

export const EventType = {
// Mouse
Expand Down
3 changes: 1 addition & 2 deletions packages/core-browser/src/encoding-registry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@
// based on https://github.com/microsoft/vscode/blob/04c36be045a94fee58e5f8992d3e3fd980294a84/src/vs/workbench/services/textfile/browser/textFileService.ts#L491

import { Injectable, Autowired } from '@opensumi/di';
import { URI, Disposable, IDisposable } from '@opensumi/ide-core-common';
import { UTF8, encodingExists } from '@opensumi/ide-core-common/lib/encoding';
import { URI, Disposable, IDisposable, UTF8, encodingExists } from '@opensumi/ide-core-common';

import { PreferenceService } from './preferences';
import { getLanguageIdFromMonaco } from './services/label-service';
Expand Down
2 changes: 1 addition & 1 deletion packages/core-browser/src/keyboard/keys.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
// Some code copied and modified from https://github.com/eclipse-theia/theia/tree/v1.14.0/packages/core/src/browser/keyboard/keys.ts

import { isOSX } from '@opensumi/ide-core-common';
import { isWindows } from '@opensumi/ide-core-common/lib/platform';
import { isWindows } from '@opensumi/ide-core-common';
import { KeyCode as KeyCodeEnum } from '@opensumi/monaco-editor-core/esm/vs/base/common/keyCodes';

export type KeySequence = KeyCode[];
Expand Down
3 changes: 1 addition & 2 deletions packages/core-browser/src/menu/next/ctxmenu-service.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { Autowired, Injectable, Optional, INJECTOR_TOKEN, Injector } from '@opensumi/di';
import { IDisposable, Disposable } from '@opensumi/ide-core-common/lib/disposable';
import { Event, Emitter } from '@opensumi/ide-core-common/lib/event';
import { IDisposable, Disposable, Event, Emitter } from '@opensumi/ide-core-common';

import { IContextKeyService } from '../../context-key';

Expand Down
6 changes: 2 additions & 4 deletions packages/core-browser/src/menu/next/menu.interface.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
import { Autowired, Injectable, Optional } from '@opensumi/di';
import { CommandRegistry, CommandService, Command, isOSX } from '@opensumi/ide-core-common';
import { IDisposable } from '@opensumi/ide-core-common/lib/disposable';
import { Event } from '@opensumi/ide-core-common/lib/event';
import { CommandRegistry, CommandService, Command, IDisposable, isMacintosh, Event } from '@opensumi/ide-core-common';

import { IContextKeyService } from '../../context-key';
import { KeybindingRegistry } from '../../keybinding';
Expand Down Expand Up @@ -100,7 +98,7 @@ export class MenuItemNode extends MenuNode {

const isKeyCombination =
Array.isArray(highPriorityKeybinding.resolved) && highPriorityKeybinding.resolved.length > 1;
let keybinding = this.keybindings.acceleratorFor(highPriorityKeybinding, isOSX ? '' : '+').join(' ');
let keybinding = this.keybindings.acceleratorFor(highPriorityKeybinding, isMacintosh ? '' : '+').join(' ');
if (isKeyCombination) {
keybinding = `[${keybinding}]`;
}
Expand Down
3 changes: 1 addition & 2 deletions packages/core-browser/src/menu/next/menubar-service.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { Injectable, Autowired } from '@opensumi/di';
import { IDisposable, Disposable } from '@opensumi/ide-core-common/lib/disposable';
import { Event, Emitter } from '@opensumi/ide-core-common/lib/event';
import { IDisposable, Disposable, Event, Emitter } from '@opensumi/ide-core-common';

import { IMenubarItem, IMenuRegistry, MenuNode } from './base';
import { generateMergedCtxMenu } from './menu-util';
Expand Down
12 changes: 7 additions & 5 deletions packages/core-browser/src/menu/next/renderer/ctxmenu/electron.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Injectable, Autowired } from '@opensumi/di';
import { Disposable, INativeMenuTemplate, CommandService, IElectronMainMenuService } from '@opensumi/ide-core-common';
import { mnemonicButtonLabel } from '@opensumi/ide-core-common/lib/utils/strings';
import { INativeMenuTemplate, CommandService, IElectronMainMenuService } from '@opensumi/ide-core-common';
import { strings, Disposable } from '@opensumi/ide-core-common';

import { electronEnv } from '../../../../utils';
import { MenuNode } from '../../base';
Expand Down Expand Up @@ -33,15 +33,17 @@ export class ElectronMenuFactory extends Disposable {
if (menuNode.id === SubmenuItemNode.ID) {
const submenuTemplate = this.getTemplate(menuNode.children, map, context);
return {
label: `${mnemonicButtonLabel(menuNode.label, true)}`,
label: `${strings.mnemonicButtonLabel(menuNode.label, true)}`,
submenu: Array.isArray(submenuTemplate) && submenuTemplate.length ? submenuTemplate : undefined,
};
} else {
this.bindAction(menuNode, map, context);
return {
type: menuNode.checked ? 'checkbox' : undefined,
checked: menuNode.checked ? menuNode.checked : false,
label: `${mnemonicButtonLabel(menuNode.label, true)} ${menuNode.isKeyCombination ? menuNode.keybinding : ''}`,
label: `${strings.mnemonicButtonLabel(menuNode.label, true)} ${
menuNode.isKeyCombination ? menuNode.keybinding : ''
}`,
id: menuNode.id,
action: true,
role: menuNode.nativeRole,
Expand Down Expand Up @@ -185,7 +187,7 @@ export class ElectronMenuBarService implements IElectronMenuBarService {
const templates = this.factory.getTemplate(menuNodes, this.menuBarActions);
if (templates && templates.length > 0) {
const template: INativeMenuTemplate = {
label: mnemonicButtonLabel(item.label, true),
label: strings.mnemonicButtonLabel(item.label, true),
submenu: templates,
};
if (item.nativeRole) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Injectable, Autowired } from '@opensumi/di';
import { IDisposable, Disposable } from '@opensumi/ide-core-common/lib/disposable';
import { IDisposable, Disposable } from '@opensumi/ide-core-common';

import { IToolbarRegistry, createToolbarActionBtn } from '../../toolbar';
import { createToolbarActionSelect } from '../../toolbar/components/select';
Expand Down
4 changes: 2 additions & 2 deletions packages/core-browser/src/preferences/preference-provider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@ import {
Event,
URI,
Deferred,
JSONUtils,
JSONValue,
isEmptyObject,
FileStat,
} from '@opensumi/ide-core-common';
import { PreferenceScope } from '@opensumi/ide-core-common/lib/preferences/preference-scope';

import { JSONUtils, JSONValue } from '../utils';

import { getExternalPreferenceProvider, getAllExternalProviders } from './early-preferences';
export interface IResolvedPreferences {
default: { [key: string]: any };
Expand Down
4 changes: 3 additions & 1 deletion packages/core-browser/src/preferences/preference-service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ import {
URI,
isUndefined,
isEmptyObject,
objects,
LRUMap,
deepClone,
} from '@opensumi/ide-core-common';

import { PreferenceConfigurations } from './preference-configurations';
Expand All @@ -31,6 +31,8 @@ export interface PreferenceChange {
affects(resourceUri?: string): boolean;
}

const { deepClone } = objects;

export class PreferenceChangeImpl implements PreferenceChange {
constructor(private change: PreferenceProviderDataChange) {}

Expand Down
Loading