#4854·wasp

Couple SDK export definitions with generated file drafts

Author: infomihoCreated Sep 16, 2026Updated Sep 17, 2026
Labelsrefactoringsdk

SDK file generation and the package’s exports map are maintained separately, allowing them to drift

We should couple the FileDrafts and the entry in the exports map. This will be helpful once we need to have multiple shapes of the SDK (app vs. full-stack module SDKs).

Clanker example code
typescript
data SdkFile = SdkFile
  { fileDraft :: FileDraft,
    exportPath :: Maybe String
  }

internal :: FileDraft -> SdkFile
internal draft = SdkFile draft Nothing

exported :: String -> FileDraft -> SdkFile
exported path draft = SdkFile draft (Just path)

genServerFiles :: AppSpec -> Generator [SdkFile]
genServerFiles spec = do
  dbClient <- genServerDbClient spec
  pure
    [ exported "./server" (mkTmplFd [relfile|server/index.ts|]),
      internal dbClient
    ]

Which results in:

exported "./server"       → server/index.ts → "./dist/server/index.js"
exported "./client/api"   → api/index.ts    → "./dist/api/index.js"
internal                 → server/dbClient.ts → no export entry