Compare commits

..

8 Commits

Author SHA1 Message Date
af0d95f327 1.0.29 2021-05-05 10:54:32 +00:00
d0ac8f1418 fix(core): update 2021-05-05 10:54:31 +00:00
62f8106fc6 1.0.28 2021-04-29 21:20:19 +00:00
e87b8c994b fix(core): update 2021-04-29 21:20:18 +00:00
694ba7be25 1.0.27 2021-04-29 20:44:47 +00:00
952399c26e fix(core): update 2021-04-29 20:44:47 +00:00
ab1e83b8bf 1.0.26 2021-04-29 17:02:40 +00:00
67980f9f41 fix(core): update 2021-04-29 17:02:39 +00:00
5 changed files with 3079 additions and 2220 deletions

5226
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{
"name": "@pushrocks/smartnpm",
"version": "1.0.25",
"version": "1.0.29",
"private": false,
"description": "interface with npm to retrieve package information",
"main": "dist_ts/index.js",
@ -14,9 +14,9 @@
"devDependencies": {
"@gitzone/tsbuild": "^2.1.25",
"@gitzone/tsrun": "^1.2.12",
"@gitzone/tstest": "^1.0.52",
"@gitzone/tstest": "^1.0.54",
"@pushrocks/tapbundle": "^3.2.14",
"@types/node": "^14.14.41",
"@types/node": "^15.0.1",
"tslint": "^6.1.3",
"tslint-config-prettier": "^1.18.0"
},

View File

@ -91,21 +91,22 @@ export class NpmPackage {
public async saveToCache() {}
/**
* get file from package
* get files from package
*/
public async getFileFromPackage(
public async getFilesFromPackage(
filePath: string,
optionsArg?: {
optionsArg: {
distTag?: string;
version?: string;
}
): Promise<plugins.smartfile.Smartfile> {
const done = plugins.smartpromise.defer<plugins.smartfile.Smartfile>();
},
returnOnFirstArg = false
): Promise<plugins.smartfile.Smartfile[]> {
const done = plugins.smartpromise.defer<plugins.smartfile.Smartfile[]>();
const smartarchiveInstance = new plugins.smartarchive.SmartArchive();
let tarballUrl = this.dist.tarball;
if (optionsArg && (optionsArg.version || optionsArg.distTag)) {
let tarballUrl = this.dist?.tarball;
if (optionsArg?.version || optionsArg?.distTag) {
if (optionsArg.distTag && optionsArg.version) {
throw new Error('Please either sepcify version OR disttag, not both.');
throw new Error('Please either specify version OR disttag, not both.');
}
let targetVersion: plugins.smartversion.SmartVersion;
if (optionsArg.distTag) {
@ -116,7 +117,7 @@ export class NpmPackage {
targetVersion = new plugins.smartversion.SmartVersion(targetDistTag.targetVersion);
}
} else {
const smartversion = plugins.smartversion.SmartVersion.fromFuzzyString(optionsArg.version);
targetVersion = plugins.smartversion.SmartVersion.fromFuzzyString(optionsArg.version);
}
// lets find the best matching release
@ -131,27 +132,43 @@ export class NpmPackage {
}
const fileObservable = await smartarchiveInstance.extractArchiveFromUrlToObservable(tarballUrl);
const wantedFilePath = plugins.path.join('package', filePath);
const allMatchingFiles: plugins.smartfile.Smartfile[] = [];
const subscription = fileObservable.subscribe(
(fileArg) => {
if (fileArg.path === wantedFilePath) {
// lets care about caching
// returnOnFirstArg requires exact match
if (returnOnFirstArg && fileArg.path === wantedFilePath) {
// lets resolve with the wanted file
done.resolve(fileArg);
done.resolve([fileArg]);
subscription.unsubscribe();
} else if(fileArg.path.startsWith(wantedFilePath)) {
allMatchingFiles.push(fileArg);
}
},
(err) => {
console.log(err);
},
() => {
done.resolve(null);
done.resolve(allMatchingFiles);
subscription.unsubscribe();
}
);
return done.promise;
}
/**
* get files from package
*/
public async getFileFromPackage(
filePath: string,
optionsArg?: {
distTag?: string;
version?: string;
}
): Promise<plugins.smartfile.Smartfile> {
const result = await this.getFilesFromPackage(filePath, optionsArg, true);
return result[0];
}
/**
* updates the package with information from the registry
*/

View File

@ -36,6 +36,9 @@ export class NpmRegistry {
const fullMetadata = await plugins.packageJson(packageName, {
registryUrl: this.options.npmRegistryUrl,
fullMetadata: true,
}).catch(err => {
console.log(err);
return null;
});
const versionData = await plugins.packageJson(packageName, {
registryUrl: this.options.npmRegistryUrl,
@ -75,6 +78,13 @@ export class NpmRegistry {
}
}
public async getFilesFromPackage(packageNameArg: string, filePath: string, optionsArg: {
distTag?: string;
version?: string;
}): Promise<plugins.smartfile.Smartfile[]> {
return [];
}
public async getPackageAsSmartfileVirtualDir(packageNameArg: string): Promise<plugins.smartfile.VirtualDirectory> {
/**
* TODO: rewrite as memory only

View File

@ -22,9 +22,11 @@ export class RegistryCache {
}
public async cacheSmartFile (fileIdArg: string, smartfileArg: plugins.smartfile.Smartfile) {
await this.levelCache.storeCacheEntryByKey(fileIdArg, new plugins.levelcache.CacheEntry({
contents: Buffer.from(smartfileArg.foldToJson()),
ttl: 60000
}));
if (smartfileArg) {
await this.levelCache.storeCacheEntryByKey(fileIdArg, new plugins.levelcache.CacheEntry({
contents: Buffer.from(smartfileArg.foldToJson()),
ttl: 60000
}));
}
}
}