mirror of
https://github.com/verdaccio/verdaccio.git
synced 2024-11-13 03:35:52 +01:00
558d78f32a
* feat: flexible template generator and manifest * chore: add changeset * chore: restore dep * chore: add docs * chore: update snapshots * chore: update docker examples for v5 * chore: refactor web module * chore: format * chore: refactor web api endpoints * test: add test for user login web * chore: refactor endpoints * chore: fix merge * chore: fix merge * Update ci.yml * chore: test * chore: add static * chore: update script * chore: fix e2e * chore: fix method * docs: update v5 relative docker example * chore: update html render * chore: update style * Update .prettierignore * chore: update changeset * chore: use pnpm6 on run test temporary ci * chore: drop node 16 for pnpm 6 * chore: update ci * chore: update ci * chore: update ci * chore: update ci * chore: remove circle ci * chore: better url prefix handling * chore: format code * chore: remove test node 10 * docs: add docker v5 relative revers proxy example * chore: use base html tag * chore: update test
69 lines
1.8 KiB
TypeScript
69 lines
1.8 KiB
TypeScript
import { fork } from 'child_process';
|
|
import path from 'path';
|
|
|
|
import { HTTP_STATUS } from '@verdaccio/commons-api';
|
|
|
|
const debug = require('debug')('verdaccio:e2e:ui:launcher');
|
|
|
|
export const CREDENTIALS = {
|
|
user: 'foo',
|
|
password: 'test',
|
|
};
|
|
|
|
export default class VerdaccioProcess {
|
|
private bridge;
|
|
private config;
|
|
private childFork;
|
|
|
|
public constructor(config, bridge) {
|
|
this.config = config;
|
|
this.bridge = bridge;
|
|
}
|
|
|
|
public init(verdaccioPath) {
|
|
return new Promise((resolve, reject) => {
|
|
this._start(verdaccioPath, resolve, reject);
|
|
});
|
|
}
|
|
|
|
private _start(verdaccioPath: string, resolve: Function, reject: Function) {
|
|
const verdaccioRegisterWrap: string = path.join(verdaccioPath);
|
|
const childOptions = {
|
|
silent: false,
|
|
};
|
|
|
|
const { configPath, port } = this.config;
|
|
debug('config path: %o', configPath);
|
|
debug('port: %o', port);
|
|
this.childFork = fork(
|
|
verdaccioRegisterWrap,
|
|
['-c', configPath, '-l', port as string],
|
|
childOptions
|
|
);
|
|
|
|
this.childFork.on('message', (msg) => {
|
|
// verdaccio_started is a message that comes from verdaccio in debug mode that notify has been started
|
|
if ('verdaccio_started' in msg) {
|
|
this.bridge
|
|
.debug()
|
|
.status(HTTP_STATUS.OK)
|
|
.then((body) => {
|
|
this.bridge
|
|
.auth(CREDENTIALS.user, CREDENTIALS.password)
|
|
.status(HTTP_STATUS.CREATED)
|
|
.body_ok(new RegExp(CREDENTIALS.user))
|
|
.then(() => resolve([this, body.pid]), reject);
|
|
}, reject);
|
|
}
|
|
});
|
|
|
|
this.childFork.on('error', (err) => reject([err, this]));
|
|
this.childFork.on('disconnect', (err) => reject([err, this]));
|
|
this.childFork.on('exit', (err) => reject([err, this]));
|
|
}
|
|
|
|
public stop(): void {
|
|
return this.childFork.kill('SIGINT');
|
|
}
|
|
}
|