mirror of
https://github.com/logos-messaging/logos-messaging-nim.git
synced 2026-05-18 00:09:52 +00:00
* persistency: per-job SQLite-backed storage layer (singleton, brokered)
Adds a backend-neutral CRUD library at waku/persistency/, plus the
nim-brokers dependency swap that enables it.
Architecture (ports-and-adapters):
* Persistency: process-wide singleton, one root directory.
* Job: one tenant, one DB file, one worker thread, one BrokerContext.
* Backend: SQLite via waku/common/databases/db_sqlite. Uniform schema
kv(category BLOB, key BLOB, payload BLOB) PRIMARY KEY (category, key)
WITHOUT ROWID, WAL mode.
* Writes are fire-and-forget via EventBroker(mt) PersistEvent.
* Reads are async via five RequestBroker(mt) shapes (KvGet, KvExists,
KvScan, KvCount, KvDelete). Reads return Result[T, PersistencyError].
* One storage thread per job; tenants isolated by BrokerContext.
Public surface (waku/persistency/persistency.nim):
Persistency.instance(rootDir) / Persistency.instance() / Persistency.reset()
p.openJob(id) / p.closeJob(id) / p.dropJob(id) / p.close()
p.job(id) / p[id] / p.hasJob(id)
Writes (Job form & string-id form, fire-and-forget):
persist / persistPut / persistDelete / persistEncoded
Reads (Job form & string-id form, async Result):
get / exists / scan / scanPrefix / count / deleteAcked
Key & payload encoding (keys.nim, payload.nim):
* encodePart family + variadic key(...) / payload(...) macros +
single-value toKey / toPayload.
* Primitives: string and openArray[byte] are 2-byte BE length + bytes;
int{8..64} are sign-flipped 8-byte BE; uint{16..64} are 8-byte BE;
bool/byte/char are 1 byte; enums are int64(ord(v)).
* Generic encodePart[T: tuple | object] recurses through fields() so
any composite Nim type is encodable without ceremony.
* Stable across Nim/C compiler upgrades: no sizeof, no memcpy, no
cast on pointers, no host-endianness dependency.
* `rawKey(bytes)` + `persistPut(..., openArray[byte])` let callers
bypass the built-in encoder with their own format (CBOR, protobuf...).
Lifecycle:
* Persistency.new is private; Persistency.instance is the only public
constructor. Same rootDir is idempotent; conflicting rootDir is
peInvalidArgument. Persistency.reset for test/restart paths.
* openJob opens-or-creates the per-job SQLite file; an existing file
is reused with its data preserved.
* Teardown integration: Persistency.instance registers a Teardown
MultiRequestBroker provider that closes all jobs and clears the
singleton slot when Waku.stop() issues Teardown.request.
Internal layering:
types.nim pure value types (Key, KeyRange, KvRow, TxOp,
PersistencyError)
keys.nim encodePart primitives + key(...) macro
payload.nim toPayload + payload(...) macro
schema.nim CREATE TABLE + connection pragmas + user_version
backend_sqlite.nim KvBackend, applyOps (single source of write SQL),
getOne/existsOne/deleteOne, scanRange (asc/desc,
half-open ranges, open-ended stop), countRange
backend_comm.nim EventBroker(mt) PersistEvent + 5 RequestBroker(mt)
declarations; encodeErr/decodeErr boundary helpers
backend_thread.nim startStorageThread / stopStorageThread (shared
allocShared0 arg, cstring dbPath, atomic
ready/shutdown flags); per-thread provider
registration
persistency.nim Persistency + Job types, singleton state, public
facade
../requests/lifecycle_requests.nim
Teardown MultiRequestBroker
Tests (69 cases, all passing):
test_keys.nim sort-order invariants (length-prefix strings,
sign-flipped ints, composite tuples, prefix
range)
test_backend.nim round-trip / replace / delete-return-value /
batched atomicity / asc-desc-half-open-open-
ended scans / category isolation / batch
txDelete
test_lifecycle.nim open-or-create rootDir / non-dir collision /
reopen across sessions / idempotent openJob /
two-tenant parallel isolation / closeJob joins
worker / dropJob removes file / acked delete
test_facade.nim put-then-get / atomic batch / scanPrefix
asc/desc / deleteAcked hit-miss /
fire-and-forget delete / two-tenant facade
isolation
test_encoding.nim tuple/named-tuple/object keys, embedded Key,
enum encoding, field-major composite sort,
payload struct encoding, end-to-end struct
round-trip through SQLite
test_string_lookup.nim peJobNotFound semantics / hasJob / subscript /
persistPut+get via id / reads short-circuit /
writes drop+warn / persistEncoded via id /
scan parity Job-ref vs id
test_singleton.nim idempotent same-rootDir / different-rootDir
rejection / no-arg instance lifecycle / reset
retargets / reset idempotence / Teardown.request
end-to-end
Prerequisite delivered in the same series: replace the in-tree broker
implementation with the external nim-brokers package; update all
broker call-sites (waku_filter_v2, waku_relay, waku_rln_relay,
delivery_service, peer_manager, requests/*, factory/*, api tests, etc.)
to the new package API; chat2 made to compile again.
Note: SDS adapter (Phase 5 of the design) is deferred -- nim-sds is
still developed side-by-side and the persistency layer is intentionally
SDS-agnostic.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* persistency: pin nim-brokers by URL+commit (workaround for stale registry)
The bare `brokers >= 2.0.1` form cannot resolve on machines where the
local nimble SAT solver enumerates only the registry-recorded 0.1.0 for
brokers. The nim-lang/packages entry for `brokers` carries no per-tag
metadata (only the URL), so until that registry entry is refreshed the
SAT solver clamps the available-versions list to 0.1.0 and rejects the
>= 2.0.1 constraint -- even though pkgs2 and pkgcache both have v2.0.1
cloned locally.
Pinning by URL+commit bypasses the registry path entirely. Inline
comment in waku.nimble documents the situation and the path back to
the bare form once nim-lang/packages is updated.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* persistency: nph format pass
Run `nph` on all 57 Nim files touched by this PR. Pure formatting:
17 files re-styled, no semantic change. Suite still 69/69.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* Fix build, add local-storage-path config, lazy init of Persistency from Waku start
* fix: fix nix deps
* fixes for nix build, regenerate deps
* reverting accidental dependency changes
* Fixing deps
* Apply suggestions from code review
Co-authored-by: Ivan FB <128452529+Ivansete-status@users.noreply.github.com>
* persistency tests: migrate to suite / asyncTest / await
Match the in-tree test convention (procSuite -> suite, sync test +
waitFor -> asyncTest + await):
- procSuite "X": -> suite "X":
- For tests doing async work: test -> asyncTest, waitFor -> await.
- Poll helpers (proc waitFor(t: Job, ...) in test_lifecycle.nim,
proc waitUntilExists(...) in test_facade.nim and
test_string_lookup.nim) -> Future[bool] {.async.}, internal
`waitFor X` -> `await X`, internal `sleep(N)` ->
`await sleepAsync(chronos.milliseconds(N))`.
- Renamed test_lifecycle.nim's helper proc from `waitFor(t: Job, ...)`
-> `pollExists(t: Job, ...)`; the previous name shadowed
chronos.waitFor in the chronos macro expansion.
- `chronos.milliseconds(N)` explicitly qualified because `std/times`
also exports `milliseconds` (returning TimeInterval, not Duration).
- `check await x` -> `let okN = await x; check okN` to dodge chronos's
"yield in expr not lowered" with await-as-macro-argument.
- `(await x).foo()` -> `let awN = await x; ... awN.foo() ...` for the
same reason.
waku/persistency/persistency.nim: nph also pulled the proc signatures
across multiple lines; restored explicit `Future[void] {.async.}`
return types after the colon (an intermediate nph pass had elided them).
Suite: 71 / 71 OK against the new async write surface.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* use idiomatic valueOr instead of ifs
* Reworked persistency shutdown, remove not necessary teardown mechanism
* Use const for DefaultStoragePath
* format to follow coding guidelines - no use of result and explicit returns - no functional change
---------
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Co-authored-by: Ivan FB <128452529+Ivansete-status@users.noreply.github.com>
660 lines
17 KiB
Plaintext
660 lines
17 KiB
Plaintext
{
|
|
"version": 2,
|
|
"packages": {
|
|
"nim": {
|
|
"version": "2.2.4",
|
|
"vcsRevision": "911e0dbb1f76de61fa0215ab1bb85af5334cc9a8",
|
|
"url": "https://github.com/nim-lang/Nim.git",
|
|
"downloadMethod": "git",
|
|
"dependencies": [],
|
|
"checksums": {
|
|
"sha1": "68bb85cbfb1832ce4db43943911b046c3af3caab"
|
|
}
|
|
},
|
|
"unittest2": {
|
|
"version": "0.2.5",
|
|
"vcsRevision": "26f2ef3ae0ec72a2a75bfe557e02e88f6a31c189",
|
|
"url": "https://github.com/status-im/nim-unittest2",
|
|
"downloadMethod": "git",
|
|
"dependencies": [
|
|
"nim"
|
|
],
|
|
"checksums": {
|
|
"sha1": "02bb3751ba9ddc3c17bfd89f2e41cb6bfb8fc0c9"
|
|
}
|
|
},
|
|
"bearssl": {
|
|
"version": "0.2.8",
|
|
"vcsRevision": "22c6a76ce015bc07e011562bdcfc51d9446c1e82",
|
|
"url": "https://github.com/status-im/nim-bearssl",
|
|
"downloadMethod": "git",
|
|
"dependencies": [
|
|
"nim",
|
|
"unittest2"
|
|
],
|
|
"checksums": {
|
|
"sha1": "da4dd7ae96d536bdaf42dca9c85d7aed024b6a86"
|
|
}
|
|
},
|
|
"bearssl_pkey_decoder": {
|
|
"version": "#21dd3710df9345ed2ad8bf8f882761e07863b8e0",
|
|
"vcsRevision": "21dd3710df9345ed2ad8bf8f882761e07863b8e0",
|
|
"url": "https://github.com/vacp2p/bearssl_pkey_decoder",
|
|
"downloadMethod": "git",
|
|
"dependencies": [
|
|
"nim",
|
|
"bearssl"
|
|
],
|
|
"checksums": {
|
|
"sha1": "21b42e2e6ddca6c875d3fc50f36a5115abf51714"
|
|
}
|
|
},
|
|
"jwt": {
|
|
"version": "#18f8378de52b241f321c1f9ea905456e89b95c6f",
|
|
"vcsRevision": "18f8378de52b241f321c1f9ea905456e89b95c6f",
|
|
"url": "https://github.com/vacp2p/nim-jwt.git",
|
|
"downloadMethod": "git",
|
|
"dependencies": [
|
|
"nim",
|
|
"bearssl",
|
|
"bearssl_pkey_decoder"
|
|
],
|
|
"checksums": {
|
|
"sha1": "bcfd6fc9c5e10a52b87117219b7ab5c98136bc8e"
|
|
}
|
|
},
|
|
"testutils": {
|
|
"version": "0.8.1",
|
|
"vcsRevision": "6ce5e5e2301ccbc04b09d27ff78741ff4d352b4d",
|
|
"url": "https://github.com/status-im/nim-testutils",
|
|
"downloadMethod": "git",
|
|
"dependencies": [
|
|
"nim",
|
|
"unittest2"
|
|
],
|
|
"checksums": {
|
|
"sha1": "96a11cf8b84fa9bd12d4a553afa1cc4b7f9df4e3"
|
|
}
|
|
},
|
|
"db_connector": {
|
|
"version": "0.1.0",
|
|
"vcsRevision": "29450a2063970712422e1ab857695c12d80112a6",
|
|
"url": "https://github.com/nim-lang/db_connector",
|
|
"downloadMethod": "git",
|
|
"dependencies": [
|
|
"nim"
|
|
],
|
|
"checksums": {
|
|
"sha1": "4f2e67d0e4b61af9ac5575509305660b473f01a4"
|
|
}
|
|
},
|
|
"results": {
|
|
"version": "0.5.1",
|
|
"vcsRevision": "df8113dda4c2d74d460a8fa98252b0b771bf1f27",
|
|
"url": "https://github.com/arnetheduck/nim-results",
|
|
"downloadMethod": "git",
|
|
"dependencies": [
|
|
"nim"
|
|
],
|
|
"checksums": {
|
|
"sha1": "a9c011f74bc9ed5c91103917b9f382b12e82a9e7"
|
|
}
|
|
},
|
|
"nat_traversal": {
|
|
"version": "0.0.1",
|
|
"vcsRevision": "860e18c37667b5dd005b94c63264560c35d88004",
|
|
"url": "https://github.com/status-im/nim-nat-traversal",
|
|
"downloadMethod": "git",
|
|
"dependencies": [
|
|
"nim",
|
|
"results"
|
|
],
|
|
"checksums": {
|
|
"sha1": "1a376d3e710590ef2c48748a546369755f0a7c97"
|
|
}
|
|
},
|
|
"stew": {
|
|
"version": "0.5.0",
|
|
"vcsRevision": "4382b18f04b3c43c8409bfcd6b62063773b2bbaa",
|
|
"url": "https://github.com/status-im/nim-stew",
|
|
"downloadMethod": "git",
|
|
"dependencies": [
|
|
"nim",
|
|
"results",
|
|
"unittest2"
|
|
],
|
|
"checksums": {
|
|
"sha1": "db22942939773ab7d5a0f2b2668c237240c67dd6"
|
|
}
|
|
},
|
|
"zlib": {
|
|
"version": "0.1.0",
|
|
"vcsRevision": "e680f269fb01af2c34a2ba879ff281795a5258fe",
|
|
"url": "https://github.com/status-im/nim-zlib",
|
|
"downloadMethod": "git",
|
|
"dependencies": [
|
|
"nim",
|
|
"stew",
|
|
"results"
|
|
],
|
|
"checksums": {
|
|
"sha1": "bbde4f5a97a84b450fef7d107461e5f35cf2b47f"
|
|
}
|
|
},
|
|
"httputils": {
|
|
"version": "0.4.1",
|
|
"vcsRevision": "f142cb2e8bd812dd002a6493b6082827bb248592",
|
|
"url": "https://github.com/status-im/nim-http-utils",
|
|
"downloadMethod": "git",
|
|
"dependencies": [
|
|
"nim",
|
|
"stew",
|
|
"results",
|
|
"unittest2"
|
|
],
|
|
"checksums": {
|
|
"sha1": "016774ab31c3afff9a423f7d80584905ee59c570"
|
|
}
|
|
},
|
|
"chronos": {
|
|
"version": "4.2.2",
|
|
"vcsRevision": "45f43a9ad8bd8bcf5903b42f365c1c879bd54240",
|
|
"url": "https://github.com/status-im/nim-chronos",
|
|
"downloadMethod": "git",
|
|
"dependencies": [
|
|
"nim",
|
|
"results",
|
|
"stew",
|
|
"bearssl",
|
|
"httputils",
|
|
"unittest2"
|
|
],
|
|
"checksums": {
|
|
"sha1": "3a4c9477df8cef20a04e4f1b54a2d74fdfc2a3d0"
|
|
}
|
|
},
|
|
"metrics": {
|
|
"version": "0.2.1",
|
|
"vcsRevision": "a1296caf3ebb5f30f51a5feae7749a30df2824c2",
|
|
"url": "https://github.com/status-im/nim-metrics",
|
|
"downloadMethod": "git",
|
|
"dependencies": [
|
|
"nim",
|
|
"chronos",
|
|
"results",
|
|
"stew"
|
|
],
|
|
"checksums": {
|
|
"sha1": "84bb09873d7677c06046f391c7b473cd2fcff8a2"
|
|
}
|
|
},
|
|
"faststreams": {
|
|
"version": "0.5.0",
|
|
"vcsRevision": "ce27581a3e881f782f482cb66dc5b07a02bd615e",
|
|
"url": "https://github.com/status-im/nim-faststreams",
|
|
"downloadMethod": "git",
|
|
"dependencies": [
|
|
"nim",
|
|
"stew",
|
|
"unittest2"
|
|
],
|
|
"checksums": {
|
|
"sha1": "ee61e507b805ae1df7ec936f03f2d101b0d72383"
|
|
}
|
|
},
|
|
"snappy": {
|
|
"version": "0.1.0",
|
|
"vcsRevision": "00bfcef94f8ef6981df5d5b994897f6695badfb2",
|
|
"url": "https://github.com/status-im/nim-snappy",
|
|
"downloadMethod": "git",
|
|
"dependencies": [
|
|
"nim",
|
|
"faststreams",
|
|
"unittest2",
|
|
"results",
|
|
"stew"
|
|
],
|
|
"checksums": {
|
|
"sha1": "e572d60d6a3178c5b1cde2400c51ad771812cd3d"
|
|
}
|
|
},
|
|
"serialization": {
|
|
"version": "0.5.2",
|
|
"vcsRevision": "b0f2fa32960ea532a184394b0f27be37bd80248b",
|
|
"url": "https://github.com/status-im/nim-serialization",
|
|
"downloadMethod": "git",
|
|
"dependencies": [
|
|
"nim",
|
|
"faststreams",
|
|
"unittest2",
|
|
"stew"
|
|
],
|
|
"checksums": {
|
|
"sha1": "fa35c1bb76a0a02a2379fe86eaae0957c7527cb8"
|
|
}
|
|
},
|
|
"toml_serialization": {
|
|
"version": "0.2.18",
|
|
"vcsRevision": "b5b387e6fb2a7cc75d54a269b07cc6218361bd46",
|
|
"url": "https://github.com/status-im/nim-toml-serialization",
|
|
"downloadMethod": "git",
|
|
"dependencies": [
|
|
"nim",
|
|
"faststreams",
|
|
"serialization",
|
|
"stew"
|
|
],
|
|
"checksums": {
|
|
"sha1": "76ae1c2af5dd092849b41750ff29217980dc9ca3"
|
|
}
|
|
},
|
|
"confutils": {
|
|
"version": "0.1.0",
|
|
"vcsRevision": "7728f6bd81a1eedcfe277d02ea85fdb805bcc05a",
|
|
"url": "https://github.com/status-im/nim-confutils",
|
|
"downloadMethod": "git",
|
|
"dependencies": [
|
|
"nim",
|
|
"stew",
|
|
"serialization",
|
|
"results"
|
|
],
|
|
"checksums": {
|
|
"sha1": "8bc8c30b107fdba73b677e5f257c6c42ae1cdc8e"
|
|
}
|
|
},
|
|
"cbor_serialization": {
|
|
"version": "0.3.0",
|
|
"vcsRevision": "1664160e04d153573373afddc552b9cbf6fbe4dc",
|
|
"url": "https://github.com/vacp2p/nim-cbor-serialization",
|
|
"downloadMethod": "git",
|
|
"dependencies": [
|
|
"nim",
|
|
"serialization",
|
|
"stew",
|
|
"results"
|
|
],
|
|
"checksums": {
|
|
"sha1": "ab126eae09a6e39c72972a6a0b83cb06a2ffe8f0"
|
|
}
|
|
},
|
|
"json_serialization": {
|
|
"version": "0.4.4",
|
|
"vcsRevision": "c343b0e243d9e17e2c40f3a8a24340f7c4a71d44",
|
|
"url": "https://github.com/status-im/nim-json-serialization",
|
|
"downloadMethod": "git",
|
|
"dependencies": [
|
|
"nim",
|
|
"faststreams",
|
|
"serialization",
|
|
"stew",
|
|
"results"
|
|
],
|
|
"checksums": {
|
|
"sha1": "8b3115354104858a0ac9019356fb29720529c2bd"
|
|
}
|
|
},
|
|
"chronicles": {
|
|
"version": "0.12.2",
|
|
"vcsRevision": "27ec507429a4eb81edc20f28292ee8ec420be05b",
|
|
"url": "https://github.com/status-im/nim-chronicles",
|
|
"downloadMethod": "git",
|
|
"dependencies": [
|
|
"nim",
|
|
"faststreams",
|
|
"serialization",
|
|
"json_serialization",
|
|
"testutils"
|
|
],
|
|
"checksums": {
|
|
"sha1": "02febb20d088120b2836d3306cfa21f434f88f65"
|
|
}
|
|
},
|
|
"presto": {
|
|
"version": "0.1.1",
|
|
"vcsRevision": "d66043dd7ede146442e6c39720c76a20bde5225f",
|
|
"url": "https://github.com/status-im/nim-presto",
|
|
"downloadMethod": "git",
|
|
"dependencies": [
|
|
"nim",
|
|
"chronos",
|
|
"chronicles",
|
|
"metrics",
|
|
"results",
|
|
"stew"
|
|
],
|
|
"checksums": {
|
|
"sha1": "8df97c45683abe2337bdff43b844c4fbcc124ca2"
|
|
}
|
|
},
|
|
"brokers": {
|
|
"version": "#v2.0.1",
|
|
"vcsRevision": "2093ca4d50e581adda73fee7fd16231f990f4cbe",
|
|
"url": "https://github.com/NagyZoltanPeter/nim-brokers.git",
|
|
"downloadMethod": "git",
|
|
"dependencies": [
|
|
"nim",
|
|
"chronos",
|
|
"results",
|
|
"chronicles",
|
|
"testutils",
|
|
"cbor_serialization"
|
|
],
|
|
"checksums": {
|
|
"sha1": "cc74c987af94537e9d44d1b0143aa417299040c5"
|
|
}
|
|
},
|
|
"stint": {
|
|
"version": "0.8.2",
|
|
"vcsRevision": "470b7892561b5179ab20bd389a69217d6213fe58",
|
|
"url": "https://github.com/status-im/nim-stint",
|
|
"downloadMethod": "git",
|
|
"dependencies": [
|
|
"nim",
|
|
"stew",
|
|
"unittest2"
|
|
],
|
|
"checksums": {
|
|
"sha1": "d8f871fd617e7857192d4609fe003b48942a8ae5"
|
|
}
|
|
},
|
|
"minilru": {
|
|
"version": "0.1.0",
|
|
"vcsRevision": "6dd93feb60f4cded3c05e7af7209cf63fb677893",
|
|
"url": "https://github.com/status-im/nim-minilru",
|
|
"downloadMethod": "git",
|
|
"dependencies": [
|
|
"nim",
|
|
"results",
|
|
"unittest2"
|
|
],
|
|
"checksums": {
|
|
"sha1": "0be03a5da29fdd4409ea74a60fd0ccce882601b4"
|
|
}
|
|
},
|
|
"sqlite3_abi": {
|
|
"version": "3.53.0.0",
|
|
"vcsRevision": "8240e8e2819dfce1b67fa2733135d01b5cc80ae0",
|
|
"url": "https://github.com/arnetheduck/nim-sqlite3-abi",
|
|
"downloadMethod": "git",
|
|
"dependencies": [
|
|
"nim"
|
|
],
|
|
"checksums": {
|
|
"sha1": "fb7a6e6f36fc4eb4dfa6634dbcbf5cd0dfd0ebf0"
|
|
}
|
|
},
|
|
"dnsclient": {
|
|
"version": "0.3.4",
|
|
"vcsRevision": "23214235d4784d24aceed99bbfe153379ea557c8",
|
|
"url": "https://github.com/ba0f3/dnsclient.nim",
|
|
"downloadMethod": "git",
|
|
"dependencies": [
|
|
"nim"
|
|
],
|
|
"checksums": {
|
|
"sha1": "65262c7e533ff49d6aca5539da4bc6c6ce132f40"
|
|
}
|
|
},
|
|
"unicodedb": {
|
|
"version": "0.13.2",
|
|
"vcsRevision": "66f2458710dc641dd4640368f9483c8a0ec70561",
|
|
"url": "https://github.com/nitely/nim-unicodedb",
|
|
"downloadMethod": "git",
|
|
"dependencies": [
|
|
"nim"
|
|
],
|
|
"checksums": {
|
|
"sha1": "739102d885d99bb4571b1955f5f12aee423c935b"
|
|
}
|
|
},
|
|
"regex": {
|
|
"version": "0.26.3",
|
|
"vcsRevision": "4593305ed1e49731fc75af1dc572dd2559aad19c",
|
|
"url": "https://github.com/nitely/nim-regex",
|
|
"downloadMethod": "git",
|
|
"dependencies": [
|
|
"nim",
|
|
"unicodedb"
|
|
],
|
|
"checksums": {
|
|
"sha1": "4d24e7d7441137cd202e16f2359a5807ddbdc31f"
|
|
}
|
|
},
|
|
"nimcrypto": {
|
|
"version": "0.6.4",
|
|
"vcsRevision": "721fb99ee099b632eb86dfad1f0d96ee87583774",
|
|
"url": "https://github.com/cheatfate/nimcrypto",
|
|
"downloadMethod": "git",
|
|
"dependencies": [
|
|
"nim"
|
|
],
|
|
"checksums": {
|
|
"sha1": "f9ab24fa940ed03d0fb09729a7303feb50b7eaec"
|
|
}
|
|
},
|
|
"websock": {
|
|
"version": "0.3.0",
|
|
"vcsRevision": "c105d98e6522e0e2cbe3dfa11b07a273e9fd0e7b",
|
|
"url": "https://github.com/status-im/nim-websock",
|
|
"downloadMethod": "git",
|
|
"dependencies": [
|
|
"nim",
|
|
"chronos",
|
|
"httputils",
|
|
"chronicles",
|
|
"stew",
|
|
"nimcrypto",
|
|
"bearssl",
|
|
"results",
|
|
"zlib"
|
|
],
|
|
"checksums": {
|
|
"sha1": "1294a66520fa4541e261dec8a6a84f774fb8c0ac"
|
|
}
|
|
},
|
|
"json_rpc": {
|
|
"version": "#43bbf499143eb45046c83ac9794c9e3280a2b8e7",
|
|
"vcsRevision": "43bbf499143eb45046c83ac9794c9e3280a2b8e7",
|
|
"url": "https://github.com/status-im/nim-json-rpc.git",
|
|
"downloadMethod": "git",
|
|
"dependencies": [
|
|
"nim",
|
|
"stew",
|
|
"nimcrypto",
|
|
"stint",
|
|
"chronos",
|
|
"httputils",
|
|
"chronicles",
|
|
"websock",
|
|
"serialization",
|
|
"json_serialization",
|
|
"unittest2"
|
|
],
|
|
"checksums": {
|
|
"sha1": "30ff6ead115b88c79862c5c7e37b1c9852eea59f"
|
|
}
|
|
},
|
|
"lsquic": {
|
|
"version": "0.0.1",
|
|
"vcsRevision": "4fb03ee7bfb39aecb3316889fdcb60bec3d0936f",
|
|
"url": "https://github.com/vacp2p/nim-lsquic",
|
|
"downloadMethod": "git",
|
|
"dependencies": [
|
|
"nim",
|
|
"zlib",
|
|
"stew",
|
|
"chronos",
|
|
"nimcrypto",
|
|
"unittest2",
|
|
"chronicles"
|
|
],
|
|
"checksums": {
|
|
"sha1": "f465fa994346490d0924d162f53d9b5aec62f948"
|
|
}
|
|
},
|
|
"secp256k1": {
|
|
"version": "0.6.0.3.2",
|
|
"vcsRevision": "d8f1288b7c72f00be5fc2c5ea72bf5cae1eafb15",
|
|
"url": "https://github.com/status-im/nim-secp256k1",
|
|
"downloadMethod": "git",
|
|
"dependencies": [
|
|
"nim",
|
|
"stew",
|
|
"results",
|
|
"nimcrypto"
|
|
],
|
|
"checksums": {
|
|
"sha1": "6618ef9de17121846a8c1d0317026b0ce8584e10"
|
|
}
|
|
},
|
|
"eth": {
|
|
"version": "0.9.0",
|
|
"vcsRevision": "d9135e6c3c5d6d819afdfb566aa8d958756b73a8",
|
|
"url": "https://github.com/status-im/nim-eth",
|
|
"downloadMethod": "git",
|
|
"dependencies": [
|
|
"nim",
|
|
"nimcrypto",
|
|
"stint",
|
|
"secp256k1",
|
|
"chronos",
|
|
"chronicles",
|
|
"stew",
|
|
"nat_traversal",
|
|
"metrics",
|
|
"sqlite3_abi",
|
|
"confutils",
|
|
"testutils",
|
|
"unittest2",
|
|
"results",
|
|
"minilru",
|
|
"snappy"
|
|
],
|
|
"checksums": {
|
|
"sha1": "2e01b0cfff9523d110562af70d19948280f8013e"
|
|
}
|
|
},
|
|
"web3": {
|
|
"version": "0.8.0",
|
|
"vcsRevision": "cdfe5601d2812a58e54faf53ee634452d01e5918",
|
|
"url": "https://github.com/status-im/nim-web3",
|
|
"downloadMethod": "git",
|
|
"dependencies": [
|
|
"nim",
|
|
"chronicles",
|
|
"chronos",
|
|
"bearssl",
|
|
"eth",
|
|
"faststreams",
|
|
"json_rpc",
|
|
"serialization",
|
|
"json_serialization",
|
|
"nimcrypto",
|
|
"stew",
|
|
"stint",
|
|
"results"
|
|
],
|
|
"checksums": {
|
|
"sha1": "26a112af032ef1536f97da2ca7364af618a11b80"
|
|
}
|
|
},
|
|
"dnsdisc": {
|
|
"version": "0.1.0",
|
|
"vcsRevision": "38f2e0f52c0a8f032ef4530835e519d550706d9e",
|
|
"url": "https://github.com/status-im/nim-dnsdisc",
|
|
"downloadMethod": "git",
|
|
"dependencies": [
|
|
"nim",
|
|
"bearssl",
|
|
"chronicles",
|
|
"chronos",
|
|
"eth",
|
|
"secp256k1",
|
|
"stew",
|
|
"testutils",
|
|
"unittest2",
|
|
"nimcrypto",
|
|
"results"
|
|
],
|
|
"checksums": {
|
|
"sha1": "055b882a0f6b1d1e57a25a7af99d2e5ac6268154"
|
|
}
|
|
},
|
|
"libp2p": {
|
|
"version": "#ff8d51857b4b79a68468e7bcc27b2026cca02996",
|
|
"vcsRevision": "ff8d51857b4b79a68468e7bcc27b2026cca02996",
|
|
"url": "https://github.com/vacp2p/nim-libp2p.git",
|
|
"downloadMethod": "git",
|
|
"dependencies": [
|
|
"nim",
|
|
"nimcrypto",
|
|
"dnsclient",
|
|
"bearssl",
|
|
"chronicles",
|
|
"chronos",
|
|
"metrics",
|
|
"secp256k1",
|
|
"stew",
|
|
"websock",
|
|
"unittest2",
|
|
"results",
|
|
"serialization",
|
|
"lsquic",
|
|
"jwt"
|
|
],
|
|
"checksums": {
|
|
"sha1": "fa2a7552c6ec860717b77ce34cf0b7afe4570234"
|
|
}
|
|
},
|
|
"taskpools": {
|
|
"version": "0.1.0",
|
|
"vcsRevision": "9e8ccc754631ac55ac2fd495e167e74e86293edb",
|
|
"url": "https://github.com/status-im/nim-taskpools",
|
|
"downloadMethod": "git",
|
|
"dependencies": [
|
|
"nim"
|
|
],
|
|
"checksums": {
|
|
"sha1": "09e1b2fdad55b973724d61227971afc0df0b7a81"
|
|
}
|
|
},
|
|
"sds": {
|
|
"version": "#2e9a7683f0e180bf112135fae3a3803eed8490d4",
|
|
"vcsRevision": "2e9a7683f0e180bf112135fae3a3803eed8490d4",
|
|
"url": "https://github.com/logos-messaging/nim-sds.git",
|
|
"downloadMethod": "git",
|
|
"dependencies": [
|
|
"nim",
|
|
"chronos",
|
|
"libp2p",
|
|
"chronicles",
|
|
"stew",
|
|
"stint",
|
|
"metrics",
|
|
"results",
|
|
"taskpools"
|
|
],
|
|
"checksums": {
|
|
"sha1": "d13f1bf8d1b90b27e9edfc063b043831242cda19"
|
|
}
|
|
},
|
|
"ffi": {
|
|
"version": "0.1.3",
|
|
"vcsRevision": "06111de155253b34e47ed2aaed1d61d08d62cc1b",
|
|
"url": "https://github.com/logos-messaging/nim-ffi",
|
|
"downloadMethod": "git",
|
|
"dependencies": [
|
|
"nim",
|
|
"chronos",
|
|
"chronicles",
|
|
"taskpools"
|
|
],
|
|
"checksums": {
|
|
"sha1": "6f9d49375ea1dc71add55c72ac80a808f238e5b0"
|
|
}
|
|
}
|
|
},
|
|
"tasks": {}
|
|
}
|