Skip to content

Commit 573db84

Browse files
jodaroveKevin Venkiteswaran
andauthored
feat(base-config): add no-unknown-wire-adapters and no-unexpected-wire-adapter-usages (#30)
* feat(base-config): add @lwc/lwc/no-unknown-wire-adapters and @lwc/lwc/no-unexpected-wire-adapter-usages * Update base.js Co-authored-by: Kevin Venkiteswaran <kvenkiteswaran@salesforce.com> * Update base.js Co-authored-by: Kevin Venkiteswaran <kvenkiteswaran@salesforce.com> * Update base.js Co-authored-by: Kevin Venkiteswaran <kvenkiteswaran@salesforce.com> * Update base.js Co-authored-by: Kevin Venkiteswaran <kvenkiteswaran@salesforce.com> * Update base.js Co-authored-by: Kevin Venkiteswaran <kvenkiteswaran@salesforce.com> * Update base.js Co-authored-by: Kevin Venkiteswaran <kvenkiteswaran@salesforce.com> Co-authored-by: Kevin Venkiteswaran <kvenkiteswaran@salesforce.com>
1 parent ee2d841 commit 573db84

File tree

2 files changed

+110
-0
lines changed

2 files changed

+110
-0
lines changed

base.js

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,57 @@
66
*/
77
'use strict';
88

9+
const KNOWN_WIRE_ADAPTERS = [
10+
{
11+
module: 'lightning/**',
12+
identifier: '*',
13+
},
14+
// All apex, apexContinuation methods
15+
{
16+
module: '@salesforce/**',
17+
identifier: '*',
18+
},
19+
];
20+
21+
const WIRE_ADAPTERS_WITH_RESTRICTED_USE = [
22+
{
23+
module: 'lightning/messageService',
24+
identifier: 'MessageContext',
25+
},
26+
{
27+
module: 'lightning/navigation',
28+
identifier: 'CurrentPageReference',
29+
},
30+
{
31+
module: 'lightning/uiListApi',
32+
identifier: 'getListUi',
33+
},
34+
{
35+
module: 'lightning/uiObjectInfoApi',
36+
identifier: 'getObjectInfo',
37+
},
38+
{
39+
module: 'lightning/uiObjectInfoApi',
40+
identifier: 'getPicklistValues',
41+
},
42+
{
43+
module: 'lightning/uiObjectInfoApi',
44+
identifier: 'getPicklistValuesByRecordType',
45+
},
46+
{
47+
module: 'lightning/uiRecordApi',
48+
identifier: 'getRecord',
49+
},
50+
{
51+
module: 'lightning/uiRecordApi',
52+
identifier: 'getRecordCreateDefaults',
53+
},
54+
{
55+
module: 'lightning/uiRecordApi',
56+
identifier: 'getRecordUi',
57+
},
58+
];
59+
960
module.exports = {
1061
extends: [require.resolve('./lib/defaults')],
1162

@@ -19,5 +70,19 @@ module.exports = {
1970
'@lwc/lwc/valid-api': 'error',
2071
'@lwc/lwc/valid-track': 'error',
2172
'@lwc/lwc/valid-wire': 'error',
73+
74+
// LWC wire adapters validation
75+
'@lwc/lwc/no-unknown-wire-adapters': [
76+
'error',
77+
{
78+
adapters: KNOWN_WIRE_ADAPTERS,
79+
},
80+
],
81+
'@lwc/lwc/no-unexpected-wire-adapter-usages': [
82+
'error',
83+
{
84+
adapters: WIRE_ADAPTERS_WITH_RESTRICTED_USE,
85+
},
86+
],
2287
},
2388
};

test/base.js

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,49 @@ describe('base config', () => {
4040
assert.equal(messages.length, 1);
4141
assert.equal(messages[0].ruleId, '@lwc/lwc/valid-api');
4242
});
43+
44+
it('should include @lwc/lwc/no-unknown-wire-adapters rule', () => {
45+
const cli = new eslint.CLIEngine({
46+
useEslintrc: false,
47+
baseConfig: {
48+
extends: '@salesforce/eslint-config-lwc/base',
49+
},
50+
});
51+
52+
const report = cli.executeOnText(`
53+
import { wire } from 'lwc';
54+
import { Baz } from 'c/cmp';
55+
class Foo {
56+
@wire(Baz)
57+
foo;
58+
}
59+
`);
60+
61+
const { messages } = report.results[0];
62+
assert.equal(messages.length, 1);
63+
assert.equal(messages[0].ruleId, '@lwc/lwc/no-unknown-wire-adapters');
64+
});
65+
66+
it('should include @lwc/lwc/no-unexpected-wire-adapter-usages', () => {
67+
const cli = new eslint.CLIEngine({
68+
useEslintrc: false,
69+
baseConfig: {
70+
extends: '@salesforce/eslint-config-lwc/base',
71+
},
72+
});
73+
74+
const report = cli.executeOnText(`
75+
import { wire } from 'lwc';
76+
import { CurrentPageReference } from 'lightning/navigation';
77+
const reference = CurrentPageReference;
78+
class Foo {
79+
@wire(CurrentPageReference)
80+
foo;
81+
}
82+
`);
83+
84+
const { messages } = report.results[0];
85+
assert.equal(messages.length, 1);
86+
assert.equal(messages[0].ruleId, '@lwc/lwc/no-unexpected-wire-adapter-usages');
87+
});
4388
});

0 commit comments

Comments
 (0)