@highstate/backend 0.6.1 → 0.7.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.
package/dist/index.d.ts CHANGED
@@ -56,9 +56,9 @@ declare class LocalPulumiHost {
56
56
  private lock;
57
57
  private constructor();
58
58
  getCurrentUser(): Promise<WhoAmIResult | null>;
59
- runInline<T>(projectId: string, pulumiProjectName: string, pulumiStackName: string, program: () => Promise<void> | Promise<Record<string, unknown>>, fn: (stack: Stack) => Promise<T>): Promise<T>;
60
- runEmpty<T>(projectId: string, pulumiProjectName: string, pulumiStackName: string, fn: (stack: Stack) => Promise<T>): Promise<T>;
61
- runLocal<T>(projectId: string, pulumiProjectName: string, pulumiStackName: string, programPathResolver: () => Promise<string> | string, fn: (stack: Stack) => Promise<T>, stackConfig?: ConfigMap): Promise<T>;
59
+ runInline<T>(projectId: string, pulumiProjectName: string, pulumiStackName: string, program: () => Promise<void> | Promise<Record<string, unknown>>, fn: (stack: Stack) => Promise<T>, envVars?: Record<string, string>): Promise<T>;
60
+ runEmpty<T>(projectId: string, pulumiProjectName: string, pulumiStackName: string, fn: (stack: Stack) => Promise<T>, envVars?: Record<string, string>): Promise<T>;
61
+ runLocal<T>(projectId: string, pulumiProjectName: string, pulumiStackName: string, programPathResolver: () => Promise<string> | string, fn: (stack: Stack) => Promise<T>, stackConfig?: ConfigMap, envVars?: Record<string, string>): Promise<T>;
62
62
  private sharedPassword;
63
63
  private passwords;
64
64
  hasPassword(projectId: string): boolean;
@@ -137,6 +137,7 @@ declare const configSchema: z.ZodObject<{
137
137
  HIGHSTATE_BACKEND_RUNNER_LOCAL_SKIP_STATE_CHECK: z.ZodDefault<z.ZodBoolean>;
138
138
  HIGHSTATE_BACKEND_RUNNER_LOCAL_PRINT_OUTPUT: z.ZodDefault<z.ZodBoolean>;
139
139
  HIGHSTATE_BACKEND_RUNNER_LOCAL_SOURCE_BASE_PATH: z.ZodOptional<z.ZodString>;
140
+ HIGHSTATE_BACKEND_RUNNER_LOCAL_CACHE_DIR: z.ZodOptional<z.ZodString>;
140
141
  HIGHSTATE_BACKEND_RUNNER_TYPE: z.ZodDefault<z.ZodEnum<["local"]>>;
141
142
  HIGHSTATE_BACKEND_STATE_LOCAL_DIR: z.ZodOptional<z.ZodString>;
142
143
  HIGHSTATE_BACKEND_STATE_TYPE: z.ZodDefault<z.ZodEnum<["local"]>>;
@@ -167,6 +168,7 @@ declare const configSchema: z.ZodObject<{
167
168
  HIGHSTATE_BACKEND_PROJECT_PROJECTS_DIR?: string | undefined;
168
169
  HIGHSTATE_BACKEND_STATE_LOCAL_DIR?: string | undefined;
169
170
  HIGHSTATE_BACKEND_RUNNER_LOCAL_SOURCE_BASE_PATH?: string | undefined;
171
+ HIGHSTATE_BACKEND_RUNNER_LOCAL_CACHE_DIR?: string | undefined;
170
172
  HIGHSTATE_BACKEND_TERMINAL_DOCKER_HOST?: string | undefined;
171
173
  HIGHSTATE_BACKEND_WORKSPACE_LOCAL_DIR?: string | undefined;
172
174
  }, {
@@ -183,6 +185,7 @@ declare const configSchema: z.ZodObject<{
183
185
  HIGHSTATE_BACKEND_RUNNER_LOCAL_SKIP_STATE_CHECK?: boolean | undefined;
184
186
  HIGHSTATE_BACKEND_RUNNER_LOCAL_PRINT_OUTPUT?: boolean | undefined;
185
187
  HIGHSTATE_BACKEND_RUNNER_LOCAL_SOURCE_BASE_PATH?: string | undefined;
188
+ HIGHSTATE_BACKEND_RUNNER_LOCAL_CACHE_DIR?: string | undefined;
186
189
  HIGHSTATE_BACKEND_RUNNER_TYPE?: "local" | undefined;
187
190
  HIGHSTATE_BACKEND_TERMINAL_DOCKER_BINARY?: string | undefined;
188
191
  HIGHSTATE_BACKEND_TERMINAL_DOCKER_HOST?: string | undefined;
package/dist/index.mjs CHANGED
@@ -79,7 +79,7 @@ class LocalPulumiHost {
79
79
  return null;
80
80
  }
81
81
  }
82
- async runInline(projectId, pulumiProjectName, pulumiStackName, program, fn) {
82
+ async runInline(projectId, pulumiProjectName, pulumiStackName, program, fn, envVars) {
83
83
  return await this.lock.acquire(`${pulumiProjectName}.${pulumiStackName}`, async () => {
84
84
  const { LocalWorkspace } = await import('@pulumi/pulumi/automation/index.js');
85
85
  const stack = await LocalWorkspace.createOrSelectStack(
@@ -95,7 +95,8 @@ class LocalPulumiHost {
95
95
  },
96
96
  envVars: {
97
97
  PULUMI_CONFIG_PASSPHRASE: this.getPassword(projectId),
98
- PULUMI_K8S_AWAIT_ALL: "true"
98
+ PULUMI_K8S_AWAIT_ALL: "true",
99
+ ...envVars
99
100
  }
100
101
  }
101
102
  );
@@ -112,12 +113,19 @@ class LocalPulumiHost {
112
113
  }
113
114
  });
114
115
  }
115
- async runEmpty(projectId, pulumiProjectName, pulumiStackName, fn) {
116
- return await this.runInline(projectId, pulumiProjectName, pulumiStackName, async () => {
117
- }, fn);
116
+ async runEmpty(projectId, pulumiProjectName, pulumiStackName, fn, envVars) {
117
+ return await this.runInline(
118
+ projectId,
119
+ pulumiProjectName,
120
+ pulumiStackName,
121
+ async () => {
122
+ },
123
+ fn,
124
+ envVars
125
+ );
118
126
  }
119
127
  // TODO: extract args to options object
120
- async runLocal(projectId, pulumiProjectName, pulumiStackName, programPathResolver, fn, stackConfig) {
128
+ async runLocal(projectId, pulumiProjectName, pulumiStackName, programPathResolver, fn, stackConfig, envVars) {
121
129
  return await this.lock.acquire(`${pulumiProjectName}.${pulumiStackName}`, async () => {
122
130
  const { LocalWorkspace } = await import('@pulumi/pulumi/automation/index.js');
123
131
  const stack = await LocalWorkspace.createOrSelectStack(
@@ -137,7 +145,8 @@ class LocalPulumiHost {
137
145
  } : void 0,
138
146
  envVars: {
139
147
  PULUMI_CONFIG_PASSPHRASE: this.getPassword(projectId),
140
- PULUMI_K8S_AWAIT_ALL: "true"
148
+ PULUMI_K8S_AWAIT_ALL: "true",
149
+ ...envVars
141
150
  }
142
151
  }
143
152
  );
@@ -1206,14 +1215,16 @@ const localRunnerBackendConfig = z.object({
1206
1215
  HIGHSTATE_BACKEND_RUNNER_LOCAL_SKIP_SOURCE_CHECK: z.boolean({ coerce: true }).default(false),
1207
1216
  HIGHSTATE_BACKEND_RUNNER_LOCAL_SKIP_STATE_CHECK: z.boolean({ coerce: true }).default(false),
1208
1217
  HIGHSTATE_BACKEND_RUNNER_LOCAL_PRINT_OUTPUT: z.boolean({ coerce: true }).default(true),
1209
- HIGHSTATE_BACKEND_RUNNER_LOCAL_SOURCE_BASE_PATH: z.string().optional()
1218
+ HIGHSTATE_BACKEND_RUNNER_LOCAL_SOURCE_BASE_PATH: z.string().optional(),
1219
+ HIGHSTATE_BACKEND_RUNNER_LOCAL_CACHE_DIR: z.string().optional()
1210
1220
  });
1211
1221
  class LocalRunnerBackend {
1212
- constructor(skipSourceCheck, skipStateCheck, printOutput, sourceBasePath, pulumiProjectHost) {
1222
+ constructor(skipSourceCheck, skipStateCheck, printOutput, sourceBasePath, cacheDir, pulumiProjectHost) {
1213
1223
  this.skipSourceCheck = skipSourceCheck;
1214
1224
  this.skipStateCheck = skipStateCheck;
1215
1225
  this.printOutput = printOutput;
1216
1226
  this.sourceBasePath = sourceBasePath;
1227
+ this.cacheDir = cacheDir;
1217
1228
  this.pulumiProjectHost = pulumiProjectHost;
1218
1229
  }
1219
1230
  events = new EventEmitter();
@@ -1398,7 +1409,10 @@ class LocalRunnerBackend {
1398
1409
  }
1399
1410
  );
1400
1411
  },
1401
- configMap
1412
+ configMap,
1413
+ {
1414
+ HIGHSTATE_CACHE_DIR: this.cacheDir
1415
+ }
1402
1416
  );
1403
1417
  } catch (error) {
1404
1418
  this.updateState({
@@ -1468,6 +1482,9 @@ class LocalRunnerBackend {
1468
1482
  },
1469
1483
  (error) => this.pulumiProjectHost.tryUnlockStack(stack, error)
1470
1484
  );
1485
+ },
1486
+ {
1487
+ PULUMI_K8S_DELETE_UNREACHABLE: "true"
1471
1488
  }
1472
1489
  );
1473
1490
  } catch (error) {
@@ -1657,11 +1674,22 @@ class LocalRunnerBackend {
1657
1674
  const [projectPath] = await resolveMainLocalProject();
1658
1675
  sourceBasePath = resolve$1(projectPath, "units");
1659
1676
  }
1677
+ let cacheDir = config.HIGHSTATE_BACKEND_RUNNER_LOCAL_CACHE_DIR;
1678
+ if (!cacheDir) {
1679
+ const homeDir = process.env.HOME ?? process.env.USERPROFILE;
1680
+ if (!homeDir) {
1681
+ throw new Error(
1682
+ "Failed to determine the home directory, please set HIGHSTATE_BACKEND_RUNNER_LOCAL_CACHE_DIR"
1683
+ );
1684
+ }
1685
+ cacheDir = resolve$1(homeDir, ".cache", "highstate");
1686
+ }
1660
1687
  return new LocalRunnerBackend(
1661
1688
  config.HIGHSTATE_BACKEND_RUNNER_LOCAL_SKIP_SOURCE_CHECK,
1662
1689
  config.HIGHSTATE_BACKEND_RUNNER_LOCAL_SKIP_STATE_CHECK,
1663
1690
  config.HIGHSTATE_BACKEND_RUNNER_LOCAL_PRINT_OUTPUT,
1664
1691
  sourceBasePath,
1692
+ cacheDir,
1665
1693
  pulumiProjectHost
1666
1694
  );
1667
1695
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@highstate/backend",
3
- "version": "0.6.1",
3
+ "version": "0.7.0",
4
4
  "type": "module",
5
5
  "module": "dist/index.mjs",
6
6
  "types": "dist/index.d.ts",
@@ -27,7 +27,7 @@
27
27
  "build": "pkgroll --tsconfig=tsconfig.build.json"
28
28
  },
29
29
  "dependencies": {
30
- "@highstate/contract": "^0.6.1",
30
+ "@highstate/contract": "^0.7.0",
31
31
  "@types/node": "^22.10.1",
32
32
  "ajv": "^8.17.1",
33
33
  "better-lock": "^3.2.0",
@@ -65,5 +65,5 @@
65
65
  "rollup": "^4.28.1",
66
66
  "typescript": "^5.7.2"
67
67
  },
68
- "gitHead": "afe736f7e93b7fcfbae97e2d6e35b07175a8fc76"
68
+ "gitHead": "2f5227f7b88cf38946e490fc4cdb96127bd8b174"
69
69
  }