hostfn 0.1.0 → 0.1.2

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.
Files changed (179) hide show
  1. package/dist/__tests__/core/backup.test.d.ts +2 -0
  2. package/dist/__tests__/core/backup.test.d.ts.map +1 -0
  3. package/dist/__tests__/core/backup.test.js +108 -0
  4. package/dist/__tests__/core/backup.test.js.map +1 -0
  5. package/dist/__tests__/core/health.test.d.ts +2 -0
  6. package/dist/__tests__/core/health.test.d.ts.map +1 -0
  7. package/dist/__tests__/core/health.test.js +97 -0
  8. package/dist/__tests__/core/health.test.js.map +1 -0
  9. package/dist/__tests__/core/lock.test.d.ts +2 -0
  10. package/dist/__tests__/core/lock.test.d.ts.map +1 -0
  11. package/dist/__tests__/core/lock.test.js +136 -0
  12. package/dist/__tests__/core/lock.test.js.map +1 -0
  13. package/dist/__tests__/core/nginx-multi-domain.test.d.ts +2 -0
  14. package/dist/__tests__/core/nginx-multi-domain.test.d.ts.map +1 -0
  15. package/dist/__tests__/core/nginx-multi-domain.test.js +158 -0
  16. package/dist/__tests__/core/nginx-multi-domain.test.js.map +1 -0
  17. package/dist/__tests__/runtimes/pm2.test.d.ts +2 -0
  18. package/dist/__tests__/runtimes/pm2.test.d.ts.map +1 -0
  19. package/dist/__tests__/runtimes/pm2.test.js +111 -0
  20. package/dist/__tests__/runtimes/pm2.test.js.map +1 -0
  21. package/dist/__tests__/utils/validation.test.d.ts +2 -0
  22. package/dist/__tests__/utils/validation.test.d.ts.map +1 -0
  23. package/dist/__tests__/utils/validation.test.js +136 -0
  24. package/dist/__tests__/utils/validation.test.js.map +1 -0
  25. package/dist/commands/deploy.d.ts +11 -0
  26. package/dist/commands/deploy.d.ts.map +1 -0
  27. package/dist/commands/deploy.js +636 -0
  28. package/dist/commands/deploy.js.map +1 -0
  29. package/dist/commands/env.d.ts +21 -0
  30. package/dist/commands/env.d.ts.map +1 -0
  31. package/dist/commands/env.js +317 -0
  32. package/dist/commands/env.js.map +1 -0
  33. package/dist/commands/expose.d.ts +6 -0
  34. package/dist/commands/expose.d.ts.map +1 -0
  35. package/dist/commands/expose.js +379 -0
  36. package/dist/commands/expose.js.map +1 -0
  37. package/dist/commands/init.d.ts +2 -0
  38. package/dist/commands/init.d.ts.map +1 -0
  39. package/dist/commands/init.js +175 -0
  40. package/dist/commands/init.js.map +1 -0
  41. package/dist/commands/logs.d.ts +10 -0
  42. package/dist/commands/logs.d.ts.map +1 -0
  43. package/dist/commands/logs.js +75 -0
  44. package/dist/commands/logs.js.map +1 -0
  45. package/dist/commands/rollback.d.ts +6 -0
  46. package/dist/commands/rollback.d.ts.map +1 -0
  47. package/dist/commands/rollback.js +113 -0
  48. package/dist/commands/rollback.js.map +1 -0
  49. package/dist/commands/server/info.d.ts +2 -0
  50. package/dist/commands/server/info.d.ts.map +1 -0
  51. package/dist/commands/server/info.js +104 -0
  52. package/dist/commands/server/info.js.map +1 -0
  53. package/dist/commands/server/setup.d.ts +11 -0
  54. package/dist/commands/server/setup.d.ts.map +1 -0
  55. package/dist/commands/server/setup.js +161 -0
  56. package/dist/commands/server/setup.js.map +1 -0
  57. package/dist/commands/status.d.ts +6 -0
  58. package/dist/commands/status.d.ts.map +1 -0
  59. package/dist/commands/status.js +120 -0
  60. package/dist/commands/status.js.map +1 -0
  61. package/dist/config/loader.d.ts +21 -0
  62. package/dist/config/loader.d.ts.map +1 -0
  63. package/dist/config/loader.js +54 -0
  64. package/dist/config/loader.js.map +1 -0
  65. package/dist/config/schema.d.ts +323 -0
  66. package/dist/config/schema.d.ts.map +1 -0
  67. package/dist/config/schema.js +108 -0
  68. package/dist/config/schema.js.map +1 -0
  69. package/dist/core/backup.d.ts +34 -0
  70. package/dist/core/backup.d.ts.map +1 -0
  71. package/dist/core/backup.js +95 -0
  72. package/dist/core/backup.js.map +1 -0
  73. package/dist/core/health.d.ts +31 -0
  74. package/dist/core/health.d.ts.map +1 -0
  75. package/dist/core/health.js +78 -0
  76. package/dist/core/health.js.map +1 -0
  77. package/dist/core/local.d.ts +19 -0
  78. package/dist/core/local.d.ts.map +1 -0
  79. package/dist/core/local.js +50 -0
  80. package/dist/core/local.js.map +1 -0
  81. package/dist/core/lock.d.ts +28 -0
  82. package/dist/core/lock.d.ts.map +1 -0
  83. package/dist/core/lock.js +89 -0
  84. package/dist/core/lock.js.map +1 -0
  85. package/dist/core/nginx.d.ts +43 -0
  86. package/dist/core/nginx.d.ts.map +1 -0
  87. package/dist/core/nginx.js +131 -0
  88. package/dist/core/nginx.js.map +1 -0
  89. package/dist/core/ssh.d.ts +79 -0
  90. package/dist/core/ssh.d.ts.map +1 -0
  91. package/dist/core/ssh.js +264 -0
  92. package/dist/core/ssh.js.map +1 -0
  93. package/dist/core/sync.d.ts +25 -0
  94. package/dist/core/sync.d.ts.map +1 -0
  95. package/dist/core/sync.js +117 -0
  96. package/dist/core/sync.js.map +1 -0
  97. package/dist/core/workspace.d.ts +13 -0
  98. package/dist/core/workspace.d.ts.map +1 -0
  99. package/dist/core/workspace.js +141 -0
  100. package/dist/core/workspace.js.map +1 -0
  101. package/dist/index.d.ts +3 -0
  102. package/dist/index.d.ts.map +1 -0
  103. package/dist/index.js +232 -0
  104. package/dist/index.js.map +1 -0
  105. package/dist/runtimes/base.d.ts +115 -0
  106. package/dist/runtimes/base.d.ts.map +1 -0
  107. package/dist/runtimes/base.js +16 -0
  108. package/dist/runtimes/base.js.map +1 -0
  109. package/dist/runtimes/nodejs/detector.d.ts +47 -0
  110. package/dist/runtimes/nodejs/detector.d.ts.map +1 -0
  111. package/dist/runtimes/nodejs/detector.js +143 -0
  112. package/dist/runtimes/nodejs/detector.js.map +1 -0
  113. package/dist/runtimes/nodejs/index.d.ts +14 -0
  114. package/dist/runtimes/nodejs/index.d.ts.map +1 -0
  115. package/dist/runtimes/nodejs/index.js +213 -0
  116. package/dist/runtimes/nodejs/index.js.map +1 -0
  117. package/dist/runtimes/nodejs/pm2.d.ts +17 -0
  118. package/dist/runtimes/nodejs/pm2.d.ts.map +1 -0
  119. package/dist/runtimes/nodejs/pm2.js +60 -0
  120. package/dist/runtimes/nodejs/pm2.js.map +1 -0
  121. package/dist/runtimes/registry.d.ts +34 -0
  122. package/dist/runtimes/registry.d.ts.map +1 -0
  123. package/dist/runtimes/registry.js +58 -0
  124. package/dist/runtimes/registry.js.map +1 -0
  125. package/dist/utils/logger.d.ts +47 -0
  126. package/dist/utils/logger.d.ts.map +1 -0
  127. package/dist/utils/logger.js +76 -0
  128. package/dist/utils/logger.js.map +1 -0
  129. package/dist/utils/validation.d.ts +32 -0
  130. package/dist/utils/validation.d.ts.map +1 -0
  131. package/dist/utils/validation.js +125 -0
  132. package/dist/utils/validation.js.map +1 -0
  133. package/package.json +34 -20
  134. package/{packages/cli/src → src}/__tests__/runtimes/pm2.test.ts +2 -2
  135. package/{packages/cli/src → src}/commands/deploy.ts +39 -23
  136. package/{packages/cli/src → src}/commands/env.ts +19 -6
  137. package/{packages/cli/src → src}/commands/expose.ts +20 -6
  138. package/{packages/cli/src → src}/commands/logs.ts +8 -4
  139. package/{packages/cli/src → src}/commands/rollback.ts +8 -6
  140. package/{packages/cli/src → src}/commands/status.ts +7 -3
  141. package/LICENSE +0 -21
  142. package/README.md +0 -1136
  143. package/_conduct/specs/1.v0.spec.md +0 -1041
  144. package/examples/express-api/package.json +0 -22
  145. package/examples/express-api/src/index.ts +0 -16
  146. package/examples/express-api/tsconfig.json +0 -11
  147. package/examples/github-actions-deploy.yml +0 -40
  148. package/examples/monorepo-config.json +0 -76
  149. package/examples/monorepo-multi-server-config.json +0 -74
  150. package/packages/cli/package.json +0 -40
  151. package/turbo.json +0 -24
  152. /package/{packages/cli/src → src}/__tests__/core/backup.test.ts +0 -0
  153. /package/{packages/cli/src → src}/__tests__/core/health.test.ts +0 -0
  154. /package/{packages/cli/src → src}/__tests__/core/lock.test.ts +0 -0
  155. /package/{packages/cli/src → src}/__tests__/core/nginx-multi-domain.test.ts +0 -0
  156. /package/{packages/cli/src → src}/__tests__/utils/validation.test.ts +0 -0
  157. /package/{packages/cli/src → src}/commands/init.ts +0 -0
  158. /package/{packages/cli/src → src}/commands/server/info.ts +0 -0
  159. /package/{packages/cli/src → src}/commands/server/setup.ts +0 -0
  160. /package/{packages/cli/src → src}/config/loader.ts +0 -0
  161. /package/{packages/cli/src → src}/config/schema.ts +0 -0
  162. /package/{packages/cli/src → src}/core/backup.ts +0 -0
  163. /package/{packages/cli/src → src}/core/health.ts +0 -0
  164. /package/{packages/cli/src → src}/core/local.ts +0 -0
  165. /package/{packages/cli/src → src}/core/lock.ts +0 -0
  166. /package/{packages/cli/src → src}/core/nginx.ts +0 -0
  167. /package/{packages/cli/src → src}/core/ssh.ts +0 -0
  168. /package/{packages/cli/src → src}/core/sync.ts +0 -0
  169. /package/{packages/cli/src → src}/core/workspace.ts +0 -0
  170. /package/{packages/cli/src → src}/index.ts +0 -0
  171. /package/{packages/cli/src → src}/runtimes/base.ts +0 -0
  172. /package/{packages/cli/src → src}/runtimes/nodejs/detector.ts +0 -0
  173. /package/{packages/cli/src → src}/runtimes/nodejs/index.ts +0 -0
  174. /package/{packages/cli/src → src}/runtimes/nodejs/pm2.ts +0 -0
  175. /package/{packages/cli/src → src}/runtimes/registry.ts +0 -0
  176. /package/{packages/cli/src → src}/utils/logger.ts +0 -0
  177. /package/{packages/cli/src → src}/utils/validation.ts +0 -0
  178. /package/{packages/cli/tsconfig.json → tsconfig.json} +0 -0
  179. /package/{packages/cli/vitest.config.ts → vitest.config.ts} +0 -0
@@ -1,22 +0,0 @@
1
- {
2
- "name": "example-express-api",
3
- "version": "1.0.0",
4
- "type": "module",
5
- "scripts": {
6
- "dev": "tsx watch src/index.ts",
7
- "build": "tsc",
8
- "start": "node dist/index.js"
9
- },
10
- "dependencies": {
11
- "express": "^4.18.0"
12
- },
13
- "devDependencies": {
14
- "@types/express": "^4.17.0",
15
- "@types/node": "^20.0.0",
16
- "tsx": "^4.0.0",
17
- "typescript": "^5.0.0"
18
- },
19
- "engines": {
20
- "node": ">=18.0.0"
21
- }
22
- }
@@ -1,16 +0,0 @@
1
- import express from 'express';
2
-
3
- const app = express();
4
- const port = process.env.PORT || 3000;
5
-
6
- app.get('/health', (req, res) => {
7
- res.json({ status: 'ok' });
8
- });
9
-
10
- app.get('/', (req, res) => {
11
- res.json({ message: 'Hello from Express API!' });
12
- });
13
-
14
- app.listen(port, () => {
15
- console.log(`Server running on port ${port}`);
16
- });
@@ -1,11 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "target": "ES2022",
4
- "module": "ESNext",
5
- "moduleResolution": "node",
6
- "esModuleInterop": true,
7
- "strict": true,
8
- "outDir": "./dist",
9
- "rootDir": "./src"
10
- }
11
- }
@@ -1,40 +0,0 @@
1
- name: Deploy with hostfn
2
-
3
- on:
4
- push:
5
- branches:
6
- - main
7
- - production
8
-
9
- jobs:
10
- deploy:
11
- runs-on: ubuntu-latest
12
-
13
- steps:
14
- - name: Checkout code
15
- uses: actions/checkout@v4
16
-
17
- - name: Setup Node.js
18
- uses: actions/setup-node@v4
19
- with:
20
- node-version: '20'
21
-
22
- - name: Install hostfn
23
- run: npm install -g hostfn
24
-
25
- - name: Deploy to production
26
- env:
27
- HOSTFN_SSH_KEY: ${{ secrets.HOSTFN_SSH_KEY }}
28
- HOSTFN_SSH_PASSPHRASE: ${{ secrets.HOSTFN_SSH_PASSPHRASE }}
29
- run: hostfn deploy production --ci
30
-
31
- deploy-selfhosted:
32
- # This job runs on a self-hosted runner on the deployment server
33
- runs-on: self-hosted
34
-
35
- steps:
36
- - name: Checkout code
37
- uses: actions/checkout@v4
38
-
39
- - name: Deploy locally (no SSH needed)
40
- run: hostfn deploy production --local --ci
@@ -1,76 +0,0 @@
1
- {
2
- "name": "21n",
3
- "runtime": "nodejs",
4
- "version": "18",
5
- "environments": {
6
- "production": {
7
- "server": "ubuntu@prod.example.com",
8
- "port": 3000,
9
- "instances": "max"
10
- },
11
- "staging": {
12
- "server": "ubuntu@staging.example.com",
13
- "port": 3000,
14
- "instances": 2
15
- }
16
- },
17
- "build": {
18
- "command": "npm run build",
19
- "directory": "dist",
20
- "nodeModules": "production"
21
- },
22
- "start": {
23
- "command": "npm start",
24
- "entry": "dist/index.js"
25
- },
26
- "services": {
27
- "account": {
28
- "port": 3001,
29
- "path": "services/account",
30
- "domain": "account.example.com",
31
- "instances": "max"
32
- },
33
- "auth": {
34
- "port": 3002,
35
- "path": "services/auth",
36
- "domain": "auth.example.com",
37
- "instances": 2
38
- },
39
- "notification": {
40
- "port": 3003,
41
- "path": "services/notification",
42
- "domain": "notification.example.com"
43
- },
44
- "analytics": {
45
- "port": 3004,
46
- "path": "services/analytics"
47
- }
48
- },
49
- "health": {
50
- "path": "/health",
51
- "timeout": 60,
52
- "retries": 10,
53
- "interval": 3
54
- },
55
- "env": {
56
- "required": ["NODE_ENV", "DATABASE_URL"],
57
- "optional": ["REDIS_URL", "LOG_LEVEL"]
58
- },
59
- "sync": {
60
- "exclude": [
61
- "node_modules",
62
- ".git",
63
- ".github",
64
- "dist",
65
- "build",
66
- ".env",
67
- ".env.*",
68
- "*.log",
69
- ".turbo",
70
- ".wrangler"
71
- ]
72
- },
73
- "backup": {
74
- "keep": 5
75
- }
76
- }
@@ -1,74 +0,0 @@
1
- {
2
- "name": "21n",
3
- "runtime": "nodejs",
4
- "version": "18",
5
- "environments": {
6
- "production": {
7
- "server": "ubuntu@shared.example.com",
8
- "port": 3000,
9
- "instances": "max"
10
- }
11
- },
12
- "build": {
13
- "command": "npm run build",
14
- "directory": "dist",
15
- "nodeModules": "production"
16
- },
17
- "start": {
18
- "command": "npm start",
19
- "entry": "dist/index.js"
20
- },
21
- "services": {
22
- "account": {
23
- "port": 3001,
24
- "path": "services/account",
25
- "domain": "account.example.com",
26
- "server": "ubuntu@account-server.example.com",
27
- "instances": "max"
28
- },
29
- "auth": {
30
- "port": 3002,
31
- "path": "services/auth",
32
- "domain": "auth.example.com",
33
- "server": "ubuntu@auth-server.example.com",
34
- "instances": 4
35
- },
36
- "notification": {
37
- "port": 3003,
38
- "path": "services/notification",
39
- "domain": "notification.example.com"
40
- },
41
- "analytics": {
42
- "port": 3004,
43
- "path": "services/analytics",
44
- "server": "ubuntu@analytics-server.example.com"
45
- }
46
- },
47
- "health": {
48
- "path": "/health",
49
- "timeout": 60,
50
- "retries": 10,
51
- "interval": 3
52
- },
53
- "env": {
54
- "required": ["NODE_ENV", "DATABASE_URL"],
55
- "optional": ["REDIS_URL", "LOG_LEVEL"]
56
- },
57
- "sync": {
58
- "exclude": [
59
- "node_modules",
60
- ".git",
61
- ".github",
62
- "dist",
63
- "build",
64
- ".env",
65
- ".env.*",
66
- "*.log",
67
- ".turbo",
68
- ".wrangler"
69
- ]
70
- },
71
- "backup": {
72
- "keep": 5
73
- }
74
- }
@@ -1,40 +0,0 @@
1
- {
2
- "name": "hostfn",
3
- "version": "0.1.0",
4
- "description": "Universal application deployment CLI",
5
- "type": "module",
6
- "bin": {
7
- "hostfn": "./dist/index.js"
8
- },
9
- "scripts": {
10
- "dev": "tsx watch src/index.ts",
11
- "build": "tsc",
12
- "clean": "rm -rf dist",
13
- "lint": "tsc --noEmit",
14
- "test": "vitest",
15
- "test:watch": "vitest --watch",
16
- "test:coverage": "vitest --coverage"
17
- },
18
- "dependencies": {
19
- "commander": "^11.1.0",
20
- "chalk": "^5.3.0",
21
- "ora": "^7.0.1",
22
- "inquirer": "^9.2.12",
23
- "zod": "^3.22.4",
24
- "ssh2": "^1.15.0",
25
- "dotenv": "^16.3.1",
26
- "execa": "^8.0.1"
27
- },
28
- "devDependencies": {
29
- "@types/node": "^20.10.0",
30
- "@types/ssh2": "^1.15.0",
31
- "@types/inquirer": "^9.0.7",
32
- "@vitest/coverage-v8": "^1.0.0",
33
- "typescript": "^5.3.0",
34
- "tsx": "^4.7.0",
35
- "vitest": "^1.0.0"
36
- },
37
- "engines": {
38
- "node": ">=18.0.0"
39
- }
40
- }
package/turbo.json DELETED
@@ -1,24 +0,0 @@
1
- {
2
- "$schema": "https://turbo.build/schema.json",
3
- "globalDependencies": ["**/.env.*local"],
4
- "pipeline": {
5
- "build": {
6
- "dependsOn": ["^build"],
7
- "outputs": ["dist/**"]
8
- },
9
- "dev": {
10
- "cache": false,
11
- "persistent": true
12
- },
13
- "lint": {
14
- "outputs": []
15
- },
16
- "test": {
17
- "dependsOn": ["build"],
18
- "outputs": []
19
- },
20
- "clean": {
21
- "cache": false
22
- }
23
- }
24
- }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes