fix(core): update

This commit is contained in:
2023-07-25 18:14:51 +02:00
parent e0a9e9702a
commit afa511550d
17 changed files with 1736 additions and 14631 deletions

View File

@@ -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
*/