fix(core): update
This commit is contained in:
		
							
								
								
									
										19
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										19
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -1,5 +1,22 @@
 | 
			
		||||
.nogit/
 | 
			
		||||
node_modules/
 | 
			
		||||
 | 
			
		||||
# artifacts
 | 
			
		||||
coverage/
 | 
			
		||||
public/
 | 
			
		||||
pages/
 | 
			
		||||
 | 
			
		||||
# installs
 | 
			
		||||
node_modules/
 | 
			
		||||
 | 
			
		||||
# caches
 | 
			
		||||
.yarn/
 | 
			
		||||
.cache/
 | 
			
		||||
.rpt2_cache
 | 
			
		||||
 | 
			
		||||
# builds
 | 
			
		||||
dist/
 | 
			
		||||
dist_web/
 | 
			
		||||
dist_serve/
 | 
			
		||||
dist_ts_web/
 | 
			
		||||
 | 
			
		||||
# custom
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
# gitzone standard
 | 
			
		||||
image: hosttoday/ht-docker-node:npmci
 | 
			
		||||
# gitzone ci_default
 | 
			
		||||
image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
 | 
			
		||||
 | 
			
		||||
cache:
 | 
			
		||||
  paths:
 | 
			
		||||
@@ -26,6 +26,7 @@ mirror:
 | 
			
		||||
snyk:
 | 
			
		||||
  stage: security
 | 
			
		||||
  script:
 | 
			
		||||
    - npmci npm prepare
 | 
			
		||||
    - npmci command npm install -g snyk
 | 
			
		||||
    - npmci command npm install --ignore-scripts
 | 
			
		||||
    - npmci command snyk test
 | 
			
		||||
@@ -36,44 +37,35 @@ snyk:
 | 
			
		||||
# ====================
 | 
			
		||||
# test stage
 | 
			
		||||
# ====================
 | 
			
		||||
testLEGACY:
 | 
			
		||||
  stage: test
 | 
			
		||||
  script:
 | 
			
		||||
  - npmci node install legacy
 | 
			
		||||
  - npmci npm install
 | 
			
		||||
  - npmci npm test
 | 
			
		||||
  coverage: /\d+.?\d+?\%\s*coverage/
 | 
			
		||||
  tags:
 | 
			
		||||
  - docker
 | 
			
		||||
  - notpriv
 | 
			
		||||
  allow_failure: true
 | 
			
		||||
 | 
			
		||||
testLTS:
 | 
			
		||||
  stage: test
 | 
			
		||||
  script:
 | 
			
		||||
  - npmci node install lts
 | 
			
		||||
  - npmci npm install
 | 
			
		||||
  - npmci npm test
 | 
			
		||||
  coverage: /\d+.?\d+?\%\s*coverage/
 | 
			
		||||
  tags:
 | 
			
		||||
  - docker
 | 
			
		||||
  - notpriv
 | 
			
		||||
    
 | 
			
		||||
testSTABLE:
 | 
			
		||||
testStable:
 | 
			
		||||
  stage: test
 | 
			
		||||
  script:
 | 
			
		||||
  - npmci npm prepare
 | 
			
		||||
  - npmci node install stable
 | 
			
		||||
  - npmci npm install
 | 
			
		||||
  - npmci npm test
 | 
			
		||||
  coverage: /\d+.?\d+?\%\s*coverage/
 | 
			
		||||
  tags:
 | 
			
		||||
  - docker
 | 
			
		||||
  - priv
 | 
			
		||||
 | 
			
		||||
testBuild:
 | 
			
		||||
  stage: test
 | 
			
		||||
  script:
 | 
			
		||||
  - npmci npm prepare
 | 
			
		||||
  - npmci node install lts
 | 
			
		||||
  - npmci npm install
 | 
			
		||||
  - npmci command npm run build
 | 
			
		||||
  coverage: /\d+.?\d+?\%\s*coverage/
 | 
			
		||||
  tags:
 | 
			
		||||
  - docker
 | 
			
		||||
  - notpriv
 | 
			
		||||
 | 
			
		||||
release:
 | 
			
		||||
  stage: release
 | 
			
		||||
  script:
 | 
			
		||||
  - npmci node install stable
 | 
			
		||||
  - npmci node install lts
 | 
			
		||||
  - npmci npm publish
 | 
			
		||||
  only:
 | 
			
		||||
  - tags
 | 
			
		||||
@@ -86,19 +78,11 @@ release:
 | 
			
		||||
# ====================
 | 
			
		||||
codequality:
 | 
			
		||||
  stage: metadata
 | 
			
		||||
  image: docker:stable
 | 
			
		||||
  allow_failure: true
 | 
			
		||||
  services:
 | 
			
		||||
    - docker:stable-dind
 | 
			
		||||
  script:
 | 
			
		||||
    - export SP_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/')
 | 
			
		||||
    - docker run
 | 
			
		||||
        --env SOURCE_CODE="$PWD"
 | 
			
		||||
        --volume "$PWD":/code
 | 
			
		||||
        --volume /var/run/docker.sock:/var/run/docker.sock
 | 
			
		||||
        "registry.gitlab.com/gitlab-org/security-products/codequality:$SP_VERSION" /code
 | 
			
		||||
  artifacts:
 | 
			
		||||
    paths: [codeclimate.json]
 | 
			
		||||
    - npmci command npm install -g tslint typescript
 | 
			
		||||
    - npmci npm install
 | 
			
		||||
    - npmci command "tslint -c tslint.json ./ts/**/*.ts"
 | 
			
		||||
  tags:
 | 
			
		||||
  - docker
 | 
			
		||||
  - priv
 | 
			
		||||
@@ -114,12 +98,15 @@ trigger:
 | 
			
		||||
  - notpriv
 | 
			
		||||
 | 
			
		||||
pages:
 | 
			
		||||
  image: hosttoday/ht-docker-node:npmci
 | 
			
		||||
  image: hosttoday/ht-docker-dbase:npmci
 | 
			
		||||
  services:
 | 
			
		||||
   - docker:stable-dind
 | 
			
		||||
  stage: metadata
 | 
			
		||||
  script:
 | 
			
		||||
    - npmci command npm install -g typedoc typescript
 | 
			
		||||
    - npmci command npm install -g @gitzone/tsdoc
 | 
			
		||||
    - npmci npm prepare
 | 
			
		||||
    - npmci npm install
 | 
			
		||||
    - npmci command typedoc --module "commonjs" --target "ES2016" --out public/ ts/
 | 
			
		||||
    - npmci command tsdoc
 | 
			
		||||
  tags:
 | 
			
		||||
    - docker
 | 
			
		||||
    - notpriv
 | 
			
		||||
@@ -130,13 +117,3 @@ pages:
 | 
			
		||||
    paths:
 | 
			
		||||
    - public
 | 
			
		||||
  allow_failure: true
 | 
			
		||||
 | 
			
		||||
windowsCompatibility:
 | 
			
		||||
  image: stefanscherer/node-windows:10-build-tools
 | 
			
		||||
  stage: metadata
 | 
			
		||||
  script:
 | 
			
		||||
  - npm install & npm test
 | 
			
		||||
  coverage: /\d+.?\d+?\%\s*coverage/
 | 
			
		||||
  tags:
 | 
			
		||||
  - windows
 | 
			
		||||
  allow_failure: true
 | 
			
		||||
 
 | 
			
		||||
@@ -2,5 +2,15 @@
 | 
			
		||||
  "npmci": {
 | 
			
		||||
    "npmGlobalTools": [],
 | 
			
		||||
    "npmAccessLevel": "public"
 | 
			
		||||
  },
 | 
			
		||||
  "gitzone": {
 | 
			
		||||
    "module": {
 | 
			
		||||
      "githost": "gitlab.com",
 | 
			
		||||
      "gitscope": "pushrocks",
 | 
			
		||||
      "gitrepo": "smartnpm",
 | 
			
		||||
      "shortDescription": "interface with npm to retrieve package information",
 | 
			
		||||
      "npmPackagename": "@pushrocks/smartnpm",
 | 
			
		||||
      "license": "MIT"
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										1497
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										1497
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										34
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										34
									
								
								package.json
									
									
									
									
									
								
							@@ -12,17 +12,29 @@
 | 
			
		||||
    "build": "(tsbuild)"
 | 
			
		||||
  },
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "@gitzone/tsbuild": "^2.0.22",
 | 
			
		||||
    "@gitzone/tsrun": "^1.1.13",
 | 
			
		||||
    "@gitzone/tstest": "^1.0.15",
 | 
			
		||||
    "@pushrocks/tapbundle": "^3.0.7",
 | 
			
		||||
    "@types/node": "^10.12.3",
 | 
			
		||||
    "tslint": "^5.11.0",
 | 
			
		||||
    "tslint-config-prettier": "^1.15.0"
 | 
			
		||||
    "@gitzone/tsbuild": "^2.1.17",
 | 
			
		||||
    "@gitzone/tsrun": "^1.2.8",
 | 
			
		||||
    "@gitzone/tstest": "^1.0.24",
 | 
			
		||||
    "@pushrocks/tapbundle": "^3.0.13",
 | 
			
		||||
    "@types/node": "^12.7.4",
 | 
			
		||||
    "tslint": "^5.19.0",
 | 
			
		||||
    "tslint-config-prettier": "^1.18.0"
 | 
			
		||||
  },
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "@pushrocks/consolecolor": "^2.0.1",
 | 
			
		||||
    "@pushrocks/smartlog": "^2.0.8",
 | 
			
		||||
    "@pushrocks/smartrequest": "^1.1.14"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
    "@pushrocks/smartlog": "^2.0.19",
 | 
			
		||||
    "@pushrocks/smartrequest": "^1.1.23",
 | 
			
		||||
    "package-json": "^6.5.0"
 | 
			
		||||
  },
 | 
			
		||||
  "files": [
 | 
			
		||||
    "ts/*",
 | 
			
		||||
    "ts_web/*",
 | 
			
		||||
    "dist/*",
 | 
			
		||||
    "dist_web/*",
 | 
			
		||||
    "dist_ts_web/*",
 | 
			
		||||
    "assets/*",
 | 
			
		||||
    "cli.js",
 | 
			
		||||
    "npmextra.json",
 | 
			
		||||
    "readme.md"
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										38
									
								
								readme.md
									
									
									
									
									
								
							
							
						
						
									
										38
									
								
								readme.md
									
									
									
									
									
								
							@@ -1,25 +1,20 @@
 | 
			
		||||
# smartnpm
 | 
			
		||||
 | 
			
		||||
# @pushrocks/smartnpm
 | 
			
		||||
interface with npm to retrieve package information
 | 
			
		||||
 | 
			
		||||
## Availabililty
 | 
			
		||||
 | 
			
		||||
[](https://www.npmjs.com/package/smartnpm)
 | 
			
		||||
[](https://GitLab.com/pushrocks/smartnpm)
 | 
			
		||||
[](https://github.com/pushrocks/smartnpm)
 | 
			
		||||
[](https://pushrocks.gitlab.io/smartnpm/)
 | 
			
		||||
## Availabililty and Links
 | 
			
		||||
* [npmjs.org (npm package)](https://www.npmjs.com/package/@pushrocks/smartnpm)
 | 
			
		||||
* [gitlab.com (source)](https://gitlab.com/pushrocks/smartnpm)
 | 
			
		||||
* [github.com (source mirror)](https://github.com/pushrocks/smartnpm)
 | 
			
		||||
* [docs (typedoc)](https://pushrocks.gitlab.io/smartnpm/)
 | 
			
		||||
 | 
			
		||||
## Status for master
 | 
			
		||||
 | 
			
		||||
[](https://GitLab.com/pushrocks/smartnpm/commits/master)
 | 
			
		||||
[](https://GitLab.com/pushrocks/smartnpm/commits/master)
 | 
			
		||||
[](https://www.npmjs.com/package/smartnpm)
 | 
			
		||||
[](https://david-dm.org/pushrocks/smartnpm)
 | 
			
		||||
[](https://www.bithound.io/github/pushrocks/smartnpm/master/dependencies/npm)
 | 
			
		||||
[](https://www.bithound.io/github/pushrocks/smartnpm)
 | 
			
		||||
[](https://nodejs.org/dist/latest-v6.x/docs/api/)
 | 
			
		||||
[](https://nodejs.org/dist/latest-v6.x/docs/api/)
 | 
			
		||||
[](http://standardjs.com/)
 | 
			
		||||
[](https://gitlab.com/pushrocks/smartnpm/commits/master)
 | 
			
		||||
[](https://gitlab.com/pushrocks/smartnpm/commits/master)
 | 
			
		||||
[](https://www.npmjs.com/package/@pushrocks/smartnpm)
 | 
			
		||||
[](https://snyk.io/test/npm/@pushrocks/smartnpm)
 | 
			
		||||
[](https://nodejs.org/dist/latest-v10.x/docs/api/)
 | 
			
		||||
[](https://nodejs.org/dist/latest-v10.x/docs/api/)
 | 
			
		||||
[](https://prettier.io/)
 | 
			
		||||
 | 
			
		||||
## Usage
 | 
			
		||||
 | 
			
		||||
@@ -31,3 +26,10 @@ For further information read the linked docs at the top of this README.
 | 
			
		||||
> | By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy.html)
 | 
			
		||||
 | 
			
		||||
[](https://push.rocks)
 | 
			
		||||
 | 
			
		||||
For further information read the linked docs at the top of this readme.
 | 
			
		||||
 | 
			
		||||
> MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh)
 | 
			
		||||
| By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy)
 | 
			
		||||
 | 
			
		||||
[](https://maintainedby.lossless.com)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										24
									
								
								test/test.ts
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								test/test.ts
									
									
									
									
									
								
							@@ -1,22 +1,38 @@
 | 
			
		||||
import { expect, tap } from '@pushrocks/tapbundle';
 | 
			
		||||
import * as smartnpm from '../ts/index';
 | 
			
		||||
import { NpmRegistry } from '../ts/index';
 | 
			
		||||
 | 
			
		||||
let testRegistry: smartnpm.NpmRegistry;
 | 
			
		||||
let npmRegistry: smartnpm.NpmRegistry;
 | 
			
		||||
let verdaccioRegistry: smartnpm.NpmRegistry;
 | 
			
		||||
let testPackage: smartnpm.NpmPackage;
 | 
			
		||||
 | 
			
		||||
// lets test things with the standard npm registry
 | 
			
		||||
tap.test('should create valid instances', async () => {
 | 
			
		||||
  testRegistry = new smartnpm.NpmRegistry();
 | 
			
		||||
  expect(testRegistry).to.be.instanceof(smartnpm.NpmRegistry);
 | 
			
		||||
  npmRegistry = new smartnpm.NpmRegistry();
 | 
			
		||||
  expect(npmRegistry).to.be.instanceof(smartnpm.NpmRegistry);
 | 
			
		||||
 | 
			
		||||
  testPackage = new smartnpm.NpmPackage({});
 | 
			
		||||
  expect(testPackage).to.be.instanceof(smartnpm.NpmPackage);
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
tap.test('should produce a valid search string and this return npmts', async () => {
 | 
			
		||||
  let packages = await testRegistry.search({
 | 
			
		||||
  const packages = await npmRegistry.search({
 | 
			
		||||
    name: 'npmts'
 | 
			
		||||
  });
 | 
			
		||||
  expect(packages[0].name).to.equal('npmts');
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
// lets test things with the verdaccio registry
 | 
			
		||||
tap.test('should create a verdaccio registry', async () => {
 | 
			
		||||
  verdaccioRegistry = new NpmRegistry({
 | 
			
		||||
    npmRegistryUrl: 'https://verdaccio.lossless.one'
 | 
			
		||||
  });
 | 
			
		||||
  expect(verdaccioRegistry).to.be.instanceOf(smartnpm.NpmRegistry);
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
tap.test('should get package from verdaccui', async () => {
 | 
			
		||||
  const packageInfo = await verdaccioRegistry.getPackageInfo('@pushrocks/smartupdate');
 | 
			
		||||
  expect(packageInfo.license).to.equal('MIT');
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
tap.start();
 | 
			
		||||
 
 | 
			
		||||
@@ -6,11 +6,39 @@ import { ISearchObject } from './smartnpm.interfaces';
 | 
			
		||||
// classes
 | 
			
		||||
import { NpmPackage } from './smartnpm.classes.npmpackage';
 | 
			
		||||
 | 
			
		||||
export interface INpmRegistryConstructorOptions {
 | 
			
		||||
  npmRegistryUrl?: string;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export class NpmRegistry {
 | 
			
		||||
  public options: INpmRegistryConstructorOptions;
 | 
			
		||||
  public registry: string;
 | 
			
		||||
  private searchDomain = 'https://api.npms.io/v2/search?q=';
 | 
			
		||||
  async search(searchObjectArg: ISearchObject) {
 | 
			
		||||
 | 
			
		||||
  constructor(optionsArg: INpmRegistryConstructorOptions = {}) {
 | 
			
		||||
    const defaultOptions: INpmRegistryConstructorOptions = {
 | 
			
		||||
      npmRegistryUrl: 'https://registry.npmjs.org'
 | 
			
		||||
    };
 | 
			
		||||
    this.options = {
 | 
			
		||||
      ...defaultOptions,
 | 
			
		||||
      ...optionsArg
 | 
			
		||||
    };
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public async getPackageInfo(packageName: string) {
 | 
			
		||||
    const result = await plugins.packageJson(packageName, {
 | 
			
		||||
      registryUrl: this.options.npmRegistryUrl,
 | 
			
		||||
      fullMetadata: true
 | 
			
		||||
    });
 | 
			
		||||
    return result;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public async search(searchObjectArg: ISearchObject) {
 | 
			
		||||
    if (this.options.npmRegistryUrl !== 'https://registry.npmjs.org') {
 | 
			
		||||
      throw Error(`cannot search registries other than registry.gitlab.com`);
 | 
			
		||||
    }
 | 
			
		||||
    let searchString = '';
 | 
			
		||||
    let addToSearchString = (addStringArg: string) => {
 | 
			
		||||
    const addToSearchString = (addStringArg: string) => {
 | 
			
		||||
      searchString = `${searchString}+${addStringArg}`;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
@@ -79,22 +107,22 @@ export class NpmRegistry {
 | 
			
		||||
 | 
			
		||||
    let body: any;
 | 
			
		||||
    try {
 | 
			
		||||
      let response = await plugins.smartrequest.getJson(this.searchDomain + searchString, {});
 | 
			
		||||
      const response = await plugins.smartrequest.getJson(this.searchDomain + searchString, {});
 | 
			
		||||
      body = response.body;
 | 
			
		||||
    } catch {
 | 
			
		||||
      // we do nothing
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // lets create the packageArray
 | 
			
		||||
    let packageArray: NpmPackage[] = [];
 | 
			
		||||
    const packageArray: NpmPackage[] = [];
 | 
			
		||||
 | 
			
		||||
    // if request failed just return it empty
 | 
			
		||||
    if (!body || typeof body === 'string') {
 | 
			
		||||
      return packageArray;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    for (let packageArg of body.results) {
 | 
			
		||||
      let localPackage = new NpmPackage(packageArg.package);
 | 
			
		||||
    for (const packageArg of body.results) {
 | 
			
		||||
      const localPackage = new NpmPackage(packageArg.package);
 | 
			
		||||
      packageArray.push(localPackage);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,12 @@
 | 
			
		||||
// @pushrocks scope
 | 
			
		||||
import * as consolecolor from '@pushrocks/consolecolor';
 | 
			
		||||
import * as smartlog from '@pushrocks/smartlog';
 | 
			
		||||
smartlog.defaultLogger.enableConsole();
 | 
			
		||||
import * as smartrequest from '@pushrocks/smartrequest';
 | 
			
		||||
 | 
			
		||||
export { consolecolor, smartlog, smartrequest };
 | 
			
		||||
 | 
			
		||||
// third party scope
 | 
			
		||||
import packageJson from 'package-json';
 | 
			
		||||
 | 
			
		||||
export { packageJson };
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										16
									
								
								tslint.json
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								tslint.json
									
									
									
									
									
								
							@@ -1,3 +1,17 @@
 | 
			
		||||
{
 | 
			
		||||
    "extends": "tslint-config-standard"
 | 
			
		||||
  "extends": ["tslint:latest", "tslint-config-prettier"],
 | 
			
		||||
  "rules": {
 | 
			
		||||
    "semicolon": [true, "always"],
 | 
			
		||||
    "no-console": false,
 | 
			
		||||
    "ordered-imports": false,
 | 
			
		||||
    "object-literal-sort-keys": false,
 | 
			
		||||
    "member-ordering": {
 | 
			
		||||
      "options":{
 | 
			
		||||
        "order": [
 | 
			
		||||
          "static-method"
 | 
			
		||||
        ]
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "defaultSeverity": "warning"
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user