@ts-cloud/core 0.16.14 → 0.16.15

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 (2) hide show
  1. package/dist/types.d.ts +46 -0
  2. package/package.json +2 -2
package/dist/types.d.ts CHANGED
@@ -977,6 +977,39 @@ export interface SharedPathSpec {
977
977
  }
978
978
  /** A shared path: a release-relative path, or {@link SharedPathSpec}. */
979
979
  export type SharedPathEntry = string | SharedPathSpec;
980
+ /**
981
+ * The recurring liveness probe for a ported server-app site: a systemd timer
982
+ * that asks the service for an HTTP response on `127.0.0.1:<port>` and
983
+ * restarts it when it has stopped answering. Every field is optional.
984
+ */
985
+ export interface SiteLivenessConfig {
986
+ /** Path to request. @default the health check path, else '/' */
987
+ path?: string;
988
+ /** Seconds between checks. @default 60 */
989
+ intervalSeconds?: number;
990
+ /** Consecutive failed checks, after the startup grace, before a restart. @default 3 */
991
+ failuresBeforeRestart?: number;
992
+ /**
993
+ * Seconds one check waits for an HTTP response. A slow answer inside this
994
+ * budget is an answer, and counts as alive. @default 10
995
+ */
996
+ timeoutSeconds?: number;
997
+ /**
998
+ * Seconds after a unit (re)starts during which a failed check is not held
999
+ * against it - the equivalent of a Kubernetes startupProbe. Must be longer
1000
+ * than the slowest honest boot: a server that binds its port and then warms
1001
+ * up for minutes is starting, not wedged. `0` disables the grace.
1002
+ * @default 600
1003
+ */
1004
+ startupGraceSeconds?: number;
1005
+ /**
1006
+ * Ceiling on the back-off between consecutive liveness restarts. The second
1007
+ * restart in a row waits at least 5 minutes after the first, and each one
1008
+ * after that doubles, up to this. `0` disables the back-off.
1009
+ * @default 3600
1010
+ */
1011
+ maxBackoffSeconds?: number;
1012
+ }
980
1013
  export interface SiteConfig {
981
1014
  /**
982
1015
  * Directory to deploy.
@@ -1184,6 +1217,19 @@ export interface SiteConfig {
1184
1217
  * exactly that. Leave unset for anything that stops immediately.
1185
1218
  */
1186
1219
  stopTimeout?: string;
1220
+ /**
1221
+ * Recurring liveness probe for a ported server-app site. `Restart=always`
1222
+ * only covers a process that exits; this covers one that is alive and no
1223
+ * longer answering. A unit is never restarted inside its startup grace, and
1224
+ * consecutive restarts back off, so a slow boot cannot turn into a restart
1225
+ * loop.
1226
+ *
1227
+ * Set `false` to opt out, for a service that answers nothing on its port or
1228
+ * one where a restart is more dangerous than an outage.
1229
+ * @default enabled: `healthCheck.path` or '/', every 60s, 10s timeout,
1230
+ * restart after 3 consecutive failures once the unit is 10 minutes old
1231
+ */
1232
+ liveness?: false | SiteLivenessConfig;
1187
1233
  /**
1188
1234
  * SSR only. tar `--exclude` patterns applied when packaging the release
1189
1235
  * tarball. Keep host-specific / heavy paths out of the artifact — most
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ts-cloud/core",
3
3
  "type": "module",
4
- "version": "0.16.14",
4
+ "version": "0.16.15",
5
5
  "description": "Core CloudFormation generation library for ts-cloud",
6
6
  "author": "Chris Breuer <chris@stacksjs.com>",
7
7
  "license": "MIT",
@@ -31,7 +31,7 @@
31
31
  "typecheck": "tsc --noEmit"
32
32
  },
33
33
  "dependencies": {
34
- "@ts-cloud/aws-types": "0.16.14"
34
+ "@ts-cloud/aws-types": "0.16.15"
35
35
  },
36
36
  "devDependencies": {
37
37
  "typescript": "^7.0.2"