fix(core): update
This commit is contained in:
@@ -2,11 +2,11 @@ import * as plugins from './smartnpm.plugins.js';
|
||||
import * as paths from './smartnpm.paths.js';
|
||||
|
||||
// interfaces
|
||||
import { ISearchObject } from './smartnpm.interfaces.js';
|
||||
import { type ISearchObject } from './smartnpm.interfaces.js';
|
||||
|
||||
// classes
|
||||
import { NpmPackage } from './smartnpm.classes.npmpackage.js';
|
||||
import { ICacheDescriptor, RegistryCache } from './smartnpm.classes.registrycache.js';
|
||||
import { type ICacheDescriptor, RegistryCache } from './smartnpm.classes.registrycache.js';
|
||||
|
||||
export interface INpmRegistryConstructorOptions {
|
||||
npmRegistryUrl?: string;
|
||||
@@ -33,18 +33,24 @@ export class NpmRegistry {
|
||||
* @param packageName
|
||||
*/
|
||||
public async getPackageInfo(packageName: string): Promise<NpmPackage> {
|
||||
const fullMetadata = await plugins.packageJson(packageName, {
|
||||
const fullMetadata = await plugins
|
||||
.packageJson.default(packageName, {
|
||||
registryUrl: this.options.npmRegistryUrl,
|
||||
fullMetadata: true,
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log(err);
|
||||
return null;
|
||||
});
|
||||
const versionData = await plugins.packageJson.default(packageName, {
|
||||
registryUrl: this.options.npmRegistryUrl,
|
||||
fullMetadata: true,
|
||||
}).catch(err => {
|
||||
console.log(err);
|
||||
return null;
|
||||
allVersions: true,
|
||||
});
|
||||
const versionData = await plugins.packageJson(packageName, {
|
||||
registryUrl: this.options.npmRegistryUrl,
|
||||
allVersions: true
|
||||
});
|
||||
const npmPackage = await NpmPackage.createFromFullMetadataAndVersionData(this, fullMetadata, versionData as any);
|
||||
const npmPackage = await NpmPackage.createFromFullMetadataAndVersionData(
|
||||
this,
|
||||
fullMetadata,
|
||||
versionData as any
|
||||
);
|
||||
return npmPackage;
|
||||
}
|
||||
|
||||
@@ -62,30 +68,38 @@ export class NpmRegistry {
|
||||
/**
|
||||
* gets a file from a package as Smartfile
|
||||
*/
|
||||
public async getFileFromPackage(packageNameArg: string, filePathArg: string, optionsArg?: {
|
||||
distTag?: string;
|
||||
version?: string;
|
||||
}): Promise<plugins.smartfile.Smartfile> {
|
||||
public async getFileFromPackage(
|
||||
packageNameArg: string,
|
||||
filePathArg: string,
|
||||
optionsArg?: {
|
||||
distTag?: string;
|
||||
version?: string;
|
||||
}
|
||||
): Promise<plugins.smartfile.Smartfile> {
|
||||
// lets create a cache descriptor
|
||||
const cacheDescriptor: ICacheDescriptor = {
|
||||
registryUrl: this.options.npmRegistryUrl,
|
||||
packageName: packageNameArg,
|
||||
filePath: filePathArg,
|
||||
distTag: optionsArg?.distTag,
|
||||
version: optionsArg?.version
|
||||
version: optionsArg?.version,
|
||||
};
|
||||
|
||||
// lets see if we have something cached
|
||||
const cachedFile: plugins.smartfile.Smartfile = await this.registryCache.getCachedFile(cacheDescriptor);
|
||||
|
||||
const cachedFile: plugins.smartfile.Smartfile = await this.registryCache.getCachedFile(
|
||||
cacheDescriptor
|
||||
);
|
||||
|
||||
// lets handle both occasions
|
||||
if (!cachedFile) {
|
||||
const npmPackage = await this.getPackageInfo(packageNameArg);
|
||||
if (!optionsArg?.version && !optionsArg?.distTag) {
|
||||
const latestAvailable = npmPackage.allDistTags.find(packageArg => packageArg.name === 'latest');
|
||||
const latestAvailable = npmPackage.allDistTags.find(
|
||||
(packageArg) => packageArg.name === 'latest'
|
||||
);
|
||||
if (!latestAvailable) {
|
||||
optionsArg = {
|
||||
version: npmPackage.getBestMatchingVersion('*')
|
||||
version: npmPackage.getBestMatchingVersion('*'),
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -99,23 +113,31 @@ export class NpmRegistry {
|
||||
}
|
||||
}
|
||||
|
||||
public async getFilesFromPackage(packageNameArg: string, filePath: string, optionsArg?: {
|
||||
distTag?: string;
|
||||
version?: string;
|
||||
}): Promise<plugins.smartfile.Smartfile[]> {
|
||||
public async getFilesFromPackage(
|
||||
packageNameArg: string,
|
||||
filePath: string,
|
||||
optionsArg?: {
|
||||
distTag?: string;
|
||||
version?: string;
|
||||
}
|
||||
): Promise<plugins.smartfile.Smartfile[]> {
|
||||
const npmPackage = await this.getPackageInfo(packageNameArg);
|
||||
if (!optionsArg?.version && !optionsArg?.distTag) {
|
||||
const latestAvailable = npmPackage.allDistTags.find(packageDistTagArg => packageDistTagArg.name === 'latest');
|
||||
const latestAvailable = npmPackage.allDistTags.find(
|
||||
(packageDistTagArg) => packageDistTagArg.name === 'latest'
|
||||
);
|
||||
if (!latestAvailable) {
|
||||
optionsArg = {
|
||||
version: npmPackage.getBestMatchingVersion('*')
|
||||
version: npmPackage.getBestMatchingVersion('*'),
|
||||
};
|
||||
}
|
||||
}
|
||||
return npmPackage.getFilesFromPackage(filePath, optionsArg);
|
||||
}
|
||||
|
||||
public async getPackageAsSmartfileVirtualDir(packageNameArg: string): Promise<plugins.smartfile.VirtualDirectory> {
|
||||
public async getPackageAsSmartfileVirtualDir(
|
||||
packageNameArg: string
|
||||
): Promise<plugins.smartfile.VirtualDirectory> {
|
||||
/**
|
||||
* TODO: rewrite as memory only
|
||||
*/
|
||||
|
Reference in New Issue
Block a user