Compare commits

...

8 Commits

Author SHA1 Message Date
8e943512f8 1.0.21 2021-04-19 14:22:42 +00:00
c010319076 fix(core): update 2021-04-19 14:22:42 +00:00
cf03e58c6f 1.0.20 2021-04-19 12:55:12 +00:00
d59875f23f fix(core): update 2021-04-19 12:55:11 +00:00
6b13e46947 1.0.19 2020-10-02 14:39:47 +00:00
096c38de9e fix(core): update 2020-10-02 14:39:46 +00:00
7292b45d33 1.0.18 2020-10-02 13:28:40 +00:00
3ddad53d29 fix(core): update 2020-10-02 13:28:39 +00:00
10 changed files with 7551 additions and 1175 deletions

View File

@ -19,23 +19,35 @@ mirror:
stage: security stage: security
script: script:
- npmci git mirror - npmci git mirror
only:
- tags
tags: tags:
- lossless - lossless
- docker - docker
- notpriv - notpriv
audit: auditProductionDependencies:
image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
stage: security
script:
- npmci npm prepare
- npmci command npm install --production --ignore-scripts
- npmci command npm config set registry https://registry.npmjs.org
- npmci command npm audit --audit-level=high --only=prod --production
tags:
- docker
auditDevDependencies:
image: registry.gitlab.com/hosttoday/ht-docker-node:npmci image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
stage: security stage: security
script: script:
- npmci npm prepare - npmci npm prepare
- npmci command npm install --ignore-scripts - npmci command npm install --ignore-scripts
- npmci command npm config set registry https://registry.npmjs.org - npmci command npm config set registry https://registry.npmjs.org
- npmci command npm audit --audit-level=high - npmci command npm audit --audit-level=high --only=dev
tags: tags:
- lossless
- docker - docker
- notpriv allow_failure: true
# ==================== # ====================
# test stage # test stage
@ -50,9 +62,7 @@ testStable:
- npmci npm test - npmci npm test
coverage: /\d+.?\d+?\%\s*coverage/ coverage: /\d+.?\d+?\%\s*coverage/
tags: tags:
- lossless
- docker - docker
- priv
testBuild: testBuild:
stage: test stage: test
@ -63,9 +73,7 @@ testBuild:
- npmci command npm run build - npmci command npm run build
coverage: /\d+.?\d+?\%\s*coverage/ coverage: /\d+.?\d+?\%\s*coverage/
tags: tags:
- lossless
- docker - docker
- notpriv
release: release:
stage: release stage: release
@ -85,6 +93,8 @@ release:
codequality: codequality:
stage: metadata stage: metadata
allow_failure: true allow_failure: true
only:
- tags
script: script:
- npmci command npm install -g tslint typescript - npmci command npm install -g tslint typescript
- npmci npm prepare - npmci npm prepare

View File

@ -15,7 +15,7 @@
"properties": { "properties": {
"projectType": { "projectType": {
"type": "string", "type": "string",
"enum": ["website", "element", "service", "npm"] "enum": ["website", "element", "service", "npm", "wcc"]
} }
} }
} }

8609
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{ {
"name": "@pushrocks/smartnpm", "name": "@pushrocks/smartnpm",
"version": "1.0.17", "version": "1.0.21",
"private": false, "private": false,
"description": "interface with npm to retrieve package information", "description": "interface with npm to retrieve package information",
"main": "dist_ts/index.js", "main": "dist_ts/index.js",
@ -12,19 +12,20 @@
"build": "(tsbuild --web)" "build": "(tsbuild --web)"
}, },
"devDependencies": { "devDependencies": {
"@gitzone/tsbuild": "^2.1.24", "@gitzone/tsbuild": "^2.1.25",
"@gitzone/tsrun": "^1.2.12", "@gitzone/tsrun": "^1.2.12",
"@gitzone/tstest": "^1.0.33", "@gitzone/tstest": "^1.0.52",
"@pushrocks/tapbundle": "^3.2.1", "@pushrocks/tapbundle": "^3.2.14",
"@types/node": "^14.0.14", "@types/node": "^14.14.41",
"tslint": "^6.1.2", "tslint": "^6.1.3",
"tslint-config-prettier": "^1.18.0" "tslint-config-prettier": "^1.18.0"
}, },
"dependencies": { "dependencies": {
"@pushrocks/consolecolor": "^2.0.1", "@pushrocks/consolecolor": "^2.0.1",
"@pushrocks/smartarchive": "^1.0.12", "@pushrocks/smartarchive": "^2.0.4",
"@pushrocks/smartfile": "^7.0.12", "@pushrocks/smartfile": "^8.0.9",
"@pushrocks/smartrequest": "^1.1.47", "@pushrocks/smartpromise": "^3.1.3",
"@pushrocks/smartrequest": "^1.1.51",
"package-json": "^6.5.0" "package-json": "^6.5.0"
}, },
"files": [ "files": [
@ -38,5 +39,8 @@
"cli.js", "cli.js",
"npmextra.json", "npmextra.json",
"readme.md" "readme.md"
],
"browserslist": [
"last 1 chrome versions"
] ]
} }

0
qenv.yml Normal file
View File

View File

@ -17,7 +17,7 @@ tap.test('should create valid instances', async () => {
tap.test('should produce a valid search string and this return npmts', async () => { tap.test('should produce a valid search string and this return npmts', async () => {
const packages = await npmRegistry.searchOnNpm({ const packages = await npmRegistry.searchOnNpm({
name: '@pushrocks/smartupdate' name: '@pushrocks/smartupdate',
}); });
expect(packages[0].name).to.equal('@pushrocks/smartupdate'); expect(packages[0].name).to.equal('@pushrocks/smartupdate');
}); });
@ -25,7 +25,7 @@ tap.test('should produce a valid search string and this return npmts', async ()
// lets test things with the verdaccio registry // lets test things with the verdaccio registry
tap.test('should create a verdaccio registry', async () => { tap.test('should create a verdaccio registry', async () => {
verdaccioRegistry = new NpmRegistry({ verdaccioRegistry = new NpmRegistry({
npmRegistryUrl: 'https://verdaccio.lossless.one' npmRegistryUrl: 'https://verdaccio.lossless.one',
}); });
expect(verdaccioRegistry).to.be.instanceOf(smartnpm.NpmRegistry); expect(verdaccioRegistry).to.be.instanceOf(smartnpm.NpmRegistry);
}); });
@ -39,8 +39,9 @@ tap.test('should get package from verdaccio', async () => {
tap.test('should get a specific file from a package', async () => { tap.test('should get a specific file from a package', async () => {
const bundleFile = await verdaccioRegistry.getFileFromPackage( const bundleFile = await verdaccioRegistry.getFileFromPackage(
'@pushrocks/websetup', '@pushrocks/websetup',
'dist_bundle/bundle.js' 'ts/index.ts'
); );
console.log(bundleFile.contentBuffer.toString());
}); });
tap.start(); tap.start();

View File

@ -48,9 +48,9 @@ export class NpmPackage {
} = null; } = null;
public searchScore: number = null; public searchScore: number = null;
public npmRegistry: NpmRegistry; public npmRegistryRef: NpmRegistry;
constructor(npmRegistryArg: NpmRegistry) { constructor(npmRegistryArg: NpmRegistry) {
this.npmRegistry = npmRegistryArg; this.npmRegistryRef = npmRegistryArg;
} }
/** /**
@ -58,6 +58,38 @@ export class NpmPackage {
*/ */
public async saveToDisk(targetDir: string) { public async saveToDisk(targetDir: string) {
const smartarchiveInstance = new plugins.smartarchive.SmartArchive(); const smartarchiveInstance = new plugins.smartarchive.SmartArchive();
await smartarchiveInstance.extractArchiveFromUrl(this.dist.tarball, targetDir); await smartarchiveInstance.extractArchiveFromUrlToFs(this.dist.tarball, targetDir);
}
/**
* saves the package to memory
*/
public async saveToMemory() {}
/**
* get file from package
*/
public async getFileFromPackage(filePath: string): Promise<plugins.smartfile.Smartfile> {
const done = plugins.smartpromise.defer<plugins.smartfile.Smartfile>();
const smartarchiveInstance = new plugins.smartarchive.SmartArchive();
const fileObservable = await smartarchiveInstance.extractArchiveFromUrlToObservable(
this.dist.tarball
);
const wantedFilePath = plugins.path.join('package', filePath);
const subscription = fileObservable.subscribe(
(fileArg) => {
if (fileArg.path === wantedFilePath) {
done.resolve(fileArg);
subscription.unsubscribe();
}
},
(err) => {
console.log(err);
},
() => {
subscription.unsubscribe();
}
);
return done.promise;
} }
} }

View File

@ -45,6 +45,7 @@ export class NpmRegistry {
* @param targetDir * @param targetDir
*/ */
public async savePackageToDisk(packageName: string, targetDir: string): Promise<void> { public async savePackageToDisk(packageName: string, targetDir: string): Promise<void> {
plugins.smartfile.fs.ensureDirSync(paths.nogitDir);
const npmPackage = await this.getPackageInfo(packageName); const npmPackage = await this.getPackageInfo(packageName);
await npmPackage.saveToDisk(targetDir); await npmPackage.saveToDisk(targetDir);
} }
@ -52,15 +53,18 @@ export class NpmRegistry {
/** /**
* gets a file from a package as Smartfile * gets a file from a package as Smartfile
*/ */
public async getFileFromPackage(packageName: string, filePath: string) { public async getFileFromPackage(packageNameArg: string, filePath: string): Promise<plugins.smartfile.Smartfile> {
const baseDir = plugins.path.join(paths.nogitDir, packageName.replace('/', '__')); const npmPackage = await this.getPackageInfo(packageNameArg);
return npmPackage.getFileFromPackage(filePath);
}
public async getPackageAsSmartfileVirtualDir(packageNameArg: string): Promise<plugins.smartfile.VirtualDirectory> {
const baseDir = plugins.path.join(paths.nogitDir, packageNameArg.replace('/', '__'));
await plugins.smartfile.fs.ensureDir(baseDir); await plugins.smartfile.fs.ensureDir(baseDir);
await this.savePackageToDisk(packageName, baseDir); await this.savePackageToDisk(packageNameArg, baseDir);
const smartfile = await plugins.smartfile.Smartfile.fromFilePath( const virtualDir = await plugins.smartfile.VirtualDirectory.fromFsDirPath(baseDir);
plugins.path.join(baseDir, 'package', filePath)
);
await plugins.smartfile.fs.remove(baseDir); await plugins.smartfile.fs.remove(baseDir);
return smartfile; return virtualDir;
} }
/** /**

View File

@ -2,4 +2,3 @@ import * as plugins from './smartnpm.plugins';
export const packageDir = plugins.path.join(__dirname, '../'); export const packageDir = plugins.path.join(__dirname, '../');
export const nogitDir = plugins.path.join(packageDir, '.nogit/'); export const nogitDir = plugins.path.join(packageDir, '.nogit/');
plugins.smartfile.fs.ensureDirSync(nogitDir);

View File

@ -7,9 +7,10 @@ export { path };
import * as consolecolor from '@pushrocks/consolecolor'; import * as consolecolor from '@pushrocks/consolecolor';
import * as smartarchive from '@pushrocks/smartarchive'; import * as smartarchive from '@pushrocks/smartarchive';
import * as smartfile from '@pushrocks/smartfile'; import * as smartfile from '@pushrocks/smartfile';
import * as smartpromise from '@pushrocks/smartpromise';
import * as smartrequest from '@pushrocks/smartrequest'; import * as smartrequest from '@pushrocks/smartrequest';
export { consolecolor, smartarchive, smartfile, smartrequest }; export { consolecolor, smartarchive, smartfile, smartpromise, smartrequest };
// third party scope // third party scope
import packageJson from 'package-json'; import packageJson from 'package-json';