rampway 0.2.6 → 0.3.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.
Files changed (85) hide show
  1. package/README.md +41 -0
  2. package/build/src/cli.d.ts.map +1 -1
  3. package/build/src/cli.js +35 -7
  4. package/build/src/cli.js.map +1 -1
  5. package/build/src/commands/task.d.ts +9 -0
  6. package/build/src/commands/task.d.ts.map +1 -0
  7. package/build/src/commands/task.js +23 -0
  8. package/build/src/commands/task.js.map +1 -0
  9. package/build/src/config/validate-config.d.ts +5 -0
  10. package/build/src/config/validate-config.d.ts.map +1 -1
  11. package/build/src/config/validate-config.js +139 -0
  12. package/build/src/config/validate-config.js.map +1 -1
  13. package/build/src/core/deploy-runner.js +5 -5
  14. package/build/src/core/deploy-runner.js.map +1 -1
  15. package/build/src/core/locks.d.ts +2 -1
  16. package/build/src/core/locks.d.ts.map +1 -1
  17. package/build/src/core/locks.js +28 -9
  18. package/build/src/core/locks.js.map +1 -1
  19. package/build/src/core/operational-task-runner.d.ts +21 -0
  20. package/build/src/core/operational-task-runner.d.ts.map +1 -0
  21. package/build/src/core/operational-task-runner.js +66 -0
  22. package/build/src/core/operational-task-runner.js.map +1 -0
  23. package/build/src/core/redaction.d.ts +31 -3
  24. package/build/src/core/redaction.d.ts.map +1 -1
  25. package/build/src/core/redaction.js +83 -5
  26. package/build/src/core/redaction.js.map +1 -1
  27. package/build/src/core/release-manager.d.ts +11 -0
  28. package/build/src/core/release-manager.d.ts.map +1 -1
  29. package/build/src/core/release-manager.js +22 -0
  30. package/build/src/core/release-manager.js.map +1 -1
  31. package/build/src/core/task-runner.d.ts +4 -2
  32. package/build/src/core/task-runner.d.ts.map +1 -1
  33. package/build/src/core/task-runner.js +34 -8
  34. package/build/src/core/task-runner.js.map +1 -1
  35. package/build/src/transports/local-transport.d.ts +19 -2
  36. package/build/src/transports/local-transport.d.ts.map +1 -1
  37. package/build/src/transports/local-transport.js +97 -9
  38. package/build/src/transports/local-transport.js.map +1 -1
  39. package/build/src/transports/ssh-transport.d.ts +43 -4
  40. package/build/src/transports/ssh-transport.d.ts.map +1 -1
  41. package/build/src/transports/ssh-transport.js +105 -12
  42. package/build/src/transports/ssh-transport.js.map +1 -1
  43. package/build/src/types.d.ts +20 -0
  44. package/build/src/types.d.ts.map +1 -1
  45. package/build/src/velocious/auth.d.ts +17 -0
  46. package/build/src/velocious/auth.d.ts.map +1 -0
  47. package/build/src/velocious/auth.js +30 -0
  48. package/build/src/velocious/auth.js.map +1 -0
  49. package/build/src/velocious/control-plane.d.ts +155 -0
  50. package/build/src/velocious/control-plane.d.ts.map +1 -0
  51. package/build/src/velocious/control-plane.js +275 -0
  52. package/build/src/velocious/control-plane.js.map +1 -0
  53. package/build/src/velocious/controller.d.ts +39 -0
  54. package/build/src/velocious/controller.d.ts.map +1 -0
  55. package/build/src/velocious/controller.js +86 -0
  56. package/build/src/velocious/controller.js.map +1 -0
  57. package/build/src/velocious/executor.d.ts +55 -0
  58. package/build/src/velocious/executor.d.ts.map +1 -0
  59. package/build/src/velocious/executor.js +142 -0
  60. package/build/src/velocious/executor.js.map +1 -0
  61. package/build/src/velocious/index.d.ts +28 -0
  62. package/build/src/velocious/index.d.ts.map +1 -0
  63. package/build/src/velocious/index.js +141 -0
  64. package/build/src/velocious/index.js.map +1 -0
  65. package/build/src/velocious/path-matcher.d.ts +18 -0
  66. package/build/src/velocious/path-matcher.d.ts.map +1 -0
  67. package/build/src/velocious/path-matcher.js +48 -0
  68. package/build/src/velocious/path-matcher.js.map +1 -0
  69. package/build/src/velocious/registry.d.ts +19 -0
  70. package/build/src/velocious/registry.d.ts.map +1 -0
  71. package/build/src/velocious/registry.js +36 -0
  72. package/build/src/velocious/registry.js.map +1 -0
  73. package/build/src/velocious/run-store.d.ts +297 -0
  74. package/build/src/velocious/run-store.d.ts.map +1 -0
  75. package/build/src/velocious/run-store.js +482 -0
  76. package/build/src/velocious/run-store.js.map +1 -0
  77. package/build/src/velocious/sanitize.d.ts +23 -0
  78. package/build/src/velocious/sanitize.d.ts.map +1 -0
  79. package/build/src/velocious/sanitize.js +154 -0
  80. package/build/src/velocious/sanitize.js.map +1 -0
  81. package/docs/config-reference.md +42 -0
  82. package/docs/docker-development-environment.md +103 -0
  83. package/docs/migration-from-capistrano.md +25 -3
  84. package/docs/velocious-deployment-api.md +189 -0
  85. package/package.json +22 -3
@@ -0,0 +1,297 @@
1
+ /**
2
+ * @param {string} id - Run id.
3
+ * @returns {void}
4
+ */
5
+ export function registerActiveDeploymentRun(id: string): void;
6
+ /**
7
+ * @param {string} id - Run id.
8
+ * @returns {void}
9
+ */
10
+ export function unregisterActiveDeploymentRun(id: string): void;
11
+ /**
12
+ * @param {number} staleRunTimeoutMs - Lease duration.
13
+ * @returns {number} Heartbeat interval strictly below the lease.
14
+ */
15
+ export function heartbeatIntervalMs(staleRunTimeoutMs: number): number;
16
+ /**
17
+ * @param {{activeRunIds: Set<string>, nowMs: number, run: {id: string, heartbeatAtMs: number|null, requestedAtMs: number}, staleRunTimeoutMs: number}} args - Lease data.
18
+ * @returns {boolean} Whether ownership expired.
19
+ */
20
+ export function isRunLeaseExpired({ activeRunIds: localIds, nowMs, run, staleRunTimeoutMs }: {
21
+ activeRunIds: Set<string>;
22
+ nowMs: number;
23
+ run: {
24
+ id: string;
25
+ heartbeatAtMs: number | null;
26
+ requestedAtMs: number;
27
+ };
28
+ staleRunTimeoutMs: number;
29
+ }): boolean;
30
+ /**
31
+ * @param {{id: string, mountIdentifier: string, ownerToken: string}} args - Fence identifiers.
32
+ * @returns {Record<string, unknown>} Update conditions.
33
+ */
34
+ export function terminalTransitionConditions({ id, mountIdentifier, ownerToken }: {
35
+ id: string;
36
+ mountIdentifier: string;
37
+ ownerToken: string;
38
+ }): Record<string, unknown>;
39
+ /**
40
+ * Includes the observed heartbeat so a concurrent renewal defeats stale reconciliation.
41
+ *
42
+ * @param {{mountIdentifier: string, run: Pick<DeploymentRunRow, 'heartbeatAtMs'|'id'|'ownerToken'|'status'>}} args - Fence data.
43
+ * @returns {Record<string, unknown>} Update conditions.
44
+ */
45
+ export function reconciliationConditions({ mountIdentifier, run }: {
46
+ mountIdentifier: string;
47
+ run: Pick<DeploymentRunRow, "heartbeatAtMs" | "id" | "ownerToken" | "status">;
48
+ }): Record<string, unknown>;
49
+ /** Rampway-owned durable deployment state stored through Velocious's database abstraction. */
50
+ export default class DeploymentRunStore {
51
+ /**
52
+ * @param {object} args - Store options.
53
+ * @param {any} args.configuration - Velocious configuration.
54
+ * @param {string} [args.databaseIdentifier] - Database identifier.
55
+ * @param {string} args.mountIdentifier - Authenticated mount scope.
56
+ * @param {number} args.staleRunTimeoutMs - Lease duration.
57
+ */
58
+ constructor({ configuration, databaseIdentifier, mountIdentifier, staleRunTimeoutMs }: {
59
+ configuration: any;
60
+ databaseIdentifier?: string | undefined;
61
+ mountIdentifier: string;
62
+ staleRunTimeoutMs: number;
63
+ });
64
+ configuration: any;
65
+ databaseIdentifier: string;
66
+ mountIdentifier: string;
67
+ staleRunTimeoutMs: number;
68
+ /** @type {Promise<void>|null} */
69
+ readyPromise: Promise<void> | null;
70
+ /** @returns {Promise<void>} */
71
+ ensureReady(): Promise<void>;
72
+ /**
73
+ * @param {string} id - Run id.
74
+ * @returns {Promise<DeploymentRunRow|null>} Run.
75
+ */
76
+ findRunById(id: string): Promise<DeploymentRunRow | null>;
77
+ /**
78
+ * @param {string} key - Idempotency key.
79
+ * @returns {Promise<DeploymentRunRow|null>} Run.
80
+ */
81
+ findRunByKey(key: string): Promise<DeploymentRunRow | null>;
82
+ /**
83
+ * Serializes admission by target then by mount-global idempotency key.
84
+ *
85
+ * @param {{idempotencyKey: string, project: string, revision: string, stage: string}} args - Run request.
86
+ * @returns {Promise<{outcome: string, run: DeploymentRunRow|null}>} Admission result.
87
+ */
88
+ createRunIfPossible({ idempotencyKey, project, revision, stage }: {
89
+ idempotencyKey: string;
90
+ project: string;
91
+ revision: string;
92
+ stage: string;
93
+ }): Promise<{
94
+ outcome: string;
95
+ run: DeploymentRunRow | null;
96
+ }>;
97
+ /** @param {{id: string, startedAtMs: number}} args - Transition. @returns {Promise<void>} */
98
+ markRunning({ id, startedAtMs }: {
99
+ id: string;
100
+ startedAtMs: number;
101
+ }): Promise<void>;
102
+ /** @param {{id: string, heartbeatAtMs: number}} args - Heartbeat. @returns {Promise<void>} */
103
+ heartbeat({ id, heartbeatAtMs }: {
104
+ id: string;
105
+ heartbeatAtMs: number;
106
+ }): Promise<void>;
107
+ /** @param {{id: string, ownerToken: string, finishedAtMs: number, result: any}} args - Transition. @returns {Promise<void>} */
108
+ markSucceeded({ id, ownerToken, finishedAtMs, result }: {
109
+ id: string;
110
+ ownerToken: string;
111
+ finishedAtMs: number;
112
+ result: any;
113
+ }): Promise<void>;
114
+ /** @param {{id: string, ownerToken: string, finishedAtMs: number, error: any}} args - Transition. @returns {Promise<void>} */
115
+ markFailed({ id, ownerToken, finishedAtMs, error }: {
116
+ id: string;
117
+ ownerToken: string;
118
+ finishedAtMs: number;
119
+ error: any;
120
+ }): Promise<void>;
121
+ /** @param {{id: string, ownerToken: string, finishedAtMs: number, error: any}} args - Transition. @returns {Promise<void>} */
122
+ markReconciliationRequired({ id, ownerToken, finishedAtMs, error }: {
123
+ id: string;
124
+ ownerToken: string;
125
+ finishedAtMs: number;
126
+ error: any;
127
+ }): Promise<void>;
128
+ /** @param {{event: string, payload: any, runId: string|null}} args - Audit event. @returns {Promise<void>} */
129
+ addAuditEvent({ event, payload, runId }: {
130
+ event: string;
131
+ payload: any;
132
+ runId: string | null;
133
+ }): Promise<void>;
134
+ /**
135
+ * @param {{runId: string}} args - Query.
136
+ * @returns {Promise<Array<Record<string, any>>>} Events.
137
+ */
138
+ listAuditEvents({ runId }: {
139
+ runId: string;
140
+ }): Promise<Array<Record<string, any>>>;
141
+ /**
142
+ * @param {any} db - Open Velocious database connection.
143
+ * @param {DeploymentRunRow} run - Observed stale run.
144
+ * @returns {Promise<boolean>} Whether this reconciler won.
145
+ */
146
+ _reconcileExpiredRun(db: any, run: DeploymentRunRow): Promise<boolean>;
147
+ /**
148
+ * Reconciles an expired pending/running owner before returning durable state.
149
+ *
150
+ * @param {any} db - Open Velocious database connection.
151
+ * @param {DeploymentRunRow|null} run - Observed run.
152
+ * @returns {Promise<DeploymentRunRow|null>} Current durable run.
153
+ */
154
+ _reconcileExpiredRunIfNeeded(db: any, run: DeploymentRunRow | null): Promise<DeploymentRunRow | null>;
155
+ /** @param {{data: Record<string, any>, id: string, ownerToken: string}} args - Transition. @returns {Promise<void>} */
156
+ _transition({ data, id, ownerToken }: {
157
+ data: Record<string, any>;
158
+ id: string;
159
+ ownerToken: string;
160
+ }): Promise<void>;
161
+ /**
162
+ * @param {string} kind - Lock kind.
163
+ * @param {string} value - Scoped value.
164
+ * @returns {string} Lock name.
165
+ */
166
+ _lockName(kind: string, value: string): string;
167
+ /**
168
+ * @param {any} db - Connection.
169
+ * @param {string} id - Run id.
170
+ * @returns {Promise<DeploymentRunRow|null>} Run.
171
+ */
172
+ _findRunById(db: any, id: string): Promise<DeploymentRunRow | null>;
173
+ /**
174
+ * @param {any} db - Connection.
175
+ * @param {string} key - Idempotency key.
176
+ * @returns {Promise<DeploymentRunRow|null>} Run.
177
+ */
178
+ _findRunByKey(db: any, key: string): Promise<DeploymentRunRow | null>;
179
+ /**
180
+ * @param {any} db - Connection.
181
+ * @param {{project: string, stage: string}} args - Target.
182
+ * @returns {Promise<DeploymentRunRow|null>} Run.
183
+ */
184
+ _findBlockingRun(db: any, { project, stage }: {
185
+ project: string;
186
+ stage: string;
187
+ }): Promise<DeploymentRunRow | null>;
188
+ /**
189
+ * @param {Record<string, any>} row - Database row.
190
+ * @returns {DeploymentRunRow} Run.
191
+ */
192
+ _row(row: Record<string, any>): DeploymentRunRow;
193
+ /**
194
+ * @param {string} context - Context.
195
+ * @param {unknown} error - Failure.
196
+ * @returns {void}
197
+ */
198
+ _emitFrameworkError(context: string, error: unknown): void;
199
+ /**
200
+ * @template T
201
+ * @param {(db: any) => Promise<T>} callback - Work.
202
+ * @returns {Promise<T>} Result.
203
+ */
204
+ _withDb<T>(callback: (db: any) => Promise<T>): Promise<T>;
205
+ }
206
+ export type DeploymentRunRow = {
207
+ id: string;
208
+ mountIdentifier: string;
209
+ project: string;
210
+ stage: string;
211
+ revision: string;
212
+ idempotencyKey: string;
213
+ status: string;
214
+ result: any;
215
+ error: any;
216
+ requestedAtMs: number;
217
+ startedAtMs: number | null;
218
+ finishedAtMs: number | null;
219
+ ownerToken: string | null;
220
+ heartbeatAtMs: number | null;
221
+ };
222
+ export type DeploymentRunStoreContract = {
223
+ findRunById: (id: string) => Promise<DeploymentRunRow | null>;
224
+ findRunByKey: (key: string) => Promise<DeploymentRunRow | null>;
225
+ createRunIfPossible: (args: {
226
+ idempotencyKey: string;
227
+ project: string;
228
+ revision: string;
229
+ stage: string;
230
+ }) => Promise<{
231
+ outcome: string;
232
+ run: DeploymentRunRow | null;
233
+ }>;
234
+ markRunning: (args: {
235
+ id: string;
236
+ startedAtMs: number;
237
+ }) => Promise<void>;
238
+ heartbeat: (args: {
239
+ id: string;
240
+ heartbeatAtMs: number;
241
+ }) => Promise<void>;
242
+ markSucceeded: (args: {
243
+ id: string;
244
+ ownerToken: string;
245
+ finishedAtMs: number;
246
+ result: any;
247
+ }) => Promise<void>;
248
+ markFailed: (args: {
249
+ id: string;
250
+ ownerToken: string;
251
+ finishedAtMs: number;
252
+ error: any;
253
+ }) => Promise<void>;
254
+ markReconciliationRequired: (args: {
255
+ id: string;
256
+ ownerToken: string;
257
+ finishedAtMs: number;
258
+ error: any;
259
+ }) => Promise<void>;
260
+ addAuditEvent: (args: {
261
+ event: string;
262
+ payload: any;
263
+ runId: string | null;
264
+ }) => Promise<void>;
265
+ };
266
+ export const AUDIT_TABLE: "rampway_deployment_api_audit_events";
267
+ /**
268
+ * @typedef {object} DeploymentRunRow
269
+ * @property {string} id
270
+ * @property {string} mountIdentifier
271
+ * @property {string} project
272
+ * @property {string} stage
273
+ * @property {string} revision
274
+ * @property {string} idempotencyKey
275
+ * @property {string} status
276
+ * @property {any} result
277
+ * @property {any} error
278
+ * @property {number} requestedAtMs
279
+ * @property {number|null} startedAtMs
280
+ * @property {number|null} finishedAtMs
281
+ * @property {string|null} ownerToken
282
+ * @property {number|null} heartbeatAtMs
283
+ */
284
+ /**
285
+ * @typedef {object} DeploymentRunStoreContract
286
+ * @property {(id: string) => Promise<DeploymentRunRow|null>} findRunById
287
+ * @property {(key: string) => Promise<DeploymentRunRow|null>} findRunByKey
288
+ * @property {(args: {idempotencyKey: string, project: string, revision: string, stage: string}) => Promise<{outcome: string, run: DeploymentRunRow|null}>} createRunIfPossible
289
+ * @property {(args: {id: string, startedAtMs: number}) => Promise<void>} markRunning
290
+ * @property {(args: {id: string, heartbeatAtMs: number}) => Promise<void>} heartbeat
291
+ * @property {(args: {id: string, ownerToken: string, finishedAtMs: number, result: any}) => Promise<void>} markSucceeded
292
+ * @property {(args: {id: string, ownerToken: string, finishedAtMs: number, error: any}) => Promise<void>} markFailed
293
+ * @property {(args: {id: string, ownerToken: string, finishedAtMs: number, error: any}) => Promise<void>} markReconciliationRequired
294
+ * @property {(args: {event: string, payload: any, runId: string|null}) => Promise<void>} addAuditEvent
295
+ */
296
+ export const RUNS_TABLE: "rampway_deployment_runs";
297
+ //# sourceMappingURL=run-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-store.d.ts","sourceRoot":"","sources":["../../../src/velocious/run-store.js"],"names":[],"mappings":"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"}