@nordcraft/search 1.0.12 → 1.0.13

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.
@@ -45,6 +45,7 @@ import { noReferenceVariableRule } from './rules/variables/noReferenceVariableRu
45
45
  import { unknownVariableRule } from './rules/variables/unknownVariableRule';
46
46
  import { unknownVariableSetterRule } from './rules/variables/unknownVariableSetterRule';
47
47
  import { duplicateWorkflowParameterRule } from './rules/workflows/duplicateWorkflowParameterRule';
48
+ import { noPostNavigateAction } from './rules/workflows/noPostNavigateAction';
48
49
  import { noReferenceComponentWorkflowRule } from './rules/workflows/noReferenceComponentWorkflowRule';
49
50
  import { unknownContextProviderWorkflowRule } from './rules/workflows/unknownContextProviderWorkflowRule';
50
51
  import { unknownContextWorkflowRule } from './rules/workflows/unknownContextWorkflowRule';
@@ -90,6 +91,7 @@ const RULES = [
90
91
  legacyFormulaRule,
91
92
  noContextConsumersRule,
92
93
  nonEmptyVoidElementRule,
94
+ noPostNavigateAction,
93
95
  noReferenceApiRule,
94
96
  noReferenceAttributeRule,
95
97
  noReferenceComponentFormulaRule,
@@ -1 +1 @@
1
- {"version":3,"file":"problems.worker.js","sourceRoot":"","sources":["../src/problems.worker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"problems.worker.js","sourceRoot":"","sources":["../src/problems.worker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { get } from '@nordcraft/core/dist/utils/collections';
2
+ export const noPostNavigateAction = {
3
+ code: 'no post navigate action',
4
+ level: 'warning',
5
+ category: 'Quality',
6
+ visit: (report, { nodeType, path, value, files }) => {
7
+ if (nodeType !== 'action-model' ||
8
+ value.type !== undefined ||
9
+ value.name !== '@toddle/gotToURL') {
10
+ return;
11
+ }
12
+ const actionsArrayPath = path.slice(0, -1).map((p) => String(p));
13
+ const actions = get(files, actionsArrayPath);
14
+ if (!Array.isArray(actions)) {
15
+ return;
16
+ }
17
+ const _actionIndex = path.at(-1);
18
+ if (_actionIndex === undefined) {
19
+ return;
20
+ }
21
+ const actionIndex = Number(_actionIndex);
22
+ if (actionIndex < actions.length - 1) {
23
+ // If the action is not the last one in the array, report it
24
+ report(path);
25
+ }
26
+ },
27
+ };
28
+ //# sourceMappingURL=noPostNavigateAction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noPostNavigateAction.js","sourceRoot":"","sources":["../../../src/rules/workflows/noPostNavigateAction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,wCAAwC,CAAA;AAG5D,MAAM,CAAC,MAAM,oBAAoB,GAAgC;IAC/D,IAAI,EAAE,yBAAyB;IAC/B,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,SAAS;IACnB,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;QAClD,IACE,QAAQ,KAAK,cAAc;YAC3B,KAAK,CAAC,IAAI,KAAK,SAAS;YACxB,KAAK,CAAC,IAAI,KAAK,kBAAkB,EACjC,CAAC;YACD,OAAM;QACR,CAAC;QACD,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QAChE,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAA;QAC5C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,OAAM;QACR,CAAC;QACD,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QAChC,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAM;QACR,CAAC;QACD,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,CAAA;QACxC,IAAI,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrC,4DAA4D;YAC5D,MAAM,CAAC,IAAI,CAAC,CAAA;QACd,CAAC;IACH,CAAC;CACF,CAAA"}
@@ -0,0 +1,446 @@
1
+ import { searchProject } from '../../searchProject';
2
+ import { noPostNavigateAction } from './noPostNavigateAction';
3
+ describe('noPostNavigateAction', () => {
4
+ test('should detect actions after a url navigate action', () => {
5
+ const problems = Array.from(searchProject({
6
+ files: {
7
+ formulas: {},
8
+ components: {
9
+ nav: {
10
+ attributes: {},
11
+ events: [],
12
+ formulas: {},
13
+ nodes: {
14
+ root: {
15
+ type: 'element',
16
+ tag: 'div',
17
+ attrs: {},
18
+ classes: {},
19
+ events: {},
20
+ children: ['wkPXF99C3qdRgZmUcnHO_'],
21
+ style: {},
22
+ },
23
+ wkPXF99C3qdRgZmUcnHO_: {
24
+ tag: 'button',
25
+ type: 'element',
26
+ attrs: {},
27
+ style: {
28
+ color: 'var(--grey-200, #E5E5E5)',
29
+ 'border-radius': '6px',
30
+ 'background-color': 'var(--blue-600, #2563EB)',
31
+ 'padding-left': '8px',
32
+ 'padding-right': '8px',
33
+ 'padding-top': '8px',
34
+ 'padding-bottom': '8px',
35
+ width: 'fit-content',
36
+ cursor: 'pointer',
37
+ },
38
+ events: {
39
+ click: {
40
+ trigger: 'click',
41
+ actions: [
42
+ {
43
+ name: '@toddle/gotToURL',
44
+ arguments: [
45
+ {
46
+ name: 'URL',
47
+ formula: {
48
+ type: 'value',
49
+ value: 'https://example.com',
50
+ },
51
+ },
52
+ ],
53
+ label: 'Go to URL',
54
+ },
55
+ {
56
+ name: '@toddle/logToConsole',
57
+ arguments: [
58
+ {
59
+ name: 'Label',
60
+ formula: {
61
+ type: 'value',
62
+ value: '',
63
+ },
64
+ },
65
+ {
66
+ name: 'Data',
67
+ formula: {
68
+ type: 'value',
69
+ value: '<Data>',
70
+ },
71
+ },
72
+ ],
73
+ label: 'Log to console',
74
+ },
75
+ ],
76
+ },
77
+ },
78
+ classes: {},
79
+ children: ['zFhmZR6YnLy089HmlK-Yn'],
80
+ variants: [],
81
+ },
82
+ 'zFhmZR6YnLy089HmlK-Yn': {
83
+ type: 'text',
84
+ value: {
85
+ type: 'value',
86
+ value: 'Button',
87
+ },
88
+ },
89
+ },
90
+ variables: {},
91
+ apis: {},
92
+ name: 'nav',
93
+ },
94
+ },
95
+ },
96
+ rules: [noPostNavigateAction],
97
+ }));
98
+ expect(problems).toHaveLength(1);
99
+ expect(problems[0].code).toBe('no post navigate action');
100
+ expect(problems[0].path).toEqual([
101
+ 'components',
102
+ 'nav',
103
+ 'nodes',
104
+ 'wkPXF99C3qdRgZmUcnHO_',
105
+ 'events',
106
+ 'click',
107
+ 'actions',
108
+ '0',
109
+ ]);
110
+ });
111
+ test('should detect workflow actions after a url navigate action', () => {
112
+ const problems = Array.from(searchProject({
113
+ files: {
114
+ formulas: {},
115
+ components: {
116
+ nav: {
117
+ attributes: {},
118
+ events: [],
119
+ formulas: {},
120
+ nodes: {
121
+ root: {
122
+ type: 'element',
123
+ tag: 'div',
124
+ attrs: {},
125
+ classes: {},
126
+ events: {},
127
+ children: [],
128
+ style: {},
129
+ },
130
+ },
131
+ variables: {},
132
+ apis: {},
133
+ name: 'nav2',
134
+ workflows: {
135
+ RGyFQC: {
136
+ parameters: [],
137
+ name: 'Navigate',
138
+ actions: [
139
+ {
140
+ name: '@toddle/gotToURL',
141
+ arguments: [
142
+ {
143
+ name: 'URL',
144
+ formula: {
145
+ type: 'value',
146
+ value: 'https://example.com',
147
+ },
148
+ },
149
+ ],
150
+ label: 'Go to URL',
151
+ },
152
+ {
153
+ name: '@toddle/logToConsole',
154
+ arguments: [
155
+ {
156
+ name: 'Label',
157
+ formula: {
158
+ type: 'value',
159
+ value: 'test',
160
+ },
161
+ },
162
+ {
163
+ name: 'Data',
164
+ formula: {
165
+ type: 'value',
166
+ value: '<Data>',
167
+ },
168
+ },
169
+ ],
170
+ label: 'Log to console',
171
+ },
172
+ ],
173
+ exposeInContext: false,
174
+ },
175
+ },
176
+ },
177
+ },
178
+ },
179
+ rules: [noPostNavigateAction],
180
+ }));
181
+ expect(problems).toHaveLength(1);
182
+ expect(problems[0].code).toBe('no post navigate action');
183
+ expect(problems[0].path).toEqual([
184
+ 'components',
185
+ 'nav',
186
+ 'workflows',
187
+ 'RGyFQC',
188
+ 'actions',
189
+ '0',
190
+ ]);
191
+ });
192
+ test('should detect onLoad actions after a url navigate action', () => {
193
+ const problems = Array.from(searchProject({
194
+ files: {
195
+ formulas: {},
196
+ components: {
197
+ nav: {
198
+ attributes: {},
199
+ onLoad: {
200
+ trigger: 'Load',
201
+ actions: [
202
+ {
203
+ name: '@toddle/gotToURL',
204
+ arguments: [
205
+ {
206
+ name: 'URL',
207
+ formula: {
208
+ type: 'value',
209
+ value: 'https://example.com',
210
+ },
211
+ },
212
+ ],
213
+ label: 'Go to URL',
214
+ },
215
+ {
216
+ name: '@toddle/logToConsole',
217
+ arguments: [
218
+ {
219
+ name: 'Label',
220
+ formula: {
221
+ type: 'value',
222
+ value: '',
223
+ },
224
+ },
225
+ {
226
+ name: 'Data',
227
+ formula: {
228
+ type: 'value',
229
+ value: '<Data>',
230
+ },
231
+ },
232
+ ],
233
+ label: 'Log to console',
234
+ },
235
+ ],
236
+ },
237
+ events: [],
238
+ formulas: {},
239
+ nodes: {
240
+ root: {
241
+ type: 'element',
242
+ tag: 'div',
243
+ attrs: {},
244
+ classes: {},
245
+ events: {},
246
+ children: [],
247
+ style: {},
248
+ },
249
+ },
250
+ variables: {},
251
+ apis: {},
252
+ name: 'nav2',
253
+ workflows: {},
254
+ },
255
+ },
256
+ },
257
+ rules: [noPostNavigateAction],
258
+ }));
259
+ expect(problems).toHaveLength(1);
260
+ expect(problems[0].code).toBe('no post navigate action');
261
+ expect(problems[0].path).toEqual([
262
+ 'components',
263
+ 'nav',
264
+ 'onLoad',
265
+ 'actions',
266
+ '0',
267
+ ]);
268
+ });
269
+ test('should not report issues if navigate is the last action', () => {
270
+ const problems = Array.from(searchProject({
271
+ files: {
272
+ formulas: {},
273
+ components: {
274
+ nav: {
275
+ attributes: {},
276
+ events: [],
277
+ formulas: {},
278
+ workflows: {
279
+ RGyFQC: {
280
+ parameters: [],
281
+ name: 'Navigate',
282
+ actions: [
283
+ {
284
+ name: '@toddle/logToConsole',
285
+ arguments: [
286
+ {
287
+ name: 'Label',
288
+ formula: {
289
+ type: 'value',
290
+ value: 'test',
291
+ },
292
+ },
293
+ {
294
+ name: 'Data',
295
+ formula: {
296
+ type: 'value',
297
+ value: '<Data>',
298
+ },
299
+ },
300
+ ],
301
+ label: 'Log to console',
302
+ },
303
+ {
304
+ name: '@toddle/gotToURL',
305
+ arguments: [
306
+ {
307
+ name: 'URL',
308
+ formula: {
309
+ type: 'value',
310
+ value: 'https://example.com',
311
+ },
312
+ },
313
+ ],
314
+ label: 'Go to URL',
315
+ },
316
+ ],
317
+ exposeInContext: false,
318
+ },
319
+ },
320
+ onLoad: {
321
+ trigger: 'Load',
322
+ actions: [
323
+ {
324
+ name: '@toddle/logToConsole',
325
+ arguments: [
326
+ {
327
+ name: 'Label',
328
+ formula: {
329
+ type: 'value',
330
+ value: '',
331
+ },
332
+ },
333
+ {
334
+ name: 'Data',
335
+ formula: {
336
+ type: 'value',
337
+ value: '<Data>',
338
+ },
339
+ },
340
+ ],
341
+ label: 'Log to console',
342
+ },
343
+ {
344
+ name: '@toddle/gotToURL',
345
+ arguments: [
346
+ {
347
+ name: 'URL',
348
+ formula: {
349
+ type: 'value',
350
+ value: 'https://example.com',
351
+ },
352
+ },
353
+ ],
354
+ label: 'Go to URL',
355
+ },
356
+ ],
357
+ },
358
+ nodes: {
359
+ root: {
360
+ type: 'element',
361
+ tag: 'div',
362
+ attrs: {},
363
+ classes: {},
364
+ events: {},
365
+ children: ['wkPXF99C3qdRgZmUcnHO_'],
366
+ style: {},
367
+ },
368
+ wkPXF99C3qdRgZmUcnHO_: {
369
+ tag: 'button',
370
+ type: 'element',
371
+ attrs: {},
372
+ style: {
373
+ color: 'var(--grey-200, #E5E5E5)',
374
+ 'border-radius': '6px',
375
+ 'background-color': 'var(--blue-600, #2563EB)',
376
+ 'padding-left': '8px',
377
+ 'padding-right': '8px',
378
+ 'padding-top': '8px',
379
+ 'padding-bottom': '8px',
380
+ width: 'fit-content',
381
+ cursor: 'pointer',
382
+ },
383
+ events: {
384
+ click: {
385
+ trigger: 'click',
386
+ actions: [
387
+ {
388
+ name: '@toddle/logToConsole',
389
+ arguments: [
390
+ {
391
+ name: 'Label',
392
+ formula: {
393
+ type: 'value',
394
+ value: '',
395
+ },
396
+ },
397
+ {
398
+ name: 'Data',
399
+ formula: {
400
+ type: 'value',
401
+ value: '<Data>',
402
+ },
403
+ },
404
+ ],
405
+ label: 'Log to console',
406
+ },
407
+ {
408
+ name: '@toddle/gotToURL',
409
+ arguments: [
410
+ {
411
+ name: 'URL',
412
+ formula: {
413
+ type: 'value',
414
+ value: 'https://example.com',
415
+ },
416
+ },
417
+ ],
418
+ label: 'Go to URL',
419
+ },
420
+ ],
421
+ },
422
+ },
423
+ classes: {},
424
+ children: ['zFhmZR6YnLy089HmlK-Yn'],
425
+ variants: [],
426
+ },
427
+ 'zFhmZR6YnLy089HmlK-Yn': {
428
+ type: 'text',
429
+ value: {
430
+ type: 'value',
431
+ value: 'Button',
432
+ },
433
+ },
434
+ },
435
+ variables: {},
436
+ apis: {},
437
+ name: 'nav',
438
+ },
439
+ },
440
+ },
441
+ rules: [noPostNavigateAction],
442
+ }));
443
+ expect(problems).toHaveLength(0);
444
+ });
445
+ });
446
+ //# sourceMappingURL=noPostNavigateAction.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noPostNavigateAction.test.js","sourceRoot":"","sources":["../../../src/rules/workflows/noPostNavigateAction.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://github.com/nordcraftengine/nordcraft",
7
7
  "dependencies": {
8
- "@nordcraft/ssr": "1.0.12"
8
+ "@nordcraft/ssr": "1.0.13"
9
9
  },
10
10
  "scripts": {
11
11
  "build": "tsc",
@@ -17,5 +17,5 @@
17
17
  "test:watch:only": "bun test --watch --only"
18
18
  },
19
19
  "files": ["dist", "src"],
20
- "version": "1.0.12"
20
+ "version": "1.0.13"
21
21
  }
@@ -46,6 +46,7 @@ import { noReferenceVariableRule } from './rules/variables/noReferenceVariableRu
46
46
  import { unknownVariableRule } from './rules/variables/unknownVariableRule'
47
47
  import { unknownVariableSetterRule } from './rules/variables/unknownVariableSetterRule'
48
48
  import { duplicateWorkflowParameterRule } from './rules/workflows/duplicateWorkflowParameterRule'
49
+ import { noPostNavigateAction } from './rules/workflows/noPostNavigateAction'
49
50
  import { noReferenceComponentWorkflowRule } from './rules/workflows/noReferenceComponentWorkflowRule'
50
51
  import { unknownContextProviderWorkflowRule } from './rules/workflows/unknownContextProviderWorkflowRule'
51
52
  import { unknownContextWorkflowRule } from './rules/workflows/unknownContextWorkflowRule'
@@ -125,6 +126,7 @@ const RULES = [
125
126
  legacyFormulaRule,
126
127
  noContextConsumersRule,
127
128
  nonEmptyVoidElementRule,
129
+ noPostNavigateAction,
128
130
  noReferenceApiRule,
129
131
  noReferenceAttributeRule,
130
132
  noReferenceComponentFormulaRule,
@@ -0,0 +1,458 @@
1
+ import { searchProject } from '../../searchProject'
2
+ import { noPostNavigateAction } from './noPostNavigateAction'
3
+
4
+ describe('noPostNavigateAction', () => {
5
+ test('should detect actions after a url navigate action', () => {
6
+ const problems = Array.from(
7
+ searchProject({
8
+ files: {
9
+ formulas: {},
10
+ components: {
11
+ nav: {
12
+ attributes: {},
13
+ events: [],
14
+ formulas: {},
15
+ nodes: {
16
+ root: {
17
+ type: 'element',
18
+ tag: 'div',
19
+ attrs: {},
20
+ classes: {},
21
+ events: {},
22
+ children: ['wkPXF99C3qdRgZmUcnHO_'],
23
+ style: {},
24
+ },
25
+ wkPXF99C3qdRgZmUcnHO_: {
26
+ tag: 'button',
27
+ type: 'element',
28
+ attrs: {},
29
+ style: {
30
+ color: 'var(--grey-200, #E5E5E5)',
31
+ 'border-radius': '6px',
32
+ 'background-color': 'var(--blue-600, #2563EB)',
33
+ 'padding-left': '8px',
34
+ 'padding-right': '8px',
35
+ 'padding-top': '8px',
36
+ 'padding-bottom': '8px',
37
+ width: 'fit-content',
38
+ cursor: 'pointer',
39
+ },
40
+ events: {
41
+ click: {
42
+ trigger: 'click',
43
+ actions: [
44
+ {
45
+ name: '@toddle/gotToURL',
46
+ arguments: [
47
+ {
48
+ name: 'URL',
49
+ formula: {
50
+ type: 'value',
51
+ value: 'https://example.com',
52
+ },
53
+ },
54
+ ],
55
+ label: 'Go to URL',
56
+ },
57
+ {
58
+ name: '@toddle/logToConsole',
59
+ arguments: [
60
+ {
61
+ name: 'Label',
62
+ formula: {
63
+ type: 'value',
64
+ value: '',
65
+ },
66
+ },
67
+ {
68
+ name: 'Data',
69
+ formula: {
70
+ type: 'value',
71
+ value: '<Data>',
72
+ },
73
+ },
74
+ ],
75
+ label: 'Log to console',
76
+ },
77
+ ],
78
+ },
79
+ },
80
+ classes: {},
81
+ children: ['zFhmZR6YnLy089HmlK-Yn'],
82
+ variants: [],
83
+ },
84
+ 'zFhmZR6YnLy089HmlK-Yn': {
85
+ type: 'text',
86
+ value: {
87
+ type: 'value',
88
+ value: 'Button',
89
+ },
90
+ },
91
+ },
92
+ variables: {},
93
+ apis: {},
94
+ name: 'nav',
95
+ },
96
+ },
97
+ },
98
+ rules: [noPostNavigateAction],
99
+ }),
100
+ )
101
+
102
+ expect(problems).toHaveLength(1)
103
+ expect(problems[0].code).toBe('no post navigate action')
104
+ expect(problems[0].path).toEqual([
105
+ 'components',
106
+ 'nav',
107
+ 'nodes',
108
+ 'wkPXF99C3qdRgZmUcnHO_',
109
+ 'events',
110
+ 'click',
111
+ 'actions',
112
+ '0',
113
+ ])
114
+ })
115
+ test('should detect workflow actions after a url navigate action', () => {
116
+ const problems = Array.from(
117
+ searchProject({
118
+ files: {
119
+ formulas: {},
120
+ components: {
121
+ nav: {
122
+ attributes: {},
123
+ events: [],
124
+ formulas: {},
125
+ nodes: {
126
+ root: {
127
+ type: 'element',
128
+ tag: 'div',
129
+ attrs: {},
130
+ classes: {},
131
+ events: {},
132
+ children: [],
133
+ style: {},
134
+ },
135
+ },
136
+ variables: {},
137
+ apis: {},
138
+ name: 'nav2',
139
+ workflows: {
140
+ RGyFQC: {
141
+ parameters: [],
142
+ name: 'Navigate',
143
+ actions: [
144
+ {
145
+ name: '@toddle/gotToURL',
146
+ arguments: [
147
+ {
148
+ name: 'URL',
149
+ formula: {
150
+ type: 'value',
151
+ value: 'https://example.com',
152
+ },
153
+ },
154
+ ],
155
+ label: 'Go to URL',
156
+ },
157
+ {
158
+ name: '@toddle/logToConsole',
159
+ arguments: [
160
+ {
161
+ name: 'Label',
162
+ formula: {
163
+ type: 'value',
164
+ value: 'test',
165
+ },
166
+ },
167
+ {
168
+ name: 'Data',
169
+ formula: {
170
+ type: 'value',
171
+ value: '<Data>',
172
+ },
173
+ },
174
+ ],
175
+ label: 'Log to console',
176
+ },
177
+ ],
178
+ exposeInContext: false,
179
+ },
180
+ },
181
+ },
182
+ },
183
+ },
184
+ rules: [noPostNavigateAction],
185
+ }),
186
+ )
187
+
188
+ expect(problems).toHaveLength(1)
189
+ expect(problems[0].code).toBe('no post navigate action')
190
+ expect(problems[0].path).toEqual([
191
+ 'components',
192
+ 'nav',
193
+ 'workflows',
194
+ 'RGyFQC',
195
+ 'actions',
196
+ '0',
197
+ ])
198
+ })
199
+ test('should detect onLoad actions after a url navigate action', () => {
200
+ const problems = Array.from(
201
+ searchProject({
202
+ files: {
203
+ formulas: {},
204
+ components: {
205
+ nav: {
206
+ attributes: {},
207
+ onLoad: {
208
+ trigger: 'Load',
209
+ actions: [
210
+ {
211
+ name: '@toddle/gotToURL',
212
+ arguments: [
213
+ {
214
+ name: 'URL',
215
+ formula: {
216
+ type: 'value',
217
+ value: 'https://example.com',
218
+ },
219
+ },
220
+ ],
221
+ label: 'Go to URL',
222
+ },
223
+ {
224
+ name: '@toddle/logToConsole',
225
+ arguments: [
226
+ {
227
+ name: 'Label',
228
+ formula: {
229
+ type: 'value',
230
+ value: '',
231
+ },
232
+ },
233
+ {
234
+ name: 'Data',
235
+ formula: {
236
+ type: 'value',
237
+ value: '<Data>',
238
+ },
239
+ },
240
+ ],
241
+ label: 'Log to console',
242
+ },
243
+ ],
244
+ },
245
+ events: [],
246
+ formulas: {},
247
+ nodes: {
248
+ root: {
249
+ type: 'element',
250
+ tag: 'div',
251
+ attrs: {},
252
+ classes: {},
253
+ events: {},
254
+ children: [],
255
+ style: {},
256
+ },
257
+ },
258
+ variables: {},
259
+ apis: {},
260
+ name: 'nav2',
261
+ workflows: {},
262
+ },
263
+ },
264
+ },
265
+ rules: [noPostNavigateAction],
266
+ }),
267
+ )
268
+
269
+ expect(problems).toHaveLength(1)
270
+ expect(problems[0].code).toBe('no post navigate action')
271
+ expect(problems[0].path).toEqual([
272
+ 'components',
273
+ 'nav',
274
+ 'onLoad',
275
+ 'actions',
276
+ '0',
277
+ ])
278
+ })
279
+ test('should not report issues if navigate is the last action', () => {
280
+ const problems = Array.from(
281
+ searchProject({
282
+ files: {
283
+ formulas: {},
284
+ components: {
285
+ nav: {
286
+ attributes: {},
287
+ events: [],
288
+ formulas: {},
289
+ workflows: {
290
+ RGyFQC: {
291
+ parameters: [],
292
+ name: 'Navigate',
293
+ actions: [
294
+ {
295
+ name: '@toddle/logToConsole',
296
+ arguments: [
297
+ {
298
+ name: 'Label',
299
+ formula: {
300
+ type: 'value',
301
+ value: 'test',
302
+ },
303
+ },
304
+ {
305
+ name: 'Data',
306
+ formula: {
307
+ type: 'value',
308
+ value: '<Data>',
309
+ },
310
+ },
311
+ ],
312
+ label: 'Log to console',
313
+ },
314
+ {
315
+ name: '@toddle/gotToURL',
316
+ arguments: [
317
+ {
318
+ name: 'URL',
319
+ formula: {
320
+ type: 'value',
321
+ value: 'https://example.com',
322
+ },
323
+ },
324
+ ],
325
+ label: 'Go to URL',
326
+ },
327
+ ],
328
+ exposeInContext: false,
329
+ },
330
+ },
331
+ onLoad: {
332
+ trigger: 'Load',
333
+ actions: [
334
+ {
335
+ name: '@toddle/logToConsole',
336
+ arguments: [
337
+ {
338
+ name: 'Label',
339
+ formula: {
340
+ type: 'value',
341
+ value: '',
342
+ },
343
+ },
344
+ {
345
+ name: 'Data',
346
+ formula: {
347
+ type: 'value',
348
+ value: '<Data>',
349
+ },
350
+ },
351
+ ],
352
+ label: 'Log to console',
353
+ },
354
+ {
355
+ name: '@toddle/gotToURL',
356
+ arguments: [
357
+ {
358
+ name: 'URL',
359
+ formula: {
360
+ type: 'value',
361
+ value: 'https://example.com',
362
+ },
363
+ },
364
+ ],
365
+ label: 'Go to URL',
366
+ },
367
+ ],
368
+ },
369
+ nodes: {
370
+ root: {
371
+ type: 'element',
372
+ tag: 'div',
373
+ attrs: {},
374
+ classes: {},
375
+ events: {},
376
+ children: ['wkPXF99C3qdRgZmUcnHO_'],
377
+ style: {},
378
+ },
379
+ wkPXF99C3qdRgZmUcnHO_: {
380
+ tag: 'button',
381
+ type: 'element',
382
+ attrs: {},
383
+ style: {
384
+ color: 'var(--grey-200, #E5E5E5)',
385
+ 'border-radius': '6px',
386
+ 'background-color': 'var(--blue-600, #2563EB)',
387
+ 'padding-left': '8px',
388
+ 'padding-right': '8px',
389
+ 'padding-top': '8px',
390
+ 'padding-bottom': '8px',
391
+ width: 'fit-content',
392
+ cursor: 'pointer',
393
+ },
394
+ events: {
395
+ click: {
396
+ trigger: 'click',
397
+ actions: [
398
+ {
399
+ name: '@toddle/logToConsole',
400
+ arguments: [
401
+ {
402
+ name: 'Label',
403
+ formula: {
404
+ type: 'value',
405
+ value: '',
406
+ },
407
+ },
408
+ {
409
+ name: 'Data',
410
+ formula: {
411
+ type: 'value',
412
+ value: '<Data>',
413
+ },
414
+ },
415
+ ],
416
+ label: 'Log to console',
417
+ },
418
+ {
419
+ name: '@toddle/gotToURL',
420
+ arguments: [
421
+ {
422
+ name: 'URL',
423
+ formula: {
424
+ type: 'value',
425
+ value: 'https://example.com',
426
+ },
427
+ },
428
+ ],
429
+ label: 'Go to URL',
430
+ },
431
+ ],
432
+ },
433
+ },
434
+ classes: {},
435
+ children: ['zFhmZR6YnLy089HmlK-Yn'],
436
+ variants: [],
437
+ },
438
+ 'zFhmZR6YnLy089HmlK-Yn': {
439
+ type: 'text',
440
+ value: {
441
+ type: 'value',
442
+ value: 'Button',
443
+ },
444
+ },
445
+ },
446
+ variables: {},
447
+ apis: {},
448
+ name: 'nav',
449
+ },
450
+ },
451
+ },
452
+ rules: [noPostNavigateAction],
453
+ }),
454
+ )
455
+
456
+ expect(problems).toHaveLength(0)
457
+ })
458
+ })
@@ -0,0 +1,31 @@
1
+ import { get } from '@nordcraft/core/dist/utils/collections'
2
+ import type { Rule } from '../../types'
3
+
4
+ export const noPostNavigateAction: Rule<{ parameter: string }> = {
5
+ code: 'no post navigate action',
6
+ level: 'warning',
7
+ category: 'Quality',
8
+ visit: (report, { nodeType, path, value, files }) => {
9
+ if (
10
+ nodeType !== 'action-model' ||
11
+ value.type !== undefined ||
12
+ value.name !== '@toddle/gotToURL'
13
+ ) {
14
+ return
15
+ }
16
+ const actionsArrayPath = path.slice(0, -1).map((p) => String(p))
17
+ const actions = get(files, actionsArrayPath)
18
+ if (!Array.isArray(actions)) {
19
+ return
20
+ }
21
+ const _actionIndex = path.at(-1)
22
+ if (_actionIndex === undefined) {
23
+ return
24
+ }
25
+ const actionIndex = Number(_actionIndex)
26
+ if (actionIndex < actions.length - 1) {
27
+ // If the action is not the last one in the array, report it
28
+ report(path)
29
+ }
30
+ },
31
+ }
package/src/types.d.ts CHANGED
@@ -32,6 +32,7 @@ type Code =
32
32
  | 'legacy api'
33
33
  | 'legacy formula'
34
34
  | 'no context consumers'
35
+ | 'no post navigate action'
35
36
  | 'no-console'
36
37
  | 'no-reference api input'
37
38
  | 'no-reference api'