WIT
package root:component;
world root {
import wasi:config/store@0.2.0-draft;
import wasi:keyvalue/store@0.2.0-draft2;
import componentized:services/types;
export componentized:services/credential-store;
}
package componentized:services {
interface types {
type service-binding-id = string;
record credential {
key: string,
value: string,
}
type error = string;
}
interface credential-store {
use types.{service-binding-id, credential, error};
fetch: func(binding-id: service-binding-id) -> result<list<credential>, error>;
}
}
package wasi:config@0.2.0-draft {
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 {
get: func(key: string) -> result<option<list<u8>>, error>;
}
variant error {
no-such-store,
access-denied,
other(string),
}
open: func(identifier: string) -> result<bucket, error>;
}
}