@devalade/shipnode 2.0.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.
Files changed (189) hide show
  1. package/dist/cli/commands/backup.d.ts +14 -0
  2. package/dist/cli/commands/backup.d.ts.map +1 -0
  3. package/dist/cli/commands/backup.js +144 -0
  4. package/dist/cli/commands/backup.js.map +1 -0
  5. package/dist/cli/commands/ci.d.ts +5 -0
  6. package/dist/cli/commands/ci.d.ts.map +1 -0
  7. package/dist/cli/commands/ci.js +222 -0
  8. package/dist/cli/commands/ci.js.map +1 -0
  9. package/dist/cli/commands/cloudflare.d.ts +10 -0
  10. package/dist/cli/commands/cloudflare.d.ts.map +1 -0
  11. package/dist/cli/commands/cloudflare.js +166 -0
  12. package/dist/cli/commands/cloudflare.js.map +1 -0
  13. package/dist/cli/commands/config.d.ts +10 -0
  14. package/dist/cli/commands/config.d.ts.map +1 -0
  15. package/dist/cli/commands/config.js +99 -0
  16. package/dist/cli/commands/config.js.map +1 -0
  17. package/dist/cli/commands/deploy.d.ts +6 -0
  18. package/dist/cli/commands/deploy.d.ts.map +1 -0
  19. package/dist/cli/commands/deploy.js +95 -0
  20. package/dist/cli/commands/deploy.js.map +1 -0
  21. package/dist/cli/commands/doctor.d.ts +5 -0
  22. package/dist/cli/commands/doctor.d.ts.map +1 -0
  23. package/dist/cli/commands/doctor.js +86 -0
  24. package/dist/cli/commands/doctor.js.map +1 -0
  25. package/dist/cli/commands/eject.d.ts +2 -0
  26. package/dist/cli/commands/eject.d.ts.map +1 -0
  27. package/dist/cli/commands/eject.js +74 -0
  28. package/dist/cli/commands/eject.js.map +1 -0
  29. package/dist/cli/commands/env.d.ts +4 -0
  30. package/dist/cli/commands/env.d.ts.map +1 -0
  31. package/dist/cli/commands/env.js +50 -0
  32. package/dist/cli/commands/env.js.map +1 -0
  33. package/dist/cli/commands/harden.d.ts +4 -0
  34. package/dist/cli/commands/harden.d.ts.map +1 -0
  35. package/dist/cli/commands/harden.js +110 -0
  36. package/dist/cli/commands/harden.js.map +1 -0
  37. package/dist/cli/commands/help.d.ts +2 -0
  38. package/dist/cli/commands/help.d.ts.map +1 -0
  39. package/dist/cli/commands/help.js +99 -0
  40. package/dist/cli/commands/help.js.map +1 -0
  41. package/dist/cli/commands/init.d.ts +5 -0
  42. package/dist/cli/commands/init.d.ts.map +1 -0
  43. package/dist/cli/commands/init.js +246 -0
  44. package/dist/cli/commands/init.js.map +1 -0
  45. package/dist/cli/commands/logs.d.ts +5 -0
  46. package/dist/cli/commands/logs.d.ts.map +1 -0
  47. package/dist/cli/commands/logs.js +17 -0
  48. package/dist/cli/commands/logs.js.map +1 -0
  49. package/dist/cli/commands/metrics.d.ts +4 -0
  50. package/dist/cli/commands/metrics.d.ts.map +1 -0
  51. package/dist/cli/commands/metrics.js +21 -0
  52. package/dist/cli/commands/metrics.js.map +1 -0
  53. package/dist/cli/commands/migrate.d.ts +4 -0
  54. package/dist/cli/commands/migrate.d.ts.map +1 -0
  55. package/dist/cli/commands/migrate.js +71 -0
  56. package/dist/cli/commands/migrate.js.map +1 -0
  57. package/dist/cli/commands/restart.d.ts +4 -0
  58. package/dist/cli/commands/restart.d.ts.map +1 -0
  59. package/dist/cli/commands/restart.js +14 -0
  60. package/dist/cli/commands/restart.js.map +1 -0
  61. package/dist/cli/commands/rollback.d.ts +5 -0
  62. package/dist/cli/commands/rollback.d.ts.map +1 -0
  63. package/dist/cli/commands/rollback.js +49 -0
  64. package/dist/cli/commands/rollback.js.map +1 -0
  65. package/dist/cli/commands/run.d.ts +5 -0
  66. package/dist/cli/commands/run.d.ts.map +1 -0
  67. package/dist/cli/commands/run.js +69 -0
  68. package/dist/cli/commands/run.js.map +1 -0
  69. package/dist/cli/commands/setup.d.ts +4 -0
  70. package/dist/cli/commands/setup.d.ts.map +1 -0
  71. package/dist/cli/commands/setup.js +46 -0
  72. package/dist/cli/commands/setup.js.map +1 -0
  73. package/dist/cli/commands/status.d.ts +4 -0
  74. package/dist/cli/commands/status.d.ts.map +1 -0
  75. package/dist/cli/commands/status.js +49 -0
  76. package/dist/cli/commands/status.js.map +1 -0
  77. package/dist/cli/commands/stop.d.ts +4 -0
  78. package/dist/cli/commands/stop.d.ts.map +1 -0
  79. package/dist/cli/commands/stop.js +14 -0
  80. package/dist/cli/commands/stop.js.map +1 -0
  81. package/dist/cli/commands/unlock.d.ts +4 -0
  82. package/dist/cli/commands/unlock.d.ts.map +1 -0
  83. package/dist/cli/commands/unlock.js +27 -0
  84. package/dist/cli/commands/unlock.js.map +1 -0
  85. package/dist/cli/commands/upgrade.d.ts +2 -0
  86. package/dist/cli/commands/upgrade.d.ts.map +1 -0
  87. package/dist/cli/commands/upgrade.js +63 -0
  88. package/dist/cli/commands/upgrade.js.map +1 -0
  89. package/dist/cli/commands/user.d.ts +17 -0
  90. package/dist/cli/commands/user.d.ts.map +1 -0
  91. package/dist/cli/commands/user.js +98 -0
  92. package/dist/cli/commands/user.js.map +1 -0
  93. package/dist/cli/index.d.ts +3 -0
  94. package/dist/cli/index.d.ts.map +1 -0
  95. package/dist/cli/index.js +218 -0
  96. package/dist/cli/index.js.map +1 -0
  97. package/dist/cli/prompt.d.ts +2 -0
  98. package/dist/cli/prompt.d.ts.map +1 -0
  99. package/dist/cli/prompt.js +11 -0
  100. package/dist/cli/prompt.js.map +1 -0
  101. package/dist/cli/runner.d.ts +34 -0
  102. package/dist/cli/runner.d.ts.map +1 -0
  103. package/dist/cli/runner.js +44 -0
  104. package/dist/cli/runner.js.map +1 -0
  105. package/dist/cli/ui.d.ts +9 -0
  106. package/dist/cli/ui.d.ts.map +1 -0
  107. package/dist/cli/ui.js +26 -0
  108. package/dist/cli/ui.js.map +1 -0
  109. package/dist/config/assembly.d.ts +14 -0
  110. package/dist/config/assembly.d.ts.map +1 -0
  111. package/dist/config/assembly.js +62 -0
  112. package/dist/config/assembly.js.map +1 -0
  113. package/dist/config/builder.d.ts +33 -0
  114. package/dist/config/builder.d.ts.map +1 -0
  115. package/dist/config/builder.js +119 -0
  116. package/dist/config/builder.js.map +1 -0
  117. package/dist/config/loader.d.ts +3 -0
  118. package/dist/config/loader.d.ts.map +1 -0
  119. package/dist/config/loader.js +20 -0
  120. package/dist/config/loader.js.map +1 -0
  121. package/dist/config/schema.d.ts +416 -0
  122. package/dist/config/schema.d.ts.map +1 -0
  123. package/dist/config/schema.js +75 -0
  124. package/dist/config/schema.js.map +1 -0
  125. package/dist/domain/deploy/backend-strategy.d.ts +15 -0
  126. package/dist/domain/deploy/backend-strategy.d.ts.map +1 -0
  127. package/dist/domain/deploy/backend-strategy.js +110 -0
  128. package/dist/domain/deploy/backend-strategy.js.map +1 -0
  129. package/dist/domain/deploy/frontend-strategy.d.ts +13 -0
  130. package/dist/domain/deploy/frontend-strategy.d.ts.map +1 -0
  131. package/dist/domain/deploy/frontend-strategy.js +64 -0
  132. package/dist/domain/deploy/frontend-strategy.js.map +1 -0
  133. package/dist/domain/deploy/orchestrator.d.ts +34 -0
  134. package/dist/domain/deploy/orchestrator.d.ts.map +1 -0
  135. package/dist/domain/deploy/orchestrator.js +149 -0
  136. package/dist/domain/deploy/orchestrator.js.map +1 -0
  137. package/dist/domain/deploy/strategy.d.ts +44 -0
  138. package/dist/domain/deploy/strategy.d.ts.map +1 -0
  139. package/dist/domain/deploy/strategy.js +2 -0
  140. package/dist/domain/deploy/strategy.js.map +1 -0
  141. package/dist/domain/framework/detector.d.ts +7 -0
  142. package/dist/domain/framework/detector.d.ts.map +1 -0
  143. package/dist/domain/framework/detector.js +109 -0
  144. package/dist/domain/framework/detector.js.map +1 -0
  145. package/dist/domain/release/manager.d.ts +22 -0
  146. package/dist/domain/release/manager.d.ts.map +1 -0
  147. package/dist/domain/release/manager.js +100 -0
  148. package/dist/domain/release/manager.js.map +1 -0
  149. package/dist/domain/remote/executor.d.ts +16 -0
  150. package/dist/domain/remote/executor.d.ts.map +1 -0
  151. package/dist/domain/remote/executor.js +2 -0
  152. package/dist/domain/remote/executor.js.map +1 -0
  153. package/dist/domain/validation/ip.d.ts +5 -0
  154. package/dist/domain/validation/ip.d.ts.map +1 -0
  155. package/dist/domain/validation/ip.js +38 -0
  156. package/dist/domain/validation/ip.js.map +1 -0
  157. package/dist/index.d.ts +6 -0
  158. package/dist/index.d.ts.map +1 -0
  159. package/dist/index.js +4 -0
  160. package/dist/index.js.map +1 -0
  161. package/dist/infrastructure/ssh/connection.d.ts +19 -0
  162. package/dist/infrastructure/ssh/connection.d.ts.map +1 -0
  163. package/dist/infrastructure/ssh/connection.js +89 -0
  164. package/dist/infrastructure/ssh/connection.js.map +1 -0
  165. package/dist/services/caddy.service.d.ts +12 -0
  166. package/dist/services/caddy.service.d.ts.map +1 -0
  167. package/dist/services/caddy.service.js +56 -0
  168. package/dist/services/caddy.service.js.map +1 -0
  169. package/dist/services/deploy.service.d.ts +19 -0
  170. package/dist/services/deploy.service.d.ts.map +1 -0
  171. package/dist/services/deploy.service.js +53 -0
  172. package/dist/services/deploy.service.js.map +1 -0
  173. package/dist/services/health.service.d.ts +13 -0
  174. package/dist/services/health.service.d.ts.map +1 -0
  175. package/dist/services/health.service.js +38 -0
  176. package/dist/services/health.service.js.map +1 -0
  177. package/dist/shared/constants.d.ts +127 -0
  178. package/dist/shared/constants.d.ts.map +1 -0
  179. package/dist/shared/constants.js +85 -0
  180. package/dist/shared/constants.js.map +1 -0
  181. package/dist/shared/errors.d.ts +27 -0
  182. package/dist/shared/errors.d.ts.map +1 -0
  183. package/dist/shared/errors.js +53 -0
  184. package/dist/shared/errors.js.map +1 -0
  185. package/dist/shared/types.d.ts +116 -0
  186. package/dist/shared/types.d.ts.map +1 -0
  187. package/dist/shared/types.js +2 -0
  188. package/dist/shared/types.js.map +1 -0
  189. package/package.json +53 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/config/builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ShipnodeConfig } from '../shared/types.js';
2
+ export declare function loadConfig(cwd: string, configPath?: string): Promise<ShipnodeConfig>;
3
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAKzD,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAoB1F"}
@@ -0,0 +1,20 @@
1
+ import { resolve } from 'path';
2
+ import { pathExists } from 'fs-extra';
3
+ import { createJiti } from 'jiti';
4
+ import { assembleConfig } from './assembly.js';
5
+ import { ConfigError } from '../shared/errors.js';
6
+ export async function loadConfig(cwd, configPath) {
7
+ const file = configPath ?? resolve(cwd, 'shipnode.config.ts');
8
+ const exists = await pathExists(file);
9
+ if (!exists) {
10
+ throw new ConfigError(`shipnode.config.ts not found at ${file}.\nRun \`shipnode init\` to create one.`);
11
+ }
12
+ const jiti = createJiti(import.meta.url, { interopDefault: true });
13
+ const mod = await jiti.import(file);
14
+ const raw = mod.default ?? mod;
15
+ if (raw && typeof raw === 'object' && 'build' in raw && typeof raw.build === 'function') {
16
+ return raw.build();
17
+ }
18
+ return assembleConfig(raw);
19
+ }
20
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAElC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGlD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAW,EAAE,UAAmB;IAC/D,MAAM,IAAI,GAAG,UAAU,IAAI,OAAO,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;IAE9D,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,WAAW,CACnB,mCAAmC,IAAI,yCAAyC,CACjF,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;IACnE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEpC,MAAM,GAAG,GAAI,GAA6B,CAAC,OAAO,IAAI,GAAG,CAAC;IAE1D,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,IAAI,GAAG,IAAI,OAAQ,GAAuB,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QAC7G,OAAQ,GAAuB,CAAC,KAAK,EAAE,CAAC;IAC1C,CAAC;IAED,OAAO,cAAc,CAAC,GAA8B,CAAC,CAAC;AACxD,CAAC"}
@@ -0,0 +1,416 @@
1
+ import { z } from 'zod';
2
+ export declare const SshConfigSchema: z.ZodObject<{
3
+ host: z.ZodEffects<z.ZodString, string, string>;
4
+ user: z.ZodString;
5
+ port: z.ZodDefault<z.ZodNumber>;
6
+ identityFile: z.ZodOptional<z.ZodString>;
7
+ proxyMode: z.ZodOptional<z.ZodEnum<["cloudflare"]>>;
8
+ proxyCommand: z.ZodOptional<z.ZodString>;
9
+ }, "strip", z.ZodTypeAny, {
10
+ host: string;
11
+ user: string;
12
+ port: number;
13
+ identityFile?: string | undefined;
14
+ proxyMode?: "cloudflare" | undefined;
15
+ proxyCommand?: string | undefined;
16
+ }, {
17
+ host: string;
18
+ user: string;
19
+ port?: number | undefined;
20
+ identityFile?: string | undefined;
21
+ proxyMode?: "cloudflare" | undefined;
22
+ proxyCommand?: string | undefined;
23
+ }>;
24
+ export declare const Pm2ConfigSchema: z.ZodObject<{
25
+ name: z.ZodEffects<z.ZodString, string, string>;
26
+ instances: z.ZodOptional<z.ZodNumber>;
27
+ maxMemory: z.ZodOptional<z.ZodString>;
28
+ }, "strip", z.ZodTypeAny, {
29
+ name: string;
30
+ instances?: number | undefined;
31
+ maxMemory?: string | undefined;
32
+ }, {
33
+ name: string;
34
+ instances?: number | undefined;
35
+ maxMemory?: string | undefined;
36
+ }>;
37
+ export declare const BackendConfigSchema: z.ZodObject<{
38
+ port: z.ZodDefault<z.ZodNumber>;
39
+ }, "strip", z.ZodTypeAny, {
40
+ port: number;
41
+ }, {
42
+ port?: number | undefined;
43
+ }>;
44
+ export declare const HealthCheckConfigSchema: z.ZodDefault<z.ZodObject<{
45
+ enabled: z.ZodDefault<z.ZodBoolean>;
46
+ path: z.ZodDefault<z.ZodString>;
47
+ timeout: z.ZodDefault<z.ZodNumber>;
48
+ retries: z.ZodDefault<z.ZodNumber>;
49
+ startupDelay: z.ZodDefault<z.ZodNumber>;
50
+ }, "strip", z.ZodTypeAny, {
51
+ timeout: number;
52
+ path: string;
53
+ enabled: boolean;
54
+ retries: number;
55
+ startupDelay: number;
56
+ }, {
57
+ timeout?: number | undefined;
58
+ path?: string | undefined;
59
+ enabled?: boolean | undefined;
60
+ retries?: number | undefined;
61
+ startupDelay?: number | undefined;
62
+ }>>;
63
+ export declare const DatabaseConfigSchema: z.ZodOptional<z.ZodObject<{
64
+ type: z.ZodEnum<["postgres", "mysql", "sqlite", "mongodb"]>;
65
+ host: z.ZodString;
66
+ port: z.ZodNumber;
67
+ name: z.ZodString;
68
+ user: z.ZodString;
69
+ password: z.ZodOptional<z.ZodString>;
70
+ }, "strip", z.ZodTypeAny, {
71
+ host: string;
72
+ type: "postgres" | "mysql" | "sqlite" | "mongodb";
73
+ user: string;
74
+ port: number;
75
+ name: string;
76
+ password?: string | undefined;
77
+ }, {
78
+ host: string;
79
+ type: "postgres" | "mysql" | "sqlite" | "mongodb";
80
+ user: string;
81
+ port: number;
82
+ name: string;
83
+ password?: string | undefined;
84
+ }>>;
85
+ export declare const BackupConfigSchema: z.ZodOptional<z.ZodObject<{
86
+ s3Bucket: z.ZodString;
87
+ s3Prefix: z.ZodOptional<z.ZodString>;
88
+ s3Endpoint: z.ZodOptional<z.ZodString>;
89
+ schedule: z.ZodDefault<z.ZodEnum<["hourly", "daily", "weekly"]>>;
90
+ retentionDays: z.ZodDefault<z.ZodNumber>;
91
+ }, "strip", z.ZodTypeAny, {
92
+ s3Bucket: string;
93
+ schedule: "hourly" | "daily" | "weekly";
94
+ retentionDays: number;
95
+ s3Prefix?: string | undefined;
96
+ s3Endpoint?: string | undefined;
97
+ }, {
98
+ s3Bucket: string;
99
+ s3Prefix?: string | undefined;
100
+ s3Endpoint?: string | undefined;
101
+ schedule?: "hourly" | "daily" | "weekly" | undefined;
102
+ retentionDays?: number | undefined;
103
+ }>>;
104
+ export declare const CloudflareConfigSchema: z.ZodOptional<z.ZodObject<{
105
+ zone: z.ZodString;
106
+ appHostname: z.ZodOptional<z.ZodString>;
107
+ sshHostname: z.ZodOptional<z.ZodString>;
108
+ tunnelName: z.ZodOptional<z.ZodString>;
109
+ lockdownFirewall: z.ZodDefault<z.ZodBoolean>;
110
+ accessEmails: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
111
+ bootstrapSshHost: z.ZodOptional<z.ZodString>;
112
+ }, "strip", z.ZodTypeAny, {
113
+ zone: string;
114
+ lockdownFirewall: boolean;
115
+ appHostname?: string | undefined;
116
+ sshHostname?: string | undefined;
117
+ tunnelName?: string | undefined;
118
+ accessEmails?: string[] | undefined;
119
+ bootstrapSshHost?: string | undefined;
120
+ }, {
121
+ zone: string;
122
+ appHostname?: string | undefined;
123
+ sshHostname?: string | undefined;
124
+ tunnelName?: string | undefined;
125
+ lockdownFirewall?: boolean | undefined;
126
+ accessEmails?: string[] | undefined;
127
+ bootstrapSshHost?: string | undefined;
128
+ }>>;
129
+ export declare const HooksConfigSchema: z.ZodOptional<z.ZodObject<{
130
+ preDeploy: z.ZodOptional<z.ZodFunction<z.ZodTuple<[z.ZodAny], z.ZodUnknown>, z.ZodUnion<[z.ZodPromise<z.ZodVoid>, z.ZodVoid]>>>;
131
+ postDeploy: z.ZodOptional<z.ZodFunction<z.ZodTuple<[z.ZodAny], z.ZodUnknown>, z.ZodUnion<[z.ZodPromise<z.ZodVoid>, z.ZodVoid]>>>;
132
+ }, "strip", z.ZodTypeAny, {
133
+ preDeploy?: ((args_0: any, ...args: unknown[]) => void | Promise<void>) | undefined;
134
+ postDeploy?: ((args_0: any, ...args: unknown[]) => void | Promise<void>) | undefined;
135
+ }, {
136
+ preDeploy?: ((args_0: any, ...args: unknown[]) => void | Promise<void>) | undefined;
137
+ postDeploy?: ((args_0: any, ...args: unknown[]) => void | Promise<void>) | undefined;
138
+ }>>;
139
+ export declare const ShipnodeConfigSchema: z.ZodObject<{
140
+ app: z.ZodEnum<["backend", "frontend"]>;
141
+ ssh: z.ZodObject<{
142
+ host: z.ZodEffects<z.ZodString, string, string>;
143
+ user: z.ZodString;
144
+ port: z.ZodDefault<z.ZodNumber>;
145
+ identityFile: z.ZodOptional<z.ZodString>;
146
+ proxyMode: z.ZodOptional<z.ZodEnum<["cloudflare"]>>;
147
+ proxyCommand: z.ZodOptional<z.ZodString>;
148
+ }, "strip", z.ZodTypeAny, {
149
+ host: string;
150
+ user: string;
151
+ port: number;
152
+ identityFile?: string | undefined;
153
+ proxyMode?: "cloudflare" | undefined;
154
+ proxyCommand?: string | undefined;
155
+ }, {
156
+ host: string;
157
+ user: string;
158
+ port?: number | undefined;
159
+ identityFile?: string | undefined;
160
+ proxyMode?: "cloudflare" | undefined;
161
+ proxyCommand?: string | undefined;
162
+ }>;
163
+ remotePath: z.ZodString;
164
+ pm2: z.ZodOptional<z.ZodObject<{
165
+ name: z.ZodEffects<z.ZodString, string, string>;
166
+ instances: z.ZodOptional<z.ZodNumber>;
167
+ maxMemory: z.ZodOptional<z.ZodString>;
168
+ }, "strip", z.ZodTypeAny, {
169
+ name: string;
170
+ instances?: number | undefined;
171
+ maxMemory?: string | undefined;
172
+ }, {
173
+ name: string;
174
+ instances?: number | undefined;
175
+ maxMemory?: string | undefined;
176
+ }>>;
177
+ backend: z.ZodOptional<z.ZodObject<{
178
+ port: z.ZodDefault<z.ZodNumber>;
179
+ }, "strip", z.ZodTypeAny, {
180
+ port: number;
181
+ }, {
182
+ port?: number | undefined;
183
+ }>>;
184
+ domain: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
185
+ zeroDowntime: z.ZodDefault<z.ZodBoolean>;
186
+ keepReleases: z.ZodDefault<z.ZodNumber>;
187
+ healthCheck: z.ZodDefault<z.ZodObject<{
188
+ enabled: z.ZodDefault<z.ZodBoolean>;
189
+ path: z.ZodDefault<z.ZodString>;
190
+ timeout: z.ZodDefault<z.ZodNumber>;
191
+ retries: z.ZodDefault<z.ZodNumber>;
192
+ startupDelay: z.ZodDefault<z.ZodNumber>;
193
+ }, "strip", z.ZodTypeAny, {
194
+ timeout: number;
195
+ path: string;
196
+ enabled: boolean;
197
+ retries: number;
198
+ startupDelay: number;
199
+ }, {
200
+ timeout?: number | undefined;
201
+ path?: string | undefined;
202
+ enabled?: boolean | undefined;
203
+ retries?: number | undefined;
204
+ startupDelay?: number | undefined;
205
+ }>>;
206
+ envFile: z.ZodDefault<z.ZodString>;
207
+ nodeVersion: z.ZodDefault<z.ZodString>;
208
+ pkgManager: z.ZodOptional<z.ZodEnum<["npm", "yarn", "pnpm", "bun"]>>;
209
+ buildDir: z.ZodOptional<z.ZodString>;
210
+ sharedDirs: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
211
+ sharedFiles: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
212
+ database: z.ZodOptional<z.ZodObject<{
213
+ type: z.ZodEnum<["postgres", "mysql", "sqlite", "mongodb"]>;
214
+ host: z.ZodString;
215
+ port: z.ZodNumber;
216
+ name: z.ZodString;
217
+ user: z.ZodString;
218
+ password: z.ZodOptional<z.ZodString>;
219
+ }, "strip", z.ZodTypeAny, {
220
+ host: string;
221
+ type: "postgres" | "mysql" | "sqlite" | "mongodb";
222
+ user: string;
223
+ port: number;
224
+ name: string;
225
+ password?: string | undefined;
226
+ }, {
227
+ host: string;
228
+ type: "postgres" | "mysql" | "sqlite" | "mongodb";
229
+ user: string;
230
+ port: number;
231
+ name: string;
232
+ password?: string | undefined;
233
+ }>>;
234
+ backup: z.ZodOptional<z.ZodObject<{
235
+ s3Bucket: z.ZodString;
236
+ s3Prefix: z.ZodOptional<z.ZodString>;
237
+ s3Endpoint: z.ZodOptional<z.ZodString>;
238
+ schedule: z.ZodDefault<z.ZodEnum<["hourly", "daily", "weekly"]>>;
239
+ retentionDays: z.ZodDefault<z.ZodNumber>;
240
+ }, "strip", z.ZodTypeAny, {
241
+ s3Bucket: string;
242
+ schedule: "hourly" | "daily" | "weekly";
243
+ retentionDays: number;
244
+ s3Prefix?: string | undefined;
245
+ s3Endpoint?: string | undefined;
246
+ }, {
247
+ s3Bucket: string;
248
+ s3Prefix?: string | undefined;
249
+ s3Endpoint?: string | undefined;
250
+ schedule?: "hourly" | "daily" | "weekly" | undefined;
251
+ retentionDays?: number | undefined;
252
+ }>>;
253
+ cloudflare: z.ZodOptional<z.ZodObject<{
254
+ zone: z.ZodString;
255
+ appHostname: z.ZodOptional<z.ZodString>;
256
+ sshHostname: z.ZodOptional<z.ZodString>;
257
+ tunnelName: z.ZodOptional<z.ZodString>;
258
+ lockdownFirewall: z.ZodDefault<z.ZodBoolean>;
259
+ accessEmails: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
260
+ bootstrapSshHost: z.ZodOptional<z.ZodString>;
261
+ }, "strip", z.ZodTypeAny, {
262
+ zone: string;
263
+ lockdownFirewall: boolean;
264
+ appHostname?: string | undefined;
265
+ sshHostname?: string | undefined;
266
+ tunnelName?: string | undefined;
267
+ accessEmails?: string[] | undefined;
268
+ bootstrapSshHost?: string | undefined;
269
+ }, {
270
+ zone: string;
271
+ appHostname?: string | undefined;
272
+ sshHostname?: string | undefined;
273
+ tunnelName?: string | undefined;
274
+ lockdownFirewall?: boolean | undefined;
275
+ accessEmails?: string[] | undefined;
276
+ bootstrapSshHost?: string | undefined;
277
+ }>>;
278
+ hooks: z.ZodOptional<z.ZodObject<{
279
+ preDeploy: z.ZodOptional<z.ZodFunction<z.ZodTuple<[z.ZodAny], z.ZodUnknown>, z.ZodUnion<[z.ZodPromise<z.ZodVoid>, z.ZodVoid]>>>;
280
+ postDeploy: z.ZodOptional<z.ZodFunction<z.ZodTuple<[z.ZodAny], z.ZodUnknown>, z.ZodUnion<[z.ZodPromise<z.ZodVoid>, z.ZodVoid]>>>;
281
+ }, "strip", z.ZodTypeAny, {
282
+ preDeploy?: ((args_0: any, ...args: unknown[]) => void | Promise<void>) | undefined;
283
+ postDeploy?: ((args_0: any, ...args: unknown[]) => void | Promise<void>) | undefined;
284
+ }, {
285
+ preDeploy?: ((args_0: any, ...args: unknown[]) => void | Promise<void>) | undefined;
286
+ postDeploy?: ((args_0: any, ...args: unknown[]) => void | Promise<void>) | undefined;
287
+ }>>;
288
+ }, "strip", z.ZodTypeAny, {
289
+ app: "backend" | "frontend";
290
+ ssh: {
291
+ host: string;
292
+ user: string;
293
+ port: number;
294
+ identityFile?: string | undefined;
295
+ proxyMode?: "cloudflare" | undefined;
296
+ proxyCommand?: string | undefined;
297
+ };
298
+ remotePath: string;
299
+ zeroDowntime: boolean;
300
+ keepReleases: number;
301
+ healthCheck: {
302
+ timeout: number;
303
+ path: string;
304
+ enabled: boolean;
305
+ retries: number;
306
+ startupDelay: number;
307
+ };
308
+ envFile: string;
309
+ nodeVersion: string;
310
+ cloudflare?: {
311
+ zone: string;
312
+ lockdownFirewall: boolean;
313
+ appHostname?: string | undefined;
314
+ sshHostname?: string | undefined;
315
+ tunnelName?: string | undefined;
316
+ accessEmails?: string[] | undefined;
317
+ bootstrapSshHost?: string | undefined;
318
+ } | undefined;
319
+ backend?: {
320
+ port: number;
321
+ } | undefined;
322
+ pm2?: {
323
+ name: string;
324
+ instances?: number | undefined;
325
+ maxMemory?: string | undefined;
326
+ } | undefined;
327
+ domain?: string | undefined;
328
+ pkgManager?: "npm" | "yarn" | "pnpm" | "bun" | undefined;
329
+ buildDir?: string | undefined;
330
+ sharedDirs?: string[] | undefined;
331
+ sharedFiles?: string[] | undefined;
332
+ database?: {
333
+ host: string;
334
+ type: "postgres" | "mysql" | "sqlite" | "mongodb";
335
+ user: string;
336
+ port: number;
337
+ name: string;
338
+ password?: string | undefined;
339
+ } | undefined;
340
+ backup?: {
341
+ s3Bucket: string;
342
+ schedule: "hourly" | "daily" | "weekly";
343
+ retentionDays: number;
344
+ s3Prefix?: string | undefined;
345
+ s3Endpoint?: string | undefined;
346
+ } | undefined;
347
+ hooks?: {
348
+ preDeploy?: ((args_0: any, ...args: unknown[]) => void | Promise<void>) | undefined;
349
+ postDeploy?: ((args_0: any, ...args: unknown[]) => void | Promise<void>) | undefined;
350
+ } | undefined;
351
+ }, {
352
+ app: "backend" | "frontend";
353
+ ssh: {
354
+ host: string;
355
+ user: string;
356
+ port?: number | undefined;
357
+ identityFile?: string | undefined;
358
+ proxyMode?: "cloudflare" | undefined;
359
+ proxyCommand?: string | undefined;
360
+ };
361
+ remotePath: string;
362
+ cloudflare?: {
363
+ zone: string;
364
+ appHostname?: string | undefined;
365
+ sshHostname?: string | undefined;
366
+ tunnelName?: string | undefined;
367
+ lockdownFirewall?: boolean | undefined;
368
+ accessEmails?: string[] | undefined;
369
+ bootstrapSshHost?: string | undefined;
370
+ } | undefined;
371
+ backend?: {
372
+ port?: number | undefined;
373
+ } | undefined;
374
+ pm2?: {
375
+ name: string;
376
+ instances?: number | undefined;
377
+ maxMemory?: string | undefined;
378
+ } | undefined;
379
+ domain?: string | undefined;
380
+ zeroDowntime?: boolean | undefined;
381
+ keepReleases?: number | undefined;
382
+ healthCheck?: {
383
+ timeout?: number | undefined;
384
+ path?: string | undefined;
385
+ enabled?: boolean | undefined;
386
+ retries?: number | undefined;
387
+ startupDelay?: number | undefined;
388
+ } | undefined;
389
+ envFile?: string | undefined;
390
+ nodeVersion?: string | undefined;
391
+ pkgManager?: "npm" | "yarn" | "pnpm" | "bun" | undefined;
392
+ buildDir?: string | undefined;
393
+ sharedDirs?: string[] | undefined;
394
+ sharedFiles?: string[] | undefined;
395
+ database?: {
396
+ host: string;
397
+ type: "postgres" | "mysql" | "sqlite" | "mongodb";
398
+ user: string;
399
+ port: number;
400
+ name: string;
401
+ password?: string | undefined;
402
+ } | undefined;
403
+ backup?: {
404
+ s3Bucket: string;
405
+ s3Prefix?: string | undefined;
406
+ s3Endpoint?: string | undefined;
407
+ schedule?: "hourly" | "daily" | "weekly" | undefined;
408
+ retentionDays?: number | undefined;
409
+ } | undefined;
410
+ hooks?: {
411
+ preDeploy?: ((args_0: any, ...args: unknown[]) => void | Promise<void>) | undefined;
412
+ postDeploy?: ((args_0: any, ...args: unknown[]) => void | Promise<void>) | undefined;
413
+ } | undefined;
414
+ }>;
415
+ export type ShipnodeConfigSchema = z.infer<typeof ShipnodeConfigSchema>;
416
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;EAO1B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;EAI1B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;EAE9B,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;GAMtB,CAAC;AAEf,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;GAOpB,CAAC;AAEd,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;GAMlB,CAAC;AAEd,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;GAQtB,CAAC;AAEd,eAAO,MAAM,iBAAiB;;;;;;;;;GAGjB,CAAC;AAEd,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoB/B,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
@@ -0,0 +1,75 @@
1
+ import { z } from 'zod';
2
+ import { isValidIpOrHostname, isValidDomain, isValidPm2Name } from '../domain/validation/ip.js';
3
+ export const SshConfigSchema = z.object({
4
+ host: z.string().refine(isValidIpOrHostname, 'Must be a valid IP address or hostname'),
5
+ user: z.string().min(1, 'SSH user is required'),
6
+ port: z.number().int().min(1).max(65535).default(22),
7
+ identityFile: z.string().optional(),
8
+ proxyMode: z.enum(['cloudflare']).optional(),
9
+ proxyCommand: z.string().optional(),
10
+ });
11
+ export const Pm2ConfigSchema = z.object({
12
+ name: z.string().refine(isValidPm2Name, 'PM2 name must be alphanumeric, dash, or underscore (max 64 chars)'),
13
+ instances: z.number().int().min(1).optional(),
14
+ maxMemory: z.string().optional(),
15
+ });
16
+ export const BackendConfigSchema = z.object({
17
+ port: z.number().int().min(1).max(65535).default(3000),
18
+ });
19
+ export const HealthCheckConfigSchema = z.object({
20
+ enabled: z.boolean().default(true),
21
+ path: z.string().default('/health'),
22
+ timeout: z.number().int().min(1).default(30),
23
+ retries: z.number().int().min(1).default(3),
24
+ startupDelay: z.number().int().min(0).default(3),
25
+ }).default({});
26
+ export const DatabaseConfigSchema = z.object({
27
+ type: z.enum(['postgres', 'mysql', 'sqlite', 'mongodb']),
28
+ host: z.string(),
29
+ port: z.number().int().min(1).max(65535),
30
+ name: z.string(),
31
+ user: z.string(),
32
+ password: z.string().optional(),
33
+ }).optional();
34
+ export const BackupConfigSchema = z.object({
35
+ s3Bucket: z.string().min(1, 'S3 bucket is required'),
36
+ s3Prefix: z.string().optional(),
37
+ s3Endpoint: z.string().optional(),
38
+ schedule: z.enum(['hourly', 'daily', 'weekly']).default('daily'),
39
+ retentionDays: z.number().int().min(1).default(14),
40
+ }).optional();
41
+ export const CloudflareConfigSchema = z.object({
42
+ zone: z.string().min(1, 'Cloudflare zone is required'),
43
+ appHostname: z.string().optional(),
44
+ sshHostname: z.string().optional(),
45
+ tunnelName: z.string().optional(),
46
+ lockdownFirewall: z.boolean().default(false),
47
+ accessEmails: z.array(z.string().email()).optional(),
48
+ bootstrapSshHost: z.string().optional(),
49
+ }).optional();
50
+ export const HooksConfigSchema = z.object({
51
+ preDeploy: z.function().args(z.any()).returns(z.promise(z.void()).or(z.void())).optional(),
52
+ postDeploy: z.function().args(z.any()).returns(z.promise(z.void()).or(z.void())).optional(),
53
+ }).optional();
54
+ export const ShipnodeConfigSchema = z.object({
55
+ app: z.enum(['backend', 'frontend']),
56
+ ssh: SshConfigSchema,
57
+ remotePath: z.string().min(1, 'Remote path is required'),
58
+ pm2: Pm2ConfigSchema.optional(),
59
+ backend: BackendConfigSchema.optional(),
60
+ domain: z.string().refine(isValidDomain, 'Must be a valid domain (no protocol)').optional(),
61
+ zeroDowntime: z.boolean().default(true),
62
+ keepReleases: z.number().int().min(1).default(5),
63
+ healthCheck: HealthCheckConfigSchema,
64
+ envFile: z.string().default('.env'),
65
+ nodeVersion: z.string().default('lts'),
66
+ pkgManager: z.enum(['npm', 'yarn', 'pnpm', 'bun']).optional(),
67
+ buildDir: z.string().optional(),
68
+ sharedDirs: z.array(z.string()).optional(),
69
+ sharedFiles: z.array(z.string()).optional(),
70
+ database: DatabaseConfigSchema,
71
+ backup: BackupConfigSchema,
72
+ cloudflare: CloudflareConfigSchema,
73
+ hooks: HooksConfigSchema,
74
+ });
75
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { ShipnodeConfig } from '../../shared/types.js';
2
+ import type { DeploymentStrategy, StrategyContext } from './strategy.js';
3
+ export declare class BackendStrategy implements DeploymentStrategy {
4
+ private config;
5
+ private cwd;
6
+ readonly name = "backend";
7
+ constructor(config: ShipnodeConfig, cwd: string);
8
+ stage(ctx: StrategyContext): Promise<void>;
9
+ setupEnvironment(ctx: StrategyContext): Promise<void>;
10
+ startApp(ctx: StrategyContext): Promise<void>;
11
+ private generateEcosystemFile;
12
+ private getLinkSharedResourcesCommand;
13
+ private resolvePkgManager;
14
+ }
15
+ //# sourceMappingURL=backend-strategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend-strategy.d.ts","sourceRoot":"","sources":["../../../src/domain/deploy/backend-strategy.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEzE,qBAAa,eAAgB,YAAW,kBAAkB;IAItD,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,GAAG;IAJb,QAAQ,CAAC,IAAI,aAAa;gBAGhB,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,MAAM;IAGf,KAAK,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB1C,gBAAgB,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BrD,QAAQ,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBnD,OAAO,CAAC,qBAAqB;IAuB7B,OAAO,CAAC,6BAA6B;YAmBvB,iBAAiB;CAKhC"}