Current section
Files
Jump to
Current section
Files
lib/crawlberg/crawl_event.ex
# This file is auto-generated by alef — DO NOT EDIT.
# alef:hash:e0600612767fdd3d51e9128afdb0ffcd1fb490e9942f3839a5120ab7a4e3b658
# To regenerate: alef generate
# To verify freshness: alef verify --exit-code
defmodule Crawlberg.CrawlEvent do
@moduledoc """
An event emitted during a streaming crawl operation.
Not available on `wasm32` targets — streaming requires native concurrency
primitives (tokio channels, `JoinSet`) that are not supported on wasm32.
Delivered to bindings through each target's native streaming idiom.
"""
@typedoc "An event emitted during a streaming crawl operation."
@type t :: term()
@typedoc "A single page has been crawled."
@type page :: %{type: :page, result: Crawlberg.CrawlPageResult.t()}
@typedoc "An error occurred while crawling a URL."
@type error :: %{type: :error, url: String.t(), error: String.t()}
@typedoc "The crawl has completed."
@type complete :: %{type: :complete, pages_crawled: non_neg_integer()}
def page(result), do: {:page, %{result: result}}
def error(url, error), do: {:error, %{url: url, error: error}}
def complete(pages_crawled), do: {:complete, %{pages_crawled: pages_crawled}}
end