@lvce-editor/shared-process 0.2.2 → 0.4.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/config/builtinCommands.json +12 -0
- package/extensions/builtin.language-basics-css/README.md +1 -1
- package/extensions/builtin.language-basics-css/src/tokenizeCss.js +10 -5
- package/extensions/builtin.language-basics-desktop/src/tokenizeDesktop.js +103 -14
- package/extensions/builtin.language-basics-docker/extension.json +1 -1
- package/extensions/builtin.language-basics-docker/src/tokenizeDockerfile.js +68 -9
- package/extensions/builtin.language-basics-html/src/tokenizeHtml.js +5 -5
- package/extensions/builtin.language-basics-yaml/src/tokenizeYaml.js +88 -10
- package/package.json +3 -3
- package/src/parts/Command/Command.js +9 -200
- package/src/parts/Configuration/Configuration.ipc.js +3 -4
- package/src/parts/Developer/Developer.ipc.js +3 -3
- package/src/parts/ExtensionHost/ExtensionHost.ipc.js +6 -6
- package/src/parts/ExtensionManagement/ExtensionManagement.ipc.js +8 -8
- package/src/parts/Module/Module.js +40 -0
- package/src/parts/ModuleId/ModuleId.js +16 -0
- package/src/parts/ModuleMap/ModuleMap.js +133 -0
- package/src/parts/OutputChannel/OutputChannel.ipc.js +1 -1
- package/src/parts/Platform/Platform.ipc.js +1 -1
- package/src/parts/Platform/Platform.js +37 -35
- package/src/parts/Search/Search.js +1 -1
- package/src/parts/Terminal/Terminal.ipc.js +1 -1
- package/src/parts/Workspace/Workspace.ipc.js +1 -1
|
@@ -380,6 +380,10 @@
|
|
|
380
380
|
"id": "Explorer.expandAll",
|
|
381
381
|
"label": "Explorer: Expand All"
|
|
382
382
|
},
|
|
383
|
+
{
|
|
384
|
+
"id": "Explorer.expandRecursively",
|
|
385
|
+
"label": "Explorer: Expand Recursively"
|
|
386
|
+
},
|
|
383
387
|
{
|
|
384
388
|
"id": "SessionReplay.replayCurrentSession",
|
|
385
389
|
"label": "SessionReplay: Replay Current Session"
|
|
@@ -391,5 +395,13 @@
|
|
|
391
395
|
{
|
|
392
396
|
"id": "SessionReplay.openSession",
|
|
393
397
|
"label": "SessionReplay: Open Session"
|
|
398
|
+
},
|
|
399
|
+
{
|
|
400
|
+
"id": "ContentTracing.start",
|
|
401
|
+
"label": "Developer: Start Content Tracing"
|
|
402
|
+
},
|
|
403
|
+
{
|
|
404
|
+
"id": "ContentTracing.stop",
|
|
405
|
+
"label": "Developer: Stop Content Tracing"
|
|
394
406
|
}
|
|
395
407
|
]
|
|
@@ -104,12 +104,19 @@ export const initialLineState = {
|
|
|
104
104
|
stack: [],
|
|
105
105
|
}
|
|
106
106
|
|
|
107
|
+
/**
|
|
108
|
+
* @param {any} lineStateA
|
|
109
|
+
* @param {any} lineStateB
|
|
110
|
+
*/
|
|
107
111
|
export const isEqualLineState = (lineStateA, lineStateB) => {
|
|
108
112
|
return lineStateA.state === lineStateB.state
|
|
109
113
|
}
|
|
110
114
|
|
|
115
|
+
export const hasArrayReturn = true
|
|
116
|
+
|
|
111
117
|
/**
|
|
112
118
|
* @param {string} line
|
|
119
|
+
* @param {any} lineState
|
|
113
120
|
*/
|
|
114
121
|
export const tokenizeLine = (line, lineState) => {
|
|
115
122
|
let next = null
|
|
@@ -349,11 +356,9 @@ export const tokenizeLine = (line, lineState) => {
|
|
|
349
356
|
console.log({ state, line })
|
|
350
357
|
throw new Error('no')
|
|
351
358
|
}
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
length: next[0].length,
|
|
356
|
-
})
|
|
359
|
+
const tokenLength = next[0].length
|
|
360
|
+
index += tokenLength
|
|
361
|
+
tokens.push(token, tokenLength)
|
|
357
362
|
}
|
|
358
363
|
return {
|
|
359
364
|
state,
|
|
@@ -1,33 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @enum number
|
|
3
|
+
*/
|
|
4
|
+
export const State = {
|
|
5
|
+
TopLevelContent: 1,
|
|
6
|
+
InsideLineComment: 2,
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export const StateMap = {
|
|
10
|
+
[State.TopLevelContent]: 'TopLevelContent',
|
|
11
|
+
[State.InsideLineComment]: 'InsideLineComment',
|
|
12
|
+
}
|
|
13
|
+
|
|
1
14
|
/**
|
|
2
15
|
* @enum number
|
|
3
16
|
*/
|
|
4
17
|
export const TokenType = {
|
|
5
|
-
|
|
6
|
-
|
|
18
|
+
CssSelector: 1,
|
|
19
|
+
Whitespace: 2,
|
|
20
|
+
None: 57,
|
|
21
|
+
Unknown: 881,
|
|
22
|
+
NewLine: 884,
|
|
23
|
+
Comment: 885,
|
|
24
|
+
Query: 886,
|
|
25
|
+
Text: 887,
|
|
7
26
|
}
|
|
8
27
|
|
|
9
28
|
export const TokenMap = {
|
|
29
|
+
[TokenType.CssSelector]: 'CssSelector',
|
|
30
|
+
[TokenType.Whitespace]: 'Whitespace',
|
|
31
|
+
[TokenType.None]: 'None',
|
|
32
|
+
[TokenType.Unknown]: 'Unknown',
|
|
33
|
+
[TokenType.NewLine]: 'NewLine',
|
|
34
|
+
[TokenType.Comment]: 'Comment',
|
|
35
|
+
[TokenType.Query]: 'Query',
|
|
10
36
|
[TokenType.Text]: 'Text',
|
|
11
37
|
}
|
|
12
38
|
|
|
39
|
+
const RE_LINE_COMMENT_START = /^#/
|
|
40
|
+
const RE_WHITESPACE = /^ +/
|
|
41
|
+
const RE_CURLY_OPEN = /^\{/
|
|
42
|
+
const RE_CURLY_CLOSE = /^\}/
|
|
43
|
+
const RE_PROPERTY_NAME = /^[a-zA-Z\-]+\b/
|
|
44
|
+
const RE_COLON = /^:/
|
|
45
|
+
const RE_PROPERTY_VALUE = /^[^;\}]+/
|
|
46
|
+
const RE_SEMICOLON = /^;/
|
|
47
|
+
const RE_COMMA = /^,/
|
|
48
|
+
const RE_ANYTHING = /^.*/
|
|
49
|
+
const RE_NUMERIC = /^(([0-9]+\.?[0-9]*)|(\.[0-9]+))/
|
|
50
|
+
const RE_ANYTHING_UNTIL_CLOSE_BRACE = /^[^\}]+/
|
|
51
|
+
const RE_BLOCK_COMMENT_START = /^\/\*/
|
|
52
|
+
const RE_BLOCK_COMMENT_END = /^\*\//
|
|
53
|
+
const RE_BLOCK_COMMENT_CONTENT = /^.+?(?=\*\/|$)/s
|
|
54
|
+
const RE_ROUND_OPEN = /^\(/
|
|
55
|
+
const RE_ROUND_CLOSE = /^\)/
|
|
56
|
+
const RE_PSEUDO_SELECTOR_CONTENT = /^[^\)]+/
|
|
57
|
+
const RE_SQUARE_OPEN = /^\[/
|
|
58
|
+
const RE_SQUARE_CLOSE = /^\]/
|
|
59
|
+
const RE_ATTRIBUTE_SELECTOR_CONTENT = /^[^\]]+/
|
|
60
|
+
const RE_QUERY = /^@[a-z\-]+/
|
|
61
|
+
const RE_STAR = /^\*/
|
|
62
|
+
const RE_QUERY_NAME = /^[a-z\-]+/
|
|
63
|
+
const RE_QUERY_CONTENT = /^[^\)]+/
|
|
64
|
+
const RE_COMBINATOR = /^[\+\>\~]/
|
|
65
|
+
|
|
13
66
|
export const initialLineState = {
|
|
14
|
-
state:
|
|
67
|
+
state: State.TopLevelContent,
|
|
68
|
+
tokens: [],
|
|
69
|
+
stack: [],
|
|
15
70
|
}
|
|
16
71
|
|
|
72
|
+
export const hasArrayReturn = true
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* @param {string} line
|
|
76
|
+
* @param {any} lineState
|
|
77
|
+
*/
|
|
17
78
|
export const tokenizeLine = (line, lineState) => {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
79
|
+
let next = null
|
|
80
|
+
let index = 0
|
|
81
|
+
let tokens = []
|
|
82
|
+
let token = TokenType.None
|
|
83
|
+
let state = lineState.state
|
|
84
|
+
while (index < line.length) {
|
|
85
|
+
const part = line.slice(index)
|
|
86
|
+
switch (state) {
|
|
87
|
+
case State.TopLevelContent:
|
|
88
|
+
if ((next = part.match(RE_LINE_COMMENT_START))) {
|
|
89
|
+
token = TokenType.Comment
|
|
90
|
+
state = State.InsideLineComment
|
|
91
|
+
} else if ((next = part.match(RE_WHITESPACE))) {
|
|
92
|
+
token = TokenType.Whitespace
|
|
93
|
+
state = State.TopLevelContent
|
|
94
|
+
} else if ((next = part.match(RE_ANYTHING))) {
|
|
95
|
+
token = TokenType.Text
|
|
96
|
+
state = State.TopLevelContent
|
|
97
|
+
} else {
|
|
98
|
+
part //?
|
|
99
|
+
throw new Error('no')
|
|
100
|
+
}
|
|
101
|
+
break
|
|
102
|
+
case State.InsideLineComment:
|
|
103
|
+
if ((next = part.match(RE_ANYTHING))) {
|
|
104
|
+
token = TokenType.Comment
|
|
105
|
+
state = State.TopLevelContent
|
|
106
|
+
} else {
|
|
107
|
+
throw new Error('no')
|
|
108
|
+
}
|
|
109
|
+
break
|
|
110
|
+
default:
|
|
111
|
+
console.log({ state, line })
|
|
112
|
+
throw new Error('no')
|
|
22
113
|
}
|
|
114
|
+
const tokenLength = next[0].length
|
|
115
|
+
index += tokenLength
|
|
116
|
+
tokens.push(token, tokenLength)
|
|
23
117
|
}
|
|
24
118
|
return {
|
|
25
|
-
state
|
|
26
|
-
tokens
|
|
27
|
-
{
|
|
28
|
-
type: TokenType.Text,
|
|
29
|
-
length: line.length,
|
|
30
|
-
},
|
|
31
|
-
],
|
|
119
|
+
state,
|
|
120
|
+
tokens,
|
|
32
121
|
}
|
|
33
122
|
}
|
|
@@ -2,30 +2,89 @@
|
|
|
2
2
|
* @enum number
|
|
3
3
|
*/
|
|
4
4
|
export const TokenType = {
|
|
5
|
+
None: 0,
|
|
5
6
|
Text: 1,
|
|
7
|
+
VariableName: 2,
|
|
8
|
+
Keyword: 3,
|
|
9
|
+
Whitespace: 4,
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* @enum number
|
|
14
|
+
*/
|
|
15
|
+
export const State = {
|
|
16
|
+
TopLevelContent: 1,
|
|
17
|
+
AfterSelector: 2,
|
|
18
|
+
InsideSelector: 3,
|
|
19
|
+
AfterPropertyName: 4,
|
|
20
|
+
AfterPropertyNameAfterColon: 5,
|
|
21
|
+
AfterPropertyValue: 6,
|
|
22
|
+
InsideBlockComment: 7,
|
|
23
|
+
InsidePseudoSelector: 8,
|
|
24
|
+
InsideAttributeSelector: 9,
|
|
25
|
+
AfterQuery: 10,
|
|
26
|
+
InsideRound: 11,
|
|
27
|
+
AfterQueryWithRules: 12,
|
|
6
28
|
}
|
|
7
29
|
|
|
8
30
|
export const TokenMap = {
|
|
9
31
|
[TokenType.Text]: 'Text',
|
|
32
|
+
[TokenType.VariableName]: 'VariableName',
|
|
33
|
+
[TokenType.Whitespace]: 'Whitespace',
|
|
34
|
+
[TokenType.Keyword]: 'Keyword',
|
|
10
35
|
}
|
|
11
36
|
|
|
12
37
|
export const initialLineState = {
|
|
13
|
-
state:
|
|
38
|
+
state: 1,
|
|
14
39
|
tokens: [],
|
|
15
40
|
}
|
|
16
41
|
|
|
42
|
+
const RE_WHITESPACE = /^ +/
|
|
43
|
+
const RE_ANYTHING = /^.*/
|
|
44
|
+
const RE_KEYWORD =
|
|
45
|
+
/^(?:ADD|ARG|CMD|COPY|ENTRYPOINT|ENV|EXPOSE|FROM|HEALTHCHECK|LABEL|MAINTAINER|RUN|SHELL|STOPSIGNAL|USER|VOLUME|WORKDIR)\b/
|
|
46
|
+
|
|
47
|
+
export const hasArrayReturnValue = true
|
|
48
|
+
|
|
17
49
|
/**
|
|
18
50
|
* @param {string} line
|
|
51
|
+
* @param {any} lineState
|
|
19
52
|
*/
|
|
20
|
-
export const tokenizeLine = (line) => {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
53
|
+
export const tokenizeLine = (line, lineState) => {
|
|
54
|
+
let next = null
|
|
55
|
+
let index = 0
|
|
56
|
+
let tokens = []
|
|
57
|
+
let token = TokenType.None
|
|
58
|
+
let state = lineState.state
|
|
59
|
+
while (index < line.length) {
|
|
60
|
+
const part = line.slice(index)
|
|
61
|
+
switch (state) {
|
|
62
|
+
case State.TopLevelContent:
|
|
63
|
+
if ((next = part.match(RE_KEYWORD))) {
|
|
64
|
+
token = TokenType.Keyword
|
|
65
|
+
state = State.TopLevelContent
|
|
66
|
+
} else if ((next = part.match(RE_WHITESPACE))) {
|
|
67
|
+
token = TokenType.Whitespace
|
|
68
|
+
state = State.TopLevelContent
|
|
69
|
+
} else if ((next = part.match(RE_ANYTHING))) {
|
|
70
|
+
token = TokenType.Text
|
|
71
|
+
state = State.TopLevelContent
|
|
72
|
+
} else {
|
|
73
|
+
throw new Error('no')
|
|
74
|
+
}
|
|
75
|
+
break
|
|
76
|
+
default:
|
|
77
|
+
console.log({ state, line })
|
|
78
|
+
throw new Error('no')
|
|
79
|
+
}
|
|
80
|
+
index += next[0].length
|
|
81
|
+
tokens.push({
|
|
82
|
+
type: token,
|
|
83
|
+
length: next[0].length,
|
|
84
|
+
})
|
|
85
|
+
}
|
|
27
86
|
return {
|
|
28
|
-
state
|
|
87
|
+
state,
|
|
29
88
|
tokens,
|
|
30
89
|
}
|
|
31
90
|
}
|
|
@@ -98,6 +98,8 @@ export const isLineStateEqual = (lineStateA, lineStateB) => {
|
|
|
98
98
|
return lineStateA.state === lineStateB.state
|
|
99
99
|
}
|
|
100
100
|
|
|
101
|
+
export const hasArrayReturn = true
|
|
102
|
+
|
|
101
103
|
/**
|
|
102
104
|
*
|
|
103
105
|
* @param {string} line
|
|
@@ -287,11 +289,9 @@ export const tokenizeLine = (line, lineState) => {
|
|
|
287
289
|
state
|
|
288
290
|
throw new Error('no')
|
|
289
291
|
}
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
length: next[0].length,
|
|
294
|
-
})
|
|
292
|
+
const tokenLength = next[0].length
|
|
293
|
+
index += tokenLength
|
|
294
|
+
tokens.push(token, tokenLength)
|
|
295
295
|
}
|
|
296
296
|
return {
|
|
297
297
|
state,
|
|
@@ -4,6 +4,9 @@
|
|
|
4
4
|
export const State = {
|
|
5
5
|
TopLevelContent: 1,
|
|
6
6
|
InsideLineComment: 2,
|
|
7
|
+
AfterPropertyName: 3,
|
|
8
|
+
AfterPropertyNameAfterColon: 4,
|
|
9
|
+
AfterDash: 5,
|
|
7
10
|
}
|
|
8
11
|
|
|
9
12
|
export const StateMap = {
|
|
@@ -15,33 +18,42 @@ export const StateMap = {
|
|
|
15
18
|
* @enum number
|
|
16
19
|
*/
|
|
17
20
|
export const TokenType = {
|
|
21
|
+
Comment: 885,
|
|
18
22
|
CssSelector: 1,
|
|
19
|
-
|
|
20
|
-
None: 57,
|
|
21
|
-
Unknown: 881,
|
|
23
|
+
LanguageConstant: 11,
|
|
22
24
|
NewLine: 884,
|
|
23
|
-
|
|
25
|
+
None: 57,
|
|
26
|
+
Numeric: 15,
|
|
27
|
+
PropertyName: 12,
|
|
28
|
+
PropertyValueString: 14,
|
|
29
|
+
Punctuation: 13,
|
|
24
30
|
Query: 886,
|
|
25
31
|
Text: 887,
|
|
32
|
+
Unknown: 881,
|
|
33
|
+
Whitespace: 2,
|
|
26
34
|
}
|
|
27
35
|
|
|
28
36
|
export const TokenMap = {
|
|
37
|
+
[TokenType.Comment]: 'Comment',
|
|
29
38
|
[TokenType.CssSelector]: 'CssSelector',
|
|
30
|
-
[TokenType.
|
|
31
|
-
[TokenType.None]: 'None',
|
|
32
|
-
[TokenType.Unknown]: 'Unknown',
|
|
39
|
+
[TokenType.LanguageConstant]: 'LanguageConstant',
|
|
33
40
|
[TokenType.NewLine]: 'NewLine',
|
|
34
|
-
[TokenType.
|
|
41
|
+
[TokenType.None]: 'None',
|
|
42
|
+
[TokenType.Numeric]: 'Numeric',
|
|
43
|
+
[TokenType.PropertyName]: 'JsonPropertyName',
|
|
35
44
|
[TokenType.Query]: 'Query',
|
|
36
45
|
[TokenType.Text]: 'Text',
|
|
46
|
+
[TokenType.Unknown]: 'Unknown',
|
|
47
|
+
[TokenType.Whitespace]: 'Whitespace',
|
|
48
|
+
[TokenType.Punctuation]: 'Punctuation',
|
|
49
|
+
[TokenType.PropertyValueString]: 'String',
|
|
37
50
|
}
|
|
38
51
|
|
|
39
52
|
const RE_LINE_COMMENT_START = /^#/
|
|
40
53
|
const RE_WHITESPACE = /^ +/
|
|
41
54
|
const RE_CURLY_OPEN = /^\{/
|
|
42
55
|
const RE_CURLY_CLOSE = /^\}/
|
|
43
|
-
const RE_PROPERTY_NAME = /^[a-zA-Z
|
|
44
|
-
const RE_COLON = /^:/
|
|
56
|
+
const RE_PROPERTY_NAME = /^[a-zA-Z\-\_]+(?=\s*:)/
|
|
45
57
|
const RE_PROPERTY_VALUE = /^[^;\}]+/
|
|
46
58
|
const RE_SEMICOLON = /^;/
|
|
47
59
|
const RE_COMMA = /^,/
|
|
@@ -62,6 +74,9 @@ const RE_STAR = /^\*/
|
|
|
62
74
|
const RE_QUERY_NAME = /^[a-z\-]+/
|
|
63
75
|
const RE_QUERY_CONTENT = /^[^\)]+/
|
|
64
76
|
const RE_COMBINATOR = /^[\+\>\~]/
|
|
77
|
+
const RE_LANGUAGE_CONSTANT = /^(?:true|false)/
|
|
78
|
+
const RE_COLON = /^:/
|
|
79
|
+
const RE_DASH = /^\-/
|
|
65
80
|
|
|
66
81
|
export const initialLineState = {
|
|
67
82
|
state: State.TopLevelContent,
|
|
@@ -89,6 +104,18 @@ export const tokenizeLine = (line, lineState) => {
|
|
|
89
104
|
} else if ((next = part.match(RE_WHITESPACE))) {
|
|
90
105
|
token = TokenType.Whitespace
|
|
91
106
|
state = State.TopLevelContent
|
|
107
|
+
} else if ((next = part.match(RE_LANGUAGE_CONSTANT))) {
|
|
108
|
+
token = TokenType.LanguageConstant
|
|
109
|
+
state = State.TopLevelContent
|
|
110
|
+
} else if ((next = part.match(RE_PROPERTY_NAME))) {
|
|
111
|
+
token = TokenType.PropertyName
|
|
112
|
+
state = State.AfterPropertyName
|
|
113
|
+
} else if ((next = part.match(RE_NUMERIC))) {
|
|
114
|
+
token = TokenType.Numeric
|
|
115
|
+
state = State.TopLevelContent
|
|
116
|
+
} else if ((next = part.match(RE_DASH))) {
|
|
117
|
+
token = TokenType.Punctuation
|
|
118
|
+
state = State.AfterDash
|
|
92
119
|
} else if ((next = part.match(RE_ANYTHING))) {
|
|
93
120
|
token = TokenType.Text
|
|
94
121
|
state = State.TopLevelContent
|
|
@@ -105,6 +132,54 @@ export const tokenizeLine = (line, lineState) => {
|
|
|
105
132
|
throw new Error('no')
|
|
106
133
|
}
|
|
107
134
|
break
|
|
135
|
+
case State.AfterPropertyName:
|
|
136
|
+
if ((next = part.match(RE_COLON))) {
|
|
137
|
+
token = TokenType.Punctuation
|
|
138
|
+
state = State.AfterPropertyNameAfterColon
|
|
139
|
+
} else if ((next = part.match(RE_WHITESPACE))) {
|
|
140
|
+
token = TokenType.Whitespace
|
|
141
|
+
state = State.AfterPropertyName
|
|
142
|
+
} else {
|
|
143
|
+
throw new Error('no')
|
|
144
|
+
}
|
|
145
|
+
break
|
|
146
|
+
case State.AfterPropertyNameAfterColon:
|
|
147
|
+
if ((next = part.match(RE_WHITESPACE))) {
|
|
148
|
+
token = TokenType.Whitespace
|
|
149
|
+
state = State.AfterPropertyNameAfterColon
|
|
150
|
+
} else if ((next = part.match(RE_LANGUAGE_CONSTANT))) {
|
|
151
|
+
token = TokenType.LanguageConstant
|
|
152
|
+
state = State.TopLevelContent
|
|
153
|
+
} else if ((next = part.match(RE_NUMERIC))) {
|
|
154
|
+
token = TokenType.Numeric
|
|
155
|
+
state = State.TopLevelContent
|
|
156
|
+
} else if ((next = part.match(RE_ANYTHING))) {
|
|
157
|
+
token = TokenType.PropertyValueString
|
|
158
|
+
state = State.TopLevelContent
|
|
159
|
+
} else {
|
|
160
|
+
throw new Error('no')
|
|
161
|
+
}
|
|
162
|
+
break
|
|
163
|
+
case State.AfterDash:
|
|
164
|
+
if ((next = part.match(RE_WHITESPACE))) {
|
|
165
|
+
token = TokenType.Whitespace
|
|
166
|
+
state = State.AfterDash
|
|
167
|
+
} else if ((next = part.match(RE_PROPERTY_NAME))) {
|
|
168
|
+
token = TokenType.PropertyName
|
|
169
|
+
state = State.AfterPropertyName
|
|
170
|
+
} else if ((next = part.match(RE_LANGUAGE_CONSTANT))) {
|
|
171
|
+
token = TokenType.LanguageConstant
|
|
172
|
+
state = State.TopLevelContent
|
|
173
|
+
} else if ((next = part.match(RE_NUMERIC))) {
|
|
174
|
+
token = TokenType.Numeric
|
|
175
|
+
state = State.TopLevelContent
|
|
176
|
+
} else if ((next = part.match(RE_ANYTHING))) {
|
|
177
|
+
token = TokenType.PropertyValueString
|
|
178
|
+
state = State.TopLevelContent
|
|
179
|
+
} else {
|
|
180
|
+
throw new Error('no')
|
|
181
|
+
}
|
|
182
|
+
break
|
|
108
183
|
default:
|
|
109
184
|
console.log({ state, line })
|
|
110
185
|
throw new Error('no')
|
|
@@ -115,6 +190,9 @@ export const tokenizeLine = (line, lineState) => {
|
|
|
115
190
|
length: next[0].length,
|
|
116
191
|
})
|
|
117
192
|
}
|
|
193
|
+
if (state === State.AfterPropertyNameAfterColon) {
|
|
194
|
+
state = State.TopLevelContent
|
|
195
|
+
}
|
|
118
196
|
return {
|
|
119
197
|
state,
|
|
120
198
|
tokens,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lvce-editor/shared-process",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.1",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -38,8 +38,8 @@
|
|
|
38
38
|
"verror": "^1.10.1",
|
|
39
39
|
"ws": "^8.8.1",
|
|
40
40
|
"xdg-basedir": "^5.1.0",
|
|
41
|
-
"@lvce-editor/pty-host": "0.
|
|
42
|
-
"@lvce-editor/extension-host": "0.
|
|
41
|
+
"@lvce-editor/pty-host": "0.4.1",
|
|
42
|
+
"@lvce-editor/extension-host": "0.4.1"
|
|
43
43
|
},
|
|
44
44
|
"optionalDependencies": {
|
|
45
45
|
"electron-clipboard-ex": "^1.3.3",
|
|
@@ -1,82 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
const MODULE_TERMINAL = 3
|
|
4
|
-
const MODULE_SEARCH = 5
|
|
5
|
-
const MODULE_SEARCH_FILE = 6
|
|
6
|
-
const MODULE_OUTPUT_CHANNEL = 7
|
|
7
|
-
const MODULE_DEVELOPER = 8
|
|
8
|
-
const MODULE_EXTENSION_MANAGEMENT = 9
|
|
9
|
-
const MODULE_EXTENSION_HOST = 10
|
|
10
|
-
const MODULE_PREFERENCES = 11
|
|
11
|
-
const MODULE_NATIVE = 12
|
|
12
|
-
const MODULE_CLIPBOARD = 13
|
|
13
|
-
const MODULE_TEXT_DOCUMENT = 14
|
|
14
|
-
const MODULE_WEBSOCKET_SERVER = 16
|
|
15
|
-
const MODULE_PLATFORM = 17
|
|
16
|
-
const MODULE_RECENTLY_OPENED = 18
|
|
1
|
+
import * as Module from '../Module/Module.js'
|
|
2
|
+
import * as ModuleMap from '../ModuleMap/ModuleMap.js'
|
|
17
3
|
|
|
18
4
|
const commands = Object.create(null)
|
|
19
5
|
const invocables = Object.create(null)
|
|
20
|
-
|
|
21
6
|
const pendingModules = Object.create(null)
|
|
22
7
|
|
|
23
|
-
const loadModule = (moduleId) => {
|
|
24
|
-
switch (moduleId) {
|
|
25
|
-
case MODULE_FILE_SYSTEM:
|
|
26
|
-
return import('../FileSystem/FileSystem.ipc.js')
|
|
27
|
-
case MODULE_WORKSPACE:
|
|
28
|
-
return import('../Workspace/Workspace.ipc.js')
|
|
29
|
-
case MODULE_TERMINAL:
|
|
30
|
-
return import('../Terminal/Terminal.ipc.js')
|
|
31
|
-
case MODULE_SEARCH:
|
|
32
|
-
return import('../Search/Search.ipc.js')
|
|
33
|
-
case MODULE_SEARCH_FILE:
|
|
34
|
-
return import('../SearchFile/SearchFile.ipc.js')
|
|
35
|
-
case MODULE_OUTPUT_CHANNEL:
|
|
36
|
-
return import('../OutputChannel/OutputChannel.ipc.js')
|
|
37
|
-
case MODULE_DEVELOPER:
|
|
38
|
-
return import('../Developer/Developer.ipc.js')
|
|
39
|
-
case MODULE_EXTENSION_MANAGEMENT:
|
|
40
|
-
return import('../ExtensionManagement/ExtensionManagement.ipc.js')
|
|
41
|
-
case MODULE_EXTENSION_HOST:
|
|
42
|
-
return import('../ExtensionHost/ExtensionHost.ipc.js')
|
|
43
|
-
case MODULE_PREFERENCES:
|
|
44
|
-
return import('../Preferences/Preferences.ipc.js')
|
|
45
|
-
case MODULE_NATIVE:
|
|
46
|
-
return import('../Native/Native.ipc.js')
|
|
47
|
-
case MODULE_CLIPBOARD:
|
|
48
|
-
return import('../ClipBoard/ClipBoard.ipc.js')
|
|
49
|
-
case MODULE_TEXT_DOCUMENT:
|
|
50
|
-
return import('../TextDocument/TextDocument.ipc.js')
|
|
51
|
-
case MODULE_WEBSOCKET_SERVER:
|
|
52
|
-
return import('../WebSocketServer/WebSocketServer.ipc.js')
|
|
53
|
-
case MODULE_PLATFORM:
|
|
54
|
-
return import('../Platform/Platform.ipc.js')
|
|
55
|
-
case MODULE_RECENTLY_OPENED:
|
|
56
|
-
return import('../RecentlyOpened/RecentlyOpened.ipc.js')
|
|
57
|
-
default:
|
|
58
|
-
throw new Error(`unknown module ${moduleId}`)
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
8
|
const initializeModule = (module) => {
|
|
63
|
-
if (
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
register(key, value)
|
|
67
|
-
}
|
|
68
|
-
return
|
|
9
|
+
if (module.Commands) {
|
|
10
|
+
for (const [key, value] of Object.entries(module.Commands)) {
|
|
11
|
+
register(key, value)
|
|
69
12
|
}
|
|
70
|
-
|
|
71
|
-
`module ${module.name} is missing an initialize function and commands`
|
|
72
|
-
)
|
|
13
|
+
return
|
|
73
14
|
}
|
|
74
|
-
|
|
15
|
+
throw new Error(`module ${module.name} is missing commands`)
|
|
75
16
|
}
|
|
76
17
|
|
|
77
18
|
const getOrLoadModule = (moduleId) => {
|
|
78
19
|
if (!pendingModules[moduleId]) {
|
|
79
|
-
const importPromise =
|
|
20
|
+
const importPromise = Module.load(moduleId)
|
|
80
21
|
pendingModules[moduleId] = importPromise
|
|
81
22
|
.then(initializeModule)
|
|
82
23
|
.catch((error) => {
|
|
@@ -86,139 +27,7 @@ const getOrLoadModule = (moduleId) => {
|
|
|
86
27
|
return pendingModules[moduleId]
|
|
87
28
|
}
|
|
88
29
|
|
|
89
|
-
const
|
|
90
|
-
switch (commandId) {
|
|
91
|
-
case 'FileSystem.chmod':
|
|
92
|
-
case 'FileSystem.copy':
|
|
93
|
-
case 'FileSystem.createFile':
|
|
94
|
-
case 'FileSystem.createFolder':
|
|
95
|
-
case 'FileSystem.ensureFile':
|
|
96
|
-
case 'FileSystem.getPathSeparator':
|
|
97
|
-
case 'FileSystem.mkdir':
|
|
98
|
-
case 'FileSystem.readDirWithFileTypes':
|
|
99
|
-
case 'FileSystem.readFile':
|
|
100
|
-
case 'FileSystem.remove':
|
|
101
|
-
case 'FileSystem.rename':
|
|
102
|
-
case 'FileSystem.writeFile':
|
|
103
|
-
return MODULE_FILE_SYSTEM
|
|
104
|
-
case 'Workspace.resolveRoot':
|
|
105
|
-
case 'Workspace.getHomeDir':
|
|
106
|
-
return MODULE_WORKSPACE
|
|
107
|
-
case 'Native.openFolder':
|
|
108
|
-
return MODULE_NATIVE
|
|
109
|
-
case 'ClipBoard.readFiles':
|
|
110
|
-
case 'ClipBoard.writeFiles':
|
|
111
|
-
return MODULE_CLIPBOARD
|
|
112
|
-
case 'Developer.sharedProcessStartupPerformance':
|
|
113
|
-
case 'Developer.sharedProcessMemoryUsage':
|
|
114
|
-
case 'Developer.allocateMemory':
|
|
115
|
-
case 'Developer.crashSharedProcess':
|
|
116
|
-
case 'Developer.createHeapSnapshot':
|
|
117
|
-
case 'Developer.createProfile':
|
|
118
|
-
case 'Developer.getNodeStartupTiming':
|
|
119
|
-
case 'Developer.getNodeStartupTime':
|
|
120
|
-
return MODULE_DEVELOPER
|
|
121
|
-
case 'ExtensionHost.executeTabCompletionProvider':
|
|
122
|
-
case 'ExtensionHostLanguages.getLanguages':
|
|
123
|
-
case 'ExtensionHostKeyBindings.getKeyBindings':
|
|
124
|
-
case 'ExtensionHost.executeCommand':
|
|
125
|
-
case 'ExtensionHost.getMemoryUsage':
|
|
126
|
-
case 'ExtensionHost.getSourceControlBadgeCount':
|
|
127
|
-
case 'ExtensionHost.format':
|
|
128
|
-
case 'ExtensionHostTextDocument.syncInitial':
|
|
129
|
-
case 'ExtensionHostHover.execute':
|
|
130
|
-
case 'ExtensionHostDiagnostic.execute':
|
|
131
|
-
case 'ExtensionHostTextDocument':
|
|
132
|
-
case 'EXtensionHostRename.executePrepareRename':
|
|
133
|
-
case 'ExtensionHostRename.executeRename':
|
|
134
|
-
case 'ExtensionHostDefinition.executeDefinitionProvider':
|
|
135
|
-
case 'ExtensionHostFileSystem.readFile':
|
|
136
|
-
case 'ExtensionHostFileSystem.writeFile':
|
|
137
|
-
case 'ExtensionHostFileSystem.readDirWithFileTypes':
|
|
138
|
-
case 'ExtensionHostFileSystem.remove':
|
|
139
|
-
case 'ExtensionHostFileSystem.rename':
|
|
140
|
-
case 'ExtensionHostSourceControl.acceptInput':
|
|
141
|
-
case 'ExtensionHost.start':
|
|
142
|
-
case 'ExtensionHost.dispose':
|
|
143
|
-
case 'ExtensionHostManagement.activateAll':
|
|
144
|
-
case 'ExtensionHostManagement.enableExtensions':
|
|
145
|
-
case 'ExtensionHostFileSystem.getPathSeparator':
|
|
146
|
-
case 'ExtensionHostWorkspace.setWorkspacePath':
|
|
147
|
-
case 'ExtensionHostOutput.getOutputChannels':
|
|
148
|
-
case 'ExtensionHost.getStatusBarItems':
|
|
149
|
-
case 'ExtensionHost.registerChangeListener':
|
|
150
|
-
case 'ExtensionHostTextDocument.setLanguageId':
|
|
151
|
-
case 'ExtensionHostQuickPick.handleQuickPickResult':
|
|
152
|
-
case 'ExtensionHostBraceCompletion.executeBraceCompletionProvider':
|
|
153
|
-
case 'ExtensionHostReferences.executeReferenceProvider':
|
|
154
|
-
case 'ExtensionHostImplementation.executeImplementationProvider':
|
|
155
|
-
case 'ExtensionHostClosingTag.executeTypeDefinitionProvider':
|
|
156
|
-
case 'ExtensionHostClosingTag.execute':
|
|
157
|
-
case 'ExtensionHostTextDocument.syncFull':
|
|
158
|
-
case 'ExtensionHost.setWorkspacePath':
|
|
159
|
-
case 'ExtensionHost.enableExtension':
|
|
160
|
-
case 'ExtensionHostCompletion.execute':
|
|
161
|
-
case 'ExtensionHostTextDocument.syncIncremental':
|
|
162
|
-
case 'ExtensionHostClosingTag.executeClosingTagProvider':
|
|
163
|
-
case 'ExtensionHost.sourceControlGetChangedFiles':
|
|
164
|
-
case 'ExtensionHostSemanticTokens.executeSemanticTokenProvider':
|
|
165
|
-
return MODULE_EXTENSION_HOST
|
|
166
|
-
case 'ExtensionHost.getColorThemeJson':
|
|
167
|
-
case 'ExtensionHost.getColorThemeNames':
|
|
168
|
-
case 'ExtensionHost.getColorThemes':
|
|
169
|
-
case 'ExtensionHost.getIconTheme':
|
|
170
|
-
case 'ExtensionHost.getIconThemeJson':
|
|
171
|
-
case 'ExtensionHost.getLanguageConfiguration':
|
|
172
|
-
case 'ExtensionHost.getLanguages':
|
|
173
|
-
case 'ExtensionManagement.disable':
|
|
174
|
-
case 'ExtensionManagement.enable':
|
|
175
|
-
case 'ExtensionManagement.getAllExtensions':
|
|
176
|
-
case 'ExtensionManagement.getExtensions':
|
|
177
|
-
case 'ExtensionManagement.install':
|
|
178
|
-
case 'ExtensionManagement.uninstall':
|
|
179
|
-
return MODULE_EXTENSION_MANAGEMENT
|
|
180
|
-
case 'Search.search':
|
|
181
|
-
return MODULE_SEARCH
|
|
182
|
-
case 'Platform.getAppDir':
|
|
183
|
-
case 'Platform.getBuiltinExtensionsPath':
|
|
184
|
-
case 'Platform.getCachedExtensionsPath':
|
|
185
|
-
case 'Platform.getCacheDir':
|
|
186
|
-
case 'Platform.getConfigDir':
|
|
187
|
-
case 'Platform.getDataDir':
|
|
188
|
-
case 'Platform.getDisabledExtensionsPath':
|
|
189
|
-
case 'Platform.getExtensionsPath':
|
|
190
|
-
case 'Platform.getHomeDir':
|
|
191
|
-
case 'Platform.getLogsDir':
|
|
192
|
-
case 'Platform.getMarketplaceUrl':
|
|
193
|
-
case 'Platform.getRecentlyOpenedPath':
|
|
194
|
-
case 'Platform.getTestPath':
|
|
195
|
-
case 'Platform.getUserSettingsPath':
|
|
196
|
-
case 'Platform.setEnvironmentVariables':
|
|
197
|
-
return MODULE_PLATFORM
|
|
198
|
-
case 'Terminal.create':
|
|
199
|
-
case 'Terminal.dispose':
|
|
200
|
-
case 'Terminal.write':
|
|
201
|
-
case 'Terminal.resize':
|
|
202
|
-
return MODULE_TERMINAL
|
|
203
|
-
case 'Preferences.getAll':
|
|
204
|
-
return MODULE_PREFERENCES
|
|
205
|
-
case 4820:
|
|
206
|
-
return MODULE_TEXT_DOCUMENT
|
|
207
|
-
case 5621:
|
|
208
|
-
return MODULE_WEBSOCKET_SERVER
|
|
209
|
-
case 'SearchFile.searchFile':
|
|
210
|
-
return MODULE_SEARCH_FILE
|
|
211
|
-
case 'OutputChannel.open':
|
|
212
|
-
case 'OutputChannel.close':
|
|
213
|
-
return MODULE_OUTPUT_CHANNEL
|
|
214
|
-
case 'RecentlyOpened.addPath':
|
|
215
|
-
return MODULE_RECENTLY_OPENED
|
|
216
|
-
default:
|
|
217
|
-
throw new Error(`[shared-process] command ${commandId} not found`)
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
const loadCommand = (command) => getOrLoadModule(getModuleId(command))
|
|
30
|
+
const loadCommand = (command) => getOrLoadModule(ModuleMap.getModuleId(command))
|
|
222
31
|
|
|
223
32
|
export const register = (commandId, listener) => {
|
|
224
33
|
commands[commandId] = listener
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import * as Command from '../Command/Command.js'
|
|
2
1
|
import * as Configuration from './Configuration.js'
|
|
3
2
|
|
|
4
|
-
export const
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
export const Commands = {
|
|
4
|
+
'-1': Configuration.get,
|
|
5
|
+
'-2': Configuration.set,
|
|
7
6
|
}
|
|
@@ -2,12 +2,12 @@ import * as Developer from './Developer.js'
|
|
|
2
2
|
|
|
3
3
|
// prettier-ignore
|
|
4
4
|
export const Commands = {
|
|
5
|
-
'Developer.sharedProcessStartupPerformance': Developer.sharedProcessStartupPerformance,
|
|
6
|
-
'Developer.sharedProcessMemoryUsage': Developer.sharedProcessMemoryUsage,
|
|
7
5
|
'Developer.allocateMemory': Developer.allocateMemory,
|
|
8
6
|
'Developer.crashSharedProcess': Developer.crashSharedProcess,
|
|
9
7
|
'Developer.createHeapSnapshot': Developer.createHeapSnapshot,
|
|
10
8
|
'Developer.createProfile': Developer.createProfile,
|
|
11
|
-
'Developer.getNodeStartupTiming': Developer.getNodeStartupTiming,
|
|
12
9
|
'Developer.getNodeStartupTime': Developer.getNodeStartupTiming,
|
|
10
|
+
'Developer.getNodeStartupTiming': Developer.getNodeStartupTiming,
|
|
11
|
+
'Developer.sharedProcessMemoryUsage': Developer.sharedProcessMemoryUsage,
|
|
12
|
+
'Developer.sharedProcessStartupPerformance': Developer.sharedProcessStartupPerformance,
|
|
13
13
|
}
|
|
@@ -6,17 +6,17 @@ import * as ExtensionHostKeyBindings from './ExtensionHostKeyBindings.js'
|
|
|
6
6
|
// prettier-ignore
|
|
7
7
|
export const Commands = {
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
'ExtensionHostKeyBindings.getKeyBindings': ExtensionHostKeyBindings.getKeyBindings,
|
|
11
|
-
'ExtensionHost.start': ExtensionHost.start,
|
|
9
|
+
|
|
12
10
|
'ExtensionHost.dispose': ExtensionHost.dispose,
|
|
11
|
+
'ExtensionHost.getCommands': ExtensionHostCommand.getCommandsIpc,
|
|
13
12
|
'ExtensionHost.send': ExtensionHost.send,
|
|
14
|
-
|
|
13
|
+
'ExtensionHost.start': ExtensionHost.start,
|
|
14
|
+
'ExtensionHostCompletion.execute': ExtensionHost.forward,
|
|
15
15
|
'ExtensionHostExtension.activate': ExtensionHost.forward,
|
|
16
16
|
'ExtensionHostExtension.disable': ExtensionHost.forward,
|
|
17
|
+
'ExtensionHostKeyBindings.getKeyBindings': ExtensionHostKeyBindings.getKeyBindings,
|
|
17
18
|
'ExtensionHostSemanticTokens.executeSemanticTokenProvider': ExtensionHost.forward,
|
|
18
19
|
'ExtensionHostTextDocument.setLanguageId': ExtensionHost.forward,
|
|
19
|
-
'ExtensionHostTextDocument.syncIncremental': ExtensionHost.forward,
|
|
20
20
|
'ExtensionHostTextDocument.syncFull': ExtensionHost.forward,
|
|
21
|
-
'
|
|
21
|
+
'ExtensionHostTextDocument.syncIncremental': ExtensionHost.forward,
|
|
22
22
|
}
|
|
@@ -5,15 +5,15 @@ import * as ExtensionHostLanguages from './ExtensionManagementLanguages.js'
|
|
|
5
5
|
|
|
6
6
|
// prettier-ignore
|
|
7
7
|
export const Commands = {
|
|
8
|
-
'ExtensionManagement.install': ExtensionManagement.install,
|
|
9
|
-
'ExtensionManagement.uninstall': ExtensionManagement.uninstall,
|
|
10
|
-
'ExtensionManagement.enable': ExtensionManagement.enable,
|
|
11
|
-
'ExtensionManagement.disable': ExtensionManagement.disable,
|
|
12
|
-
'ExtensionManagement.getAllExtensions': ExtensionManagement.getAllExtensions,
|
|
13
|
-
'ExtensionManagement.getExtensions': ExtensionManagement.getExtensions,
|
|
14
8
|
'ExtensionHost.getColorThemeJson': ExtensionHostColorTheme.getColorThemeJson,
|
|
15
9
|
'ExtensionHost.getColorThemeNames': ExtensionHostColorTheme.getColorThemeNames,
|
|
16
|
-
'ExtensionHost.getLanguages': ExtensionHostLanguages.getLanguages,
|
|
17
|
-
'ExtensionHost.getLanguageConfiguration': ExtensionHostLanguages.getLanguageConfiguration,
|
|
18
10
|
'ExtensionHost.getIconThemeJson': ExtensionHostIconTheme.getIconTheme,
|
|
11
|
+
'ExtensionHost.getLanguageConfiguration': ExtensionHostLanguages.getLanguageConfiguration,
|
|
12
|
+
'ExtensionHost.getLanguages': ExtensionHostLanguages.getLanguages,
|
|
13
|
+
'ExtensionManagement.disable': ExtensionManagement.disable,
|
|
14
|
+
'ExtensionManagement.enable': ExtensionManagement.enable,
|
|
15
|
+
'ExtensionManagement.getAllExtensions': ExtensionManagement.getAllExtensions,
|
|
16
|
+
'ExtensionManagement.getExtensions': ExtensionManagement.getExtensions,
|
|
17
|
+
'ExtensionManagement.install': ExtensionManagement.install,
|
|
18
|
+
'ExtensionManagement.uninstall': ExtensionManagement.uninstall,
|
|
19
19
|
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import * as ModuleId from '../ModuleId/ModuleId.js'
|
|
2
|
+
|
|
3
|
+
export const load = (moduleId) => {
|
|
4
|
+
switch (moduleId) {
|
|
5
|
+
case ModuleId.ClipBoard:
|
|
6
|
+
return import('../ClipBoard/ClipBoard.ipc.js')
|
|
7
|
+
case ModuleId.Developer:
|
|
8
|
+
return import('../Developer/Developer.ipc.js')
|
|
9
|
+
case ModuleId.ExtensionHost:
|
|
10
|
+
return import('../ExtensionHost/ExtensionHost.ipc.js')
|
|
11
|
+
case ModuleId.ExtensionManagement:
|
|
12
|
+
return import('../ExtensionManagement/ExtensionManagement.ipc.js')
|
|
13
|
+
case ModuleId.FileSystem:
|
|
14
|
+
return import('../FileSystem/FileSystem.ipc.js')
|
|
15
|
+
case ModuleId.Native:
|
|
16
|
+
return import('../Native/Native.ipc.js')
|
|
17
|
+
case ModuleId.OutputChannel:
|
|
18
|
+
return import('../OutputChannel/OutputChannel.ipc.js')
|
|
19
|
+
case ModuleId.Platform:
|
|
20
|
+
return import('../Platform/Platform.ipc.js')
|
|
21
|
+
case ModuleId.Preferences:
|
|
22
|
+
return import('../Preferences/Preferences.ipc.js')
|
|
23
|
+
case ModuleId.RecentlyOpened:
|
|
24
|
+
return import('../RecentlyOpened/RecentlyOpened.ipc.js')
|
|
25
|
+
case ModuleId.Search:
|
|
26
|
+
return import('../Search/Search.ipc.js')
|
|
27
|
+
case ModuleId.SearchFile:
|
|
28
|
+
return import('../SearchFile/SearchFile.ipc.js')
|
|
29
|
+
case ModuleId.Terminal:
|
|
30
|
+
return import('../Terminal/Terminal.ipc.js')
|
|
31
|
+
case ModuleId.TextDocument:
|
|
32
|
+
return import('../TextDocument/TextDocument.ipc.js')
|
|
33
|
+
case ModuleId.WebSocketServer:
|
|
34
|
+
return import('../WebSocketServer/WebSocketServer.ipc.js')
|
|
35
|
+
case ModuleId.Workspace:
|
|
36
|
+
return import('../Workspace/Workspace.ipc.js')
|
|
37
|
+
default:
|
|
38
|
+
throw new Error(`module ${moduleId} not found`)
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export const ClipBoard = 1
|
|
2
|
+
export const Developer = 2
|
|
3
|
+
export const ExtensionHost = 3
|
|
4
|
+
export const ExtensionManagement = 4
|
|
5
|
+
export const FileSystem = 5
|
|
6
|
+
export const Native = 6
|
|
7
|
+
export const OutputChannel = 7
|
|
8
|
+
export const Platform = 8
|
|
9
|
+
export const Preferences = 9
|
|
10
|
+
export const RecentlyOpened = 10
|
|
11
|
+
export const Search = 11
|
|
12
|
+
export const SearchFile = 12
|
|
13
|
+
export const Terminal = 13
|
|
14
|
+
export const TextDocument = 14
|
|
15
|
+
export const WebSocketServer = 15
|
|
16
|
+
export const Workspace = 16
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import * as ModuleId from '../ModuleId/ModuleId.js'
|
|
2
|
+
|
|
3
|
+
export const getModuleId = (commandId) => {
|
|
4
|
+
switch (commandId) {
|
|
5
|
+
case 'ClipBoard.readFiles':
|
|
6
|
+
case 'ClipBoard.writeFiles':
|
|
7
|
+
return ModuleId.ClipBoard
|
|
8
|
+
case 'Developer.allocateMemory':
|
|
9
|
+
case 'Developer.crashSharedProcess':
|
|
10
|
+
case 'Developer.createHeapSnapshot':
|
|
11
|
+
case 'Developer.createProfile':
|
|
12
|
+
case 'Developer.getNodeStartupTime':
|
|
13
|
+
case 'Developer.getNodeStartupTiming':
|
|
14
|
+
case 'Developer.sharedProcessMemoryUsage':
|
|
15
|
+
case 'Developer.sharedProcessStartupPerformance':
|
|
16
|
+
return ModuleId.Developer
|
|
17
|
+
case 'EXtensionHostRename.executePrepareRename':
|
|
18
|
+
case 'ExtensionHost.dispose':
|
|
19
|
+
case 'ExtensionHost.enableExtension':
|
|
20
|
+
case 'ExtensionHost.executeCommand':
|
|
21
|
+
case 'ExtensionHost.executeTabCompletionProvider':
|
|
22
|
+
case 'ExtensionHost.format':
|
|
23
|
+
case 'ExtensionHost.getMemoryUsage':
|
|
24
|
+
case 'ExtensionHost.getSourceControlBadgeCount':
|
|
25
|
+
case 'ExtensionHost.getStatusBarItems':
|
|
26
|
+
case 'ExtensionHost.registerChangeListener':
|
|
27
|
+
case 'ExtensionHost.setWorkspacePath':
|
|
28
|
+
case 'ExtensionHost.sourceControlGetChangedFiles':
|
|
29
|
+
case 'ExtensionHost.start':
|
|
30
|
+
case 'ExtensionHostBraceCompletion.executeBraceCompletionProvider':
|
|
31
|
+
case 'ExtensionHostClosingTag.execute':
|
|
32
|
+
case 'ExtensionHostClosingTag.executeClosingTagProvider':
|
|
33
|
+
case 'ExtensionHostClosingTag.executeTypeDefinitionProvider':
|
|
34
|
+
case 'ExtensionHostCompletion.execute':
|
|
35
|
+
case 'ExtensionHostDefinition.executeDefinitionProvider':
|
|
36
|
+
case 'ExtensionHostDiagnostic.execute':
|
|
37
|
+
case 'ExtensionHostFileSystem.getPathSeparator':
|
|
38
|
+
case 'ExtensionHostFileSystem.readDirWithFileTypes':
|
|
39
|
+
case 'ExtensionHostFileSystem.readFile':
|
|
40
|
+
case 'ExtensionHostFileSystem.remove':
|
|
41
|
+
case 'ExtensionHostFileSystem.rename':
|
|
42
|
+
case 'ExtensionHostFileSystem.writeFile':
|
|
43
|
+
case 'ExtensionHostHover.execute':
|
|
44
|
+
case 'ExtensionHostImplementation.executeImplementationProvider':
|
|
45
|
+
case 'ExtensionHostKeyBindings.getKeyBindings':
|
|
46
|
+
case 'ExtensionHostLanguages.getLanguages':
|
|
47
|
+
case 'ExtensionHostManagement.activateAll':
|
|
48
|
+
case 'ExtensionHostManagement.enableExtensions':
|
|
49
|
+
case 'ExtensionHostOutput.getOutputChannels':
|
|
50
|
+
case 'ExtensionHostQuickPick.handleQuickPickResult':
|
|
51
|
+
case 'ExtensionHostReferences.executeReferenceProvider':
|
|
52
|
+
case 'ExtensionHostRename.executeRename':
|
|
53
|
+
case 'ExtensionHostSemanticTokens.executeSemanticTokenProvider':
|
|
54
|
+
case 'ExtensionHostSourceControl.acceptInput':
|
|
55
|
+
case 'ExtensionHostTextDocument':
|
|
56
|
+
case 'ExtensionHostTextDocument.setLanguageId':
|
|
57
|
+
case 'ExtensionHostTextDocument.syncFull':
|
|
58
|
+
case 'ExtensionHostTextDocument.syncIncremental':
|
|
59
|
+
case 'ExtensionHostTextDocument.syncInitial':
|
|
60
|
+
case 'ExtensionHostWorkspace.setWorkspacePath':
|
|
61
|
+
return ModuleId.ExtensionHost
|
|
62
|
+
case 'ExtensionHost.getColorThemeJson':
|
|
63
|
+
case 'ExtensionHost.getColorThemeNames':
|
|
64
|
+
case 'ExtensionHost.getColorThemes':
|
|
65
|
+
case 'ExtensionHost.getIconTheme':
|
|
66
|
+
case 'ExtensionHost.getIconThemeJson':
|
|
67
|
+
case 'ExtensionHost.getLanguageConfiguration':
|
|
68
|
+
case 'ExtensionHost.getLanguages':
|
|
69
|
+
case 'ExtensionManagement.disable':
|
|
70
|
+
case 'ExtensionManagement.enable':
|
|
71
|
+
case 'ExtensionManagement.getAllExtensions':
|
|
72
|
+
case 'ExtensionManagement.getExtensions':
|
|
73
|
+
case 'ExtensionManagement.install':
|
|
74
|
+
case 'ExtensionManagement.uninstall':
|
|
75
|
+
return ModuleId.ExtensionManagement
|
|
76
|
+
case 'FileSystem.chmod':
|
|
77
|
+
case 'FileSystem.copy':
|
|
78
|
+
case 'FileSystem.createFile':
|
|
79
|
+
case 'FileSystem.createFolder':
|
|
80
|
+
case 'FileSystem.ensureFile':
|
|
81
|
+
case 'FileSystem.getPathSeparator':
|
|
82
|
+
case 'FileSystem.mkdir':
|
|
83
|
+
case 'FileSystem.readDirWithFileTypes':
|
|
84
|
+
case 'FileSystem.readFile':
|
|
85
|
+
case 'FileSystem.remove':
|
|
86
|
+
case 'FileSystem.rename':
|
|
87
|
+
case 'FileSystem.writeFile':
|
|
88
|
+
return ModuleId.FileSystem
|
|
89
|
+
case 'Native.openFolder':
|
|
90
|
+
return ModuleId.Native
|
|
91
|
+
case 'OutputChannel.close':
|
|
92
|
+
case 'OutputChannel.open':
|
|
93
|
+
return ModuleId.OutputChannel
|
|
94
|
+
case 'Platform.getAppDir':
|
|
95
|
+
case 'Platform.getBuiltinExtensionsPath':
|
|
96
|
+
case 'Platform.getCacheDir':
|
|
97
|
+
case 'Platform.getCachedExtensionsPath':
|
|
98
|
+
case 'Platform.getConfigDir':
|
|
99
|
+
case 'Platform.getDataDir':
|
|
100
|
+
case 'Platform.getDisabledExtensionsPath':
|
|
101
|
+
case 'Platform.getExtensionsPath':
|
|
102
|
+
case 'Platform.getHomeDir':
|
|
103
|
+
case 'Platform.getLogsDir':
|
|
104
|
+
case 'Platform.getMarketplaceUrl':
|
|
105
|
+
case 'Platform.getRecentlyOpenedPath':
|
|
106
|
+
case 'Platform.getTestPath':
|
|
107
|
+
case 'Platform.getUserSettingsPath':
|
|
108
|
+
case 'Platform.setEnvironmentVariables':
|
|
109
|
+
return ModuleId.Platform
|
|
110
|
+
case 'Preferences.getAll':
|
|
111
|
+
return ModuleId.Preferences
|
|
112
|
+
case 'RecentlyOpened.addPath':
|
|
113
|
+
return ModuleId.RecentlyOpened
|
|
114
|
+
case 'Search.search':
|
|
115
|
+
return ModuleId.Search
|
|
116
|
+
case 'SearchFile.searchFile':
|
|
117
|
+
return ModuleId.SearchFile
|
|
118
|
+
case 'Terminal.create':
|
|
119
|
+
case 'Terminal.dispose':
|
|
120
|
+
case 'Terminal.resize':
|
|
121
|
+
case 'Terminal.write':
|
|
122
|
+
return ModuleId.Terminal
|
|
123
|
+
case 4820:
|
|
124
|
+
return ModuleId.TextDocument
|
|
125
|
+
case 5621:
|
|
126
|
+
return ModuleId.WebSocketServer
|
|
127
|
+
case 'Workspace.getHomeDir':
|
|
128
|
+
case 'Workspace.resolveRoot':
|
|
129
|
+
return ModuleId.Workspace
|
|
130
|
+
default:
|
|
131
|
+
throw new Error(`command ${commandId} not found`)
|
|
132
|
+
}
|
|
133
|
+
}
|
|
@@ -4,8 +4,8 @@ import * as Platform from '../Platform/Platform.js'
|
|
|
4
4
|
export const Commands = {
|
|
5
5
|
'Platform.getAppDir': Platform.getAppDir,
|
|
6
6
|
'Platform.getBuiltinExtensionsPath': Platform.getBuiltinExtensionsPath,
|
|
7
|
-
'Platform.getCachedExtensionsPath': Platform.getCachedExtensionsPath,
|
|
8
7
|
'Platform.getCacheDir': Platform.getCacheDir,
|
|
8
|
+
'Platform.getCachedExtensionsPath': Platform.getCachedExtensionsPath,
|
|
9
9
|
'Platform.getConfigDir': Platform.getConfigDir,
|
|
10
10
|
'Platform.getDataDir': Platform.getDataDir,
|
|
11
11
|
'Platform.getDisabledExtensionsPath': Platform.getDisabledExtensionsPath,
|
|
@@ -1,47 +1,29 @@
|
|
|
1
|
+
import { extensionHostPath } from '@lvce-editor/extension-host'
|
|
1
2
|
import { homedir, tmpdir } from 'node:os'
|
|
2
3
|
import { sep } from 'node:path'
|
|
3
|
-
import {
|
|
4
|
+
import { pathToFileURL } from 'node:url'
|
|
4
5
|
import { xdgCache, xdgConfig, xdgData, xdgState } from 'xdg-basedir'
|
|
5
6
|
import * as Path from '../Path/Path.js'
|
|
6
7
|
import * as Root from '../Root/Root.js'
|
|
7
|
-
import { pathToFileURL } from 'node:url'
|
|
8
8
|
|
|
9
|
-
export const
|
|
10
|
-
return 'lvce-oss'
|
|
11
|
-
}
|
|
9
|
+
export const applicationName = 'lvce-oss'
|
|
12
10
|
|
|
13
|
-
export const isWindows =
|
|
14
|
-
return process.platform === 'win32'
|
|
15
|
-
}
|
|
11
|
+
export const isWindows = process.platform === 'win32'
|
|
16
12
|
|
|
17
|
-
export const isMacOs =
|
|
18
|
-
return process.platform === 'darwin'
|
|
19
|
-
}
|
|
13
|
+
export const isMacOs = process.platform === 'darwin'
|
|
20
14
|
|
|
21
|
-
|
|
15
|
+
export const dataDir = Path.join(xdgData || tmpdir(), applicationName)
|
|
22
16
|
|
|
23
|
-
export const
|
|
24
|
-
return Path.join(xdgData || tmpdir(), getApplicationName())
|
|
25
|
-
}
|
|
17
|
+
export const configDir = Path.join(xdgConfig || tmpdir(), applicationName)
|
|
26
18
|
|
|
27
|
-
export const
|
|
28
|
-
return Path.join(xdgConfig || tmpdir(), getApplicationName())
|
|
29
|
-
}
|
|
19
|
+
export const cacheDir = Path.join(xdgCache || tmpdir(), applicationName)
|
|
30
20
|
|
|
31
|
-
export const
|
|
32
|
-
return Path.join(xdgCache || tmpdir(), getApplicationName())
|
|
33
|
-
}
|
|
21
|
+
export const homeDir = isWindows ? '' : homedir()
|
|
34
22
|
|
|
35
|
-
export const
|
|
36
|
-
return isWindows() ? '' : homedir()
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
export const getAppDir = () => {
|
|
40
|
-
return Root.root
|
|
41
|
-
}
|
|
23
|
+
export const appDir = Root.root
|
|
42
24
|
|
|
43
25
|
export const getExtensionsPath = () => {
|
|
44
|
-
return Path.join(
|
|
26
|
+
return Path.join(dataDir, 'extensions')
|
|
45
27
|
}
|
|
46
28
|
|
|
47
29
|
export const getBuiltinExtensionsPath = () => {
|
|
@@ -49,11 +31,11 @@ export const getBuiltinExtensionsPath = () => {
|
|
|
49
31
|
}
|
|
50
32
|
|
|
51
33
|
export const getDisabledExtensionsPath = () => {
|
|
52
|
-
return Path.join(
|
|
34
|
+
return Path.join(dataDir, 'disabled-extensions')
|
|
53
35
|
}
|
|
54
36
|
|
|
55
37
|
export const getCachedExtensionsPath = () => {
|
|
56
|
-
return Path.join(
|
|
38
|
+
return Path.join(cacheDir, 'cached-extensions')
|
|
57
39
|
}
|
|
58
40
|
|
|
59
41
|
export const getMarketplaceUrl = () => {
|
|
@@ -94,11 +76,11 @@ export const getStateDir = () => {
|
|
|
94
76
|
}
|
|
95
77
|
|
|
96
78
|
export const getLogsDir = () => {
|
|
97
|
-
return Path.join(xdgState || tmpdir(),
|
|
79
|
+
return Path.join(xdgState || tmpdir(), applicationName, 'logs')
|
|
98
80
|
}
|
|
99
81
|
|
|
100
82
|
export const getUserSettingsPath = () => {
|
|
101
|
-
return Path.join(
|
|
83
|
+
return Path.join(configDir, 'settings.json')
|
|
102
84
|
}
|
|
103
85
|
|
|
104
86
|
export const getExtensionHostPath = () => {
|
|
@@ -106,11 +88,11 @@ export const getExtensionHostPath = () => {
|
|
|
106
88
|
}
|
|
107
89
|
|
|
108
90
|
export const getRecentlyOpenedPath = () => {
|
|
109
|
-
return Path.join(
|
|
91
|
+
return Path.join(cacheDir, 'recently-opened.json')
|
|
110
92
|
}
|
|
111
93
|
|
|
112
94
|
export const getDefaultSettingsPath = () => {
|
|
113
|
-
return Path.join(
|
|
95
|
+
return Path.join(appDir, 'static', 'config', 'defaultSettings.json')
|
|
114
96
|
}
|
|
115
97
|
|
|
116
98
|
export const setEnvironmentVariables = (variables) => {
|
|
@@ -142,3 +124,23 @@ export const getTmpDir = () => {
|
|
|
142
124
|
export const getOnlyExtensionPath = () => {
|
|
143
125
|
return process.env.ONLY_EXTENSION
|
|
144
126
|
}
|
|
127
|
+
|
|
128
|
+
export const getAppDir = () => {
|
|
129
|
+
return appDir
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
export const getCacheDir = () => {
|
|
133
|
+
return cacheDir
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
export const getConfigDir = () => {
|
|
137
|
+
return configDir
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
export const getDataDir = () => {
|
|
141
|
+
return dataDir
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
export const getHomeDir = () => {
|
|
145
|
+
return homeDir
|
|
146
|
+
}
|
|
@@ -17,7 +17,7 @@ const toSearchResult = (parsedLine) => ({
|
|
|
17
17
|
// remove workaround when ripgrep is fixed
|
|
18
18
|
|
|
19
19
|
// TODO no function call at toplevel!
|
|
20
|
-
const useNice = !Platform.isWindows
|
|
20
|
+
const useNice = !Platform.isWindows
|
|
21
21
|
// TODO stats flag might not be necessary
|
|
22
22
|
// TODO update client
|
|
23
23
|
// TODO not always run nice, maybe configure nice via flag/options
|