🚀 Socket Launch Week Day 5:Introducing Repository Access Permissions and Custom Roles.Learn more
Sign In

@nodevu/ranges

Package Overview
Dependencies
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@nodevu/ranges - npm Package Compare versions

Comparing version
0.1.0
to
0.2.0
+234
-162
index.js

@@ -1,3 +0,3 @@

const nodevu = require('@nodevu/core')
const aliases = require('@nodevu/aliases')
const nodevu = require('@nodevu/core');
const aliases = require('@nodevu/aliases');

@@ -8,49 +8,49 @@ // building out the model of what we want to see. not totally necessary,

const defaultRangesObject = {
all: {
versions: [],
newestLts: undefined,
newestSecurity: undefined,
newest: undefined,
oldest: undefined
},
current: {
versions: [],
oldestSecurity: undefined,
newestSecurity: undefined,
newest: undefined,
oldest: undefined
},
'lts/latest': {
versions: [],
oldestLts: undefined,
oldestSecurity: undefined,
newestLts: undefined,
newestSecurity: undefined,
newest: undefined,
oldest: undefined
},
'lts/active': {
versions: [],
oldestLts: undefined,
oldestSecurity: undefined,
newestLts: undefined,
newestSecurity: undefined,
newest: undefined,
oldest: undefined
},
'lts/maintenance': {
versions: [],
oldestLts: undefined,
oldestSecurity: undefined,
newestLts: undefined,
newestSecurity: undefined,
newest: undefined,
oldest: undefined
},
eol: {
versions: [],
newest: undefined,
oldest: undefined
}
}
all: {
versions: [],
newestLts: undefined,
newestSecurity: undefined,
newest: undefined,
oldest: undefined,
},
current: {
versions: [],
oldestSecurity: undefined,
newestSecurity: undefined,
newest: undefined,
oldest: undefined,
},
'lts/latest': {
versions: [],
oldestLts: undefined,
oldestSecurity: undefined,
newestLts: undefined,
newestSecurity: undefined,
newest: undefined,
oldest: undefined,
},
'lts/active': {
versions: [],
oldestLts: undefined,
oldestSecurity: undefined,
newestLts: undefined,
newestSecurity: undefined,
newest: undefined,
oldest: undefined,
},
'lts/maintenance': {
versions: [],
oldestLts: undefined,
oldestSecurity: undefined,
newestLts: undefined,
newestSecurity: undefined,
newest: undefined,
oldest: undefined,
},
eol: {
versions: [],
newest: undefined,
oldest: undefined,
},
};

@@ -66,135 +66,207 @@ // describing this early so it doesn't need to be commented everywhere:

async function generateRanges (filter) {
if (typeof filter === 'string') {
// check to make sure that the filter is valid. if it's not, yeet.
if (!aliases.includes(filter)) {
throw new Error(`Unknown value passed as a filter. The passed value: '${filter}'.`)
}
} else if (Array.isArray(filter) === true) {
// check to make sure that the filter is valid. if it's not, yeet.
if (!filter.every(alias => aliases.includes(alias))) {
throw new Error(`At least one of the values passed as a filter is unknown. The passed value(s): '${filter.join('\', \'')}'`)
}
} else if (filter) {
throw new Error(`Unknown value passed as a filter. The passed value: '${filter}', with a type of '${typeof filter}'. Make sure you are passing a string (or an Array of strings) with valid value(s).`)
} else {
filter = 'all'
}
async function generateRanges(filter) {
let localFilter = filter;
if (typeof localFilter === 'string') {
// check to make sure that the filter is valid. if it's not, yeet.
if (!aliases.includes(localFilter)) {
throw new Error(
`Unknown value passed as a filter. The passed value: '${localFilter}'.`,
);
}
} else if (Array.isArray(localFilter) === true) {
// check to make sure that the filter is valid. if it's not, yeet.
if (!localFilter.every((alias) => aliases.includes(alias))) {
throw new Error(
`At least one of the values passed as a filter is unknown. The passed value(s): '${localFilter.join(
"', '",
)}'`,
);
}
} else if (localFilter) {
throw new Error(
`Unknown value passed as a filter. The passed value: '${localFilter}', with a type of '${typeof localFilter}'. Make sure you are passing a string (or an Array of strings) with valid value(s).`,
);
} else {
localFilter = 'all';
}
// set up the data from @nodevu/core
// set up the data from @nodevu/core
const data = await nodevu()
const data = await nodevu();
// deep clone the default object so we don't modify it.
//
// modifying the default object has some super wonky side effects
// on subsequent calls to this function that we don't want.
const ranges = JSON.parse(JSON.stringify(defaultRangesObject))
// deep clone the default object so we don't modify it.
//
// modifying the default object has some super wonky side effects
// on subsequent calls to this function that we don't want.
const ranges = JSON.parse(JSON.stringify(defaultRangesObject));
for (const line in data) {
for (const key in data[line].releases) {
// define `all` data
if (filter === 'all' || filter.includes('all')) {
ranges.all.versions.push(key) // put every release into the all array
for (const line in data) {
for (const key in data[line].releases) {
// define `all` data
if (localFilter === 'all' || localFilter.includes('all')) {
ranges.all.versions.push(key); // put every release into the all array
if (data[line].releases[key].lts.isLts === true && ranges.all.newestLts === undefined) {
ranges.all.newestLts = `${key}` // if there's no entries yet and this iteration is an LTS release, push it into the array
}
if (
data[line].releases[key].lts.isLts === true &&
ranges.all.newestLts === undefined
) {
ranges.all.newestLts = `${key}`; // if there's no entries yet and this iteration is an LTS release, push it into the array
}
if (data[line].releases[key].security.isSecurity === true && ranges.all.newestSecurity === undefined) {
ranges.all.newestSecurity = `${key}` // if there's no entries yet and this iteration is an LTS release, push it into the array
}
}
if (
data[line].releases[key].security.isSecurity === true &&
ranges.all.newestSecurity === undefined
) {
ranges.all.newestSecurity = `${key}`; // if there's no entries yet and this iteration is an LTS release, push it into the array
}
}
// define 'current' data
if (filter === 'current' || filter === 'all' || filter.includes('current') || filter.includes('all')) {
if (data[line].support?.phases.current === 'start') {
ranges.current.versions.push(key) // add current iteration to the versions array if the phase is `start` which means it'll be current.
// define 'current' data
if (
localFilter === 'current' ||
localFilter === 'all' ||
localFilter.includes('current') ||
localFilter.includes('all')
) {
if (data[line].support?.phases.current === 'start') {
ranges.current.versions.push(key); // add current iteration to the versions array if the phase is `start` which means it'll be current.
if (ranges.current.oldestSecurity === undefined && ranges.current.newestSecurity === undefined) {
ranges.current.oldestSecurity = `${data[line].security.oldest}`
ranges.current.newestSecurity = `${data[line].security.newest}`
}
}
}
if (
ranges.current.oldestSecurity === undefined &&
ranges.current.newestSecurity === undefined
) {
ranges.current.oldestSecurity = `${data[line].security.oldest}`;
ranges.current.newestSecurity = `${data[line].security.newest}`;
}
}
}
// define 'lts/latest' data
if (filter === 'lts/latest' || filter === 'lts/active' || filter === 'all' || filter.includes('lts/latest') || filter.includes('lts/active') || filter.includes('all')) {
if (data[line].support?.phases.current === 'lts' && data[line].releases[key].lts.isLts) {
// TODO: do we want to include all versions in the release line, even prior to it being minted LTS?
ranges['lts/latest'].versions.push(key)
// define 'lts/latest' data
if (
localFilter === 'lts/latest' ||
localFilter === 'lts/active' ||
localFilter === 'all' ||
localFilter.includes('lts/latest') ||
localFilter.includes('lts/active') ||
localFilter.includes('all')
) {
if (
data[line].support?.phases.current === 'lts' &&
data[line].releases[key].lts.isLts
) {
// TODO: do we want to include all versions in the release line, even prior to it being minted LTS?
ranges['lts/latest'].versions.push(key);
if (ranges['lts/latest'].oldestSecurity === undefined) { // only checking if this one is undefined, since everything else _should_ be undefined if this one is. saves some processing power.
ranges['lts/latest'].oldestSecurity = `${data[line].security.oldest}`
ranges['lts/latest'].newestSecurity = `${data[line].security.newest}`
ranges['lts/latest'].oldestLts = `${data[line].support.lts.oldest}`
ranges['lts/latest'].newestLts = `${data[line].support.lts.newest}`
}
}
}
if (ranges['lts/latest'].oldestSecurity === undefined) {
// only checking if this one is undefined, since everything else _should_ be undefined if this one is. saves some processing power.
ranges['lts/latest'].oldestSecurity =
`${data[line].security.oldest}`;
ranges['lts/latest'].newestSecurity =
`${data[line].security.newest}`;
ranges['lts/latest'].oldestLts = `${data[line].support.lts.oldest}`;
ranges['lts/latest'].newestLts = `${data[line].support.lts.newest}`;
}
}
}
// define 'lts/maintenance' data
if (filter === 'lts/maintenance' || filter === 'lts/active' || filter === 'all' || filter.includes('lts/maintenance') || filter.includes('lts/active') || filter.includes('all')) {
if (data[line].support?.phases.current === 'maintenance' && data[line].releases[key].lts.isLts) {
ranges['lts/maintenance'].versions.push(key)
// define 'lts/maintenance' data
if (
localFilter === 'lts/maintenance' ||
localFilter === 'lts/active' ||
localFilter === 'all' ||
localFilter.includes('lts/maintenance') ||
localFilter.includes('lts/active') ||
localFilter.includes('all')
) {
if (
data[line].support?.phases.current === 'maintenance' &&
data[line].releases[key].lts.isLts
) {
ranges['lts/maintenance'].versions.push(key);
if (ranges['lts/maintenance'].newestSecurity === undefined && ranges['lts/maintenance'].newestLts === undefined) {
ranges['lts/maintenance'].newestSecurity = `${data[line].security.newest}`
ranges['lts/maintenance'].newestLts = `${data[line].support.lts.newest}`
}
if (
ranges['lts/maintenance'].newestSecurity === undefined &&
ranges['lts/maintenance'].newestLts === undefined
) {
ranges['lts/maintenance'].newestSecurity =
`${data[line].security.newest}`;
ranges['lts/maintenance'].newestLts =
`${data[line].support.lts.newest}`;
}
if (ranges['lts/maintenance'].oldestSecurity !== `${data[line].security.oldest}` || ranges['lts/maintenance'].oldestLts !== `${data[line].support.lts.oldest}`) {
ranges['lts/maintenance'].oldestSecurity = `${data[line].security.oldest}`
ranges['lts/maintenance'].oldestLts = `${data[line].support.lts.oldest}`
}
}
}
// define 'eol' data
if (filter === 'eol' || filter === 'all' || filter.includes('eol') || filter.includes('all')) {
if (data[line].support?.phases.current === 'end') {
ranges.eol.versions.push(key)
}
}
}
}
if (
ranges['lts/maintenance'].oldestSecurity !==
`${data[line].security.oldest}` ||
ranges['lts/maintenance'].oldestLts !==
`${data[line].support.lts.oldest}`
) {
ranges['lts/maintenance'].oldestSecurity =
`${data[line].security.oldest}`;
ranges['lts/maintenance'].oldestLts =
`${data[line].support.lts.oldest}`;
}
}
}
// define 'eol' data
if (
localFilter === 'eol' ||
localFilter === 'all' ||
localFilter.includes('eol') ||
localFilter.includes('all')
) {
if (data[line].support?.phases.current === 'end') {
ranges.eol.versions.push(key);
}
}
}
}
// define lts/active data
//
// doesn't need to be in the loops, since it's basically just a union
// of lts/latest and lts/maintenance
if (filter === 'lts/active' || filter === 'all' || filter.includes('lts/active') || filter.includes('all')) {
ranges['lts/active'].versions = ranges['lts/latest'].versions.concat(ranges['lts/maintenance'].versions)
ranges['lts/active'].oldestLts = ranges['lts/maintenance'].oldestLts // the maintenance LTS is the older LTS
ranges['lts/active'].newestLts = ranges['lts/latest'].newestLts // the latest LTS is the newer LTS
ranges['lts/active'].oldestSecurity = ranges['lts/maintenance'].oldestSecurity // the maintenance security is the older security
ranges['lts/active'].newestSecurity = ranges['lts/latest'].newestSecurity // the latest security is the newer security
}
// define lts/active data
//
// doesn't need to be in the loops, since it's basically just a union
// of lts/latest and lts/maintenance
if (
localFilter === 'lts/active' ||
localFilter === 'all' ||
localFilter.includes('lts/active') ||
localFilter.includes('all')
) {
ranges['lts/active'].versions = ranges['lts/latest'].versions.concat(
ranges['lts/maintenance'].versions,
);
ranges['lts/active'].oldestLts = ranges['lts/maintenance'].oldestLts; // the maintenance LTS is the older LTS
ranges['lts/active'].newestLts = ranges['lts/latest'].newestLts; // the latest LTS is the newer LTS
ranges['lts/active'].oldestSecurity =
ranges['lts/maintenance'].oldestSecurity; // the maintenance security is the older security
ranges['lts/active'].newestSecurity = ranges['lts/latest'].newestSecurity; // the latest security is the newer security
}
// some quick maths for dynamically defining newest and oldest, regardless of what ranges we have.
for (const alias in ranges) {
ranges[alias].newest = ranges[alias].versions[0] // set the newest version to the first version in the array
ranges[alias].oldest = ranges[alias].versions[ranges[alias].versions.length - 1] // set the oldest version to the last version in the array
}
// some quick maths for dynamically defining newest and oldest, regardless of what ranges we have.
for (const alias in ranges) {
ranges[alias].newest = ranges[alias].versions[0]; // set the newest version to the first version in the array
ranges[alias].oldest =
ranges[alias].versions[ranges[alias].versions.length - 1]; // set the oldest version to the last version in the array
}
// delete what we don't need
for (const property in ranges) {
if (ranges[property].versions.length === 0) {
delete ranges[property]
}
}
// delete what we don't need
for (const property in ranges) {
if (ranges[property].versions.length === 0) {
delete ranges[property];
}
}
// make sure we remove any unrequested remnants from lts/active construction
if (Array.isArray(filter) && filter.includes('lts/active')) {
if (!filter.includes('lts/latest')) {
delete ranges['lts/latest']
}
// make sure we remove any unrequested remnants from lts/active construction
if (Array.isArray(localFilter) && localFilter.includes('lts/active')) {
if (!localFilter.includes('lts/latest')) {
ranges['lts/latest'] = undefined;
}
if (!filter.includes('lts/maintenance')) {
delete ranges['lts/maintenance']
}
}
if (!localFilter.includes('lts/maintenance')) {
ranges['lts/maintenance'] = undefined;
}
}
return ranges
return ranges;
}
module.exports = generateRanges
module.exports = generateRanges;
{
"name": "@nodevu/ranges",
"version": "0.1.0",
"description": "support node's unofficial alias namespace",
"main": "index.js",
"files": [
"index.js",
"LICENSE"
],
"scripts": {
"lint": "standard --env mocha",
"lint:fix": "standard --fix --env mocha",
"test": "node--test",
"coverage": "nyc node--test",
"updates:check": "npx npm-check-updates",
"updates:update": "npx npm-check-updates -u"
},
"repository": {
"type": "git",
"url": "git+https://github.com/cutenode/nodevu.git"
},
"author": "Tierney Cyren <hello@bnb.im> (https://bnb.im/)",
"license": "MIT",
"bugs": {
"url": "https://github.com/cutenode/nodevu/issues"
},
"homepage": "https://github.com/cutenode/nodevu#readme",
"dependencies": {
"@nodevu/core": "^0.0.4",
"@nodevu/aliases": "^0.0.2"
},
"devDependencies": {
"nyc": "^15.1.0",
"standard": "^17.0.0",
"test": "^3.3.0"
}
"name": "@nodevu/ranges",
"version": "0.2.0",
"description": "support node's unofficial alias namespace",
"main": "index.js",
"files": ["index.js", "LICENSE"],
"scripts": {
"lint": "biome check ./",
"lint:write": "biome check ./ --write",
"test": "node --test",
"coverage": "c8 node --test",
"updates:check": "npx npm-check-updates",
"updates:update": "npx npm-check-updates -u"
},
"repository": {
"type": "git",
"url": "git+https://github.com/cutenode/nodevu.git"
},
"author": "Tierney Cyren <hello@bnb.im> (https://bnb.im/)",
"license": "MIT",
"bugs": {
"url": "https://github.com/cutenode/nodevu/issues"
},
"homepage": "https://github.com/cutenode/nodevu#readme",
"dependencies": {
"@nodevu/aliases": "^0.0.2",
"@nodevu/core": "^0.3.0"
},
"devDependencies": {
"@biomejs/biome": "1.9.4",
"c8": "^10.1.2"
}
}