@terraforge/terraform 0.0.21 → 0.0.23

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.mts CHANGED
@@ -191,12 +191,16 @@ type GetDataProps<T = State> = {
191
191
  type: string;
192
192
  state: T;
193
193
  };
194
- type RefreshStateProps<T = State> = {
194
+ type RefreshResourceProps<T = State> = {
195
195
  type: string;
196
- tag: 'resource' | 'data';
197
196
  priorInputState: T;
198
197
  priorOutputState: T;
199
- refreshedState: T;
198
+ };
199
+ type RefreshResourceResult<T = State> = {
200
+ kind: 'unchanged' | 'updated';
201
+ state: T;
202
+ } | {
203
+ kind: 'deleted';
200
204
  };
201
205
  interface Provider {
202
206
  ownResource(id: string): boolean;
@@ -221,7 +225,7 @@ interface Provider {
221
225
  getData?(props: GetDataProps): Promise<{
222
226
  state: State;
223
227
  }>;
224
- isRefreshStateEqual?(props: RefreshStateProps): Promise<boolean> | boolean;
228
+ refreshResource?(props: RefreshResourceProps): Promise<RefreshResourceResult | undefined>;
225
229
  destroy?(): Promise<void>;
226
230
  }
227
231
  //#endregion
@@ -292,13 +296,20 @@ declare class TerraformProvider implements Provider {
292
296
  }: GetDataProps): Promise<{
293
297
  state: State$1;
294
298
  }>;
295
- isRefreshStateEqual({
299
+ refreshResource({
296
300
  type,
297
- tag,
298
301
  priorInputState,
299
- priorOutputState,
300
- refreshedState
301
- }: RefreshStateProps): Promise<boolean>;
302
+ priorOutputState
303
+ }: RefreshResourceProps): Promise<{
304
+ kind: "deleted";
305
+ state?: undefined;
306
+ } | {
307
+ kind: "unchanged";
308
+ state: State$1;
309
+ } | {
310
+ kind: "updated";
311
+ state: State$1;
312
+ }>;
302
313
  }
303
314
  //#endregion
304
315
  //#region src/plugin/registry.d.ts
package/dist/index.mjs CHANGED
@@ -315,15 +315,29 @@ var TerraformProvider = class {
315
315
  if (!data) throw new Error(`Data source not found ${type}`);
316
316
  return { state: data };
317
317
  }
318
- async isRefreshStateEqual({ type, tag, priorInputState, priorOutputState, refreshedState }) {
319
- if (tag === "data") return areStatesEqual(priorOutputState, refreshedState);
318
+ async refreshResource({ type, priorInputState, priorOutputState }) {
320
319
  const plugin = await this.configure();
320
+ const refreshedState = await plugin.readResource(type, priorOutputState);
321
+ if (!refreshedState) return { kind: "deleted" };
321
322
  const mergedState = {
322
323
  ...refreshedState,
323
324
  ...priorInputState
324
325
  };
325
326
  const { requiresReplace, plannedState } = await plugin.planResourceChange(type, refreshedState, mergedState, priorInputState);
326
- return requiresReplace.length === 0 && areStatesEqual(plannedState, refreshedState);
327
+ if (requiresReplace.length === 0 && areStatesEqual(plannedState, refreshedState)) return {
328
+ kind: "unchanged",
329
+ state: refreshedState
330
+ };
331
+ console.log("TYPE", type);
332
+ console.log("PRIOR_INPUT_STATE", priorInputState);
333
+ console.log("PRIOR_OUTPUT_STATE", priorOutputState);
334
+ console.log("PLANNED_STATE", plannedState);
335
+ console.log("REFRESH_STATE", refreshedState);
336
+ console.log("REQUIRES_REPLACE", requiresReplace);
337
+ return {
338
+ kind: "updated",
339
+ state: refreshedState
340
+ };
327
341
  }
328
342
  };
329
343
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@terraforge/terraform",
3
- "version": "0.0.21",
3
+ "version": "0.0.23",
4
4
  "type": "module",
5
5
  "repository": {
6
6
  "type": "git",