Skip to content

Commit 7a7dfce

Browse files
committed
types
1 parent 4290d73 commit 7a7dfce

File tree

2 files changed

+33
-4
lines changed

2 files changed

+33
-4
lines changed

lib/utils/issue-rules.cjs

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@ const ERROR_UX = {
1717
//#endregion
1818
//#region utils
1919
/**
20-
* @typedef { NonNullable<NonNullable<(Awaited<ReturnType<import('@socketsecurity/sdk').SocketSdk['postSettings']>> & {success: true})['data']['entries'][number]['settings'][string]['issueRules']>>[string] | boolean } NonNormalizedIssueRule
20+
* @typedef { NonNullable<NonNullable<NonNullable<(Awaited<ReturnType<import('@socketsecurity/sdk').SocketSdk['postSettings']>> & {success: true})['data']['entries'][number]['settings'][string]>['issueRules']>>[string] | boolean } NonNormalizedIssueRule
2121
*/
2222
/**
23-
* @typedef { NonNullable<NonNullable<(Awaited<ReturnType<import('@socketsecurity/sdk').SocketSdk['postSettings']>> & {success: true})['data']['defaults']['issueRules']>[string]> | boolean } NonNormalizedResolvedIssueRule
23+
* @typedef { (NonNullable<NonNullable<(Awaited<ReturnType<import('@socketsecurity/sdk').SocketSdk['postSettings']>> & {success: true})['data']['defaults']['issueRules']>[string]> & { action: string }) | boolean } NonNormalizedResolvedIssueRule
2424
*/
2525
/**
2626
* Iterates over all entries with ordered issue rule for deferal
@@ -32,6 +32,15 @@ const ERROR_UX = {
3232
* @returns {RuleActionUX}
3333
*/
3434
function resolveIssueRuleUX (entriesOrderedIssueRules, defaultValue) {
35+
if (defaultValue === true || defaultValue == null) {
36+
defaultValue = {
37+
action: 'error'
38+
}
39+
} else if (defaultValue === false) {
40+
defaultValue = {
41+
action: 'ignore'
42+
}
43+
}
3544
let block = false
3645
let display = false
3746
let needDefault = true
@@ -145,7 +154,24 @@ module.exports = {
145154
entriesOrderedIssueRules.push(orderedIssueRules)
146155
}
147156
const defaultValue = settings.defaults.issueRules[key]
148-
ux = resolveIssueRuleUX(entriesOrderedIssueRules, defaultValue ?? { action: 'error' })
157+
/**
158+
* @type {NonNormalizedResolvedIssueRule}
159+
*/
160+
let resolvedDefaultValue = {
161+
action: 'error'
162+
}
163+
// @ts-ignore backcompat, cover with tests
164+
if (defaultValue === false) {
165+
resolvedDefaultValue = {
166+
action: 'ignore'
167+
}
168+
// @ts-ignore backcompat, cover with tests
169+
} else if (defaultValue && defaultValue !== true) {
170+
resolvedDefaultValue = {
171+
action: defaultValue.action ?? 'error'
172+
}
173+
}
174+
ux = resolveIssueRuleUX(entriesOrderedIssueRules, resolvedDefaultValue)
149175
cachedUX.set(key, ux)
150176
return ux
151177
}

test/issue-rule-ux.test.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,12 @@ describe('Issue Rule UX', () => {
3535
deferTo: 'repository',
3636
issueRules: {
3737
fromDeferString: { action: 'defer' },
38-
frumUndefinedAction: { }
38+
// @ts-ignore paranoia
39+
fromUndefinedAction: { }
3940
}
4041
},
4142
repository: {
43+
deferTo: null,
4244
issueRules: {
4345
fromMiddleConfig: {
4446
action: 'warn'
@@ -291,6 +293,7 @@ describe('Issue Rule UX', () => {
291293
start: 'organization',
292294
settings: {
293295
organization: {
296+
deferTo: null,
294297
issueRules: {
295298
willWarn: {
296299
action: 'ignore'

0 commit comments

Comments
 (0)