puls-dev 0.1.0
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/LICENSE +7 -0
- package/README.md +148 -0
- package/dist/core/checker.d.ts +5 -0
- package/dist/core/checker.js +148 -0
- package/dist/core/config.d.ts +35 -0
- package/dist/core/config.js +15 -0
- package/dist/core/decorators.d.ts +26 -0
- package/dist/core/decorators.js +86 -0
- package/dist/core/output.d.ts +8 -0
- package/dist/core/output.js +19 -0
- package/dist/core/resource.d.ts +20 -0
- package/dist/core/resource.js +77 -0
- package/dist/core/stack.d.ts +20 -0
- package/dist/core/stack.js +120 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.js +12 -0
- package/dist/providers/aws/acm.d.ts +22 -0
- package/dist/providers/aws/acm.js +109 -0
- package/dist/providers/aws/api.d.ts +28 -0
- package/dist/providers/aws/api.js +36 -0
- package/dist/providers/aws/apigateway.d.ts +24 -0
- package/dist/providers/aws/apigateway.js +157 -0
- package/dist/providers/aws/cloudfront.d.ts +31 -0
- package/dist/providers/aws/cloudfront.js +205 -0
- package/dist/providers/aws/fargate.d.ts +43 -0
- package/dist/providers/aws/fargate.js +277 -0
- package/dist/providers/aws/index.d.ts +23 -0
- package/dist/providers/aws/index.js +29 -0
- package/dist/providers/aws/lambda.d.ts +30 -0
- package/dist/providers/aws/lambda.js +159 -0
- package/dist/providers/aws/list.d.ts +2 -0
- package/dist/providers/aws/list.js +44 -0
- package/dist/providers/aws/rds.d.ts +46 -0
- package/dist/providers/aws/rds.js +227 -0
- package/dist/providers/aws/route53.d.ts +38 -0
- package/dist/providers/aws/route53.js +218 -0
- package/dist/providers/aws/s3.d.ts +20 -0
- package/dist/providers/aws/s3.js +165 -0
- package/dist/providers/aws/secrets.d.ts +25 -0
- package/dist/providers/aws/secrets.js +151 -0
- package/dist/providers/aws/sqs.d.ts +33 -0
- package/dist/providers/aws/sqs.js +178 -0
- package/dist/providers/do/api.d.ts +11 -0
- package/dist/providers/do/api.js +52 -0
- package/dist/providers/do/certificate.d.ts +7 -0
- package/dist/providers/do/certificate.js +36 -0
- package/dist/providers/do/domain.d.ts +21 -0
- package/dist/providers/do/domain.js +81 -0
- package/dist/providers/do/droplet.d.ts +35 -0
- package/dist/providers/do/droplet.js +180 -0
- package/dist/providers/do/firewall.d.ts +23 -0
- package/dist/providers/do/firewall.js +94 -0
- package/dist/providers/do/index.d.ts +15 -0
- package/dist/providers/do/index.js +21 -0
- package/dist/providers/do/list.d.ts +2 -0
- package/dist/providers/do/list.js +59 -0
- package/dist/providers/do/load_balancer.d.ts +12 -0
- package/dist/providers/do/load_balancer.js +62 -0
- package/dist/providers/firebase/api.d.ts +4 -0
- package/dist/providers/firebase/api.js +62 -0
- package/dist/providers/firebase/auth.d.ts +35 -0
- package/dist/providers/firebase/auth.js +147 -0
- package/dist/providers/firebase/firestore.d.ts +28 -0
- package/dist/providers/firebase/firestore.js +120 -0
- package/dist/providers/firebase/functions.d.ts +50 -0
- package/dist/providers/firebase/functions.js +163 -0
- package/dist/providers/firebase/hosting.d.ts +14 -0
- package/dist/providers/firebase/hosting.js +144 -0
- package/dist/providers/firebase/index.d.ts +15 -0
- package/dist/providers/firebase/index.js +15 -0
- package/dist/providers/firebase/remoteconfig.d.ts +22 -0
- package/dist/providers/firebase/remoteconfig.js +135 -0
- package/dist/providers/firebase/storage.d.ts +34 -0
- package/dist/providers/firebase/storage.js +117 -0
- package/dist/providers/proxmox/api.d.ts +12 -0
- package/dist/providers/proxmox/api.js +50 -0
- package/dist/providers/proxmox/index.d.ts +15 -0
- package/dist/providers/proxmox/index.js +10 -0
- package/dist/providers/proxmox/list.d.ts +2 -0
- package/dist/providers/proxmox/list.js +15 -0
- package/dist/providers/proxmox/vm.d.ts +61 -0
- package/dist/providers/proxmox/vm.js +482 -0
- package/dist/types/aws.d.ts +55 -0
- package/dist/types/aws.js +48 -0
- package/dist/types/do.d.ts +19 -0
- package/dist/types/do.js +19 -0
- package/dist/types/gcp.d.ts +9 -0
- package/dist/types/gcp.js +9 -0
- package/dist/types/inventory.d.ts +87 -0
- package/dist/types/inventory.js +2 -0
- package/dist/types/proxmox.d.ts +11 -0
- package/dist/types/proxmox.js +28 -0
- package/package.json +56 -0
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
export interface ProxmoxVm {
|
|
2
|
+
name: string;
|
|
3
|
+
vmid: number;
|
|
4
|
+
node: string;
|
|
5
|
+
status: string;
|
|
6
|
+
maxmem: number;
|
|
7
|
+
maxdisk: number;
|
|
8
|
+
}
|
|
9
|
+
export interface ProxmoxInventory {
|
|
10
|
+
vms: ProxmoxVm[];
|
|
11
|
+
}
|
|
12
|
+
export interface DoDroplet {
|
|
13
|
+
id: number;
|
|
14
|
+
name: string;
|
|
15
|
+
status: string;
|
|
16
|
+
region: string;
|
|
17
|
+
size: string;
|
|
18
|
+
ip?: string;
|
|
19
|
+
monthlyCost: number;
|
|
20
|
+
}
|
|
21
|
+
export interface DoFirewall {
|
|
22
|
+
id: string;
|
|
23
|
+
name: string;
|
|
24
|
+
dropletCount: number;
|
|
25
|
+
}
|
|
26
|
+
export interface DoLoadBalancer {
|
|
27
|
+
id: string;
|
|
28
|
+
name: string;
|
|
29
|
+
ip: string;
|
|
30
|
+
region: string;
|
|
31
|
+
status: string;
|
|
32
|
+
}
|
|
33
|
+
export interface DoDomain {
|
|
34
|
+
name: string;
|
|
35
|
+
ttl: number;
|
|
36
|
+
}
|
|
37
|
+
export interface DoInventory {
|
|
38
|
+
droplets: DoDroplet[];
|
|
39
|
+
firewalls: DoFirewall[];
|
|
40
|
+
loadBalancers: DoLoadBalancer[];
|
|
41
|
+
domains: DoDomain[];
|
|
42
|
+
totalMonthlyCost: number;
|
|
43
|
+
}
|
|
44
|
+
export interface AwsDistribution {
|
|
45
|
+
id: string;
|
|
46
|
+
domain: string;
|
|
47
|
+
aliases: string[];
|
|
48
|
+
status: string;
|
|
49
|
+
}
|
|
50
|
+
export interface AwsBucket {
|
|
51
|
+
name: string;
|
|
52
|
+
}
|
|
53
|
+
export interface AwsLambdaFn {
|
|
54
|
+
name: string;
|
|
55
|
+
runtime: string;
|
|
56
|
+
memorySizeMb: number;
|
|
57
|
+
}
|
|
58
|
+
export interface AwsRdsInstance {
|
|
59
|
+
identifier: string;
|
|
60
|
+
engine: string;
|
|
61
|
+
instanceClass: string;
|
|
62
|
+
status: string;
|
|
63
|
+
endpoint?: string;
|
|
64
|
+
}
|
|
65
|
+
export interface AwsHostedZone {
|
|
66
|
+
name: string;
|
|
67
|
+
id: string;
|
|
68
|
+
recordCount: number;
|
|
69
|
+
}
|
|
70
|
+
export interface AwsInventory {
|
|
71
|
+
region: string;
|
|
72
|
+
distributions: AwsDistribution[];
|
|
73
|
+
buckets: AwsBucket[];
|
|
74
|
+
lambdas: AwsLambdaFn[];
|
|
75
|
+
rdsInstances: AwsRdsInstance[];
|
|
76
|
+
hostedZones: AwsHostedZone[];
|
|
77
|
+
}
|
|
78
|
+
export interface InventoryError {
|
|
79
|
+
provider: "proxmox" | "do" | "aws";
|
|
80
|
+
message: string;
|
|
81
|
+
}
|
|
82
|
+
export interface InventoryResult {
|
|
83
|
+
proxmox?: ProxmoxInventory;
|
|
84
|
+
do?: DoInventory;
|
|
85
|
+
aws?: AwsInventory;
|
|
86
|
+
errors: InventoryError[];
|
|
87
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { GlobalConfig } from "../core/config.js";
|
|
2
|
+
type ProxmoxConfig = NonNullable<GlobalConfig["providers"]["proxmox"]>;
|
|
3
|
+
export declare const CONFIG: Record<string, ProxmoxConfig>;
|
|
4
|
+
export declare const OS: {
|
|
5
|
+
readonly UBUNTU_22_04: "ubuntu-22.04";
|
|
6
|
+
readonly UBUNTU_24_04: "9017";
|
|
7
|
+
readonly DEBIAN_11: "debian-11";
|
|
8
|
+
readonly DEBIAN_12: "debian-12";
|
|
9
|
+
};
|
|
10
|
+
export type OSImage = (typeof OS)[keyof typeof OS];
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export const CONFIG = {
|
|
2
|
+
STAGING: {
|
|
3
|
+
url: process.env.PROXMOX_URL,
|
|
4
|
+
user: process.env.PROXMOX_USER,
|
|
5
|
+
tokenName: process.env.PROXMOX_TOKEN_NAME,
|
|
6
|
+
tokenSecret: process.env.PROXMOX_TOKEN_SECRET,
|
|
7
|
+
nodes: process.env.PROXMOX_NODES?.split(","),
|
|
8
|
+
dnsDomain: process.env.PROXMOX_DNS_DOMAIN,
|
|
9
|
+
dnsServers: process.env.PROXMOX_DNS_SERVERS?.split(","),
|
|
10
|
+
verifySsl: false,
|
|
11
|
+
},
|
|
12
|
+
PRODUCTION: {
|
|
13
|
+
url: process.env.PROD_PROXMOX_URL,
|
|
14
|
+
user: process.env.PROD_PROXMOX_USER,
|
|
15
|
+
tokenName: process.env.PROD_PROXMOX_TOKEN_NAME,
|
|
16
|
+
tokenSecret: process.env.PROD_PROXMOX_TOKEN_SECRET,
|
|
17
|
+
nodes: process.env.PROD_PROXMOX_NODES?.split(","),
|
|
18
|
+
dnsDomain: process.env.PROD_PROXMOX_DNS_DOMAIN,
|
|
19
|
+
dnsServers: process.env.PROD_PROXMOX_DNS_SERVERS?.split(","),
|
|
20
|
+
verifySsl: false,
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
export const OS = {
|
|
24
|
+
UBUNTU_22_04: "ubuntu-22.04",
|
|
25
|
+
UBUNTU_24_04: "9017", // ubuntu-24.04 but via template-id
|
|
26
|
+
DEBIAN_11: "debian-11",
|
|
27
|
+
DEBIAN_12: "debian-12",
|
|
28
|
+
};
|
package/package.json
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "puls-dev",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Intent-driven infrastructure-as-code with eager discovery and no state files.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"module": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"files": [
|
|
10
|
+
"dist",
|
|
11
|
+
"README.md",
|
|
12
|
+
"LICENSE"
|
|
13
|
+
],
|
|
14
|
+
"scripts": {
|
|
15
|
+
"build": "tsc",
|
|
16
|
+
"prepublishOnly": "npm run build",
|
|
17
|
+
"test": "echo \"Error: no test specified\" && exit 1"
|
|
18
|
+
},
|
|
19
|
+
"keywords": [
|
|
20
|
+
"iac",
|
|
21
|
+
"infrastructure",
|
|
22
|
+
"aws",
|
|
23
|
+
"digitalocean",
|
|
24
|
+
"proxmox",
|
|
25
|
+
"typescript",
|
|
26
|
+
"intent-driven"
|
|
27
|
+
],
|
|
28
|
+
"author": "Bia",
|
|
29
|
+
"license": "ISC",
|
|
30
|
+
"devDependencies": {
|
|
31
|
+
"@types/node": "^25.6.2",
|
|
32
|
+
"ts-node": "^10.9.2",
|
|
33
|
+
"tsx": "^4.21.0",
|
|
34
|
+
"typescript": "^6.0.3"
|
|
35
|
+
},
|
|
36
|
+
"dependencies": {
|
|
37
|
+
"@aws-sdk/client-acm": "^3.1040.0",
|
|
38
|
+
"@aws-sdk/client-apigatewayv2": "^3.1044.0",
|
|
39
|
+
"@aws-sdk/client-cloudfront": "^3.1040.0",
|
|
40
|
+
"@aws-sdk/client-cloudwatch-logs": "^3.1045.0",
|
|
41
|
+
"@aws-sdk/client-ec2": "^3.1045.0",
|
|
42
|
+
"@aws-sdk/client-ecs": "^3.1045.0",
|
|
43
|
+
"@aws-sdk/client-iam": "^3.1044.0",
|
|
44
|
+
"@aws-sdk/client-lambda": "^3.1044.0",
|
|
45
|
+
"@aws-sdk/client-rds": "^3.1045.0",
|
|
46
|
+
"@aws-sdk/client-route-53": "^3.1040.0",
|
|
47
|
+
"@aws-sdk/client-route-53-domains": "^3.1041.0",
|
|
48
|
+
"@aws-sdk/client-s3": "^3.1040.0",
|
|
49
|
+
"@aws-sdk/client-secrets-manager": "^3.1045.0",
|
|
50
|
+
"@aws-sdk/client-sqs": "^3.1045.0",
|
|
51
|
+
"dotenv": "^17.4.2",
|
|
52
|
+
"google-auth-library": "^10.6.2",
|
|
53
|
+
"reflect-metadata": "^0.2.2",
|
|
54
|
+
"undici": "^8.2.0"
|
|
55
|
+
}
|
|
56
|
+
}
|