Skip to content

Commit cb87a42

Browse files
committed
Overall improvements
1 parent c3ba9aa commit cb87a42

File tree

11 files changed

+138
-114
lines changed

11 files changed

+138
-114
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ jobs:
3636
- elixir: 1.15.x
3737
otp: 25.x
3838
os: 'ubuntu-latest'
39-
- elixir: 1.12.x
39+
- elixir: 1.14.x
4040
otp: 23.x
4141
os: 'ubuntu-20.04'
4242

lib/nebulex/adapters/local.ex

Lines changed: 74 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ defmodule Nebulex.Adapters.Local do
206206
207207
#{Nebulex.Adapter.Transaction.Options.options_docs()}
208208
209-
## Extended API (convenience functions)
209+
## Extended API (extra functions)
210210
211211
This adapter provides some additional convenience functions to the
212212
`Nebulex.Cache` API.
@@ -364,62 +364,66 @@ defmodule Nebulex.Adapters.Local do
364364
## Nebulex.Adapter.KV
365365

366366
@impl true
367-
def fetch(adapter_meta, key, _opts) do
368-
adapter_meta.meta_tab
367+
def fetch(%{name: name, meta_tab: meta_tab, backend: backend}, key, _opts) do
368+
meta_tab
369369
|> list_gen()
370-
|> do_fetch(key, adapter_meta)
370+
|> do_fetch(name, backend, key)
371371
|> return(:value)
372372
end
373373

374-
defp do_fetch([newer], key, adapter_meta) do
375-
fetch_entry(newer, key, adapter_meta)
374+
defp do_fetch([newer], name, backend, key) do
375+
fetch_entry(name, backend, newer, key)
376376
end
377377

378-
defp do_fetch([newer, older], key, adapter_meta) do
379-
with {:error, _} <- fetch_entry(newer, key, adapter_meta),
380-
{:ok, cached} <- pop_entry(older, key, adapter_meta) do
381-
true = adapter_meta.backend.insert(newer, cached)
378+
defp do_fetch([newer, older], name, backend, key) do
379+
with {:error, _} <- fetch_entry(name, backend, newer, key),
380+
{:ok, cached} <- pop_entry(name, backend, older, key) do
381+
true = backend.insert(newer, cached)
382382

383383
{:ok, cached}
384384
end
385385
end
386386

387387
@impl true
388-
def put(adapter_meta, key, value, ttl, on_write, _opts) do
388+
def put(adapter_meta, key, value, on_write, ttl, keep_ttl?, _opts) do
389389
now = Time.now()
390390
entry = entry(key: key, value: value, touched: now, exp: exp(now, ttl))
391391

392-
wrap_ok(do_put(on_write, adapter_meta.meta_tab, adapter_meta.backend, entry))
392+
do_put(on_write, adapter_meta.meta_tab, adapter_meta.backend, entry, keep_ttl?)
393+
|> wrap_ok()
393394
end
394395

395-
defp do_put(:put, meta_tab, backend, entry) do
396-
put_entries(meta_tab, backend, entry)
396+
defp do_put(:put, meta_tab, backend, entry, keep_ttl?) do
397+
put_entry(meta_tab, backend, entry, keep_ttl?)
397398
end
398399

399-
defp do_put(:put_new, meta_tab, backend, entry) do
400+
defp do_put(:put_new, meta_tab, backend, entry, _keep_ttl?) do
400401
put_new_entries(meta_tab, backend, entry)
401402
end
402403

403-
defp do_put(:replace, meta_tab, backend, entry(key: key, value: value)) do
404-
update_entry(meta_tab, backend, key, [{3, value}])
404+
defp do_put(
405+
:replace,
406+
meta_tab,
407+
backend,
408+
entry(key: key, value: value, touched: touched, exp: exp),
409+
keep_ttl?
410+
) do
411+
changes = if keep_ttl?, do: [], else: [{4, touched}, {5, exp}]
412+
413+
update_entry(meta_tab, backend, key, [{3, value} | changes])
405414
end
406415

407416
@impl true
408-
def put_all(adapter_meta, entries, ttl, on_write, _opts) do
417+
def put_all(adapter_meta, entries, on_write, ttl, _opts) do
409418
now = Time.now()
410419
exp = exp(now, ttl)
411420

412-
entries =
413-
for {key, value} <- entries do
414-
entry(key: key, value: value, touched: now, exp: exp)
415-
end
416-
417421
do_put_all(
418422
on_write,
419423
adapter_meta.meta_tab,
420424
adapter_meta.backend,
421425
adapter_meta.purge_chunk_size,
422-
entries
426+
Enum.map(entries, &entry(key: elem(&1, 0), value: elem(&1, 1), touched: now, exp: exp))
423427
)
424428
|> wrap_ok()
425429
end
@@ -440,31 +444,34 @@ defmodule Nebulex.Adapters.Local do
440444
end
441445

442446
@impl true
443-
def take(adapter_meta, key, _opts) do
444-
adapter_meta.meta_tab
447+
def take(%{name: name, meta_tab: meta_tab, backend: backend}, key, _opts) do
448+
meta_tab
445449
|> list_gen()
446450
|> Enum.reduce_while(nil, fn gen, _acc ->
447-
case pop_entry(gen, key, adapter_meta) do
451+
case pop_entry(name, backend, gen, key) do
448452
{:ok, res} -> {:halt, return({:ok, res}, :value)}
449453
error -> {:cont, error}
450454
end
451455
end)
452456
end
453457

454458
@impl true
455-
def update_counter(adapter_meta, key, amount, ttl, default, _opts) do
459+
def update_counter(
460+
%{name: name, meta_tab: meta_tab, backend: backend},
461+
key,
462+
amount,
463+
default,
464+
ttl,
465+
_opts
466+
) do
456467
# Current time
457468
now = Time.now()
458469

459-
# Get needed metadata
460-
meta_tab = adapter_meta.meta_tab
461-
backend = adapter_meta.backend
462-
463470
# Verify if the key has expired
464471
_ =
465472
meta_tab
466473
|> list_gen()
467-
|> do_fetch(key, adapter_meta)
474+
|> do_fetch(name, backend, key)
468475

469476
# Run the counter operation
470477
meta_tab
@@ -486,8 +493,8 @@ defmodule Nebulex.Adapters.Local do
486493
end
487494

488495
@impl true
489-
def ttl(adapter_meta, key, _opts) do
490-
with {:ok, res} <- adapter_meta.meta_tab |> list_gen() |> do_fetch(key, adapter_meta) do
496+
def ttl(%{name: name, meta_tab: meta_tab, backend: backend}, key, _opts) do
497+
with {:ok, res} <- meta_tab |> list_gen() |> do_fetch(name, backend, key) do
491498
{:ok, entry_ttl(res)}
492499
end
493500
end
@@ -715,19 +722,19 @@ defmodule Nebulex.Adapters.Local do
715722
## Helpers
716723

717724
# Inline common instructions
718-
@compile {:inline, fetch_entry: 3, pop_entry: 3, list_gen: 1, newer_gen: 1, match_key: 2}
725+
@compile {:inline, fetch_entry: 4, pop_entry: 4, list_gen: 1, newer_gen: 1, match_key: 2}
719726

720-
defmacrop backend_call(adapter_meta, fun, tab, key) do
727+
defmacrop backend_call(name, backend, tab, fun, key) do
721728
quote do
722-
case unquote(adapter_meta).backend.unquote(fun)(unquote(tab), unquote(key)) do
729+
case unquote(backend).unquote(fun)(unquote(tab), unquote(key)) do
723730
[] ->
724-
wrap_error(Nebulex.KeyError, key: unquote(key), cache: unquote(adapter_meta).name)
731+
wrap_error(Nebulex.KeyError, key: unquote(key), cache: unquote(name))
725732

726733
[entry(exp: :infinity) = entry] ->
727734
{:ok, entry}
728735

729736
[entry() = entry] ->
730-
validate_exp(entry, unquote(tab), unquote(adapter_meta))
737+
validate_exp(entry, unquote(backend), unquote(tab), unquote(name))
731738

732739
entries when is_list(entries) ->
733740
now = Time.now()
@@ -740,12 +747,12 @@ defmodule Nebulex.Adapters.Local do
740747
end
741748
end
742749

743-
defp fetch_entry(tab, key, adapter_meta) do
744-
backend_call(adapter_meta, :lookup, tab, key)
750+
defp fetch_entry(name, backend, tab, key) do
751+
backend_call(name, backend, tab, :lookup, key)
745752
end
746753

747-
defp pop_entry(tab, key, adapter_meta) do
748-
backend_call(adapter_meta, :take, tab, key)
754+
defp pop_entry(name, backend, tab, key) do
755+
backend_call(name, backend, tab, :take, key)
749756
end
750757

751758
defp list_gen(meta_tab) do
@@ -758,11 +765,11 @@ defmodule Nebulex.Adapters.Local do
758765
|> hd()
759766
end
760767

761-
defp validate_exp(entry(key: key, exp: exp) = entry, tab, adapter_meta) do
768+
defp validate_exp(entry(key: key, exp: exp) = entry, backend, tab, name) do
762769
if Time.now() >= exp do
763-
true = adapter_meta.backend.delete(tab, key)
770+
true = backend.delete(tab, key)
764771

765-
wrap_error(Nebulex.KeyError, key: key, cache: adapter_meta.name, reason: :expired)
772+
wrap_error(Nebulex.KeyError, key: key, cache: name, reason: :expired)
766773
else
767774
{:ok, entry}
768775
end
@@ -771,26 +778,34 @@ defmodule Nebulex.Adapters.Local do
771778
defp exp(_now, :infinity), do: :infinity
772779
defp exp(now, ttl), do: now + ttl
773780

774-
defp put_entries(meta_tab, backend, entries, chunk_size \\ 0)
775-
776-
defp put_entries(
781+
defp put_entry(
777782
meta_tab,
778783
backend,
779784
entry(key: key, value: val, touched: touched, exp: exp) = entry,
780-
_chunk_size
785+
keep_ttl?
781786
) do
782-
case list_gen(meta_tab) do
783-
[newer_gen] ->
787+
case {list_gen(meta_tab), keep_ttl?} do
788+
{[newer_gen], false} ->
784789
backend.insert(newer_gen, entry)
785790

786-
[newer_gen, older_gen] ->
787-
changes = [{3, val}, {4, touched}, {5, exp}]
791+
{[newer_gen], true} ->
792+
update_or_insert(backend, newer_gen, entry, {3, val})
788793

789-
with false <- backend.update_element(newer_gen, key, changes) do
790-
true = backend.delete(older_gen, key)
794+
{[newer_gen, older_gen], false} ->
795+
true = update_or_insert(backend, newer_gen, entry, [{3, val}, {4, touched}, {5, exp}])
791796

792-
backend.insert(newer_gen, entry)
793-
end
797+
true = backend.delete(older_gen, key)
798+
799+
{[newer_gen, older_gen], true} ->
800+
true = update_or_insert(backend, newer_gen, entry, [{3, val}, {4, touched}])
801+
802+
true = backend.delete(older_gen, key)
803+
end
804+
end
805+
806+
defp update_or_insert(backend, table, entry(key: key) = entry, changes) do
807+
with false <- backend.update_element(table, key, changes) do
808+
backend.insert(table, entry)
794809
end
795810
end
796811

lib/nebulex/adapters/local/generation.ex

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,6 @@ defmodule Nebulex.Adapters.Local.Generation do
4848

4949
use GenServer
5050

51-
import Nebulex.Utils
52-
5351
alias Nebulex.Adapter
5452
alias Nebulex.Adapters.Common.Info.Stats
5553
alias Nebulex.Adapters.Local.{Backend, Metadata, Options}
@@ -212,7 +210,9 @@ defmodule Nebulex.Adapters.Local.Generation do
212210
end
213211

214212
defp get_meta_tab(server_ref) when is_atom(server_ref) or is_pid(server_ref) do
215-
unwrap_or_raise Adapter.with_meta(server_ref, & &1.meta_tab)
213+
server_ref
214+
|> Adapter.lookup_meta()
215+
|> Map.fetch!(:meta_tab)
216216
end
217217

218218
defp get_meta_tab(server_ref), do: server_ref

mix.exs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ defmodule NebulexAdaptersLocal.MixProject do
5252
{:dialyxir, "~> 1.4", only: [:dev, :test], runtime: false},
5353
{:sobelow, "~> 0.13", only: [:dev, :test], runtime: false},
5454
{:stream_data, "~> 1.1", only: [:dev, :test]},
55-
{:mimic, "~> 1.7", only: :test},
55+
{:mimic, "~> 1.9", only: :test},
5656
{:ex2ms, "~> 1.6", only: :test},
5757

5858
# Benchmark Test

mix.lock

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,27 @@
33
"benchee_html": {:hex, :benchee_html, "1.0.1", "1e247c0886c3fdb0d3f4b184b653a8d6fb96e4ad0d0389267fe4f36968772e24", [: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", "b00a181af7152431901e08f3fc9f7197ed43ff50421a8347b0c80bf45d5b3fef"},
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, "1.0.0", "081c2c665f086849e6d57900292b3a161727ab40431219529f13c4ddcf3e7a44", [:mix], [], "hexpm", "dc5f86aa08a5f6fa6b8096f0735c4e76d54ae5c9fa2c143e5a1fc7c1cd9bb6b5"},
6-
"credo": {:hex, :credo, "1.7.7", "771445037228f763f9b2afd612b6aa2fd8e28432a95dbbc60d8e03ce71ba4446", [:mix], [{:bunt, "~> 0.2.1 or ~> 1.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "8bc87496c9aaacdc3f90f01b7b0582467b69b4bd2441fe8aae3109d843cc2f2e"},
6+
"credo": {:hex, :credo, "1.7.8", "9722ba1681e973025908d542ec3d95db5f9c549251ba5b028e251ad8c24ab8c5", [:mix], [{:bunt, "~> 0.2.1 or ~> 1.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "cb9e87cc64f152f3ed1c6e325e7b894dea8f5ef2e41123bd864e3cd5ceb44968"},
77
"deep_merge": {:hex, :deep_merge, "1.0.0", "b4aa1a0d1acac393bdf38b2291af38cb1d4a52806cf7a4906f718e1feb5ee961", [:mix], [], "hexpm", "ce708e5f094b9cd4e8f2be4f00d2f4250c4095be93f8cd6d018c753894885430"},
8-
"dialyxir": {:hex, :dialyxir, "1.4.3", "edd0124f358f0b9e95bfe53a9fcf806d615d8f838e2202a9f430d59566b6b53b", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "bf2cfb75cd5c5006bec30141b131663299c661a864ec7fbbc72dfa557487a986"},
9-
"earmark_parser": {:hex, :earmark_parser, "1.4.39", "424642f8335b05bb9eb611aa1564c148a8ee35c9c8a8bba6e129d51a3e3c6769", [:mix], [], "hexpm", "06553a88d1f1846da9ef066b87b57c6f605552cfbe40d20bd8d59cc6bde41944"},
10-
"erlex": {:hex, :erlex, "0.2.6", "c7987d15e899c7a2f34f5420d2a2ea0d659682c06ac607572df55a43753aa12e", [:mix], [], "hexpm", "2ed2e25711feb44d52b17d2780eabf998452f6efda104877a3881c2f8c0c0c75"},
8+
"dialyxir": {:hex, :dialyxir, "1.4.4", "fb3ce8741edeaea59c9ae84d5cec75da00fa89fe401c72d6e047d11a61f65f70", [:mix], [{:erlex, ">= 0.2.7", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "cd6111e8017ccd563e65621a4d9a4a1c5cd333df30cebc7face8029cacb4eff6"},
9+
"earmark_parser": {:hex, :earmark_parser, "1.4.41", "ab34711c9dc6212dda44fcd20ecb87ac3f3fce6f0ca2f28d4a00e4154f8cd599", [:mix], [], "hexpm", "a81a04c7e34b6617c2792e291b5a2e57ab316365c2644ddc553bb9ed863ebefa"},
10+
"erlex": {:hex, :erlex, "0.2.7", "810e8725f96ab74d17aac676e748627a07bc87eb950d2b83acd29dc047a30595", [:mix], [], "hexpm", "3ed95f79d1a844c3f6bf0cea61e0d5612a42ce56da9c03f01df538685365efb0"},
1111
"ex2ms": {:hex, :ex2ms, "1.7.0", "45b9f523d0b777667ded60070d82d871a37e294f0b6c5b8eca86771f00f82ee1", [:mix], [], "hexpm", "2589eee51f81f1b1caa6d08c990b1ad409215fe6f64c73f73c67d36ed10be827"},
12-
"ex_doc": {:hex, :ex_doc, "0.34.0", "ab95e0775db3df71d30cf8d78728dd9261c355c81382bcd4cefdc74610bef13e", [:mix], [{:earmark_parser, "~> 1.4.39", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_c, ">= 0.1.0", [hex: :makeup_c, repo: "hexpm", optional: true]}, {:makeup_elixir, "~> 0.14 or ~> 1.0", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1 or ~> 1.0", [hex: :makeup_erlang, repo: "hexpm", optional: false]}, {:makeup_html, ">= 0.1.0", [hex: :makeup_html, repo: "hexpm", optional: true]}], "hexpm", "60734fb4c1353f270c3286df4a0d51e65a2c1d9fba66af3940847cc65a8066d7"},
13-
"excoveralls": {:hex, :excoveralls, "0.18.1", "a6f547570c6b24ec13f122a5634833a063aec49218f6fff27de9df693a15588c", [:mix], [{:castore, "~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "d65f79db146bb20399f23046015974de0079668b9abb2f5aac074d078da60b8d"},
14-
"file_system": {:hex, :file_system, "1.0.0", "b689cc7dcee665f774de94b5a832e578bd7963c8e637ef940cd44327db7de2cd", [:mix], [], "hexpm", "6752092d66aec5a10e662aefeed8ddb9531d79db0bc145bb8c40325ca1d8536d"},
15-
"jason": {:hex, :jason, "1.4.1", "af1504e35f629ddcdd6addb3513c3853991f694921b1b9368b0bd32beb9f1b63", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "fbb01ecdfd565b56261302f7e1fcc27c4fb8f32d56eab74db621fc154604a7a1"},
12+
"ex_doc": {:hex, :ex_doc, "0.34.2", "13eedf3844ccdce25cfd837b99bea9ad92c4e511233199440488d217c92571e8", [:mix], [{:earmark_parser, "~> 1.4.39", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_c, ">= 0.1.0", [hex: :makeup_c, repo: "hexpm", optional: true]}, {:makeup_elixir, "~> 0.14 or ~> 1.0", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1 or ~> 1.0", [hex: :makeup_erlang, repo: "hexpm", optional: false]}, {:makeup_html, ">= 0.1.0", [hex: :makeup_html, repo: "hexpm", optional: true]}], "hexpm", "5ce5f16b41208a50106afed3de6a2ed34f4acfd65715b82a0b84b49d995f95c1"},
13+
"excoveralls": {:hex, :excoveralls, "0.18.3", "bca47a24d69a3179951f51f1db6d3ed63bca9017f476fe520eb78602d45f7756", [:mix], [{:castore, "~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "746f404fcd09d5029f1b211739afb8fb8575d775b21f6a3908e7ce3e640724c6"},
14+
"file_system": {:hex, :file_system, "1.0.1", "79e8ceaddb0416f8b8cd02a0127bdbababe7bf4a23d2a395b983c1f8b3f73edd", [:mix], [], "hexpm", "4414d1f38863ddf9120720cd976fce5bdde8e91d8283353f0e31850fa89feb9e"},
15+
"ham": {:hex, :ham, "0.3.0", "7cd031b4a55fba219c11553e7b13ba73bd86eab4034518445eff1e038cb9a44d", [:mix], [], "hexpm", "7d6c6b73d7a6a83233876cc1b06a4d9b5de05562b228effda4532f9a49852bf6"},
16+
"jason": {:hex, :jason, "1.4.4", "b9226785a9aa77b6857ca22832cffa5d5011a667207eb2a0ad56adb5db443b8a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "c5eb0cab91f094599f94d55bc63409236a8ec69a21a67814529e8d5f6cc90b3b"},
1617
"makeup": {:hex, :makeup, "1.1.2", "9ba8837913bdf757787e71c1581c21f9d2455f4dd04cfca785c70bbfff1a76a3", [:mix], [{:nimble_parsec, "~> 1.2.2 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "cce1566b81fbcbd21eca8ffe808f33b221f9eee2cbc7a1706fc3da9ff18e6cac"},
1718
"makeup_elixir": {:hex, :makeup_elixir, "0.16.2", "627e84b8e8bf22e60a2579dad15067c755531fea049ae26ef1020cad58fe9578", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "41193978704763f6bbe6cc2758b84909e62984c7752b3784bd3c218bb341706b"},
18-
"makeup_erlang": {:hex, :makeup_erlang, "1.0.0", "6f0eff9c9c489f26b69b61440bf1b238d95badae49adac77973cbacae87e3c2e", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "ea7a9307de9d1548d2a72d299058d1fd2339e3d398560a0e46c27dab4891e4d2"},
19-
"mimic": {:hex, :mimic, "1.7.4", "cd2772ffbc9edefe964bc668bfd4059487fa639a5b7f1cbdf4fd22946505aa4f", [:mix], [], "hexpm", "437c61041ecf8a7fae35763ce89859e4973bb0666e6ce76d75efc789204447c3"},
20-
"nebulex": {:git, "https://github.com/cabol/nebulex.git", "458fadcc4091525cd2a847a7f9a0d9375814e0b4", [branch: "v3.0.0-dev"]},
19+
"makeup_erlang": {:hex, :makeup_erlang, "1.0.1", "c7f58c120b2b5aa5fd80d540a89fdf866ed42f1f3994e4fe189abebeab610839", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "8a89a1eeccc2d798d6ea15496a6e4870b75e014d1af514b1b71fa33134f57814"},
20+
"mimic": {:hex, :mimic, "1.10.1", "c1e3b2044483ffa54d9e61e3be439528f47022548f6d8db1f22ca7db5490e4fa", [:mix], [{:ham, "~> 0.2", [hex: :ham, repo: "hexpm", optional: false]}], "hexpm", "b31ac70e0d6f5877af03004f02632b4fbc6abe71ed95a47d87b68d3dfffb83b5"},
21+
"nebulex": {:git, "https://github.com/cabol/nebulex.git", "5e966984ddac501070653b17cc906199372bb0ff", [branch: "v3.0.0-dev"]},
2122
"nimble_options": {:hex, :nimble_options, "1.1.1", "e3a492d54d85fc3fd7c5baf411d9d2852922f66e69476317787a7b2bb000a61b", [:mix], [], "hexpm", "821b2470ca9442c4b6984882fe9bb0389371b8ddec4d45a9504f00a66f650b44"},
2223
"nimble_parsec": {:hex, :nimble_parsec, "1.4.0", "51f9b613ea62cfa97b25ccc2c1b4216e81df970acd8e16e8d1bdc58fef21370d", [:mix], [], "hexpm", "9c565862810fb383e9838c1dd2d7d2c437b3d13b267414ba6af33e50d2d1cf28"},
2324
"shards": {:hex, :shards, "1.1.1", "8b42323457d185b26b15d05187784ce6c5d1e181b35c46fca36c45f661defe02", [:make, :rebar3], [], "hexpm", "169a045dae6668cda15fbf86d31bf433d0dbbaec42c8c23ca4f8f2d405ea8eda"},
2425
"sobelow": {:hex, :sobelow, "0.13.0", "218afe9075904793f5c64b8837cc356e493d88fddde126a463839351870b8d1e", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "cd6e9026b85fc35d7529da14f95e85a078d9dd1907a9097b3ba6ac7ebbe34a0d"},
2526
"statistex": {:hex, :statistex, "1.0.0", "f3dc93f3c0c6c92e5f291704cf62b99b553253d7969e9a5fa713e5481cd858a5", [:mix], [], "hexpm", "ff9d8bee7035028ab4742ff52fc80a2aa35cece833cf5319009b52f1b5a86c27"},
26-
"stream_data": {:hex, :stream_data, "1.1.1", "fd515ca95619cca83ba08b20f5e814aaf1e5ebff114659dc9731f966c9226246", [:mix], [], "hexpm", "45d0cd46bd06738463fd53f22b70042dbb58c384bb99ef4e7576e7bb7d3b8c8c"},
27-
"telemetry": {:hex, :telemetry, "1.2.1", "68fdfe8d8f05a8428483a97d7aab2f268aaff24b49e0f599faa091f1d4e7f61c", [:rebar3], [], "hexpm", "dad9ce9d8effc621708f99eac538ef1cbe05d6a874dd741de2e689c47feafed5"},
27+
"stream_data": {:hex, :stream_data, "1.1.2", "05499eaec0443349ff877aaabc6e194e82bda6799b9ce6aaa1aadac15a9fdb4d", [:mix], [], "hexpm", "129558d2c77cbc1eb2f4747acbbea79e181a5da51108457000020a906813a1a9"},
28+
"telemetry": {:hex, :telemetry, "1.3.0", "fedebbae410d715cf8e7062c96a1ef32ec22e764197f70cda73d82778d61e7a2", [:rebar3], [], "hexpm", "7015fc8919dbe63764f4b4b87a95b7c0996bd539e0d499be6ec9d7f3875b79e6"},
2829
}

0 commit comments

Comments
 (0)