@lvce-editor/api 8.48.0 → 8.49.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -11,6 +11,7 @@ export { executeFormattingProvider, getFormattingProviderRegistrySnapshot, regis
11
11
  export { exists, mkdir, readDirWithFileTypes, readFile, remove, stat, writeFile } from './parts/FileSystem/FileSystem.ts';
12
12
  export { confirm, getWorkspaceFolder, handleWorkspaceRefresh, openUri } from './parts/Host/Host.ts';
13
13
  export { executeHoverProvider, getHoverProviderRegistrySnapshot, registerHoverProvider, resetHoverProviderRegistry } from './parts/Hover/Hover.ts';
14
+ export { getLanguageServerRegistrySnapshot, registerLanguageServer, resetLanguageServerRegistry } from './parts/LanguageServer/LanguageServer.ts';
14
15
  export { registerBraceCompletionProvider, registerClosingTagProvider, registerCodeActionsProvider, registerCommentProvider, registerDefinitionProvider, registerImplementationProvider, registerReferenceProvider, registerRenameProvider, registerSelectionProvider, registerTabCompletionProvider, registerTypeDefinitionProvider, resetLanguageProviderRegistry, } from './parts/LanguageProvider/LanguageProvider.ts';
15
16
  export type { LanguageProvider } from './parts/LanguageProvider/LanguageProvider.ts';
16
17
  export { executeSourceControlAcceptInput, executeSourceControlAdd, executeSourceControlDiscard, executeSourceControlGenerateCommitMessage, executeSourceControlGetBadgeCount, executeSourceControlGetChangedFiles, executeSourceControlGetFeatures, executeSourceControlGetFileBefore, executeSourceControlGetFileDecorations, executeSourceControlGetGroups, executeSourceControlIsActive, registerSourceControlProvider, resetSourceControlProviderRegistry, } from './parts/SourceControl/SourceControl.ts';
@@ -31,6 +32,7 @@ export type { FormattingEdit, FormattingProvider, FormattingProviderRegistrySnap
31
32
  export type { FileSystemDirent } from './parts/FileSystem/FileSystem.ts';
32
33
  export type { HandleExtensionManagementMessagePortOptions } from './parts/HandleExtensionManagementMessagePort/HandleExtensionManagementMessagePort.ts';
33
34
  export type { HoverProvider, HoverProviderRegistrySnapshot, HoverResult, RegisteredHoverProvider } from './parts/Hover/Hover.ts';
35
+ export type { LanguageServerOptions, LanguageServerRegistrySnapshot } from './parts/LanguageServer/LanguageServer.ts';
34
36
  export type { OutputChannel } from './parts/OutputChannelHandle/OutputChannelHandle.ts';
35
37
  export type { OutputChannelRegistrySnapshot } from './parts/OutputChannelRegistrySnapshot/OutputChannelRegistrySnapshot.ts';
36
38
  export type { RegisteredOutputChannel } from './parts/RegisteredOutputChannel/RegisteredOutputChannel.ts';
package/dist/index.js CHANGED
@@ -11,6 +11,7 @@ export { executeFormattingProvider, getFormattingProviderRegistrySnapshot, regis
11
11
  export { exists, mkdir, readDirWithFileTypes, readFile, remove, stat, writeFile } from "./parts/FileSystem/FileSystem.js";
12
12
  export { confirm, getWorkspaceFolder, handleWorkspaceRefresh, openUri } from "./parts/Host/Host.js";
13
13
  export { executeHoverProvider, getHoverProviderRegistrySnapshot, registerHoverProvider, resetHoverProviderRegistry } from "./parts/Hover/Hover.js";
14
+ export { getLanguageServerRegistrySnapshot, registerLanguageServer, resetLanguageServerRegistry } from "./parts/LanguageServer/LanguageServer.js";
14
15
  export { registerBraceCompletionProvider, registerClosingTagProvider, registerCodeActionsProvider, registerCommentProvider, registerDefinitionProvider, registerImplementationProvider, registerReferenceProvider, registerRenameProvider, registerSelectionProvider, registerTabCompletionProvider, registerTypeDefinitionProvider, resetLanguageProviderRegistry, } from "./parts/LanguageProvider/LanguageProvider.js";
15
16
  export { executeSourceControlAcceptInput, executeSourceControlAdd, executeSourceControlDiscard, executeSourceControlGenerateCommitMessage, executeSourceControlGetBadgeCount, executeSourceControlGetChangedFiles, executeSourceControlGetFeatures, executeSourceControlGetFileBefore, executeSourceControlGetFileDecorations, executeSourceControlGetGroups, executeSourceControlIsActive, registerSourceControlProvider, resetSourceControlProviderRegistry, } from "./parts/SourceControl/SourceControl.js";
16
17
  export { createViewInstance, dispatchViewEvent, disposeViewInstance, executeViewProvider, getViewRegistrySnapshot, renderViewInstance, registerView, resetViewRegistry, saveViewInstanceState, } from "./parts/ViewRegistry/ViewRegistry.js";
@@ -32,6 +32,7 @@ export declare const commandMap: {
32
32
  'ExtensionApi.getDiagnosticProviderRegistrySnapshot': () => import("../DiagnosticProviderRegistrySnapshot/DiagnosticProviderRegistrySnapshot.ts").DiagnosticProviderRegistrySnapshot;
33
33
  'ExtensionApi.getFormattingProviderRegistrySnapshot': () => import("../FormattingProviderRegistrySnapshot/FormattingProviderRegistrySnapshot.ts").FormattingProviderRegistrySnapshot;
34
34
  'ExtensionApi.getHoverProviderRegistrySnapshot': () => import("../HoverProviderRegistrySnapshot/HoverProviderRegistrySnapshot.ts").HoverProviderRegistrySnapshot;
35
+ 'ExtensionApi.getLanguageServerRegistrySnapshot': () => import("../LanguageServerRegistrySnapshot/LanguageServerRegistrySnapshot.ts").LanguageServerRegistrySnapshot;
35
36
  'ExtensionApi.getOutputChannelRegistrySnapshot': () => import("../OutputChannelRegistrySnapshot/OutputChannelRegistrySnapshot.ts").OutputChannelRegistrySnapshot;
36
37
  'ExtensionApi.getSourceControlProviderRegistrySnapshot': () => import("../SourceControlProviderRegistrySnapshot/SourceControlProviderRegistrySnapshot.ts").SourceControlProviderRegistrySnapshot;
37
38
  'ExtensionApi.getStatusBarItems': () => readonly import("../StatusBarItem/StatusBarItem.ts").StatusBarItem[];
@@ -31,6 +31,7 @@ export declare const commandMap: {
31
31
  'ExtensionApi.getDiagnosticProviderRegistrySnapshot': () => import("../DiagnosticProviderRegistrySnapshot/DiagnosticProviderRegistrySnapshot.ts").DiagnosticProviderRegistrySnapshot;
32
32
  'ExtensionApi.getFormattingProviderRegistrySnapshot': () => import("../FormattingProviderRegistrySnapshot/FormattingProviderRegistrySnapshot.ts").FormattingProviderRegistrySnapshot;
33
33
  'ExtensionApi.getHoverProviderRegistrySnapshot': () => import("../HoverProviderRegistrySnapshot/HoverProviderRegistrySnapshot.ts").HoverProviderRegistrySnapshot;
34
+ 'ExtensionApi.getLanguageServerRegistrySnapshot': () => import("../LanguageServerRegistrySnapshot/LanguageServerRegistrySnapshot.ts").LanguageServerRegistrySnapshot;
34
35
  'ExtensionApi.getOutputChannelRegistrySnapshot': () => import("../OutputChannelRegistrySnapshot/OutputChannelRegistrySnapshot.ts").OutputChannelRegistrySnapshot;
35
36
  'ExtensionApi.getSourceControlProviderRegistrySnapshot': () => import("../SourceControlProviderRegistrySnapshot/SourceControlProviderRegistrySnapshot.ts").SourceControlProviderRegistrySnapshot;
36
37
  'ExtensionApi.getStatusBarItems': () => readonly import("../StatusBarItem/StatusBarItem.ts").StatusBarItem[];
@@ -5,6 +5,7 @@ import { executeFormattingProvider, getFormattingProviderRegistrySnapshot } from
5
5
  import { getStatusBarItems } from "../GetStatusBarItems/GetStatusBarItems.js";
6
6
  import { executeHoverProvider, getHoverProviderRegistrySnapshot } from "../Hover/Hover.js";
7
7
  import { executeLanguageProvider, executeOrganizeImportsProvider } from "../LanguageProvider/LanguageProvider.js";
8
+ import { getLanguageServerRegistrySnapshot } from "../LanguageServer/LanguageServer.js";
8
9
  import { getOutputChannelRegistrySnapshot } from "../OutputChannel/OutputChannel.js";
9
10
  import { executeSourceControlAcceptInput, executeSourceControlAdd, executeSourceControlDiscard, executeSourceControlGenerateCommitMessage, executeSourceControlGetBadgeCount, executeSourceControlGetChangedFiles, executeSourceControlGetFeatures, executeSourceControlGetFileBefore, executeSourceControlGetFileDecorations, executeSourceControlGetGroups, executeSourceControlIsActive, getSourceControlProviderRegistrySnapshot, } from "../SourceControl/SourceControl.js";
10
11
  import { createViewInstance, dispatchViewEvent, disposeViewInstance, executeViewProvider, getViewActions, getViewMenuEntries, getViewRegistrySnapshot, renderViewInstance, saveViewInstanceState, } from "../ViewRegistry/ViewRegistry.js";
@@ -37,6 +38,7 @@ export const commandMap = {
37
38
  'ExtensionApi.getDiagnosticProviderRegistrySnapshot': getDiagnosticProviderRegistrySnapshot,
38
39
  'ExtensionApi.getFormattingProviderRegistrySnapshot': getFormattingProviderRegistrySnapshot,
39
40
  'ExtensionApi.getHoverProviderRegistrySnapshot': getHoverProviderRegistrySnapshot,
41
+ 'ExtensionApi.getLanguageServerRegistrySnapshot': getLanguageServerRegistrySnapshot,
40
42
  'ExtensionApi.getOutputChannelRegistrySnapshot': getOutputChannelRegistrySnapshot,
41
43
  'ExtensionApi.getSourceControlProviderRegistrySnapshot': getSourceControlProviderRegistrySnapshot,
42
44
  'ExtensionApi.getStatusBarItems': getStatusBarItems,
@@ -33,6 +33,7 @@ export declare const commandMap: {
33
33
  'ExtensionApi.getDiagnosticProviderRegistrySnapshot': () => import("../DiagnosticProviderRegistrySnapshot/DiagnosticProviderRegistrySnapshot.ts").DiagnosticProviderRegistrySnapshot;
34
34
  'ExtensionApi.getFormattingProviderRegistrySnapshot': () => import("../FormattingProviderRegistrySnapshot/FormattingProviderRegistrySnapshot.ts").FormattingProviderRegistrySnapshot;
35
35
  'ExtensionApi.getHoverProviderRegistrySnapshot': () => import("../HoverProviderRegistrySnapshot/HoverProviderRegistrySnapshot.ts").HoverProviderRegistrySnapshot;
36
+ 'ExtensionApi.getLanguageServerRegistrySnapshot': () => import("../LanguageServerRegistrySnapshot/LanguageServerRegistrySnapshot.ts").LanguageServerRegistrySnapshot;
36
37
  'ExtensionApi.getOutputChannelRegistrySnapshot': () => import("../OutputChannelRegistrySnapshot/OutputChannelRegistrySnapshot.ts").OutputChannelRegistrySnapshot;
37
38
  'ExtensionApi.getSourceControlProviderRegistrySnapshot': () => import("../SourceControlProviderRegistrySnapshot/SourceControlProviderRegistrySnapshot.ts").SourceControlProviderRegistrySnapshot;
38
39
  'ExtensionApi.getStatusBarItems': () => readonly import("../StatusBarItem/StatusBarItem.ts").StatusBarItem[];
@@ -0,0 +1,5 @@
1
+ export { getLanguageServerRegistrySnapshot } from '../LanguageServerRegistry/LanguageServerRegistry.ts';
2
+ export { registerLanguageServer } from '../LanguageServerRegistry/LanguageServerRegistry.ts';
3
+ export { resetLanguageServerRegistry } from '../LanguageServerRegistry/LanguageServerRegistry.ts';
4
+ export type { LanguageServerOptions } from '../LanguageServerOptions/LanguageServerOptions.ts';
5
+ export type { LanguageServerRegistrySnapshot } from '../LanguageServerRegistrySnapshot/LanguageServerRegistrySnapshot.ts';
@@ -0,0 +1,3 @@
1
+ export { getLanguageServerRegistrySnapshot } from "../LanguageServerRegistry/LanguageServerRegistry.js";
2
+ export { registerLanguageServer } from "../LanguageServerRegistry/LanguageServerRegistry.js";
3
+ export { resetLanguageServerRegistry } from "../LanguageServerRegistry/LanguageServerRegistry.js";
@@ -0,0 +1,6 @@
1
+ export interface LanguageServerOptions {
2
+ readonly argv: readonly string[];
3
+ readonly id: string;
4
+ readonly languageId: string;
5
+ readonly uri: string;
6
+ }
@@ -0,0 +1,6 @@
1
+ import type { Disposable } from '../Disposable/Disposable.ts';
2
+ import type { LanguageServerOptions } from '../LanguageServerOptions/LanguageServerOptions.ts';
3
+ import type { LanguageServerRegistrySnapshot } from '../LanguageServerRegistrySnapshot/LanguageServerRegistrySnapshot.ts';
4
+ export declare const registerLanguageServer: (options: LanguageServerOptions) => Disposable;
5
+ export declare const getLanguageServerRegistrySnapshot: () => LanguageServerRegistrySnapshot;
6
+ export declare const resetLanguageServerRegistry: () => void;
@@ -0,0 +1,45 @@
1
+ import { ExtensionApiError } from "../ExtensionApiError/ExtensionApiError.js";
2
+ const languageServers = Object.create(null);
3
+ const assertNonEmptyString = (value, name) => {
4
+ if (typeof value !== 'string' || value.length === 0) {
5
+ throw new ExtensionApiError(`language server is missing ${name}`);
6
+ }
7
+ };
8
+ const validateLanguageServer = (options) => {
9
+ if (!options) {
10
+ throw new ExtensionApiError('language server is not defined');
11
+ }
12
+ assertNonEmptyString(options.id, 'id');
13
+ assertNonEmptyString(options.languageId, 'languageId');
14
+ assertNonEmptyString(options.uri, 'uri');
15
+ if (!Array.isArray(options.argv) || options.argv.some((argument) => typeof argument !== 'string')) {
16
+ throw new ExtensionApiError(`language server ${options.id} has invalid argv`);
17
+ }
18
+ if (options.id in languageServers) {
19
+ throw new ExtensionApiError(`language server ${options.id} is already registered`);
20
+ }
21
+ };
22
+ export const registerLanguageServer = (options) => {
23
+ validateLanguageServer(options);
24
+ languageServers[options.id] = {
25
+ argv: [...options.argv],
26
+ id: options.id,
27
+ languageId: options.languageId,
28
+ uri: options.uri,
29
+ };
30
+ return {
31
+ dispose() {
32
+ delete languageServers[options.id];
33
+ },
34
+ };
35
+ };
36
+ export const getLanguageServerRegistrySnapshot = () => {
37
+ return {
38
+ languageServers: Object.values(languageServers),
39
+ };
40
+ };
41
+ export const resetLanguageServerRegistry = () => {
42
+ for (const id of Object.keys(languageServers)) {
43
+ delete languageServers[id];
44
+ }
45
+ };
@@ -0,0 +1,4 @@
1
+ import type { LanguageServerOptions } from '../LanguageServerOptions/LanguageServerOptions.ts';
2
+ export interface LanguageServerRegistrySnapshot {
3
+ readonly languageServers: readonly LanguageServerOptions[];
4
+ }
@@ -38,6 +38,7 @@ export interface DomEventListener {
38
38
  readonly passive?: boolean;
39
39
  readonly preventDefault?: boolean;
40
40
  readonly stopPropagation?: boolean;
41
+ readonly trackPointerEvents?: readonly (string | number)[];
41
42
  }
42
43
  export interface VirtualDomViewInstance {
43
44
  readonly dispose?: () => unknown;
@@ -39,6 +39,11 @@ const assertEventListener = (viewId, listener, index) => {
39
39
  assertBoolean(eventListener.passive, `view ${viewId} event listener ${index} has invalid passive`);
40
40
  assertBoolean(eventListener.preventDefault, `view ${viewId} event listener ${index} has invalid preventDefault`);
41
41
  assertBoolean(eventListener.stopPropagation, `view ${viewId} event listener ${index} has invalid stopPropagation`);
42
+ if (eventListener.trackPointerEvents !== undefined &&
43
+ (!Array.isArray(eventListener.trackPointerEvents) ||
44
+ eventListener.trackPointerEvents.some((event) => typeof event !== 'string' && typeof event !== 'number'))) {
45
+ throw new ExtensionApiError(`view ${viewId} event listener ${index} has invalid trackPointerEvents`);
46
+ }
42
47
  };
43
48
  const assertEventListeners = (view) => {
44
49
  if (view.eventListeners === undefined) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/api",
3
- "version": "8.48.0",
3
+ "version": "8.49.1",
4
4
  "description": "Tree-shakeable extension API for Lvce Editor extensions.",
5
5
  "keywords": [
6
6
  "lvce-editor",