Skip to content

Commit

Permalink
Update utils directory
Browse files Browse the repository at this point in the history
  • Loading branch information
gantunesr committed Dec 15, 2022
1 parent 0a017ec commit aee140f
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 33 deletions.
34 changes: 34 additions & 0 deletions app/util/snaps/checkSnapsBlockList.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import { satisfies as satisfiesSemver } from 'semver';

/**
* Checks if provided snaps are on the block list.
*
* @param snapsToCheck - An object containing snap ids and other information.
* @param blocklist - An object containing snap ids, version or shasum of the blocked snaps.
* @returns An object structure containing snaps block information.
*/
const checkSnapsBlockList = async (snapsToCheck, blocklist) =>
Object.entries(snapsToCheck).reduce((acc, [snapId, snapInfo]) => {
const blockInfo = blocklist.find(
(blocked) =>
(blocked.id === snapId &&
satisfiesSemver(snapInfo.version, blocked.versionRange, {
includePrerelease: true,
})) ||
// Check for null/undefined for a case in which SnapController did not return
// a valid message. This will avoid blocking all snaps in the given case.
// Avoid having (undefined === undefined).
(blocked.shasum ? blocked.shasum === snapInfo.shasum : false),
);

acc[snapId] = blockInfo
? {
blocked: true,
reason: blockInfo.reason,
infoUrl: blockInfo.infoUrl,
}
: { blocked: false };
return acc;
}, {});

export default checkSnapsBlockList;
36 changes: 3 additions & 33 deletions app/util/snaps/index.js
Original file line number Diff line number Diff line change
@@ -1,35 +1,5 @@
import { satisfies as satisfiesSemver } from 'semver';
import { SNAP_BLOCKLIST } from './snap-blocklist';
import checkSnapsBlockList from './checkSnapsBlockList';
import { fetchNPMPackage } from './fetchNPMPackage';

/**
* Checks if provided snaps are on the block list.
*
* @param snapsToCheck - An object containing snap ids and other information.
* @param blocklist - An object containing snap ids, version or shasum of the blocked snaps.
* @returns An object structure containing snaps block information.
*/
const checkSnapsBlockList = async (snapsToCheck, blocklist) =>
Object.entries(snapsToCheck).reduce((acc, [snapId, snapInfo]) => {
const blockInfo = blocklist.find(
(blocked) =>
(blocked.id === snapId &&
satisfiesSemver(snapInfo.version, blocked.versionRange, {
includePrerelease: true,
})) ||
// Check for null/undefined for a case in which SnapController did not return
// a valid message. This will avoid blocking all snaps in the given case.
// Avoid having (undefined === undefined).
(blocked.shasum ? blocked.shasum === snapInfo.shasum : false),
);

acc[snapId] = blockInfo
? {
blocked: true,
reason: blockInfo.reason,
infoUrl: blockInfo.infoUrl,
}
: { blocked: false };
return acc;
}, {});

export { checkSnapsBlockList, SNAP_BLOCKLIST };
export { checkSnapsBlockList, SNAP_BLOCKLIST, fetchNPMPackage };

0 comments on commit aee140f

Please sign in to comment.