Skip to content

Commit

Permalink
refactor: optimize module solutions (#132)
Browse files Browse the repository at this point in the history
  • Loading branch information
Lampese authored Aug 20, 2023
1 parent 45ba52e commit 8e6cd73
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 63 deletions.
67 changes: 32 additions & 35 deletions src/handlers/manifest.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ import IO from '../base/io.js';
import { existsSync } from 'fs';
import { v4 as uuid } from 'uuid';
import InfoHandler from './information.js';
import { DATA } from '../base/constants.js';
import DelayHanlderWithInfo from './delayInfo.js';

class ManifestClass extends DelayHanlderWithInfo {
Expand Down Expand Up @@ -95,56 +94,54 @@ class ManifestClass extends DelayHanlderWithInfo {
.map((v) => v.module_name);
}

findDependeceIdx(packageName) {
for (const idx in this.behContext.dependencies) {
if (!this.behContext.dependencies[idx].module_name) continue;
if (this.behContext.dependencies[idx].module_name === packageName) {
return idx;
}
}
}

switchVersion(packageName, version) {
const idx = this.findDependeceIdx(packageName);
this.behContext.dependencies[idx].version = version;
}

deleteDependence(packageName) {
const idx = this.findDependeceIdx(packageName);
this.behContext.dependencies.splice(idx, 1);
}

addDependence(packageName, version) {
this.behContext.dependencies.push({
module_name: packageName,
version: version
});
}

async addDependencies(deps) {
await this.check();
const nowDeps = await this.getDependencies();

for (const packageName in deps) {
const current = deps[packageName];
if (current.isData) continue;
if (nowDeps.includes(packageName)) {
for (const idx in this.behContext.dependencies) {
if (!this.behContext.dependencies[idx].module_name)
continue;
if (
this.behContext.dependencies[idx].module_name ===
packageName
) {
this.behContext.dependencies[idx].version = current.api;
}
}
this.switchVersion(packageName, current.api);
} else {
this.behContext.dependencies.push({
module_name: packageName,
version: current.api
});
this.addDependence(packageName, current.api);
}
}
}

async resolveDependencies(deps) {
await this.check();

const addList = [],
delList = [];

for (const packageName in deps) {
if (deps[packageName].type === 'add') addList.push(packageName);
else delList.push(packageName);
}

const dependencies = this.behContext.dependencies.filter(
(v) => !v.module_name || !delList.includes(v.module_name)
);

for (const packageName of addList) {
dependencies.push({
module_name: packageName,
version: deps[packageName].api
});
const current = deps[packageName];
if (current.type === 'add')
this.addDependence(packageName, current.api);
else this.deleteDependence(packageName);
}

this.behContext.dependencies = dependencies;
}

async write() {
Expand Down
44 changes: 16 additions & 28 deletions src/handlers/versions.js
Original file line number Diff line number Diff line change
Expand Up @@ -53,23 +53,7 @@ class Versions extends DelayHanlderWithInfo {
}

if (addList.length) {
start('Getting version information...');
this.versions = {};
for (const packageName of addList) {
if (DATA.includes(packageName))
this.versions[packageName] =
await NetWork.getNpmPackageVersions(
packageName,
true
);
else
this.versions[packageName] =
await NetWork.getNpmPackageVersions(
packageName,
false
);
}
done('Getting version information.');
await this.getNpmVersions(addList);

for (const packageName of addList) {
if (DATA.includes(packageName))
Expand Down Expand Up @@ -98,17 +82,7 @@ class Versions extends DelayHanlderWithInfo {
}
]);

start('Getting version information...');
this.versions = {};
for (const packageName of deps) {
if (DATA.includes(packageName))
this.versions[packageName] =
await NetWork.getNpmPackageVersions(packageName, true);
else
this.versions[packageName] =
await NetWork.getNpmPackageVersions(packageName, false);
}
done('Getting version information.');
await this.getNpmVersions(deps);

this.packageVersions = {};
for (const packageName of deps) {
Expand Down Expand Up @@ -160,6 +134,20 @@ class Versions extends DelayHanlderWithInfo {
}
}

async getNpmVersions(packageList) {
start('Getting version information...');
this.versions = {};
for (const packageName of packageList) {
if (DATA.includes(packageName))
this.versions[packageName] =
await NetWork.getNpmPackageVersions(packageName, true);
else
this.versions[packageName] =
await NetWork.getNpmPackageVersions(packageName, false);
}
done('Getting version information.');
}

async getPackageVersions(packages, defaultOption = []) {
this.packageList = packages;
this.defaultOption = defaultOption;
Expand Down

0 comments on commit 8e6cd73

Please sign in to comment.