@lvce-editor/shared-process 0.10.6 → 0.10.8

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.
@@ -21,6 +21,10 @@ const State = {
21
21
  AfterTypeExpression: 18,
22
22
  AfterVariableName: 19,
23
23
  BeforePropertyAccess: 20,
24
+ AfterKeywordEnum: 21,
25
+ AfterKeywordEnumAfterVariableName: 22,
26
+ InsideEnum: 23,
27
+ InsideEnumAfterVariableName: 24,
24
28
  }
25
29
 
26
30
  /**
@@ -78,6 +82,9 @@ export const TokenMap = {
78
82
 
79
83
  export const initialLineState = {
80
84
  state: State.TopLevelContent,
85
+ /**
86
+ * @type {any[]}
87
+ */
81
88
  stack: [],
82
89
  }
83
90
 
@@ -125,10 +132,12 @@ const RE_DOT = /^\./
125
132
  const RE_SQUARE_OPEN = /^\[/
126
133
  const RE_SQUARE_CLOSE = /^\]/
127
134
 
135
+ export const hasArrayReturn = true
136
+
128
137
  /**
129
138
  *
130
139
  * @param {string} line
131
- * @param {object} lineState
140
+ * @param {any} lineState
132
141
  * @returns
133
142
  */
134
143
  export const tokenizeLine = (line, lineState) => {
@@ -140,13 +149,14 @@ export const tokenizeLine = (line, lineState) => {
140
149
  let stack = lineState.stack
141
150
  while (index < line.length) {
142
151
  const part = line.slice(index)
152
+ part
153
+ state
143
154
  switch (state) {
144
155
  case State.TopLevelContent:
145
156
  if ((next = part.match(RE_WHITESPACE))) {
146
157
  token = TokenType.Whitespace
147
158
  state = State.TopLevelContent
148
159
  } else if ((next = part.match(RE_KEYWORD))) {
149
- next[0] //?
150
160
  switch (next[0]) {
151
161
  case 'true':
152
162
  case 'false':
@@ -273,6 +283,9 @@ export const tokenizeLine = (line, lineState) => {
273
283
  } else if ((next = part.match(RE_COLON))) {
274
284
  token = TokenType.Punctuation
275
285
  state = State.BeforeType
286
+ } else if ((next = part.match(RE_KEYWORD_ENUM))) {
287
+ token = TokenType.Keyword
288
+ state = State.AfterKeywordEnum
276
289
  } else if ((next = part.match(RE_VARIABLE_NAME))) {
277
290
  token = TokenType.VariableName
278
291
  state = State.AfterKeywordDeclaration
@@ -280,6 +293,7 @@ export const tokenizeLine = (line, lineState) => {
280
293
  token = TokenType.Punctuation
281
294
  state = State.TopLevelContent
282
295
  } else {
296
+ line
283
297
  part
284
298
  throw new Error('no')
285
299
  }
@@ -429,7 +443,6 @@ export const tokenizeLine = (line, lineState) => {
429
443
  }
430
444
  break
431
445
  case State.AfterKeywordDeclare:
432
- part
433
446
  if ((next = part.match(RE_WHITESPACE))) {
434
447
  token = TokenType.Whitespace
435
448
  state = State.AfterKeywordDeclare
@@ -441,7 +454,7 @@ export const tokenizeLine = (line, lineState) => {
441
454
  state = State.AfterKeywordDeclare
442
455
  } else if ((next = part.match(RE_KEYWORD_ENUM))) {
443
456
  token = TokenType.Keyword
444
- state = State.AfterKeywordDeclare
457
+ state = State.AfterKeywordEnum
445
458
  } else if ((next = part.match(RE_KEYWORD_CLASS))) {
446
459
  token = TokenType.Keyword
447
460
  state = State.AfterKeywordClass
@@ -453,6 +466,51 @@ export const tokenizeLine = (line, lineState) => {
453
466
  throw new Error('no')
454
467
  }
455
468
  break
469
+
470
+ case State.AfterKeywordEnum:
471
+ if ((next = part.match(RE_WHITESPACE))) {
472
+ token = TokenType.Whitespace
473
+ state = State.AfterKeywordEnum
474
+ } else if ((next = part.match(RE_VARIABLE_NAME))) {
475
+ token = TokenType.Type
476
+ state = State.AfterKeywordEnumAfterVariableName
477
+ } else {
478
+ throw new Error('no')
479
+ }
480
+ break
481
+ case State.AfterKeywordEnumAfterVariableName:
482
+ if ((next = part.match(RE_WHITESPACE))) {
483
+ token = TokenType.Whitespace
484
+ state = State.AfterKeywordEnumAfterVariableName
485
+ } else if ((next = part.match(RE_CURLY_OPEN))) {
486
+ token = TokenType.Punctuation
487
+ state = State.InsideEnum
488
+ } else {
489
+ throw new Error('no')
490
+ }
491
+ break
492
+ case State.InsideEnum:
493
+ if ((next = part.match(RE_WHITESPACE))) {
494
+ token = TokenType.Whitespace
495
+ state = State.InsideEnum
496
+ } else if ((next = part.match(RE_VARIABLE_NAME))) {
497
+ token = TokenType.VariableName
498
+ state = State.InsideEnumAfterVariableName
499
+ } else {
500
+ throw new Error('no')
501
+ }
502
+ break
503
+ case State.InsideEnumAfterVariableName:
504
+ if ((next = part.match(RE_WHITESPACE))) {
505
+ token = TokenType.Whitespace
506
+ state = State.InsideEnumAfterVariableName
507
+ } else if ((next = part.match(RE_EQUAL))) {
508
+ token = TokenType.Punctuation
509
+ state = State.TopLevelContent
510
+ } else {
511
+ throw new Error('no')
512
+ }
513
+ break
456
514
  case State.InsideLineComment:
457
515
  if ((next = part.match(RE_ANYTHING_UNTIL_END))) {
458
516
  token = TokenType.Comment
@@ -533,11 +591,9 @@ export const tokenizeLine = (line, lineState) => {
533
591
  state
534
592
  throw new Error('no')
535
593
  }
536
- index += next[0].length
537
- tokens.push({
538
- type: token,
539
- length: next[0].length,
540
- })
594
+ const tokenLength = next[0].length
595
+ index += tokenLength
596
+ tokens.push(token, tokenLength)
541
597
  }
542
598
  if (state === State.AfterType && stack[0] === State.InsideClass) {
543
599
  state = State.InsideClass
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/shared-process",
3
- "version": "0.10.6",
3
+ "version": "0.10.8",
4
4
  "description": "Utility package for @lvce-editor/server",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -20,11 +20,11 @@
20
20
  "node": ">=16"
21
21
  },
22
22
  "dependencies": {
23
- "@lvce-editor/extension-host": "0.10.6",
24
- "@lvce-editor/pty-host": "0.10.6",
23
+ "@lvce-editor/extension-host": "0.10.8",
24
+ "@lvce-editor/pty-host": "0.10.8",
25
25
  "debug": "^4.3.4",
26
26
  "execa": "^6.1.0",
27
- "exit-hook": "^3.1.1",
27
+ "exit-hook": "^3.1.2",
28
28
  "got": "^12.5.2",
29
29
  "is-object": "^1.0.2",
30
30
  "lines-and-columns": "^2.0.3",
@@ -514,23 +514,19 @@ const addExtensionLanguages = async ({
514
514
  Path.join(root, 'README.md'),
515
515
  Path.join(root, 'dist', commitHash, 'extensions', extensionId, 'README.md')
516
516
  )
517
- await FileSystem.copy(
518
- Path.join(extensionPath, 'src'),
519
- Path.join(root, 'dist', commitHash, 'extensions', extensionId, 'src')
520
- )
521
- await FileSystem.copyFile(
522
- Path.join(extensionPath, 'extension.json'),
523
- Path.join(
524
- root,
525
- 'dist',
526
- commitHash,
527
- 'extensions',
528
- extensionId,
529
- 'extension.json'
530
- )
531
- )
517
+ for (const file of ['src', 'data', 'extension.json']) {
518
+ if (await FileSystem.exists(Path.join(extensionPath, file))) {
519
+ await FileSystem.copy(
520
+ Path.join(extensionPath, file),
521
+ Path.join(root, 'dist', commitHash, 'extensions', extensionId, file)
522
+ )
523
+ }
524
+ }
532
525
  const extensionLanguages = []
533
526
  for (const language of languages) {
527
+ if (!language.tokenize) {
528
+ continue
529
+ }
534
530
  extensionLanguages.push({
535
531
  ...language,
536
532
  tokenize: `${pathPrefix}/${commitHash}/extensions/${extensionId}/${language.tokenize}`,