@lvce-editor/api 8.80.1 → 8.82.0

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
@@ -2,7 +2,7 @@ export { activate } from './parts/Activation/Activation.ts';
2
2
  export { getAccessToken, type GetAccessTokenOptions } from './parts/Authentication/Authentication.ts';
3
3
  export { createElectronWebContentsView } from './parts/ElectronWebContentsView/ElectronWebContentsView.ts';
4
4
  export { executeCommand } from './parts/ExecuteCommand/ExecuteCommand.ts';
5
- export { showQuickPick } from './parts/QuickPick/QuickPick.ts';
5
+ export { showQuickInput, showQuickPick } from './parts/QuickPick/QuickPick.ts';
6
6
  export { getPreference, setPreference } from './parts/Preferences/Preferences.ts';
7
7
  export { deleteSecret, getSecret, storeSecret } from './parts/SecretStorage/SecretStorage.ts';
8
8
  export { registerCommand } from './parts/CommandRegistry/CommandRegistry.ts';
@@ -12,8 +12,8 @@ export { executeDiagnosticProvider, getDiagnosticProviderRegistrySnapshot, regis
12
12
  export { executeFormattingProvider, getFormattingProviderRegistrySnapshot, registerFormattingProvider, resetFormattingProviderRegistry, } from './parts/Formatting/Formatting.ts';
13
13
  export { exists, mkdir, readAsObjectUrl, readDirWithFileTypes, readFile, remove, stat, writeFile, type ReadAsObjectUrlResult, } from './parts/FileSystem/FileSystem.ts';
14
14
  export { registerFileChangeHandler, type FileChangeHandler, type FileChanges } from './parts/FileChangeHandler/FileChangeHandler.ts';
15
- export { executeFileSystemProviderGetPathSeparator, executeFileSystemProviderIsReadonly, executeFileSystemProviderReadDirWithFileTypes, executeFileSystemProviderReadFile, getFileSystemProviderRegistrySnapshot, registerFileSystemProvider, resetFileSystemProviderRegistry, } from './parts/FileSystemProviderRegistry/FileSystemProviderRegistry.ts';
16
- export { confirm, getWorkspaceFolder, getWorkspaceUri, handleWorkspaceRefresh, openUri, showNotification, type NotificationType, } from './parts/Host/Host.ts';
15
+ export { executeFileSystemProviderGetPathSeparator, executeFileSystemProviderIsReadonly, executeFileSystemProviderMkdir, executeFileSystemProviderReadDirWithFileTypes, executeFileSystemProviderReadFile, executeFileSystemProviderRemove, executeFileSystemProviderRename, executeFileSystemProviderWriteFile, getFileSystemProviderRegistrySnapshot, registerFileSystemProvider, resetFileSystemProviderRegistry, } from './parts/FileSystemProviderRegistry/FileSystemProviderRegistry.ts';
16
+ export { confirm, getWorkspaceFolder, getWorkspaceUri, handleWorkspaceRefresh, openUri, setWorkspaceUri, showNotification, type NotificationType, } from './parts/Host/Host.ts';
17
17
  export { executeHoverProvider, getHoverProviderRegistrySnapshot, registerHoverProvider, resetHoverProviderRegistry } from './parts/Hover/Hover.ts';
18
18
  export { executeSignatureHelpProvider, getSignatureHelpProviderRegistrySnapshot, registerSignatureHelpProvider, resetSignatureHelpProviderRegistry, } from './parts/SignatureHelp/SignatureHelp.ts';
19
19
  export { getPlatform, type Platform } from './parts/Platform/Platform.ts';
@@ -40,6 +40,7 @@ export type { FileSystemDirent } from './parts/FileSystem/FileSystem.ts';
40
40
  export type { FileSystemProvider } from './parts/FileSystemProvider/FileSystemProvider.ts';
41
41
  export type { FileSystemProviderRegistrySnapshot } from './parts/FileSystemProviderRegistrySnapshot/FileSystemProviderRegistrySnapshot.ts';
42
42
  export type { RegisteredFileSystemProvider } from './parts/RegisteredFileSystemProvider/RegisteredFileSystemProvider.ts';
43
+ export type { ShowQuickInputOptions } from './parts/ShowQuickInputOptions/ShowQuickInputOptions.ts';
43
44
  export type { HandleExtensionManagementMessagePortOptions } from './parts/HandleExtensionManagementMessagePort/HandleExtensionManagementMessagePort.ts';
44
45
  export type { HoverProvider, HoverProviderRegistrySnapshot, HoverResult, RegisteredHoverProvider } from './parts/Hover/Hover.ts';
45
46
  export type { RegisteredSignatureHelpProvider, SignatureHelpParameter, SignatureHelpProvider, SignatureHelpProviderRegistrySnapshot, SignatureHelpResult, SignatureHelpSignature, } from './parts/SignatureHelp/SignatureHelp.ts';
package/dist/index.js CHANGED
@@ -2,7 +2,7 @@ export { activate } from "./parts/Activation/Activation.js";
2
2
  export { getAccessToken } from "./parts/Authentication/Authentication.js";
3
3
  export { createElectronWebContentsView } from "./parts/ElectronWebContentsView/ElectronWebContentsView.js";
4
4
  export { executeCommand } from "./parts/ExecuteCommand/ExecuteCommand.js";
5
- export { showQuickPick } from "./parts/QuickPick/QuickPick.js";
5
+ export { showQuickInput, showQuickPick } from "./parts/QuickPick/QuickPick.js";
6
6
  export { getPreference, setPreference } from "./parts/Preferences/Preferences.js";
7
7
  export { deleteSecret, getSecret, storeSecret } from "./parts/SecretStorage/SecretStorage.js";
8
8
  export { registerCommand } from "./parts/CommandRegistry/CommandRegistry.js";
@@ -12,8 +12,8 @@ export { executeDiagnosticProvider, getDiagnosticProviderRegistrySnapshot, regis
12
12
  export { executeFormattingProvider, getFormattingProviderRegistrySnapshot, registerFormattingProvider, resetFormattingProviderRegistry, } from "./parts/Formatting/Formatting.js";
13
13
  export { exists, mkdir, readAsObjectUrl, readDirWithFileTypes, readFile, remove, stat, writeFile, } from "./parts/FileSystem/FileSystem.js";
14
14
  export { registerFileChangeHandler } from "./parts/FileChangeHandler/FileChangeHandler.js";
15
- export { executeFileSystemProviderGetPathSeparator, executeFileSystemProviderIsReadonly, executeFileSystemProviderReadDirWithFileTypes, executeFileSystemProviderReadFile, getFileSystemProviderRegistrySnapshot, registerFileSystemProvider, resetFileSystemProviderRegistry, } from "./parts/FileSystemProviderRegistry/FileSystemProviderRegistry.js";
16
- export { confirm, getWorkspaceFolder, getWorkspaceUri, handleWorkspaceRefresh, openUri, showNotification, } from "./parts/Host/Host.js";
15
+ export { executeFileSystemProviderGetPathSeparator, executeFileSystemProviderIsReadonly, executeFileSystemProviderMkdir, executeFileSystemProviderReadDirWithFileTypes, executeFileSystemProviderReadFile, executeFileSystemProviderRemove, executeFileSystemProviderRename, executeFileSystemProviderWriteFile, getFileSystemProviderRegistrySnapshot, registerFileSystemProvider, resetFileSystemProviderRegistry, } from "./parts/FileSystemProviderRegistry/FileSystemProviderRegistry.js";
16
+ export { confirm, getWorkspaceFolder, getWorkspaceUri, handleWorkspaceRefresh, openUri, setWorkspaceUri, showNotification, } from "./parts/Host/Host.js";
17
17
  export { executeHoverProvider, getHoverProviderRegistrySnapshot, registerHoverProvider, resetHoverProviderRegistry } from "./parts/Hover/Hover.js";
18
18
  export { executeSignatureHelpProvider, getSignatureHelpProviderRegistrySnapshot, registerSignatureHelpProvider, resetSignatureHelpProviderRegistry, } from "./parts/SignatureHelp/SignatureHelp.js";
19
19
  export { getPlatform } from "./parts/Platform/Platform.js";
@@ -2,7 +2,11 @@ import type { FileSystemDirent } from '../FileSystemDirent/FileSystemDirent.ts';
2
2
  export interface FileSystemProvider {
3
3
  readonly id: string;
4
4
  readonly isReadonly?: () => boolean | Promise<boolean>;
5
+ readonly mkdir?: (uri: string) => void | Promise<void>;
5
6
  readonly pathSeparator?: string;
6
7
  readonly readDirWithFileTypes?: (uri: string) => readonly FileSystemDirent[] | Promise<readonly FileSystemDirent[]>;
7
8
  readonly readFile: (uri: string) => string | Promise<string>;
9
+ readonly remove?: (uri: string) => void | Promise<void>;
10
+ readonly rename?: (oldUri: string, newUri: string) => void | Promise<void>;
11
+ readonly writeFile?: (uri: string, content: string) => void | Promise<void>;
8
12
  }
@@ -3,8 +3,13 @@ import type { FileSystemDirent } from '../FileSystemDirent/FileSystemDirent.ts';
3
3
  import type { FileSystemProvider } from '../FileSystemProvider/FileSystemProvider.ts';
4
4
  import type { FileSystemProviderRegistrySnapshot } from '../FileSystemProviderRegistrySnapshot/FileSystemProviderRegistrySnapshot.ts';
5
5
  export declare const executeFileSystemProviderReadFile: (id: string, uri: string) => Promise<string>;
6
+ export declare const executeFileSystemProviderMkdir: (id: string, uri: string) => Promise<void>;
7
+ export declare const executeFileSystemProviderRemove: (id: string, uri: string) => Promise<void>;
8
+ export declare const executeFileSystemProviderRename: (id: string, oldUri: string, newUri: string) => Promise<void>;
9
+ export declare const executeFileSystemProviderWriteFile: (id: string, uri: string, content: string) => Promise<void>;
6
10
  export declare const executeFileSystemProviderReadDirWithFileTypes: (id: string, uri: string) => Promise<readonly FileSystemDirent[]>;
7
11
  export declare const executeFileSystemProviderGetPathSeparator: (id: string) => string;
12
+ export declare const getFileSystemProviderPathSeparator: (id: string) => string | undefined;
8
13
  export declare const executeFileSystemProviderIsReadonly: (id: string) => Promise<boolean>;
9
14
  export declare const getFileSystemProviderRegistrySnapshot: () => FileSystemProviderRegistrySnapshot;
10
15
  export declare const registerFileSystemProvider: (provider: FileSystemProvider) => Disposable;
@@ -17,6 +17,11 @@ const assertFileSystemProvider = (provider) => {
17
17
  if (provider.isReadonly !== undefined && typeof provider.isReadonly !== 'function') {
18
18
  throw new ExtensionApiError(`file system provider ${provider.id} has invalid isReadonly function`);
19
19
  }
20
+ for (const method of ['mkdir', 'remove', 'rename', 'writeFile']) {
21
+ if (provider[method] !== undefined && typeof provider[method] !== 'function') {
22
+ throw new ExtensionApiError(`file system provider ${provider.id} has invalid ${method} function`);
23
+ }
24
+ }
20
25
  if (provider.pathSeparator !== undefined && typeof provider.pathSeparator !== 'string') {
21
26
  throw new ExtensionApiError(`file system provider ${provider.id} has invalid pathSeparator`);
22
27
  }
@@ -34,6 +39,34 @@ const getProvider = (id) => {
34
39
  export const executeFileSystemProviderReadFile = async (id, uri) => {
35
40
  return getProvider(id).readFile(uri);
36
41
  };
42
+ export const executeFileSystemProviderMkdir = async (id, uri) => {
43
+ const provider = getProvider(id);
44
+ if (!provider.mkdir) {
45
+ throw new ExtensionApiError(`file system provider ${id} is missing mkdir function`);
46
+ }
47
+ await provider.mkdir(uri);
48
+ };
49
+ export const executeFileSystemProviderRemove = async (id, uri) => {
50
+ const provider = getProvider(id);
51
+ if (!provider.remove) {
52
+ throw new ExtensionApiError(`file system provider ${id} is missing remove function`);
53
+ }
54
+ await provider.remove(uri);
55
+ };
56
+ export const executeFileSystemProviderRename = async (id, oldUri, newUri) => {
57
+ const provider = getProvider(id);
58
+ if (!provider.rename) {
59
+ throw new ExtensionApiError(`file system provider ${id} is missing rename function`);
60
+ }
61
+ await provider.rename(oldUri, newUri);
62
+ };
63
+ export const executeFileSystemProviderWriteFile = async (id, uri, content) => {
64
+ const provider = getProvider(id);
65
+ if (!provider.writeFile) {
66
+ throw new ExtensionApiError(`file system provider ${id} is missing writeFile function`);
67
+ }
68
+ await provider.writeFile(uri, content);
69
+ };
37
70
  export const executeFileSystemProviderReadDirWithFileTypes = async (id, uri) => {
38
71
  const provider = getProvider(id);
39
72
  if (!provider.readDirWithFileTypes) {
@@ -44,6 +77,13 @@ export const executeFileSystemProviderReadDirWithFileTypes = async (id, uri) =>
44
77
  export const executeFileSystemProviderGetPathSeparator = (id) => {
45
78
  return getProvider(id).pathSeparator || '/';
46
79
  };
80
+ export const getFileSystemProviderPathSeparator = (id) => {
81
+ const provider = providers[id];
82
+ if (!provider) {
83
+ return undefined;
84
+ }
85
+ return provider.pathSeparator || '/';
86
+ };
47
87
  export const executeFileSystemProviderIsReadonly = async (id) => {
48
88
  const provider = getProvider(id);
49
89
  return provider.isReadonly ? provider.isReadonly() : false;
@@ -60,9 +100,13 @@ export const registerFileSystemProvider = (provider) => {
60
100
  providers[provider.id] = {
61
101
  id: provider.id,
62
102
  isReadonly: provider.isReadonly,
103
+ mkdir: provider.mkdir,
63
104
  pathSeparator: provider.pathSeparator,
64
105
  readDirWithFileTypes: provider.readDirWithFileTypes,
65
106
  readFile: (uri) => provider.readFile(uri),
107
+ remove: provider.remove,
108
+ rename: provider.rename,
109
+ writeFile: provider.writeFile,
66
110
  };
67
111
  ExtensionApiCommandRegistry.registerCommandMap(commandMap);
68
112
  return {
@@ -74,8 +118,12 @@ export const registerFileSystemProvider = (provider) => {
74
118
  const commandMap = {
75
119
  'ExtensionApi.executeFileSystemProviderGetPathSeparator': executeFileSystemProviderGetPathSeparator,
76
120
  'ExtensionApi.executeFileSystemProviderIsReadonly': executeFileSystemProviderIsReadonly,
121
+ 'ExtensionApi.executeFileSystemProviderMkdir': executeFileSystemProviderMkdir,
77
122
  'ExtensionApi.executeFileSystemProviderReadDirWithFileTypes': executeFileSystemProviderReadDirWithFileTypes,
78
123
  'ExtensionApi.executeFileSystemProviderReadFile': executeFileSystemProviderReadFile,
124
+ 'ExtensionApi.executeFileSystemProviderRemove': executeFileSystemProviderRemove,
125
+ 'ExtensionApi.executeFileSystemProviderRename': executeFileSystemProviderRename,
126
+ 'ExtensionApi.executeFileSystemProviderWriteFile': executeFileSystemProviderWriteFile,
79
127
  'ExtensionApi.getFileSystemProviderRegistrySnapshot': getFileSystemProviderRegistrySnapshot,
80
128
  };
81
129
  export const resetFileSystemProviderRegistry = () => {
@@ -5,3 +5,4 @@ export declare const getWorkspaceUri: () => Promise<string>;
5
5
  export declare const handleWorkspaceRefresh: () => Promise<void>;
6
6
  export declare const openUri: (uri: string) => Promise<void>;
7
7
  export declare const showNotification: (type: NotificationType, message: string) => Promise<void>;
8
+ export declare const setWorkspaceUri: (uri: string) => Promise<void>;
@@ -1,4 +1,5 @@
1
1
  import { executeCommand } from "../ExecuteCommand/ExecuteCommand.js";
2
+ import { getFileSystemProviderPathSeparator } from "../FileSystemProviderRegistry/FileSystemProviderRegistry.js";
2
3
  export const confirm = async (message) => {
3
4
  return Boolean(await executeCommand('ConfirmPrompt.prompt', message));
4
5
  };
@@ -17,3 +18,13 @@ export const openUri = async (uri) => {
17
18
  export const showNotification = async (type, message) => {
18
19
  await executeCommand('Notification.create', type, message);
19
20
  };
21
+ export const setWorkspaceUri = async (uri) => {
22
+ const protocolEnd = uri.indexOf(':');
23
+ const protocol = protocolEnd === -1 ? '' : uri.slice(0, protocolEnd);
24
+ const pathSeparator = getFileSystemProviderPathSeparator(protocol);
25
+ if (pathSeparator === undefined) {
26
+ await executeCommand('Workspace.setUri', uri);
27
+ return;
28
+ }
29
+ await executeCommand('Workspace.setUri', uri, pathSeparator);
30
+ };
@@ -1,2 +1,4 @@
1
+ import type { ShowQuickInputOptions } from '../ShowQuickInputOptions/ShowQuickInputOptions.ts';
1
2
  import type { ShowQuickPickOptions } from '../ShowQuickPickOptions/ShowQuickPickOptions.ts';
3
+ export declare const showQuickInput: (options?: ShowQuickInputOptions) => Promise<string | undefined>;
2
4
  export declare const showQuickPick: (options: ShowQuickPickOptions) => Promise<unknown>;
@@ -1,4 +1,7 @@
1
1
  import { ExtensionManagementWorker } from '@lvce-editor/rpc-registry';
2
+ export const showQuickInput = async (options = {}) => {
3
+ return ExtensionManagementWorker.invoke('ExtensionHostQuickPick.showQuickInput', options);
4
+ };
2
5
  export const showQuickPick = async (options) => {
3
6
  return ExtensionManagementWorker.invoke('ExtensionHostQuickPick.showQuickPick', options);
4
7
  };
@@ -2,7 +2,11 @@ import type { FileSystemDirent } from '../FileSystemDirent/FileSystemDirent.ts';
2
2
  export interface RegisteredFileSystemProvider {
3
3
  readonly id: string;
4
4
  readonly isReadonly?: () => boolean | Promise<boolean>;
5
+ readonly mkdir?: (uri: string) => void | Promise<void>;
5
6
  readonly pathSeparator?: string;
6
7
  readonly readDirWithFileTypes?: (uri: string) => readonly FileSystemDirent[] | Promise<readonly FileSystemDirent[]>;
7
8
  readonly readFile: (uri: string) => string | Promise<string>;
9
+ readonly remove?: (uri: string) => void | Promise<void>;
10
+ readonly rename?: (oldUri: string, newUri: string) => void | Promise<void>;
11
+ readonly writeFile?: (uri: string, content: string) => void | Promise<void>;
8
12
  }
@@ -0,0 +1,4 @@
1
+ export interface ShowQuickInputOptions {
2
+ readonly placeholder?: string;
3
+ readonly value?: string;
4
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/api",
3
- "version": "8.80.1",
3
+ "version": "8.82.0",
4
4
  "description": "Tree-shakeable extension API for Lvce Editor extensions.",
5
5
  "keywords": [
6
6
  "lvce-editor",