@lvce-editor/api 9.24.0 → 9.26.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.
Files changed (21) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.js +1 -0
  3. package/dist/parts/EditorGutterDecoration/EditorGutterDecoration.d.ts +5 -0
  4. package/dist/parts/EditorGutterDecoration/EditorGutterDecoration.js +1 -0
  5. package/dist/parts/EditorGutterDecorationApi/EditorGutterDecorationApi.d.ts +5 -0
  6. package/dist/parts/EditorGutterDecorationApi/EditorGutterDecorationApi.js +2 -0
  7. package/dist/parts/EditorGutterDecorationProvider/EditorGutterDecorationProvider.d.ts +6 -0
  8. package/dist/parts/EditorGutterDecorationProvider/EditorGutterDecorationProvider.js +1 -0
  9. package/dist/parts/EditorGutterDecorationProviderRegistry/EditorGutterDecorationProviderRegistry.d.ts +7 -0
  10. package/dist/parts/EditorGutterDecorationProviderRegistry/EditorGutterDecorationProviderRegistry.js +52 -0
  11. package/dist/parts/EditorGutterDecorationTextDocument/EditorGutterDecorationTextDocument.d.ts +5 -0
  12. package/dist/parts/EditorGutterDecorationTextDocument/EditorGutterDecorationTextDocument.js +1 -0
  13. package/dist/parts/FileSystemProvider/FileSystemProvider.d.ts +1 -1
  14. package/dist/parts/FileSystemProviderRegistry/FileSystemProviderRegistry.d.ts +1 -1
  15. package/dist/parts/RefreshEditorGutterDecorations/RefreshEditorGutterDecorations.d.ts +1 -0
  16. package/dist/parts/RefreshEditorGutterDecorations/RefreshEditorGutterDecorations.js +4 -0
  17. package/dist/parts/RegisteredEditorGutterDecorationProvider/RegisteredEditorGutterDecorationProvider.d.ts +6 -0
  18. package/dist/parts/RegisteredEditorGutterDecorationProvider/RegisteredEditorGutterDecorationProvider.js +1 -0
  19. package/dist/parts/RegisteredFileSystemProvider/RegisteredFileSystemProvider.d.ts +1 -1
  20. package/dist/parts/WebRtc/WebRtc.d.ts +1 -0
  21. package/package.json +1 -1
package/dist/index.d.ts CHANGED
@@ -8,6 +8,7 @@ export { deleteSecret, getSecret, storeSecret } from './parts/SecretStorage/Secr
8
8
  export { registerCommand } from './parts/CommandRegistry/CommandRegistry.ts';
9
9
  export { registerDebugProvider, resetDebugProviderRegistry } from './parts/Debug/Debug.ts';
10
10
  export { formatDocument, getDiagnostics, getEditorSelections, setEditorSelections, showCompletions, type EditorSelection, } from './parts/Editor/Editor.ts';
11
+ export { executeEditorGutterDecorationProvider, refreshEditorGutterDecorations, registerEditorGutterDecorationProvider, resetEditorGutterDecorationProviderRegistry, type EditorGutterDecoration, type EditorGutterDecorationProvider, type EditorGutterDecorationTextDocument, type EditorGutterDecorationType, } from './parts/EditorGutterDecorationApi/EditorGutterDecorationApi.ts';
11
12
  export { executeEditorLineDecorationProvider, registerEditorLineDecorationProvider, resetEditorLineDecorationProviderRegistry, type EditorLineDecoration, type EditorLineDecorationProvider, type EditorLineDecorationTextDocument, } from './parts/EditorLineDecorationApi/EditorLineDecorationApi.ts';
12
13
  export { executeCompletionProvider, executeResolveCompletionItemProvider, getCompletionProviderRegistrySnapshot, registerCompletionProvider, resetCompletionProviderRegistry, } from './parts/Completion/Completion.ts';
13
14
  export { executeDiagnosticProvider, getDiagnosticProviderRegistrySnapshot, registerDiagnosticProvider, resetDiagnosticProviderRegistry, } from './parts/Diagnostic/Diagnostic.ts';
package/dist/index.js CHANGED
@@ -8,6 +8,7 @@ export { deleteSecret, getSecret, storeSecret } from "./parts/SecretStorage/Secr
8
8
  export { registerCommand } from "./parts/CommandRegistry/CommandRegistry.js";
9
9
  export { registerDebugProvider, resetDebugProviderRegistry } from "./parts/Debug/Debug.js";
10
10
  export { formatDocument, getDiagnostics, getEditorSelections, setEditorSelections, showCompletions, } from "./parts/Editor/Editor.js";
11
+ export { executeEditorGutterDecorationProvider, refreshEditorGutterDecorations, registerEditorGutterDecorationProvider, resetEditorGutterDecorationProviderRegistry, } from "./parts/EditorGutterDecorationApi/EditorGutterDecorationApi.js";
11
12
  export { executeEditorLineDecorationProvider, registerEditorLineDecorationProvider, resetEditorLineDecorationProviderRegistry, } from "./parts/EditorLineDecorationApi/EditorLineDecorationApi.js";
12
13
  export { executeCompletionProvider, executeResolveCompletionItemProvider, getCompletionProviderRegistrySnapshot, registerCompletionProvider, resetCompletionProviderRegistry, } from "./parts/Completion/Completion.js";
13
14
  export { executeDiagnosticProvider, getDiagnosticProviderRegistrySnapshot, registerDiagnosticProvider, resetDiagnosticProviderRegistry, } from "./parts/Diagnostic/Diagnostic.js";
@@ -0,0 +1,5 @@
1
+ export type EditorGutterDecorationType = 'added' | 'deleted' | 'modified';
2
+ export interface EditorGutterDecoration {
3
+ readonly rowIndex: number;
4
+ readonly type: EditorGutterDecorationType;
5
+ }
@@ -0,0 +1,5 @@
1
+ export { executeEditorGutterDecorationProvider, registerEditorGutterDecorationProvider, resetEditorGutterDecorationProviderRegistry, } from '../EditorGutterDecorationProviderRegistry/EditorGutterDecorationProviderRegistry.ts';
2
+ export type { EditorGutterDecoration, EditorGutterDecorationType } from '../EditorGutterDecoration/EditorGutterDecoration.ts';
3
+ export type { EditorGutterDecorationProvider } from '../EditorGutterDecorationProvider/EditorGutterDecorationProvider.ts';
4
+ export type { EditorGutterDecorationTextDocument } from '../EditorGutterDecorationTextDocument/EditorGutterDecorationTextDocument.ts';
5
+ export { refreshEditorGutterDecorations } from '../RefreshEditorGutterDecorations/RefreshEditorGutterDecorations.ts';
@@ -0,0 +1,2 @@
1
+ export { executeEditorGutterDecorationProvider, registerEditorGutterDecorationProvider, resetEditorGutterDecorationProviderRegistry, } from "../EditorGutterDecorationProviderRegistry/EditorGutterDecorationProviderRegistry.js";
2
+ export { refreshEditorGutterDecorations } from "../RefreshEditorGutterDecorations/RefreshEditorGutterDecorations.js";
@@ -0,0 +1,6 @@
1
+ import type { EditorGutterDecoration } from '../EditorGutterDecoration/EditorGutterDecoration.ts';
2
+ import type { EditorGutterDecorationTextDocument } from '../EditorGutterDecorationTextDocument/EditorGutterDecorationTextDocument.ts';
3
+ export interface EditorGutterDecorationProvider {
4
+ readonly id: string;
5
+ readonly provideEditorGutterDecorations: (textDocument: EditorGutterDecorationTextDocument) => readonly EditorGutterDecoration[] | Promise<readonly EditorGutterDecoration[]>;
6
+ }
@@ -0,0 +1,7 @@
1
+ import type { Disposable } from '../Disposable/Disposable.ts';
2
+ import type { EditorGutterDecoration } from '../EditorGutterDecoration/EditorGutterDecoration.ts';
3
+ import type { EditorGutterDecorationProvider } from '../EditorGutterDecorationProvider/EditorGutterDecorationProvider.ts';
4
+ import type { EditorGutterDecorationTextDocument } from '../EditorGutterDecorationTextDocument/EditorGutterDecorationTextDocument.ts';
5
+ export declare const registerEditorGutterDecorationProvider: (provider: EditorGutterDecorationProvider) => Disposable;
6
+ export declare const executeEditorGutterDecorationProvider: (textDocument: EditorGutterDecorationTextDocument) => Promise<readonly EditorGutterDecoration[]>;
7
+ export declare const resetEditorGutterDecorationProviderRegistry: () => void;
@@ -0,0 +1,52 @@
1
+ import * as ExtensionApiCommandRegistry from "../ExtensionApiCommandRegistry/ExtensionApiCommandRegistry.js";
2
+ import { ExtensionApiError } from "../ExtensionApiError/ExtensionApiError.js";
3
+ import { createProviderRegistry } from "../ProviderRegistry/ProviderRegistry.js";
4
+ const validTypes = new Set(['added', 'deleted', 'modified']);
5
+ const validateEditorGutterDecoration = (decoration) => {
6
+ if (!decoration || typeof decoration !== 'object' || Array.isArray(decoration)) {
7
+ throw new ExtensionApiError('invalid editor gutter decoration result: decoration must be an object');
8
+ }
9
+ const { rowIndex, type } = decoration;
10
+ if (!Number.isSafeInteger(rowIndex) || rowIndex < 0) {
11
+ throw new ExtensionApiError('invalid editor gutter decoration result: decoration rowIndex must be a non-negative integer');
12
+ }
13
+ if (typeof type !== 'string' || !validTypes.has(type)) {
14
+ throw new ExtensionApiError('invalid editor gutter decoration result: decoration type must be added, deleted, or modified');
15
+ }
16
+ return { rowIndex: rowIndex, type: type };
17
+ };
18
+ const validateEditorGutterDecorations = (decorations) => {
19
+ if (!Array.isArray(decorations)) {
20
+ throw new ExtensionApiError('invalid editor gutter decoration result: decorations must be an array');
21
+ }
22
+ return decorations.map(validateEditorGutterDecoration);
23
+ };
24
+ const registry = createProviderRegistry({
25
+ mapProvider(provider) {
26
+ return {
27
+ id: provider.id,
28
+ provideEditorGutterDecorations(textDocument) {
29
+ return provider.provideEditorGutterDecorations(textDocument);
30
+ },
31
+ };
32
+ },
33
+ providerName: 'editor gutter decoration provider',
34
+ requiredMethods: ['provideEditorGutterDecorations'],
35
+ });
36
+ export const registerEditorGutterDecorationProvider = (provider) => {
37
+ const registeredProvider = registry.registerProvider(provider);
38
+ ExtensionApiCommandRegistry.registerCommandMap(commandMap);
39
+ return {
40
+ dispose() {
41
+ registry.deleteProvider(registeredProvider.id);
42
+ },
43
+ };
44
+ };
45
+ export const executeEditorGutterDecorationProvider = async (textDocument) => {
46
+ const results = await Promise.all(registry.getProviders().map(async (provider) => provider.provideEditorGutterDecorations(textDocument)));
47
+ return results.flatMap(validateEditorGutterDecorations);
48
+ };
49
+ const commandMap = {
50
+ 'ExtensionApi.executeEditorGutterDecorationProvider': executeEditorGutterDecorationProvider,
51
+ };
52
+ export const resetEditorGutterDecorationProviderRegistry = registry.reset;
@@ -0,0 +1,5 @@
1
+ export interface EditorGutterDecorationTextDocument {
2
+ readonly languageId: string;
3
+ readonly text: string;
4
+ readonly uri: string;
5
+ }
@@ -5,7 +5,7 @@ export interface FileSystemProvider {
5
5
  readonly mkdir?: (uri: string) => void | Promise<void>;
6
6
  readonly pathSeparator?: string;
7
7
  readonly readDirWithFileTypes?: (uri: string) => readonly FileSystemDirent[] | Promise<readonly FileSystemDirent[]>;
8
- readonly readFile: (uri: string) => string | Promise<string>;
8
+ readonly readFile: (uri: string) => Blob | Promise<Blob | string> | string;
9
9
  readonly remove?: (uri: string) => void | Promise<void>;
10
10
  readonly rename?: (oldUri: string, newUri: string) => void | Promise<void>;
11
11
  readonly writeFile?: (uri: string, content: string) => void | Promise<void>;
@@ -2,7 +2,7 @@ import type { Disposable } from '../Disposable/Disposable.ts';
2
2
  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
- export declare const executeFileSystemProviderReadFile: (id: string, uri: string) => Promise<string>;
5
+ export declare const executeFileSystemProviderReadFile: (id: string, uri: string) => Promise<Blob | string>;
6
6
  export declare const executeFileSystemProviderMkdir: (id: string, uri: string) => Promise<void>;
7
7
  export declare const executeFileSystemProviderRemove: (id: string, uri: string) => Promise<void>;
8
8
  export declare const executeFileSystemProviderRename: (id: string, oldUri: string, newUri: string) => Promise<void>;
@@ -0,0 +1 @@
1
+ export declare const refreshEditorGutterDecorations: () => Promise<void>;
@@ -0,0 +1,4 @@
1
+ import { executeCommand } from "../ExecuteCommand/ExecuteCommand.js";
2
+ export const refreshEditorGutterDecorations = async () => {
3
+ await executeCommand('Editor.refreshGutterDecorationsAll');
4
+ };
@@ -0,0 +1,6 @@
1
+ import type { EditorGutterDecoration } from '../EditorGutterDecoration/EditorGutterDecoration.ts';
2
+ import type { EditorGutterDecorationTextDocument } from '../EditorGutterDecorationTextDocument/EditorGutterDecorationTextDocument.ts';
3
+ export interface RegisteredEditorGutterDecorationProvider {
4
+ readonly id: string;
5
+ readonly provideEditorGutterDecorations: (textDocument: EditorGutterDecorationTextDocument) => readonly EditorGutterDecoration[] | Promise<readonly EditorGutterDecoration[]>;
6
+ }
@@ -5,7 +5,7 @@ export interface RegisteredFileSystemProvider {
5
5
  readonly mkdir?: (uri: string) => void | Promise<void>;
6
6
  readonly pathSeparator?: string;
7
7
  readonly readDirWithFileTypes?: (uri: string) => readonly FileSystemDirent[] | Promise<readonly FileSystemDirent[]>;
8
- readonly readFile: (uri: string) => string | Promise<string>;
8
+ readonly readFile: (uri: string) => Blob | Promise<Blob | string> | string;
9
9
  readonly remove?: (uri: string) => void | Promise<void>;
10
10
  readonly rename?: (oldUri: string, newUri: string) => void | Promise<void>;
11
11
  readonly writeFile?: (uri: string, content: string) => void | Promise<void>;
@@ -1,4 +1,5 @@
1
1
  export interface StartWebRpcAudioStreamOptions {
2
+ readonly audioDebugPort?: MessagePort;
2
3
  readonly elementLocator: string;
3
4
  readonly ephemeralKey: string;
4
5
  readonly port: MessagePort;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/api",
3
- "version": "9.24.0",
3
+ "version": "9.26.0",
4
4
  "description": "Tree-shakeable extension API for Lvce Editor extensions.",
5
5
  "keywords": [
6
6
  "lvce-editor",