Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@hakuna.cloud/cli

Package Overview
Dependencies
Maintainers
2
Versions
37
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@hakuna.cloud/cli - npm Package Compare versions

Comparing version
2.0.18
to
2.0.19
+4
-1
dist/entities/VHost.js

@@ -59,3 +59,6 @@ "use strict";

const path = tmp[0];
const value = tmp[1].replace(/"/g, '');
let value = tmp[1].replace(/"/g, '');
if (!isNaN(Number(value))) {
value = parseFloat(value);
}
function set(path, value, obj) {

@@ -62,0 +65,0 @@ let schema = obj;

+1
-1

@@ -1,1 +0,1 @@

{"version":3,"file":"VHost.js","sourceRoot":"","sources":["../../src/entities/VHost.ts"],"names":[],"mappings":"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","sourcesContent":["import Bluebird = require(\"bluebird\");\nimport { inject, injectable } from \"inversify\";\nimport TYPES from \"../TYPES\";\nimport { ConsoleUI } from \"../utils/ConsoleUI\";\nimport { KotennaApi } from \"../lib/kotenna/KotennaApi\";\nimport { VHost } from \"../lib/kotenna/VHost\";\nimport { Trigger } from \"../lib/kotenna/Trigger\";\nimport { CloudProvider } from \"../lib/kotenna/CloudProvider\";\nimport container from \"../inversify.config\";\nimport { CloudProviderWorker } from \"../providers/CloudProviderWorker\";\n\ndeclare global { export interface Promise<T> extends Bluebird<T> {} }\nPromise = Bluebird as any;\n\nconst delay = (time) => (result) => new Promise(resolve => setTimeout(() => resolve(result), time));\n\n\n@injectable()\nexport class VHostWorker {\n\n private console: ConsoleUI;\n private api: KotennaApi;\n\n constructor(\n @inject(TYPES.ConsoleUI) ui: ConsoleUI,\n @inject(TYPES.KotennaApi) api: KotennaApi\n ) {\n this.api = api;\n this.console = ui;\n }\n\n async deleteVhost(hostname: string|string[], forceDelete = false) {\n\n if(!hostname) {\n this.console.loaderStart(\"Loading VHost\");\n const list = await this.api.vhost();\n const choices = list.map(v => {\n return {\n name: `[${v.provider_key}] - ${v.node_name} - ${v.hostname}`,\n value: v.hostname\n };\n });\n hostname = await this.console.promptCheckbox(\"Choose which VHost to delete\", choices);\n console.log(hostname);\n }\n\n if(!Array.isArray(hostname)) {\n hostname = [hostname];\n }\n\n if(!forceDelete) {\n const go = await this.console.promptConfirm(`Deleting VHost ${hostname} (the Cloud Instance will NOT be affected in any way) - Confirm?`);\n if(!go) {\n throw new Error (\"Vhost cancelled\");\n }\n }\n\n return Promise.resolve(hostname.map(name => this.api.vhostDelete(name)));\n }\n\n async updateVhost(hostname: string, change: string): Promise<VHost> {\n\n this.console.loaderStart(\"Loading VHost\");\n const list = await this.api.vhost();\n\n const vhost = list.filter(v => v.hostname === hostname)[0];\n\n if(!vhost) {\n return Promise.reject(`VHost ${hostname} not found`);\n }\n\n const tmp = change.split(\"=\");\n const path = tmp[0];\n const value = tmp[1].replace(/\"/g, '');\n\n // source: https://stackoverflow.com/questions/18936915/dynamically-set-property-of-nested-object\n function set(path, value, obj) {\n let schema = obj; // a moving reference to internal objects within obj\n const pList = path.split('.');\n const len = pList.length;\n for(let i = 0; i < len - 1; i++) {\n const elem = pList[i];\n if( !schema[elem] ) schema[elem] = {}\n schema = schema[elem];\n }\n schema[pList[len - 1]] = value;\n }\n\n set(path, value, vhost);\n\n this.console.loaderStart(\"Updating VHost\");\n return this.api.vhostSave(vhost);\n\n }\n\n async stopVhost(hostname: string|null): Promise<string> {\n\n if(!hostname) {\n this.console.loaderStart(\"Loading VHost\");\n const list = await this.api.vhost();\n hostname = await this.console.promptList(\"Choose the VHost to stop\", list.map(v => {\n return {value: v.hostname, name: `${v.node_name} [${v.hostname}]` };\n }));\n }\n\n this.console.loaderStart(`Halting ${hostname}`);\n return this.api.vhostStop(hostname!);\n }\n\n\n listVhost(): Promise<VHost[]|Error> {\n this.console.loaderStart(\"Loading VHost\");\n return this.api.vhost();\n }\n\n async createVhost(): Promise<VHost> {\n\n\n // 1) Choose a provider, first by choosing a flavour\n this.console.loaderStart(\"Loading CloudProviders\");\n const providers = await this.api.providers();\n const providersByFlavour = groupByApi(providers);\n const flavour = await this.console.promptList(\"Choose a flavour\", Object.keys(providersByFlavour));\n const choosenProviderName = await this.console.promptList(\"Choose a CloudProvider\", Object.keys(providersByFlavour[flavour]));\n\n const provider: CloudProvider = providers.find(p => p.name === choosenProviderName)!;\n\n // 2) Get the running instances, and convert them to a tpl\n this.console.loaderStart(\"Loading available instances\");\n const instances = await this.api.instances(provider.name);\n const instance = await this.console.promptList(\"Choose an instance\", instances.map((i, index) => { return { value: i, name: i.name }; }));\n this.console.loaderStart(`Importing ${instance.id}`);\n const tpl = await this.api.instanceTpl(provider.name, instance.id);\n\n const options: any = {\n stopOptions: {}\n };\n \n let hostname = await this.console.promptInput(\"Please specify a domain name for the VHost\");\n hostname = hostname.replace(/http(s?):\\/\\//,'');\n\n this.console.log(`Creating VHost from ${provider.api}/${provider.name} - ${instance.name} with FQDN ${hostname}`);\n // 3) Invoke the Cloud provider API to validate and generate the VHost\n const worker = container.get<CloudProviderWorker>(TYPES.CloudProvidertWorker(flavour));\n\n const vhost = await worker.createVhost(hostname, instance, provider, tpl.tpl, options);\n this.console.loaderStart(\"VHost is cooking...\");\n return this.api.vhostSave(vhost);\n // return new Promise(r => r(new VHost({hostname: '', provider_api: '', node_name: '', provider_key: ''})));\n }\n\n\n}\n\nfunction groupByApi(providers: CloudProvider[]): any {\n return providers.reduce((acc, prov) => {\n if(!acc[prov.api]) {\n acc[prov.api] = {};\n }\n acc[prov.api][prov.name] = prov;\n return acc;\n }, {});\n}\n"]}
{"version":3,"file":"VHost.js","sourceRoot":"","sources":["../../src/entities/VHost.ts"],"names":[],"mappings":"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","sourcesContent":["import Bluebird = require(\"bluebird\");\nimport { inject, injectable } from \"inversify\";\nimport TYPES from \"../TYPES\";\nimport { ConsoleUI } from \"../utils/ConsoleUI\";\nimport { KotennaApi } from \"../lib/kotenna/KotennaApi\";\nimport { VHost } from \"../lib/kotenna/VHost\";\nimport { Trigger } from \"../lib/kotenna/Trigger\";\nimport { CloudProvider } from \"../lib/kotenna/CloudProvider\";\nimport container from \"../inversify.config\";\nimport { CloudProviderWorker } from \"../providers/CloudProviderWorker\";\n\ndeclare global { export interface Promise<T> extends Bluebird<T> {} }\nPromise = Bluebird as any;\n\nconst delay = (time) => (result) => new Promise(resolve => setTimeout(() => resolve(result), time));\n\n\n@injectable()\nexport class VHostWorker {\n\n private console: ConsoleUI;\n private api: KotennaApi;\n\n constructor(\n @inject(TYPES.ConsoleUI) ui: ConsoleUI,\n @inject(TYPES.KotennaApi) api: KotennaApi\n ) {\n this.api = api;\n this.console = ui;\n }\n\n async deleteVhost(hostname: string|string[], forceDelete = false) {\n\n if(!hostname) {\n this.console.loaderStart(\"Loading VHost\");\n const list = await this.api.vhost();\n const choices = list.map(v => {\n return {\n name: `[${v.provider_key}] - ${v.node_name} - ${v.hostname}`,\n value: v.hostname\n };\n });\n hostname = await this.console.promptCheckbox(\"Choose which VHost to delete\", choices);\n console.log(hostname);\n }\n\n if(!Array.isArray(hostname)) {\n hostname = [hostname];\n }\n\n if(!forceDelete) {\n const go = await this.console.promptConfirm(`Deleting VHost ${hostname} (the Cloud Instance will NOT be affected in any way) - Confirm?`);\n if(!go) {\n throw new Error (\"Vhost cancelled\");\n }\n }\n\n return Promise.resolve(hostname.map(name => this.api.vhostDelete(name)));\n }\n\n async updateVhost(hostname: string, change: string): Promise<VHost> {\n\n this.console.loaderStart(\"Loading VHost\");\n const list = await this.api.vhost();\n\n const vhost = list.filter(v => v.hostname === hostname)[0];\n\n if(!vhost) {\n return Promise.reject(`VHost ${hostname} not found`);\n }\n\n const tmp = change.split(\"=\");\n const path = tmp[0];\n let value: string | number = tmp[1].replace(/\"/g, '');\n if (!isNaN(Number(value))) {\n value = parseFloat(value);\n }\n // source: https://stackoverflow.com/questions/18936915/dynamically-set-property-of-nested-object\n function set(path, value, obj) {\n let schema = obj; // a moving reference to internal objects within obj\n const pList = path.split('.');\n const len = pList.length;\n for(let i = 0; i < len - 1; i++) {\n const elem = pList[i];\n if( !schema[elem] ) schema[elem] = {}\n schema = schema[elem];\n }\n schema[pList[len - 1]] = value;\n }\n\n set(path, value, vhost);\n\n this.console.loaderStart(\"Updating VHost\");\n return this.api.vhostSave(vhost);\n\n }\n\n async stopVhost(hostname: string|null): Promise<string> {\n\n if(!hostname) {\n this.console.loaderStart(\"Loading VHost\");\n const list = await this.api.vhost();\n hostname = await this.console.promptList(\"Choose the VHost to stop\", list.map(v => {\n return {value: v.hostname, name: `${v.node_name} [${v.hostname}]` };\n }));\n }\n\n this.console.loaderStart(`Halting ${hostname}`);\n return this.api.vhostStop(hostname!);\n }\n\n\n listVhost(): Promise<VHost[]|Error> {\n this.console.loaderStart(\"Loading VHost\");\n return this.api.vhost();\n }\n\n async createVhost(): Promise<VHost> {\n\n\n // 1) Choose a provider, first by choosing a flavour\n this.console.loaderStart(\"Loading CloudProviders\");\n const providers = await this.api.providers();\n const providersByFlavour = groupByApi(providers);\n const flavour = await this.console.promptList(\"Choose a flavour\", Object.keys(providersByFlavour));\n const choosenProviderName = await this.console.promptList(\"Choose a CloudProvider\", Object.keys(providersByFlavour[flavour]));\n\n const provider: CloudProvider = providers.find(p => p.name === choosenProviderName)!;\n\n // 2) Get the running instances, and convert them to a tpl\n this.console.loaderStart(\"Loading available instances\");\n const instances = await this.api.instances(provider.name);\n const instance = await this.console.promptList(\"Choose an instance\", instances.map((i, index) => { return { value: i, name: i.name }; }));\n this.console.loaderStart(`Importing ${instance.id}`);\n const tpl = await this.api.instanceTpl(provider.name, instance.id);\n\n const options: any = {\n stopOptions: {}\n };\n\n let hostname = await this.console.promptInput(\"Please specify a domain name for the VHost\");\n hostname = hostname.replace(/http(s?):\\/\\//,'');\n\n this.console.log(`Creating VHost from ${provider.api}/${provider.name} - ${instance.name} with FQDN ${hostname}`);\n // 3) Invoke the Cloud provider API to validate and generate the VHost\n const worker = container.get<CloudProviderWorker>(TYPES.CloudProvidertWorker(flavour));\n\n const vhost = await worker.createVhost(hostname, instance, provider, tpl.tpl, options);\n this.console.loaderStart(\"VHost is cooking...\");\n return this.api.vhostSave(vhost);\n // return new Promise(r => r(new VHost({hostname: '', provider_api: '', node_name: '', provider_key: ''})));\n }\n\n\n}\n\nfunction groupByApi(providers: CloudProvider[]): any {\n return providers.reduce((acc, prov) => {\n if(!acc[prov.api]) {\n acc[prov.api] = {};\n }\n acc[prov.api][prov.name] = prov;\n return acc;\n }, {});\n}\n"]}
{
"name": "@hakuna.cloud/cli",
"version": "2.0.18",
"version": "2.0.19",
"description": "",

@@ -5,0 +5,0 @@ "scripts": {