Skip to content

Commit 380e1e3

Browse files
authored
Merge pull request #4 from michoelchaikin/master
Add support for object member assignment return pattern to entry-points rules
2 parents be2b5c9 + aa20cd7 commit 380e1e3

File tree

2 files changed

+51
-0
lines changed

2 files changed

+51
-0
lines changed

lib/rules/entry-points.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,18 @@ module.exports = {
6161
}
6262
}
6363

64+
if (returnArgument && returnArgument.type === 'Identifier') {
65+
const returnAssignments = callbackBody.filter(n =>
66+
n.type === 'ExpressionStatement' &&
67+
n.expression.left.type === 'MemberExpression' &&
68+
n.expression.left.object.name === returnArgument.name &&
69+
scriptTypeMap[scriptType].entryPoints.includes(n.expression.left.property.name)
70+
);
71+
if (returnAssignments.length > 0) {
72+
hasValidEntryPoint = true;
73+
}
74+
}
75+
6476
if (!hasValidEntryPoint) {
6577
context.report({
6678
node: returnStatement || callback,

tests/rules/entry-points.js

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,18 @@ ruleTester.run('entry-points', rule, {
8181
' return { somethingElse: x };',
8282
'});'
8383
].join('\n')
84+
},
85+
{
86+
code: [
87+
'/**',
88+
' * @NScriptType ClientScript',
89+
' */',
90+
'define([], function() {',
91+
' var exports = {};',
92+
' exports.pageInit = x;',
93+
' return exports;',
94+
'});'
95+
].join('\n')
8496
}
8597
],
8698

@@ -137,6 +149,33 @@ ruleTester.run('entry-points', rule, {
137149
'});'
138150
].join('\n'),
139151
errors: [{ messageId: 'returnEntryPoint', data: { type: 'Restlet' }}]
152+
},
153+
{
154+
code: [
155+
'/**',
156+
' * @NScriptType ClientScript',
157+
' */',
158+
'define([], function() {',
159+
' var exports = {};',
160+
' exports.notAnEntryPoint = x;',
161+
' return exports;',
162+
'});'
163+
].join('\n'),
164+
errors: [{ messageId: 'returnEntryPoint', data: { type: 'ClientScript' }}]
165+
},
166+
{
167+
code: [
168+
'/**',
169+
' * @NScriptType ClientScript',
170+
' */',
171+
'define([], function() {',
172+
' var exports = {};',
173+
' var notTheReturnObject = {};',
174+
' notTheReturnObject.pageInit = x;',
175+
' return exports;',
176+
'});'
177+
].join('\n'),
178+
errors: [{ messageId: 'returnEntryPoint', data: { type: 'ClientScript' }}]
140179
}
141180
]
142181
});

0 commit comments

Comments
 (0)