dapr

DAPR (Distributed Application Runtime) client for Kit

Files

FileDescription
.editorconfigEditor formatting configuration
.gitignoreGit ignore rules for build artifacts and dependencies
.tool-versionsasdf tool versions (Zig, Kit)
LICENSEMIT license file
README.mdThis file
examples/basic.kitBasic usage example
kit.tomlPackage manifest with metadata and dependencies
src/dapr.kitDAPR HTTP API client
src/internal/types.kitExported record types
tests/dapr.test.kitTests for DAPR data types
tests/error-types.test.kitTests for DAPR error types

Dependencies

No Kit package dependencies.

Installation

kit add gitlab.com/kit-lang/packages/kit-dapr.git

Usage

import Kit.DAPR as DAPR

main = fn =>
  config = DAPR.default-config

  match DAPR.health config
    | Ok true -> println "DAPR sidecar is healthy"
    | Ok false -> println "DAPR sidecar is not healthy"
    | Err e -> println "Could not reach DAPR sidecar: ${show e}"

  match DAPR.state-save config "statestore" "user:1" "Alice"
    | Ok _ -> println "State saved"
    | Err e -> println "Failed to save state: ${show e}"

  match DAPR.state-get config "statestore" "user:1"
    | Ok (Some value) -> println "Got value: ${value}"
    | Ok None -> println "Key not found"
    | Err e -> println "Failed to get state: ${show e}"

main

Configuration

Use the default local sidecar configuration:

config = DAPR.default-config

Read DAPR sidecar configuration from DAPR_HTTP_HOST and DAPR_HTTP_PORT:

config = DAPR.config-from-env

Create a custom sidecar configuration:

config = DAPR.config-with-host "localhost" 3500

Development

Running Examples

Run the basic example with a DAPR sidecar:

dapr run --app-id test-app -- kit run examples/basic.kit --allow=net

Compile the basic example to a native binary:

kit build examples/basic.kit -o basic --allow=net && ./basic

Running Tests

Run the test suite:

kit test

Run the test suite with coverage:

kit test --coverage

Running kit dev

Run the standard development workflow (format, check, test):

kit dev

This will:

  1. Format and check source files in src/
  2. Check example files in examples/
  3. Run tests in tests/ with coverage

Running Parity Checks

Run interpreter/compiler parity checks for examples:

kit parity --failures-only

Generating Documentation

Generate API documentation from doc comments:

kit doc src/dapr.kit

Note: Kit sources with doc comments (##) will generate HTML documents in docs/*.html

Cleaning Build Artifacts

Remove generated files, caches, and build artifacts:

kit task clean

Note: Defined in kit.toml.

Local Installation

To install this package locally for development:

kit install

This installs the package to ~/.kit/packages/@kit/dapr/, making it available for import as Kit.DAPR in other projects.

License

This package is released under the MIT License - see LICENSE for details.

Exported Functions & Types

default-config

Default configuration for local development.

config-from-env

Create configuration from environment variables.

Config

config-with-host

Create configuration with custom host and port.

String -> NonNegativeInt -> Config

DAPRError

DAPR error type for typed error handling.

Variants

DAPRConnectionError {message}
DAPRStateError {message}
DAPRPubSubError {message}
DAPRInvokeError {message}
DAPRSecretError {message}
DAPRBindingError {message}
DAPRHealthError {message}

StateOperation

State operation for transactions.

Variants

Upsert {key, value}
Delete {key}

state-save

Save a single key-value pair to a state store.

Config -> String -> String -> a -> Result Unit DAPRError

state-save-with-metadata

Save a single key-value pair to a state store with metadata.

Config -> String -> String -> a -> Map String String -> Result Unit DAPRError

state-get

Get a value from a state store.

Config -> String -> String -> Result (Option String) DAPRError

state-delete

Delete a key from a state store.

Config -> String -> String -> Result Unit DAPRError

state-bulk-get

Get multiple keys from a state store in bulk.

Config -> String -> [String] -> Result [StateItem] DAPRError

state-transaction

Execute a state transaction with multiple operations.

Config -> String -> [StateOperation] -> Result Unit DAPRError

publish

Publish an event to a topic.

Config -> String -> String -> a -> Result Unit DAPRError

publish-with-metadata

Publish an event to a topic with metadata.

Config -> String -> String -> a -> Map String String -> Result Unit DAPRError

invoke

Invoke a method on another DAPR-enabled service.

Config -> String -> String -> String -> Result String DAPRError

invoke-with-method

Invoke a method with a specific HTTP method.

Config -> String -> String -> String -> String -> Result String DAPRError

secret-get

Get a secret from a secret store.

Config -> String -> String -> Result (Map String String) DAPRError

secret-bulk-get

Get all secrets from a secret store.

Config -> String -> Result (Map String (Map String String)) DAPRError

binding-invoke

Invoke an output binding.

Config -> String -> String -> a -> Result String DAPRError

binding-invoke-with-metadata

Invoke an output binding with metadata.

Config -> String -> String -> a -> Map String String -> Result String DAPRError

health

Check if the DAPR sidecar is healthy.

Config -> Result Bool DAPRError

metadata

Get DAPR sidecar metadata.

Config -> Result DAPRMetadata DAPRError