@nordcraft/search 1.0.49 → 1.0.51

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.
@@ -9,6 +9,7 @@ import { noReferenceApiRule } from './rules/apis/noReferenceApiRule';
9
9
  import { noReferenceApiServiceRule } from './rules/apis/noReferenceApiServiceRule';
10
10
  import { unknownApiInputRule } from './rules/apis/unknownApiInputRule';
11
11
  import { unknownApiRule } from './rules/apis/unknownApiRule';
12
+ import { unknownApiServiceRule } from './rules/apis/unknownApiServiceRule';
12
13
  import { noReferenceAttributeRule } from './rules/attributes/noReferenceAttributeRule';
13
14
  import { unknownAttributeRule } from './rules/attributes/unknownAttributeRule';
14
15
  import { unknownComponentAttributeRule } from './rules/attributes/unknownComponentAttributeRule';
@@ -121,8 +122,9 @@ const RULES = [
121
122
  noUnnecessaryConditionFalsy,
122
123
  noUnnecessaryConditionTruthy,
123
124
  requireExtensionRule,
124
- unknownApiRule,
125
125
  unknownApiInputRule,
126
+ unknownApiRule,
127
+ unknownApiServiceRule,
126
128
  unknownAttributeRule,
127
129
  unknownClassnameRule,
128
130
  // unknownComponentFormulaInputRule,
@@ -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,21 @@
1
+ import { isLegacyApi } from '@nordcraft/core/dist/api/api';
2
+ import { isDefined } from '@nordcraft/core/dist/utils/util';
3
+ import { removeFromPathFix } from '../../util/removeUnused.fix';
4
+ export const unknownApiServiceRule = {
5
+ code: 'unknown api service',
6
+ level: 'warning',
7
+ category: 'Unknown Reference',
8
+ visit: (report, args) => {
9
+ if (args.nodeType !== 'component-api' ||
10
+ isLegacyApi(args.value) ||
11
+ !isDefined(args.value.service) ||
12
+ isDefined(args.files.services?.[args.value.service])) {
13
+ return;
14
+ }
15
+ report([...args.path, 'service'], { apiName: args.value.name, serviceName: args.value.service }, ['delete-api-service-reference']);
16
+ },
17
+ fixes: {
18
+ 'delete-api-service-reference': removeFromPathFix,
19
+ },
20
+ };
21
+ //# sourceMappingURL=unknownApiServiceRule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unknownApiServiceRule.js","sourceRoot":"","sources":["../../../src/rules/apis/unknownApiServiceRule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAE3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAE/D,MAAM,CAAC,MAAM,qBAAqB,GAG7B;IACH,IAAI,EAAE,qBAAqB;IAC3B,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,mBAAmB;IAC7B,KAAK,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;QACtB,IACE,IAAI,CAAC,QAAQ,KAAK,eAAe;YACjC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;YACvB,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;YAC9B,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EACpD,CAAC;YACD,OAAM;QACR,CAAC;QACD,MAAM,CACJ,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,EACzB,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAC7D,CAAC,8BAA8B,CAAC,CACjC,CAAA;IACH,CAAC;IACD,KAAK,EAAE;QACL,8BAA8B,EAAE,iBAAiB;KAClD;CACF,CAAA"}
@@ -0,0 +1,140 @@
1
+ import { valueFormula } from '@nordcraft/core/dist/formula/formulaUtils';
2
+ import { describe, expect, test } from 'bun:test';
3
+ import { fixProject } from '../../fixProject';
4
+ import { searchProject } from '../../searchProject';
5
+ import { unknownApiServiceRule } from './unknownApiServiceRule';
6
+ describe('find unknownApiServiceRule', () => {
7
+ test('should detect references to unknown services', () => {
8
+ const problems = Array.from(searchProject({
9
+ files: {
10
+ formulas: {},
11
+ services: {
12
+ 'used-service': {
13
+ name: 'used-service',
14
+ type: 'supabase',
15
+ meta: {},
16
+ },
17
+ },
18
+ components: {
19
+ apiComponent: {
20
+ name: 'test',
21
+ nodes: {},
22
+ formulas: {},
23
+ apis: {
24
+ 'my-api': {
25
+ name: 'my-api',
26
+ type: 'http',
27
+ version: 2,
28
+ autoFetch: valueFormula(true),
29
+ inputs: {},
30
+ service: 'used-service',
31
+ },
32
+ 'my-other-api': {
33
+ name: 'my-other-api',
34
+ type: 'http',
35
+ version: 2,
36
+ autoFetch: valueFormula(true),
37
+ inputs: {},
38
+ service: 'unknown-service',
39
+ },
40
+ },
41
+ attributes: {},
42
+ variables: {},
43
+ },
44
+ },
45
+ },
46
+ rules: [unknownApiServiceRule],
47
+ }));
48
+ expect(problems).toHaveLength(1);
49
+ expect(problems[0].code).toBe('unknown api service');
50
+ expect(problems[0].path).toEqual([
51
+ 'components',
52
+ 'apiComponent',
53
+ 'apis',
54
+ 'my-other-api',
55
+ 'service',
56
+ ]);
57
+ expect(problems[0].details).toEqual({
58
+ apiName: 'my-other-api',
59
+ serviceName: 'unknown-service',
60
+ });
61
+ });
62
+ });
63
+ describe('fix unknownApiServiceRule', () => {
64
+ test('should remove references to unknown services', () => {
65
+ const project = {
66
+ formulas: {},
67
+ services: {
68
+ 'used-service': {
69
+ name: 'used-service',
70
+ type: 'supabase',
71
+ meta: {},
72
+ },
73
+ },
74
+ components: {
75
+ apiComponent: {
76
+ name: 'test',
77
+ nodes: {},
78
+ formulas: {},
79
+ apis: {
80
+ 'my-api': {
81
+ name: 'my-api',
82
+ type: 'http',
83
+ version: 2,
84
+ autoFetch: valueFormula(true),
85
+ inputs: {},
86
+ service: 'used-service',
87
+ },
88
+ 'my-other-api': {
89
+ name: 'my-api',
90
+ type: 'http',
91
+ version: 2,
92
+ autoFetch: valueFormula(true),
93
+ inputs: {},
94
+ service: 'unknown-service',
95
+ },
96
+ },
97
+ onLoad: {
98
+ trigger: 'onLoad',
99
+ actions: [],
100
+ },
101
+ attributes: {},
102
+ variables: {},
103
+ },
104
+ },
105
+ };
106
+ const fixedProject = fixProject({
107
+ files: project,
108
+ rule: unknownApiServiceRule,
109
+ fixType: 'delete-api-service-reference',
110
+ });
111
+ expect((fixedProject.components['apiComponent']?.apis['my-other-api']).service).toBeUndefined();
112
+ expect(fixedProject.components['apiComponent']?.apis)
113
+ .toMatchInlineSnapshot(`
114
+ {
115
+ "my-api": {
116
+ "autoFetch": {
117
+ "type": "value",
118
+ "value": true,
119
+ },
120
+ "inputs": {},
121
+ "name": "my-api",
122
+ "service": "used-service",
123
+ "type": "http",
124
+ "version": 2,
125
+ },
126
+ "my-other-api": {
127
+ "autoFetch": {
128
+ "type": "value",
129
+ "value": true,
130
+ },
131
+ "inputs": {},
132
+ "name": "my-api",
133
+ "type": "http",
134
+ "version": 2,
135
+ },
136
+ }
137
+ `);
138
+ });
139
+ });
140
+ //# sourceMappingURL=unknownApiServiceRule.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unknownApiServiceRule.test.js","sourceRoot":"","sources":["../../../src/rules/apis/unknownApiServiceRule.test.ts"],"names":[],"mappings":"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"}
@@ -4,16 +4,19 @@ export const noStaticNodeCondition = {
4
4
  code: 'no-static-node-condition',
5
5
  level: 'warning',
6
6
  category: 'Quality',
7
- visit: (report, { path: nodePath, value, nodeType }) => {
8
- if (nodeType !== 'component-node' || !value.condition) {
7
+ visit: (report, { path, value, nodeType }) => {
8
+ if (nodeType !== 'formula' ||
9
+ !(path.length === 5 &&
10
+ path[0] === 'components' &&
11
+ path[2] === 'nodes' &&
12
+ path[4] === 'condition')) {
9
13
  return;
10
14
  }
11
- const { isStatic, result } = contextlessEvaluateFormula(value.condition);
15
+ const { isStatic, result } = contextlessEvaluateFormula(value);
12
16
  if (isStatic) {
13
- const conditionPath = [...nodePath, 'condition'];
14
17
  // - if truthy: "Condition is always true, you can safely remove the condition as it will always be rendered."
15
18
  // - if falsy: "Condition is always false, you can safely remove the entire node as it will never be rendered."
16
- report(conditionPath, {
19
+ report(path, {
17
20
  result,
18
21
  }, Boolean(result) === true ? ['remove-condition'] : ['remove-node']);
19
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"noStaticNodeCondition.js","sourceRoot":"","sources":["../../../src/rules/logic/noStaticNodeCondition.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAA;AAClF,OAAO,EACL,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,6BAA6B,CAAA;AAEpC,MAAM,CAAC,MAAM,qBAAqB,GAE7B;IACH,IAAI,EAAE,0BAA0B;IAChC,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,SAAS;IACnB,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;QACrD,IAAI,QAAQ,KAAK,gBAAgB,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACtD,OAAM;QACR,CAAC;QAED,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,0BAA0B,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QACxE,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,aAAa,GAAG,CAAC,GAAG,QAAQ,EAAE,WAAW,CAAC,CAAA;YAChD,8GAA8G;YAC9G,+GAA+G;YAC/G,MAAM,CACJ,aAAa,EACb;gBACE,MAAM;aACP,EACD,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAClE,CAAA;QACH,CAAC;IACH,CAAC;IACD,KAAK,EAAE;QACL,kBAAkB,EAAE,iBAAiB;QACrC,aAAa,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CACpC,qBAAqB,CAAC;YACpB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACvB,GAAG,IAAI;SACR,CAAC,CAA0B;KAC/B;CACF,CAAA"}
1
+ {"version":3,"file":"noStaticNodeCondition.js","sourceRoot":"","sources":["../../../src/rules/logic/noStaticNodeCondition.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAA;AAClF,OAAO,EACL,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,6BAA6B,CAAA;AAEpC,MAAM,CAAC,MAAM,qBAAqB,GAE7B;IACH,IAAI,EAAE,0BAA0B;IAChC,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,SAAS;IACnB,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC3C,IACE,QAAQ,KAAK,SAAS;YACtB,CAAC,CACC,IAAI,CAAC,MAAM,KAAK,CAAC;gBACjB,IAAI,CAAC,CAAC,CAAC,KAAK,YAAY;gBACxB,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO;gBACnB,IAAI,CAAC,CAAC,CAAC,KAAK,WAAW,CACxB,EACD,CAAC;YACD,OAAM;QACR,CAAC;QAED,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,0BAA0B,CAAC,KAAK,CAAC,CAAA;QAC9D,IAAI,QAAQ,EAAE,CAAC;YACb,8GAA8G;YAC9G,+GAA+G;YAC/G,MAAM,CACJ,IAAI,EACJ;gBACE,MAAM;aACP,EACD,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAClE,CAAA;QACH,CAAC;IACH,CAAC;IACD,KAAK,EAAE;QACL,kBAAkB,EAAE,iBAAiB;QACrC,aAAa,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CACpC,qBAAqB,CAAC;YACpB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACvB,GAAG,IAAI;SACR,CAAC,CAA0B;KAC/B;CACF,CAAA"}
@@ -143,35 +143,37 @@ describe('noStaticNodeCondition', () => {
143
143
  },
144
144
  },
145
145
  };
146
+ const filesClone = structuredClone(files);
146
147
  const fixedFiles = fixProject({
147
148
  files,
148
149
  rule: noStaticNodeCondition,
149
150
  fixType: 'remove-condition',
151
+ pathsToVisit: [['components', 'test', 'nodes', 'root', 'condition']],
150
152
  });
151
- expect(fixedFiles).toMatchInlineSnapshot(`
152
- {
153
- "components": {
154
- "test": {
155
- "apis": {},
156
- "attributes": {},
157
- "formulas": {},
158
- "name": "test",
159
- "nodes": {
160
- "root": {
161
- "attrs": {},
162
- "children": [],
163
- "classes": {},
164
- "events": {},
165
- "style": {},
166
- "tag": "div",
167
- "type": "element",
168
- },
153
+ expect(fixedFiles).toEqual({
154
+ components: {
155
+ test: {
156
+ apis: {},
157
+ attributes: {},
158
+ formulas: {},
159
+ name: 'test',
160
+ nodes: {
161
+ root: {
162
+ attrs: {},
163
+ children: [],
164
+ classes: {},
165
+ events: {},
166
+ style: {},
167
+ tag: 'div',
168
+ type: 'element',
169
+ },
170
+ },
171
+ variables: {},
172
+ },
169
173
  },
170
- "variables": {},
171
- },
172
- },
173
- }
174
- `);
174
+ });
175
+ // Also ensure that the original files are not mutated
176
+ expect(files).toEqual(filesClone);
175
177
  });
176
178
  test('should fix static falsy condition by removing the node and any references to it', () => {
177
179
  const files = {
@@ -240,53 +242,52 @@ describe('noStaticNodeCondition', () => {
240
242
  },
241
243
  },
242
244
  };
245
+ const filesClone = structuredClone(files);
243
246
  const fixedFiles = fixProject({
244
247
  files,
245
248
  rule: noStaticNodeCondition,
246
249
  fixType: 'remove-node',
250
+ pathsToVisit: [
251
+ ['components', 'test', 'nodes', 'alwaysHiddenElement', 'condition'],
252
+ ],
247
253
  });
248
- expect(fixedFiles).toMatchInlineSnapshot(`
249
- {
250
- "components": {
251
- "test": {
252
- "apis": {},
253
- "attributes": {},
254
- "formulas": {},
255
- "name": "test",
256
- "nodes": {
257
- "root": {
258
- "attrs": {},
259
- "children": [
260
- "sometimesVisibleElement",
261
- ],
262
- "classes": {},
263
- "events": {},
264
- "style": {},
265
- "tag": "div",
266
- "type": "element",
267
- },
268
- "sometimesVisibleElement": {
269
- "attrs": {},
270
- "children": [],
271
- "classes": {},
272
- "condition": {
273
- "path": [
274
- "Variables",
275
- "maybe",
276
- ],
277
- "type": "path",
254
+ expect(fixedFiles).toEqual({
255
+ components: {
256
+ test: {
257
+ apis: {},
258
+ attributes: {},
259
+ formulas: {},
260
+ name: 'test',
261
+ nodes: {
262
+ root: {
263
+ attrs: {},
264
+ children: ['sometimesVisibleElement'],
265
+ classes: {},
266
+ events: {},
267
+ style: {},
268
+ tag: 'div',
269
+ type: 'element',
270
+ },
271
+ sometimesVisibleElement: {
272
+ attrs: {},
273
+ children: [],
274
+ classes: {},
275
+ condition: {
276
+ path: ['Variables', 'maybe'],
277
+ type: 'path',
278
+ },
279
+ events: {},
280
+ style: {},
281
+ tag: 'div',
282
+ type: 'element',
283
+ },
284
+ },
285
+ variables: {},
278
286
  },
279
- "events": {},
280
- "style": {},
281
- "tag": "div",
282
- "type": "element",
283
- },
284
287
  },
285
- "variables": {},
286
- },
287
- },
288
- }
289
- `);
288
+ });
289
+ // Also ensure that the original files are not mutated
290
+ expect(files).toEqual(filesClone);
290
291
  });
291
292
  });
292
293
  //# sourceMappingURL=noStaticNodeCondition.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"noStaticNodeCondition.test.js","sourceRoot":"","sources":["../../../src/rules/logic/noStaticNodeCondition.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"noStaticNodeCondition.test.js","sourceRoot":"","sources":["../../../src/rules/logic/noStaticNodeCondition.test.ts"],"names":[],"mappings":"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"}
@@ -4,12 +4,9 @@ export const removeFromPathFix = ({ path, files }) => omit(files, path);
4
4
  * Same as removeFromPathFix, but also cleans up any references to the removed node.
5
5
  */
6
6
  export const removeNodeFromPathFix = (data) => {
7
- if (data.nodeType !== 'component-node') {
8
- throw new Error('removeNodeFromPathFix can only be used on component nodes');
9
- }
10
- const componentNodesPath = data.path.map(String);
11
- const nodeId = componentNodesPath.pop();
12
- const nodes = { ...get(data.files, componentNodesPath) };
7
+ const nodeId = String(data.path[data.path.length - 1]);
8
+ const componentNodesPath = data.path.slice(0, -1).map(String);
9
+ const nodes = structuredClone(get(data.files, componentNodesPath));
13
10
  // Clean parent reference
14
11
  for (const key in nodes) {
15
12
  if (nodes[key].children?.includes(nodeId)) {
@@ -1 +1 @@
1
- {"version":3,"file":"removeUnused.fix.js","sourceRoot":"","sources":["../../src/util/removeUnused.fix.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,wCAAwC,CAAA;AAGvE,MAAM,CAAC,MAAM,iBAAiB,GAA0B,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAC1E,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;AAEnB;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAA0B,CAAC,IAAI,EAAE,EAAE;IACnE,IAAI,IAAI,CAAC,QAAQ,KAAK,gBAAgB,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAA;IAC9E,CAAC;IAED,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAChD,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,EAAG,CAAA;IACxC,MAAM,KAAK,GAAG,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,kBAAkB,CAAC,EAGrD,CAAA;IAED,yBAAyB;IACzB,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1C,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAA;QACvE,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,MAAM,qBAAqB,GAAG,CAAC,MAAc,EAAE,EAAE;QAC/C,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAA0B,CAAA;QACnD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAM;QACR,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACpC,qBAAqB,CAAC,OAAO,CAAC,CAAA;YAChC,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC,MAAM,CAAC,CAAA;IACtB,CAAC,CAAA;IAED,qBAAqB,CAAC,MAAM,CAAC,CAAA;IAE7B,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAA;AACnD,CAAC,CAAA"}
1
+ {"version":3,"file":"removeUnused.fix.js","sourceRoot":"","sources":["../../src/util/removeUnused.fix.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,wCAAwC,CAAA;AAGvE,MAAM,CAAC,MAAM,iBAAiB,GAA0B,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAC1E,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;AAEnB;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAA0B,CAAC,IAAI,EAAE,EAAE;IACnE,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;IACtD,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAC7D,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAGhE,CAAA;IAED,yBAAyB;IACzB,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1C,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAA;QACvE,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,MAAM,qBAAqB,GAAG,CAAC,MAAc,EAAE,EAAE;QAC/C,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAA0B,CAAA;QACnD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAM;QACR,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACpC,qBAAqB,CAAC,OAAO,CAAC,CAAA;YAChC,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC,MAAM,CAAC,CAAA;IACtB,CAAC,CAAA;IAED,qBAAqB,CAAC,MAAM,CAAC,CAAA;IAE7B,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAA;AACnD,CAAC,CAAA"}
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.49",
8
+ "@nordcraft/ssr": "1.0.51",
9
9
  "jsondiffpatch": "0.7.3",
10
10
  "postcss": "8.5.6"
11
11
  },
@@ -19,5 +19,5 @@
19
19
  "test:watch:only": "bun test --watch --only"
20
20
  },
21
21
  "files": ["dist", "src"],
22
- "version": "1.0.49"
22
+ "version": "1.0.51"
23
23
  }
@@ -11,6 +11,7 @@ import { noReferenceApiRule } from './rules/apis/noReferenceApiRule'
11
11
  import { noReferenceApiServiceRule } from './rules/apis/noReferenceApiServiceRule'
12
12
  import { unknownApiInputRule } from './rules/apis/unknownApiInputRule'
13
13
  import { unknownApiRule } from './rules/apis/unknownApiRule'
14
+ import { unknownApiServiceRule } from './rules/apis/unknownApiServiceRule'
14
15
  import { noReferenceAttributeRule } from './rules/attributes/noReferenceAttributeRule'
15
16
  import { unknownAttributeRule } from './rules/attributes/unknownAttributeRule'
16
17
  import { unknownComponentAttributeRule } from './rules/attributes/unknownComponentAttributeRule'
@@ -170,8 +171,9 @@ const RULES = [
170
171
  noUnnecessaryConditionFalsy,
171
172
  noUnnecessaryConditionTruthy,
172
173
  requireExtensionRule,
173
- unknownApiRule,
174
174
  unknownApiInputRule,
175
+ unknownApiRule,
176
+ unknownApiServiceRule,
175
177
  unknownAttributeRule,
176
178
  unknownClassnameRule,
177
179
  // unknownComponentFormulaInputRule,
@@ -0,0 +1,152 @@
1
+ import type { ApiRequest } from '@nordcraft/core/dist/api/apiTypes'
2
+ import { valueFormula } from '@nordcraft/core/dist/formula/formulaUtils'
3
+ import type { ProjectFiles } from '@nordcraft/ssr/dist/ssr.types'
4
+ import { describe, expect, test } from 'bun:test'
5
+ import { fixProject } from '../../fixProject'
6
+ import { searchProject } from '../../searchProject'
7
+ import { unknownApiServiceRule } from './unknownApiServiceRule'
8
+
9
+ describe('find unknownApiServiceRule', () => {
10
+ test('should detect references to unknown services', () => {
11
+ const problems = Array.from(
12
+ searchProject({
13
+ files: {
14
+ formulas: {},
15
+ services: {
16
+ 'used-service': {
17
+ name: 'used-service',
18
+ type: 'supabase',
19
+ meta: {},
20
+ },
21
+ },
22
+ components: {
23
+ apiComponent: {
24
+ name: 'test',
25
+ nodes: {},
26
+ formulas: {},
27
+ apis: {
28
+ 'my-api': {
29
+ name: 'my-api',
30
+ type: 'http',
31
+ version: 2,
32
+ autoFetch: valueFormula(true),
33
+ inputs: {},
34
+ service: 'used-service',
35
+ },
36
+ 'my-other-api': {
37
+ name: 'my-other-api',
38
+ type: 'http',
39
+ version: 2,
40
+ autoFetch: valueFormula(true),
41
+ inputs: {},
42
+ service: 'unknown-service',
43
+ },
44
+ },
45
+ attributes: {},
46
+ variables: {},
47
+ },
48
+ },
49
+ },
50
+ rules: [unknownApiServiceRule],
51
+ }),
52
+ )
53
+
54
+ expect(problems).toHaveLength(1)
55
+ expect(problems[0].code).toBe('unknown api service')
56
+ expect(problems[0].path).toEqual([
57
+ 'components',
58
+ 'apiComponent',
59
+ 'apis',
60
+ 'my-other-api',
61
+ 'service',
62
+ ])
63
+ expect(problems[0].details).toEqual({
64
+ apiName: 'my-other-api',
65
+ serviceName: 'unknown-service',
66
+ })
67
+ })
68
+ })
69
+
70
+ describe('fix unknownApiServiceRule', () => {
71
+ test('should remove references to unknown services', () => {
72
+ const project: ProjectFiles = {
73
+ formulas: {},
74
+ services: {
75
+ 'used-service': {
76
+ name: 'used-service',
77
+ type: 'supabase',
78
+ meta: {},
79
+ },
80
+ },
81
+ components: {
82
+ apiComponent: {
83
+ name: 'test',
84
+ nodes: {},
85
+ formulas: {},
86
+ apis: {
87
+ 'my-api': {
88
+ name: 'my-api',
89
+ type: 'http',
90
+ version: 2,
91
+ autoFetch: valueFormula(true),
92
+ inputs: {},
93
+ service: 'used-service',
94
+ },
95
+ 'my-other-api': {
96
+ name: 'my-api',
97
+ type: 'http',
98
+ version: 2,
99
+ autoFetch: valueFormula(true),
100
+ inputs: {},
101
+ service: 'unknown-service',
102
+ },
103
+ },
104
+ onLoad: {
105
+ trigger: 'onLoad',
106
+ actions: [],
107
+ },
108
+ attributes: {},
109
+ variables: {},
110
+ },
111
+ },
112
+ }
113
+ const fixedProject = fixProject({
114
+ files: project,
115
+ rule: unknownApiServiceRule,
116
+ fixType: 'delete-api-service-reference',
117
+ })
118
+ expect(
119
+ (
120
+ fixedProject.components['apiComponent']?.apis[
121
+ 'my-other-api'
122
+ ] as ApiRequest
123
+ ).service,
124
+ ).toBeUndefined()
125
+ expect(fixedProject.components['apiComponent']?.apis)
126
+ .toMatchInlineSnapshot(`
127
+ {
128
+ "my-api": {
129
+ "autoFetch": {
130
+ "type": "value",
131
+ "value": true,
132
+ },
133
+ "inputs": {},
134
+ "name": "my-api",
135
+ "service": "used-service",
136
+ "type": "http",
137
+ "version": 2,
138
+ },
139
+ "my-other-api": {
140
+ "autoFetch": {
141
+ "type": "value",
142
+ "value": true,
143
+ },
144
+ "inputs": {},
145
+ "name": "my-api",
146
+ "type": "http",
147
+ "version": 2,
148
+ },
149
+ }
150
+ `)
151
+ })
152
+ })
@@ -0,0 +1,33 @@
1
+ import { isLegacyApi } from '@nordcraft/core/dist/api/api'
2
+ import { isDefined } from '@nordcraft/core/dist/utils/util'
3
+ import type { Rule } from '../../types'
4
+ import { removeFromPathFix } from '../../util/removeUnused.fix'
5
+
6
+ export const unknownApiServiceRule: Rule<{
7
+ apiName: string
8
+ serviceName: string
9
+ }> = {
10
+ code: 'unknown api service',
11
+ level: 'warning',
12
+ category: 'Unknown Reference',
13
+ visit: (report, args) => {
14
+ if (
15
+ args.nodeType !== 'component-api' ||
16
+ isLegacyApi(args.value) ||
17
+ !isDefined(args.value.service) ||
18
+ isDefined(args.files.services?.[args.value.service])
19
+ ) {
20
+ return
21
+ }
22
+ report(
23
+ [...args.path, 'service'],
24
+ { apiName: args.value.name, serviceName: args.value.service },
25
+ ['delete-api-service-reference'],
26
+ )
27
+ },
28
+ fixes: {
29
+ 'delete-api-service-reference': removeFromPathFix,
30
+ },
31
+ }
32
+
33
+ export type UnknownApiServiceRuleFix = 'delete-api-service-reference'
@@ -157,35 +157,38 @@ describe('noStaticNodeCondition', () => {
157
157
  },
158
158
  },
159
159
  }
160
+ const filesClone = structuredClone(files)
160
161
  const fixedFiles = fixProject({
161
162
  files,
162
163
  rule: noStaticNodeCondition,
163
164
  fixType: 'remove-condition',
165
+ pathsToVisit: [['components', 'test', 'nodes', 'root', 'condition']],
164
166
  })
165
- expect(fixedFiles).toMatchInlineSnapshot(`
166
- {
167
- "components": {
168
- "test": {
169
- "apis": {},
170
- "attributes": {},
171
- "formulas": {},
172
- "name": "test",
173
- "nodes": {
174
- "root": {
175
- "attrs": {},
176
- "children": [],
177
- "classes": {},
178
- "events": {},
179
- "style": {},
180
- "tag": "div",
181
- "type": "element",
182
- },
167
+ expect(fixedFiles).toEqual({
168
+ components: {
169
+ test: {
170
+ apis: {},
171
+ attributes: {},
172
+ formulas: {},
173
+ name: 'test',
174
+ nodes: {
175
+ root: {
176
+ attrs: {},
177
+ children: [],
178
+ classes: {},
179
+ events: {},
180
+ style: {},
181
+ tag: 'div',
182
+ type: 'element',
183
183
  },
184
- "variables": {},
185
184
  },
185
+ variables: {},
186
186
  },
187
- }
188
- `)
187
+ },
188
+ })
189
+
190
+ // Also ensure that the original files are not mutated
191
+ expect(files).toEqual(filesClone)
189
192
  })
190
193
 
191
194
  test('should fix static falsy condition by removing the node and any references to it', () => {
@@ -255,54 +258,53 @@ describe('noStaticNodeCondition', () => {
255
258
  },
256
259
  },
257
260
  }
258
-
261
+ const filesClone = structuredClone(files)
259
262
  const fixedFiles = fixProject({
260
263
  files,
261
264
  rule: noStaticNodeCondition,
262
265
  fixType: 'remove-node',
266
+ pathsToVisit: [
267
+ ['components', 'test', 'nodes', 'alwaysHiddenElement', 'condition'],
268
+ ],
263
269
  })
264
270
 
265
- expect(fixedFiles).toMatchInlineSnapshot(`
266
- {
267
- "components": {
268
- "test": {
269
- "apis": {},
270
- "attributes": {},
271
- "formulas": {},
272
- "name": "test",
273
- "nodes": {
274
- "root": {
275
- "attrs": {},
276
- "children": [
277
- "sometimesVisibleElement",
278
- ],
279
- "classes": {},
280
- "events": {},
281
- "style": {},
282
- "tag": "div",
283
- "type": "element",
284
- },
285
- "sometimesVisibleElement": {
286
- "attrs": {},
287
- "children": [],
288
- "classes": {},
289
- "condition": {
290
- "path": [
291
- "Variables",
292
- "maybe",
293
- ],
294
- "type": "path",
295
- },
296
- "events": {},
297
- "style": {},
298
- "tag": "div",
299
- "type": "element",
271
+ expect(fixedFiles).toEqual({
272
+ components: {
273
+ test: {
274
+ apis: {},
275
+ attributes: {},
276
+ formulas: {},
277
+ name: 'test',
278
+ nodes: {
279
+ root: {
280
+ attrs: {},
281
+ children: ['sometimesVisibleElement'],
282
+ classes: {},
283
+ events: {},
284
+ style: {},
285
+ tag: 'div',
286
+ type: 'element',
287
+ },
288
+ sometimesVisibleElement: {
289
+ attrs: {},
290
+ children: [],
291
+ classes: {},
292
+ condition: {
293
+ path: ['Variables', 'maybe'],
294
+ type: 'path',
300
295
  },
296
+ events: {},
297
+ style: {},
298
+ tag: 'div',
299
+ type: 'element',
301
300
  },
302
- "variables": {},
303
301
  },
302
+ variables: {},
304
303
  },
305
- }
306
- `)
304
+ },
305
+ })
306
+
307
+ // Also ensure that the original files are not mutated
308
+ expect(files).toEqual(filesClone)
307
309
  })
308
310
  })
@@ -11,18 +11,25 @@ export const noStaticNodeCondition: Rule<{
11
11
  code: 'no-static-node-condition',
12
12
  level: 'warning',
13
13
  category: 'Quality',
14
- visit: (report, { path: nodePath, value, nodeType }) => {
15
- if (nodeType !== 'component-node' || !value.condition) {
14
+ visit: (report, { path, value, nodeType }) => {
15
+ if (
16
+ nodeType !== 'formula' ||
17
+ !(
18
+ path.length === 5 &&
19
+ path[0] === 'components' &&
20
+ path[2] === 'nodes' &&
21
+ path[4] === 'condition'
22
+ )
23
+ ) {
16
24
  return
17
25
  }
18
26
 
19
- const { isStatic, result } = contextlessEvaluateFormula(value.condition)
27
+ const { isStatic, result } = contextlessEvaluateFormula(value)
20
28
  if (isStatic) {
21
- const conditionPath = [...nodePath, 'condition']
22
29
  // - if truthy: "Condition is always true, you can safely remove the condition as it will always be rendered."
23
30
  // - if falsy: "Condition is always false, you can safely remove the entire node as it will never be rendered."
24
31
  report(
25
- conditionPath,
32
+ path,
26
33
  {
27
34
  result,
28
35
  },
package/src/types.d.ts CHANGED
@@ -26,6 +26,7 @@ import type { LegacyActionRuleFix } from './rules/actions/legacyActionRule'
26
26
  import type { NoReferenceProjectActionRuleFix } from './rules/actions/noReferenceProjectActionRule'
27
27
  import type { NoReferenceApiRuleFix } from './rules/apis/noReferenceApiRule'
28
28
  import type { NoReferenceApiServiceRuleFix } from './rules/apis/noReferenceApiServiceRule'
29
+ import type { UnknownApiServiceRuleFix } from './rules/apis/unknownApiServiceRule'
29
30
  import type { NoReferenceAttributeRuleFix } from './rules/attributes/noReferenceAttributeRule'
30
31
  import type { UnknownComponentAttributeRuleFix } from './rules/attributes/unknownComponentAttributeRule'
31
32
  import type { NoReferenceComponentRuleFix } from './rules/components/noReferenceComponentRule'
@@ -78,6 +79,7 @@ type Code =
78
79
  | 'image without dimension'
79
80
  | 'unknown api input'
80
81
  | 'unknown api'
82
+ | 'unknown api service'
81
83
  | 'unknown attribute'
82
84
  | 'unknown classname'
83
85
  | 'unknown component attribute'
@@ -366,6 +368,7 @@ type FixType =
366
368
  | NoStaticNodeConditionRuleFix
367
369
  | NoPostNavigateActionRuleFix
368
370
  | UnknownComponentAttributeRuleFix
371
+ | UnknownApiServiceRuleFix
369
372
 
370
373
  export interface Rule<T = unknown, V = NodeType> {
371
374
  category: Category
@@ -9,13 +9,9 @@ export const removeFromPathFix: FixFunction<NodeType> = ({ path, files }) =>
9
9
  * Same as removeFromPathFix, but also cleans up any references to the removed node.
10
10
  */
11
11
  export const removeNodeFromPathFix: FixFunction<NodeType> = (data) => {
12
- if (data.nodeType !== 'component-node') {
13
- throw new Error('removeNodeFromPathFix can only be used on component nodes')
14
- }
15
-
16
- const componentNodesPath = data.path.map(String)
17
- const nodeId = componentNodesPath.pop()!
18
- const nodes = { ...get(data.files, componentNodesPath) } as Record<
12
+ const nodeId = String(data.path[data.path.length - 1])
13
+ const componentNodesPath = data.path.slice(0, -1).map(String)
14
+ const nodes = structuredClone(get(data.files, componentNodesPath)) as Record<
19
15
  string,
20
16
  NodeModel
21
17
  >