-module(sketch_css@module@dependencies). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -export([reject_cycles/3, all_imports/3]). -file("/Users/doctor/Workspace/sketch/sketch_css/src/sketch_css/module/dependencies.gleam", 7). -spec reject_cycles( {binary(), glance:module_()}, list(binary()), list({binary(), glance:module_()}) ) -> {ok, nil} | {error, snag:snag()}. reject_cycles(Module, Visited, Modules) -> Modules_ = gleam@list:map( erlang:element(2, (erlang:element(2, Module))), fun(I) -> erlang:element(2, erlang:element(3, I)) end ), case gleam@list:any( Modules_, fun(Module@1) -> gleam@list:contains(Visited, Module@1) end ) of true -> snag:error( <<"cycle detected in module: "/utf8, (erlang:element(1, Module))/binary>> ); false -> By_name = fun(Name) -> gleam@list:find( Modules, fun(M) -> erlang:element(1, M) =:= Name end ) end, _pipe = gleam@list:filter_map(Modules_, By_name), _pipe@1 = gleam@list:try_map( _pipe, fun(_capture) -> reject_cycles( _capture, [erlang:element(1, Module) | Visited], Modules ) end ), gleam@result:replace(_pipe@1, nil) end. -file("/Users/doctor/Workspace/sketch/sketch_css/src/sketch_css/module/dependencies.gleam", 24). -spec all_imports( {binary(), glance:module_()}, list({binary(), glance:module_()}), list(binary()) ) -> list(binary()). all_imports(Module, Modules, Visited) -> Imports = gleam@list:map( erlang:element(2, (erlang:element(2, Module))), fun(I) -> erlang:element(2, erlang:element(3, I)) end ), Visited@1 = [erlang:element(1, Module) | Visited], Modules_ = gleam@list:filter_map( Imports, fun(I@1) -> gleam@list:find(Modules, fun(M) -> erlang:element(1, M) =:= I@1 end) end ), _pipe = gleam@list:flat_map( Modules_, fun(_capture) -> all_imports(_capture, Modules, Visited@1) end ), _pipe@1 = lists:append(_pipe, Imports), _pipe@2 = gleam@list:unique(_pipe@1), gleam@list:sort(_pipe@2, fun gleam@string:compare/2).