@@ -4,12 +4,14 @@ import Module from "node:module"
4
4
import { dag , TypeDefKind } from "../api/client.gen.js"
5
5
import { Executor } from "../introspector/executor/executor.js"
6
6
import { Args } from "../introspector/executor/executor.js"
7
- import { Constructor } from "../introspector/scanner/abtractions/constructor.js"
8
- import { DaggerEnum } from "../introspector/scanner/abtractions/enum.js"
9
- import { Method } from "../introspector/scanner/abtractions/method.js"
10
- import { DaggerModule } from "../introspector/scanner/abtractions/module.js"
11
- import { DaggerObject } from "../introspector/scanner/abtractions/object.js"
12
- import { TypeDef } from "../introspector/scanner/typeDefs.js"
7
+ import { DaggerConstructor as Constructor } from "../introspector/scanner/dagger_module/constructor.js"
8
+ import { DaggerEnum } from "../introspector/scanner/dagger_module/enum.js"
9
+ import { DaggerEnumBase } from "../introspector/scanner/dagger_module/enumBase.js"
10
+ import { DaggerFunction as Method } from "../introspector/scanner/dagger_module/function.js"
11
+ import { DaggerModule } from "../introspector/scanner/dagger_module/module.js"
12
+ import { DaggerObject } from "../introspector/scanner/dagger_module/object.js"
13
+ import { DaggerObjectBase } from "../introspector/scanner/dagger_module/objectBase.js"
14
+ import { TypeDef } from "../introspector/scanner/typedef.js"
13
15
import { InvokeCtx } from "./context.js"
14
16
15
17
/**
@@ -32,7 +34,7 @@ export function loadInvokedObject(
32
34
module : DaggerModule ,
33
35
parentName : string ,
34
36
) : DaggerObject {
35
- return module . objects [ parentName ]
37
+ return module . objects [ parentName ] as DaggerObject
36
38
}
37
39
38
40
export function loadInvokedMethod (
@@ -60,12 +62,16 @@ export async function loadArgs(
60
62
const args : Args = { }
61
63
62
64
// Load arguments
63
- for ( const argName of method . getArgOrder ( ) ) {
65
+ for ( const argName of method . getArgsOrder ( ) ) {
64
66
const argument = method . arguments [ argName ]
65
67
if ( ! argument ) {
66
68
throw new Error ( `could not find argument ${ argName } ` )
67
69
}
68
70
71
+ if ( ! argument . type ) {
72
+ throw new Error ( `could not find type for argument ${ argName } ` )
73
+ }
74
+
69
75
const loadedArg = await loadValue (
70
76
executor ,
71
77
ctx . fnArgs [ argName ] ,
@@ -118,6 +124,10 @@ export async function loadParentState(
118
124
throw new Error ( `could not find parent property ${ key } ` )
119
125
}
120
126
127
+ if ( ! property . type ) {
128
+ throw new Error ( `could not find type for parent property ${ key } ` )
129
+ }
130
+
121
131
parentState [ property . name ] = await loadValue ( executor , value , property . type )
122
132
}
123
133
@@ -192,8 +202,11 @@ export function loadObjectReturnType(
192
202
module : DaggerModule ,
193
203
object : DaggerObject ,
194
204
method : Method ,
195
- ) : DaggerObject | DaggerEnum {
205
+ ) : DaggerObjectBase | DaggerEnumBase {
196
206
const retType = method . returnType
207
+ if ( ! retType ) {
208
+ throw new Error ( `could not find return type for ${ method . name } ` )
209
+ }
197
210
198
211
switch ( retType . kind ) {
199
212
case TypeDefKind . ListKind : {
@@ -218,7 +231,7 @@ export function loadObjectReturnType(
218
231
export async function loadResult (
219
232
result : any ,
220
233
module : DaggerModule ,
221
- object : DaggerObject | DaggerEnum ,
234
+ object : DaggerObjectBase | DaggerEnumBase ,
222
235
) : Promise < any > {
223
236
// Handle IDable objects
224
237
if ( result && typeof result ?. id === "function" ) {
@@ -246,7 +259,11 @@ export async function loadResult(
246
259
throw new Error ( `could not find result property ${ key } ` )
247
260
}
248
261
249
- let referencedObject : DaggerObject | undefined = undefined
262
+ if ( ! property . type ) {
263
+ throw new Error ( `could not find type for result property ${ key } ` )
264
+ }
265
+
266
+ let referencedObject : DaggerObjectBase | undefined = undefined
250
267
251
268
// Handle nested objects
252
269
if ( property . type . kind === TypeDefKind . ObjectKind ) {
0 commit comments