Skip to content

Commit

Permalink
refactor: clean up legacy settings viewer (#2866)
Browse files Browse the repository at this point in the history
  • Loading branch information
Jason3S committed Oct 13, 2023
1 parent 73b7c03 commit 0b0028a
Show file tree
Hide file tree
Showing 57 changed files with 207 additions and 299 deletions.
3 changes: 1 addition & 2 deletions .eslintrc.js
Expand Up @@ -33,7 +33,6 @@ const config = {
'**/dist/**',
'**/build/**',
'package-lock.json',
'packages/client/settingsViewer/**',
'**/scripts/ts-json-schema-generator.cjs',
],
plugins: ['import', 'unicorn', 'simple-import-sort'],
Expand All @@ -58,7 +57,7 @@ const config = {
},
overrides: [
{
files: ['**/*.ts', '**/*.mts', '**/*.cts'],
files: ['**/*.ts', '**/*.mts', '**/*.cts', '**/*.tsx'],
extends: ['plugin:@typescript-eslint/recommended', 'plugin:import/typescript'],
parser: '@typescript-eslint/parser',
plugins: ['@typescript-eslint'],
Expand Down
3 changes: 1 addition & 2 deletions .gitignore
Expand Up @@ -42,8 +42,7 @@ node_modules

/temp
/build
modules/dist/
modules/*/dist/
/dist
packages/*/dist/
packages/*/out/
packages/*/temp/
Expand Down
1 change: 0 additions & 1 deletion .prettierignore
Expand Up @@ -14,7 +14,6 @@ packages/_integrationTests/out/
packages/*/dist/
packages/*/out/**
.yarn
packages/client/settingsViewer/
samples/php/**/vendor
**/scripts/ts-json-schema-generator.cjs
package-lock.json
Expand Down
11 changes: 3 additions & 8 deletions .vscodeignore
Expand Up @@ -26,13 +26,6 @@
!node_modules/regexp-worker/*
!node_modules/regexp-worker/lib/**/*.js

# Do not WebPack import-fresh and dependencies
# This is needed to support cosmiconfig
# !node_modules/import-fresh/**
# !node_modules/resolve-from/**
# !node_modules/parent-module/**
# !node_modules/callsites/**

# All Other Client and Server files.
!packages/_server/dist/api.js
!packages/_server/dist/main.cjs
Expand All @@ -42,10 +35,12 @@
!packages/_serverPatternMatcher/dist/main.cjs
!packages/_serverPatternMatcher/package.json

# Old settings viewer, to be removed
!packages/_settingsViewer/dist/webapp/*.{js,html,LICENSE.txt}

!packages/client/dist/**/*.js
!packages/client/License.txt
!packages/client/package.json
!packages/client/settingsViewer/webapp/*.{js,html,LICENSE.txt}
!resources/**

!packages/webview-ui/public/**
Expand Down
2 changes: 1 addition & 1 deletion cspell.config.yaml
Expand Up @@ -20,6 +20,7 @@ ignorePaths:
- cspell.json
- cspell*.{json,yaml}
- .cspell*.{json,yaml}
- dist
- fixtures/workspaces/**
- languageCodes.ts
- package-lock.json
Expand All @@ -28,7 +29,6 @@ ignorePaths:
- packages/client/resources/**
- packages/client/samples/**
- packages/client/server/**
- packages/client/settingsViewer/**
- packages/webview-ui/public/assets/**
- spell-checker-config.schema.json
- testFixtures
Expand Down
5 changes: 4 additions & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 4 additions & 3 deletions package.json
Expand Up @@ -178,8 +178,9 @@
},
{
"id": "cspell-info-explorer",
"title": "Todo Example",
"icon": "resources/todo-list.svg"
"title": "Spell Checker",
"icon": "resources/todo-list.svg",
"when": "config.cSpell.experimental.enableSettingsViewerV2"
}
]
},
Expand All @@ -200,7 +201,7 @@
{
"type": "webview",
"id": "cspell-info.todoView",
"name": "Todo Webview"
"name": "Spell Checker Todos"
}
]
},
Expand Down
4 changes: 4 additions & 0 deletions packages/_server/src/api/apiModels.ts
Expand Up @@ -40,7 +40,11 @@ export interface GitignoreInfo {
}

export interface IsSpellCheckEnabledResult {
/** The Uri used to determine the settings. */
uriUsed: string | undefined;
workspaceFolderUri: string | undefined;
languageEnabled: boolean | undefined;
languageId: string | undefined;
fileEnabled: boolean;
fileIsIncluded: boolean;
fileIsExcluded: boolean;
Expand Down
11 changes: 10 additions & 1 deletion packages/_server/src/server.mts
Expand Up @@ -358,7 +358,11 @@ export function run(): void {
): Promise<Api.GetConfigurationForDocumentResult> {
log('handleGetConfigurationForDocument', params.uri);
const { uri, workspaceConfig } = params;
const doc = uri && documents.get(uri);
const doc = (uri && documents.get(uri)) || undefined;
// console.warn('__handleGetConfigurationForDocument: %o', {
// params,
// doc: { uri: doc?.uri, languageId: doc?.languageId, version: doc?.version },
// });
const docSettings = stringifyPatterns((doc && (await getSettingsToUseForDocument(doc))) || undefined);
const activeSettings = await getActiveUriSettings(uri);
const settings = stringifyPatterns(activeSettings);
Expand Down Expand Up @@ -464,17 +468,22 @@ export function run(): void {
exclude: fileIsExcluded = false,
ignored: gitignored = undefined,
gitignoreInfo = undefined,
uriUsed = undefined,
} = uri ? await calcFileIncludeExclude(uri) : {};
const blockedReason = uri ? blockedFiles.get(uri) : undefined;
const fileEnabled = fileIsIncluded && !fileIsExcluded && !gitignored && !blockedReason;
const excludedBy = fileIsExcluded && uri ? await getExcludedBy(uri) : undefined;
const workspaceFolder = (uriUsed && (await documentSettings.matchingFoldersForUri(uriUsed))[0]) || undefined;
log('calcIncludeExcludeInfo done', params.uri);
return {
uriUsed,
workspaceFolderUri: workspaceFolder?.uri,
excludedBy,
fileEnabled,
fileIsExcluded,
fileIsIncluded,
languageEnabled,
languageId,
gitignored,
gitignoreInfo,
blockedReason: uri ? blockedFiles.get(uri) : undefined,
Expand Down
40 changes: 2 additions & 38 deletions packages/_server/src/serverApi.test.mts
@@ -1,7 +1,8 @@
import { beforeEach, describe, expect, test, vi } from 'vitest';

import type { MessageConnection, OnSpellCheckDocumentStep, ServerSideHandlers, WorkspaceConfigForDocumentRequest } from './api.js';
import type { MessageConnection, OnSpellCheckDocumentStep, WorkspaceConfigForDocumentRequest } from './api.js';
import { createServerApi } from './serverApi.mjs';
import { mockHandlers } from './test/test.api.js';

const connection: MessageConnection = {
onNotification: vi.fn(),
Expand Down Expand Up @@ -46,40 +47,3 @@ describe('Validate Client Api', () => {
expect(mockConnection.sendRequest).toHaveBeenLastCalledWith(expect.stringContaining('onWorkspaceConfigForDocumentRequest'), [req]);
});
});

function mockHandlers(): ServerSideHandlers {
return {
serverNotifications: {
notifyConfigChange: vi.fn(),
registerConfigurationFile: vi.fn(),
},
serverRequests: {
getConfigurationForDocument: vi.fn(() => ({
languageEnabled: undefined,
fileEnabled: true,
fileIsIncluded: true,
fileIsExcluded: false,
excludedBy: undefined,
gitignored: undefined,
gitignoreInfo: undefined,
blockedReason: undefined,
settings: undefined,
docSettings: undefined,
configFiles: [],
configTargets: [],
})),
isSpellCheckEnabled: vi.fn(() => ({
languageEnabled: undefined,
fileEnabled: true,
fileIsIncluded: true,
fileIsExcluded: false,
excludedBy: undefined,
gitignored: undefined,
gitignoreInfo: undefined,
blockedReason: undefined,
})),
splitTextIntoWords: vi.fn(() => ({ words: [] })),
spellingSuggestions: vi.fn(),
},
};
}
37 changes: 36 additions & 1 deletion packages/_server/src/test/test.api.ts
Expand Up @@ -2,7 +2,7 @@ import type { ExcludeDisposableHybrid } from 'utils-disposables';
import { injectDisposable } from 'utils-disposables';
import { vi } from 'vitest';

import type { ServerSideApi } from '../api.js';
import type { IsSpellCheckEnabledResult, ServerSideApi, ServerSideHandlers } from '../api.js';

export function createMockServerSideApi() {
const api = {
Expand All @@ -26,3 +26,38 @@ export function createMockServerSideApi() {

return vi.mocked(injectDisposable<ExcludeDisposableHybrid<ServerSideApi>>(api, () => undefined));
}

export function mockHandlers(): ServerSideHandlers {
const sampleIsSpellCheckEnabledResult: IsSpellCheckEnabledResult = {
uriUsed: undefined,
workspaceFolderUri: undefined,
languageEnabled: undefined,
languageId: undefined,
fileEnabled: true,
fileIsIncluded: true,
fileIsExcluded: false,
excludedBy: undefined,
gitignored: undefined,
gitignoreInfo: undefined,
blockedReason: undefined,
};

return {
serverNotifications: {
notifyConfigChange: vi.fn(),
registerConfigurationFile: vi.fn(),
},
serverRequests: {
getConfigurationForDocument: vi.fn(() => ({
...sampleIsSpellCheckEnabledResult,
settings: undefined,
docSettings: undefined,
configFiles: [],
configTargets: [],
})),
isSpellCheckEnabled: vi.fn(() => ({ ...sampleIsSpellCheckEnabledResult })),
splitTextIntoWords: vi.fn(() => ({ words: [] })),
spellingSuggestions: vi.fn(),
},
};
}
6 changes: 3 additions & 3 deletions packages/_settingsViewer/.vscode/launch.json
Expand Up @@ -9,23 +9,23 @@
"request": "attach",
"name": "Viewer: Attach to Chrome",
"port": 9222,
"webRoot": "${workspaceFolder}/../client/settingsViewer/webapp"
"webRoot": "${workspaceFolder}/dist/webapp"
},
{
"type": "chrome",
"request": "launch",
"name": "Viewer: Launch Viewer Chrome",
"url": "http://localhost:3000",
"preLaunchTask": "Client Build",
"webRoot": "${workspaceFolder}/../client/settingsViewer/webapp"
"webRoot": "${workspaceFolder}/dist/webapp"
},
{
"type": "chrome",
"request": "launch",
"name": "Viewer: Launch Tester Chrome",
"url": "http://localhost:3000/test.html",
"preLaunchTask": "Client Build",
"webRoot": "${workspaceFolder}/../client/settingsViewer/webapp"
"webRoot": "${workspaceFolder}/dist/webapp"
}
]
}
24 changes: 14 additions & 10 deletions packages/_settingsViewer/package.json
Expand Up @@ -3,11 +3,12 @@
"private": true,
"version": "2.0.0",
"description": "Webview for VS Code to edit cspell settings",
"typings": "out",
"main": "out",
"type": "commonjs",
"typings": "dist/api/index.d.ts",
"main": "dist/api/index.js",
"scripts": {
"build": "tsc -p . && npm run webpack",
"clean": "shx rm -rf ../client/settingsViewer ./out",
"clean": "shx rm -rf ./dist ./out",
"build-production": "npm run clean && npm run build",
"coverage": "jest --coverage src",
"start:dev": "webpack server --config webpack.dev.js",
Expand All @@ -23,27 +24,27 @@
"@material-ui/core": "^4.12.4",
"@material-ui/icons": "^4.11.3",
"@types/clone-deep": "^4.0.2",
"@types/react": "^17.0.68",
"@types/react-dom": "^17.0.21",
"@types/react-test-renderer": "^17.0.5",
"@types/react": "^17.0.68",
"browser-resolve": "^2.0.0",
"clone-deep": "^4.0.1",
"eslint-plugin-react": "^7.33.2",
"html-webpack-plugin": "^5.5.3",
"mobx-react-lite": "^3.4.3",
"mobx-react": "^7.6.0",
"mobx": "^6.10.2",
"mobx-react": "^7.6.0",
"mobx-react-lite": "^3.4.3",
"path-browserify": "^1.0.1",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-test-renderer": "^17.0.2",
"react": "^17.0.2",
"terser-webpack-plugin": "^5.3.9",
"terser": "^5.21.0",
"terser-webpack-plugin": "^5.3.9",
"ts-loader": "^9.5.0",
"vscode-uri": "^3.0.8",
"webpack": "^5.88.2",
"webpack-cli": "^5.1.4",
"webpack-dev-server": "^4.15.1",
"webpack": "^5.88.2"
"webpack-dev-server": "^4.15.1"
},
"files": [
"out/api/**",
Expand All @@ -55,5 +56,8 @@
],
"engines": {
"node": ">18.0.0"
},
"dependencies": {
"webview-api": "file:../webview-api"
}
}
6 changes: 2 additions & 4 deletions packages/_settingsViewer/src/api/MessageBus.ts
@@ -1,7 +1,5 @@
import type { DefinedCommands } from '.';
import { isMessageOf } from '.';
import type { CommandMessage, Commands } from './message';
import { isMessage } from './message';
import type { CommandMessage, Commands, DefinedCommands } from './message';
import { isMessage, isMessageOf } from './message';
import type { BaseMessageEvent, WebviewApi } from './WebviewApi';

export interface MsgListener<M extends CommandMessage> {
Expand Down
1 change: 1 addition & 0 deletions packages/_settingsViewer/src/api/index.ts
@@ -1,2 +1,3 @@
export * from './message';
export * from './MessageBus';
export * from './WebviewApi';
2 changes: 1 addition & 1 deletion packages/_settingsViewer/src/api/message.ts
@@ -1,4 +1,4 @@
import type { ConfigTarget, Settings } from './settings';
import type { ConfigTarget, Settings } from 'webview-api';

/**
* @private
Expand Down
2 changes: 0 additions & 2 deletions packages/_settingsViewer/src/api/settings/index.ts

This file was deleted.

0 comments on commit 0b0028a

Please sign in to comment.