@goldstack/infra-hetzner 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/dist/src/infraHetzner.d.ts +14 -0
- package/dist/src/infraHetzner.d.ts.map +1 -0
- package/dist/src/infraHetzner.js +71 -0
- package/dist/src/infraHetzner.js.map +1 -0
- package/dist/src/schemas/accountConfigSchema.json +53 -0
- package/dist/src/schemas/deploymentConfigSchema.json +41 -0
- package/dist/src/types/HetznerConfiguration.d.ts +21 -0
- package/dist/src/types/HetznerConfiguration.d.ts.map +1 -0
- package/dist/src/types/HetznerConfiguration.js +3 -0
- package/dist/src/types/HetznerConfiguration.js.map +1 -0
- package/dist/src/types/HetznerDeployment.d.ts +11 -0
- package/dist/src/types/HetznerDeployment.d.ts.map +1 -0
- package/dist/src/types/HetznerDeployment.js +3 -0
- package/dist/src/types/HetznerDeployment.js.map +1 -0
- package/package.json +65 -0
package/README.md
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { HetznerConfiguration } from './types/HetznerConfiguration';
|
|
2
|
+
import { HetznerUser } from './types/HetznerConfiguration';
|
|
3
|
+
import { HetznerDeployment } from './types/HetznerDeployment';
|
|
4
|
+
export type { HetznerUser, HetznerDeployment };
|
|
5
|
+
export declare const readDeploymentFromPackageConfig: (deploymentName: string, path?: string) => HetznerDeployment;
|
|
6
|
+
export declare const hasConfig: (path?: string) => boolean;
|
|
7
|
+
export declare const readConfig: (path?: string) => HetznerConfiguration;
|
|
8
|
+
export declare const writeConfig: (config: HetznerConfiguration, path?: string) => void;
|
|
9
|
+
export declare const createDefaultConfig: () => HetznerConfiguration;
|
|
10
|
+
/**
|
|
11
|
+
* Obtains AWS user credentials from config file or environment variables.
|
|
12
|
+
*/
|
|
13
|
+
export declare const getHetznerUser: (userName: string, configPath?: string) => Promise<HetznerUser>;
|
|
14
|
+
//# sourceMappingURL=infraHetzner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"infraHetzner.d.ts","sourceRoot":"","sources":["../../src/infraHetzner.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEpE,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC;AAE/C,eAAO,MAAM,+BAA+B,mBAC1B,MAAM,SACf,MAAM,KACZ,iBAcF,CAAC;AAEF,eAAO,MAAM,SAAS,UAAW,MAAM,KAAG,OAOzC,CAAC;AAEF,eAAO,MAAM,UAAU,UAAW,MAAM,KAAG,oBAa1C,CAAC;AAEF,eAAO,MAAM,WAAW,WACd,oBAAoB,SACrB,MAAM,KACZ,IAKF,CAAC;AAEF,eAAO,MAAM,mBAAmB,QAAO,oBAItC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,aACf,MAAM,eACH,MAAM,KAClB,QAAQ,WAAW,CAOrB,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getHetznerUser = exports.createDefaultConfig = exports.writeConfig = exports.readConfig = exports.hasConfig = exports.readDeploymentFromPackageConfig = void 0;
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const utils_config_1 = require("@goldstack/utils-config");
|
|
9
|
+
const utils_sh_1 = require("@goldstack/utils-sh");
|
|
10
|
+
const utils_package_1 = require("@goldstack/utils-package");
|
|
11
|
+
const accountConfigSchema_json_1 = __importDefault(require("./schemas/accountConfigSchema.json"));
|
|
12
|
+
const deploymentConfigSchema_json_1 = __importDefault(require("./schemas/deploymentConfigSchema.json"));
|
|
13
|
+
const readDeploymentFromPackageConfig = (deploymentName, path) => {
|
|
14
|
+
const packageConfig = (0, utils_package_1.readPackageConfig)(path);
|
|
15
|
+
const deployment = packageConfig.deployments.find((d) => d.name === deploymentName);
|
|
16
|
+
if (!deployment) {
|
|
17
|
+
throw new Error('Cannot find deployment with name: ' + deploymentName);
|
|
18
|
+
}
|
|
19
|
+
(0, utils_config_1.validateConfig)(deployment, deploymentConfigSchema_json_1.default, {
|
|
20
|
+
errorMessage: `Invalid Hetzner deployment ${deploymentName}`,
|
|
21
|
+
});
|
|
22
|
+
return deployment;
|
|
23
|
+
};
|
|
24
|
+
exports.readDeploymentFromPackageConfig = readDeploymentFromPackageConfig;
|
|
25
|
+
const hasConfig = (path) => {
|
|
26
|
+
if (!path) {
|
|
27
|
+
path = (0, utils_config_1.getHetznerConfigPath)('./../../');
|
|
28
|
+
}
|
|
29
|
+
// otherwise check default config file location
|
|
30
|
+
return fs_1.default.existsSync(path);
|
|
31
|
+
};
|
|
32
|
+
exports.hasConfig = hasConfig;
|
|
33
|
+
const readConfig = (path) => {
|
|
34
|
+
if (!path) {
|
|
35
|
+
path = (0, utils_config_1.getHetznerConfigPath)('./../../');
|
|
36
|
+
}
|
|
37
|
+
// otherwise check default config file location
|
|
38
|
+
if (!fs_1.default.existsSync(path)) {
|
|
39
|
+
throw new Error(`AWS configuration file does not exist: ${path}.`);
|
|
40
|
+
}
|
|
41
|
+
return (0, utils_config_1.parseConfig)((0, utils_sh_1.read)(path), accountConfigSchema_json_1.default, {
|
|
42
|
+
errorMessage: `Cannot load AWS configuration from ${path}`,
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
exports.readConfig = readConfig;
|
|
46
|
+
const writeConfig = (config, path) => {
|
|
47
|
+
if (!path) {
|
|
48
|
+
path = (0, utils_config_1.getHetznerConfigPath)('./../../');
|
|
49
|
+
}
|
|
50
|
+
(0, utils_sh_1.write)(JSON.stringify(config, null, 2), path);
|
|
51
|
+
};
|
|
52
|
+
exports.writeConfig = writeConfig;
|
|
53
|
+
const createDefaultConfig = () => {
|
|
54
|
+
return {
|
|
55
|
+
users: [],
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
exports.createDefaultConfig = createDefaultConfig;
|
|
59
|
+
/**
|
|
60
|
+
* Obtains AWS user credentials from config file or environment variables.
|
|
61
|
+
*/
|
|
62
|
+
const getHetznerUser = async (userName, configPath) => {
|
|
63
|
+
const config = (0, exports.readConfig)(configPath);
|
|
64
|
+
const user = config.users.find((u) => u.name == userName);
|
|
65
|
+
if (!user) {
|
|
66
|
+
throw new Error('Cannot find Hetzner user ' + userName);
|
|
67
|
+
}
|
|
68
|
+
return user;
|
|
69
|
+
};
|
|
70
|
+
exports.getHetznerUser = getHetznerUser;
|
|
71
|
+
//# sourceMappingURL=infraHetzner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"infraHetzner.js","sourceRoot":"","sources":["../../src/infraHetzner.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,0DAIiC;AACjC,kDAAkD;AAElD,4DAA6D;AAE7D,kGAA8D;AAE9D,wGAA2E;AASpE,MAAM,+BAA+B,GAAG,CAC7C,cAAsB,EACtB,IAAa,EACM,EAAE;IACrB,MAAM,aAAa,GAAG,IAAA,iCAAiB,EAAC,IAAI,CAAC,CAAC;IAE9C,MAAM,UAAU,GAAG,aAAa,CAAC,WAAW,CAAC,IAAI,CAC/C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CACjC,CAAC;IACF,IAAI,CAAC,UAAU,EAAE;QACf,MAAM,IAAI,KAAK,CAAC,oCAAoC,GAAG,cAAc,CAAC,CAAC;KACxE;IAED,IAAA,6BAAc,EAAC,UAAU,EAAE,qCAAsB,EAAE;QACjD,YAAY,EAAE,8BAA8B,cAAc,EAAE;KAC7D,CAAC,CAAC;IACH,OAAO,UAA+B,CAAC;AACzC,CAAC,CAAC;AAjBW,QAAA,+BAA+B,mCAiB1C;AAEK,MAAM,SAAS,GAAG,CAAC,IAAa,EAAW,EAAE;IAClD,IAAI,CAAC,IAAI,EAAE;QACT,IAAI,GAAG,IAAA,mCAAoB,EAAC,UAAU,CAAC,CAAC;KACzC;IAED,+CAA+C;IAC/C,OAAO,YAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC,CAAC;AAPW,QAAA,SAAS,aAOpB;AAEK,MAAM,UAAU,GAAG,CAAC,IAAa,EAAwB,EAAE;IAChE,IAAI,CAAC,IAAI,EAAE;QACT,IAAI,GAAG,IAAA,mCAAoB,EAAC,UAAU,CAAC,CAAC;KACzC;IAED,+CAA+C;IAC/C,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;QACxB,MAAM,IAAI,KAAK,CAAC,0CAA0C,IAAI,GAAG,CAAC,CAAC;KACpE;IAED,OAAO,IAAA,0BAAW,EAAC,IAAA,eAAI,EAAC,IAAI,CAAC,EAAE,kCAAY,EAAE;QAC3C,YAAY,EAAE,sCAAsC,IAAI,EAAE;KAC3D,CAAyB,CAAC;AAC7B,CAAC,CAAC;AAbW,QAAA,UAAU,cAarB;AAEK,MAAM,WAAW,GAAG,CACzB,MAA4B,EAC5B,IAAa,EACP,EAAE;IACR,IAAI,CAAC,IAAI,EAAE;QACT,IAAI,GAAG,IAAA,mCAAoB,EAAC,UAAU,CAAC,CAAC;KACzC;IACD,IAAA,gBAAK,EAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAC/C,CAAC,CAAC;AARW,QAAA,WAAW,eAQtB;AAEK,MAAM,mBAAmB,GAAG,GAAyB,EAAE;IAC5D,OAAO;QACL,KAAK,EAAE,EAAE;KACV,CAAC;AACJ,CAAC,CAAC;AAJW,QAAA,mBAAmB,uBAI9B;AAEF;;GAEG;AACI,MAAM,cAAc,GAAG,KAAK,EACjC,QAAgB,EAChB,UAAmB,EACG,EAAE;IACxB,MAAM,MAAM,GAAG,IAAA,kBAAU,EAAC,UAAU,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,QAAQ,CAAC,CAAC;IAC1D,IAAI,CAAC,IAAI,EAAE;QACT,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,QAAQ,CAAC,CAAC;KACzD;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAVW,QAAA,cAAc,kBAUzB"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$ref": "#/definitions/HetznerConfiguration",
|
|
3
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
4
|
+
"definitions": {
|
|
5
|
+
"HetznerConfiguration": {
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"description": "Global configuration for deploying to Hetzner.",
|
|
8
|
+
"properties": {
|
|
9
|
+
"users": {
|
|
10
|
+
"items": {
|
|
11
|
+
"$ref": "#/definitions/HetznerUser"
|
|
12
|
+
},
|
|
13
|
+
"type": "array"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"required": [
|
|
17
|
+
"users"
|
|
18
|
+
],
|
|
19
|
+
"title": "Hetzner Configuration",
|
|
20
|
+
"type": "object"
|
|
21
|
+
},
|
|
22
|
+
"HetznerUser": {
|
|
23
|
+
"additionalProperties": false,
|
|
24
|
+
"description": "Hetzner user",
|
|
25
|
+
"properties": {
|
|
26
|
+
"config": {
|
|
27
|
+
"$ref": "#/definitions/HetznerUserConfig"
|
|
28
|
+
},
|
|
29
|
+
"name": {
|
|
30
|
+
"type": "string"
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"required": [
|
|
34
|
+
"name",
|
|
35
|
+
"config"
|
|
36
|
+
],
|
|
37
|
+
"title": "Hetzner User",
|
|
38
|
+
"type": "object"
|
|
39
|
+
},
|
|
40
|
+
"HetznerUserConfig": {
|
|
41
|
+
"additionalProperties": false,
|
|
42
|
+
"properties": {
|
|
43
|
+
"token": {
|
|
44
|
+
"type": "string"
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"required": [
|
|
48
|
+
"token"
|
|
49
|
+
],
|
|
50
|
+
"type": "object"
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$ref": "#/definitions/HetznerDeployment",
|
|
3
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
4
|
+
"definitions": {
|
|
5
|
+
"DeploymentConfiguration": {
|
|
6
|
+
"description": "Specifies configuration for a specific deployment.",
|
|
7
|
+
"title": "Deployment Configuration",
|
|
8
|
+
"type": "object"
|
|
9
|
+
},
|
|
10
|
+
"DeploymentName": {
|
|
11
|
+
"description": "Identifier for this deployment. No spaces allowed in name.",
|
|
12
|
+
"pattern": "^[^\\s]*$",
|
|
13
|
+
"title": "Deployment Name",
|
|
14
|
+
"type": "string"
|
|
15
|
+
},
|
|
16
|
+
"HetznerDeployment": {
|
|
17
|
+
"properties": {
|
|
18
|
+
"configuration": {
|
|
19
|
+
"$ref": "#/definitions/DeploymentConfiguration"
|
|
20
|
+
},
|
|
21
|
+
"hetznerUser": {
|
|
22
|
+
"$ref": "#/definitions/HetznerUserName"
|
|
23
|
+
},
|
|
24
|
+
"name": {
|
|
25
|
+
"$ref": "#/definitions/DeploymentName"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"required": [
|
|
29
|
+
"configuration",
|
|
30
|
+
"hetznerUser",
|
|
31
|
+
"name"
|
|
32
|
+
],
|
|
33
|
+
"type": "object"
|
|
34
|
+
},
|
|
35
|
+
"HetznerUserName": {
|
|
36
|
+
"description": "Name of the Hetzner user that is used to perform the deployment.",
|
|
37
|
+
"title": "Hetzner User Name",
|
|
38
|
+
"type": "string"
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface HetznerUserConfig {
|
|
2
|
+
token: string;
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* Hetzner user
|
|
6
|
+
*
|
|
7
|
+
* @title Hetzner User
|
|
8
|
+
*/
|
|
9
|
+
export interface HetznerUser {
|
|
10
|
+
name: string;
|
|
11
|
+
config: HetznerUserConfig;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Global configuration for deploying to Hetzner.
|
|
15
|
+
*
|
|
16
|
+
* @title Hetzner Configuration
|
|
17
|
+
*/
|
|
18
|
+
export interface HetznerConfiguration {
|
|
19
|
+
users: HetznerUser[];
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=HetznerConfiguration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HetznerConfiguration.d.ts","sourceRoot":"","sources":["../../../src/types/HetznerConfiguration.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,iBAAiB,CAAC;CAC3B;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HetznerConfiguration.js","sourceRoot":"","sources":["../../../src/types/HetznerConfiguration.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Deployment } from '@goldstack/infra';
|
|
2
|
+
/**
|
|
3
|
+
* Name of the Hetzner user that is used to perform the deployment.
|
|
4
|
+
*
|
|
5
|
+
* @title Hetzner User Name
|
|
6
|
+
*/
|
|
7
|
+
export declare type HetznerUserName = string;
|
|
8
|
+
export interface HetznerDeployment extends Deployment {
|
|
9
|
+
hetznerUser: HetznerUserName;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=HetznerDeployment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HetznerDeployment.d.ts","sourceRoot":"","sources":["../../../src/types/HetznerDeployment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;;;GAIG;AACH,oBAAY,eAAe,GAAG,MAAM,CAAC;AAErC,MAAM,WAAW,iBAAkB,SAAQ,UAAU;IACnD,WAAW,EAAE,eAAe,CAAC;CAC9B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HetznerDeployment.js","sourceRoot":"","sources":["../../../src/types/HetznerDeployment.ts"],"names":[],"mappings":""}
|
package/package.json
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@goldstack/infra-hetzner",
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "Utilities to work with Hetzner infrastructure via the cli.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"goldstack",
|
|
7
|
+
"utility",
|
|
8
|
+
"infrastructure",
|
|
9
|
+
"IaC",
|
|
10
|
+
"configuration",
|
|
11
|
+
"hetzner",
|
|
12
|
+
"cli"
|
|
13
|
+
],
|
|
14
|
+
"homepage": "https://goldstack.party",
|
|
15
|
+
"bugs": {
|
|
16
|
+
"url": "https://github.com/goldstack/goldstack/issues"
|
|
17
|
+
},
|
|
18
|
+
"repository": {
|
|
19
|
+
"type": "git",
|
|
20
|
+
"url": "https://github.com/goldstack/goldstack.git"
|
|
21
|
+
},
|
|
22
|
+
"license": "MIT",
|
|
23
|
+
"author": "Max Rohde",
|
|
24
|
+
"sideEffects": false,
|
|
25
|
+
"main": "dist/src/infraHetzner.js",
|
|
26
|
+
"scripts": {
|
|
27
|
+
"build": "yarn clean && yarn compile",
|
|
28
|
+
"build:watch": "yarn clean && yarn compile-watch",
|
|
29
|
+
"clean": "rimraf ./dist",
|
|
30
|
+
"compile": "tsc -p tsconfig.json",
|
|
31
|
+
"compile-watch": "tsc -p tsconfig.json --watch",
|
|
32
|
+
"compile-watch:light": "nodemon --watch ./src/ -e '*' --exec 'yarn compile'",
|
|
33
|
+
"coverage": "jest --collect-coverage --passWithNoTests --config=./jest.config.js --runInBand",
|
|
34
|
+
"generate-schema": "ts-json-schema-generator --tsconfig tsconfig.generate.json --no-type-check --path './src/types/**/*' --type 'HetznerConfiguration' -o src/schemas/accountConfigSchema.json && ts-json-schema-generator --tsconfig tsconfig.generate.json --no-type-check --path './src/types/**/*' --type 'HetznerDeployment' -o src/schemas/deploymentConfigSchema.json",
|
|
35
|
+
"prepublishOnly": "yarn run build",
|
|
36
|
+
"publish": "utils-git changed --exec \"yarn npm publish $@\"",
|
|
37
|
+
"test-ci": "jest --passWithNoTests --config=./jest.config.js --runInBand",
|
|
38
|
+
"version:apply": "utils-git changed --exec \"yarn version $@ && yarn version apply\"",
|
|
39
|
+
"version:apply:force": "yarn version $@ && yarn version apply"
|
|
40
|
+
},
|
|
41
|
+
"dependencies": {
|
|
42
|
+
"@goldstack/infra": "0.4.10",
|
|
43
|
+
"@goldstack/utils-config": "0.4.10",
|
|
44
|
+
"@goldstack/utils-log": "0.3.9",
|
|
45
|
+
"@goldstack/utils-package": "0.4.10",
|
|
46
|
+
"@goldstack/utils-sh": "0.5.9",
|
|
47
|
+
"axios": "1.6.0",
|
|
48
|
+
"handlebars": "4.7.7"
|
|
49
|
+
},
|
|
50
|
+
"devDependencies": {
|
|
51
|
+
"@goldstack/utils-git": "0.2.9",
|
|
52
|
+
"@swc/core": "^1.3.74",
|
|
53
|
+
"@swc/jest": "^0.2.27",
|
|
54
|
+
"@types/jest": "^29.0.1",
|
|
55
|
+
"@types/node": "^18.7.13",
|
|
56
|
+
"jest": "^29.3.1",
|
|
57
|
+
"renamer": "^0.7.0",
|
|
58
|
+
"rimraf": "^3.0.2",
|
|
59
|
+
"ts-json-schema-generator": "^1.0.0",
|
|
60
|
+
"typescript": "^4.8.4"
|
|
61
|
+
},
|
|
62
|
+
"publishConfig": {
|
|
63
|
+
"main": "dist/src/infraHetzner.js"
|
|
64
|
+
}
|
|
65
|
+
}
|