@@ -5,7 +5,7 @@ import type { Capability } from "./capability.ts";
55import type { Phase } from "./phase.ts" ;
66import type { Instance } from "./policy.ts" ;
77import { type ProviderService } from "./provider.ts" ;
8- import type { IResource , Resource } from "./resource.ts" ;
8+ import type { Resource , ResourceTags } from "./resource.ts" ;
99import { isService , type Service } from "./service.ts" ;
1010import { State , type ResourceState } from "./state.ts" ;
1111
@@ -59,14 +59,14 @@ export const isCRUD = (node: any): node is CRUD => {
5959/**
6060 * A node in the plan that represents a resource CRUD operation.
6161 */
62- export type CRUD < R extends IResource = IResource > =
62+ export type CRUD < R extends Resource = Resource > =
6363 | Create < R >
6464 | Update < R >
6565 | Delete < R >
6666 | Replace < R >
6767 | NoopUpdate < R > ;
6868
69- export type Apply < R extends IResource = IResource > =
69+ export type Apply < R extends Resource = Resource > =
7070 | Create < R >
7171 | Update < R >
7272 | Replace < R >
@@ -82,7 +82,7 @@ const Node = <T extends Apply>(node: T) => ({
8282 } ,
8383} ) ;
8484
85- export type Create < R extends IResource > = {
85+ export type Create < R extends Resource > = {
8686 action : "create" ;
8787 resource : R ;
8888 news : any ;
@@ -91,7 +91,7 @@ export type Create<R extends IResource> = {
9191 bindings : BindNode [ ] ;
9292} ;
9393
94- export type Update < R extends IResource > = {
94+ export type Update < R extends Resource > = {
9595 action : "update" ;
9696 resource : R ;
9797 olds : any ;
@@ -102,7 +102,7 @@ export type Update<R extends IResource> = {
102102 bindings : BindNode [ ] ;
103103} ;
104104
105- export type Delete < R extends IResource > = {
105+ export type Delete < R extends Resource > = {
106106 action : "delete" ;
107107 resource : R ;
108108 olds : any ;
@@ -113,14 +113,14 @@ export type Delete<R extends IResource> = {
113113 downstream : string [ ] ;
114114} ;
115115
116- export type NoopUpdate < R extends IResource > = {
116+ export type NoopUpdate < R extends Resource > = {
117117 action : "noop" ;
118118 resource : R ;
119119 attributes : R [ "attr" ] ;
120120 bindings : BindNode [ ] ;
121121} ;
122122
123- export type Replace < R extends IResource > = {
123+ export type Replace < R extends Resource > = {
124124 action : "replace" ;
125125 resource : R ;
126126 olds : any ;
@@ -222,7 +222,9 @@ export const plan = <
222222 . map (
223223 Effect . fn ( function * ( node ) {
224224 const id = node . id ;
225- const resource = node ;
225+ const resource = node as Resource & {
226+ provider : ResourceTags < Resource > ;
227+ } ;
226228 const news = isService ( node )
227229 ? node . runtime . props
228230 : resource . props ;
@@ -355,7 +357,7 @@ export const plan = <
355357 type : oldState . type ,
356358 attr : oldState . output ,
357359 props : oldState . props ,
358- } satisfies IResource as Resource ,
360+ } as Resource ,
359361 downstream : downstream [ id ] ?? [ ] ,
360362 } satisfies Delete < Resource > ,
361363 ] as const ;
0 commit comments