WIT
package root:component;
world root {
import wasi:config/store@0.2.0-rc.1;
import wasi:keyvalue/store@0.2.0-draft2;
import componentized:services/types;
export componentized:services/credential-admin;
}
package componentized:services {
interface types {
type service-id = string;
record credential {
key: string,
value: string,
}
type error = string;
}
interface credential-admin {
use types.{service-id, credential, error};
publish: func(id: service-id, credentials: list<credential>) -> result<_, error>;
destroy: func(id: service-id) -> result<_, error>;
}
}
package wasi:config@0.2.0-rc.1 {
interface store {
variant error {
upstream(string),
io(string),
}
get: func(key: string) -> result<option<string>, error>;
}
}
package wasi:keyvalue@0.2.0-draft2 {
interface store {
resource bucket {
set: func(key: string, value: list<u8>) -> result<_, error>;
delete: func(key: string) -> result<_, error>;
}
variant error {
no-such-store,
access-denied,
other(string),
}
open: func(identifier: string) -> result<bucket, error>;
}
}