@adminide-stack/extension-api 12.0.4-alpha.92 → 13.0.1-alpha.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/lib/connections/jsonrpc2/connection.js +0 -10
- package/lib/connections/jsonrpc2/connection.js.map +1 -1
- package/lib/connections/jsonrpc2/events.js.map +1 -1
- package/lib/connections/jsonrpc2/linkedMap.js.map +1 -1
- package/lib/connections/jsonrpc2/messages.js.map +1 -1
- package/lib/connections/jsonrpc2/test-helper.js.map +1 -1
- package/lib/connections/jsonrpc2/trace.js.map +1 -1
- package/lib/connections/jsonrpc2/transport.js.map +1 -1
- package/lib/connections/jsonrpc2/transports/webWorker.js.map +1 -1
- package/lib/connections/proxy/proxy.js.map +1 -1
- package/lib/connections/remote-rpc/browser-remote-rpc.d.ts +3 -1
- package/lib/connections/remote-rpc/browser-remote-rpc.js +26 -19
- package/lib/connections/remote-rpc/browser-remote-rpc.js.map +1 -1
- package/lib/connections/remote-rpc/rxjs-websockets.js.map +1 -1
- package/lib/constants/action-types.d.ts +4 -0
- package/lib/constants/action-types.js +5 -1
- package/lib/constants/action-types.js.map +1 -1
- package/lib/constants/types.js.map +1 -1
- package/lib/core/expr/evaluator.js.map +1 -1
- package/lib/core/expr/lexer.js.map +1 -1
- package/lib/core/expr/parser.js.map +1 -1
- package/lib/core/types/ext-host-types.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -1
- package/lib/interfaces/command.d.ts +5 -1
- package/lib/interfaces/contributions/contribution.js.map +1 -1
- package/lib/interfaces/ext-services/ai-services.d.ts +2 -11
- package/lib/interfaces/ext-services/code-javascript-service.d.ts +9 -0
- package/lib/interfaces/ext-services/index.d.ts +1 -0
- package/lib/interfaces/model.js.map +1 -1
- package/lib/interfaces/platform-context.d.ts +7 -0
- package/lib/interfaces/text-document.js.map +1 -1
- package/lib/interfaces/webview/webview.js.map +1 -1
- package/lib/middlewares/extensionController.js.map +1 -1
- package/lib/protocol/client.protocol.d.ts +85 -15
- package/lib/protocol/client.protocol.js.map +1 -1
- package/lib/protocol/common.protocol.js.map +1 -1
- package/lib/protocol/editor-missing-types.js.map +1 -1
- package/lib/protocol/proxy-identifier.js.map +1 -1
- package/lib/protocol/rpc-logger.js.map +1 -1
- package/lib/protocol/rpc-protocol.js +10 -4
- package/lib/protocol/rpc-protocol.js.map +1 -1
- package/lib/protocol/server.protocol.d.ts +4 -4
- package/lib/protocol/server.protocol.js.map +1 -1
- package/lib/protocol/shared/editor.js.map +1 -1
- package/lib/protocol/temporary-types.js.map +1 -1
- package/lib/protocol/utils/lazy-promise.js.map +1 -1
- package/lib/react/components/view-component/ViewComponent.js.map +1 -1
- package/lib/react/useExtensionController.js +1 -1
- package/lib/react/useExtensionController.js.map +1 -1
- package/lib/services/code/index.d.ts +1 -0
- package/lib/services/code/javascript/autocomplete-demo.d.ts +49 -0
- package/lib/services/code/javascript/code-javascript-service.d.ts +100 -0
- package/lib/services/code/javascript/code-javascript-service.js +193 -0
- package/lib/services/code/javascript/code-javascript-service.js.map +1 -0
- package/lib/services/code/javascript/handler/evaluate.d.ts +14 -0
- package/lib/services/code/javascript/index.d.ts +9 -0
- package/lib/services/code/javascript/jslibrary/autocomplete/definitions/base64-js.json.js +13 -0
- package/lib/services/code/javascript/jslibrary/autocomplete/definitions/base64-js.json.js.map +1 -0
- package/lib/services/code/javascript/jslibrary/autocomplete/definitions/browser.json.js +441 -0
- package/lib/services/code/javascript/jslibrary/autocomplete/definitions/browser.json.js.map +1 -0
- package/lib/services/code/javascript/jslibrary/autocomplete/definitions/ecmascript.json.js +1973 -0
- package/lib/services/code/javascript/jslibrary/autocomplete/definitions/ecmascript.json.js.map +1 -0
- package/lib/services/code/javascript/jslibrary/autocomplete/definitions/lodash.json.js +1546 -0
- package/lib/services/code/javascript/jslibrary/autocomplete/definitions/lodash.json.js.map +1 -0
- package/lib/services/code/javascript/jslibrary/autocomplete/index.d.ts +45 -0
- package/lib/services/code/javascript/jslibrary/autocomplete/index.js +56 -0
- package/lib/services/code/javascript/jslibrary/autocomplete/index.js.map +1 -0
- package/lib/services/code/javascript/jslibrary/autocomplete-manager.d.ts +94 -0
- package/lib/services/code/javascript/jslibrary/autocomplete-manager.js +249 -0
- package/lib/services/code/javascript/jslibrary/autocomplete-manager.js.map +1 -0
- package/lib/services/code/javascript/jslibrary/definitions.d.ts +465 -0
- package/lib/services/code/javascript/jslibrary/index.d.ts +4 -0
- package/lib/services/code/javascript/jslibrary/index.js +14 -0
- package/lib/services/code/javascript/jslibrary/index.js.map +1 -0
- package/lib/services/code/javascript/jslibrary/library-manager.d.ts +53 -0
- package/lib/services/code/javascript/jslibrary/library-manager.js +65 -0
- package/lib/services/code/javascript/jslibrary/library-manager.js.map +1 -0
- package/lib/services/code/javascript/jslibrary/reset.d.ts +2 -0
- package/lib/services/code/javascript/jslibrary/reset.js +33 -0
- package/lib/services/code/javascript/jslibrary/reset.js.map +1 -0
- package/lib/services/code/javascript/utils/dom.d.ts +4 -0
- package/lib/services/code/javascript/utils/dom.js +138 -0
- package/lib/services/code/javascript/utils/dom.js.map +1 -0
- package/lib/services/code/javascript/utils/library-utils.d.ts +12 -0
- package/lib/services/code/javascript/utils/library-utils.js +76 -0
- package/lib/services/code/javascript/utils/library-utils.js.map +1 -0
- package/lib/services/code/javascript/utils/messages.d.ts +21 -0
- package/lib/services/code/javascript/utils/messages.js +25 -0
- package/lib/services/code/javascript/utils/messages.js.map +1 -0
- package/lib/services/code/javascript/utils/tern-definitions.d.ts +4 -0
- package/lib/services/code/javascript/utils/tern-definitions.js +75 -0
- package/lib/services/code/javascript/utils/tern-definitions.js.map +1 -0
- package/lib/services/code/javascript/utils/types.d.ts +26 -0
- package/lib/services/code/javascript/utils/types.js +16 -0
- package/lib/services/code/javascript/utils/types.js.map +1 -0
- package/lib/utils/abortable-rx.js.map +1 -1
- package/lib/utils/errors.js.map +1 -1
- package/lib/utils/extensions.d.ts +11 -0
- package/lib/utils/extensions.js +38 -1
- package/lib/utils/extensions.js.map +1 -1
- package/lib/utils/helper.test.js.map +1 -1
- package/lib/utils/paths-util.js.map +1 -1
- package/lib/utils/rxjs/combineLatestOrDefault.js.map +1 -1
- package/lib/utils/util.js.map +1 -1
- package/package.json +6 -5
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lodash.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Autocomplete definitions for JavaScript code completion
|
|
3
|
+
* This module exports Tern definition objects for various libraries and APIs
|
|
4
|
+
*/
|
|
5
|
+
import base64jsDefinitions from './definitions/base64-js.json';
|
|
6
|
+
import browserDefinitions from './definitions/browser.json';
|
|
7
|
+
import ecmascriptDefinitions from './definitions/ecmascript.json';
|
|
8
|
+
import lodashDefinitions from './definitions/lodash.json';
|
|
9
|
+
/**
|
|
10
|
+
* Type definition for Tern definition objects
|
|
11
|
+
*/
|
|
12
|
+
export interface TernDefinition {
|
|
13
|
+
'!name': string;
|
|
14
|
+
'!define'?: Record<string, unknown>;
|
|
15
|
+
[key: string]: unknown;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Available autocomplete definition sets
|
|
19
|
+
*/
|
|
20
|
+
export declare const AUTOCOMPLETE_DEFINITIONS: Record<string, TernDefinition>;
|
|
21
|
+
/**
|
|
22
|
+
* Get a specific definition by name
|
|
23
|
+
*/
|
|
24
|
+
export declare function getDefinition(name: string): TernDefinition | undefined;
|
|
25
|
+
/**
|
|
26
|
+
* Get all available definition names
|
|
27
|
+
*/
|
|
28
|
+
export declare function getAvailableDefinitions(): string[];
|
|
29
|
+
/**
|
|
30
|
+
* Get multiple definitions by names
|
|
31
|
+
*/
|
|
32
|
+
export declare function getDefinitions(names: string[]): TernDefinition[];
|
|
33
|
+
/**
|
|
34
|
+
* Get default definitions that should be included in most contexts
|
|
35
|
+
*/
|
|
36
|
+
export declare function getDefaultDefinitions(): TernDefinition[];
|
|
37
|
+
/**
|
|
38
|
+
* Get library-specific definitions (non-core)
|
|
39
|
+
*/
|
|
40
|
+
export declare function getLibraryDefinitions(): TernDefinition[];
|
|
41
|
+
/**
|
|
42
|
+
* Create a combined definition object from multiple definitions
|
|
43
|
+
*/
|
|
44
|
+
export declare function combineDefinitions(definitions: TernDefinition[]): TernDefinition;
|
|
45
|
+
export { base64jsDefinitions, browserDefinitions, ecmascriptDefinitions, lodashDefinitions };
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import base64jsDefinitions from'./definitions/base64-js.json.js';import browserDefinitions from'./definitions/browser.json.js';import ecmascriptDefinitions from'./definitions/ecmascript.json.js';import lodashDefinitions from'./definitions/lodash.json.js';/**
|
|
2
|
+
* Autocomplete definitions for JavaScript code completion
|
|
3
|
+
* This module exports Tern definition objects for various libraries and APIs
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Available autocomplete definition sets
|
|
7
|
+
*/
|
|
8
|
+
const AUTOCOMPLETE_DEFINITIONS = {
|
|
9
|
+
'base64-js': base64jsDefinitions,
|
|
10
|
+
browser: browserDefinitions,
|
|
11
|
+
ecmascript: ecmascriptDefinitions,
|
|
12
|
+
lodash: lodashDefinitions
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Get a specific definition by name
|
|
16
|
+
*/
|
|
17
|
+
function getDefinition(name) {
|
|
18
|
+
return AUTOCOMPLETE_DEFINITIONS[name];
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Get default definitions that should be included in most contexts
|
|
22
|
+
*/
|
|
23
|
+
function getDefaultDefinitions() {
|
|
24
|
+
return [ecmascriptDefinitions, browserDefinitions];
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Get library-specific definitions (non-core)
|
|
28
|
+
*/
|
|
29
|
+
function getLibraryDefinitions() {
|
|
30
|
+
return [lodashDefinitions, base64jsDefinitions];
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Create a combined definition object from multiple definitions
|
|
34
|
+
*/
|
|
35
|
+
function combineDefinitions(definitions) {
|
|
36
|
+
const combined = {
|
|
37
|
+
'!name': 'combined',
|
|
38
|
+
'!define': {}
|
|
39
|
+
};
|
|
40
|
+
definitions.forEach(def => {
|
|
41
|
+
// Merge top-level properties (excluding metadata)
|
|
42
|
+
Object.keys(def).forEach(key => {
|
|
43
|
+
if (key.startsWith('!')) {
|
|
44
|
+
if (key === '!define' && combined['!define']) {
|
|
45
|
+
// Merge !define objects
|
|
46
|
+
Object.assign(combined['!define'], def['!define']);
|
|
47
|
+
}
|
|
48
|
+
// Skip other metadata properties to avoid conflicts
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
// Add library properties to the combined definition
|
|
52
|
+
combined[key] = def[key];
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
return combined;
|
|
56
|
+
}export{AUTOCOMPLETE_DEFINITIONS,base64jsDefinitions,browserDefinitions,combineDefinitions,ecmascriptDefinitions,getDefaultDefinitions,getDefinition,getLibraryDefinitions,lodashDefinitions};//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../src/services/code/javascript/jslibrary/autocomplete/index.ts"],"sourcesContent":[null],"names":[],"mappings":"+PAAA;;;AAGG;AAgBH;;AAEG;AACI,MAAM,wBAAwB,GAAmC;AACpE,EAAA,WAAA,EAAW,mBAAE;AACb,EAAA,OAAA,EAAO,kBAAE;AACT,EAAA,UAAA,EAAU,qBAAE;AACZ,EAAA,MAAA,EAAM;;AAGV;;AAEG;AACG,SAAU,aAAa,CAAC,IAAY,EAAA;AACtC,EAAA,OAAA,wBAAO,CAAA,IAAyB,CAAA;AACpC;AAgBA;;AAEG;SACa,qBAAqB,GAAA;AACjC,EAAA,OAAA,CAAA,qBAAQ,EAAuC,kBAAE,CAAA;AACrD;AAEA;;AAEG;SACa,qBAAqB,GAAA;AACjC,EAAA,OAAA,CAAA,iBAAQ,EAAmC,mBAAE,CAAA;AACjD;AAEA;;AAEG;AACG,SAAU,kBAAkB,CAAC,WAA6B,EAAA;AAC5D,EAAA,MAAA,WAAc;AACV,IAAA,OAAA,EAAA,UAAS;AACT,IAAA,SAAA,EAAA;;AAGJ,EAAA,WAAA,CAAA,OAAY,CAAA,GAAS;;UAEjB,CAAA,IAAO,CAAA,GAAI,CAAC,CAAA,OAAK,CAAA,GAAO,IAAE;AACtB,MAAA,IAAA,GAAA,CAAA,UAAQ,CAAA,GAAA,CAAA,EAAW;oBACX,SAAQ,IAAA,QAAa,UAAS,CAAA,EAAA;;AAE9B,UAAA,MAAA,CAAA,MAAA,CAAA,QAAO,CAAM,SAAS,CAAC,EAAA,GAAA,CAAA,SAAe,CAAC,CAAA;;;;;;cAO/C,CAAA,GAAA,CAAA,MAAa,CAAA;AACjB,IAAA,CAAA,CAAA;AACJ,EAAA,CAAA,CAAA;AAEA,EAAA,OAAA;AACJ"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Autocomplete Manager for JavaScript Code Intelligence
|
|
3
|
+
* Integrates Tern definitions with library management for comprehensive autocomplete support
|
|
4
|
+
*/
|
|
5
|
+
import type { Def } from 'tern';
|
|
6
|
+
import { type TernDefinition } from './autocomplete';
|
|
7
|
+
/**
|
|
8
|
+
* Configuration for autocomplete behavior
|
|
9
|
+
*/
|
|
10
|
+
export interface AutocompleteConfig {
|
|
11
|
+
includeDefaults: boolean;
|
|
12
|
+
includeLibraries: boolean;
|
|
13
|
+
enableDynamicLibraries: boolean;
|
|
14
|
+
customDefinitions: string[];
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Manages autocomplete definitions and provides intelligent code completion
|
|
18
|
+
*/
|
|
19
|
+
export declare class AutocompleteManager {
|
|
20
|
+
private config;
|
|
21
|
+
private cachedDefinitions;
|
|
22
|
+
private lastUpdateTime;
|
|
23
|
+
private readonly cacheTimeout;
|
|
24
|
+
constructor(config?: Partial<AutocompleteConfig>);
|
|
25
|
+
/**
|
|
26
|
+
* Update configuration
|
|
27
|
+
*/
|
|
28
|
+
updateConfig(config: Partial<AutocompleteConfig>): void;
|
|
29
|
+
/**
|
|
30
|
+
* Get current configuration
|
|
31
|
+
*/
|
|
32
|
+
getConfig(): AutocompleteConfig;
|
|
33
|
+
/**
|
|
34
|
+
* Invalidate the cached definitions
|
|
35
|
+
*/
|
|
36
|
+
invalidateCache(): void;
|
|
37
|
+
/**
|
|
38
|
+
* Get comprehensive autocomplete definitions
|
|
39
|
+
*/
|
|
40
|
+
getDefinitions(): TernDefinition;
|
|
41
|
+
/**
|
|
42
|
+
* Get definitions for dynamically loaded libraries
|
|
43
|
+
*/
|
|
44
|
+
private getDynamicLibraryDefinitions;
|
|
45
|
+
/**
|
|
46
|
+
* Get Tern-compatible definition object
|
|
47
|
+
*/
|
|
48
|
+
getTernDef(): Def;
|
|
49
|
+
/**
|
|
50
|
+
* Get available definition names
|
|
51
|
+
*/
|
|
52
|
+
getAvailableDefinitions(): string[];
|
|
53
|
+
/**
|
|
54
|
+
* Check if a definition is available
|
|
55
|
+
*/
|
|
56
|
+
hasDefinition(name: string): boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Get completions for a specific context
|
|
59
|
+
*/
|
|
60
|
+
getCompletions(context: {
|
|
61
|
+
text: string;
|
|
62
|
+
position: number;
|
|
63
|
+
scope?: string[];
|
|
64
|
+
}): Promise<{
|
|
65
|
+
completions: Array<{
|
|
66
|
+
name: string;
|
|
67
|
+
type?: string;
|
|
68
|
+
doc?: string;
|
|
69
|
+
url?: string;
|
|
70
|
+
}>;
|
|
71
|
+
isIncomplete: boolean;
|
|
72
|
+
}>;
|
|
73
|
+
/**
|
|
74
|
+
* Extract completions from definition object
|
|
75
|
+
*/
|
|
76
|
+
private extractCompletions;
|
|
77
|
+
/**
|
|
78
|
+
* Get type information for a symbol
|
|
79
|
+
*/
|
|
80
|
+
getTypeInfo(symbol: string, scope?: string[]): {
|
|
81
|
+
type?: string;
|
|
82
|
+
doc?: string;
|
|
83
|
+
url?: string;
|
|
84
|
+
} | null;
|
|
85
|
+
/**
|
|
86
|
+
* Find symbol information in definitions
|
|
87
|
+
*/
|
|
88
|
+
private findSymbolInfo;
|
|
89
|
+
/**
|
|
90
|
+
* Refresh definitions (force cache invalidation and reload)
|
|
91
|
+
*/
|
|
92
|
+
refresh(): void;
|
|
93
|
+
}
|
|
94
|
+
export declare const autocompleteManager: AutocompleteManager;
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
import {makeTernDefs}from'../utils/tern-definitions.js';import {libraryManager}from'./library-manager.js';import {combineDefinitions,AUTOCOMPLETE_DEFINITIONS,getDefaultDefinitions,getLibraryDefinitions,getDefinition}from'./autocomplete/index.js';/**
|
|
2
|
+
* Autocomplete Manager for JavaScript Code Intelligence
|
|
3
|
+
* Integrates Tern definitions with library management for comprehensive autocomplete support
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Default autocomplete configuration
|
|
7
|
+
*/
|
|
8
|
+
const DEFAULT_CONFIG = {
|
|
9
|
+
includeDefaults: true,
|
|
10
|
+
includeLibraries: true,
|
|
11
|
+
enableDynamicLibraries: true,
|
|
12
|
+
customDefinitions: []
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Manages autocomplete definitions and provides intelligent code completion
|
|
16
|
+
*/
|
|
17
|
+
class AutocompleteManager {
|
|
18
|
+
config;
|
|
19
|
+
cachedDefinitions = null;
|
|
20
|
+
lastUpdateTime = 0;
|
|
21
|
+
cacheTimeout = 5000; // 5 seconds
|
|
22
|
+
constructor(config = {}) {
|
|
23
|
+
this.config = {
|
|
24
|
+
...DEFAULT_CONFIG,
|
|
25
|
+
...config
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Update configuration
|
|
30
|
+
*/
|
|
31
|
+
updateConfig(config) {
|
|
32
|
+
this.config = {
|
|
33
|
+
...this.config,
|
|
34
|
+
...config
|
|
35
|
+
};
|
|
36
|
+
this.invalidateCache();
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Get current configuration
|
|
40
|
+
*/
|
|
41
|
+
getConfig() {
|
|
42
|
+
return {
|
|
43
|
+
...this.config
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Invalidate the cached definitions
|
|
48
|
+
*/
|
|
49
|
+
invalidateCache() {
|
|
50
|
+
this.cachedDefinitions = null;
|
|
51
|
+
this.lastUpdateTime = 0;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Get comprehensive autocomplete definitions
|
|
55
|
+
*/
|
|
56
|
+
getDefinitions() {
|
|
57
|
+
const now = Date.now();
|
|
58
|
+
// Return cached definitions if still valid
|
|
59
|
+
if (this.cachedDefinitions && now - this.lastUpdateTime < this.cacheTimeout) {
|
|
60
|
+
return this.cachedDefinitions;
|
|
61
|
+
}
|
|
62
|
+
const definitions = [];
|
|
63
|
+
// Add default definitions (ECMAScript, Browser APIs)
|
|
64
|
+
if (this.config.includeDefaults) {
|
|
65
|
+
definitions.push(...getDefaultDefinitions());
|
|
66
|
+
}
|
|
67
|
+
// Add library definitions (lodash, base64-js, etc.)
|
|
68
|
+
if (this.config.includeLibraries) {
|
|
69
|
+
definitions.push(...getLibraryDefinitions());
|
|
70
|
+
}
|
|
71
|
+
// Add custom specified definitions
|
|
72
|
+
this.config.customDefinitions.forEach(defName => {
|
|
73
|
+
const definition = getDefinition(defName);
|
|
74
|
+
if (definition) {
|
|
75
|
+
definitions.push(definition);
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
// Add dynamic library definitions if enabled
|
|
79
|
+
if (this.config.enableDynamicLibraries) {
|
|
80
|
+
const dynamicDefs = this.getDynamicLibraryDefinitions();
|
|
81
|
+
if (dynamicDefs) {
|
|
82
|
+
definitions.push(dynamicDefs);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// Combine all definitions
|
|
86
|
+
this.cachedDefinitions = combineDefinitions(definitions);
|
|
87
|
+
this.lastUpdateTime = now;
|
|
88
|
+
return this.cachedDefinitions;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Get definitions for dynamically loaded libraries
|
|
92
|
+
*/
|
|
93
|
+
getDynamicLibraryDefinitions() {
|
|
94
|
+
try {
|
|
95
|
+
const installedLibraries = libraryManager.getInstalledLibraries();
|
|
96
|
+
if (installedLibraries.length === 0) {
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
// Create definitions from installed library objects
|
|
100
|
+
const combinedDefs = {};
|
|
101
|
+
installedLibraries.forEach(libInfo => {
|
|
102
|
+
if (libInfo.global && typeof libInfo.global === 'object') {
|
|
103
|
+
// Generate Tern definitions from the library object
|
|
104
|
+
const ternDef = makeTernDefs(libInfo.global);
|
|
105
|
+
// Add to combined definitions under the library identifier
|
|
106
|
+
combinedDefs[libInfo.identifier] = ternDef;
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
if (Object.keys(combinedDefs).length === 0) {
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
return {
|
|
113
|
+
'!name': 'dynamic-libraries',
|
|
114
|
+
...combinedDefs
|
|
115
|
+
};
|
|
116
|
+
} catch (error) {
|
|
117
|
+
console.warn('Failed to generate dynamic library definitions:', error);
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Get Tern-compatible definition object
|
|
123
|
+
*/
|
|
124
|
+
getTernDef() {
|
|
125
|
+
const definitions = this.getDefinitions();
|
|
126
|
+
return definitions;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Get available definition names
|
|
130
|
+
*/
|
|
131
|
+
getAvailableDefinitions() {
|
|
132
|
+
return Object.keys(AUTOCOMPLETE_DEFINITIONS);
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Check if a definition is available
|
|
136
|
+
*/
|
|
137
|
+
hasDefinition(name) {
|
|
138
|
+
return name in AUTOCOMPLETE_DEFINITIONS;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Get completions for a specific context
|
|
142
|
+
*/
|
|
143
|
+
getCompletions(context) {
|
|
144
|
+
return new Promise(resolve => {
|
|
145
|
+
try {
|
|
146
|
+
const definitions = this.getDefinitions();
|
|
147
|
+
const completions = [];
|
|
148
|
+
// Extract relevant completions from definitions
|
|
149
|
+
this.extractCompletions(definitions, context.scope || [], completions);
|
|
150
|
+
resolve({
|
|
151
|
+
completions: completions.slice(0, 100),
|
|
152
|
+
// Limit results
|
|
153
|
+
isIncomplete: completions.length > 100
|
|
154
|
+
});
|
|
155
|
+
} catch (error) {
|
|
156
|
+
console.error('Failed to get completions:', error);
|
|
157
|
+
resolve({
|
|
158
|
+
completions: [],
|
|
159
|
+
isIncomplete: false
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Extract completions from definition object
|
|
166
|
+
*/
|
|
167
|
+
extractCompletions(obj, scope, results, visited = new Set()) {
|
|
168
|
+
if (!obj || typeof obj !== 'object' || visited.has(obj)) {
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
visited.add(obj);
|
|
172
|
+
const objRecord = obj;
|
|
173
|
+
Object.keys(objRecord).forEach(key => {
|
|
174
|
+
if (key.startsWith('!')) {
|
|
175
|
+
return; // Skip metadata
|
|
176
|
+
}
|
|
177
|
+
const value = objRecord[key];
|
|
178
|
+
if (typeof value === 'object' && value !== null) {
|
|
179
|
+
const valueRecord = value;
|
|
180
|
+
results.push({
|
|
181
|
+
name: key,
|
|
182
|
+
type: valueRecord['!type'] || 'unknown',
|
|
183
|
+
doc: valueRecord['!doc'],
|
|
184
|
+
url: valueRecord['!url']
|
|
185
|
+
});
|
|
186
|
+
// Recurse for nested properties
|
|
187
|
+
if (scope.length === 0 || scope.includes(key)) {
|
|
188
|
+
this.extractCompletions(value, scope.slice(1), results, visited);
|
|
189
|
+
}
|
|
190
|
+
} else {
|
|
191
|
+
results.push({
|
|
192
|
+
name: key,
|
|
193
|
+
type: typeof value
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
visited.delete(obj);
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Get type information for a symbol
|
|
201
|
+
*/
|
|
202
|
+
getTypeInfo(symbol, scope) {
|
|
203
|
+
try {
|
|
204
|
+
const definitions = this.getDefinitions();
|
|
205
|
+
return this.findSymbolInfo(definitions, symbol, scope || []);
|
|
206
|
+
} catch (error) {
|
|
207
|
+
console.error('Failed to get type info:', error);
|
|
208
|
+
return null;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Find symbol information in definitions
|
|
213
|
+
*/
|
|
214
|
+
findSymbolInfo(obj, symbol, scope) {
|
|
215
|
+
if (!obj || typeof obj !== 'object') {
|
|
216
|
+
return null;
|
|
217
|
+
}
|
|
218
|
+
const objRecord = obj;
|
|
219
|
+
// Direct lookup
|
|
220
|
+
if (symbol in objRecord) {
|
|
221
|
+
const value = objRecord[symbol];
|
|
222
|
+
if (typeof value === 'object' && value !== null) {
|
|
223
|
+
const valueRecord = value;
|
|
224
|
+
return {
|
|
225
|
+
type: valueRecord['!type'],
|
|
226
|
+
doc: valueRecord['!doc'],
|
|
227
|
+
url: valueRecord['!url']
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
// Scoped lookup
|
|
232
|
+
if (scope.length > 0) {
|
|
233
|
+
const [currentScope, ...remainingScope] = scope;
|
|
234
|
+
if (currentScope in objRecord) {
|
|
235
|
+
return this.findSymbolInfo(objRecord[currentScope], symbol, remainingScope);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
return null;
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Refresh definitions (force cache invalidation and reload)
|
|
242
|
+
*/
|
|
243
|
+
refresh() {
|
|
244
|
+
this.invalidateCache();
|
|
245
|
+
this.getDefinitions(); // Force reload
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
// Export a default instance
|
|
249
|
+
const autocompleteManager = new AutocompleteManager();export{AutocompleteManager,autocompleteManager};//# sourceMappingURL=autocomplete-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autocomplete-manager.js","sources":["../../../../../src/services/code/javascript/jslibrary/autocomplete-manager.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|