Skip to content

Commit f415ae9

Browse files
committed
[#35] Add command/3 and pipeline/3 extended functions
1 parent fdcf00e commit f415ae9

File tree

8 files changed

+121
-28
lines changed

8 files changed

+121
-28
lines changed

lib/nebulex_redis_adapter.ex

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,16 @@ defmodule NebulexRedisAdapter do
314314
@doc """
315315
A convenience function for executing a Redis command.
316316
"""
317+
def command(key \\ nil, name \\ __MODULE__, command) do
318+
Adapter.with_meta(name, fn _, meta ->
319+
Command.exec(meta, command, key)
320+
end)
321+
end
322+
323+
@doc """
324+
A convenience function for executing a Redis command,
325+
but raises an exception if an error occurs.
326+
"""
317327
def command!(key \\ nil, name \\ __MODULE__, command) do
318328
Adapter.with_meta(name, fn _, meta ->
319329
Command.exec!(meta, command, key)
@@ -323,6 +333,16 @@ defmodule NebulexRedisAdapter do
323333
@doc """
324334
A convenience function for executing a Redis pipeline.
325335
"""
336+
def pipeline(key \\ nil, name \\ __MODULE__, commands) do
337+
Adapter.with_meta(name, fn _, meta ->
338+
Command.pipeline(meta, commands, key)
339+
end)
340+
end
341+
342+
@doc """
343+
A convenience function for executing a Redis pipeline,
344+
but raises an exception if an error occurs.
345+
"""
326346
def pipeline!(key \\ nil, name \\ __MODULE__, commands) do
327347
Adapter.with_meta(name, fn _, meta ->
328348
Command.pipeline!(meta, commands, key)
@@ -512,12 +532,14 @@ defmodule NebulexRedisAdapter do
512532
@impl true
513533
defspan delete(adapter_meta, key, _opts) do
514534
_ = Command.exec!(adapter_meta, ["DEL", encode(key)], key)
535+
515536
:ok
516537
end
517538

518539
@impl true
519540
defspan take(adapter_meta, key, _opts) do
520541
redis_k = encode(key)
542+
521543
with_pipeline(adapter_meta, key, [["GET", redis_k], ["DEL", redis_k]])
522544
end
523545

@@ -617,6 +639,7 @@ defmodule NebulexRedisAdapter do
617639
defp do_execute(%{mode: mode} = adapter_meta, :delete_all, nil) do
618640
size = exec!(mode, [adapter_meta, ["DBSIZE"]], [0, &Kernel.+(&2, &1)])
619641
_ = exec!(mode, [adapter_meta, ["FLUSHDB"]], [])
642+
620643
size
621644
end
622645

@@ -671,7 +694,9 @@ defmodule NebulexRedisAdapter do
671694
end
672695

673696
defp execute_query(nil, adapter_meta) do
674-
for key <- execute_query("*", adapter_meta), do: decode(key)
697+
"*"
698+
|> execute_query(adapter_meta)
699+
|> Enum.map(&decode/1)
675700
end
676701

677702
defp execute_query(pattern, %{mode: mode} = adapter_meta) when is_binary(pattern) do

lib/nebulex_redis_adapter/bootstrap_server.ex

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ defmodule NebulexRedisAdapter.BootstrapServer do
1616
@spec start_link(Nebulex.Adapter.adapter_meta()) :: GenServer.on_start()
1717
def start_link(adapter_meta) do
1818
name = normalize_module_name([Map.fetch!(adapter_meta, :name), BootstrapServer])
19+
1920
GenServer.start_link(__MODULE__, adapter_meta, name: name)
2021
end
2122

@@ -24,12 +25,14 @@ defmodule NebulexRedisAdapter.BootstrapServer do
2425
@impl true
2526
def init(adapter_meta) do
2627
_ = Process.flag(:trap_exit, true)
28+
2729
{:ok, adapter_meta, {:continue, :attach_stats_handler}}
2830
end
2931

3032
@impl true
3133
def handle_continue(:attach_stats_handler, adapter_meta) do
3234
_ = maybe_attach_stats_handler(adapter_meta)
35+
3336
{:noreply, adapter_meta}
3437
end
3538

lib/nebulex_redis_adapter/client_cluster.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ defmodule NebulexRedisAdapter.ClientCluster do
9595

9696
defp get_node(module, nodes, key) do
9797
index = module.hash_slot(key, length(nodes))
98+
9899
Enum.at(nodes, index)
99100
end
100101

lib/nebulex_redis_adapter/command.ex

Lines changed: 39 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,59 @@ defmodule NebulexRedisAdapter.Command do
44

55
alias NebulexRedisAdapter.{ClientCluster, Pool, RedisCluster}
66

7+
## API
8+
9+
@doc """
10+
Executes a Redis command.
11+
"""
12+
@spec exec(
13+
Nebulex.Adapter.adapter_meta(),
14+
Redix.command(),
15+
Nebulex.Cache.key()
16+
) :: {:ok, term} | {:error, term}
17+
def exec(adapter_meta, command, key \\ nil) do
18+
adapter_meta
19+
|> conn(key)
20+
|> Redix.command(command)
21+
end
22+
23+
@doc """
24+
Executes a Redis command, but raises an exception if an error occurs.
25+
"""
726
@spec exec!(
827
Nebulex.Adapter.adapter_meta(),
928
Redix.command(),
1029
Nebulex.Cache.key()
11-
) :: any | no_return
30+
) :: term
1231
def exec!(adapter_meta, command, key \\ nil) do
1332
adapter_meta
1433
|> conn(key)
1534
|> Redix.command(command)
1635
|> handle_command_response()
1736
end
1837

38+
@doc """
39+
Executes a Redis pipeline.
40+
"""
41+
@spec pipeline(
42+
Nebulex.Adapter.adapter_meta(),
43+
[Redix.command()],
44+
Nebulex.Cache.key()
45+
) :: {:ok, [term]} | {:error, term}
46+
def pipeline(adapter_meta, commands, key \\ nil) do
47+
adapter_meta
48+
|> conn(key)
49+
|> Redix.pipeline(commands)
50+
end
51+
52+
@doc """
53+
Executes a Redis pipeline, but raises an exception if an error occurs.
54+
"""
1955
@spec pipeline!(
2056
Nebulex.Adapter.adapter_meta(),
2157
[Redix.command()],
2258
Nebulex.Cache.key()
23-
) :: [any] | no_return
59+
) :: [term]
2460
def pipeline!(adapter_meta, commands, key \\ nil) do
2561
adapter_meta
2662
|> conn(key)
@@ -63,16 +99,13 @@ defmodule NebulexRedisAdapter.Command do
6399
response
64100
end
65101

66-
defp handle_command_response({:error, %Redix.Error{message: "MOVED" <> _} = error}) do
67-
raise error
68-
end
69-
70102
defp handle_command_response({:error, reason}) do
71103
raise reason
72104
end
73105

74106
defp check_pipeline_errors(results) do
75107
_ = for %Redix.Error{} = error <- results, do: raise(error)
108+
76109
results
77110
end
78111
end

lib/nebulex_redis_adapter/encoder.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ defmodule NebulexRedisAdapter.Encoder do
1212

1313
def encode(data, opts) do
1414
opts = Keyword.take(opts, [:compressed, :minor_version])
15+
1516
:erlang.term_to_binary(data, opts)
1617
end
1718

mix.exs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ defmodule NebulexRedisAdapter.MixProject do
22
use Mix.Project
33

44
@source_url "https://github.com/cabol/nebulex_redis_adapter"
5-
@version "2.1.2"
6-
@nbx_vsn "2.3.0"
5+
@version "2.2.0-dev"
6+
@nbx_vsn "2.3.1"
77

88
def project do
99
[
@@ -41,15 +41,17 @@ defmodule NebulexRedisAdapter.MixProject do
4141
defp elixirc_paths(_), do: ["lib"]
4242

4343
def application do
44-
[]
44+
[
45+
extra_applications: [:logger]
46+
]
4547
end
4648

4749
defp deps do
4850
[
4951
nebulex_dep(),
5052
{:redix, "~> 1.1"},
5153
{:crc, "~> 0.10", optional: true},
52-
{:jchash, "~> 0.1.2", optional: true},
54+
{:jchash, "~> 0.1.3", optional: true},
5355
{:telemetry, "~> 0.4 or ~> 1.0", optional: true},
5456

5557
# Test & Code Analysis

mix.lock

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,34 @@
11
%{
2-
"benchee": {:hex, :benchee, "1.0.1", "66b211f9bfd84bd97e6d1beaddf8fc2312aaabe192f776e8931cb0c16f53a521", [:mix], [{:deep_merge, "~> 1.0", [hex: :deep_merge, repo: "hexpm", optional: false]}], "hexpm", "3ad58ae787e9c7c94dd7ceda3b587ec2c64604563e049b2a0e8baafae832addb"},
2+
"benchee": {:hex, :benchee, "1.1.0", "f3a43817209a92a1fade36ef36b86e1052627fd8934a8b937ac9ab3a76c43062", [:mix], [{:deep_merge, "~> 1.0", [hex: :deep_merge, repo: "hexpm", optional: false]}, {:statistex, "~> 1.0", [hex: :statistex, repo: "hexpm", optional: false]}], "hexpm", "7da57d545003165a012b587077f6ba90b89210fd88074ce3c60ce239eb5e6d93"},
33
"benchee_html": {:hex, :benchee_html, "1.0.0", "5b4d24effebd060f466fb460ec06576e7b34a00fc26b234fe4f12c4f05c95947", [:mix], [{:benchee, ">= 0.99.0 and < 2.0.0", [hex: :benchee, repo: "hexpm", optional: false]}, {:benchee_json, "~> 1.0", [hex: :benchee_json, repo: "hexpm", optional: false]}], "hexpm", "5280af9aac432ff5ca4216d03e8a93f32209510e925b60e7f27c33796f69e699"},
44
"benchee_json": {:hex, :benchee_json, "1.0.0", "cc661f4454d5995c08fe10dd1f2f72f229c8f0fb1c96f6b327a8c8fc96a91fe5", [:mix], [{:benchee, ">= 0.99.0 and < 2.0.0", [hex: :benchee, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "da05d813f9123505f870344d68fb7c86a4f0f9074df7d7b7e2bb011a63ec231c"},
55
"bunt": {:hex, :bunt, "0.2.0", "951c6e801e8b1d2cbe58ebbd3e616a869061ddadcc4863d0a2182541acae9a38", [:mix], [], "hexpm", "7af5c7e09fe1d40f76c8e4f9dd2be7cebd83909f31fee7cd0e9eadc567da8353"},
6-
"certifi": {:hex, :certifi, "2.8.0", "d4fb0a6bb20b7c9c3643e22507e42f356ac090a1dcea9ab99e27e0376d695eba", [:rebar3], [], "hexpm", "6ac7efc1c6f8600b08d625292d4bbf584e14847ce1b6b5c44d983d273e1097ea"},
7-
"crc": {:hex, :crc, "0.10.2", "93ee6788904735d4d93f59a1e80860e4c9aa44e8d2ff7c69857eb62757454137", [:mix, :rebar3], [{:elixir_make, "~> 0.6", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm", "6b931cfb5e7d20c3c4113adab460f29ee5a50a36b397edd81c9bede2bbdb505c"},
8-
"credo": {:hex, :credo, "1.6.1", "7dc76dcdb764a4316c1596804c48eada9fff44bd4b733a91ccbf0c0f368be61e", [:mix], [{:bunt, "~> 0.2.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2.8", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "698607fb5993720c7e93d2d8e76f2175bba024de964e160e2f7151ef3ab82ac5"},
6+
"certifi": {:hex, :certifi, "2.9.0", "6f2a475689dd47f19fb74334859d460a2dc4e3252a3324bd2111b8f0429e7e21", [:rebar3], [], "hexpm", "266da46bdb06d6c6d35fde799bcb28d36d985d424ad7c08b5bb48f5b5cdd4641"},
7+
"crc": {:hex, :crc, "0.10.4", "06f5f54e2ec2954968703dcd37d7a4c65cee7a5305c48a23c509dc20a5469d4f", [:mix, :rebar3], [{:elixir_make, "~> 0.6", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm", "90bdd5b5ac883f0b1860692324ed3f53fdaa6f1e8483771873fea07e71def91d"},
8+
"credo": {:hex, :credo, "1.6.4", "ddd474afb6e8c240313f3a7b0d025cc3213f0d171879429bf8535d7021d9ad78", [:mix], [{:bunt, "~> 0.2.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2.8", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "c28f910b61e1ff829bffa056ef7293a8db50e87f2c57a9b5c3f57eee124536b7"},
99
"deep_merge": {:hex, :deep_merge, "1.0.0", "b4aa1a0d1acac393bdf38b2291af38cb1d4a52806cf7a4906f718e1feb5ee961", [:mix], [], "hexpm", "ce708e5f094b9cd4e8f2be4f00d2f4250c4095be93f8cd6d018c753894885430"},
1010
"dialyxir": {:hex, :dialyxir, "1.1.0", "c5aab0d6e71e5522e77beff7ba9e08f8e02bad90dfbeffae60eaf0cb47e29488", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "07ea8e49c45f15264ebe6d5b93799d4dd56a44036cf42d0ad9c960bc266c0b9a"},
11-
"earmark_parser": {:hex, :earmark_parser, "1.4.18", "e1b2be73eb08a49fb032a0208bf647380682374a725dfb5b9e510def8397f6f2", [:mix], [], "hexpm", "114a0e85ec3cf9e04b811009e73c206394ffecfcc313e0b346de0d557774ee97"},
11+
"earmark_parser": {:hex, :earmark_parser, "1.4.21", "7299db854f6d63730c15c8a781862889bb0fbf4432d7c306b3e63ce825d64baa", [:mix], [], "hexpm", "60664e1bdf7a02d8cbec2ac1d5b6fe0a68cf1d749ba955990d647346fac421e4"},
1212
"elixir_make": {:hex, :elixir_make, "0.6.3", "bc07d53221216838d79e03a8019d0839786703129599e9619f4ab74c8c096eac", [:mix], [], "hexpm", "f5cbd651c5678bcaabdbb7857658ee106b12509cd976c2c2fca99688e1daf716"},
1313
"erlex": {:hex, :erlex, "0.2.6", "c7987d15e899c7a2f34f5420d2a2ea0d659682c06ac607572df55a43753aa12e", [:mix], [], "hexpm", "2ed2e25711feb44d52b17d2780eabf998452f6efda104877a3881c2f8c0c0c75"},
14-
"ex_doc": {:hex, :ex_doc, "0.26.0", "1922164bac0b18b02f84d6f69cab1b93bc3e870e2ad18d5dacb50a9e06b542a3", [:mix], [{:earmark_parser, "~> 1.4.0", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "2775d66e494a9a48355db7867478ffd997864c61c65a47d31c4949459281c78d"},
14+
"ex_doc": {:hex, :ex_doc, "0.28.2", "e031c7d1a9fc40959da7bf89e2dc269ddc5de631f9bd0e326cbddf7d8085a9da", [:mix], [{:earmark_parser, "~> 1.4.19", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "51ee866993ffbd0e41c084a7677c570d0fc50cb85c6b5e76f8d936d9587fa719"},
1515
"excoveralls": {:hex, :excoveralls, "0.14.4", "295498f1ae47bdc6dce59af9a585c381e1aefc63298d48172efaaa90c3d251db", [:mix], [{:hackney, "~> 1.16", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "e3ab02f2df4c1c7a519728a6f0a747e71d7d6e846020aae338173619217931c1"},
1616
"file_system": {:hex, :file_system, "0.2.10", "fb082005a9cd1711c05b5248710f8826b02d7d1784e7c3451f9c1231d4fc162d", [:mix], [], "hexpm", "41195edbfb562a593726eda3b3e8b103a309b733ad25f3d642ba49696bf715dc"},
17-
"hackney": {:hex, :hackney, "1.18.0", "c4443d960bb9fba6d01161d01cd81173089686717d9490e5d3606644c48d121f", [:rebar3], [{:certifi, "~>2.8.0", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "~>6.1.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "~>1.0.0", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~>1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:parse_trans, "3.3.1", [hex: :parse_trans, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "~>1.1.0", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}, {:unicode_util_compat, "~>0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "9afcda620704d720db8c6a3123e9848d09c87586dc1c10479c42627b905b5c5e"},
17+
"hackney": {:hex, :hackney, "1.18.1", "f48bf88f521f2a229fc7bae88cf4f85adc9cd9bcf23b5dc8eb6a1788c662c4f6", [:rebar3], [{:certifi, "~>2.9.0", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "~>6.1.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "~>1.0.0", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~>1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:parse_trans, "3.3.1", [hex: :parse_trans, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "~>1.1.0", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}, {:unicode_util_compat, "~>0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "a4ecdaff44297e9b5894ae499e9a070ea1888c84afdd1fd9b7b2bc384950128e"},
1818
"idna": {:hex, :idna, "6.1.1", "8a63070e9f7d0c62eb9d9fcb360a7de382448200fbbd1b106cc96d3d8099df8d", [:rebar3], [{:unicode_util_compat, "~>0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "92376eb7894412ed19ac475e4a86f7b413c1b9fbb5bd16dccd57934157944cea"},
19-
"jason": {:hex, :jason, "1.2.2", "ba43e3f2709fd1aa1dce90aaabfd039d000469c05c56f0b8e31978e03fa39052", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "18a228f5f0058ee183f29f9eae0805c6e59d61c3b006760668d8d18ff0d12179"},
20-
"jchash": {:hex, :jchash, "0.1.2", "c157534ad219fb5a92986e406c5763ef8da901785430c5853d5ec4de2874b3a0", [:rebar3], [], "hexpm", "3371d73e367e9aecf58bc2bfd8e022032c2b9dad2b715e799a9e33e4af1fef74"},
21-
"makeup": {:hex, :makeup, "1.0.5", "d5a830bc42c9800ce07dd97fa94669dfb93d3bf5fcf6ea7a0c67b2e0e4a7f26c", [:mix], [{:nimble_parsec, "~> 0.5 or ~> 1.0", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "cfa158c02d3f5c0c665d0af11512fed3fba0144cf1aadee0f2ce17747fba2ca9"},
22-
"makeup_elixir": {:hex, :makeup_elixir, "0.15.2", "dc72dfe17eb240552857465cc00cce390960d9a0c055c4ccd38b70629227e97c", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.1", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "fd23ae48d09b32eff49d4ced2b43c9f086d402ee4fd4fcb2d7fad97fa8823e75"},
19+
"jason": {:hex, :jason, "1.3.0", "fa6b82a934feb176263ad2df0dbd91bf633d4a46ebfdffea0c8ae82953714946", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "53fc1f51255390e0ec7e50f9cb41e751c260d065dcba2bf0d08dc51a4002c2ac"},
20+
"jchash": {:hex, :jchash, "0.1.3", "6cbf555b542511d6a1e2dbcb5e98a239ab779b3fade8fd68ec041ccb7aaa2757", [:rebar3], [], "hexpm", "0875a67ee646fa69895c5f68b882faadcb8a38800b39ee82421cb3b3f753da20"},
21+
"makeup": {:hex, :makeup, "1.1.0", "6b67c8bc2882a6b6a445859952a602afc1a41c2e08379ca057c0f525366fc3ca", [:mix], [{:nimble_parsec, "~> 1.2.2 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "0a45ed501f4a8897f580eabf99a2e5234ea3e75a4373c8a52824f6e873be57a6"},
22+
"makeup_elixir": {:hex, :makeup_elixir, "0.16.0", "f8c570a0d33f8039513fbccaf7108c5d750f47d8defd44088371191b76492b0b", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "28b2cbdc13960a46ae9a8858c4bebdec3c9a6d7b4b9e7f4ed1502f8159f338e7"},
2323
"makeup_erlang": {:hex, :makeup_erlang, "0.1.1", "3fcb7f09eb9d98dc4d208f49cc955a34218fc41ff6b84df7c75b3e6e533cc65f", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "174d0809e98a4ef0b3309256cbf97101c6ec01c4ab0b23e926a9e17df2077cbb"},
2424
"metrics": {:hex, :metrics, "1.0.1", "25f094dea2cda98213cecc3aeff09e940299d950904393b2a29d191c346a8486", [:rebar3], [], "hexpm", "69b09adddc4f74a40716ae54d140f93beb0fb8978d8636eaded0c31b6f099f16"},
2525
"mimerl": {:hex, :mimerl, "1.2.0", "67e2d3f571088d5cfd3e550c383094b47159f3eee8ffa08e64106cdf5e981be3", [:rebar3], [], "hexpm", "f278585650aa581986264638ebf698f8bb19df297f66ad91b18910dfc6e19323"},
26-
"nebulex": {:hex, :nebulex, "2.3.0", "c8d6d6676a1ff0493251422fdb4c071ce1022a9e94320f85d1c78bac206f5818", [:mix], [{:decorator, "~> 1.4", [hex: :decorator, repo: "hexpm", optional: true]}, {:shards, "~> 1.0", [hex: :shards, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: true]}], "hexpm", "b1bde6083391551375fdc34f752d56e9f6ed2c528637cf7a9fa02cfa59a34596"},
27-
"nimble_parsec": {:hex, :nimble_parsec, "1.2.0", "b44d75e2a6542dcb6acf5d71c32c74ca88960421b6874777f79153bbbbd7dccc", [:mix], [], "hexpm", "52b2871a7515a5ac49b00f214e4165a40724cf99798d8e4a65e4fd64ebd002c1"},
26+
"nebulex": {:hex, :nebulex, "2.3.1", "e04a11e03bf66d09d88275829d2b41d2c3c758711acc91cece6aa6f9c56f62fc", [:mix], [{:decorator, "~> 1.4", [hex: :decorator, repo: "hexpm", optional: true]}, {:shards, "~> 1.0", [hex: :shards, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: true]}], "hexpm", "09496cbf647901d15519fbb95c6f9e5a7647adb1fae83dbc2fbdf3a0765b02eb"},
27+
"nimble_parsec": {:hex, :nimble_parsec, "1.2.3", "244836e6e3f1200c7f30cb56733fd808744eca61fd182f731eac4af635cc6d0b", [:mix], [], "hexpm", "c8d789e39b9131acf7b99291e93dae60ab48ef14a7ee9d58c6964f59efb570b0"},
2828
"parse_trans": {:hex, :parse_trans, "3.3.1", "16328ab840cc09919bd10dab29e431da3af9e9e7e7e6f0089dd5a2d2820011d8", [:rebar3], [], "hexpm", "07cd9577885f56362d414e8c4c4e6bdf10d43a8767abb92d24cbe8b24c54888b"},
2929
"redix": {:hex, :redix, "1.1.5", "6fc460d66a5c2287e83e6d73dddc8d527ff59cb4d4f298b41e03a4db8c3b2bd5", [:mix], [{:castore, "~> 0.1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "679afdd4c14502fe9c11387ff1cdcb33065a1cf511097da1eee407f17c7a418b"},
3030
"ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.6", "cf344f5692c82d2cd7554f5ec8fd961548d4fd09e7d22f5b62482e5aeaebd4b0", [:make, :mix, :rebar3], [], "hexpm", "bdb0d2471f453c88ff3908e7686f86f9be327d065cc1ec16fa4540197ea04680"},
31+
"statistex": {:hex, :statistex, "1.0.0", "f3dc93f3c0c6c92e5f291704cf62b99b553253d7969e9a5fa713e5481cd858a5", [:mix], [], "hexpm", "ff9d8bee7035028ab4742ff52fc80a2aa35cece833cf5319009b52f1b5a86c27"},
3132
"telemetry": {:hex, :telemetry, "1.0.0", "0f453a102cdf13d506b7c0ab158324c337c41f1cc7548f0bc0e130bbf0ae9452", [:rebar3], [], "hexpm", "73bc09fa59b4a0284efb4624335583c528e07ec9ae76aca96ea0673850aec57a"},
3233
"unicode_util_compat": {:hex, :unicode_util_compat, "0.7.0", "bc84380c9ab48177092f43ac89e4dfa2c6d62b40b8bd132b1059ecc7232f9a78", [:rebar3], [], "hexpm", "25eee6d67df61960cf6a794239566599b09e17e668d3700247bc498638152521"},
3334
}

0 commit comments

Comments
 (0)