@push.rocks/smartnpm 2.0.3

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.
Files changed (33) hide show
  1. package/dist_ts/00_commitinfo_data.d.ts +8 -0
  2. package/dist_ts/00_commitinfo_data.js +9 -0
  3. package/dist_ts/index.d.ts +2 -0
  4. package/dist_ts/index.js +4 -0
  5. package/dist_ts/smartnpm.classes.npmpackage.d.ts +82 -0
  6. package/dist_ts/smartnpm.classes.npmpackage.js +118 -0
  7. package/dist_ts/smartnpm.classes.npmregistry.d.ts +41 -0
  8. package/dist_ts/smartnpm.classes.npmregistry.js +197 -0
  9. package/dist_ts/smartnpm.classes.packagedisttag.d.ts +5 -0
  10. package/dist_ts/smartnpm.classes.packagedisttag.js +8 -0
  11. package/dist_ts/smartnpm.classes.packageversion.d.ts +31 -0
  12. package/dist_ts/smartnpm.classes.packageversion.js +9 -0
  13. package/dist_ts/smartnpm.classes.registrycache.d.ts +17 -0
  14. package/dist_ts/smartnpm.classes.registrycache.js +35 -0
  15. package/dist_ts/smartnpm.interfaces.d.ts +15 -0
  16. package/dist_ts/smartnpm.interfaces.js +2 -0
  17. package/dist_ts/smartnpm.paths.d.ts +2 -0
  18. package/dist_ts/smartnpm.paths.js +4 -0
  19. package/dist_ts/smartnpm.plugins.d.ts +14 -0
  20. package/dist_ts/smartnpm.plugins.js +18 -0
  21. package/npmextra.json +17 -0
  22. package/package.json +49 -0
  23. package/readme.md +39 -0
  24. package/ts/00_commitinfo_data.ts +8 -0
  25. package/ts/index.ts +4 -0
  26. package/ts/smartnpm.classes.npmpackage.ts +187 -0
  27. package/ts/smartnpm.classes.npmregistry.ts +228 -0
  28. package/ts/smartnpm.classes.packagedisttag.ts +11 -0
  29. package/ts/smartnpm.classes.packageversion.ts +31 -0
  30. package/ts/smartnpm.classes.registrycache.ts +50 -0
  31. package/ts/smartnpm.interfaces.ts +24 -0
  32. package/ts/smartnpm.paths.ts +4 -0
  33. package/ts/smartnpm.plugins.ts +22 -0
@@ -0,0 +1,8 @@
1
+ /**
2
+ * autocreated commitinfo by @pushrocks/commitinfo
3
+ */
4
+ export declare const commitinfo: {
5
+ name: string;
6
+ version: string;
7
+ description: string;
8
+ };
@@ -0,0 +1,9 @@
1
+ /**
2
+ * autocreated commitinfo by @pushrocks/commitinfo
3
+ */
4
+ export const commitinfo = {
5
+ name: '@pushrocks/smartnpm',
6
+ version: '2.0.3',
7
+ description: 'interface with npm to retrieve package information'
8
+ };
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxxQkFBcUI7SUFDM0IsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLG9EQUFvRDtDQUNsRSxDQUFBIn0=
@@ -0,0 +1,2 @@
1
+ export * from './smartnpm.classes.npmregistry.js';
2
+ export * from './smartnpm.classes.npmpackage.js';
@@ -0,0 +1,4 @@
1
+ import './smartnpm.plugins.js';
2
+ export * from './smartnpm.classes.npmregistry.js';
3
+ export * from './smartnpm.classes.npmpackage.js';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUF5Qix1QkFBdUIsQ0FBQztBQUVqRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsa0NBQWtDLENBQUMifQ==
@@ -0,0 +1,82 @@
1
+ import * as plugins from './smartnpm.plugins.js';
2
+ import { NpmRegistry } from './smartnpm.classes.npmregistry.js';
3
+ import { PackageDisttag } from './smartnpm.classes.packagedisttag.js';
4
+ import { PackageVersion, IVersionData } from './smartnpm.classes.packageversion.js';
5
+ export declare class NpmPackage {
6
+ static createFromFullMetadataAndVersionData(npmRegistryArg: NpmRegistry, fullMetadataArg: plugins.packageJson.FullMetadata, versionsDataArg: {
7
+ name: string;
8
+ 'dist-tags': {
9
+ [key: string]: string;
10
+ };
11
+ versions: {
12
+ [key: string]: IVersionData;
13
+ };
14
+ }): Promise<NpmPackage>;
15
+ name: string;
16
+ scope: string;
17
+ version: string;
18
+ allVersions: PackageVersion[];
19
+ allDistTags: PackageDisttag[];
20
+ description: string;
21
+ keywords: string[];
22
+ date: string;
23
+ license: string;
24
+ links: {
25
+ npm: string;
26
+ homepage: string;
27
+ repository: string;
28
+ bugs: string;
29
+ };
30
+ author: {
31
+ name: 'Lossless GmbH';
32
+ };
33
+ publisher: {
34
+ username: 'gitzone';
35
+ email: 'npm@git.zone';
36
+ };
37
+ maintainers: any;
38
+ dist: {
39
+ integrity: string;
40
+ shasum: string;
41
+ tarball: string;
42
+ };
43
+ score: {
44
+ final: number;
45
+ detail: {
46
+ quality: number;
47
+ popularity: number;
48
+ maintenance: number;
49
+ };
50
+ };
51
+ searchScore: number;
52
+ npmRegistryRef: NpmRegistry;
53
+ constructor(npmRegistryArg: NpmRegistry);
54
+ /**
55
+ * saves the package to disk
56
+ */
57
+ saveToDisk(targetDir: string): Promise<void>;
58
+ /**
59
+ * saves the complete package to cache
60
+ */
61
+ saveToCache(): Promise<void>;
62
+ /**
63
+ * get files from package
64
+ */
65
+ getFilesFromPackage(filePath: string, optionsArg: {
66
+ distTag?: string;
67
+ version?: string;
68
+ }, returnOnFirstArg?: boolean): Promise<plugins.smartfile.Smartfile[]>;
69
+ /**
70
+ * get files from package
71
+ */
72
+ getFileFromPackage(filePath: string, optionsArg?: {
73
+ distTag?: string;
74
+ version?: string;
75
+ }): Promise<plugins.smartfile.Smartfile>;
76
+ /**
77
+ * updates the package with information from the registry
78
+ */
79
+ update(): void;
80
+ /** */
81
+ getBestMatchingVersion(versionArg: string): string;
82
+ }
@@ -0,0 +1,118 @@
1
+ import * as plugins from './smartnpm.plugins.js';
2
+ import './smartnpm.classes.npmregistry.js';
3
+ import { PackageDisttag } from './smartnpm.classes.packagedisttag.js';
4
+ import { PackageVersion } from './smartnpm.classes.packageversion.js';
5
+ export class NpmPackage {
6
+ constructor(npmRegistryArg) {
7
+ // INSTANCE
8
+ this.name = null;
9
+ this.scope = null;
10
+ this.version = null;
11
+ this.description = null;
12
+ this.keywords = null;
13
+ this.maintainers = null;
14
+ this.score = null;
15
+ this.searchScore = null;
16
+ this.npmRegistryRef = npmRegistryArg;
17
+ }
18
+ static async createFromFullMetadataAndVersionData(npmRegistryArg, fullMetadataArg, versionsDataArg) {
19
+ const npmPackage = new NpmPackage(npmRegistryArg);
20
+ Object.assign(npmPackage, fullMetadataArg);
21
+ npmPackage.allVersions = [];
22
+ npmPackage.allDistTags = [];
23
+ for (const versionArg of Object.keys(versionsDataArg.versions)) {
24
+ const packageVersion = PackageVersion.createFromVersionData(versionsDataArg.versions[versionArg]);
25
+ npmPackage.allVersions.push(packageVersion);
26
+ }
27
+ for (const distTagArg of Object.keys(versionsDataArg['dist-tags'])) {
28
+ const packageDistTag = new PackageDisttag(distTagArg, versionsDataArg['dist-tags'][distTagArg]);
29
+ npmPackage.allDistTags.push(packageDistTag);
30
+ }
31
+ return npmPackage;
32
+ }
33
+ /**
34
+ * saves the package to disk
35
+ */
36
+ async saveToDisk(targetDir) {
37
+ const smartarchiveInstance = new plugins.smartarchive.SmartArchive();
38
+ await smartarchiveInstance.extractArchiveFromUrlToFs(this.dist.tarball, targetDir);
39
+ }
40
+ /**
41
+ * saves the complete package to cache
42
+ */
43
+ async saveToCache() { }
44
+ /**
45
+ * get files from package
46
+ */
47
+ async getFilesFromPackage(filePath, optionsArg, returnOnFirstArg = false) {
48
+ const done = plugins.smartpromise.defer();
49
+ const smartarchiveInstance = new plugins.smartarchive.SmartArchive();
50
+ let tarballUrl = this.dist?.tarball;
51
+ if (optionsArg?.version || optionsArg?.distTag) {
52
+ if (optionsArg.distTag && optionsArg.version) {
53
+ throw new Error('Please either specify version OR disttag, not both.');
54
+ }
55
+ let targetVersionString;
56
+ if (optionsArg.distTag) {
57
+ const targetDistTag = this.allDistTags.find((distTag) => {
58
+ return distTag.name === optionsArg.distTag;
59
+ });
60
+ if (targetDistTag) {
61
+ targetVersionString = targetDistTag.targetVersion;
62
+ }
63
+ }
64
+ else {
65
+ targetVersionString = optionsArg.version;
66
+ }
67
+ // lets find the best matching release
68
+ const bestMatchingVersion = this.getBestMatchingVersion(targetVersionString);
69
+ if (!bestMatchingVersion) {
70
+ return null;
71
+ }
72
+ tarballUrl = this.allVersions.find((packageVersion) => packageVersion.version === bestMatchingVersion).dist.tarball;
73
+ }
74
+ const fileObservable = await smartarchiveInstance.extractArchiveFromUrlToObservable(tarballUrl);
75
+ const wantedFilePath = plugins.path.join('package', filePath);
76
+ const allMatchingFiles = [];
77
+ const subscription = fileObservable.subscribe((fileArg) => {
78
+ // returnOnFirstArg requires exact match
79
+ if (returnOnFirstArg && fileArg.path === wantedFilePath) {
80
+ // lets resolve with the wanted file
81
+ done.resolve([fileArg]);
82
+ subscription.unsubscribe();
83
+ }
84
+ else if (!returnOnFirstArg && fileArg.path.startsWith(wantedFilePath)) {
85
+ allMatchingFiles.push(fileArg);
86
+ }
87
+ }, (err) => {
88
+ console.log(err);
89
+ }, () => {
90
+ done.resolve(allMatchingFiles);
91
+ subscription.unsubscribe();
92
+ });
93
+ return done.promise;
94
+ }
95
+ /**
96
+ * get files from package
97
+ */
98
+ async getFileFromPackage(filePath, optionsArg) {
99
+ const result = await this.getFilesFromPackage(filePath, optionsArg, true);
100
+ return result[0] || null;
101
+ }
102
+ /**
103
+ * updates the package with information from the registry
104
+ */
105
+ update() { }
106
+ /** */
107
+ getBestMatchingVersion(versionArg) {
108
+ // lets find the best matching release
109
+ const targetVersion = plugins.smartversion.SmartVersion.fromFuzzyString(versionArg);
110
+ const versionStrings = this.allVersions.map((packageVersion) => packageVersion.version);
111
+ const bestMatchingVersion = targetVersion.getBestMatch(versionStrings);
112
+ if (!bestMatchingVersion) {
113
+ return null;
114
+ }
115
+ return bestMatchingVersion;
116
+ }
117
+ }
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRucG0uY2xhc3Nlcy5ucG1wYWNrYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRucG0uY2xhc3Nlcy5ucG1wYWNrYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBNEIsbUNBQW1DLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxjQUFjLEVBQWdCLE1BQU0sc0NBQXNDLENBQUM7QUFFcEYsTUFBTSxPQUFPLFVBQVU7SUFzRXJCLFlBQVksY0FBMkI7UUF4Q3ZDLFdBQVc7UUFDSixTQUFJLEdBQVcsSUFBSSxDQUFDO1FBQ3BCLFVBQUssR0FBVyxJQUFJLENBQUM7UUFDckIsWUFBTyxHQUFXLElBQUksQ0FBQztRQUd2QixnQkFBVyxHQUFXLElBQUksQ0FBQztRQUMzQixhQUFRLEdBQWEsSUFBSSxDQUFDO1FBZ0IxQixnQkFBVyxHQUFRLElBQUksQ0FBQztRQU14QixVQUFLLEdBT1IsSUFBSSxDQUFDO1FBQ0YsZ0JBQVcsR0FBVyxJQUFJLENBQUM7UUFJaEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7SUFDdkMsQ0FBQztJQXZFTSxNQUFNLENBQUMsS0FBSyxDQUFDLG9DQUFvQyxDQUN0RCxjQUEyQixFQUMzQixlQUFpRCxFQUNqRCxlQUlDO1FBRUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDbEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDM0MsVUFBVSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDNUIsVUFBVSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDNUIsS0FBSyxNQUFNLFVBQVUsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFR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
@@ -0,0 +1,41 @@
1
+ import * as plugins from './smartnpm.plugins.js';
2
+ import { ISearchObject } from './smartnpm.interfaces.js';
3
+ import { NpmPackage } from './smartnpm.classes.npmpackage.js';
4
+ import { RegistryCache } from './smartnpm.classes.registrycache.js';
5
+ export interface INpmRegistryConstructorOptions {
6
+ npmRegistryUrl?: string;
7
+ }
8
+ export declare class NpmRegistry {
9
+ options: INpmRegistryConstructorOptions;
10
+ registryCache: RegistryCache;
11
+ private searchDomain;
12
+ constructor(optionsArg?: INpmRegistryConstructorOptions);
13
+ /**
14
+ * gets info about a package
15
+ * @param packageName
16
+ */
17
+ getPackageInfo(packageName: string): Promise<NpmPackage>;
18
+ /**
19
+ * saves a package to disk
20
+ * @param packageName
21
+ * @param targetDir
22
+ */
23
+ savePackageToDisk(packageName: string, targetDir: string): Promise<void>;
24
+ /**
25
+ * gets a file from a package as Smartfile
26
+ */
27
+ getFileFromPackage(packageNameArg: string, filePathArg: string, optionsArg?: {
28
+ distTag?: string;
29
+ version?: string;
30
+ }): Promise<plugins.smartfile.Smartfile>;
31
+ getFilesFromPackage(packageNameArg: string, filePath: string, optionsArg?: {
32
+ distTag?: string;
33
+ version?: string;
34
+ }): Promise<plugins.smartfile.Smartfile[]>;
35
+ getPackageAsSmartfileVirtualDir(packageNameArg: string): Promise<plugins.smartfile.VirtualDirectory>;
36
+ /**
37
+ * searches for a package on npm
38
+ * @param searchObjectArg
39
+ */
40
+ searchOnNpm(searchObjectArg: ISearchObject): Promise<NpmPackage[]>;
41
+ }
@@ -0,0 +1,197 @@
1
+ import * as plugins from './smartnpm.plugins.js';
2
+ import * as paths from './smartnpm.paths.js';
3
+ // interfaces
4
+ import './smartnpm.interfaces.js';
5
+ // classes
6
+ import { NpmPackage } from './smartnpm.classes.npmpackage.js';
7
+ import { RegistryCache } from './smartnpm.classes.registrycache.js';
8
+ export class NpmRegistry {
9
+ constructor(optionsArg = {}) {
10
+ this.searchDomain = 'https://api.npms.io/v2/search?q=';
11
+ const defaultOptions = {
12
+ npmRegistryUrl: 'https://registry.npmjs.org',
13
+ };
14
+ this.options = {
15
+ ...defaultOptions,
16
+ ...optionsArg,
17
+ };
18
+ this.registryCache = new RegistryCache(this);
19
+ }
20
+ /**
21
+ * gets info about a package
22
+ * @param packageName
23
+ */
24
+ async getPackageInfo(packageName) {
25
+ const fullMetadata = await plugins.packageJson(packageName, {
26
+ registryUrl: this.options.npmRegistryUrl,
27
+ fullMetadata: true,
28
+ }).catch(err => {
29
+ console.log(err);
30
+ return null;
31
+ });
32
+ const versionData = await plugins.packageJson(packageName, {
33
+ registryUrl: this.options.npmRegistryUrl,
34
+ allVersions: true
35
+ });
36
+ const npmPackage = await NpmPackage.createFromFullMetadataAndVersionData(this, fullMetadata, versionData);
37
+ return npmPackage;
38
+ }
39
+ /**
40
+ * saves a package to disk
41
+ * @param packageName
42
+ * @param targetDir
43
+ */
44
+ async savePackageToDisk(packageName, targetDir) {
45
+ plugins.smartfile.fs.ensureDirSync(paths.nogitDir);
46
+ const npmPackage = await this.getPackageInfo(packageName);
47
+ await npmPackage.saveToDisk(targetDir);
48
+ }
49
+ /**
50
+ * gets a file from a package as Smartfile
51
+ */
52
+ async getFileFromPackage(packageNameArg, filePathArg, optionsArg) {
53
+ // lets create a cache descriptor
54
+ const cacheDescriptor = {
55
+ registryUrl: this.options.npmRegistryUrl,
56
+ packageName: packageNameArg,
57
+ filePath: filePathArg,
58
+ distTag: optionsArg?.distTag,
59
+ version: optionsArg?.version
60
+ };
61
+ // lets see if we have something cached
62
+ const cachedFile = await this.registryCache.getCachedFile(cacheDescriptor);
63
+ // lets handle both occasions
64
+ if (!cachedFile) {
65
+ const npmPackage = await this.getPackageInfo(packageNameArg);
66
+ if (!optionsArg?.version && !optionsArg?.distTag) {
67
+ const latestAvailable = npmPackage.allDistTags.find(packageArg => packageArg.name === 'latest');
68
+ if (!latestAvailable) {
69
+ optionsArg = {
70
+ version: npmPackage.getBestMatchingVersion('*')
71
+ };
72
+ }
73
+ }
74
+ const fileResult = await npmPackage.getFileFromPackage(filePathArg, optionsArg);
75
+ if (fileResult) {
76
+ this.registryCache.cacheSmartFile(cacheDescriptor, fileResult);
77
+ }
78
+ return fileResult;
79
+ }
80
+ else {
81
+ return cachedFile;
82
+ }
83
+ }
84
+ async getFilesFromPackage(packageNameArg, filePath, optionsArg) {
85
+ const npmPackage = await this.getPackageInfo(packageNameArg);
86
+ if (!optionsArg?.version && !optionsArg?.distTag) {
87
+ const latestAvailable = npmPackage.allDistTags.find(packageDistTagArg => packageDistTagArg.name === 'latest');
88
+ if (!latestAvailable) {
89
+ optionsArg = {
90
+ version: npmPackage.getBestMatchingVersion('*')
91
+ };
92
+ }
93
+ }
94
+ return npmPackage.getFilesFromPackage(filePath, optionsArg);
95
+ }
96
+ async getPackageAsSmartfileVirtualDir(packageNameArg) {
97
+ /**
98
+ * TODO: rewrite as memory only
99
+ */
100
+ const baseDir = plugins.path.join(paths.nogitDir, packageNameArg.replace('/', '__'));
101
+ await plugins.smartfile.fs.ensureDir(baseDir);
102
+ await this.savePackageToDisk(packageNameArg, baseDir);
103
+ const virtualDir = await plugins.smartfile.VirtualDirectory.fromFsDirPath(baseDir);
104
+ await plugins.smartfile.fs.remove(baseDir);
105
+ return virtualDir;
106
+ }
107
+ /**
108
+ * searches for a package on npm
109
+ * @param searchObjectArg
110
+ */
111
+ async searchOnNpm(searchObjectArg) {
112
+ if (this.options.npmRegistryUrl !== 'https://registry.npmjs.org') {
113
+ throw Error(`cannot search registries other than registry.gitlab.com`);
114
+ }
115
+ let searchString = '';
116
+ const addToSearchString = (addStringArg) => {
117
+ searchString = `${searchString}+${addStringArg}`;
118
+ };
119
+ // name
120
+ if (searchObjectArg.name) {
121
+ searchString = `${searchObjectArg.name}`;
122
+ }
123
+ // metadata
124
+ if (searchObjectArg.author) {
125
+ addToSearchString(`author:${searchObjectArg.author}`);
126
+ }
127
+ if (searchObjectArg.maintainer) {
128
+ addToSearchString(`maintainer:${searchObjectArg.maintainer}`);
129
+ }
130
+ if (searchObjectArg.scope) {
131
+ addToSearchString(`scope:${searchObjectArg.scope}`);
132
+ }
133
+ // status
134
+ if (searchObjectArg.deprecated) {
135
+ if (searchObjectArg.deprecated === true) {
136
+ addToSearchString(`is:deprecated`);
137
+ }
138
+ else {
139
+ addToSearchString(`not:deprecated`);
140
+ }
141
+ }
142
+ if (searchObjectArg.unstable) {
143
+ if (searchObjectArg.unstable === true) {
144
+ addToSearchString(`is:unstable`);
145
+ }
146
+ else {
147
+ addToSearchString(`not:unstable`);
148
+ }
149
+ }
150
+ if (searchObjectArg.insecure) {
151
+ if (searchObjectArg.insecure === true) {
152
+ addToSearchString(`is:insecure`);
153
+ }
154
+ else {
155
+ addToSearchString(`not:insecure`);
156
+ }
157
+ }
158
+ // search behaviour
159
+ if (searchObjectArg.boostExact) {
160
+ addToSearchString(`boost-exact:${searchObjectArg.boostExact}`);
161
+ }
162
+ if (searchObjectArg.scoreEffect) {
163
+ addToSearchString(`score-effect:${searchObjectArg.scoreEffect}`);
164
+ }
165
+ // analytics
166
+ if (searchObjectArg.qualityWeight) {
167
+ addToSearchString(`author:${searchObjectArg.qualityWeight}`);
168
+ }
169
+ if (searchObjectArg.popularityWeight) {
170
+ addToSearchString(`author:${searchObjectArg.popularityWeight}`);
171
+ }
172
+ if (searchObjectArg.maintenanceWeight) {
173
+ addToSearchString(`author:${searchObjectArg.maintenanceWeight}`);
174
+ }
175
+ console.log(`info: Search on npm for ${plugins.consolecolor.coloredString(searchString, 'pink')}`);
176
+ let body;
177
+ try {
178
+ const response = await plugins.smartrequest.getJson(this.searchDomain + searchString, {});
179
+ body = response.body;
180
+ }
181
+ catch {
182
+ // we do nothing
183
+ }
184
+ // lets create the packageArray
185
+ const packageArray = [];
186
+ // if request failed just return it empty
187
+ if (!body || typeof body === 'string') {
188
+ return packageArray;
189
+ }
190
+ for (const packageSearchInfoArg of body.results) {
191
+ const npmPackage = await this.getPackageInfo(packageSearchInfoArg.package.name);
192
+ packageArray.push(npmPackage);
193
+ }
194
+ return packageArray;
195
+ }
196
+ }
197
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRucG0uY2xhc3Nlcy5ucG1yZWdpc3RyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0bnBtLmNsYXNzZXMubnBtcmVnaXN0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSx1QkFBdUIsQ0FBQztBQUNqRCxPQUFPLEtBQUssS0FBSyxNQUFNLHFCQUFxQixDQUFDO0FBRTdDLGFBQWE7QUFDYixPQUE4QiwwQkFBMEIsQ0FBQztBQUV6RCxVQUFVO0FBQ1YsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzlELE9BQU8sRUFBb0IsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFNdEYsTUFBTSxPQUFPLFdBQVc7SUFLdEIsWUFBWSxhQUE2QyxFQUFFO1FBRm5ELGlCQUFZLEdBQUcsa0NBQWtDLENBQUM7UUFHeEQsTUFBTSxjQUFjLEdBQW1DO1lBQ3JELGNBQWMsRUFBRSw0QkFBNEI7U0FDN0MsQ0FBQztRQUNGLElBQUksQ0FBQyxPQUFPLEdBQUc7WUFDYixHQUFHLGNBQWM7WUFDakIsR0FBRyxVQUFVO1NBQ2QsQ0FBQztRQUNGLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOzs7T0FHRztJQUNJLEtBQUssQ0FBQyxjQUFjLENBQUMsV0FBbUI7UUFDN0MsTUFBTSxZQUFZLEdBQUcsTUFBTSxPQUFPLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRTtZQUMxRCxXQUFXLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjO1lBQ3hDLFlBQVksRUFBRSxJQUFJO1NBQ25CLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDYixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2pCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUM7UUFDSCxN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
@@ -0,0 +1,5 @@
1
+ export declare class PackageDisttag {
2
+ name: string;
3
+ targetVersion: string;
4
+ constructor(nameArg: string, targetVersionArg: string);
5
+ }
@@ -0,0 +1,8 @@
1
+ import './smartnpm.plugins.js';
2
+ export class PackageDisttag {
3
+ constructor(nameArg, targetVersionArg) {
4
+ this.name = nameArg;
5
+ this.targetVersion = targetVersionArg;
6
+ }
7
+ }
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRucG0uY2xhc3Nlcy5wYWNrYWdlZGlzdHRhZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0bnBtLmNsYXNzZXMucGFja2FnZWRpc3R0YWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBeUIsdUJBQXVCLENBQUM7QUFFakQsTUFBTSxPQUFPLGNBQWM7SUFJekIsWUFBWSxPQUFlLEVBQUUsZ0JBQXdCO1FBQ25ELElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxhQUFhLEdBQUcsZ0JBQWdCLENBQUM7SUFDeEMsQ0FBQztDQUNGIn0=
@@ -0,0 +1,31 @@
1
+ export interface IVersionData {
2
+ name: string;
3
+ version: string;
4
+ dependencies: {
5
+ [key: string]: string;
6
+ };
7
+ devDependencies: {
8
+ [key: string]: string;
9
+ };
10
+ dist: {
11
+ integrity: string;
12
+ shasum: string;
13
+ tarball: string;
14
+ };
15
+ }
16
+ export declare class PackageVersion implements IVersionData {
17
+ static createFromVersionData(versionDataArg: IVersionData): PackageVersion;
18
+ name: string;
19
+ version: string;
20
+ dependencies: {
21
+ [key: string]: string;
22
+ };
23
+ devDependencies: {
24
+ [key: string]: string;
25
+ };
26
+ dist: {
27
+ integrity: string;
28
+ shasum: string;
29
+ tarball: string;
30
+ };
31
+ }
@@ -0,0 +1,9 @@
1
+ import './smartnpm.plugins.js';
2
+ export class PackageVersion {
3
+ static createFromVersionData(versionDataArg) {
4
+ const packageVersion = new PackageVersion();
5
+ Object.assign(packageVersion, versionDataArg);
6
+ return packageVersion;
7
+ }
8
+ }
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRucG0uY2xhc3Nlcy5wYWNrYWdldmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0bnBtLmNsYXNzZXMucGFja2FnZXZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBeUIsdUJBQXVCLENBQUM7QUFjakQsTUFBTSxPQUFPLGNBQWM7SUFDbEIsTUFBTSxDQUFDLHFCQUFxQixDQUFDLGNBQTRCO1FBQzlELE1BQU0sY0FBYyxHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7UUFDNUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDOUMsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztDQVdGIn0=
@@ -0,0 +1,17 @@
1
+ import { NpmRegistry } from './smartnpm.classes.npmregistry.js';
2
+ import * as plugins from './smartnpm.plugins.js';
3
+ export interface ICacheDescriptor {
4
+ registryUrl: string;
5
+ packageName: string;
6
+ filePath: string;
7
+ distTag?: string;
8
+ version?: string;
9
+ }
10
+ export declare class RegistryCache {
11
+ npmregistryRef: NpmRegistry;
12
+ levelCache: plugins.levelcache.LevelCache;
13
+ constructor(npmRegistryRefArg: NpmRegistry);
14
+ getCachedFile(cacheDescriptorArg: ICacheDescriptor): Promise<plugins.smartfile.Smartfile>;
15
+ cacheSmartFile(cacheDescriptorArg: ICacheDescriptor, smartfileArg: plugins.smartfile.Smartfile): Promise<void>;
16
+ getCacheDescriptorAsString(cacheDescriptorArg?: ICacheDescriptor): string;
17
+ }
@@ -0,0 +1,35 @@
1
+ import './smartnpm.classes.npmregistry.js';
2
+ import * as plugins from './smartnpm.plugins.js';
3
+ export class RegistryCache {
4
+ constructor(npmRegistryRefArg) {
5
+ this.npmregistryRef = npmRegistryRefArg;
6
+ this.levelCache = new plugins.levelcache.LevelCache({
7
+ cacheId: encodeURIComponent(this.npmregistryRef.options.npmRegistryUrl),
8
+ });
9
+ }
10
+ async getCachedFile(cacheDescriptorArg) {
11
+ const cacheEntry = await this.levelCache.retrieveCacheEntryByKey(this.getCacheDescriptorAsString(cacheDescriptorArg));
12
+ if (cacheEntry) {
13
+ return plugins.smartfile.Smartfile.fromFoldedJson(cacheEntry.contents.toString());
14
+ }
15
+ return null;
16
+ }
17
+ async cacheSmartFile(cacheDescriptorArg, smartfileArg) {
18
+ if (smartfileArg && cacheDescriptorArg.version) {
19
+ await this.levelCache.storeCacheEntryByKey(this.getCacheDescriptorAsString(cacheDescriptorArg), new plugins.levelcache.CacheEntry({
20
+ contents: Buffer.from(smartfileArg.foldToJson()),
21
+ ttl: plugins.smarttime.getMilliSecondsFromUnits({ hours: 1 })
22
+ }));
23
+ }
24
+ else {
25
+ await this.levelCache.storeCacheEntryByKey(this.getCacheDescriptorAsString(cacheDescriptorArg), new plugins.levelcache.CacheEntry({
26
+ contents: Buffer.from(smartfileArg.foldToJson()),
27
+ ttl: plugins.smarttime.getMilliSecondsFromUnits({ minutes: 1 })
28
+ }));
29
+ }
30
+ }
31
+ getCacheDescriptorAsString(cacheDescriptorArg) {
32
+ return `${cacheDescriptorArg.registryUrl}//+//${cacheDescriptorArg.packageName}//+//${cacheDescriptorArg.filePath}//+//${cacheDescriptorArg.distTag || cacheDescriptorArg.version}`;
33
+ }
34
+ }
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRucG0uY2xhc3Nlcy5yZWdpc3RyeWNhY2hlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRucG0uY2xhc3Nlcy5yZWdpc3RyeWNhY2hlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQTRCLG1DQUFtQyxDQUFDO0FBQ2hFLE9BQU8sS0FBSyxPQUFPLE1BQU0sdUJBQXVCLENBQUM7QUFXakQsTUFBTSxPQUFPLGFBQWE7SUFJeEIsWUFBWSxpQkFBOEI7UUFDeEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQztRQUN4QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7WUFDbEQsT0FBTyxFQUFFLGtCQUFrQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQztTQUV4RSxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sS0FBSyxDQUFDLGFBQWEsQ0FBRSxrQkFBb0M7UUFDOUQsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7UUFDdEgsSUFBSSxVQUFVLEVBQUU7WUFDZCxPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7U0FDbkY7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxLQUFLLENBQUMsY0FBYyxDQUFFLGtCQUFvQyxFQUFFLFlBQXlDO1FBQzFHLElBQUksWUFBWSxJQUFJLGtCQUFrQixDQUFDLE9BQU8sRUFBRTtZQUM5QyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLGtCQUFrQixDQUFDLEVBQUUsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQztnQkFDaEksUUFBUSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNoRCxHQUFHLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFDLEtBQUssRUFBRSxDQUFDLEVBQUMsQ0FBQzthQUM1RCxDQUFDLENBQUMsQ0FBQztTQUNMO2FBQU07WUFDTCxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLGtCQUFrQixDQUFDLEVBQUUsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQztnQkFDaEksUUFBUSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNoRCxHQUFHLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUMsQ0FBQzthQUM5RCxDQUFDLENBQUMsQ0FBQztTQUNMO0lBQ0gsQ0FBQztJQUVNLDBCQUEwQixDQUFDLGtCQUFxQztRQUNyRSxPQUFPLEdBQUcsa0JBQWtCLENBQUMsV0FBVyxRQUFRLGtCQUFrQixDQUFDLFdBQVcsUUFBUSxrQkFBa0IsQ0FBQyxRQUFRLFFBQVEsa0JBQWtCLENBQUMsT0FBTyxJQUFJLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3RMLENBQUM7Q0FDRiJ9
@@ -0,0 +1,15 @@
1
+ export interface ISearchObject {
2
+ name?: string;
3
+ author?: string;
4
+ maintainer?: string;
5
+ scope?: string;
6
+ keywords?: string[];
7
+ deprecated?: boolean;
8
+ unstable?: boolean;
9
+ insecure?: boolean;
10
+ boostExact?: boolean;
11
+ scoreEffect?: number;
12
+ qualityWeight?: number;
13
+ popularityWeight?: number;
14
+ maintenanceWeight?: number;
15
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRucG0uaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0bnBtLmludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -0,0 +1,2 @@
1
+ export declare const packageDir: string;
2
+ export declare const nogitDir: string;
@@ -0,0 +1,4 @@
1
+ import * as plugins from './smartnpm.plugins.js';
2
+ export const packageDir = plugins.path.join(plugins.smartpath.get.dirnameFromImportMetaUrl(import.meta.url), '../');
3
+ export const nogitDir = plugins.path.join(packageDir, '.nogit/');
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRucG0ucGF0aHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydG5wbS5wYXRocy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLHVCQUF1QixDQUFDO0FBRWpELE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3BILE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUMifQ==
@@ -0,0 +1,14 @@
1
+ import * as path from 'path';
2
+ export { path };
3
+ import * as consolecolor from '@pushrocks/consolecolor';
4
+ import * as levelcache from '@pushrocks/levelcache';
5
+ import * as smartarchive from '@pushrocks/smartarchive';
6
+ import * as smartfile from '@pushrocks/smartfile';
7
+ import * as smartpath from '@pushrocks/smartpath';
8
+ import * as smartpromise from '@pushrocks/smartpromise';
9
+ import * as smartrequest from '@pushrocks/smartrequest';
10
+ import * as smartversion from '@pushrocks/smartversion';
11
+ import * as smarttime from '@pushrocks/smarttime';
12
+ export { consolecolor, levelcache, smartarchive, smartfile, smartpath, smartpromise, smartrequest, smartversion, smarttime };
13
+ import packageJson from 'package-json';
14
+ export { packageJson };