@@ -42,11 +42,10 @@ const apiKeySettingsPromise = sdkPromise.then(async ({ setupSdk }) => {
42
42
return result . data
43
43
} )
44
44
45
- /** @type {Promise<{ id: string, issueRules: import('../utils/settings.js').IssueRules }[]> } */
45
+ /** @type {Promise<{ defaultRules: import('../utils/settings.js').IssueRules, orgRules: { id: string, issueRules: import('../utils/settings.js').IssueRules }[] } > } */
46
46
const orgSettingsPromise = settingsPromise . then ( async ( { getSetting, updateSetting } ) => {
47
- const enforcedOrg = getSetting ( 'enforcedOrg ' )
47
+ const enforcedOrgs = getSetting ( 'enforcedOrgs ' )
48
48
const settings = await apiKeySettingsPromise
49
- const enforcedRules = enforcedOrg && settings . organizations [ enforcedOrg ] || { }
50
49
51
50
/**
52
51
* @param {import('../utils/settings.js').IssueRules[string] } rule
@@ -62,29 +61,54 @@ const orgSettingsPromise = settingsPromise.then(async ({ getSetting, updateSetti
62
61
}
63
62
}
64
63
65
- return Object . values ( settings . organizations ) . map ( ( { id, issueRules } ) => {
66
- const defaultedRules = { ...issueRules }
67
- for ( const rule in enforcedRules ) {
64
+ /**
65
+ *
66
+ * @param {import('../utils/settings.js').IssueRules } a
67
+ * @param {import('../utils/settings.js').IssueRules } b
68
+ * @returns {import('../utils/settings.js').IssueRules }
69
+ */
70
+ const mergeRules = ( a , b ) => {
71
+ const merged = { ...a }
72
+ for ( const rule in b ) {
68
73
if (
69
- ! defaultedRules [ rule ] ||
70
- ruleStrength ( enforcedRules [ rule ] ) > ruleStrength ( defaultedRules [ rule ] )
74
+ ! merged [ rule ] ||
75
+ ruleStrength ( b [ rule ] ) > ruleStrength ( merged [ rule ] )
71
76
) {
72
- defaultedRules [ rule ] = enforcedRules [ rule ]
77
+ merged [ rule ] = b [ rule ]
73
78
}
74
79
}
80
+ return merged
81
+ }
82
+
83
+ const mergeDefaults = ( rules ) => {
84
+ const out = { ...rules }
75
85
for ( const rule in settings . defaultIssueRules ) {
76
- if ( ! ( rule in defaultedRules ) || (
77
- typeof defaultedRules [ rule ] === 'object' &&
78
- defaultedRules [ rule ] . action === 'defer'
86
+ const defaultedRule = out [ rule ]
87
+ if (
88
+ ! ( rule in out ) || (
89
+ typeof defaultedRule === 'object' &&
90
+ defaultedRule . action === 'defer'
79
91
) ) {
80
- defaultedRules [ rule ] = settings . defaultIssueRules [ rule ]
92
+ out [ rule ] = settings . defaultIssueRules [ rule ]
81
93
}
82
94
}
83
- return {
84
- id,
85
- issueRules : defaultedRules
86
- }
87
- } )
95
+ return out
96
+ }
97
+
98
+ const enforcedRules = enforcedOrgs
99
+ . map ( org => settings . organizations [ org ] )
100
+ . reduce ( ( a , b ) => mergeRules ( a , b ) )
101
+
102
+ return {
103
+ defaultRules : mergeDefaults ( enforcedRules ) ,
104
+ orgRules : Object . values ( settings . organizations ) . map ( ( { id, name, issueRules } ) => {
105
+ return {
106
+ id,
107
+ name,
108
+ issueRules : mergeDefaults ( mergeRules ( issueRules , enforcedRules ) )
109
+ }
110
+ } )
111
+ }
88
112
} )
89
113
90
114
// shadow `npm` and `npx` to mitigate subshells
@@ -467,13 +491,13 @@ async function packagesHaveRiskyIssues (registry, pkgs, ora = null, input, outpu
467
491
}
468
492
}
469
493
if ( failures . length || warns . length ) {
470
- failed = failures . length > 0
494
+ failed || = failures . length > 0
471
495
spinner ?. stop ( )
472
496
translations ??= JSON . parse ( fs . readFileSync ( path . join ( __dirname , '/translations.json' ) , 'utf-8' ) )
473
497
formatter ??= new ( ( await chalkMarkdownPromise ) . ChalkOrMarkdown ) ( false )
474
498
const name = pkgData . pkg
475
499
const version = pkgData . ver
476
- output . write ( `(socket) ${ formatter . hyperlink ( `${ name } @${ version } ` , `https://socket.dev/npm/package/${ name } /overview/${ version } ` ) } contains ${ failures . length ? 'serious ' : '' } risks:\n` )
500
+ output . write ( `(socket) ${ formatter . hyperlink ( `${ name } @${ version } ` , `https://socket.dev/npm/package/${ name } /overview/${ version } ` ) } contains risks:\n` )
477
501
if ( translations ) {
478
502
for ( const failure of failures ) {
479
503
// @ts -ignore
0 commit comments