@twg-group/container-manager
Version:
Container management for Docker, Swarm, Kubernetes
78 lines • 3.23 kB
JavaScript
;
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ContainerManagerClient = void 0;
const axios_1 = __importDefault(require("axios"));
const class_transformer_1 = require("class-transformer");
const common_1 = require("@nestjs/common");
const _dto_1 = require("../container/dto/index");
let ContainerManagerClient = class ContainerManagerClient {
baseUrl;
options;
http;
constructor(baseUrl, options = {}) {
this.baseUrl = baseUrl;
this.options = options;
this.http = axios_1.default.create({
baseURL: `${baseUrl.replace(/\/$/, '')}/containers`,
timeout: options.timeout ?? 10_000,
headers: {
'Content-Type': 'application/json',
Authorization: options.token ? `Bearer ${options.token}` : undefined,
},
});
}
async deploy(config) {
const { data } = await this.http.post('/', config);
return data;
}
async list(filter) {
const { data } = await this.http.get('', {
params: filter,
});
return {
containers: (0, class_transformer_1.plainToInstance)(_dto_1.InfoDto, data.containers),
};
}
async getById(id) {
const { data } = await this.http.get(`/${id}`);
return (0, class_transformer_1.plainToInstance)(_dto_1.InfoDto, data);
}
async getLogs(id, since, tail) {
const params = { since, tail };
const { data } = await this.http.get(`/${id}/logs`, {
params,
});
return {
logs: (0, class_transformer_1.plainToInstance)(_dto_1.LogDto, data.logs),
};
}
async start(id) {
const { data } = await this.http.post(`/${id}/start`);
return data;
}
async stop(id, timeout) {
const { data } = await this.http.post(`/${id}/stop`, undefined, { params: timeout ? { timeout } : {} });
return data;
}
async remove(id) {
await this.http.delete(`/${id}`);
}
};
exports.ContainerManagerClient = ContainerManagerClient;
exports.ContainerManagerClient = ContainerManagerClient = __decorate([
(0, common_1.Injectable)(),
__metadata("design:paramtypes", [String, Object])
], ContainerManagerClient);
//# sourceMappingURL=container-manager-client.js.map