import { TypeList } from "docs-ui"
# DevServerUtils
## Functions
- [registerDevServerResource](page.mdx#registerdevserverresource)
- [registerResourceTypeHandler](page.mdx#registerresourcetypehandler)
## Interfaces
- [BaseResourceData](../DevServerUtils/interfaces/utils.DevServerUtils.BaseResourceData/page.mdx)
- [ResourceTypeHandler](../DevServerUtils/interfaces/utils.DevServerUtils.ResourceTypeHandler/page.mdx)
## Type Aliases
- [ResourceEntry](../DevServerUtils/types/utils.DevServerUtils.ResourceEntry/page.mdx)
- [ResourceMap](../DevServerUtils/types/utils.DevServerUtils.ResourceMap/page.mdx)
- [ResourcePath](../DevServerUtils/types/utils.DevServerUtils.ResourcePath/page.mdx)
- [ResourceType](../DevServerUtils/types/utils.DevServerUtils.ResourceType/page.mdx)
## Variables
- [globalDevServerRegistry](page.mdx#globaldevserverregistry)
- [inverseDevServerRegistry](page.mdx#inversedevserverregistry)
## Functions
### registerDevServerResource
`**registerDevServerResource**(data): `void``
Register a resource in the dev server for hot module reloading
This function uses a strategy pattern where each resource type has its own handler.
The handler is responsible for:
- Validating the registration data
- Resolving the source path
- Creating the registry entry
- Generating the inverse registry key
#### Example
```typescript
// Register a workflow
registerDevServerResource({
type: "workflow",
id: "create-product",
sourcePath: "/src/workflows/create-product.ts"
})
// Register a step
registerDevServerResource({
type: "step",
id: "validate-product",
workflowId: "create-product"
})
```
#### Parameters
#### Throws
Error if validation fails or handler is not found
`**registerDevServerResource**(data): `void``
Register a resource in the dev server for hot module reloading
This function uses a strategy pattern where each resource type has its own handler.
The handler is responsible for:
- Validating the registration data
- Resolving the source path
- Creating the registry entry
- Generating the inverse registry key
#### Example
```typescript
// Register a workflow
registerDevServerResource({
type: "workflow",
id: "create-product",
sourcePath: "/src/workflows/create-product.ts"
})
// Register a step
registerDevServerResource({
type: "step",
id: "validate-product",
workflowId: "create-product"
})
```
#### Type Parameters
#### Parameters
#### Throws
Error if validation fails or handler is not found
### registerResourceTypeHandler
Register a resource type handler
#### Example
```typescript
class RouteHandler implements ResourceTypeHandler {
readonly type = "route"
validate(data: RouteData): void { ... }
resolveSourcePath(data: RouteData): string { ... }
createEntry(data: RouteData): ResourceEntry { ... }
getInverseKey(data: RouteData): string { ... }
}
registerResourceTypeHandler(new RouteHandler())
```
#### Parameters
___
## Variables
### globalDevServerRegistry
`Const` **globalDevServerRegistry**: Map<string, [ResourceMap](../DevServerUtils/types/utils.DevServerUtils.ResourceMap/page.mdx)>
Maps source file paths to their registered resources
Structure: sourcePath -> Map<resourceType, ResourceEntry[]>
### inverseDevServerRegistry
`Const` **inverseDevServerRegistry**: Map<string, string[]>
Inverse registry for looking up source paths by resource
Structure: "type:id" -> sourcePath[]
Used to find which files contain a specific resource