Protocol library for accessing mooncakes.io content and package data
Dependencies
moon add moonbitlang/mooncakes_protocol///|
async fn main {
let client = @mooncakes_protocol.MooncakesClient::new()
try {
let stats = client.get_statistics()
println("Total modules: \{stats.total_modules}")
println("Total packages: \{stats.total_packages}")
println("Total lines: \{stats.total_lines}")
} catch {
e => println("Error: \{e}")
}
}///|
async fn example() -> Unit {
let client = @mooncakes_protocol.MooncakesClient::new()
let index = client.get_module_index("moonbitlang/core")
// Get all package paths
let paths = @mooncakes_protocol.get_all_package_paths(index)
for path in paths {
println(path)
}
}///|
async fn example() -> Unit {
let client = @mooncakes_protocol.MooncakesClient::new()
let pkg = client.get_package_data("moonbitlang/core/array")
// List all types
for t in pkg.types {
println("Type: \{t.name}")
}
}///|
fn example() {
// Build search entries from package data
let entries = @mooncakes_protocol.build_search_entries(
pkg, "moonbitlang/core/array",
)
// Fuzzy search
let results = @mooncakes_protocol.fuzzy_search(entries, "push", 10)
for entry in results {
println("\{entry.name} (\{entry.kind})")
}
}pub(all) suberror HttpError {
NetworkError(String)
ParseError(String)
StatusError(Int, String)
}pub(all) struct FullModuleData {
path : String
resource : Resource
index : IndexNode
packages : Map[String, PackageData]
}impl Eq for FullModuleDataimpl Show for FullModuleDataimpl ToJson for FullModuleDataimpl FromJson for FullModuleDatapub(all) struct Loc {
path : String
file : String
line : Int
column : Int
}pub(all) struct MetaInfo {
name : String
version : String
license : String?
keywords : Array[String]
repository : String?
}pub(all) struct ModuleSummary {
name : String
version : String
license : String
repository : String
keywords : Array[String]
description : String
is_new : Bool
created_at : String
}impl Eq for ModuleSummaryimpl Show for ModuleSummaryimpl ToJson for ModuleSummaryimpl FromJson for ModuleSummarypub(all) struct MooncakesClient {
base_url : String
api_url : String
}async fn MooncakesClient::get_full_module_data(self : MooncakesClient, path : String) -> FullModuleDataasync fn MooncakesClient::get_package_data_batch(self : MooncakesClient, paths : Array[String]) -> Map[String, PackageData]impl Eq for PackageDataimpl Show for PackageDataimpl ToJson for PackageDataimpl FromJson for PackageDataimpl Eq for PackageIndeximpl Show for PackageIndeximpl ToJson for PackageIndeximpl FromJson for PackageIndexpub(all) struct SearchEntry {
name : String
path : String
kind : String
signature : String?
}impl Eq for SearchEntryimpl Show for SearchEntryimpl ToJson for SearchEntryimpl FromJson for SearchEntrypub(all) struct Statistics {
total_modules : Int
total_packages : Int
total_lines : Int
}impl Eq for Statisticsimpl Show for Statisticsimpl ToJson for Statisticsimpl FromJson for Statisticsimpl Eq for TraitIndeximpl Show for TraitIndeximpl ToJson for TraitIndeximpl FromJson for TraitIndeximpl Eq for TypeAliasDocimpl Show for TypeAliasDocimpl ToJson for TypeAliasDocimpl FromJson for TypeAliasDocpub(all) struct TypePath {
path : String
name : String
}pub(all) struct UserModule {
name : String
version : String
}impl Eq for UserModuleimpl Show for UserModuleimpl ToJson for UserModuleimpl FromJson for UserModulefn build_all_search_entries(index : IndexNode, packages : Map[String, PackageData]) -> Array[SearchEntry]fn format_docstring(docstring : String) -> StringProtocol library for accessing mooncakes.io content and package data
Dependencies