use crate::value::PropKey;
use compact_str::CompactString;
use core::fmt;
use std::sync::Arc;
use rhai::plugin::*;
use rhai::{Dynamic, Engine, FuncRegistration, LexError, Module, Scope, Token};
pub use rhai;
mod access;
mod compression;
mod connective;
mod convert;
mod dynamic;
mod engine;
mod eval;
mod execution;
mod fake;
mod limits;
mod mutating;
pub(crate) mod plan;
mod register;
mod render;
mod saved_query;
mod source;
mod step;
#[cfg(all(test, feature = "io", feature = "serde"))]
mod surface_tests;
mod terminals;
#[cfg(test)]
mod tests;
mod tokens;
pub use dynamic::script_value_to_property;
use dynamic::*;
pub use engine::{engine, engine_with_limits, engine_with_options, registered_step_names};
pub use eval::{
eval, eval_value, eval_value_atomic, eval_value_dry_run, eval_value_with_limits,
eval_value_with_params, eval_value_with_positional_params, eval_with_params,
eval_with_positional_params, graph_scope, graph_scope_with_options, map_eval_error,
materialize_traversals,
};
pub use execution::{ScriptExecution, metrics_to_map};
pub use limits::{ScriptLimits, resource_limit_from_rhai};
#[doc(hidden)]
pub use register::doc_examples;
use render::*;
pub use render::{
RENDER_MAX_ITEMS, RENDER_MAX_ROWS, RENDER_SPELLING, RenderedText, debug_value,
render_scope_options, render_value, schema_of_value, set_scope_render_options,
try_render_value,
};
pub use saved_query::check_saved_query;
pub(crate) use source::ScriptGraphTarget;
pub use source::{ScriptGraphSource, ScriptGraphTraversalSource};
use step::*;
use tokens::*;
pub use tokens::{
ArgBy, ArgP, Pick, ScriptBarrier, ScriptBy, ScriptCardinality, ScriptCastPolicy, ScriptColumn,
ScriptDirection, ScriptGType, ScriptMap, ScriptMerge, ScriptOperator, ScriptOrder, ScriptP,
ScriptPick, ScriptPop, ScriptProfileType, ScriptSchemaMode, ScriptScope, ScriptSet,
ScriptSetTokens, ScriptT, ScriptTextP, ScriptUuid, ScriptUuidTokens, ScriptV,
ScriptWithOptions,
};
use crate::graph::schema::{GraphSchema, SchemaMode, VisualizeFormat};
use crate::graph::{AnyGraph, IntoAnyGraph};
use crate::traversal::render::{RenderOptions, RenderedOutput, Truncation};
use crate::traversal::step::flatmap_steps::step_choose::OptionToken;
use crate::traversal::step::map_steps::list_function::{ListArg, ListFunction};
use crate::traversal::step::sideeffect_steps::step_property_map::PropertyEntry;
use crate::value::Scope as TraversalScope;
use crate::value::{Barrier, Cardinality, Direction, Merge, Operator, Pop};
use crate::{
AnonymousTraversal, ArgStrings, By, CastPolicy, Column, ElementProperty, GType, Graph,
GraphSource, GraphStorage, GraphTraversalSource, Number, Order, P, PValue, ProfileType,
TraversalGraph,
};