Skip to content

feat(koin-exposed): add Koin bridge for TransactionalProxy auto-registration - #30

Merged
Ziedelth merged 4 commits into
masterfrom
feat/koin-exposed-module
Sep 3, 2026
Merged

feat(koin-exposed): add Koin bridge for TransactionalProxy auto-registration#30
Ziedelth merged 4 commits into
masterfrom
feat/koin-exposed-module

Conversation

@Ziedelth

@Ziedelth Ziedelth commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Add the koin-exposed module exposing applyTransactionalProxies(), a runtime post-processor that swaps Koin singleton definitions whose primary type implements exactly one @Transactional interface with lazy TransactionalProxy factories.

…tration

Add the koin-exposed module exposing applyTransactionalProxies(), a runtime
post-processor that swaps Koin singleton definitions whose primary type
implements exactly one @transactional interface with lazy TransactionalProxy
factories, so consumers stop declaring proxy bindings manually.

The module depends on exposed and the koin carrier, is documented in the root
AGENTS.md, the architecture guide and its own AGENTS.md, and is tested against
Koin 4.2.2 internal registry APIs (with the compiler plugin strict-safety flags
scoped to this module's tests).
…ument casts

Stop re-publishing the Koin BOM/core: koin-exposed now depends on the exposed
module and the koin carrier with api(...) so consumers get exactly one Koin
surface and the module only adds applyTransactionalProxies. Replace inline
fully-qualified extension references with imports. Reduce unchecked casts to
the unavoidable registry erasure points, each with a comment explaining why it
is safe, and add explanatory comments on the non-obvious parts (scan-then-
mutate, double-checked locking, drop delegation, qualifier fallback).
…tension, hoist test fixtures

Replace api(project(...)) with implementation(...): consumers needing exposed
or Koin declare those modules directly, so koin-exposed must not re-expose
them. Import KoinGradleExtension at the top of the build script instead of
using the fully-qualified name inline. Move every test fixture (interfaces and
implementations) to the top of the parent test class, before the @nested
groups, and encode the convention in the testing guide.
…sor comments

Keep single-annotation declarations on one line (@volatile private var
cached) and remove comments that restate trivial accessor chains: the
function name already conveys the behavior. Encode both conventions in the
code style guide.
@Ziedelth
Ziedelth merged commit b463e27 into master Sep 3, 2026
2 checks passed
@Ziedelth
Ziedelth deleted the feat/koin-exposed-module branch September 3, 2026 07:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant