@ts-cloud/core 0.16.59 → 0.16.63

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 +38 -0
  2. package/package.json +2 -2
package/dist/types.d.ts CHANGED
@@ -3077,6 +3077,21 @@ export interface BoxServiceConfig {
3077
3077
  * @default false
3078
3078
  */
3079
3079
  restartOnChange?: boolean;
3080
+ /**
3081
+ * The signal that asks this service to finish its work and exit, such as
3082
+ * a CI runner's `SIGUSR2` (finish the current job, claim no other).
3083
+ * Before a {@link BoxConfig.resize} powers the box off, each such service
3084
+ * gets it and the resize waits for the process to exit, then stops the
3085
+ * unit so `Restart=` cannot start it again and claim more work. Services
3086
+ * without one are stopped by the shutdown itself.
3087
+ */
3088
+ drainSignal?: string;
3089
+ /**
3090
+ * How long a drain may take before the resize gives up, with the box
3091
+ * left running as it was.
3092
+ * @default 3600
3093
+ */
3094
+ drainTimeoutSec?: number;
3080
3095
  }
3081
3096
  /** A dedicated machine declared under `infrastructure.boxes`. */
3082
3097
  export interface BoxConfig {
@@ -3112,6 +3127,29 @@ export interface BoxConfig {
3112
3127
  };
3113
3128
  services?: Record<string, BoxServiceConfig>;
3114
3129
  labels?: Record<string, string>;
3130
+ /**
3131
+ * Change an existing server to {@link BoxConfig.size}. Without it a
3132
+ * declared size only applies when the box is created: resizing powers the
3133
+ * box off, so it never happens by accident. Services with a
3134
+ * {@link BoxServiceConfig.drainSignal} are drained first.
3135
+ */
3136
+ resize?: {
3137
+ /** Enlarge the disk with the type. It cannot be shrunk again. @default true */
3138
+ upgradeDisk?: boolean;
3139
+ /**
3140
+ * When the provider reports no stock of the type: `'fail'`, or
3141
+ * `'keep-current'` to leave the box as it is and converge it anyway.
3142
+ * @default 'fail'
3143
+ */
3144
+ whenUnavailable?: 'keep-current' | 'fail';
3145
+ /**
3146
+ * Ask for the type even when the provider's stock flag says none is
3147
+ * left. The flag is best effort; if placement does fail, the box is
3148
+ * powered on again as it was.
3149
+ * @default false
3150
+ */
3151
+ attemptUnavailable?: boolean;
3152
+ };
3115
3153
  }
3116
3154
  export interface ComputeConfig {
3117
3155
  /** Explicitly reconcile an existing Hetzner server's size. Never resize by default. */
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ts-cloud/core",
3
3
  "type": "module",
4
- "version": "0.16.59",
4
+ "version": "0.16.63",
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.59"
34
+ "@ts-cloud/aws-types": "0.16.63"
35
35
  },
36
36
  "devDependencies": {
37
37
  "typescript": "^7.0.2"