@tolgee/cli 2.0.3 → 2.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 (91) hide show
  1. package/dist/cli.js +15 -23
  2. package/dist/commands/extract/check.js +2 -6
  3. package/dist/commands/extract/print.js +2 -6
  4. package/dist/commands/pull.js +2 -4
  5. package/dist/commands/sync/compare.js +2 -6
  6. package/dist/commands/sync/sync.js +1 -5
  7. package/dist/commands/tag.js +1 -5
  8. package/dist/config/tolgeerc.js +4 -6
  9. package/dist/extractor/extractor.js +40 -66
  10. package/dist/extractor/parser/extractComment.js +78 -0
  11. package/dist/extractor/parser/generalMapper.js +82 -0
  12. package/dist/extractor/parser/generateReport.js +161 -0
  13. package/dist/extractor/parser/iterator.js +37 -0
  14. package/dist/extractor/parser/mergerMachine.js +66 -0
  15. package/dist/extractor/parser/nodeUtils.js +21 -0
  16. package/dist/extractor/parser/parser.js +129 -0
  17. package/dist/extractor/parser/rules/tComponentGeneral.js +45 -0
  18. package/dist/extractor/parser/rules/tFunctionGeneral.js +41 -0
  19. package/dist/extractor/parser/rules/tNsSourceGeneral.js +36 -0
  20. package/dist/extractor/parser/tokenMergers/closingTagMerger.js +27 -0
  21. package/dist/extractor/parser/tokenMergers/commentsMerger.js +36 -0
  22. package/dist/extractor/parser/tokenMergers/stringMerger.js +50 -0
  23. package/dist/extractor/parser/tokenMergers/templateStringMerger.js +55 -0
  24. package/dist/extractor/parser/tokenMergers/typesAsMergerer.js +40 -0
  25. package/dist/extractor/parser/tokenMergers/typesCastMerger.js +28 -0
  26. package/dist/extractor/parser/tree/getTranslateProps.js +54 -0
  27. package/dist/extractor/parser/tree/getValue.js +17 -0
  28. package/dist/extractor/parser/tree/parseGeneral.js +51 -0
  29. package/dist/extractor/parser/tree/parseList.js +33 -0
  30. package/dist/extractor/parser/tree/parseObject.js +130 -0
  31. package/dist/extractor/parser/tree/parseProps.js +56 -0
  32. package/dist/extractor/parser/tree/parseTag.js +26 -0
  33. package/dist/extractor/parser/types.js +1 -0
  34. package/dist/extractor/parserReact/ParserReact.js +30 -0
  35. package/dist/extractor/parserReact/jsxMapper.js +24 -0
  36. package/dist/extractor/parserReact/rules/createElement.js +62 -0
  37. package/dist/extractor/parserReact/rules/tComponent.js +9 -0
  38. package/dist/extractor/parserReact/rules/tFunction.js +7 -0
  39. package/dist/extractor/parserReact/rules/useTranslate.js +7 -0
  40. package/dist/extractor/parserReact/tokenMergers/createElementMerger.js +35 -0
  41. package/dist/extractor/parserReact/tokenMergers/tComponentMerger.js +20 -0
  42. package/dist/extractor/parserReact/tokenMergers/tFunctionMerger.js +23 -0
  43. package/dist/extractor/parserReact/tokenMergers/useTranslateMerger.js +20 -0
  44. package/dist/extractor/parserSvelte/ParserSvelte.js +32 -0
  45. package/dist/extractor/parserSvelte/contextConstants.js +1 -0
  46. package/dist/extractor/parserSvelte/rules/scriptTag.js +26 -0
  47. package/dist/extractor/parserSvelte/rules/tComponent.js +9 -0
  48. package/dist/extractor/parserSvelte/rules/tFunction.js +7 -0
  49. package/dist/extractor/parserSvelte/rules/useTranslate.js +7 -0
  50. package/dist/extractor/parserSvelte/svelteMapper.js +39 -0
  51. package/dist/extractor/parserSvelte/svelteTreeTransform.js +38 -0
  52. package/dist/extractor/parserSvelte/tokenMergers/getTranslateMerger.js +20 -0
  53. package/dist/extractor/parserSvelte/tokenMergers/scriptTagMerger.js +20 -0
  54. package/dist/extractor/parserSvelte/tokenMergers/tComponentMerger.js +20 -0
  55. package/dist/extractor/parserSvelte/tokenMergers/tFunctionMerger.js +29 -0
  56. package/dist/extractor/parserVue/ParserVue.js +45 -0
  57. package/dist/extractor/parserVue/contextConstants.js +3 -0
  58. package/dist/extractor/parserVue/rules/exportDefaultObject.js +14 -0
  59. package/dist/extractor/parserVue/rules/globalTFunction.js +7 -0
  60. package/dist/extractor/parserVue/rules/scriptTag.js +31 -0
  61. package/dist/extractor/parserVue/rules/tComponent.js +9 -0
  62. package/dist/extractor/parserVue/rules/tFunction.js +7 -0
  63. package/dist/extractor/parserVue/rules/useTranslate.js +7 -0
  64. package/dist/extractor/parserVue/tokenMergers/exportDefaultObjectMerger.js +25 -0
  65. package/dist/extractor/parserVue/tokenMergers/globalTFunctionMerger.js +36 -0
  66. package/dist/extractor/parserVue/tokenMergers/scriptTagMerger.js +20 -0
  67. package/dist/extractor/parserVue/tokenMergers/tComponentMerger.js +20 -0
  68. package/dist/extractor/parserVue/tokenMergers/tFunctionMerger.js +37 -0
  69. package/dist/extractor/parserVue/tokenMergers/useTranslateMerger.js +20 -0
  70. package/dist/extractor/parserVue/vueMapper.js +51 -0
  71. package/dist/extractor/parserVue/vueTreeTransform.js +109 -0
  72. package/dist/extractor/runner.js +52 -4
  73. package/dist/extractor/visualizers/printTokens.js +7 -0
  74. package/dist/extractor/visualizers/tokensToString.js +28 -0
  75. package/dist/extractor/visualizers/visualizeRules.js +40 -0
  76. package/dist/extractor/warnings.js +4 -0
  77. package/dist/extractor/worker.js +10 -7
  78. package/dist/options.js +5 -0
  79. package/extractor.d.ts +8 -1
  80. package/package.json +2 -4
  81. package/schema.json +18 -6
  82. package/dist/client/internal/requester.js +0 -130
  83. package/dist/extractor/machines/comments.js +0 -78
  84. package/dist/extractor/machines/react.js +0 -705
  85. package/dist/extractor/machines/shared/comments.js +0 -79
  86. package/dist/extractor/machines/shared/properties.js +0 -380
  87. package/dist/extractor/machines/shared/translateCall.js +0 -141
  88. package/dist/extractor/machines/svelte.js +0 -429
  89. package/dist/extractor/machines/vue/decoder.js +0 -194
  90. package/dist/extractor/machines/vue/extract.js +0 -491
  91. package/dist/extractor/processors/vueSfc.js +0 -55
@@ -1,429 +0,0 @@
1
- import { createMachine, assign, send, forwardTo } from 'xstate';
2
- import translateCallMachine from './shared/translateCall.js';
3
- import propertiesMachine from './shared/properties.js';
4
- import commentsService from './shared/comments.js';
5
- const VOID_KEY = { keyName: '', line: -1 };
6
- export default createMachine({
7
- predictableActionArguments: true,
8
- id: 'svelteExtractor',
9
- type: 'parallel',
10
- context: {
11
- children: '',
12
- line: 0,
13
- key: VOID_KEY,
14
- getTranslate: null,
15
- ignore: null,
16
- keys: [],
17
- warnings: [],
18
- },
19
- states: {
20
- comments: {
21
- invoke: {
22
- id: 'comments',
23
- src: () => commentsService,
24
- },
25
- on: {
26
- // Service messages
27
- MAGIC_COMMENT: [
28
- {
29
- actions: 'ignoreNextLine',
30
- cond: (_ctx, evt) => evt.kind === 'ignore',
31
- },
32
- {
33
- actions: 'pushImmediateKey',
34
- cond: (_ctx, evt) => evt.kind === 'key',
35
- },
36
- ],
37
- WARNING: {
38
- actions: 'pushWarning',
39
- },
40
- // Code messages
41
- 'comment.line.double-slash.ts': {
42
- actions: send((_ctx, evt) => ({
43
- type: 'COMMENT',
44
- data: evt.token,
45
- line: evt.line,
46
- }), { to: 'comments' }),
47
- },
48
- 'comment.block.ts': {
49
- actions: send((_ctx, evt) => ({
50
- type: 'COMMENT',
51
- data: evt.token,
52
- line: evt.line,
53
- }), { to: 'comments' }),
54
- },
55
- 'comment.block.svelte': {
56
- actions: send((_ctx, evt) => ({
57
- type: 'COMMENT',
58
- data: evt.token,
59
- line: evt.line,
60
- }), { to: 'comments' }),
61
- },
62
- newline: {
63
- actions: 'warnUnusedIgnore',
64
- cond: (ctx, evt) => ctx.ignore?.type === 'ignore' && ctx.ignore.line === evt.line,
65
- },
66
- },
67
- },
68
- getTranslate: {
69
- initial: 'idle',
70
- states: {
71
- idle: {
72
- on: {
73
- 'entity.name.function.ts': {
74
- target: 'func',
75
- actions: 'storeLine',
76
- cond: (_ctx, evt) => evt.token === 'getTranslate',
77
- },
78
- },
79
- },
80
- func: {
81
- on: {
82
- '*': 'idle',
83
- newline: undefined,
84
- 'meta.block.ts': undefined,
85
- 'meta.var.expr.ts': undefined,
86
- 'meta.brace.round.ts': [
87
- {
88
- target: 'idle',
89
- actions: 'consumeIgnoredLine',
90
- cond: (ctx, evt) => ctx.ignore?.line === ctx.line &&
91
- ctx.ignore.type === 'ignore' &&
92
- evt.token === '(',
93
- },
94
- {
95
- target: 'call',
96
- cond: (_ctx, evt) => evt.token === '(',
97
- },
98
- ],
99
- },
100
- },
101
- call: {
102
- on: {
103
- 'punctuation.definition.string.begin.ts': 'namespace',
104
- 'punctuation.definition.string.template.begin.ts': 'namespace',
105
- 'variable.other.readwrite.ts': {
106
- target: 'idle',
107
- actions: ['storeGetTranslate', 'markGetTranslateAsDynamic'],
108
- },
109
- 'meta.brace.round.ts': {
110
- target: 'idle',
111
- cond: (_ctx, evt) => evt.token === ')',
112
- actions: 'storeGetTranslate',
113
- },
114
- },
115
- },
116
- namespace: {
117
- on: {
118
- '*': {
119
- target: 'namespace_end',
120
- actions: 'storeNamespacedGetTranslate',
121
- },
122
- },
123
- },
124
- namespace_end: {
125
- on: {
126
- 'punctuation.separator.comma.ts': 'idle',
127
- 'meta.brace.round.ts': 'idle',
128
- 'punctuation.definition.template-expression.begin.ts': {
129
- target: 'idle',
130
- actions: 'markGetTranslateAsDynamic',
131
- },
132
- 'keyword.operator.arithmetic.ts': {
133
- target: 'idle',
134
- actions: 'markGetTranslateAsDynamic',
135
- },
136
- },
137
- },
138
- },
139
- },
140
- component: {
141
- initial: 'idle',
142
- states: {
143
- idle: {
144
- on: {
145
- 'punctuation.definition.tag.begin.svelte': {
146
- target: 'tag',
147
- actions: 'storeLine',
148
- cond: (_ctx, evt) => evt.token === '<',
149
- },
150
- },
151
- },
152
- tag: {
153
- on: {
154
- '*': 'idle',
155
- newline: undefined,
156
- 'meta.tag.start.svelte': undefined,
157
- 'support.class.component.svelte': [
158
- {
159
- target: 'idle',
160
- actions: 'consumeIgnoredLine',
161
- cond: (ctx, evt) => ctx.ignore?.line === ctx.line && evt.token === 'T',
162
- },
163
- {
164
- target: 'props',
165
- cond: (_ctx, evt) => evt.token === 'T',
166
- },
167
- ],
168
- },
169
- },
170
- props: {
171
- invoke: {
172
- id: 'propertiesMachine',
173
- src: propertiesMachine,
174
- onDone: [
175
- {
176
- target: 'idle',
177
- actions: 'emitWarningFromParameters',
178
- cond: 'isPropertiesDataDynamic',
179
- },
180
- {
181
- target: 'idle',
182
- actions: ['consumeParameters', 'pushKey'],
183
- cond: (ctx, evt) => evt.data.lastEvent.token !== '/>' &&
184
- ((!ctx.key.keyName && !evt.data.keyName) ||
185
- (!ctx.key.defaultValue && !evt.data.defaultValue)),
186
- },
187
- {
188
- target: 'idle',
189
- actions: ['consumeParameters', 'pushKey'],
190
- },
191
- ],
192
- },
193
- on: {
194
- '*': {
195
- actions: forwardTo('propertiesMachine'),
196
- },
197
- },
198
- },
199
- },
200
- },
201
- t: {
202
- initial: 'idle',
203
- states: {
204
- idle: {
205
- on: {
206
- 'punctuation.definition.variable.svelte': {
207
- target: 'dollar',
208
- cond: (ctx, evt) => ctx.getTranslate !== null && evt.token === '$',
209
- },
210
- },
211
- },
212
- dollar: {
213
- on: {
214
- '*': 'idle',
215
- 'entity.name.function.ts': {
216
- target: 'func',
217
- actions: 'storeLine',
218
- cond: (_ctx, evt) => evt.token === 't',
219
- },
220
- },
221
- },
222
- func: {
223
- on: {
224
- '*': 'idle',
225
- newline: undefined,
226
- 'source.ts': undefined,
227
- 'meta.brace.round.ts': [
228
- {
229
- target: 'idle',
230
- actions: 'consumeIgnoredLine',
231
- cond: (ctx, evt) => ctx.ignore?.line === ctx.line && evt.token === '(',
232
- },
233
- {
234
- target: 'call',
235
- cond: (_ctx, evt) => evt.token === '(',
236
- },
237
- ],
238
- },
239
- },
240
- call: {
241
- invoke: {
242
- id: 'tCall',
243
- src: translateCallMachine,
244
- onDone: [
245
- {
246
- target: 'idle',
247
- actions: 'dynamicKeyName',
248
- cond: (_, evt) => evt.data.keyName === false,
249
- },
250
- {
251
- target: 'idle',
252
- actions: 'dynamicNamespace',
253
- cond: (_, evt) => evt.data.namespace === false,
254
- },
255
- {
256
- target: 'idle',
257
- actions: 'dynamicOptions',
258
- cond: (_, evt) => evt.data.dynamicOptions,
259
- },
260
- {
261
- target: 'idle',
262
- cond: (_, evt) => !evt.data.keyName,
263
- },
264
- {
265
- target: 'idle',
266
- actions: 'consumeTranslateCall',
267
- },
268
- ],
269
- },
270
- on: {
271
- '*': {
272
- actions: forwardTo('tCall'),
273
- },
274
- },
275
- },
276
- },
277
- },
278
- },
279
- }, {
280
- guards: {
281
- isPropertiesDataDynamic: (_ctx, evt) => evt.data.keyName === false || evt.data.namespace === false,
282
- },
283
- actions: {
284
- storeLine: assign({
285
- line: (_ctx, evt) => evt.line,
286
- }),
287
- ignoreNextLine: assign({
288
- ignore: (_ctx, evt) => ({ type: 'ignore', line: evt.line + 1 }),
289
- }),
290
- consumeIgnoredLine: assign({
291
- ignore: (_ctx, _evt) => null,
292
- }),
293
- warnUnusedIgnore: assign({
294
- warnings: (ctx, evt) => [
295
- ...ctx.warnings,
296
- { warning: 'W_UNUSED_IGNORE', line: evt.line - 1 },
297
- ],
298
- }),
299
- storeGetTranslate: assign({
300
- getTranslate: (_ctx, _evt) => '',
301
- }),
302
- storeNamespacedGetTranslate: assign({
303
- getTranslate: (_ctx, evt) => evt.token,
304
- }),
305
- markGetTranslateAsDynamic: assign({
306
- getTranslate: (_ctx, _evt) => false,
307
- warnings: (ctx, _evt) => [
308
- ...ctx.warnings,
309
- { warning: 'W_DYNAMIC_NAMESPACE', line: ctx.line },
310
- ],
311
- }),
312
- consumeTranslateCall: assign({
313
- warnings: (ctx, evt) => {
314
- if (!evt.data.namespace && ctx.getTranslate === false) {
315
- return [
316
- ...ctx.warnings,
317
- { warning: 'W_UNRESOLVABLE_NAMESPACE', line: ctx.line },
318
- ];
319
- }
320
- if (evt.data.defaultValue === false) {
321
- return [
322
- ...ctx.warnings,
323
- { warning: 'W_DYNAMIC_DEFAULT_VALUE', line: ctx.line },
324
- ];
325
- }
326
- return ctx.warnings;
327
- },
328
- keys: (ctx, evt) => {
329
- const ns = evt.data.namespace === null ? ctx.getTranslate : evt.data.namespace;
330
- if (!evt.data.keyName || ns === false)
331
- return ctx.keys;
332
- return [
333
- ...ctx.keys,
334
- {
335
- keyName: evt.data.keyName,
336
- namespace: ns || undefined,
337
- defaultValue: evt.data.defaultValue || undefined,
338
- line: ctx.line,
339
- },
340
- ];
341
- },
342
- }),
343
- consumeParameters: assign({
344
- key: (ctx, evt) => ({
345
- keyName: ctx.key.keyName || evt.data.keyName,
346
- defaultValue: ctx.key.defaultValue || evt.data.defaultValue || undefined,
347
- namespace: evt.data.namespace ?? ctx.key.namespace,
348
- line: ctx.line,
349
- }),
350
- warnings: (ctx, evt) => {
351
- if (evt.data.defaultValue !== false)
352
- return ctx.warnings;
353
- return [
354
- ...ctx.warnings,
355
- { warning: 'W_DYNAMIC_DEFAULT_VALUE', line: ctx.line },
356
- ];
357
- },
358
- }),
359
- emitWarningFromParameters: assign({
360
- warnings: (ctx, evt) => [
361
- ...ctx.warnings,
362
- {
363
- warning: evt.data.keyName === false
364
- ? 'W_DYNAMIC_KEY'
365
- : 'W_DYNAMIC_NAMESPACE',
366
- line: ctx.line,
367
- },
368
- ],
369
- key: VOID_KEY,
370
- }),
371
- dynamicKeyName: assign({
372
- warnings: (ctx, _evt) => [
373
- ...ctx.warnings,
374
- { warning: 'W_DYNAMIC_KEY', line: ctx.line },
375
- ],
376
- key: VOID_KEY,
377
- }),
378
- dynamicNamespace: assign({
379
- warnings: (ctx, _evt) => [
380
- ...ctx.warnings,
381
- { warning: 'W_DYNAMIC_NAMESPACE', line: ctx.line },
382
- ],
383
- key: VOID_KEY,
384
- }),
385
- dynamicOptions: assign({
386
- key: VOID_KEY,
387
- warnings: (ctx, _evt) => [
388
- ...ctx.warnings,
389
- { warning: 'W_DYNAMIC_OPTIONS', line: ctx.line },
390
- ],
391
- }),
392
- pushKey: assign({
393
- keys: (ctx, _evt) => {
394
- if (!ctx.key.keyName || ctx.key.namespace === false)
395
- return ctx.keys;
396
- return [
397
- ...ctx.keys,
398
- {
399
- keyName: ctx.key.keyName.trim(),
400
- namespace: ctx.key.namespace === ''
401
- ? undefined
402
- : ctx.key.namespace?.trim(),
403
- defaultValue: ctx.key.defaultValue?.trim().replace(/\s+/g, ' '),
404
- line: ctx.line,
405
- },
406
- ];
407
- },
408
- key: (_ctx, _evt) => ({ keyName: '', line: 0 }),
409
- }),
410
- pushImmediateKey: assign({
411
- ignore: (_ctx, evt) => ({ type: 'key', line: evt.line + 1 }),
412
- keys: (ctx, evt) => [
413
- ...ctx.keys,
414
- {
415
- keyName: evt.keyName,
416
- namespace: evt.namespace,
417
- defaultValue: evt.defaultValue,
418
- line: evt.line,
419
- },
420
- ],
421
- }),
422
- pushWarning: assign({
423
- warnings: (ctx, evt) => [
424
- ...ctx.warnings,
425
- { warning: evt.kind, line: evt.line },
426
- ],
427
- }),
428
- },
429
- });
@@ -1,194 +0,0 @@
1
- // This machine is responsible for decoding a Vue SFC file.
2
- // It extracts the tokens in 3 different categories:
3
- // - The setup function tokens
4
- // - The scripts (excluding setup)
5
- // - The template
6
- //
7
- // Property of the machine: will always include an
8
- // extra token for all categories. Consumers must be
9
- // aware of this!
10
- import { createMachine, assign } from 'xstate';
11
- // This state machine is responsible for extracting translation key properties from an object/props
12
- export default createMachine({
13
- predictableActionArguments: true,
14
- id: 'properties',
15
- initial: 'idle',
16
- context: {
17
- setup: [],
18
- script: [],
19
- template: [],
20
- scriptSetupConsumed: false, // <script setup>
21
- invalidSetup: null,
22
- depth: 0,
23
- memoizedDepth: 0,
24
- },
25
- states: {
26
- idle: {
27
- on: {
28
- 'punctuation.definition.tag.begin.html.vue': 'beginTag',
29
- },
30
- },
31
- beginTag: {
32
- on: {
33
- 'entity.name.tag.script.html.vue': 'scriptTag',
34
- 'entity.name.tag.template.html.vue': {
35
- cond: (_, evt) => evt.token === 'template',
36
- actions: 'incrementDepth',
37
- target: 'templateTag',
38
- },
39
- '*': 'idle',
40
- },
41
- },
42
- scriptTag: {
43
- on: {
44
- 'entity.other.attribute-name.html': [
45
- {
46
- cond: (_, evt) => evt.token === 'setup',
47
- actions: ['consumeSetupScript'],
48
- target: 'scriptSetupTag',
49
- },
50
- ],
51
- 'punctuation.definition.tag.end.html.vue': 'script',
52
- },
53
- },
54
- scriptSetupTag: {
55
- on: {
56
- 'punctuation.definition.tag.end.html.vue': 'setup',
57
- },
58
- },
59
- templateTag: {
60
- on: {
61
- 'punctuation.definition.tag.end.html.vue': 'template',
62
- },
63
- },
64
- setup: {
65
- on: {
66
- '*': { actions: ['consumeSetupToken'] },
67
- 'entity.name.tag.script.html.vue': 'idle',
68
- },
69
- },
70
- script: {
71
- on: {
72
- '*': { actions: ['consumeScriptToken'] },
73
- 'meta.export.default.ts': {
74
- actions: ['resetDepth'],
75
- target: 'scriptExport',
76
- },
77
- 'entity.name.tag.script.html.vue': 'idle',
78
- },
79
- },
80
- scriptExport: {
81
- on: {
82
- '*': { actions: ['consumeScriptToken'] },
83
- 'punctuation.definition.block.ts': [
84
- {
85
- cond: (_, evt) => evt.token === '{',
86
- actions: ['incrementDepth'],
87
- },
88
- {
89
- cond: (_, evt) => evt.token === '}',
90
- actions: ['decrementDepth'],
91
- },
92
- ],
93
- 'entity.name.function.ts': {
94
- cond: (_, evt) => evt.token === 'setup',
95
- actions: ['storeDepth'],
96
- target: 'scriptSetup',
97
- },
98
- 'meta.object-literal.key.ts': {
99
- cond: (_, evt) => evt.token === 'setup',
100
- actions: ['markBadSetupUse'],
101
- },
102
- 'entity.name.tag.script.html.vue': 'idle',
103
- },
104
- },
105
- scriptSetup: {
106
- on: {
107
- '*': {
108
- cond: (ctx) => !ctx.scriptSetupConsumed,
109
- actions: ['consumeSetupToken'],
110
- },
111
- 'punctuation.definition.block.ts': [
112
- {
113
- cond: (_, evt) => evt.token === '{',
114
- actions: ['consumeSetupToken', 'incrementDepth'],
115
- },
116
- {
117
- cond: (ctx, evt) => evt.token === '}' && ctx.depth - 1 === ctx.memoizedDepth,
118
- actions: ['consumeSetupToken', 'decrementDepth'],
119
- target: 'scriptExport',
120
- },
121
- {
122
- cond: (_, evt) => evt.token === '}',
123
- actions: ['consumeSetupToken', 'decrementDepth'],
124
- },
125
- ],
126
- },
127
- },
128
- template: {
129
- on: {
130
- '*': { actions: ['consumeTemplateToken'] },
131
- 'punctuation.definition.tag.begin.html.vue': {
132
- cond: (_, evt) => evt.token === '<',
133
- target: 'nestedTemplateTag',
134
- },
135
- 'entity.name.tag.template.html.vue': [
136
- {
137
- cond: (ctx, evt) => evt.token === 'template' && ctx.depth === 1,
138
- actions: 'decrementDepth',
139
- target: 'idle',
140
- },
141
- {
142
- cond: (_, evt) => evt.token === 'template',
143
- actions: 'decrementDepth',
144
- },
145
- ],
146
- },
147
- },
148
- nestedTemplateTag: {
149
- on: {
150
- 'entity.name.tag.template.html.vue': [
151
- {
152
- cond: (_, evt) => evt.token === 'template',
153
- actions: 'incrementDepth',
154
- target: 'template',
155
- },
156
- {
157
- target: 'template',
158
- },
159
- ],
160
- },
161
- },
162
- },
163
- }, {
164
- actions: {
165
- consumeSetupScript: assign({
166
- setup: () => [],
167
- scriptSetupConsumed: () => true,
168
- }),
169
- consumeSetupToken: assign({
170
- setup: (ctx, evt) => [...ctx.setup, evt],
171
- }),
172
- consumeScriptToken: assign({
173
- script: (ctx, evt) => [...ctx.script, evt],
174
- }),
175
- consumeTemplateToken: assign({
176
- template: (ctx, evt) => [...ctx.template, evt],
177
- }),
178
- resetDepth: assign({
179
- depth: () => 0,
180
- }),
181
- incrementDepth: assign({
182
- depth: (ctx) => ctx.depth + 1,
183
- }),
184
- decrementDepth: assign({
185
- depth: (ctx) => ctx.depth - 1,
186
- }),
187
- storeDepth: assign({
188
- memoizedDepth: (ctx) => ctx.depth,
189
- }),
190
- markBadSetupUse: assign({
191
- invalidSetup: (_, evt) => evt.line,
192
- }),
193
- },
194
- });