@push.rocks/smartnpm 2.0.4 → 2.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * autocreated commitinfo by @pushrocks/commitinfo
2
+ * autocreated commitinfo by @push.rocks/commitinfo
3
3
  */
4
4
  export declare const commitinfo: {
5
5
  name: string;
@@ -1,9 +1,9 @@
1
1
  /**
2
- * autocreated commitinfo by @pushrocks/commitinfo
2
+ * autocreated commitinfo by @push.rocks/commitinfo
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@push.rocks/smartnpm',
6
- version: '2.0.4',
7
- description: 'interface with npm to retrieve package information'
6
+ version: '2.0.6',
7
+ description: 'A library to interface with npm for retrieving package information and manipulation.'
8
8
  };
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxzQkFBc0I7SUFDNUIsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLG9EQUFvRDtDQUNsRSxDQUFBIn0=
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxzQkFBc0I7SUFDNUIsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLHNGQUFzRjtDQUNwRyxDQUFBIn0=
@@ -65,14 +65,14 @@ export declare class NpmPackage {
65
65
  getFilesFromPackage(filePath: string, optionsArg: {
66
66
  distTag?: string;
67
67
  version?: string;
68
- }, returnOnFirstArg?: boolean): Promise<plugins.smartfile.Smartfile[]>;
68
+ }, returnOnFirstArg?: boolean): Promise<plugins.smartfile.SmartFile[]>;
69
69
  /**
70
70
  * get files from package
71
71
  */
72
72
  getFileFromPackage(filePath: string, optionsArg?: {
73
73
  distTag?: string;
74
74
  version?: string;
75
- }): Promise<plugins.smartfile.Smartfile>;
75
+ }): Promise<plugins.smartfile.SmartFile>;
76
76
  /**
77
77
  * updates the package with information from the registry
78
78
  */
@@ -35,7 +35,8 @@ export class NpmPackage {
35
35
  */
36
36
  async saveToDisk(targetDir) {
37
37
  const smartarchiveInstance = new plugins.smartarchive.SmartArchive();
38
- await smartarchiveInstance.extractArchiveFromUrlToFs(this.dist.tarball, targetDir);
38
+ const archive = await plugins.smartarchive.SmartArchive.fromArchiveUrl(this.dist.tarball);
39
+ await archive.exportToFs(targetDir);
39
40
  }
40
41
  /**
41
42
  * saves the complete package to cache
@@ -71,25 +72,46 @@ export class NpmPackage {
71
72
  }
72
73
  tarballUrl = this.allVersions.find((packageVersion) => packageVersion.version === bestMatchingVersion).dist.tarball;
73
74
  }
74
- const fileObservable = await smartarchiveInstance.extractArchiveFromUrlToObservable(tarballUrl);
75
+ const archive = await plugins.smartarchive.SmartArchive.fromArchiveUrl(tarballUrl);
76
+ const streamOfFiles = await archive.exportToStreamOfStreamFiles();
75
77
  const wantedFilePath = plugins.path.join('package', filePath);
78
+ // Collect all stream files first
79
+ const streamFileList = [];
80
+ await new Promise((resolve, reject) => {
81
+ streamOfFiles.on('data', (streamFile) => {
82
+ streamFileList.push(streamFile);
83
+ });
84
+ streamOfFiles.on('end', resolve);
85
+ streamOfFiles.on('error', reject);
86
+ });
87
+ // Now process the collected files
76
88
  const allMatchingFiles = [];
77
- const subscription = fileObservable.subscribe((fileArg) => {
89
+ for (const fileArg of streamFileList) {
90
+ const filePath = fileArg.relativeFilePath || fileArg.path || '';
78
91
  // returnOnFirstArg requires exact match
79
- if (returnOnFirstArg && fileArg.path === wantedFilePath) {
80
- // lets resolve with the wanted file
81
- done.resolve([fileArg]);
82
- subscription.unsubscribe();
92
+ if (returnOnFirstArg && filePath === wantedFilePath) {
93
+ try {
94
+ const buffer = await fileArg.getContentAsBuffer();
95
+ const smartFile = await plugins.smartfile.SmartFile.fromBuffer(filePath, buffer);
96
+ done.resolve([smartFile]);
97
+ return done.promise;
98
+ }
99
+ catch (error) {
100
+ console.error('Error processing file:', error);
101
+ }
83
102
  }
84
- else if (!returnOnFirstArg && fileArg.path.startsWith(wantedFilePath)) {
85
- allMatchingFiles.push(fileArg);
103
+ else if (!returnOnFirstArg && filePath.startsWith(wantedFilePath)) {
104
+ try {
105
+ const buffer = await fileArg.getContentAsBuffer();
106
+ const smartFile = await plugins.smartfile.SmartFile.fromBuffer(filePath, buffer);
107
+ allMatchingFiles.push(smartFile);
108
+ }
109
+ catch (error) {
110
+ console.error('Error processing file:', error);
111
+ }
86
112
  }
87
- }, (err) => {
88
- console.log(err);
89
- }, () => {
90
- done.resolve(allMatchingFiles);
91
- subscription.unsubscribe();
92
- });
113
+ }
114
+ done.resolve(allMatchingFiles);
93
115
  return done.promise;
94
116
  }
95
117
  /**
@@ -115,4 +137,4 @@ export class NpmPackage {
115
137
  return bestMatchingVersion;
116
138
  }
117
139
  }
118
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRucG0uY2xhc3Nlcy5ucG1wYWNrYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRucG0uY2xhc3Nlcy5ucG1wYWNrYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsY0FBYyxFQUFxQixNQUFNLHNDQUFzQyxDQUFDO0FBRXpGLE1BQU0sT0FBTyxVQUFVO0lBQ2QsTUFBTSxDQUFDLEtBQUssQ0FBQyxvQ0FBb0MsQ0FDdEQsY0FBMkIsRUFDM0IsZUFBaUQsRUFDakQsZUFJQztRQUVELE1BQU0sVUFBVSxHQUFHLElBQUksVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQzNDLFVBQVUsQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQzVCLFVBQVUsQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQzVCLEtBQUssTUFBTSxVQUFVLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDOUQsTUFBTSxjQUFjLEdBQUcsY0FBYyxDQUFDLHFCQUFxQixDQUN6RCxlQUFlLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUNyQyxDQUFDO1lBQ0YsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDN0M7UUFDRCxLQUFLLE1BQU0sVUFBVSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUU7WUFDbEUsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQ3ZDLFVBQVUs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
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRucG0uY2xhc3Nlcy5ucG1wYWNrYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRucG0uY2xhc3Nlcy5ucG1wYWNrYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsY0FBYyxFQUFxQixNQUFNLHNDQUFzQyxDQUFDO0FBRXpGLE1BQU0sT0FBTyxVQUFVO0lBQ2QsTUFBTSxDQUFDLEtBQUssQ0FBQyxvQ0FBb0MsQ0FDdEQsY0FBMkIsRUFDM0IsZUFBaUQsRUFDakQsZUFJQztRQUVELE1BQU0sVUFBVSxHQUFHLElBQUksVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQzNDLFVBQVUsQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQzVCLFVBQVUsQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQzVCLEtBQUssTUFBTSxVQUFVLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUMvRCxNQUFNLGNBQWMsR0FBRyxjQUFjLENBQUMscUJBQXFCLENBQ3pELGVBQWUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQ3JDLENBQUM7WUFDRixVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsS0FBSyxNQUFNLFVBQVUsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDbkUsTUFBTSxjQUFjLEdBQUcsSUFBSSxj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
@@ -27,11 +27,11 @@ export declare class NpmRegistry {
27
27
  getFileFromPackage(packageNameArg: string, filePathArg: string, optionsArg?: {
28
28
  distTag?: string;
29
29
  version?: string;
30
- }): Promise<plugins.smartfile.Smartfile>;
30
+ }): Promise<plugins.smartfile.SmartFile>;
31
31
  getFilesFromPackage(packageNameArg: string, filePath: string, optionsArg?: {
32
32
  distTag?: string;
33
33
  version?: string;
34
- }): Promise<plugins.smartfile.Smartfile[]>;
34
+ }): Promise<plugins.smartfile.SmartFile[]>;
35
35
  getPackageAsSmartfileVirtualDir(packageNameArg: string): Promise<plugins.smartfile.VirtualDirectory>;
36
36
  /**
37
37
  * searches for a package on npm
@@ -177,8 +177,10 @@ export class NpmRegistry {
177
177
  console.log(`info: Search on npm for ${plugins.consolecolor.coloredString(searchString, 'pink')}`);
178
178
  let body;
179
179
  try {
180
- const response = await plugins.smartrequest.getJson(this.searchDomain + searchString, {});
181
- body = response.body;
180
+ const response = await plugins.smartrequest.SmartRequest.create()
181
+ .url(this.searchDomain + searchString)
182
+ .get();
183
+ body = await response.json();
182
184
  }
183
185
  catch {
184
186
  // we do nothing
@@ -196,4 +198,4 @@ export class NpmRegistry {
196
198
  return packageArray;
197
199
  }
198
200
  }
199
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRucG0uY2xhc3Nlcy5ucG1yZWdpc3RyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0bnBtLmNsYXNzZXMubnBtcmVnaXN0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSx1QkFBdUIsQ0FBQztBQUNqRCxPQUFPLEtBQUssS0FBSyxNQUFNLHFCQUFxQixDQUFDO0FBRTdDLGFBQWE7QUFDYixPQUFPLEVBQXNCLE1BQU0sMEJBQTBCLENBQUM7QUFFOUQsVUFBVTtBQUNWLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM5RCxPQUFPLEVBQXlCLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBTTNGLE1BQU0sT0FBTyxXQUFXO0lBS3RCLFlBQVksYUFBNkMsRUFBRTtRQUZuRCxpQkFBWSxHQUFHLGtDQUFrQyxDQUFDO1FBR3hELE1BQU0sY0FBYyxHQUFtQztZQUNyRCxjQUFjLEVBQUUsNEJBQTRCO1NBQzdDLENBQUM7UUFDRixJQUFJLENBQUMsT0FBTyxHQUFHO1lBQ2IsR0FBRyxjQUFjO1lBQ2pCLEdBQUcsVUFBVTtTQUNkLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7O09BR0c7SUFDSSxLQUFLLENBQUMsY0FBYyxDQUFDLFdBQW1CO1FBQzdDLE1BQU0sWUFBWSxHQUFHLE1BQU0sT0FBTzthQUMvQixXQUFXLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRTtZQUNoQyxXQUFXLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjO1lBQ3hDLFlBQVksRUFBRSxJQUFJO1NBQ25CLENBQUM7YUFDRCxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNiLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDakIsT0FBTyxJQUFJLENBQUM7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
201
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRucG0uY2xhc3Nlcy5ucG1yZWdpc3RyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0bnBtLmNsYXNzZXMubnBtcmVnaXN0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSx1QkFBdUIsQ0FBQztBQUNqRCxPQUFPLEtBQUssS0FBSyxNQUFNLHFCQUFxQixDQUFDO0FBRTdDLGFBQWE7QUFDYixPQUFPLEVBQXNCLE1BQU0sMEJBQTBCLENBQUM7QUFFOUQsVUFBVTtBQUNWLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM5RCxPQUFPLEVBQXlCLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBTTNGLE1BQU0sT0FBTyxXQUFXO0lBS3RCLFlBQVksYUFBNkMsRUFBRTtRQUZuRCxpQkFBWSxHQUFHLGtDQUFrQyxDQUFDO1FBR3hELE1BQU0sY0FBYyxHQUFtQztZQUNyRCxjQUFjLEVBQUUsNEJBQTRCO1NBQzdDLENBQUM7UUFDRixJQUFJLENBQUMsT0FBTyxHQUFHO1lBQ2IsR0FBRyxjQUFjO1lBQ2pCLEdBQUcsVUFBVTtTQUNkLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7O09BR0c7SUFDSSxLQUFLLENBQUMsY0FBYyxDQUFDLFdBQW1CO1FBQzdDLE1BQU0sWUFBWSxHQUFHLE1BQU0sT0FBTzthQUMvQixXQUFXLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRTtZQUNoQyxXQUFXLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjO1lBQ3hDLFlBQVksRUFBRSxJQUFJO1NBQ25CLENBQUM7YUFDRCxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNiLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDakIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQztRQUNMLE1BQU0sV0FBVyxHQUFHLE1BQU0sT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFO1lBQ2pFLFdBQVcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWM7WUFDeEMsV0FBVyxFQUFFLElBQUk7U0FDbEIsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxVQUFVLEdBQUcsTUFBTSxVQUFVLENBQUMsb0NBQW9DLENBQ3RFLElBQUksRUFDSixZQUFZLEVBQ1osV0FBa0IsQ0FDbkIsQ0FBQztRQUNGLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksS0FBSyxDQUFDLGlCQUFpQixDQUFDLFdBQW1CLEVBQUUsU0FBaUI7UUFDbkUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuRCxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDMUQsTUFBTSxVQUFVLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxrQkFBa0IsQ0FDN0IsY0FBc0IsRUFDdEIsV0FBbUIsRUFDbkIsVUFHQztRQUVELGlDQUFpQztRQUNqQyxNQUFNLGVBQWUsR0FBcUI7WUFDeEMsV0FBVyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYztZQUN4QyxXQUFXLEVBQUUsY0FBYztZQUMzQixRQUFRLEVBQUUsV0FBVztZQUNyQixPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU87WUFDNUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPO1NBQzdCLENBQUM7UUFFRix1Q0FBdUM7UUFDdkMsTUFBTSxVQUFVLEdBQWdDLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQ3BGLGVBQWUsQ0FDaEIsQ0FBQztRQUVGLDZCQUE2QjtRQUM3QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDaEIsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzdELElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxDQUFDO2dCQUNqRCxNQUFNLGVBQWUsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FDakQsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUM3QyxDQUFDO2dCQUNGLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztvQkFDckIsVUFBVSxHQUFHO3dCQUNYLE9BQU8sRUFBRSxVQUFVLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDO3FCQUNoRCxDQUFDO2dCQUNKLENBQUM7WUFDSCxDQUFDO1lBQ0QsTUFBTSxVQUFVLEdBQUcsTUFBTSxVQUFVLENBQUMsa0JBQWtCLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ2hGLElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsZUFBZSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ2pFLENBQUM7WUFDRCxPQUFPLFVBQVUsQ0FBQztRQUNwQixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sVUFBVSxDQUFDO1FBQ3BCLENBQUM7SUFDSCxDQUFDO0lBRU0sS0FBSyxDQUFDLG1CQUFtQixDQUM5QixjQUFzQixFQUN0QixRQUFnQixFQUNoQixVQUdDO1FBRUQsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQ2pELE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUNqRCxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUMzRCxDQUFDO1lBQ0YsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUNyQixVQUFVLEdBQUc7b0JBQ1gsT0FBTyxFQUFFLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUM7aUJBQ2hELENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sVUFBVSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRU0sS0FBSyxDQUFDLCtCQUErQixDQUMxQyxjQUFzQjtRQUV0Qjs7V0FFRztRQUNILE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNyRixNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdEQsTUFBTSxVQUFVLEdBQUcsTUFBTSxPQUFPLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuRixNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQyxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLFdBQVcsQ0FBQyxlQUE4QjtRQUNyRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxLQUFLLDRCQUE0QixFQUFFLENBQUM7WUFDakUsTUFBTSxLQUFLLENBQUMseURBQXlELENBQUMsQ0FBQztRQUN6RSxDQUFDO1FBQ0QsSUFBSSxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxZQUFvQixFQUFFLEVBQUU7WUFDakQsWUFBWSxHQUFHLEdBQUcsWUFBWSxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25ELENBQUMsQ0FBQztRQUVGLE9BQU87UUFDUCxJQUFJLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN6QixZQUFZLEdBQUcsR0FBRyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0MsQ0FBQztRQUVELFdBQVc7UUFDWCxJQUFJLGVBQWUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMzQixpQkFBaUIsQ0FBQyxVQUFVLGVBQWUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFDRCxJQUFJLGVBQWUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUMvQixpQkFBaUIsQ0FBQyxjQUFjLGVBQWUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQ2hFLENBQUM7UUFDRCxJQUFJLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMxQixpQkFBaUIsQ0FBQyxTQUFTLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFFRCxTQUFTO1FBQ1QsSUFBSSxlQUFlLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDL0IsSUFBSSxlQUFlLENBQUMsVUFBVSxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUN4QyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUNyQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04saUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUN0QyxDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzdCLElBQUksZUFBZSxDQUFDLFFBQVEsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDdEMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDbkMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ3BDLENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxlQUFlLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDN0IsSUFBSSxlQUFlLENBQUMsUUFBUSxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUN0QyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNuQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04saUJBQWlCLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDcEMsQ0FBQztRQUNILENBQUM7UUFFRCxtQkFBbUI7UUFDbkIsSUFBSSxlQUFlLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDL0IsaUJBQWlCLENBQUMsZUFBZSxlQUFlLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUNqRSxDQUFDO1FBQ0QsSUFBSSxlQUFlLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDaEMsaUJBQWlCLENBQUMsZ0JBQWdCLGVBQWUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ25FLENBQUM7UUFFRCxZQUFZO1FBQ1osSUFBSSxlQUFlLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDbEMsaUJBQWlCLENBQUMsVUFBVSxlQUFlLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUMvRCxDQUFDO1FBQ0QsSUFBSSxlQUFlLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNyQyxpQkFBaUIsQ0FBQyxVQUFVLGVBQWUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7UUFDbEUsQ0FBQztRQUNELElBQUksZUFBZSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDdEMsaUJBQWlCLENBQUMsVUFBVSxlQUFlLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO1FBQ25FLENBQUM7UUFFRCxPQUFPLENBQUMsR0FBRyxDQUNULDJCQUEyQixPQUFPLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FDdEYsQ0FBQztRQUVGLElBQUksSUFBUyxDQUFDO1FBQ2QsSUFBSSxDQUFDO1lBQ0gsTUFBTSxRQUFRLEdBQUcsTUFBTSxPQUFPLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUU7aUJBQzlELEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztpQkFDckMsR0FBRyxFQUFFLENBQUM7WUFDVCxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDL0IsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLGdCQUFnQjtRQUNsQixDQUFDO1FBRUQsK0JBQStCO1FBQy9CLE1BQU0sWUFBWSxHQUFpQixFQUFFLENBQUM7UUFFdEMseUNBQXlDO1FBQ3pDLElBQUksQ0FBQyxJQUFJLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDdEMsT0FBTyxZQUFZLENBQUM7UUFDdEIsQ0FBQztRQUVELEtBQUssTUFBTSxvQkFBb0IsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDaEQsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNoRixZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFFRCxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0NBQ0YifQ==
@@ -11,7 +11,7 @@ export declare class RegistryCache {
11
11
  npmregistryRef: NpmRegistry;
12
12
  levelCache: plugins.levelcache.LevelCache;
13
13
  constructor(npmRegistryRefArg: NpmRegistry);
14
- getCachedFile(cacheDescriptorArg: ICacheDescriptor): Promise<plugins.smartfile.Smartfile>;
15
- cacheSmartFile(cacheDescriptorArg: ICacheDescriptor, smartfileArg: plugins.smartfile.Smartfile): Promise<void>;
14
+ getCachedFile(cacheDescriptorArg: ICacheDescriptor): Promise<plugins.smartfile.SmartFile>;
15
+ cacheSmartFile(cacheDescriptorArg: ICacheDescriptor, smartfileArg: plugins.smartfile.SmartFile): Promise<void>;
16
16
  getCacheDescriptorAsString(cacheDescriptorArg?: ICacheDescriptor): string;
17
17
  }
@@ -10,7 +10,7 @@ export class RegistryCache {
10
10
  async getCachedFile(cacheDescriptorArg) {
11
11
  const cacheEntry = await this.levelCache.retrieveCacheEntryByKey(this.getCacheDescriptorAsString(cacheDescriptorArg));
12
12
  if (cacheEntry) {
13
- return plugins.smartfile.Smartfile.fromFoldedJson(cacheEntry.contents.toString());
13
+ return plugins.smartfile.SmartFile.fromFoldedJson(cacheEntry.contents.toString());
14
14
  }
15
15
  return null;
16
16
  }
@@ -32,4 +32,4 @@ export class RegistryCache {
32
32
  return `${cacheDescriptorArg.registryUrl}//+//${cacheDescriptorArg.packageName}//+//${cacheDescriptorArg.filePath}//+//${cacheDescriptorArg.distTag || cacheDescriptorArg.version}`;
33
33
  }
34
34
  }
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRucG0uY2xhc3Nlcy5yZWdpc3RyeWNhY2hlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRucG0uY2xhc3Nlcy5yZWdpc3RyeWNhY2hlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNoRSxPQUFPLEtBQUssT0FBTyxNQUFNLHVCQUF1QixDQUFDO0FBVWpELE1BQU0sT0FBTyxhQUFhO0lBSXhCLFlBQVksaUJBQThCO1FBQ3hDLElBQUksQ0FBQyxjQUFjLEdBQUcsaUJBQWlCLENBQUM7UUFDeEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDO1lBQ2xELE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUM7U0FDeEUsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLEtBQUssQ0FBQyxhQUFhLENBQ3hCLGtCQUFvQztRQUVwQyxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsdUJBQXVCLENBQzlELElBQUksQ0FBQywwQkFBMEIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUNwRCxDQUFDO1FBQ0YsSUFBSSxVQUFVLEVBQUU7WUFDZCxPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7U0FDbkY7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxLQUFLLENBQUMsY0FBYyxDQUN6QixrQkFBb0MsRUFDcEMsWUFBeUM7UUFFekMsSUFBSSxZQUFZLElBQUksa0JBQWtCLENBQUMsT0FBTyxFQUFFO1lBQzlDLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FDeEMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLGtCQUFrQixDQUFDLEVBQ25ELElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7Z0JBQ2hDLFFBQVEsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDaEQsR0FBRyxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsd0JBQXdCLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7YUFDOUQsQ0FBQyxDQUNILENBQUM7U0FDSDthQUFNO1lBQ0wsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUN4QyxJQUFJLENBQUMsMEJBQTBCLENBQUMsa0JBQWtCLENBQUMsRUFDbkQsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQztnQkFDaEMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNoRCxHQUFHLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQzthQUNoRSxDQUFDLENBQ0gsQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUVNLDBCQUEwQixDQUFDLGtCQUFxQztRQUNyRSxPQUFPLEdBQUcsa0JBQWtCLENBQUMsV0FBVyxRQUFRLGtCQUFrQixDQUFDLFdBQVcsUUFDNUUsa0JBQWtCLENBQUMsUUFDckIsUUFBUSxrQkFBa0IsQ0FBQyxPQUFPLElBQUksa0JBQWtCLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDckUsQ0FBQztDQUNGIn0=
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRucG0uY2xhc3Nlcy5yZWdpc3RyeWNhY2hlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRucG0uY2xhc3Nlcy5yZWdpc3RyeWNhY2hlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNoRSxPQUFPLEtBQUssT0FBTyxNQUFNLHVCQUF1QixDQUFDO0FBVWpELE1BQU0sT0FBTyxhQUFhO0lBSXhCLFlBQVksaUJBQThCO1FBQ3hDLElBQUksQ0FBQyxjQUFjLEdBQUcsaUJBQWlCLENBQUM7UUFDeEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDO1lBQ2xELE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUM7U0FDeEUsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLEtBQUssQ0FBQyxhQUFhLENBQ3hCLGtCQUFvQztRQUVwQyxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsdUJBQXVCLENBQzlELElBQUksQ0FBQywwQkFBMEIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUNwRCxDQUFDO1FBQ0YsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNmLE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUNwRixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sS0FBSyxDQUFDLGNBQWMsQ0FDekIsa0JBQW9DLEVBQ3BDLFlBQXlDO1FBRXpDLElBQUksWUFBWSxJQUFJLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQy9DLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FDeEMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLGtCQUFrQixDQUFDLEVBQ25ELElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7Z0JBQ2hDLFFBQVEsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDaEQsR0FBRyxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsd0JBQXdCLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7YUFDOUQsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FDeEMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLGtCQUFrQixDQUFDLEVBQ25ELElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7Z0JBQ2hDLFFBQVEsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDaEQsR0FBRyxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsd0JBQXdCLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7YUFDaEUsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVNLDBCQUEwQixDQUFDLGtCQUFxQztRQUNyRSxPQUFPLEdBQUcsa0JBQWtCLENBQUMsV0FBVyxRQUFRLGtCQUFrQixDQUFDLFdBQVcsUUFDNUUsa0JBQWtCLENBQUMsUUFDckIsUUFBUSxrQkFBa0IsQ0FBQyxPQUFPLElBQUksa0JBQWtCLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDckUsQ0FBQztDQUNGIn0=
package/npmextra.json CHANGED
@@ -6,12 +6,25 @@
6
6
  "gitzone": {
7
7
  "projectType": "npm",
8
8
  "module": {
9
- "githost": "gitlab.com",
9
+ "githost": "code.foss.global",
10
10
  "gitscope": "push.rocks",
11
11
  "gitrepo": "smartnpm",
12
- "description": "interface with npm to retrieve package information",
12
+ "description": "A library to interface with npm for retrieving package information and manipulation.",
13
13
  "npmPackagename": "@push.rocks/smartnpm",
14
- "license": "MIT"
14
+ "license": "MIT",
15
+ "keywords": [
16
+ "npm",
17
+ "package",
18
+ "information",
19
+ "registry",
20
+ "search",
21
+ "metadata",
22
+ "version",
23
+ "dependencies"
24
+ ]
15
25
  }
26
+ },
27
+ "tsdoc": {
28
+ "legal": "\n## License and Legal Information\n\nThis repository contains open-source code that is licensed under the MIT License. A copy of the MIT License can be found in the [license](license) file within this repository. \n\n**Please note:** The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file.\n\n### Trademarks\n\nThis project is owned and maintained by Task Venture Capital GmbH. The names and logos associated with Task Venture Capital GmbH and any related products or services are trademarks of Task Venture Capital GmbH and are not included within the scope of the MIT license granted herein. Use of these trademarks must comply with Task Venture Capital GmbH's Trademark Guidelines, and any usage must be approved in writing by Task Venture Capital GmbH.\n\n### Company Information\n\nTask Venture Capital GmbH \nRegistered at District court Bremen HRB 35230 HB, Germany\n\nFor any legal inquiries or if you require further information, please contact us via email at hello@task.vc.\n\nBy using this repository, you acknowledge that you have read this section, agree to comply with its terms, and understand that the licensing of the code does not imply endorsement by Task Venture Capital GmbH of any derivative works.\n"
16
29
  }
17
30
  }
package/package.json CHANGED
@@ -1,33 +1,28 @@
1
1
  {
2
2
  "name": "@push.rocks/smartnpm",
3
- "version": "2.0.4",
3
+ "version": "2.0.6",
4
4
  "private": false,
5
- "description": "interface with npm to retrieve package information",
5
+ "description": "A library to interface with npm for retrieving package information and manipulation.",
6
6
  "main": "dist_ts/index.js",
7
7
  "typings": "dist_ts/index.d.ts",
8
8
  "type": "module",
9
9
  "author": "Lossless GmbH",
10
10
  "license": "MIT",
11
- "scripts": {
12
- "test": "(tstest test/)",
13
- "build": "(tsbuild --web --allowimplicitany)",
14
- "buildDocs": "tsdoc"
15
- },
16
11
  "devDependencies": {
17
- "@gitzone/tsbuild": "^2.1.66",
18
- "@gitzone/tsrun": "^1.2.44",
19
- "@gitzone/tstest": "^1.0.77",
20
- "@push.rocks/tapbundle": "^5.0.12",
12
+ "@git.zone/tsbuild": "^2.6.6",
13
+ "@git.zone/tsrun": "^1.3.3",
14
+ "@git.zone/tstest": "^2.3.4",
15
+ "@push.rocks/tapbundle": "^6.0.3",
21
16
  "@types/node": "^20.4.4"
22
17
  },
23
18
  "dependencies": {
24
19
  "@push.rocks/consolecolor": "^2.0.1",
25
20
  "@push.rocks/levelcache": "^3.0.6",
26
- "@push.rocks/smartarchive": "^3.0.6",
27
- "@push.rocks/smartfile": "^10.0.28",
28
- "@push.rocks/smartpath": "^5.0.11",
21
+ "@push.rocks/smartarchive": "^4.2.1",
22
+ "@push.rocks/smartfile": "^11.2.7",
23
+ "@push.rocks/smartpath": "^6.0.0",
29
24
  "@push.rocks/smartpromise": "^4.0.3",
30
- "@push.rocks/smartrequest": "^2.0.18",
25
+ "@push.rocks/smartrequest": "^4.2.2",
31
26
  "@push.rocks/smarttime": "^4.0.4",
32
27
  "@push.rocks/smartversion": "^3.0.2",
33
28
  "package-json": "^8.1.1"
@@ -46,5 +41,25 @@
46
41
  ],
47
42
  "browserslist": [
48
43
  "last 1 chrome versions"
49
- ]
50
- }
44
+ ],
45
+ "keywords": [
46
+ "npm",
47
+ "package",
48
+ "information",
49
+ "registry",
50
+ "search",
51
+ "metadata",
52
+ "version",
53
+ "dependencies"
54
+ ],
55
+ "homepage": "https://code.foss.global/push.rocks/smartnpm",
56
+ "repository": {
57
+ "type": "git",
58
+ "url": "https://code.foss.global/push.rocks/smartnpm.git"
59
+ },
60
+ "scripts": {
61
+ "test": "(tstest test/ --verbose --logfile --timeout 120)",
62
+ "build": "(tsbuild --web --allowimplicitany)",
63
+ "buildDocs": "tsdoc"
64
+ }
65
+ }
@@ -0,0 +1 @@
1
+
package/readme.md CHANGED
@@ -1,37 +1,353 @@
1
1
  # @push.rocks/smartnpm
2
- interface with npm to retrieve package information
2
+ **Smart npm interface for Node.js 🚀**
3
3
 
4
- ## Availabililty and Links
5
- * [npmjs.org (npm package)](https://www.npmjs.com/package/@push.rocks/smartnpm)
6
- * [gitlab.com (source)](https://gitlab.com/push.rocks/smartnpm)
7
- * [github.com (source mirror)](https://github.com/push.rocks/smartnpm)
8
- * [docs (typedoc)](https://push.rocks.gitlab.io/smartnpm/)
4
+ [![npm](https://img.shields.io/npm/v/@push.rocks/smartnpm.svg)](https://www.npmjs.com/package/@push.rocks/smartnpm)
5
+ [![TypeScript](https://img.shields.io/badge/TypeScript-4.x-blue.svg)](https://www.typescriptlang.org/)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
9
7
 
10
- ## Status for master
8
+ > A powerful TypeScript library to programmatically interact with npm registries, retrieve package information, search packages, and handle package downloads with full caching support.
11
9
 
12
- Status Category | Status Badge
13
- -- | --
14
- GitLab Pipelines | [![pipeline status](https://gitlab.com/push.rocks/smartnpm/badges/master/pipeline.svg)](https://lossless.cloud)
15
- GitLab Pipline Test Coverage | [![coverage report](https://gitlab.com/push.rocks/smartnpm/badges/master/coverage.svg)](https://lossless.cloud)
16
- npm | [![npm downloads per month](https://badgen.net/npm/dy/@push.rocks/smartnpm)](https://lossless.cloud)
17
- Snyk | [![Known Vulnerabilities](https://badgen.net/snyk/push.rocks/smartnpm)](https://lossless.cloud)
18
- TypeScript Support | [![TypeScript](https://badgen.net/badge/TypeScript/>=%203.x/blue?icon=typescript)](https://lossless.cloud)
19
- node Support | [![node](https://img.shields.io/badge/node->=%2010.x.x-blue.svg)](https://nodejs.org/dist/latest-v10.x/docs/api/)
20
- Code Style | [![Code Style](https://badgen.net/badge/style/prettier/purple)](https://lossless.cloud)
21
- PackagePhobia (total standalone install weight) | [![PackagePhobia](https://badgen.net/packagephobia/install/@push.rocks/smartnpm)](https://lossless.cloud)
22
- PackagePhobia (package size on registry) | [![PackagePhobia](https://badgen.net/packagephobia/publish/@push.rocks/smartnpm)](https://lossless.cloud)
23
- BundlePhobia (total size when bundled) | [![BundlePhobia](https://badgen.net/bundlephobia/minzip/@push.rocks/smartnpm)](https://lossless.cloud)
10
+ ## 🎯 Features
24
11
 
25
- ## Usage
12
+ - 📦 **Package Information Retrieval** - Get comprehensive metadata about any npm package
13
+ - 🔍 **Advanced Package Search** - Search npm registry with multiple filter options
14
+ - 💾 **Package Downloads** - Download and extract packages to disk programmatically
15
+ - 📁 **File Extraction** - Extract specific files or directories from packages without full download
16
+ - 🏷️ **Version & Tag Management** - Work with specific versions, dist-tags, and version ranges
17
+ - ⚡ **Smart Caching** - Built-in caching system for improved performance
18
+ - 🌐 **Custom Registry Support** - Use with npm, Verdaccio, or any npm-compatible registry
19
+ - 🗂️ **Virtual Directory Creation** - Load packages as virtual file systems in memory
26
20
 
27
- Use TypeScript for best in class instellisense.
21
+ ## 📥 Installation
28
22
 
29
- ## Contribution
23
+ ```bash
24
+ npm install @push.rocks/smartnpm --save
25
+ ```
30
26
 
31
- We are always happy for code contributions. If you are not the code contributing type that is ok. Still, maintaining Open Source repositories takes considerable time and thought. If you like the quality of what we do and our modules are useful to you we would appreciate a little monthly contribution: You can [contribute one time](https://lossless.link/contribute-onetime) or [contribute monthly](https://lossless.link/contribute). :)
27
+ Or using pnpm (recommended):
32
28
 
33
- For further information read the linked docs at the top of this readme.
29
+ ```bash
30
+ pnpm add @push.rocks/smartnpm
31
+ ```
34
32
 
35
- ## Legal
36
- > MIT licensed | **&copy;** [Task Venture Capital GmbH](https://task.vc)
37
- | By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy)
33
+ ## 🚀 Quick Start
34
+
35
+ ```typescript
36
+ import { NpmRegistry } from '@push.rocks/smartnpm';
37
+
38
+ // Initialize with default npm registry
39
+ const npmRegistry = new NpmRegistry();
40
+
41
+ // Or use a custom registry
42
+ const customRegistry = new NpmRegistry({
43
+ npmRegistryUrl: 'https://your-registry.example.com'
44
+ });
45
+ ```
46
+
47
+ ## 📘 Usage Examples
48
+
49
+ ### Package Information Retrieval
50
+
51
+ Get detailed information about any npm package:
52
+
53
+ ```typescript
54
+ import { NpmRegistry } from '@push.rocks/smartnpm';
55
+
56
+ const npmRegistry = new NpmRegistry();
57
+
58
+ async function getPackageDetails() {
59
+ const packageInfo = await npmRegistry.getPackageInfo('@angular/core');
60
+
61
+ console.log(`Package: ${packageInfo.name}`);
62
+ console.log(`Latest Version: ${packageInfo.version}`);
63
+ console.log(`Description: ${packageInfo.description}`);
64
+ console.log(`License: ${packageInfo.license}`);
65
+
66
+ // Access all versions
67
+ packageInfo.allVersions.forEach(version => {
68
+ console.log(`- ${version.version}: ${version.date}`);
69
+ });
70
+
71
+ // Access dist tags
72
+ packageInfo.allDistTags.forEach(tag => {
73
+ console.log(`Tag ${tag.name}: ${tag.targetVersion}`);
74
+ });
75
+ }
76
+ ```
77
+
78
+ ### 🔍 Advanced Package Search
79
+
80
+ Search the npm registry with powerful filters:
81
+
82
+ ```typescript
83
+ async function searchPackages() {
84
+ // Search with multiple criteria
85
+ const searchResults = await npmRegistry.searchOnNpm({
86
+ name: 'webpack-plugin',
87
+ keywords: ['webpack', 'plugin', 'build'],
88
+ author: 'webpack-contrib',
89
+ maintainer: 'sokra',
90
+ scope: '@webpack',
91
+ deprecated: false,
92
+ unstable: false,
93
+ insecure: false,
94
+ boostExact: true,
95
+ scoreEffect: 15.3,
96
+ qualityWeight: 1.95,
97
+ popularityWeight: 3.3,
98
+ maintenanceWeight: 2.05
99
+ });
100
+
101
+ console.log(`Found ${searchResults.length} packages`);
102
+
103
+ searchResults.forEach(pkg => {
104
+ console.log(`📦 ${pkg.name}@${pkg.version}`);
105
+ console.log(` Score: ${pkg.searchScore}`);
106
+ console.log(` Quality: ${pkg.score.detail.quality}`);
107
+ console.log(` Popularity: ${pkg.score.detail.popularity}`);
108
+ console.log(` Maintenance: ${pkg.score.detail.maintenance}`);
109
+ });
110
+ }
111
+ ```
112
+
113
+ ### 💾 Download Packages
114
+
115
+ Download and extract npm packages to your filesystem:
116
+
117
+ ```typescript
118
+ async function downloadPackage() {
119
+ // Download latest version
120
+ await npmRegistry.savePackageToDisk('express', './downloads/express');
121
+
122
+ // Download specific version
123
+ const packageInfo = await npmRegistry.getPackageInfo('express');
124
+ const specificVersion = packageInfo.allVersions.find(v => v.version === '4.18.0');
125
+ if (specificVersion) {
126
+ await specificVersion.saveToDisk('./downloads/express-4.18.0');
127
+ }
128
+ }
129
+ ```
130
+
131
+ ### 📁 Extract Specific Files
132
+
133
+ Extract individual files or directories from packages without downloading the entire package:
134
+
135
+ ```typescript
136
+ async function extractSpecificFiles() {
137
+ // Get a single file
138
+ const readmeFile = await npmRegistry.getFileFromPackage(
139
+ 'typescript',
140
+ 'README.md'
141
+ );
142
+
143
+ if (readmeFile) {
144
+ console.log('README Contents:', readmeFile.contentBuffer.toString());
145
+ }
146
+
147
+ // Get a file from specific version
148
+ const packageJson = await npmRegistry.getFileFromPackage(
149
+ 'react',
150
+ 'package.json',
151
+ { version: '18.0.0' }
152
+ );
153
+
154
+ // Get all files from a directory
155
+ const sourceFiles = await npmRegistry.getFilesFromPackage(
156
+ '@angular/core',
157
+ 'src/',
158
+ { distTag: 'latest' }
159
+ );
160
+
161
+ sourceFiles.forEach(file => {
162
+ console.log(`📄 ${file.path} (${file.contentBuffer.length} bytes)`);
163
+ });
164
+ }
165
+ ```
166
+
167
+ ### 🏷️ Version Management
168
+
169
+ Work with specific versions and dist tags:
170
+
171
+ ```typescript
172
+ async function versionManagement() {
173
+ const pkg = await npmRegistry.getPackageInfo('vue');
174
+
175
+ // Get best matching version for a range
176
+ const bestVersion = pkg.getBestMatchingVersion('^3.0.0');
177
+ console.log(`Best matching version: ${bestVersion}`);
178
+
179
+ // Work with dist tags
180
+ const latestTag = pkg.allDistTags.find(t => t.name === 'latest');
181
+ const nextTag = pkg.allDistTags.find(t => t.name === 'next');
182
+
183
+ console.log(`Latest: ${latestTag?.targetVersion}`);
184
+ console.log(`Next: ${nextTag?.targetVersion}`);
185
+
186
+ // Get files from specific dist tag
187
+ const files = await npmRegistry.getFilesFromPackage(
188
+ 'vue',
189
+ 'dist/',
190
+ { distTag: 'next' }
191
+ );
192
+ }
193
+ ```
194
+
195
+ ### 🗂️ Virtual Directory
196
+
197
+ Load packages as virtual file systems in memory:
198
+
199
+ ```typescript
200
+ async function virtualDirectory() {
201
+ // Create virtual directory from package
202
+ const virtualDir = await npmRegistry.getPackageAsSmartfileVirtualDir('@angular/cli');
203
+
204
+ // Work with files in memory
205
+ const allFiles = virtualDir.getFileArray();
206
+
207
+ allFiles.forEach(file => {
208
+ console.log(`Virtual file: ${file.path}`);
209
+ });
210
+
211
+ // Export virtual directory to disk if needed
212
+ await virtualDir.saveToDisk('./output/angular-cli');
213
+ }
214
+ ```
215
+
216
+ ### ⚡ Caching
217
+
218
+ The library includes built-in intelligent caching:
219
+
220
+ ```typescript
221
+ // Files are automatically cached
222
+ const file1 = await npmRegistry.getFileFromPackage('lodash', 'package.json');
223
+ // This will be served from cache
224
+ const file2 = await npmRegistry.getFileFromPackage('lodash', 'package.json');
225
+
226
+ // Cache is registry-specific and version-aware
227
+ const specificVersion = await npmRegistry.getFileFromPackage(
228
+ 'lodash',
229
+ 'README.md',
230
+ { version: '4.17.21' }
231
+ );
232
+ ```
233
+
234
+ ## 🏗️ API Reference
235
+
236
+ ### NpmRegistry Class
237
+
238
+ #### Constructor
239
+ ```typescript
240
+ new NpmRegistry(options?: INpmRegistryConstructorOptions)
241
+ ```
242
+
243
+ Options:
244
+ - `npmRegistryUrl`: Custom registry URL (default: `https://registry.npmjs.org`)
245
+
246
+ #### Methods
247
+
248
+ ##### `getPackageInfo(packageName: string): Promise<NpmPackage>`
249
+ Retrieves comprehensive information about a package.
250
+
251
+ ##### `searchOnNpm(searchObject: ISearchObject): Promise<NpmPackage[]>`
252
+ Searches the npm registry with advanced filters.
253
+
254
+ ##### `savePackageToDisk(packageName: string, targetDir: string): Promise<void>`
255
+ Downloads and extracts a package to the filesystem.
256
+
257
+ ##### `getFileFromPackage(packageName: string, filePath: string, options?): Promise<SmartFile>`
258
+ Extracts a single file from a package.
259
+
260
+ ##### `getFilesFromPackage(packageName: string, filePath: string, options?): Promise<SmartFile[]>`
261
+ Extracts multiple files from a package directory.
262
+
263
+ ##### `getPackageAsSmartfileVirtualDir(packageName: string): Promise<VirtualDirectory>`
264
+ Creates an in-memory virtual directory from a package.
265
+
266
+ ### NpmPackage Class
267
+
268
+ #### Properties
269
+ - `name`: Package name
270
+ - `version`: Current version
271
+ - `description`: Package description
272
+ - `license`: License type
273
+ - `allVersions`: Array of all available versions
274
+ - `allDistTags`: Array of all dist tags
275
+ - `dependencies`: Package dependencies
276
+ - `keywords`: Package keywords
277
+ - `maintainers`: Package maintainers
278
+ - `dist`: Distribution information
279
+
280
+ #### Methods
281
+
282
+ ##### `getBestMatchingVersion(versionRange: string): string`
283
+ Finds the best matching version for a semver range.
284
+
285
+ ##### `saveToDisk(targetDir: string): Promise<void>`
286
+ Saves the package to disk.
287
+
288
+ ##### `getFileFromPackage(filePath: string, options?): Promise<SmartFile>`
289
+ Gets a file from the package.
290
+
291
+ ##### `getFilesFromPackage(filePath: string, options?): Promise<SmartFile[]>`
292
+ Gets multiple files from the package.
293
+
294
+ ## 🔧 Advanced Configuration
295
+
296
+ ### Custom Registry with Authentication
297
+
298
+ ```typescript
299
+ const privateRegistry = new NpmRegistry({
300
+ npmRegistryUrl: 'https://private-registry.company.com'
301
+ });
302
+
303
+ // Note: Authentication should be configured via .npmrc or npm config
304
+ ```
305
+
306
+ ### Error Handling
307
+
308
+ ```typescript
309
+ try {
310
+ const pkg = await npmRegistry.getPackageInfo('non-existent-package');
311
+ } catch (error) {
312
+ console.error('Package not found:', error.message);
313
+ }
314
+
315
+ // Safe file extraction
316
+ const file = await npmRegistry.getFileFromPackage('express', 'README.md');
317
+ if (file) {
318
+ // File exists
319
+ console.log('File size:', file.contentBuffer.length);
320
+ } else {
321
+ // File doesn't exist
322
+ console.log('File not found');
323
+ }
324
+ ```
325
+
326
+ ## 🎯 Common Use Cases
327
+
328
+ - **CI/CD Pipelines**: Automatically download and verify package contents
329
+ - **Security Scanning**: Extract and analyze package files without installation
330
+ - **Documentation Generation**: Pull README files and docs from packages
331
+ - **Dependency Analysis**: Analyze package structures and dependencies
332
+ - **Registry Mirroring**: Sync packages between registries
333
+ - **Package Validation**: Verify package contents before deployment
334
+ - **Automated Updates**: Check for new versions and update notifications
335
+
336
+ ## License and Legal Information
337
+
338
+ This repository contains open-source code that is licensed under the MIT License. A copy of the MIT License can be found in the [license](license) file within this repository.
339
+
340
+ **Please note:** The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file.
341
+
342
+ ### Trademarks
343
+
344
+ This project is owned and maintained by Task Venture Capital GmbH. The names and logos associated with Task Venture Capital GmbH and any related products or services are trademarks of Task Venture Capital GmbH and are not included within the scope of the MIT license granted herein. Use of these trademarks must comply with Task Venture Capital GmbH's Trademark Guidelines, and any usage must be approved in writing by Task Venture Capital GmbH.
345
+
346
+ ### Company Information
347
+
348
+ Task Venture Capital GmbH
349
+ Registered at District court Bremen HRB 35230 HB, Germany
350
+
351
+ For any legal inquiries or if you require further information, please contact us via email at hello@task.vc.
352
+
353
+ By using this repository, you acknowledge that you have read this section, agree to comply with its terms, and understand that the licensing of the code does not imply endorsement by Task Venture Capital GmbH of any derivative works.
@@ -1,8 +1,8 @@
1
1
  /**
2
- * autocreated commitinfo by @pushrocks/commitinfo
2
+ * autocreated commitinfo by @push.rocks/commitinfo
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@push.rocks/smartnpm',
6
- version: '2.0.4',
7
- description: 'interface with npm to retrieve package information'
6
+ version: '2.0.6',
7
+ description: 'A library to interface with npm for retrieving package information and manipulation.'
8
8
  }
@@ -82,7 +82,8 @@ export class NpmPackage {
82
82
  */
83
83
  public async saveToDisk(targetDir: string) {
84
84
  const smartarchiveInstance = new plugins.smartarchive.SmartArchive();
85
- await smartarchiveInstance.extractArchiveFromUrlToFs(this.dist.tarball, targetDir);
85
+ const archive = await plugins.smartarchive.SmartArchive.fromArchiveUrl(this.dist.tarball);
86
+ await archive.exportToFs(targetDir);
86
87
  }
87
88
 
88
89
  /**
@@ -100,8 +101,8 @@ export class NpmPackage {
100
101
  version?: string;
101
102
  },
102
103
  returnOnFirstArg = false
103
- ): Promise<plugins.smartfile.Smartfile[]> {
104
- const done = plugins.smartpromise.defer<plugins.smartfile.Smartfile[]>();
104
+ ): Promise<plugins.smartfile.SmartFile[]> {
105
+ const done = plugins.smartpromise.defer<plugins.smartfile.SmartFile[]>();
105
106
  const smartarchiveInstance = new plugins.smartarchive.SmartArchive();
106
107
  let tarballUrl = this.dist?.tarball;
107
108
  if (optionsArg?.version || optionsArg?.distTag) {
@@ -129,28 +130,56 @@ export class NpmPackage {
129
130
  (packageVersion) => packageVersion.version === bestMatchingVersion
130
131
  ).dist.tarball;
131
132
  }
132
- const fileObservable = await smartarchiveInstance.extractArchiveFromUrlToObservable(tarballUrl);
133
+ const archive = await plugins.smartarchive.SmartArchive.fromArchiveUrl(tarballUrl);
134
+ const streamOfFiles = await archive.exportToStreamOfStreamFiles();
133
135
  const wantedFilePath = plugins.path.join('package', filePath);
134
- const allMatchingFiles: plugins.smartfile.Smartfile[] = [];
135
- const subscription = fileObservable.subscribe(
136
- (fileArg) => {
137
- // returnOnFirstArg requires exact match
138
- if (returnOnFirstArg && fileArg.path === wantedFilePath) {
139
- // lets resolve with the wanted file
140
- done.resolve([fileArg]);
141
- subscription.unsubscribe();
142
- } else if (!returnOnFirstArg && fileArg.path.startsWith(wantedFilePath)) {
143
- allMatchingFiles.push(fileArg);
136
+
137
+ // Collect all stream files first
138
+ const streamFileList: any[] = [];
139
+
140
+ await new Promise<void>((resolve, reject) => {
141
+ streamOfFiles.on('data', (streamFile) => {
142
+ streamFileList.push(streamFile);
143
+ });
144
+
145
+ streamOfFiles.on('end', resolve);
146
+ streamOfFiles.on('error', reject);
147
+ });
148
+
149
+ // Now process the collected files
150
+ const allMatchingFiles: plugins.smartfile.SmartFile[] = [];
151
+
152
+ for (const fileArg of streamFileList) {
153
+ const filePath = fileArg.relativeFilePath || fileArg.path || '';
154
+
155
+ // returnOnFirstArg requires exact match
156
+ if (returnOnFirstArg && filePath === wantedFilePath) {
157
+ try {
158
+ const buffer = await fileArg.getContentAsBuffer();
159
+ const smartFile = await plugins.smartfile.SmartFile.fromBuffer(
160
+ filePath,
161
+ buffer
162
+ );
163
+ done.resolve([smartFile]);
164
+ return done.promise;
165
+ } catch (error) {
166
+ console.error('Error processing file:', error);
167
+ }
168
+ } else if (!returnOnFirstArg && filePath.startsWith(wantedFilePath)) {
169
+ try {
170
+ const buffer = await fileArg.getContentAsBuffer();
171
+ const smartFile = await plugins.smartfile.SmartFile.fromBuffer(
172
+ filePath,
173
+ buffer
174
+ );
175
+ allMatchingFiles.push(smartFile);
176
+ } catch (error) {
177
+ console.error('Error processing file:', error);
144
178
  }
145
- },
146
- (err) => {
147
- console.log(err);
148
- },
149
- () => {
150
- done.resolve(allMatchingFiles);
151
- subscription.unsubscribe();
152
179
  }
153
- );
180
+ }
181
+
182
+ done.resolve(allMatchingFiles);
154
183
  return done.promise;
155
184
  }
156
185
 
@@ -163,7 +192,7 @@ export class NpmPackage {
163
192
  distTag?: string;
164
193
  version?: string;
165
194
  }
166
- ): Promise<plugins.smartfile.Smartfile> {
195
+ ): Promise<plugins.smartfile.SmartFile> {
167
196
  const result = await this.getFilesFromPackage(filePath, optionsArg, true);
168
197
  return result[0] || null;
169
198
  }
@@ -75,7 +75,7 @@ export class NpmRegistry {
75
75
  distTag?: string;
76
76
  version?: string;
77
77
  }
78
- ): Promise<plugins.smartfile.Smartfile> {
78
+ ): Promise<plugins.smartfile.SmartFile> {
79
79
  // lets create a cache descriptor
80
80
  const cacheDescriptor: ICacheDescriptor = {
81
81
  registryUrl: this.options.npmRegistryUrl,
@@ -86,7 +86,7 @@ export class NpmRegistry {
86
86
  };
87
87
 
88
88
  // lets see if we have something cached
89
- const cachedFile: plugins.smartfile.Smartfile = await this.registryCache.getCachedFile(
89
+ const cachedFile: plugins.smartfile.SmartFile = await this.registryCache.getCachedFile(
90
90
  cacheDescriptor
91
91
  );
92
92
 
@@ -120,7 +120,7 @@ export class NpmRegistry {
120
120
  distTag?: string;
121
121
  version?: string;
122
122
  }
123
- ): Promise<plugins.smartfile.Smartfile[]> {
123
+ ): Promise<plugins.smartfile.SmartFile[]> {
124
124
  const npmPackage = await this.getPackageInfo(packageNameArg);
125
125
  if (!optionsArg?.version && !optionsArg?.distTag) {
126
126
  const latestAvailable = npmPackage.allDistTags.find(
@@ -226,8 +226,10 @@ export class NpmRegistry {
226
226
 
227
227
  let body: any;
228
228
  try {
229
- const response = await plugins.smartrequest.getJson(this.searchDomain + searchString, {});
230
- body = response.body;
229
+ const response = await plugins.smartrequest.SmartRequest.create()
230
+ .url(this.searchDomain + searchString)
231
+ .get();
232
+ body = await response.json();
231
233
  } catch {
232
234
  // we do nothing
233
235
  }
@@ -22,19 +22,19 @@ export class RegistryCache {
22
22
 
23
23
  public async getCachedFile(
24
24
  cacheDescriptorArg: ICacheDescriptor
25
- ): Promise<plugins.smartfile.Smartfile> {
25
+ ): Promise<plugins.smartfile.SmartFile> {
26
26
  const cacheEntry = await this.levelCache.retrieveCacheEntryByKey(
27
27
  this.getCacheDescriptorAsString(cacheDescriptorArg)
28
28
  );
29
29
  if (cacheEntry) {
30
- return plugins.smartfile.Smartfile.fromFoldedJson(cacheEntry.contents.toString());
30
+ return plugins.smartfile.SmartFile.fromFoldedJson(cacheEntry.contents.toString());
31
31
  }
32
32
  return null;
33
33
  }
34
34
 
35
35
  public async cacheSmartFile(
36
36
  cacheDescriptorArg: ICacheDescriptor,
37
- smartfileArg: plugins.smartfile.Smartfile
37
+ smartfileArg: plugins.smartfile.SmartFile
38
38
  ) {
39
39
  if (smartfileArg && cacheDescriptorArg.version) {
40
40
  await this.levelCache.storeCacheEntryByKey(