componentized/directory

componentized:services-lifecycle-host-cli

component

Imports

Exports

WIT

package root:component;

world root {
  import componentized:services/types;
  import componentized:services/lifecycle;
  import wasi:logging/logging@0.1.0-draft;
  import wasi:cli/environment@0.2.3;
  import wasi:io/error@0.2.3;
  import wasi:io/streams@0.2.3;
  import wasi:cli/stdout@0.2.3;
  import wasi:random/random@0.2.3;

  export wasi:cli/run@0.2.3;
}
package componentized:services {
  interface types {
    type service-instance-id = string;

    type tier = string;

    record request {
      key: string,
      value: string,
    }

    type error = string;

    type service-binding-id = string;

    type scope = string;
  }
  interface lifecycle {
    use types.{service-instance-id, tier, request, error, service-binding-id, scope};

    provision: func(instance-id: service-instance-id, %type: string, tier: option<tier>, requests: option<list<request>>) -> result<_, error>;

    update: func(instance-id: service-instance-id, tier: option<tier>, requests: option<list<request>>) -> result<_, error>;

    destroy: func(instance-id: service-instance-id, retain: option<bool>) -> result<_, error>;

    bind: func(binding-id: service-binding-id, instance-id: service-instance-id, scopes: option<list<scope>>) -> result<_, error>;

    list-bindings: func(instance-id: service-instance-id) -> result<list<service-binding-id>, error>;

    unbind: func(binding-id: service-binding-id, instance-id: service-instance-id) -> result<_, error>;
  }
}


package wasi:logging@0.1.0-draft {
  interface logging {
    enum level {
      trace,
      debug,
      info,
      warn,
      error,
      critical,
    }

    log: func(level: level, context: string, message: string);
  }
}


package wasi:io@0.2.3 {
  interface error {
    resource error;
  }
  interface streams {
    use error.{error};

    resource output-stream {
      blocking-write-and-flush: func(contents: list<u8>) -> result<_, stream-error>;
    }

    variant stream-error {
      last-operation-failed(error),
      closed,
    }
  }
}


package wasi:cli@0.2.3 {
  interface environment {
    get-arguments: func() -> list<string>;
  }
  interface stdout {
    use wasi:io/streams@0.2.3.{output-stream};

    get-stdout: func() -> output-stream;
  }
  interface run {
    run: func() -> result;
  }
}


package wasi:random@0.2.3 {
  interface random {
    get-random-bytes: func(len: u64) -> list<u8>;
  }
}