@lvce-editor/shared-process 0.0.39 → 0.1.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 (28) hide show
  1. package/config/defaultKeyBindings.json +5 -0
  2. package/extensions/builtin.language-basics-docker/extension.json +13 -3
  3. package/extensions/builtin.language-basics-json/extension.json +2 -1
  4. package/extensions/builtin.language-basics-json/src/tokenizeJson.js +6 -2
  5. package/extensions/builtin.language-basics-markdown/src/tokenizeMarkdown.js +288 -11
  6. package/extensions/builtin.language-basics-perl/README.md +14 -0
  7. package/extensions/builtin.language-basics-perl/extension.json +12 -0
  8. package/extensions/builtin.language-basics-perl/src/tokenizePerl.js +31 -0
  9. package/extensions/builtin.language-basics-toml/extension.json +10 -2
  10. package/extensions/builtin.theme-slime/color-theme.json +4 -0
  11. package/package.json +6 -6
  12. package/src/parts/Command/Command.js +5 -18
  13. package/src/parts/DirentType/DirentType.js +13 -0
  14. package/src/parts/Download/Download.js +6 -8
  15. package/src/parts/ExtensionManagement/ExtensionManagement.js +13 -39
  16. package/src/parts/ExtensionManagement/ExtensionManagementColorTheme.js +4 -6
  17. package/src/parts/ExtensionManagement/ExtensionManagementIconTheme.js +4 -6
  18. package/src/parts/FileSystem/FileSystem.js +33 -74
  19. package/src/parts/Json/Json.js +7 -55
  20. package/src/parts/JsonError/JsonError.js +70 -0
  21. package/src/parts/JsonFile/JsonFile.js +5 -5
  22. package/src/parts/Native/Native.js +2 -6
  23. package/src/parts/Preferences/Preferences.js +1 -1
  24. package/src/parts/RecentlyOpened/RecentlyOpened.ipc.js +5 -0
  25. package/src/parts/RecentlyOpened/RecentlyOpened.js +52 -0
  26. package/src/parts/Search/Search.js +9 -3
  27. package/src/parts/Electron/Electron.ipc.js +0 -18
  28. package/src/parts/Electron/Electron.js +0 -110
@@ -261,6 +261,11 @@
261
261
  "command": "Explorer.expandAll",
262
262
  "when": "focus.Explorer"
263
263
  },
264
+ {
265
+ "key": "alt+ArrowRight",
266
+ "command": "Explorer.expandRecursively",
267
+ "when": "focus.Explorer"
268
+ },
264
269
  {
265
270
  "key": "ctrl+ArrowLeft",
266
271
  "command": "Explorer.collapseAll",
@@ -1,13 +1,23 @@
1
1
  {
2
2
  "id": "builtin.language-basics-docker",
3
+ "version": "0.0.0-dev",
3
4
  "name": "Language Basics Docker",
4
5
  "description": "Provides syntax highlighting and bracket matching in Dockerfile files.",
5
6
  "languages": [
6
7
  {
7
8
  "id": "dockerfile",
8
- "extensions": [".dockerfile", ".containerfile"],
9
- "fileNames": ["Dockerfile", "Containerfile"],
10
- "fileNamePatterns": ["Dockerfile.*", "Containerfile.*"],
9
+ "extensions": [
10
+ ".dockerfile",
11
+ ".containerfile"
12
+ ],
13
+ "fileNames": [
14
+ "Dockerfile",
15
+ "Containerfile"
16
+ ],
17
+ "fileNamePatterns": [
18
+ "Dockerfile.*",
19
+ "Containerfile.*"
20
+ ],
11
21
  "tokenize": "src/tokenizeDockerfile.js"
12
22
  }
13
23
  ]
@@ -26,7 +26,8 @@
26
26
  ".swcrc",
27
27
  ".hintrc",
28
28
  ".babelrc",
29
- ".prettierrc"
29
+ ".prettierrc",
30
+ ".sublime-project"
30
31
  ],
31
32
  "filenames": ["composer.lock", ".watchmanconfig"],
32
33
  "tokenize": "src/tokenizeJson.js"
@@ -220,6 +220,9 @@ export const tokenizeLine = (line, lineState) => {
220
220
  if ((next = part.match(RE_COLON))) {
221
221
  token = TokenType.Punctuation
222
222
  state = State.AfterPropertyNameAfterColon
223
+ } else if ((next = part.match(RE_ANYTHING))) {
224
+ token = TokenType.Text
225
+ state = State.AfterCurlyOpen
223
226
  } else {
224
227
  throw new Error('no')
225
228
  }
@@ -309,9 +312,10 @@ export const tokenizeLine = (line, lineState) => {
309
312
  // }) //?
310
313
 
311
314
  const result = tokenizeLine(
312
- `{ "testRegex": "/scripts/jest/dont-run-jest-directly\\.js$"`,
315
+ `"extends: "eslint:recommended",
316
+ `,
313
317
  {
314
- state: State.TopLevelContent,
318
+ state: State.AfterCurlyOpen,
315
319
  stack: [],
316
320
  }
317
321
  ) //?
@@ -1,31 +1,308 @@
1
+ /**
2
+ * @enum number
3
+ */
4
+ const State = {
5
+ TopLevelContent: 1,
6
+ AfterOpeningAngleBracket: 2,
7
+ InsideOpeningTag: 3,
8
+ InsideOpeningTagAndHasSeenWhitespace: 4,
9
+ AfterClosingTagAngleBrackets: 5,
10
+ AfterClosingTagName: 6,
11
+ AfterAttributeName: 7,
12
+ AfterAttributeEqualSign: 8,
13
+ InsideAttributeDoubleQuote: 9,
14
+ InsideBlockComment: 10,
15
+ None: 11,
16
+ InsideDoubleQuoteString: 12,
17
+ InsideSingleQuoteString: 13,
18
+ }
19
+
20
+ export const StateMap = {}
21
+
1
22
  /**
2
23
  * @enum number
3
24
  */
4
25
  export const TokenType = {
5
- Text: 1,
26
+ None: 99999999,
27
+ Numeric: 30,
28
+ String: 50,
29
+ Whitespace: 0,
30
+ Comment: 60,
31
+ Text: 117,
32
+ PunctuationTag: 228,
33
+ TagName: 118,
34
+ AttributeName: 119,
35
+ Punctuation: 10,
36
+ Error: 141,
37
+ PunctuationString: 11,
38
+ NewLine: 891,
39
+ Heading: 13,
6
40
  }
7
41
 
8
42
  export const TokenMap = {
43
+ [TokenType.None]: 'None',
44
+ [TokenType.Numeric]: 'Numeric',
45
+ [TokenType.String]: 'String',
46
+ [TokenType.Whitespace]: 'Whitespace',
47
+ [TokenType.Comment]: 'Comment',
9
48
  [TokenType.Text]: 'Text',
49
+ [TokenType.PunctuationTag]: 'PunctuationTag',
50
+ [TokenType.TagName]: 'TagName',
51
+ [TokenType.AttributeName]: 'AttributeName',
52
+ [TokenType.Punctuation]: 'Punctuation',
53
+ [TokenType.Error]: 'Error',
54
+ [TokenType.PunctuationString]: 'PunctuationString',
55
+ [TokenType.Heading]: 'Heading',
10
56
  }
11
57
 
58
+ const RE_ANGLE_BRACKET_CLOSE = /^>/
59
+ const RE_ANGLE_BRACKET_ONLY = /^</
60
+ const RE_ANGLE_BRACKET_OPEN = /^</
61
+ const RE_ANGLE_BRACKET_OPEN_TAG = /^<(?!\s)/
62
+ const RE_ANY_TEXT = /^[^\n]+/
63
+ const RE_ATTRIBUTE_NAME = /^[a-zA-Z\d\-]+/
64
+ const RE_BLOCK_COMMENT_CONTENT = /^.(?:.*?)(?=-->|$)/s
65
+ const RE_BLOCK_COMMENT_END = /^-->/
66
+ const RE_BLOCK_COMMENT_START = /^<!--/
67
+ const RE_DASH_DASH = /^\-\-/
68
+ const RE_DOUBLE_QUOTE = /^"/
69
+ const RE_EQUAL_SIGN = /^=/
70
+ const RE_EXCLAMATION_MARK = /^!/
71
+ const RE_INVALID_INSIDE_ClOSING_TAG = /^[^a-zA-Z>]/
72
+ const RE_INVALID_INSIDE_OPENING_TAG = /^[^a-zA-Z>]/
73
+ const RE_NEWLINE = /^\n/
74
+ const RE_NEWLINE_WHITESPACE = /^\n\s*/
75
+ const RE_NOT_TAGNAME = /^[^a-zA-Z\d]+/
76
+ const RE_PUNCTUATION = /^[<;'".,]/
77
+ const RE_PUNCTUATION_SELF_CLOSING = /^\/>/
78
+ const RE_SELF_CLOSING = /^\/>/
79
+ const RE_SINGLE_QUOTE = /^'/
80
+ const RE_SLASH = /^\//
81
+ const RE_STRING_DOUBLE_QUOTE_CONTENT = /^[^"]+/
82
+ const RE_STRING_SINGLE_QUOTE_CONTENT = /^[^']+/
83
+ const RE_TAG_TEXT = /^[^\s>]+/
84
+ const RE_TAGNAME = /^[!\w]+/
85
+ const RE_TEXT = /^[^<>\n]+/
86
+ const RE_WHITESPACE = /^\s+/
87
+ const RE_WORD = /^[^\s]+/
88
+ const RE_HEADING = /^\#.*/s
89
+
12
90
  export const initialLineState = {
13
- state: 0,
14
- tokens: [],
91
+ state: State.TopLevelContent,
92
+ }
93
+
94
+ /**
95
+ *
96
+ * @param {any} lineStateA
97
+ * @param {any} lineStateB
98
+ * @returns
99
+ */
100
+ export const isLineStateEqual = (lineStateA, lineStateB) => {
101
+ return lineStateA.state === lineStateB.state
15
102
  }
16
103
 
17
104
  /**
105
+ *
18
106
  * @param {string} line
107
+ * @param {any} lineState
108
+ * @returns
19
109
  */
20
- export const tokenizeLine = (line) => {
21
- const tokens = [
22
- {
23
- type: TokenType.Text,
24
- length: line.length,
25
- },
26
- ]
110
+ export const tokenizeLine = (line, lineState) => {
111
+ let next = null
112
+ let index = 0
113
+ let tokens = []
114
+ let token = TokenType.None
115
+ let state = lineState.state
116
+ while (index < line.length) {
117
+ const part = line.slice(index)
118
+ switch (state) {
119
+ case State.TopLevelContent:
120
+ if ((next = part.match(RE_BLOCK_COMMENT_START))) {
121
+ token = TokenType.Comment
122
+ state = State.InsideBlockComment
123
+ } else if ((next = part.match(RE_ANGLE_BRACKET_OPEN_TAG))) {
124
+ token = TokenType.PunctuationTag
125
+ state = State.AfterOpeningAngleBracket
126
+ } else if ((next = part.match(RE_HEADING))) {
127
+ token = TokenType.Heading
128
+ } else if ((next = part.match(RE_TEXT))) {
129
+ token = TokenType.Text
130
+ state = State.TopLevelContent
131
+ } else if ((next = part.match(RE_ANGLE_BRACKET_CLOSE))) {
132
+ token = TokenType.Text
133
+ state = State.TopLevelContent
134
+ } else if ((next = part.match(RE_ANGLE_BRACKET_OPEN))) {
135
+ token = TokenType.Text
136
+ state = State.TopLevelContent
137
+ } else {
138
+ part //?
139
+ throw new Error('no')
140
+ }
141
+ break
142
+ case State.AfterOpeningAngleBracket:
143
+ if ((next = part.match(RE_TAGNAME))) {
144
+ token = TokenType.TagName
145
+ state = State.InsideOpeningTag
146
+ } else if ((next = part.match(RE_SLASH))) {
147
+ token = TokenType.PunctuationTag
148
+ state = State.AfterClosingTagAngleBrackets
149
+ } else if ((next = part.match(RE_ANGLE_BRACKET_CLOSE))) {
150
+ token = TokenType.PunctuationTag
151
+ state = State.TopLevelContent
152
+ } else if ((next = part.match(RE_ANY_TEXT))) {
153
+ token = TokenType.Text
154
+ state = State.TopLevelContent
155
+ } else {
156
+ part //?
157
+ throw new Error('no')
158
+ }
159
+ break
160
+ case State.InsideOpeningTag:
161
+ if ((next = part.match(RE_ANGLE_BRACKET_CLOSE))) {
162
+ token = TokenType.PunctuationTag
163
+ state = State.TopLevelContent
164
+ } else if ((next = part.match(RE_EXCLAMATION_MARK))) {
165
+ token = TokenType.PunctuationTag
166
+ state = State.InsideOpeningTag
167
+ } else if ((next = part.match(RE_WHITESPACE))) {
168
+ token = TokenType.Whitespace
169
+ state = State.InsideOpeningTagAndHasSeenWhitespace
170
+ } else if ((next = part.match(RE_DASH_DASH))) {
171
+ token = TokenType.Comment
172
+ state = State.InsideBlockComment
173
+ } else if ((next = part.match(RE_TAG_TEXT))) {
174
+ token = TokenType.Text
175
+ state = State.InsideOpeningTag
176
+ } else {
177
+ part //?
178
+ throw new Error('no')
179
+ }
180
+ break
181
+ case State.AfterClosingTagAngleBrackets:
182
+ if ((next = part.match(RE_TAGNAME))) {
183
+ token = TokenType.TagName
184
+ state = State.AfterClosingTagName
185
+ } else if ((next = part.match(RE_ANY_TEXT))) {
186
+ token = TokenType.Text
187
+ state = State.TopLevelContent
188
+ } else {
189
+ part //?
190
+ throw new Error('no')
191
+ }
192
+ break
193
+ case State.AfterClosingTagName:
194
+ if ((next = part.match(RE_ANGLE_BRACKET_CLOSE))) {
195
+ token = TokenType.PunctuationTag
196
+ state = State.TopLevelContent
197
+ } else if ((next = part.match(RE_TEXT))) {
198
+ token = TokenType.Text
199
+ state = State.TopLevelContent
200
+ } else {
201
+ throw new Error('no')
202
+ }
203
+ break
204
+ case State.InsideOpeningTagAndHasSeenWhitespace:
205
+ if ((next = part.match(RE_ATTRIBUTE_NAME))) {
206
+ token = TokenType.AttributeName
207
+ state = State.AfterAttributeName
208
+ } else if ((next = part.match(RE_SELF_CLOSING))) {
209
+ token = TokenType.PunctuationTag
210
+ state = State.TopLevelContent
211
+ } else if ((next = part.match(RE_ANGLE_BRACKET_CLOSE))) {
212
+ token = TokenType.PunctuationTag
213
+ state = State.TopLevelContent
214
+ } else if ((next = part.match(RE_TAG_TEXT))) {
215
+ token = TokenType.Text
216
+ state = State.TopLevelContent
217
+ } else {
218
+ part //?
219
+ throw new Error('no')
220
+ }
221
+ break
222
+ case State.AfterAttributeName:
223
+ if ((next = part.match(RE_ANGLE_BRACKET_CLOSE))) {
224
+ token = TokenType.PunctuationTag
225
+ state = State.TopLevelContent
226
+ } else if ((next = part.match(RE_EQUAL_SIGN))) {
227
+ token = TokenType.Punctuation
228
+ state = State.AfterAttributeEqualSign
229
+ } else if ((next = part.match(RE_DOUBLE_QUOTE))) {
230
+ token = TokenType.PunctuationString
231
+ state = State.InsideDoubleQuoteString
232
+ } else if ((next = part.match(RE_SINGLE_QUOTE))) {
233
+ token = TokenType.PunctuationString
234
+ state = State.InsideSingleQuoteString
235
+ } else if ((next = part.match(RE_TAG_TEXT))) {
236
+ token = TokenType.Text
237
+ state = State.InsideOpeningTag
238
+ } else if ((next = part.match(RE_WHITESPACE))) {
239
+ token = TokenType.Whitespace
240
+ state = State.InsideOpeningTagAndHasSeenWhitespace
241
+ } else {
242
+ // TODO check quotation mark
243
+ part //?
244
+ throw new Error('no')
245
+ }
246
+ break
247
+ case State.AfterAttributeEqualSign:
248
+ if ((next = part.match(RE_DOUBLE_QUOTE))) {
249
+ token = TokenType.PunctuationString
250
+ state = State.InsideDoubleQuoteString
251
+ } else if ((next = part.match(RE_SINGLE_QUOTE))) {
252
+ token = TokenType.PunctuationString
253
+ state = State.InsideSingleQuoteString
254
+ } else if ((next = part.match(RE_ANGLE_BRACKET_CLOSE))) {
255
+ token = TokenType.PunctuationTag
256
+ state = State.TopLevelContent
257
+ } else {
258
+ throw new Error('no')
259
+ }
260
+ break
261
+ case State.InsideDoubleQuoteString:
262
+ if ((next = part.match(RE_DOUBLE_QUOTE))) {
263
+ token = TokenType.PunctuationString
264
+ state = State.InsideOpeningTag
265
+ } else if ((next = part.match(RE_STRING_DOUBLE_QUOTE_CONTENT))) {
266
+ token = TokenType.String
267
+ state = State.InsideDoubleQuoteString
268
+ } else {
269
+ throw new Error('no')
270
+ }
271
+ break
272
+ case State.InsideSingleQuoteString:
273
+ if ((next = part.match(RE_SINGLE_QUOTE))) {
274
+ token = TokenType.PunctuationString
275
+ state = State.InsideOpeningTag
276
+ } else if ((next = part.match(RE_STRING_SINGLE_QUOTE_CONTENT))) {
277
+ token = TokenType.String
278
+ state = State.InsideSingleQuoteString
279
+ } else {
280
+ throw new Error('no')
281
+ }
282
+ break
283
+ case State.InsideBlockComment:
284
+ if ((next = part.match(RE_BLOCK_COMMENT_END))) {
285
+ token = TokenType.Comment
286
+ state = State.TopLevelContent
287
+ } else if ((next = part.match(RE_BLOCK_COMMENT_CONTENT))) {
288
+ token = TokenType.Comment
289
+ state = State.InsideBlockComment
290
+ } else {
291
+ throw new Error('no')
292
+ }
293
+ break
294
+ default:
295
+ state
296
+ throw new Error('no')
297
+ }
298
+ index += next[0].length
299
+ tokens.push({
300
+ type: token,
301
+ length: next[0].length,
302
+ })
303
+ }
27
304
  return {
28
- state: 0,
305
+ state,
29
306
  tokens,
30
307
  }
31
308
  }
@@ -0,0 +1,14 @@
1
+ # Language Basics Perl
2
+
3
+ ## Contributing
4
+
5
+ ```sh
6
+ git clone git@github.com:lvce-editor/language-basics-perl.git &&
7
+ cd language-basics-perl &&
8
+ npm ci &&
9
+ npm test
10
+ ```
11
+
12
+ ## Gitpod
13
+
14
+ [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/lvce-editor/language-basics-perl)
@@ -0,0 +1,12 @@
1
+ {
2
+ "id": "builtin.language-basics-perl",
3
+ "name": "Language Basics Perl",
4
+ "description": "Provides syntax highlighting and bracket matching in Perl files.",
5
+ "languages": [
6
+ {
7
+ "id": "perl",
8
+ "extensions": [".perl"],
9
+ "tokenize": "src/tokenizePerl.js"
10
+ }
11
+ ]
12
+ }
@@ -0,0 +1,31 @@
1
+ /**
2
+ * @enum number
3
+ */
4
+ export const TokenType = {
5
+ Text: 1,
6
+ }
7
+
8
+ export const TokenMap = {
9
+ [TokenType.Text]: 'Text',
10
+ }
11
+
12
+ export const initialLineState = {
13
+ state: 0,
14
+ tokens: [],
15
+ }
16
+
17
+ /**
18
+ * @param {string} line
19
+ */
20
+ export const tokenizeLine = (line) => {
21
+ const tokens = [
22
+ {
23
+ type: TokenType.Text,
24
+ length: line.length,
25
+ },
26
+ ]
27
+ return {
28
+ state: 0,
29
+ tokens,
30
+ }
31
+ }
@@ -1,12 +1,20 @@
1
1
  {
2
2
  "id": "builtin.language-basics-toml",
3
+ "version": "0.0.0-dev",
3
4
  "name": "Language Basics Toml",
4
5
  "description": "Provides syntax highlighting and bracket matching in Toml files.",
5
6
  "languages": [
6
7
  {
7
8
  "id": "toml",
8
- "extensions": [".toml", ".tml", ".replit"],
9
- "filenames": ["Cargo.lock", "Gopkg.lock"],
9
+ "extensions": [
10
+ ".toml",
11
+ ".tml",
12
+ ".replit"
13
+ ],
14
+ "filenames": [
15
+ "Cargo.lock",
16
+ "Gopkg.lock"
17
+ ],
10
18
  "tokenize": "src/tokenizeToml.js"
11
19
  }
12
20
  ]
@@ -200,6 +200,10 @@
200
200
  {
201
201
  "name": "StorageModifier",
202
202
  "foreground": "#AB9B67"
203
+ },
204
+ {
205
+ "name": "Heading",
206
+ "foreground": "#bf93b5"
203
207
  }
204
208
  ]
205
209
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/shared-process",
3
- "version": "0.0.39",
3
+ "version": "0.1.0",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -23,11 +23,11 @@
23
23
  "chokidar": "^3.5.3",
24
24
  "debug": "^4.3.4",
25
25
  "execa": "^6.1.0",
26
- "exit-hook": "^3.0.0",
27
- "got": "^12.3.1",
26
+ "exit-hook": "^3.1.0",
27
+ "got": "^12.4.1",
28
28
  "is-object": "^1.0.2",
29
29
  "json-parse-even-better-errors": "^2.3.1",
30
- "jsonc-parser": "^3.1.0",
30
+ "jsonc-parser": "^3.2.0",
31
31
  "lines-and-columns": "^2.0.3",
32
32
  "open": "^8.4.0",
33
33
  "p-queue": "^7.3.0",
@@ -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.0.39",
42
- "@lvce-editor/extension-host": "0.0.39"
41
+ "@lvce-editor/pty-host": "0.1.0",
42
+ "@lvce-editor/extension-host": "0.1.0"
43
43
  },
44
44
  "optionalDependencies": {
45
45
  "electron-clipboard-ex": "^1.3.3",
@@ -11,9 +11,9 @@ const MODULE_PREFERENCES = 11
11
11
  const MODULE_NATIVE = 12
12
12
  const MODULE_CLIPBOARD = 13
13
13
  const MODULE_TEXT_DOCUMENT = 14
14
- const MODULE_ELECTRON = 15
15
14
  const MODULE_WEBSOCKET_SERVER = 16
16
15
  const MODULE_PLATFORM = 17
16
+ const MODULE_RECENTLY_OPENED = 18
17
17
 
18
18
  const commands = Object.create(null)
19
19
  const invocables = Object.create(null)
@@ -48,12 +48,12 @@ const loadModule = (moduleId) => {
48
48
  return import('../ClipBoard/ClipBoard.ipc.js')
49
49
  case MODULE_TEXT_DOCUMENT:
50
50
  return import('../TextDocument/TextDocument.ipc.js')
51
- case MODULE_ELECTRON:
52
- return import('../Electron/Electron.ipc.js')
53
51
  case MODULE_WEBSOCKET_SERVER:
54
52
  return import('../WebSocketServer/WebSocketServer.ipc.js')
55
53
  case MODULE_PLATFORM:
56
54
  return import('../Platform/Platform.ipc.js')
55
+ case MODULE_RECENTLY_OPENED:
56
+ return import('../RecentlyOpened/RecentlyOpened.ipc.js')
57
57
  default:
58
58
  throw new Error(`unknown module ${moduleId}`)
59
59
  }
@@ -211,21 +211,8 @@ const getModuleId = (commandId) => {
211
211
  case 'OutputChannel.open':
212
212
  case 'OutputChannel.close':
213
213
  return MODULE_OUTPUT_CHANNEL
214
- case 'Electron.toggleDevtools':
215
- case 'Electron.windowMinimize':
216
- case 'Electron.windowMaximize':
217
- case 'Electron.windowUnmaximize':
218
- case 'Electron.windowClose':
219
- case 'Electron.about':
220
- case 'Electron.showOpenDialog':
221
- case 'Electron.windowReload':
222
- case 'Electron.getPerformanceEntries':
223
- case 'Electron.crashMainProcess':
224
- case 'Electron.showMessageBox':
225
- case 'Electron.windowOpenNew':
226
- case 'Electron.exit':
227
- case 'Electron.openProcessExplorer':
228
- return MODULE_ELECTRON
214
+ case 'RecentlyOpened.addPath':
215
+ return MODULE_RECENTLY_OPENED
229
216
  default:
230
217
  throw new Error(`[shared-process] command ${commandId} not found`)
231
218
  }
@@ -0,0 +1,13 @@
1
+ export const File = 'file'
2
+
3
+ export const Direcory = 'directory'
4
+
5
+ export const Symlink = 'symlink'
6
+
7
+ export const Socket = 'socket'
8
+
9
+ export const BlockDevice = 'block-device'
10
+
11
+ export const CharacterDevice = 'character-device'
12
+
13
+ export const Unknown = 'unknown'
@@ -1,10 +1,10 @@
1
+ import got from 'got'
1
2
  import { createReadStream, createWriteStream } from 'node:fs'
2
3
  import { mkdir, rm } from 'node:fs/promises'
3
4
  import { pipeline } from 'node:stream/promises'
4
5
  import { createBrotliDecompress } from 'node:zlib'
5
- import got from 'got'
6
6
  import tar from 'tar-fs'
7
- import * as Error from '../Error/Error.js'
7
+ import VError from 'verror'
8
8
  import * as Path from '../Path/Path.js'
9
9
 
10
10
  export const download = async (url, outFile) => {
@@ -14,12 +14,10 @@ export const download = async (url, outFile) => {
14
14
  } catch (error) {
15
15
  try {
16
16
  await rm(outFile)
17
- } catch {}
18
- throw new Error.OperationalError({
19
- cause: error,
20
- code: 'E_DOWNLOAD_FAILED',
21
- message: `Failed to download "${url}"`,
22
- })
17
+ } catch {
18
+ // ignore
19
+ }
20
+ throw new VError(error, `Failed to download "${url}"`)
23
21
  }
24
22
  }
25
23