From 83ab2e49f440ad3d05768423058278f38b2f8fb6 Mon Sep 17 00:00:00 2001 From: runner Date: Mon, 15 Apr 2024 13:08:05 +0000 Subject: [PATCH] Publish 1.1.0 documentation --- 1.1.0/404.html | 1 + 1.1.0/_data/gradle.yml | 4 + 1.1.0/about/how-it-works/index.html | 30 + 1.1.0/about/license/index.html | 14 + 1.1.0/assets/images/favicon.png | Bin 0 -> 1870 bytes .../assets/javascripts/bundle.b78d2936.min.js | 29 + .../javascripts/bundle.b78d2936.min.js.map | 8 + .../javascripts/lunr/min/lunr.ar.min.js | 1 + .../javascripts/lunr/min/lunr.da.min.js | 18 + .../javascripts/lunr/min/lunr.de.min.js | 18 + .../javascripts/lunr/min/lunr.du.min.js | 18 + .../javascripts/lunr/min/lunr.es.min.js | 18 + .../javascripts/lunr/min/lunr.fi.min.js | 18 + .../javascripts/lunr/min/lunr.fr.min.js | 18 + .../javascripts/lunr/min/lunr.hi.min.js | 1 + .../javascripts/lunr/min/lunr.hu.min.js | 18 + .../javascripts/lunr/min/lunr.it.min.js | 18 + .../javascripts/lunr/min/lunr.ja.min.js | 1 + .../javascripts/lunr/min/lunr.jp.min.js | 1 + .../javascripts/lunr/min/lunr.ko.min.js | 1 + .../javascripts/lunr/min/lunr.multi.min.js | 1 + .../javascripts/lunr/min/lunr.nl.min.js | 18 + .../javascripts/lunr/min/lunr.no.min.js | 18 + .../javascripts/lunr/min/lunr.pt.min.js | 18 + .../javascripts/lunr/min/lunr.ro.min.js | 18 + .../javascripts/lunr/min/lunr.ru.min.js | 18 + .../lunr/min/lunr.stemmer.support.min.js | 1 + .../javascripts/lunr/min/lunr.sv.min.js | 18 + .../javascripts/lunr/min/lunr.ta.min.js | 1 + .../javascripts/lunr/min/lunr.th.min.js | 1 + .../javascripts/lunr/min/lunr.tr.min.js | 18 + .../javascripts/lunr/min/lunr.vi.min.js | 1 + .../javascripts/lunr/min/lunr.zh.min.js | 1 + 1.1.0/assets/javascripts/lunr/tinyseg.js | 206 + 1.1.0/assets/javascripts/lunr/wordcut.js | 6708 +++++++++++++++++ .../workers/search.208ed371.min.js | 42 + .../workers/search.208ed371.min.js.map | 8 + .../assets/stylesheets/main.402914a4.min.css | 1 + .../stylesheets/main.402914a4.min.css.map | 1 + .../stylesheets/palette.a0c5b2b5.min.css | 1 + .../stylesheets/palette.a0c5b2b5.min.css.map | 1 + 1.1.0/getting-started/index.html | 58 + 1.1.0/index.html | 13 + 1.1.0/integrations/androidx/room/index.html | 17 + .../androidx/viewmodel/index.html | 9 + 1.1.0/integrations/ktorfit/index.html | 43 + 1.1.0/integrations/retrofit/index.html | 44 + 1.1.0/limitations/index.html | 13 + 1.1.0/search/search_index.json | 1 + 1.1.0/sitemap.xml | 63 + 1.1.0/sitemap.xml.gz | Bin 0 -> 330 bytes 1.1.0/stylesheets/extra.css | 4 + 1.1.0/usage/auto-bind/index.html | 58 + 1.1.0/usage/auto-initialize/index.html | 32 + 1.1.0/usage/replaces/index.html | 17 + dokka/core/index.html | 8 +- dokka/core/navigation.html | 157 +- .../-auto-bind-into-map/as-types.html | 10 +- .../-auto-bind-into-map/bind-generic-as.html | 10 +- .../-auto-bind-into-map/in-component.html | 10 +- .../-auto-bind-into-map/index.html | 16 +- .../-auto-bind-into-set/as-types.html | 10 +- .../-auto-bind-into-set/bind-generic-as.html | 10 +- .../-auto-bind-into-set/in-component.html | 10 +- .../-auto-bind-into-set/index.html | 16 +- .../-auto-bind/as-types.html | 10 +- .../-auto-bind/in-component.html | 10 +- .../-auto-bind/index.html | 14 +- .../-auto-dagger-initializer.html | 10 +- .../-auto-dagger-initializer/index.html | 16 +- .../-auto-dagger-initializer/initialize.html | 10 +- .../is-initialized.html | 10 +- .../-companion/default-priority.html | 10 +- .../-auto-initialize/-companion/index.html | 10 +- .../-auto-initialize/index.html | 12 +- .../-auto-initialize/priority.html | 10 +- .../-bind-generic-as/-default/index.html | 12 +- .../-bind-generic-as/-default/value.html | 10 +- .../-exact-type-and-wildcard/index.html | 12 +- .../-bind-generic-as/-exact-type/index.html | 12 +- .../-bind-generic-as/-wildcard/index.html | 12 +- .../-bind-generic-as/entries.html | 10 +- .../-bind-generic-as/index.html | 20 +- .../-bind-generic-as/value-of.html | 10 +- .../-bind-generic-as/values.html | 10 +- .../-companion/as-initializable.html | 10 +- .../-initializable/-companion/index.html | 20 +- .../-companion/with-priority.html | 10 +- .../-initializable/index.html | 14 +- .../-initializable/initialize.html | 10 +- dokka/core/se.ansman.dagger.auto/index.html | 18 +- dokka/images/homepage.svg | 3 + dokka/index.html | 29 +- dokka/navigation.html | 157 +- dokka/older/1.0.0/android/index.html | 6 +- .../-auto-dagger-startup-initializer.html | 6 +- .../create.html | 6 +- .../dependencies.html | 6 +- .../index.html | 6 +- .../se.ansman.dagger.auto.android/index.html | 6 +- dokka/older/1.0.0/android/testing/index.html | 6 +- .../-replaces/index.html | 6 +- .../-replaces/type.html | 6 +- .../index.html | 6 +- dokka/older/1.0.0/androidx/room/index.html | 6 +- .../-auto-provide-daos/in-component.html | 6 +- .../-auto-provide-daos/index.html | 6 +- .../index.html | 6 +- .../older/1.0.0/androidx/viewmodel/index.html | 6 +- .../index.html | 6 +- .../provide-view-model-scope.html | 6 +- .../-view-model-specific/index.html | 6 +- .../index.html | 6 +- dokka/older/1.0.0/core/index.html | 6 +- .../-auto-bind-into-map/as-types.html | 6 +- .../-auto-bind-into-map/bind-generic-as.html | 6 +- .../-auto-bind-into-map/in-component.html | 6 +- .../-auto-bind-into-map/index.html | 6 +- .../-auto-bind-into-set/as-types.html | 6 +- .../-auto-bind-into-set/bind-generic-as.html | 6 +- .../-auto-bind-into-set/in-component.html | 6 +- .../-auto-bind-into-set/index.html | 6 +- .../-auto-bind/as-types.html | 6 +- .../-auto-bind/in-component.html | 6 +- .../-auto-bind/index.html | 6 +- .../-auto-dagger-initializer.html | 6 +- .../-auto-dagger-initializer/index.html | 6 +- .../-auto-dagger-initializer/initialize.html | 6 +- .../is-initialized.html | 6 +- .../-companion/default-priority.html | 6 +- .../-auto-initialize/-companion/index.html | 6 +- .../-auto-initialize/index.html | 6 +- .../-auto-initialize/priority.html | 6 +- .../-bind-generic-as/-default/index.html | 6 +- .../-bind-generic-as/-default/value.html | 6 +- .../-exact-type-and-wildcard/index.html | 6 +- .../-bind-generic-as/-exact-type/index.html | 6 +- .../-bind-generic-as/-wildcard/index.html | 6 +- .../-bind-generic-as/entries.html | 6 +- .../-bind-generic-as/index.html | 6 +- .../-bind-generic-as/value-of.html | 6 +- .../-bind-generic-as/values.html | 6 +- .../-companion/as-initializable.html | 6 +- .../-initializable/-companion/index.html | 6 +- .../-companion/with-priority.html | 6 +- .../-initializable/index.html | 6 +- .../-initializable/initialize.html | 6 +- .../core/se.ansman.dagger.auto/index.html | 6 +- dokka/older/1.0.0/index.html | 6 +- dokka/older/1.0.0/retrofit/index.html | 6 +- .../-auto-provide-service/in-component.html | 6 +- .../-auto-provide-service/index.html | 6 +- .../se.ansman.dagger.auto.retrofit/index.html | 6 +- dokka/older/1.1.0/core/index.html | 101 + dokka/older/1.1.0/core/navigation.html | 173 + .../-auto-bind-into-map/as-types.html | 82 + .../-auto-bind-into-map/bind-generic-as.html | 82 + .../-auto-bind-into-map/in-component.html | 82 + .../-auto-bind-into-map/index.html | 136 + .../-auto-bind-into-set/as-types.html | 82 + .../-auto-bind-into-set/bind-generic-as.html | 82 + .../-auto-bind-into-set/in-component.html | 82 + .../-auto-bind-into-set/index.html | 136 + .../-auto-bind/as-types.html | 82 + .../-auto-bind/in-component.html | 82 + .../-auto-bind/index.html | 121 + .../-auto-dagger-initializer.html | 82 + .../-auto-dagger-initializer/index.html | 159 + .../-auto-dagger-initializer/initialize.html | 82 + .../is-initialized.html | 82 + .../-companion/default-priority.html | 82 + .../-auto-initialize/-companion/index.html | 106 + .../-auto-initialize/index.html | 125 + .../-auto-initialize/priority.html | 82 + .../-bind-generic-as/-default/index.html | 106 + .../-bind-generic-as/-default/value.html | 82 + .../-exact-type-and-wildcard/index.html | 121 + .../-bind-generic-as/-exact-type/index.html | 121 + .../-bind-generic-as/-wildcard/index.html | 121 + .../-bind-generic-as/entries.html | 82 + .../-bind-generic-as/index.html | 238 + .../-bind-generic-as/value-of.html | 82 + .../-bind-generic-as/values.html | 82 + .../-companion/as-initializable.html | 82 + .../-initializable/-companion/index.html | 121 + .../-companion/with-priority.html | 82 + .../-initializable/index.html | 140 + .../-initializable/initialize.html | 82 + .../core/se.ansman.dagger.auto/index.html | 195 + .../older/1.1.0/images/anchor-copy-button.svg | 8 + dokka/older/1.1.0/images/arrow_down.svg | 7 + dokka/older/1.1.0/images/burger.svg | 9 + dokka/older/1.1.0/images/copy-icon.svg | 7 + .../1.1.0/images/copy-successful-icon.svg | 7 + .../older/1.1.0/images/footer-go-to-link.svg | 7 + dokka/older/1.1.0/images/go-to-top-icon.svg | 8 + dokka/older/1.1.0/images/homepage.svg | 3 + dokka/older/1.1.0/images/logo-icon.svg | 14 + .../nav-icons/abstract-class-kotlin.svg | 26 + .../1.1.0/images/nav-icons/abstract-class.svg | 20 + .../images/nav-icons/annotation-kotlin.svg | 13 + .../1.1.0/images/nav-icons/annotation.svg | 7 + .../1.1.0/images/nav-icons/class-kotlin.svg | 13 + dokka/older/1.1.0/images/nav-icons/class.svg | 7 + .../1.1.0/images/nav-icons/enum-kotlin.svg | 13 + dokka/older/1.1.0/images/nav-icons/enum.svg | 7 + .../images/nav-icons/exception-class.svg | 7 + .../1.1.0/images/nav-icons/field-value.svg | 10 + .../1.1.0/images/nav-icons/field-variable.svg | 10 + .../older/1.1.0/images/nav-icons/function.svg | 7 + .../images/nav-icons/interface-kotlin.svg | 13 + .../1.1.0/images/nav-icons/interface.svg | 7 + dokka/older/1.1.0/images/nav-icons/object.svg | 13 + .../images/nav-icons/typealias-kotlin.svg | 13 + dokka/older/1.1.0/images/theme-toggle.svg | 7 + dokka/older/1.1.0/index.html | 157 + dokka/older/1.1.0/navigation.html | 173 + dokka/older/1.1.0/not-found-version.html | 182 + dokka/older/1.1.0/package-list | 17 + dokka/older/1.1.0/scripts/clipboard.js | 56 + dokka/older/1.1.0/scripts/main.js | 44 + .../older/1.1.0/scripts/navigation-loader.js | 95 + dokka/older/1.1.0/scripts/pages.json | 1 + .../1.1.0/scripts/platform-content-handler.js | 400 + dokka/older/1.1.0/scripts/prism.js | 22 + .../1.1.0/scripts/sourceset_dependencies.js | 1 + .../symbol-parameters-wrapper_deferred.js | 64 + .../older/1.1.0/styles/font-jb-sans-auto.css | 36 + dokka/older/1.1.0/styles/logo-styles.css | 9 + dokka/older/1.1.0/styles/main.css | 124 + dokka/older/1.1.0/styles/multimodule.css | 55 + dokka/older/1.1.0/styles/prism.css | 217 + dokka/older/1.1.0/styles/style.css | 1509 ++++ .../1.1.0/third-party/android/index.html | 101 + .../1.1.0/third-party/android/navigation.html | 173 + .../-auto-dagger-startup-initializer.html | 82 + .../create.html | 82 + .../dependencies.html | 82 + .../index.html | 140 + .../se.ansman.dagger.auto.android/index.html | 105 + .../third-party/android/testing/index.html | 101 + .../android/testing/navigation.html | 173 + .../-replaces/index.html | 106 + .../-replaces/type.html | 82 + .../index.html | 105 + .../third-party/androidx/room/index.html | 101 + .../third-party/androidx/room/navigation.html | 173 + .../-auto-provide-daos/in-component.html | 82 + .../-auto-provide-daos/index.html | 106 + .../index.html | 105 + .../third-party/androidx/viewmodel/index.html | 101 + .../androidx/viewmodel/navigation.html | 173 + .../index.html | 106 + .../provide-view-model-scope.html | 82 + .../-view-model-specific/index.html | 86 + .../index.html | 120 + .../1.1.0/third-party/ktorfit/index.html | 101 + .../1.1.0/third-party/ktorfit/navigation.html | 173 + .../-auto-provide-service/in-component.html | 82 + .../-auto-provide-service/index.html | 106 + .../se.ansman.dagger.auto.ktorfit/index.html | 105 + .../1.1.0/third-party/retrofit/index.html | 101 + .../third-party/retrofit/navigation.html | 173 + .../-auto-provide-service/in-component.html | 82 + .../-auto-provide-service/index.html | 106 + .../se.ansman.dagger.auto.retrofit/index.html | 105 + dokka/older/1.1.0/version.json | 1 + dokka/package-list | 6 +- dokka/scripts/pages.json | 2 +- dokka/scripts/platform-content-handler.js | 45 +- dokka/scripts/sourceset_dependencies.js | 2 +- dokka/styles/main.css | 2 +- dokka/styles/style.css | 66 +- dokka/third-party/android/index.html | 100 + dokka/third-party/android/navigation.html | 172 + .../-auto-dagger-startup-initializer.html | 81 + .../create.html | 81 + .../dependencies.html | 81 + .../index.html | 139 + .../se.ansman.dagger.auto.android/index.html | 104 + dokka/third-party/android/testing/index.html | 100 + .../android/testing/navigation.html | 172 + .../-replaces/index.html | 105 + .../-replaces/type.html | 81 + .../index.html | 104 + dokka/third-party/androidx/room/index.html | 100 + .../third-party/androidx/room/navigation.html | 172 + .../-auto-provide-daos/in-component.html | 81 + .../-auto-provide-daos/index.html | 105 + .../index.html | 104 + .../third-party/androidx/viewmodel/index.html | 100 + .../androidx/viewmodel/navigation.html | 172 + .../index.html | 105 + .../provide-view-model-scope.html | 81 + .../-view-model-specific/index.html | 85 + .../index.html | 119 + dokka/third-party/ktorfit/index.html | 100 + dokka/third-party/ktorfit/navigation.html | 172 + .../-auto-provide-service/in-component.html | 81 + .../-auto-provide-service/index.html | 105 + .../se.ansman.dagger.auto.ktorfit/index.html | 104 + dokka/third-party/retrofit/index.html | 100 + dokka/third-party/retrofit/navigation.html | 172 + .../-auto-provide-service/in-component.html | 81 + .../-auto-provide-service/index.html | 105 + .../se.ansman.dagger.auto.retrofit/index.html | 104 + dokka/version.json | 2 +- latest/404.html | 2 +- latest/_data/gradle.yml | 6 +- latest/about/how-it-works/index.html | 2 +- latest/about/license/index.html | 2 +- latest/getting-started/index.html | 38 +- latest/index.html | 2 +- latest/integrations/androidx/room/index.html | 8 +- .../androidx/viewmodel/index.html | 4 +- latest/integrations/ktorfit/index.html | 43 + latest/integrations/retrofit/index.html | 8 +- latest/limitations/index.html | 2 +- latest/search/search_index.json | 2 +- latest/sitemap.xml | 27 +- latest/sitemap.xml.gz | Bin 323 -> 330 bytes latest/usage/auto-bind/index.html | 2 +- latest/usage/auto-initialize/index.html | 2 +- latest/usage/replaces/index.html | 2 +- versions.json | 2 +- 325 files changed, 23309 insertions(+), 444 deletions(-) create mode 100644 1.1.0/404.html create mode 100644 1.1.0/_data/gradle.yml create mode 100644 1.1.0/about/how-it-works/index.html create mode 100644 1.1.0/about/license/index.html create mode 100644 1.1.0/assets/images/favicon.png create mode 100644 1.1.0/assets/javascripts/bundle.b78d2936.min.js create mode 100644 1.1.0/assets/javascripts/bundle.b78d2936.min.js.map create mode 100644 1.1.0/assets/javascripts/lunr/min/lunr.ar.min.js create mode 100644 1.1.0/assets/javascripts/lunr/min/lunr.da.min.js create mode 100644 1.1.0/assets/javascripts/lunr/min/lunr.de.min.js create mode 100644 1.1.0/assets/javascripts/lunr/min/lunr.du.min.js create mode 100644 1.1.0/assets/javascripts/lunr/min/lunr.es.min.js create mode 100644 1.1.0/assets/javascripts/lunr/min/lunr.fi.min.js create mode 100644 1.1.0/assets/javascripts/lunr/min/lunr.fr.min.js create mode 100644 1.1.0/assets/javascripts/lunr/min/lunr.hi.min.js create mode 100644 1.1.0/assets/javascripts/lunr/min/lunr.hu.min.js create mode 100644 1.1.0/assets/javascripts/lunr/min/lunr.it.min.js create mode 100644 1.1.0/assets/javascripts/lunr/min/lunr.ja.min.js create mode 100644 1.1.0/assets/javascripts/lunr/min/lunr.jp.min.js create mode 100644 1.1.0/assets/javascripts/lunr/min/lunr.ko.min.js create mode 100644 1.1.0/assets/javascripts/lunr/min/lunr.multi.min.js create mode 100644 1.1.0/assets/javascripts/lunr/min/lunr.nl.min.js create mode 100644 1.1.0/assets/javascripts/lunr/min/lunr.no.min.js create mode 100644 1.1.0/assets/javascripts/lunr/min/lunr.pt.min.js create mode 100644 1.1.0/assets/javascripts/lunr/min/lunr.ro.min.js create mode 100644 1.1.0/assets/javascripts/lunr/min/lunr.ru.min.js create mode 100644 1.1.0/assets/javascripts/lunr/min/lunr.stemmer.support.min.js create mode 100644 1.1.0/assets/javascripts/lunr/min/lunr.sv.min.js create mode 100644 1.1.0/assets/javascripts/lunr/min/lunr.ta.min.js create mode 100644 1.1.0/assets/javascripts/lunr/min/lunr.th.min.js create mode 100644 1.1.0/assets/javascripts/lunr/min/lunr.tr.min.js create mode 100644 1.1.0/assets/javascripts/lunr/min/lunr.vi.min.js create mode 100644 1.1.0/assets/javascripts/lunr/min/lunr.zh.min.js create mode 100644 1.1.0/assets/javascripts/lunr/tinyseg.js create mode 100644 1.1.0/assets/javascripts/lunr/wordcut.js create mode 100644 1.1.0/assets/javascripts/workers/search.208ed371.min.js create mode 100644 1.1.0/assets/javascripts/workers/search.208ed371.min.js.map create mode 100644 1.1.0/assets/stylesheets/main.402914a4.min.css create mode 100644 1.1.0/assets/stylesheets/main.402914a4.min.css.map create mode 100644 1.1.0/assets/stylesheets/palette.a0c5b2b5.min.css create mode 100644 1.1.0/assets/stylesheets/palette.a0c5b2b5.min.css.map create mode 100644 1.1.0/getting-started/index.html create mode 100644 1.1.0/index.html create mode 100644 1.1.0/integrations/androidx/room/index.html create mode 100644 1.1.0/integrations/androidx/viewmodel/index.html create mode 100644 1.1.0/integrations/ktorfit/index.html create mode 100644 1.1.0/integrations/retrofit/index.html create mode 100644 1.1.0/limitations/index.html create mode 100644 1.1.0/search/search_index.json create mode 100644 1.1.0/sitemap.xml create mode 100644 1.1.0/sitemap.xml.gz create mode 100644 1.1.0/stylesheets/extra.css create mode 100644 1.1.0/usage/auto-bind/index.html create mode 100644 1.1.0/usage/auto-initialize/index.html create mode 100644 1.1.0/usage/replaces/index.html create mode 100644 dokka/images/homepage.svg create mode 100644 dokka/older/1.1.0/core/index.html create mode 100644 dokka/older/1.1.0/core/navigation.html create mode 100644 dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-bind-into-map/as-types.html create mode 100644 dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-bind-into-map/bind-generic-as.html create mode 100644 dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-bind-into-map/in-component.html create mode 100644 dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-bind-into-map/index.html create mode 100644 dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-bind-into-set/as-types.html create mode 100644 dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-bind-into-set/bind-generic-as.html create mode 100644 dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-bind-into-set/in-component.html create mode 100644 dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-bind-into-set/index.html create mode 100644 dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-bind/as-types.html create mode 100644 dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-bind/in-component.html create mode 100644 dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-bind/index.html create mode 100644 dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-dagger-initializer/-auto-dagger-initializer.html create mode 100644 dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-dagger-initializer/index.html create mode 100644 dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-dagger-initializer/initialize.html create mode 100644 dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-dagger-initializer/is-initialized.html create mode 100644 dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-initialize/-companion/default-priority.html create mode 100644 dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-initialize/-companion/index.html create mode 100644 dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-initialize/index.html create mode 100644 dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-initialize/priority.html create mode 100644 dokka/older/1.1.0/core/se.ansman.dagger.auto/-bind-generic-as/-default/index.html create mode 100644 dokka/older/1.1.0/core/se.ansman.dagger.auto/-bind-generic-as/-default/value.html create mode 100644 dokka/older/1.1.0/core/se.ansman.dagger.auto/-bind-generic-as/-exact-type-and-wildcard/index.html create mode 100644 dokka/older/1.1.0/core/se.ansman.dagger.auto/-bind-generic-as/-exact-type/index.html create mode 100644 dokka/older/1.1.0/core/se.ansman.dagger.auto/-bind-generic-as/-wildcard/index.html create mode 100644 dokka/older/1.1.0/core/se.ansman.dagger.auto/-bind-generic-as/entries.html create mode 100644 dokka/older/1.1.0/core/se.ansman.dagger.auto/-bind-generic-as/index.html create mode 100644 dokka/older/1.1.0/core/se.ansman.dagger.auto/-bind-generic-as/value-of.html create mode 100644 dokka/older/1.1.0/core/se.ansman.dagger.auto/-bind-generic-as/values.html create mode 100644 dokka/older/1.1.0/core/se.ansman.dagger.auto/-initializable/-companion/as-initializable.html create mode 100644 dokka/older/1.1.0/core/se.ansman.dagger.auto/-initializable/-companion/index.html create mode 100644 dokka/older/1.1.0/core/se.ansman.dagger.auto/-initializable/-companion/with-priority.html create mode 100644 dokka/older/1.1.0/core/se.ansman.dagger.auto/-initializable/index.html create mode 100644 dokka/older/1.1.0/core/se.ansman.dagger.auto/-initializable/initialize.html create mode 100644 dokka/older/1.1.0/core/se.ansman.dagger.auto/index.html create mode 100644 dokka/older/1.1.0/images/anchor-copy-button.svg create mode 100644 dokka/older/1.1.0/images/arrow_down.svg create mode 100644 dokka/older/1.1.0/images/burger.svg create mode 100644 dokka/older/1.1.0/images/copy-icon.svg create mode 100644 dokka/older/1.1.0/images/copy-successful-icon.svg create mode 100644 dokka/older/1.1.0/images/footer-go-to-link.svg create mode 100644 dokka/older/1.1.0/images/go-to-top-icon.svg create mode 100644 dokka/older/1.1.0/images/homepage.svg create mode 100644 dokka/older/1.1.0/images/logo-icon.svg create mode 100644 dokka/older/1.1.0/images/nav-icons/abstract-class-kotlin.svg create mode 100644 dokka/older/1.1.0/images/nav-icons/abstract-class.svg create mode 100644 dokka/older/1.1.0/images/nav-icons/annotation-kotlin.svg create mode 100644 dokka/older/1.1.0/images/nav-icons/annotation.svg create mode 100644 dokka/older/1.1.0/images/nav-icons/class-kotlin.svg create mode 100644 dokka/older/1.1.0/images/nav-icons/class.svg create mode 100644 dokka/older/1.1.0/images/nav-icons/enum-kotlin.svg create mode 100644 dokka/older/1.1.0/images/nav-icons/enum.svg create mode 100644 dokka/older/1.1.0/images/nav-icons/exception-class.svg create mode 100644 dokka/older/1.1.0/images/nav-icons/field-value.svg create mode 100644 dokka/older/1.1.0/images/nav-icons/field-variable.svg create mode 100644 dokka/older/1.1.0/images/nav-icons/function.svg create mode 100644 dokka/older/1.1.0/images/nav-icons/interface-kotlin.svg create mode 100644 dokka/older/1.1.0/images/nav-icons/interface.svg create mode 100644 dokka/older/1.1.0/images/nav-icons/object.svg create mode 100644 dokka/older/1.1.0/images/nav-icons/typealias-kotlin.svg create mode 100644 dokka/older/1.1.0/images/theme-toggle.svg create mode 100644 dokka/older/1.1.0/index.html create mode 100644 dokka/older/1.1.0/navigation.html create mode 100644 dokka/older/1.1.0/not-found-version.html create mode 100644 dokka/older/1.1.0/package-list create mode 100644 dokka/older/1.1.0/scripts/clipboard.js create mode 100644 dokka/older/1.1.0/scripts/main.js create mode 100644 dokka/older/1.1.0/scripts/navigation-loader.js create mode 100644 dokka/older/1.1.0/scripts/pages.json create mode 100644 dokka/older/1.1.0/scripts/platform-content-handler.js create mode 100644 dokka/older/1.1.0/scripts/prism.js create mode 100644 dokka/older/1.1.0/scripts/sourceset_dependencies.js create mode 100644 dokka/older/1.1.0/scripts/symbol-parameters-wrapper_deferred.js create mode 100644 dokka/older/1.1.0/styles/font-jb-sans-auto.css create mode 100644 dokka/older/1.1.0/styles/logo-styles.css create mode 100644 dokka/older/1.1.0/styles/main.css create mode 100644 dokka/older/1.1.0/styles/multimodule.css create mode 100644 dokka/older/1.1.0/styles/prism.css create mode 100644 dokka/older/1.1.0/styles/style.css create mode 100644 dokka/older/1.1.0/third-party/android/index.html create mode 100644 dokka/older/1.1.0/third-party/android/navigation.html create mode 100644 dokka/older/1.1.0/third-party/android/se.ansman.dagger.auto.android/-auto-dagger-startup-initializer/-auto-dagger-startup-initializer.html create mode 100644 dokka/older/1.1.0/third-party/android/se.ansman.dagger.auto.android/-auto-dagger-startup-initializer/create.html create mode 100644 dokka/older/1.1.0/third-party/android/se.ansman.dagger.auto.android/-auto-dagger-startup-initializer/dependencies.html create mode 100644 dokka/older/1.1.0/third-party/android/se.ansman.dagger.auto.android/-auto-dagger-startup-initializer/index.html create mode 100644 dokka/older/1.1.0/third-party/android/se.ansman.dagger.auto.android/index.html create mode 100644 dokka/older/1.1.0/third-party/android/testing/index.html create mode 100644 dokka/older/1.1.0/third-party/android/testing/navigation.html create mode 100644 dokka/older/1.1.0/third-party/android/testing/se.ansman.dagger.auto.android.testing/-replaces/index.html create mode 100644 dokka/older/1.1.0/third-party/android/testing/se.ansman.dagger.auto.android.testing/-replaces/type.html create mode 100644 dokka/older/1.1.0/third-party/android/testing/se.ansman.dagger.auto.android.testing/index.html create mode 100644 dokka/older/1.1.0/third-party/androidx/room/index.html create mode 100644 dokka/older/1.1.0/third-party/androidx/room/navigation.html create mode 100644 dokka/older/1.1.0/third-party/androidx/room/se.ansman.dagger.auto.androidx.room/-auto-provide-daos/in-component.html create mode 100644 dokka/older/1.1.0/third-party/androidx/room/se.ansman.dagger.auto.androidx.room/-auto-provide-daos/index.html create mode 100644 dokka/older/1.1.0/third-party/androidx/room/se.ansman.dagger.auto.androidx.room/index.html create mode 100644 dokka/older/1.1.0/third-party/androidx/viewmodel/index.html create mode 100644 dokka/older/1.1.0/third-party/androidx/viewmodel/navigation.html create mode 100644 dokka/older/1.1.0/third-party/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/-auto-dagger-view-model-coroutine-scope-component/index.html create mode 100644 dokka/older/1.1.0/third-party/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/-auto-dagger-view-model-coroutine-scope-component/provide-view-model-scope.html create mode 100644 dokka/older/1.1.0/third-party/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/-view-model-specific/index.html create mode 100644 dokka/older/1.1.0/third-party/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/index.html create mode 100644 dokka/older/1.1.0/third-party/ktorfit/index.html create mode 100644 dokka/older/1.1.0/third-party/ktorfit/navigation.html create mode 100644 dokka/older/1.1.0/third-party/ktorfit/se.ansman.dagger.auto.ktorfit/-auto-provide-service/in-component.html create mode 100644 dokka/older/1.1.0/third-party/ktorfit/se.ansman.dagger.auto.ktorfit/-auto-provide-service/index.html create mode 100644 dokka/older/1.1.0/third-party/ktorfit/se.ansman.dagger.auto.ktorfit/index.html create mode 100644 dokka/older/1.1.0/third-party/retrofit/index.html create mode 100644 dokka/older/1.1.0/third-party/retrofit/navigation.html create mode 100644 dokka/older/1.1.0/third-party/retrofit/se.ansman.dagger.auto.retrofit/-auto-provide-service/in-component.html create mode 100644 dokka/older/1.1.0/third-party/retrofit/se.ansman.dagger.auto.retrofit/-auto-provide-service/index.html create mode 100644 dokka/older/1.1.0/third-party/retrofit/se.ansman.dagger.auto.retrofit/index.html create mode 100644 dokka/older/1.1.0/version.json create mode 100644 dokka/third-party/android/index.html create mode 100644 dokka/third-party/android/navigation.html create mode 100644 dokka/third-party/android/se.ansman.dagger.auto.android/-auto-dagger-startup-initializer/-auto-dagger-startup-initializer.html create mode 100644 dokka/third-party/android/se.ansman.dagger.auto.android/-auto-dagger-startup-initializer/create.html create mode 100644 dokka/third-party/android/se.ansman.dagger.auto.android/-auto-dagger-startup-initializer/dependencies.html create mode 100644 dokka/third-party/android/se.ansman.dagger.auto.android/-auto-dagger-startup-initializer/index.html create mode 100644 dokka/third-party/android/se.ansman.dagger.auto.android/index.html create mode 100644 dokka/third-party/android/testing/index.html create mode 100644 dokka/third-party/android/testing/navigation.html create mode 100644 dokka/third-party/android/testing/se.ansman.dagger.auto.android.testing/-replaces/index.html create mode 100644 dokka/third-party/android/testing/se.ansman.dagger.auto.android.testing/-replaces/type.html create mode 100644 dokka/third-party/android/testing/se.ansman.dagger.auto.android.testing/index.html create mode 100644 dokka/third-party/androidx/room/index.html create mode 100644 dokka/third-party/androidx/room/navigation.html create mode 100644 dokka/third-party/androidx/room/se.ansman.dagger.auto.androidx.room/-auto-provide-daos/in-component.html create mode 100644 dokka/third-party/androidx/room/se.ansman.dagger.auto.androidx.room/-auto-provide-daos/index.html create mode 100644 dokka/third-party/androidx/room/se.ansman.dagger.auto.androidx.room/index.html create mode 100644 dokka/third-party/androidx/viewmodel/index.html create mode 100644 dokka/third-party/androidx/viewmodel/navigation.html create mode 100644 dokka/third-party/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/-auto-dagger-view-model-coroutine-scope-component/index.html create mode 100644 dokka/third-party/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/-auto-dagger-view-model-coroutine-scope-component/provide-view-model-scope.html create mode 100644 dokka/third-party/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/-view-model-specific/index.html create mode 100644 dokka/third-party/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/index.html create mode 100644 dokka/third-party/ktorfit/index.html create mode 100644 dokka/third-party/ktorfit/navigation.html create mode 100644 dokka/third-party/ktorfit/se.ansman.dagger.auto.ktorfit/-auto-provide-service/in-component.html create mode 100644 dokka/third-party/ktorfit/se.ansman.dagger.auto.ktorfit/-auto-provide-service/index.html create mode 100644 dokka/third-party/ktorfit/se.ansman.dagger.auto.ktorfit/index.html create mode 100644 dokka/third-party/retrofit/index.html create mode 100644 dokka/third-party/retrofit/navigation.html create mode 100644 dokka/third-party/retrofit/se.ansman.dagger.auto.retrofit/-auto-provide-service/in-component.html create mode 100644 dokka/third-party/retrofit/se.ansman.dagger.auto.retrofit/-auto-provide-service/index.html create mode 100644 dokka/third-party/retrofit/se.ansman.dagger.auto.retrofit/index.html create mode 100644 latest/integrations/ktorfit/index.html diff --git a/1.1.0/404.html b/1.1.0/404.html new file mode 100644 index 000000000..bdbc134d8 --- /dev/null +++ b/1.1.0/404.html @@ -0,0 +1 @@ + Auto Dagger
\ No newline at end of file diff --git a/1.1.0/_data/gradle.yml b/1.1.0/_data/gradle.yml new file mode 100644 index 000000000..28c49ff06 --- /dev/null +++ b/1.1.0/_data/gradle.yml @@ -0,0 +1,4 @@ +version: 1.1.0 +daggerVersion: 2.51.1 +snapshotVersion: 1.2.0-SNAPSHOT +dokkaLink: /dokka/ diff --git a/1.1.0/about/how-it-works/index.html b/1.1.0/about/how-it-works/index.html new file mode 100644 index 000000000..0af4d36fd --- /dev/null +++ b/1.1.0/about/how-it-works/index.html @@ -0,0 +1,30 @@ + How It Works - Auto Dagger
Skip to content

How it works

@AutoBind

When you annotate an object with @AutoBind, Auto Dagger will generate a component which is installed into the inferred (or explicitly provided) component using Hilt.

Given this class:

interface Repository
+
+@AutoBind
+@Singleton
+class RealRepository @Inject constructor() : Repository
+

Auto Dagger will generate this module:

@Module
+@InstallIn(SingletonComponent.class)
+@OriginatingElement(topLevelClass = RealRepository.class)
+public abstract class AutoBindRealRepositorySingletonModule {
+    private AutoBindRealRepositorySingletonModule() {}
+
+    @Binds
+    public abstract Repository bindRealRepositoryAsRepository(RealRepository realRepository);
+}
+

@AutoInitialize

When you annotate an object, binding or provider with @AutoInitialize, Auto Dagger will generate a module which is installed into the SingletonComponent using Hilt.

Given this class:

@AutoInitialize
+@Singleton
+class Repository @Inject constructor()
+

Auto Dagger will generate this module:

@Module
+@InstallIn(SingletonComponent.class)
+@OriginatingElement(topLevelClass = Repository.class)
+public final class AutoInitializeRepositoryModule {
+    private AutoInitializeRepositoryModule() {}
+
+    @Provides
+    @IntoSet
+    public static Initializable provideRepositoryAsInitializable(Lazy<Repository> lazyRepository) {
+        return Initializable.fromLazy(lazyRepository);
+    }
+}
+

AutoDaggerInitializable

AutoDaggerInitializable is the container for all Initializable that should be initialized at startup. It's provided into the @Singleton component, and accepts a set of all the initializables.

Calling AutoDaggerInitializable.initialize calls initialize on each object in turn.

Any exceptions are rethrown, but only after all objects have been initialized. If multiple objects throw, then subsequent exceptions are added as suppressed exceptions.

AutoDaggerStartupInitializer

AutoDaggerStartupInitializer is the AndroidX Startup initializer that performs the initialization at startup.

\ No newline at end of file diff --git a/1.1.0/about/license/index.html b/1.1.0/about/license/index.html new file mode 100644 index 000000000..b27918b49 --- /dev/null +++ b/1.1.0/about/license/index.html @@ -0,0 +1,14 @@ + License - Auto Dagger
Skip to content

License

Copyright 2022-2023 Nicklas Ansman Giertz
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+

You can find the full license at ansman/auto-dagger.

\ No newline at end of file diff --git a/1.1.0/assets/images/favicon.png b/1.1.0/assets/images/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..1cf13b9f9d978896599290a74f77d5dbe7d1655c GIT binary patch literal 1870 zcmV-U2eJ5xP)Gc)JR9QMau)O=X#!i9;T z37kk-upj^(fsR36MHs_+1RCI)NNu9}lD0S{B^g8PN?Ww(5|~L#Ng*g{WsqleV}|#l zz8@ri&cTzw_h33bHI+12+kK6WN$h#n5cD8OQt`5kw6p~9H3()bUQ8OS4Q4HTQ=1Ol z_JAocz`fLbT2^{`8n~UAo=#AUOf=SOq4pYkt;XbC&f#7lb$*7=$na!mWCQ`dBQsO0 zLFBSPj*N?#u5&pf2t4XjEGH|=pPQ8xh7tpx;US5Cx_Ju;!O`ya-yF`)b%TEt5>eP1ZX~}sjjA%FJF?h7cX8=b!DZl<6%Cv z*G0uvvU+vmnpLZ2paivG-(cd*y3$hCIcsZcYOGh{$&)A6*XX&kXZd3G8m)G$Zz-LV z^GF3VAW^Mdv!)4OM8EgqRiz~*Cji;uzl2uC9^=8I84vNp;ltJ|q-*uQwGp2ma6cY7 z;`%`!9UXO@fr&Ebapfs34OmS9^u6$)bJxrucutf>`dKPKT%%*d3XlFVKunp9 zasduxjrjs>f8V=D|J=XNZp;_Zy^WgQ$9WDjgY=z@stwiEBm9u5*|34&1Na8BMjjgf3+SHcr`5~>oz1Y?SW^=K z^bTyO6>Gar#P_W2gEMwq)ot3; zREHn~U&Dp0l6YT0&k-wLwYjb?5zGK`W6S2v+K>AM(95m2C20L|3m~rN8dprPr@t)5lsk9Hu*W z?pS990s;Ez=+Rj{x7p``4>+c0G5^pYnB1^!TL=(?HLHZ+HicG{~4F1d^5Awl_2!1jICM-!9eoLhbbT^;yHcefyTAaqRcY zmuctDopPT!%k+}x%lZRKnzykr2}}XfG_ne?nRQO~?%hkzo;@RN{P6o`&mMUWBYMTe z6i8ChtjX&gXl`nvrU>jah)2iNM%JdjqoaeaU%yVn!^70x-flljp6Q5tK}5}&X8&&G zX3fpb3E(!rH=zVI_9Gjl45w@{(ITqngWFe7@9{mX;tO25Z_8 zQHEpI+FkTU#4xu>RkN>b3Tnc3UpWzPXWm#o55GKF09j^Mh~)K7{QqbO_~(@CVq! zS<8954|P8mXN2MRs86xZ&Q4EfM@JB94b=(YGuk)s&^jiSF=t3*oNK3`rD{H`yQ?d; ztE=laAUoZx5?RC8*WKOj`%LXEkgDd>&^Q4M^z`%u0rg-It=hLCVsq!Z%^6eB-OvOT zFZ28TN&cRmgU}Elrnk43)!>Z1FCPL2K$7}gwzIc48NX}#!A1BpJP?#v5wkNprhV** z?Cpalt1oH&{r!o3eSKc&ap)iz2BTn_VV`4>9M^b3;(YY}4>#ML6{~(4mH+?%07*qo IM6N<$f(jP3KmY&$ literal 0 HcmV?d00001 diff --git a/1.1.0/assets/javascripts/bundle.b78d2936.min.js b/1.1.0/assets/javascripts/bundle.b78d2936.min.js new file mode 100644 index 000000000..520d0e513 --- /dev/null +++ b/1.1.0/assets/javascripts/bundle.b78d2936.min.js @@ -0,0 +1,29 @@ +"use strict";(()=>{var Ri=Object.create;var gr=Object.defineProperty;var ki=Object.getOwnPropertyDescriptor;var Hi=Object.getOwnPropertyNames,kt=Object.getOwnPropertySymbols,Pi=Object.getPrototypeOf,yr=Object.prototype.hasOwnProperty,on=Object.prototype.propertyIsEnumerable;var nn=(e,t,r)=>t in e?gr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,P=(e,t)=>{for(var r in t||(t={}))yr.call(t,r)&&nn(e,r,t[r]);if(kt)for(var r of kt(t))on.call(t,r)&&nn(e,r,t[r]);return e};var an=(e,t)=>{var r={};for(var n in e)yr.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&kt)for(var n of kt(e))t.indexOf(n)<0&&on.call(e,n)&&(r[n]=e[n]);return r};var Ht=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var $i=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Hi(t))!yr.call(e,o)&&o!==r&&gr(e,o,{get:()=>t[o],enumerable:!(n=ki(t,o))||n.enumerable});return e};var yt=(e,t,r)=>(r=e!=null?Ri(Pi(e)):{},$i(t||!e||!e.__esModule?gr(r,"default",{value:e,enumerable:!0}):r,e));var cn=Ht((xr,sn)=>{(function(e,t){typeof xr=="object"&&typeof sn!="undefined"?t():typeof define=="function"&&define.amd?define(t):t()})(xr,function(){"use strict";function e(r){var n=!0,o=!1,i=null,s={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function a(T){return!!(T&&T!==document&&T.nodeName!=="HTML"&&T.nodeName!=="BODY"&&"classList"in T&&"contains"in T.classList)}function c(T){var Qe=T.type,De=T.tagName;return!!(De==="INPUT"&&s[Qe]&&!T.readOnly||De==="TEXTAREA"&&!T.readOnly||T.isContentEditable)}function f(T){T.classList.contains("focus-visible")||(T.classList.add("focus-visible"),T.setAttribute("data-focus-visible-added",""))}function u(T){T.hasAttribute("data-focus-visible-added")&&(T.classList.remove("focus-visible"),T.removeAttribute("data-focus-visible-added"))}function p(T){T.metaKey||T.altKey||T.ctrlKey||(a(r.activeElement)&&f(r.activeElement),n=!0)}function m(T){n=!1}function d(T){a(T.target)&&(n||c(T.target))&&f(T.target)}function h(T){a(T.target)&&(T.target.classList.contains("focus-visible")||T.target.hasAttribute("data-focus-visible-added"))&&(o=!0,window.clearTimeout(i),i=window.setTimeout(function(){o=!1},100),u(T.target))}function v(T){document.visibilityState==="hidden"&&(o&&(n=!0),G())}function G(){document.addEventListener("mousemove",N),document.addEventListener("mousedown",N),document.addEventListener("mouseup",N),document.addEventListener("pointermove",N),document.addEventListener("pointerdown",N),document.addEventListener("pointerup",N),document.addEventListener("touchmove",N),document.addEventListener("touchstart",N),document.addEventListener("touchend",N)}function oe(){document.removeEventListener("mousemove",N),document.removeEventListener("mousedown",N),document.removeEventListener("mouseup",N),document.removeEventListener("pointermove",N),document.removeEventListener("pointerdown",N),document.removeEventListener("pointerup",N),document.removeEventListener("touchmove",N),document.removeEventListener("touchstart",N),document.removeEventListener("touchend",N)}function N(T){T.target.nodeName&&T.target.nodeName.toLowerCase()==="html"||(n=!1,oe())}document.addEventListener("keydown",p,!0),document.addEventListener("mousedown",m,!0),document.addEventListener("pointerdown",m,!0),document.addEventListener("touchstart",m,!0),document.addEventListener("visibilitychange",v,!0),G(),r.addEventListener("focus",d,!0),r.addEventListener("blur",h,!0),r.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&r.host?r.host.setAttribute("data-js-focus-visible",""):r.nodeType===Node.DOCUMENT_NODE&&(document.documentElement.classList.add("js-focus-visible"),document.documentElement.setAttribute("data-js-focus-visible",""))}if(typeof window!="undefined"&&typeof document!="undefined"){window.applyFocusVisiblePolyfill=e;var t;try{t=new CustomEvent("focus-visible-polyfill-ready")}catch(r){t=document.createEvent("CustomEvent"),t.initCustomEvent("focus-visible-polyfill-ready",!1,!1,{})}window.dispatchEvent(t)}typeof document!="undefined"&&e(document)})});var fn=Ht(Er=>{(function(e){var t=function(){try{return!!Symbol.iterator}catch(f){return!1}},r=t(),n=function(f){var u={next:function(){var p=f.shift();return{done:p===void 0,value:p}}};return r&&(u[Symbol.iterator]=function(){return u}),u},o=function(f){return encodeURIComponent(f).replace(/%20/g,"+")},i=function(f){return decodeURIComponent(String(f).replace(/\+/g," "))},s=function(){var f=function(p){Object.defineProperty(this,"_entries",{writable:!0,value:{}});var m=typeof p;if(m!=="undefined")if(m==="string")p!==""&&this._fromString(p);else if(p instanceof f){var d=this;p.forEach(function(oe,N){d.append(N,oe)})}else if(p!==null&&m==="object")if(Object.prototype.toString.call(p)==="[object Array]")for(var h=0;hd[0]?1:0}),f._entries&&(f._entries={});for(var p=0;p1?i(d[1]):"")}})})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Er);(function(e){var t=function(){try{var o=new e.URL("b","http://a");return o.pathname="c d",o.href==="http://a/c%20d"&&o.searchParams}catch(i){return!1}},r=function(){var o=e.URL,i=function(c,f){typeof c!="string"&&(c=String(c)),f&&typeof f!="string"&&(f=String(f));var u=document,p;if(f&&(e.location===void 0||f!==e.location.href)){f=f.toLowerCase(),u=document.implementation.createHTMLDocument(""),p=u.createElement("base"),p.href=f,u.head.appendChild(p);try{if(p.href.indexOf(f)!==0)throw new Error(p.href)}catch(T){throw new Error("URL unable to set base "+f+" due to "+T)}}var m=u.createElement("a");m.href=c,p&&(u.body.appendChild(m),m.href=m.href);var d=u.createElement("input");if(d.type="url",d.value=c,m.protocol===":"||!/:/.test(m.href)||!d.checkValidity()&&!f)throw new TypeError("Invalid URL");Object.defineProperty(this,"_anchorElement",{value:m});var h=new e.URLSearchParams(this.search),v=!0,G=!0,oe=this;["append","delete","set"].forEach(function(T){var Qe=h[T];h[T]=function(){Qe.apply(h,arguments),v&&(G=!1,oe.search=h.toString(),G=!0)}}),Object.defineProperty(this,"searchParams",{value:h,enumerable:!0});var N=void 0;Object.defineProperty(this,"_updateSearchParams",{enumerable:!1,configurable:!1,writable:!1,value:function(){this.search!==N&&(N=this.search,G&&(v=!1,this.searchParams._fromString(this.search),v=!0))}})},s=i.prototype,a=function(c){Object.defineProperty(s,c,{get:function(){return this._anchorElement[c]},set:function(f){this._anchorElement[c]=f},enumerable:!0})};["hash","host","hostname","port","protocol"].forEach(function(c){a(c)}),Object.defineProperty(s,"search",{get:function(){return this._anchorElement.search},set:function(c){this._anchorElement.search=c,this._updateSearchParams()},enumerable:!0}),Object.defineProperties(s,{toString:{get:function(){var c=this;return function(){return c.href}}},href:{get:function(){return this._anchorElement.href.replace(/\?$/,"")},set:function(c){this._anchorElement.href=c,this._updateSearchParams()},enumerable:!0},pathname:{get:function(){return this._anchorElement.pathname.replace(/(^\/?)/,"/")},set:function(c){this._anchorElement.pathname=c},enumerable:!0},origin:{get:function(){var c={"http:":80,"https:":443,"ftp:":21}[this._anchorElement.protocol],f=this._anchorElement.port!=c&&this._anchorElement.port!=="";return this._anchorElement.protocol+"//"+this._anchorElement.hostname+(f?":"+this._anchorElement.port:"")},enumerable:!0},password:{get:function(){return""},set:function(c){},enumerable:!0},username:{get:function(){return""},set:function(c){},enumerable:!0}}),i.createObjectURL=function(c){return o.createObjectURL.apply(o,arguments)},i.revokeObjectURL=function(c){return o.revokeObjectURL.apply(o,arguments)},e.URL=i};if(t()||r(),e.location!==void 0&&!("origin"in e.location)){var n=function(){return e.location.protocol+"//"+e.location.hostname+(e.location.port?":"+e.location.port:"")};try{Object.defineProperty(e.location,"origin",{get:n,enumerable:!0})}catch(o){setInterval(function(){e.location.origin=n()},100)}}})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Er)});var Kr=Ht((Mt,qr)=>{/*! + * clipboard.js v2.0.11 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */(function(t,r){typeof Mt=="object"&&typeof qr=="object"?qr.exports=r():typeof define=="function"&&define.amd?define([],r):typeof Mt=="object"?Mt.ClipboardJS=r():t.ClipboardJS=r()})(Mt,function(){return function(){var e={686:function(n,o,i){"use strict";i.d(o,{default:function(){return Ci}});var s=i(279),a=i.n(s),c=i(370),f=i.n(c),u=i(817),p=i.n(u);function m(j){try{return document.execCommand(j)}catch(O){return!1}}var d=function(O){var E=p()(O);return m("cut"),E},h=d;function v(j){var O=document.documentElement.getAttribute("dir")==="rtl",E=document.createElement("textarea");E.style.fontSize="12pt",E.style.border="0",E.style.padding="0",E.style.margin="0",E.style.position="absolute",E.style[O?"right":"left"]="-9999px";var H=window.pageYOffset||document.documentElement.scrollTop;return E.style.top="".concat(H,"px"),E.setAttribute("readonly",""),E.value=j,E}var G=function(O,E){var H=v(O);E.container.appendChild(H);var I=p()(H);return m("copy"),H.remove(),I},oe=function(O){var E=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},H="";return typeof O=="string"?H=G(O,E):O instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(O==null?void 0:O.type)?H=G(O.value,E):(H=p()(O),m("copy")),H},N=oe;function T(j){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?T=function(E){return typeof E}:T=function(E){return E&&typeof Symbol=="function"&&E.constructor===Symbol&&E!==Symbol.prototype?"symbol":typeof E},T(j)}var Qe=function(){var O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},E=O.action,H=E===void 0?"copy":E,I=O.container,q=O.target,Me=O.text;if(H!=="copy"&&H!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(q!==void 0)if(q&&T(q)==="object"&&q.nodeType===1){if(H==="copy"&&q.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(H==="cut"&&(q.hasAttribute("readonly")||q.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if(Me)return N(Me,{container:I});if(q)return H==="cut"?h(q):N(q,{container:I})},De=Qe;function $e(j){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?$e=function(E){return typeof E}:$e=function(E){return E&&typeof Symbol=="function"&&E.constructor===Symbol&&E!==Symbol.prototype?"symbol":typeof E},$e(j)}function wi(j,O){if(!(j instanceof O))throw new TypeError("Cannot call a class as a function")}function rn(j,O){for(var E=0;E0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof I.action=="function"?I.action:this.defaultAction,this.target=typeof I.target=="function"?I.target:this.defaultTarget,this.text=typeof I.text=="function"?I.text:this.defaultText,this.container=$e(I.container)==="object"?I.container:document.body}},{key:"listenClick",value:function(I){var q=this;this.listener=f()(I,"click",function(Me){return q.onClick(Me)})}},{key:"onClick",value:function(I){var q=I.delegateTarget||I.currentTarget,Me=this.action(q)||"copy",Rt=De({action:Me,container:this.container,target:this.target(q),text:this.text(q)});this.emit(Rt?"success":"error",{action:Me,text:Rt,trigger:q,clearSelection:function(){q&&q.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(I){return vr("action",I)}},{key:"defaultTarget",value:function(I){var q=vr("target",I);if(q)return document.querySelector(q)}},{key:"defaultText",value:function(I){return vr("text",I)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function(I){var q=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return N(I,q)}},{key:"cut",value:function(I){return h(I)}},{key:"isSupported",value:function(){var I=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],q=typeof I=="string"?[I]:I,Me=!!document.queryCommandSupported;return q.forEach(function(Rt){Me=Me&&!!document.queryCommandSupported(Rt)}),Me}}]),E}(a()),Ci=Ai},828:function(n){var o=9;if(typeof Element!="undefined"&&!Element.prototype.matches){var i=Element.prototype;i.matches=i.matchesSelector||i.mozMatchesSelector||i.msMatchesSelector||i.oMatchesSelector||i.webkitMatchesSelector}function s(a,c){for(;a&&a.nodeType!==o;){if(typeof a.matches=="function"&&a.matches(c))return a;a=a.parentNode}}n.exports=s},438:function(n,o,i){var s=i(828);function a(u,p,m,d,h){var v=f.apply(this,arguments);return u.addEventListener(m,v,h),{destroy:function(){u.removeEventListener(m,v,h)}}}function c(u,p,m,d,h){return typeof u.addEventListener=="function"?a.apply(null,arguments):typeof m=="function"?a.bind(null,document).apply(null,arguments):(typeof u=="string"&&(u=document.querySelectorAll(u)),Array.prototype.map.call(u,function(v){return a(v,p,m,d,h)}))}function f(u,p,m,d){return function(h){h.delegateTarget=s(h.target,p),h.delegateTarget&&d.call(u,h)}}n.exports=c},879:function(n,o){o.node=function(i){return i!==void 0&&i instanceof HTMLElement&&i.nodeType===1},o.nodeList=function(i){var s=Object.prototype.toString.call(i);return i!==void 0&&(s==="[object NodeList]"||s==="[object HTMLCollection]")&&"length"in i&&(i.length===0||o.node(i[0]))},o.string=function(i){return typeof i=="string"||i instanceof String},o.fn=function(i){var s=Object.prototype.toString.call(i);return s==="[object Function]"}},370:function(n,o,i){var s=i(879),a=i(438);function c(m,d,h){if(!m&&!d&&!h)throw new Error("Missing required arguments");if(!s.string(d))throw new TypeError("Second argument must be a String");if(!s.fn(h))throw new TypeError("Third argument must be a Function");if(s.node(m))return f(m,d,h);if(s.nodeList(m))return u(m,d,h);if(s.string(m))return p(m,d,h);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function f(m,d,h){return m.addEventListener(d,h),{destroy:function(){m.removeEventListener(d,h)}}}function u(m,d,h){return Array.prototype.forEach.call(m,function(v){v.addEventListener(d,h)}),{destroy:function(){Array.prototype.forEach.call(m,function(v){v.removeEventListener(d,h)})}}}function p(m,d,h){return a(document.body,m,d,h)}n.exports=c},817:function(n){function o(i){var s;if(i.nodeName==="SELECT")i.focus(),s=i.value;else if(i.nodeName==="INPUT"||i.nodeName==="TEXTAREA"){var a=i.hasAttribute("readonly");a||i.setAttribute("readonly",""),i.select(),i.setSelectionRange(0,i.value.length),a||i.removeAttribute("readonly"),s=i.value}else{i.hasAttribute("contenteditable")&&i.focus();var c=window.getSelection(),f=document.createRange();f.selectNodeContents(i),c.removeAllRanges(),c.addRange(f),s=c.toString()}return s}n.exports=o},279:function(n){function o(){}o.prototype={on:function(i,s,a){var c=this.e||(this.e={});return(c[i]||(c[i]=[])).push({fn:s,ctx:a}),this},once:function(i,s,a){var c=this;function f(){c.off(i,f),s.apply(a,arguments)}return f._=s,this.on(i,f,a)},emit:function(i){var s=[].slice.call(arguments,1),a=((this.e||(this.e={}))[i]||[]).slice(),c=0,f=a.length;for(c;c{"use strict";/*! + * escape-html + * Copyright(c) 2012-2013 TJ Holowaychuk + * Copyright(c) 2015 Andreas Lubbe + * Copyright(c) 2015 Tiancheng "Timothy" Gu + * MIT Licensed + */var ns=/["'&<>]/;Go.exports=os;function os(e){var t=""+e,r=ns.exec(t);if(!r)return t;var n,o="",i=0,s=0;for(i=r.index;i0&&i[i.length-1])&&(f[0]===6||f[0]===2)){r=0;continue}if(f[0]===3&&(!i||f[1]>i[0]&&f[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function W(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var n=r.call(e),o,i=[],s;try{for(;(t===void 0||t-- >0)&&!(o=n.next()).done;)i.push(o.value)}catch(a){s={error:a}}finally{try{o&&!o.done&&(r=n.return)&&r.call(n)}finally{if(s)throw s.error}}return i}function D(e,t,r){if(r||arguments.length===2)for(var n=0,o=t.length,i;n1||a(m,d)})})}function a(m,d){try{c(n[m](d))}catch(h){p(i[0][3],h)}}function c(m){m.value instanceof et?Promise.resolve(m.value.v).then(f,u):p(i[0][2],m)}function f(m){a("next",m)}function u(m){a("throw",m)}function p(m,d){m(d),i.shift(),i.length&&a(i[0][0],i[0][1])}}function ln(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],r;return t?t.call(e):(e=typeof Ee=="function"?Ee(e):e[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(i){r[i]=e[i]&&function(s){return new Promise(function(a,c){s=e[i](s),o(a,c,s.done,s.value)})}}function o(i,s,a,c){Promise.resolve(c).then(function(f){i({value:f,done:a})},s)}}function A(e){return typeof e=="function"}function at(e){var t=function(n){Error.call(n),n.stack=new Error().stack},r=e(t);return r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,r}var $t=at(function(e){return function(r){e(this),this.message=r?r.length+` errors occurred during unsubscription: +`+r.map(function(n,o){return o+1+") "+n.toString()}).join(` + `):"",this.name="UnsubscriptionError",this.errors=r}});function Ve(e,t){if(e){var r=e.indexOf(t);0<=r&&e.splice(r,1)}}var Ie=function(){function e(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var t,r,n,o,i;if(!this.closed){this.closed=!0;var s=this._parentage;if(s)if(this._parentage=null,Array.isArray(s))try{for(var a=Ee(s),c=a.next();!c.done;c=a.next()){var f=c.value;f.remove(this)}}catch(v){t={error:v}}finally{try{c&&!c.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}else s.remove(this);var u=this.initialTeardown;if(A(u))try{u()}catch(v){i=v instanceof $t?v.errors:[v]}var p=this._finalizers;if(p){this._finalizers=null;try{for(var m=Ee(p),d=m.next();!d.done;d=m.next()){var h=d.value;try{mn(h)}catch(v){i=i!=null?i:[],v instanceof $t?i=D(D([],W(i)),W(v.errors)):i.push(v)}}}catch(v){n={error:v}}finally{try{d&&!d.done&&(o=m.return)&&o.call(m)}finally{if(n)throw n.error}}}if(i)throw new $t(i)}},e.prototype.add=function(t){var r;if(t&&t!==this)if(this.closed)mn(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(r=this._finalizers)!==null&&r!==void 0?r:[]).push(t)}},e.prototype._hasParent=function(t){var r=this._parentage;return r===t||Array.isArray(r)&&r.includes(t)},e.prototype._addParent=function(t){var r=this._parentage;this._parentage=Array.isArray(r)?(r.push(t),r):r?[r,t]:t},e.prototype._removeParent=function(t){var r=this._parentage;r===t?this._parentage=null:Array.isArray(r)&&Ve(r,t)},e.prototype.remove=function(t){var r=this._finalizers;r&&Ve(r,t),t instanceof e&&t._removeParent(this)},e.EMPTY=function(){var t=new e;return t.closed=!0,t}(),e}();var Sr=Ie.EMPTY;function It(e){return e instanceof Ie||e&&"closed"in e&&A(e.remove)&&A(e.add)&&A(e.unsubscribe)}function mn(e){A(e)?e():e.unsubscribe()}var Le={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var st={setTimeout:function(e,t){for(var r=[],n=2;n0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(r){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,r)},t.prototype._subscribe=function(r){return this._throwIfClosed(),this._checkFinalizedStatuses(r),this._innerSubscribe(r)},t.prototype._innerSubscribe=function(r){var n=this,o=this,i=o.hasError,s=o.isStopped,a=o.observers;return i||s?Sr:(this.currentObservers=null,a.push(r),new Ie(function(){n.currentObservers=null,Ve(a,r)}))},t.prototype._checkFinalizedStatuses=function(r){var n=this,o=n.hasError,i=n.thrownError,s=n.isStopped;o?r.error(i):s&&r.complete()},t.prototype.asObservable=function(){var r=new F;return r.source=this,r},t.create=function(r,n){return new En(r,n)},t}(F);var En=function(e){ie(t,e);function t(r,n){var o=e.call(this)||this;return o.destination=r,o.source=n,o}return t.prototype.next=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.next)===null||o===void 0||o.call(n,r)},t.prototype.error=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.error)===null||o===void 0||o.call(n,r)},t.prototype.complete=function(){var r,n;(n=(r=this.destination)===null||r===void 0?void 0:r.complete)===null||n===void 0||n.call(r)},t.prototype._subscribe=function(r){var n,o;return(o=(n=this.source)===null||n===void 0?void 0:n.subscribe(r))!==null&&o!==void 0?o:Sr},t}(x);var Et={now:function(){return(Et.delegate||Date).now()},delegate:void 0};var wt=function(e){ie(t,e);function t(r,n,o){r===void 0&&(r=1/0),n===void 0&&(n=1/0),o===void 0&&(o=Et);var i=e.call(this)||this;return i._bufferSize=r,i._windowTime=n,i._timestampProvider=o,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=n===1/0,i._bufferSize=Math.max(1,r),i._windowTime=Math.max(1,n),i}return t.prototype.next=function(r){var n=this,o=n.isStopped,i=n._buffer,s=n._infiniteTimeWindow,a=n._timestampProvider,c=n._windowTime;o||(i.push(r),!s&&i.push(a.now()+c)),this._trimBuffer(),e.prototype.next.call(this,r)},t.prototype._subscribe=function(r){this._throwIfClosed(),this._trimBuffer();for(var n=this._innerSubscribe(r),o=this,i=o._infiniteTimeWindow,s=o._buffer,a=s.slice(),c=0;c0?e.prototype.requestAsyncId.call(this,r,n,o):(r.actions.push(this),r._scheduled||(r._scheduled=ut.requestAnimationFrame(function(){return r.flush(void 0)})))},t.prototype.recycleAsyncId=function(r,n,o){var i;if(o===void 0&&(o=0),o!=null?o>0:this.delay>0)return e.prototype.recycleAsyncId.call(this,r,n,o);var s=r.actions;n!=null&&((i=s[s.length-1])===null||i===void 0?void 0:i.id)!==n&&(ut.cancelAnimationFrame(n),r._scheduled=void 0)},t}(Ut);var Tn=function(e){ie(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.flush=function(r){this._active=!0;var n=this._scheduled;this._scheduled=void 0;var o=this.actions,i;r=r||o.shift();do if(i=r.execute(r.state,r.delay))break;while((r=o[0])&&r.id===n&&o.shift());if(this._active=!1,i){for(;(r=o[0])&&r.id===n&&o.shift();)r.unsubscribe();throw i}},t}(Wt);var Te=new Tn(Sn);var _=new F(function(e){return e.complete()});function Dt(e){return e&&A(e.schedule)}function Cr(e){return e[e.length-1]}function Ye(e){return A(Cr(e))?e.pop():void 0}function Oe(e){return Dt(Cr(e))?e.pop():void 0}function Vt(e,t){return typeof Cr(e)=="number"?e.pop():t}var pt=function(e){return e&&typeof e.length=="number"&&typeof e!="function"};function zt(e){return A(e==null?void 0:e.then)}function Nt(e){return A(e[ft])}function qt(e){return Symbol.asyncIterator&&A(e==null?void 0:e[Symbol.asyncIterator])}function Kt(e){return new TypeError("You provided "+(e!==null&&typeof e=="object"?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function Ni(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var Qt=Ni();function Yt(e){return A(e==null?void 0:e[Qt])}function Gt(e){return pn(this,arguments,function(){var r,n,o,i;return Pt(this,function(s){switch(s.label){case 0:r=e.getReader(),s.label=1;case 1:s.trys.push([1,,9,10]),s.label=2;case 2:return[4,et(r.read())];case 3:return n=s.sent(),o=n.value,i=n.done,i?[4,et(void 0)]:[3,5];case 4:return[2,s.sent()];case 5:return[4,et(o)];case 6:return[4,s.sent()];case 7:return s.sent(),[3,2];case 8:return[3,10];case 9:return r.releaseLock(),[7];case 10:return[2]}})})}function Bt(e){return A(e==null?void 0:e.getReader)}function U(e){if(e instanceof F)return e;if(e!=null){if(Nt(e))return qi(e);if(pt(e))return Ki(e);if(zt(e))return Qi(e);if(qt(e))return On(e);if(Yt(e))return Yi(e);if(Bt(e))return Gi(e)}throw Kt(e)}function qi(e){return new F(function(t){var r=e[ft]();if(A(r.subscribe))return r.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function Ki(e){return new F(function(t){for(var r=0;r=2;return function(n){return n.pipe(e?L(function(o,i){return e(o,i,n)}):de,ge(1),r?He(t):Vn(function(){return new Xt}))}}function zn(){for(var e=[],t=0;t=2,!0))}function pe(e){e===void 0&&(e={});var t=e.connector,r=t===void 0?function(){return new x}:t,n=e.resetOnError,o=n===void 0?!0:n,i=e.resetOnComplete,s=i===void 0?!0:i,a=e.resetOnRefCountZero,c=a===void 0?!0:a;return function(f){var u,p,m,d=0,h=!1,v=!1,G=function(){p==null||p.unsubscribe(),p=void 0},oe=function(){G(),u=m=void 0,h=v=!1},N=function(){var T=u;oe(),T==null||T.unsubscribe()};return y(function(T,Qe){d++,!v&&!h&&G();var De=m=m!=null?m:r();Qe.add(function(){d--,d===0&&!v&&!h&&(p=$r(N,c))}),De.subscribe(Qe),!u&&d>0&&(u=new rt({next:function($e){return De.next($e)},error:function($e){v=!0,G(),p=$r(oe,o,$e),De.error($e)},complete:function(){h=!0,G(),p=$r(oe,s),De.complete()}}),U(T).subscribe(u))})(f)}}function $r(e,t){for(var r=[],n=2;ne.next(document)),e}function K(e,t=document){return Array.from(t.querySelectorAll(e))}function z(e,t=document){let r=ce(e,t);if(typeof r=="undefined")throw new ReferenceError(`Missing element: expected "${e}" to be present`);return r}function ce(e,t=document){return t.querySelector(e)||void 0}function _e(){return document.activeElement instanceof HTMLElement&&document.activeElement||void 0}function er(e){return C(b(document.body,"focusin"),b(document.body,"focusout")).pipe(ke(1),l(()=>{let t=_e();return typeof t!="undefined"?e.contains(t):!1}),V(e===_e()),B())}function Xe(e){return{x:e.offsetLeft,y:e.offsetTop}}function Qn(e){return C(b(window,"load"),b(window,"resize")).pipe(Ce(0,Te),l(()=>Xe(e)),V(Xe(e)))}function tr(e){return{x:e.scrollLeft,y:e.scrollTop}}function dt(e){return C(b(e,"scroll"),b(window,"resize")).pipe(Ce(0,Te),l(()=>tr(e)),V(tr(e)))}var Gn=function(){if(typeof Map!="undefined")return Map;function e(t,r){var n=-1;return t.some(function(o,i){return o[0]===r?(n=i,!0):!1}),n}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(r){var n=e(this.__entries__,r),o=this.__entries__[n];return o&&o[1]},t.prototype.set=function(r,n){var o=e(this.__entries__,r);~o?this.__entries__[o][1]=n:this.__entries__.push([r,n])},t.prototype.delete=function(r){var n=this.__entries__,o=e(n,r);~o&&n.splice(o,1)},t.prototype.has=function(r){return!!~e(this.__entries__,r)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(r,n){n===void 0&&(n=null);for(var o=0,i=this.__entries__;o0},e.prototype.connect_=function(){!Dr||this.connected_||(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),ga?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){!Dr||!this.connected_||(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(t){var r=t.propertyName,n=r===void 0?"":r,o=va.some(function(i){return!!~n.indexOf(i)});o&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),Bn=function(e,t){for(var r=0,n=Object.keys(t);r0},e}(),Xn=typeof WeakMap!="undefined"?new WeakMap:new Gn,Zn=function(){function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var r=ya.getInstance(),n=new Aa(t,r,this);Xn.set(this,n)}return e}();["observe","unobserve","disconnect"].forEach(function(e){Zn.prototype[e]=function(){var t;return(t=Xn.get(this))[e].apply(t,arguments)}});var Ca=function(){return typeof rr.ResizeObserver!="undefined"?rr.ResizeObserver:Zn}(),eo=Ca;var to=new x,Ra=$(()=>k(new eo(e=>{for(let t of e)to.next(t)}))).pipe(g(e=>C(ze,k(e)).pipe(R(()=>e.disconnect()))),J(1));function he(e){return{width:e.offsetWidth,height:e.offsetHeight}}function ye(e){return Ra.pipe(S(t=>t.observe(e)),g(t=>to.pipe(L(({target:r})=>r===e),R(()=>t.unobserve(e)),l(()=>he(e)))),V(he(e)))}function bt(e){return{width:e.scrollWidth,height:e.scrollHeight}}function ir(e){let t=e.parentElement;for(;t&&(e.scrollWidth<=t.scrollWidth&&e.scrollHeight<=t.scrollHeight);)t=(e=t).parentElement;return t?e:void 0}var ro=new x,ka=$(()=>k(new IntersectionObserver(e=>{for(let t of e)ro.next(t)},{threshold:0}))).pipe(g(e=>C(ze,k(e)).pipe(R(()=>e.disconnect()))),J(1));function ar(e){return ka.pipe(S(t=>t.observe(e)),g(t=>ro.pipe(L(({target:r})=>r===e),R(()=>t.unobserve(e)),l(({isIntersecting:r})=>r))))}function no(e,t=16){return dt(e).pipe(l(({y:r})=>{let n=he(e),o=bt(e);return r>=o.height-n.height-t}),B())}var sr={drawer:z("[data-md-toggle=drawer]"),search:z("[data-md-toggle=search]")};function oo(e){return sr[e].checked}function Ke(e,t){sr[e].checked!==t&&sr[e].click()}function Ue(e){let t=sr[e];return b(t,"change").pipe(l(()=>t.checked),V(t.checked))}function Ha(e,t){switch(e.constructor){case HTMLInputElement:return e.type==="radio"?/^Arrow/.test(t):!0;case HTMLSelectElement:case HTMLTextAreaElement:return!0;default:return e.isContentEditable}}function Pa(){return C(b(window,"compositionstart").pipe(l(()=>!0)),b(window,"compositionend").pipe(l(()=>!1))).pipe(V(!1))}function io(){let e=b(window,"keydown").pipe(L(t=>!(t.metaKey||t.ctrlKey)),l(t=>({mode:oo("search")?"search":"global",type:t.key,claim(){t.preventDefault(),t.stopPropagation()}})),L(({mode:t,type:r})=>{if(t==="global"){let n=_e();if(typeof n!="undefined")return!Ha(n,r)}return!0}),pe());return Pa().pipe(g(t=>t?_:e))}function le(){return new URL(location.href)}function ot(e){location.href=e.href}function ao(){return new x}function so(e,t){if(typeof t=="string"||typeof t=="number")e.innerHTML+=t.toString();else if(t instanceof Node)e.appendChild(t);else if(Array.isArray(t))for(let r of t)so(e,r)}function M(e,t,...r){let n=document.createElement(e);if(t)for(let o of Object.keys(t))typeof t[o]!="undefined"&&(typeof t[o]!="boolean"?n.setAttribute(o,t[o]):n.setAttribute(o,""));for(let o of r)so(n,o);return n}function cr(e){if(e>999){let t=+((e-950)%1e3>99);return`${((e+1e-6)/1e3).toFixed(t)}k`}else return e.toString()}function co(){return location.hash.substring(1)}function Vr(e){let t=M("a",{href:e});t.addEventListener("click",r=>r.stopPropagation()),t.click()}function $a(){return b(window,"hashchange").pipe(l(co),V(co()),L(e=>e.length>0),J(1))}function fo(){return $a().pipe(l(e=>ce(`[id="${e}"]`)),L(e=>typeof e!="undefined"))}function zr(e){let t=matchMedia(e);return Zt(r=>t.addListener(()=>r(t.matches))).pipe(V(t.matches))}function uo(){let e=matchMedia("print");return C(b(window,"beforeprint").pipe(l(()=>!0)),b(window,"afterprint").pipe(l(()=>!1))).pipe(V(e.matches))}function Nr(e,t){return e.pipe(g(r=>r?t():_))}function fr(e,t={credentials:"same-origin"}){return ue(fetch(`${e}`,t)).pipe(fe(()=>_),g(r=>r.status!==200?Tt(()=>new Error(r.statusText)):k(r)))}function We(e,t){return fr(e,t).pipe(g(r=>r.json()),J(1))}function po(e,t){let r=new DOMParser;return fr(e,t).pipe(g(n=>n.text()),l(n=>r.parseFromString(n,"text/xml")),J(1))}function ur(e){let t=M("script",{src:e});return $(()=>(document.head.appendChild(t),C(b(t,"load"),b(t,"error").pipe(g(()=>Tt(()=>new ReferenceError(`Invalid script: ${e}`))))).pipe(l(()=>{}),R(()=>document.head.removeChild(t)),ge(1))))}function lo(){return{x:Math.max(0,scrollX),y:Math.max(0,scrollY)}}function mo(){return C(b(window,"scroll",{passive:!0}),b(window,"resize",{passive:!0})).pipe(l(lo),V(lo()))}function ho(){return{width:innerWidth,height:innerHeight}}function bo(){return b(window,"resize",{passive:!0}).pipe(l(ho),V(ho()))}function vo(){return Q([mo(),bo()]).pipe(l(([e,t])=>({offset:e,size:t})),J(1))}function pr(e,{viewport$:t,header$:r}){let n=t.pipe(Z("size")),o=Q([n,r]).pipe(l(()=>Xe(e)));return Q([r,t,o]).pipe(l(([{height:i},{offset:s,size:a},{x:c,y:f}])=>({offset:{x:s.x-c,y:s.y-f+i},size:a})))}(()=>{function e(n,o){parent.postMessage(n,o||"*")}function t(...n){return n.reduce((o,i)=>o.then(()=>new Promise(s=>{let a=document.createElement("script");a.src=i,a.onload=s,document.body.appendChild(a)})),Promise.resolve())}var r=class extends EventTarget{constructor(n){super(),this.url=n,this.m=i=>{i.source===this.w&&(this.dispatchEvent(new MessageEvent("message",{data:i.data})),this.onmessage&&this.onmessage(i))},this.e=(i,s,a,c,f)=>{if(s===`${this.url}`){let u=new ErrorEvent("error",{message:i,filename:s,lineno:a,colno:c,error:f});this.dispatchEvent(u),this.onerror&&this.onerror(u)}};let o=document.createElement("iframe");o.hidden=!0,document.body.appendChild(this.iframe=o),this.w.document.open(),this.w.document.write(`

Getting Started

Installation

Maven Central

Android Modules

For pure Kotlin modules you need to add KAPT or KSP, the auto-dagger android dependency, the auto-dagger compiler as well as the hilt dependencies:

plugins {
+    kotlin("kapt") // For Groovy build scripts use id('kotlin-kapt')
+    // of you use KSP:
+    id("com.google.devtools.ksp")
+
+    id("com.google.dagger.hilt.android") // Optional, but recommended
+}
+
+dependencies {
+    implementation("se.ansman.dagger.auto:android:1.1.0")
+    kapt("se.ansman.dagger.auto:compiler:1.1.0")
+    // or if you use KSP
+    ksp("se.ansman.dagger.auto:compiler:1.1.0")
+
+    // Add these if you want to replace objects during tests
+    testImplementation("se.ansman.dagger.auto:android-testing:1.1.0")
+    kaptTest("se.ansman.dagger.auto:compiler:1.1.0")
+    // or if you use KSP
+    kspTest("se.ansman.dagger.auto:compiler:1.1.0")
+
+    // If you haven't already you need to add the Dagger dependencies
+    implementation("com.google.dagger:hilt-android:2.51.1")
+    kapt("com.google.dagger:hilt-android-compiler:2.51.1")
+    // or if you use KSP
+    ksp("se.ansman.dagger.auto:compiler:1.1.0")
+}
+

Kotlin Modules

For pure Kotlin modules you need to add KAPT, the auto-dagger core dependency, the auto-dagger compiler as well as the hilt dependencies:

plugins {
+    kotlin("kapt") // For Groovy build scripts use id('kotlin-kapt')
+    // of you use KSP:
+    id("com.google.devtools.ksp")
+}
+
+dependencies {
+    implementation("se.ansman.dagger.auto:core:1.1.0")
+    kapt("se.ansman.dagger.auto:compiler:1.1.0")
+    // or if you use KSP
+    ksp("se.ansman.dagger.auto:compiler:1.1.0")
+
+    // If you haven't already you need to add the Dagger dependencies
+    implementation("com.google.dagger:hilt-core:2.51.1")
+    kapt("com.google.dagger:hilt-compiler:2.51.1")
+    // or if you use KSP
+    ksp("com.google.dagger:hilt-compiler:2.51.1")
+}
+

Snapshots

Snapshots are published on every commit to Sonatype's snapshot repository. To use a snapshot add the snapshot repository:

buildscripts {
+    repositories {
+        ...
+        maven("https://s01.oss.sonatype.org/content/repositories/snapshots/")
+    }
+}
+
+dependencies {
+    implementation("se.ansman.dagger.auto:android:1.2.0-SNAPSHOT")
+    kapt("se.ansman.dagger.auto:compiler:1.2.0-SNAPSHOT")
+    // or if you use KSP
+    ksp("se.ansman.dagger.auto:compiler:1.2.0-SNAPSHOT")
+}
+

\ No newline at end of file diff --git a/1.1.0/index.html b/1.1.0/index.html new file mode 100644 index 000000000..2a9533c14 --- /dev/null +++ b/1.1.0/index.html @@ -0,0 +1,13 @@ + Auto Dagger

Auto Dagger

Auto Dagger allows you to automate some Dagger setup using Hilt.

For example you can use the @AutoInitialize annotation to automatically initialize objects during app launch and you can use the @AutoBind annotation to automatically bind objects.

Automatic initialization is done using AndroidX Startup.

There's also integrations with popular third party libraries such as AndroidX and Retrofit.

You can find the project on GitHub in the ansman/auto-dagger repo.

If you're looking javadoc/dokka you can find it here here.

To get set up see getting started.

Examples

@AutoBind

interface Repository
+
+@AutoBind
+@Singleton
+class RealRepository @Inject constructor() : Repository
+

For more detailed documentation see the @AutoBind usage.

@AutoInitialize

@AutoInitialize
+@Singleton
+class SomeRepository @Inject constructor() {
+    init {
+        // This will be executed at application startup, even if nobody injects it.
+    }
+}
+

For more detailed documentation see the @AutoInitialize usage.

\ No newline at end of file diff --git a/1.1.0/integrations/androidx/room/index.html b/1.1.0/integrations/androidx/room/index.html new file mode 100644 index 000000000..101c9d5ea --- /dev/null +++ b/1.1.0/integrations/androidx/room/index.html @@ -0,0 +1,17 @@ + Room - Auto Dagger

Integration with AndroidX Room

If you use AndroidX Room in your project, Auto Dagger can automatically provides some utilities for working with databases.

To get started, add the dependency:

dependencies {
+    implementation("se.ansman.dagger.auto:androidx-room:1.1.0")
+    kapt("se.ansman.dagger.auto:compiler:1.1.0")
+    // or if you use KSP
+    ksp("se.ansman.dagger.auto:compiler:1.1.0")
+}
+

Automatically providing DAOs

You can annotate your RoomDatabase with @AutoProvideDaos to automatically provide all DAOs in the database:

@Database(entities = [User::class], version = 1)
+@AutoProvideDaos
+abstract class AppDatabase : RoomDatabase() {
+    abstract val users: UserDao
+}
+

Now you can inject UserDao directly.

By default, the DAOs will be provided in the SingletonComponent. If you want to change the component you can use the inComponent parameter:

@Database(entities = [User::class], version = 1)
+@AutoProvideDaos(inComponent = SomeOtherComponent::class)
+abstract class AppDatabase : RoomDatabase() {
+    abstract val users: UserDao
+}
+

For now, the database must directly extend RoomDatabase. Having it as an indirect superclass is not supported. If you need support for this open a feature request and detail your use case.

\ No newline at end of file diff --git a/1.1.0/integrations/androidx/viewmodel/index.html b/1.1.0/integrations/androidx/viewmodel/index.html new file mode 100644 index 000000000..82964ea18 --- /dev/null +++ b/1.1.0/integrations/androidx/viewmodel/index.html @@ -0,0 +1,9 @@ + ViewModel - Auto Dagger

Integration with AndroidX ViewModel

If you use AndroidX ViewModel in your project, Auto Dagger can automatically provides some utilities for working with view models.

To get started, add the dependency:

dependencies {
+    implementation("se.ansman.dagger.auto:androidx-viewmodel:1.1.0")
+}
+

CoroutineScope

If you use Kotlin Coroutines, you can inject a CoroutineScope into your view models. This allows you to use a test scope when testing your view models.

The scope has the ViewModelSpecific qualifier and uses a SupervisorJob and the Dispatchers.Main.immediate dispatcher.

Usage:

@HiltViewModel
+class MyViewModel @Inject constructor(
+    @ViewModelSpecific
+    private val viewModelScope: CoroutineScope
+) : ViewModel()
+

ViewModelSpecific

ViewModelSpecific is a qualifier annotation that can be used to inject objects that are specific to a view model, but might otherwise be added to your graph such as CoroutineScope.

\ No newline at end of file diff --git a/1.1.0/integrations/ktorfit/index.html b/1.1.0/integrations/ktorfit/index.html new file mode 100644 index 000000000..102a0fb3b --- /dev/null +++ b/1.1.0/integrations/ktorfit/index.html @@ -0,0 +1,43 @@ + Ktorfit - Auto Dagger

Integration with Ktorfit

If you use Ktorfit to define your API services, you can use the @AutoProvideService to automatically contribute your services to the Dagger graph.

Firstly add the required dependency:

dependencies {
+    implementation("se.ansman.dagger.auto:ktorfit:1.1.0")
+    kapt("se.ansman.dagger.auto:compiler:1.1.0")
+    // or if you use KSP
+    ksp("se.ansman.dagger.auto:compiler:1.1.0")
+}
+

Then annotate your service with @AutoProvideService:

@AutoProvideService
+class ApiService {
+  @GET("users")
+  suspend fun getUsers(): List<User>
+}
+

You'll also need to provide a Ktorfit instance to the component you want to inject the service into:

@Module
+@InstallIn(SingletonComponent::class)
+object KtorfitModule {
+  @Provides
+  @Singleton
+  fun provideKtorfit(): Ktorfit = Ktorfit.Builder()
+      // Perform any setup you need
+      .baseUrl("https://api.example.com/")
+      .build()
+}
+

Changing the target component

By default, services are installed in the SingletonComponent. If you'd like to change this you can do so by specifying the inComponent parameter:

@AutoProvideService(inComponent = SomeOtherComponent::class)
+class ApiService {
+    // Service methods
+}
+

Qualifiers

If you have multiple ktorfit instances and use qualifiers to differentiate them, you can specify the qualifier on the service:

@AutoProvideService
+@Named("api1")
+class ApiService {
+    // Service methods
+}
+

Making the service scoped or reusable

If you'd like to cache/reuse the service instances you can annotate the service with a scope or @Reusable:

@Singleton // This must match the `inComponent` parameter of @AutoProvideService
+@AutoProvideService
+class ApiService {
+    // Service methods
+}
+
+// Or if you want to make it reusable
+@Reusable
+@AutoProvideService
+class ApiService {
+    // Service methods
+}
+

\ No newline at end of file diff --git a/1.1.0/integrations/retrofit/index.html b/1.1.0/integrations/retrofit/index.html new file mode 100644 index 000000000..8ba472a04 --- /dev/null +++ b/1.1.0/integrations/retrofit/index.html @@ -0,0 +1,44 @@ + Retrofit - Auto Dagger

Integration with Retrofit

If you use Retrofit to define your API services, you can use the @AutoProvideService to automatically contribute your services to the Dagger graph.

Firstly add the required dependency:

dependencies {
+    implementation("se.ansman.dagger.auto:retrofit:1.1.0")
+    kapt("se.ansman.dagger.auto:compiler:1.1.0")
+    // or if you use KSP
+    ksp("se.ansman.dagger.auto:compiler:1.1.0")
+}
+

Then annotate your service with @AutoProvideService:

@AutoProvideService
+class ApiService {
+  @GET("users")
+  suspend fun getUsers(): List<User>
+}
+

You'll also need to provide a Retrofit instance to the component you want to inject the service into:

@Module
+@InstallIn(SingletonComponent::class)
+object RetrofitModule {
+  @Provides
+  @Singleton
+  fun provideRetrofit(): Retrofit = Retrofit.Builder()
+      // Perform any setup you need
+      .baseUrl("https://api.example.com/")
+      .addConverterFactory(SomeConverterFactory.create())
+      .build()
+}
+

Changing the target component

By default, services are installed in the SingletonComponent. If you'd like to change this you can do so by specifying the inComponent parameter:

@AutoProvideService(inComponent = SomeOtherComponent::class)
+class ApiService {
+    // Service methods
+}
+

Qualifiers

If you have multiple retrofit instances and use qualifiers to differentiate them, you can specify the qualifier on the service:

@AutoProvideService
+@Named("api1")
+class ApiService {
+    // Service methods
+}
+

Making the service scoped or reusable

By default, provided service is unscoped and will be created every time it is injected. Retrofit caches the parsing of services so this is not an expensive operation, but it injected frequently you can avoid this by annotating your service with a scope or @Reusable:

@Singleton // This must match the `inComponent` parameter of @AutoProvideService
+@AutoProvideService
+class ApiService {
+    // Service methods
+}
+
+// Or if you want to make it reusable
+@Reusable
+@AutoProvideService
+class ApiService {
+    // Service methods
+}
+

\ No newline at end of file diff --git a/1.1.0/limitations/index.html b/1.1.0/limitations/index.html new file mode 100644 index 000000000..4580bee46 --- /dev/null +++ b/1.1.0/limitations/index.html @@ -0,0 +1,13 @@ + Limitations - Auto Dagger

Limitations

@AutoInitializable objects must be @Singleton scoped

For now, all initializable objects must be @Singleton scoped.

This is because the semantics are unclear if an objects are not scoped since AutoDaggerInitializable is not scoped so creating multiple instances of AutoDaggerInitializable would created multiple instances of unscoped objects which might be unexpected.

This limitation might be lifted in the future. If you have a use case for unscoped objects please file an issue.

@AutoBind objects must not be generic

Since Auto Dagger cannot determine actual type arguments, generic objects cannot be automatically bound.

@AutoBind only supports direct supertypes

You can only bind objects to their direct supertypes. For example this isn't supported:

interface Closeable
+
+interface Repository : Closeable
+
+// This won't work because `RealRepository` doesn't 
+// directly implement `Closeable`
+@AutoBindIntoSet(asTypes = [Closeable::class])
+@Singleton
+class RealRepository @Inject constructor() : Repository
+

To solve this just add an explicit supertype:

@AutoBindIntoSet(asTypes = [Closeable::class])
+@Singleton
+class RealRepository @Inject constructor() : Repository, Closeable
+

\ No newline at end of file diff --git a/1.1.0/search/search_index.json b/1.1.0/search/search_index.json new file mode 100644 index 000000000..69a3c7726 --- /dev/null +++ b/1.1.0/search/search_index.json @@ -0,0 +1 @@ +{"config":{"lang":["en"],"separator":"[\\s\\u200b\\-_,:!=\\[\\]()\"`/]+|\\.(?!\\d)|&[lg]t;|(?!\\b)(?=[A-Z][a-z])","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Auto Dagger","text":"

Auto Dagger allows you to automate some Dagger setup using Hilt.

For example you can use the @AutoInitialize annotation to automatically initialize objects during app launch and you can use the @AutoBind annotation to automatically bind objects.

Automatic initialization is done using AndroidX Startup.

There's also integrations with popular third party libraries such as AndroidX and Retrofit.

You can find the project on GitHub in the ansman/auto-dagger repo.

If you're looking javadoc/dokka you can find it here here.

To get set up see getting started.

"},{"location":"#examples","title":"Examples","text":""},{"location":"#autobind","title":"@AutoBind","text":"
interface Repository\n@AutoBind\n@Singleton\nclass RealRepository @Inject constructor() : Repository\n

For more detailed documentation see the @AutoBind usage.

"},{"location":"#autoinitialize","title":"@AutoInitialize","text":"
@AutoInitialize\n@Singleton\nclass SomeRepository @Inject constructor() {\ninit {\n// This will be executed at application startup, even if nobody injects it.\n}\n}\n

For more detailed documentation see the @AutoInitialize usage.

"},{"location":"getting-started/","title":"Getting Started","text":""},{"location":"getting-started/#installation","title":"Installation","text":""},{"location":"getting-started/#android-modules","title":"Android Modules","text":"

For pure Kotlin modules you need to add KAPT or KSP, the auto-dagger android dependency, the auto-dagger compiler as well as the hilt dependencies:

plugins {\nkotlin(\"kapt\") // For Groovy build scripts use id('kotlin-kapt')\n// of you use KSP:\nid(\"com.google.devtools.ksp\")\nid(\"com.google.dagger.hilt.android\") // Optional, but recommended\n}\ndependencies {\nimplementation(\"se.ansman.dagger.auto:android:1.1.0\")\nkapt(\"se.ansman.dagger.auto:compiler:1.1.0\")\n// or if you use KSP\nksp(\"se.ansman.dagger.auto:compiler:1.1.0\")\n// Add these if you want to replace objects during tests\ntestImplementation(\"se.ansman.dagger.auto:android-testing:1.1.0\")\nkaptTest(\"se.ansman.dagger.auto:compiler:1.1.0\")\n// or if you use KSP\nkspTest(\"se.ansman.dagger.auto:compiler:1.1.0\")\n// If you haven't already you need to add the Dagger dependencies\nimplementation(\"com.google.dagger:hilt-android:2.51.1\")\nkapt(\"com.google.dagger:hilt-android-compiler:2.51.1\")\n// or if you use KSP\nksp(\"se.ansman.dagger.auto:compiler:1.1.0\")\n}\n

"},{"location":"getting-started/#kotlin-modules","title":"Kotlin Modules","text":"

For pure Kotlin modules you need to add KAPT, the auto-dagger core dependency, the auto-dagger compiler as well as the hilt dependencies:

plugins {\nkotlin(\"kapt\") // For Groovy build scripts use id('kotlin-kapt')\n// of you use KSP:\nid(\"com.google.devtools.ksp\")\n}\ndependencies {\nimplementation(\"se.ansman.dagger.auto:core:1.1.0\")\nkapt(\"se.ansman.dagger.auto:compiler:1.1.0\")\n// or if you use KSP\nksp(\"se.ansman.dagger.auto:compiler:1.1.0\")\n// If you haven't already you need to add the Dagger dependencies\nimplementation(\"com.google.dagger:hilt-core:2.51.1\")\nkapt(\"com.google.dagger:hilt-compiler:2.51.1\")\n// or if you use KSP\nksp(\"com.google.dagger:hilt-compiler:2.51.1\")\n}\n

"},{"location":"getting-started/#snapshots","title":"Snapshots","text":"

Snapshots are published on every commit to Sonatype's snapshot repository. To use a snapshot add the snapshot repository:

buildscripts {\nrepositories {\n...\nmaven(\"https://s01.oss.sonatype.org/content/repositories/snapshots/\")\n}\n}\ndependencies {\nimplementation(\"se.ansman.dagger.auto:android:1.2.0-SNAPSHOT\")\nkapt(\"se.ansman.dagger.auto:compiler:1.2.0-SNAPSHOT\")\n// or if you use KSP\nksp(\"se.ansman.dagger.auto:compiler:1.2.0-SNAPSHOT\")\n}\n

"},{"location":"limitations/","title":"Limitations","text":""},{"location":"limitations/#autoinitializable-objects-must-be-singleton-scoped","title":"@AutoInitializable objects must be @Singleton scoped","text":"

For now, all initializable objects must be @Singleton scoped.

This is because the semantics are unclear if an objects are not scoped since AutoDaggerInitializable is not scoped so creating multiple instances of AutoDaggerInitializable would created multiple instances of unscoped objects which might be unexpected.

This limitation might be lifted in the future. If you have a use case for unscoped objects please file an issue.

"},{"location":"limitations/#autobind-objects-must-not-be-generic","title":"@AutoBind objects must not be generic","text":"

Since Auto Dagger cannot determine actual type arguments, generic objects cannot be automatically bound.

"},{"location":"limitations/#autobind-only-supports-direct-supertypes","title":"@AutoBind only supports direct supertypes","text":"

You can only bind objects to their direct supertypes. For example this isn't supported:

interface Closeable\ninterface Repository : Closeable\n// This won't work because `RealRepository` doesn't \n// directly implement `Closeable`\n@AutoBindIntoSet(asTypes = [Closeable::class])\n@Singleton\nclass RealRepository @Inject constructor() : Repository\n

To solve this just add an explicit supertype:

@AutoBindIntoSet(asTypes = [Closeable::class])\n@Singleton\nclass RealRepository @Inject constructor() : Repository, Closeable\n

"},{"location":"about/how-it-works/","title":"How it works","text":""},{"location":"about/how-it-works/#autobind","title":"@AutoBind","text":"

When you annotate an object with @AutoBind, Auto Dagger will generate a component which is installed into the inferred (or explicitly provided) component using Hilt.

Given this class:

interface Repository\n@AutoBind\n@Singleton\nclass RealRepository @Inject constructor() : Repository\n

Auto Dagger will generate this module:

@Module\n@InstallIn(SingletonComponent.class)\n@OriginatingElement(topLevelClass = RealRepository.class)\npublic abstract class AutoBindRealRepositorySingletonModule {\nprivate AutoBindRealRepositorySingletonModule() {}\n@Binds\npublic abstract Repository bindRealRepositoryAsRepository(RealRepository realRepository);\n}\n

"},{"location":"about/how-it-works/#autoinitialize","title":"@AutoInitialize","text":"

When you annotate an object, binding or provider with @AutoInitialize, Auto Dagger will generate a module which is installed into the SingletonComponent using Hilt.

Given this class:

@AutoInitialize\n@Singleton\nclass Repository @Inject constructor()\n

Auto Dagger will generate this module:

@Module\n@InstallIn(SingletonComponent.class)\n@OriginatingElement(topLevelClass = Repository.class)\npublic final class AutoInitializeRepositoryModule {\nprivate AutoInitializeRepositoryModule() {}\n@Provides\n@IntoSet\npublic static Initializable provideRepositoryAsInitializable(Lazy<Repository> lazyRepository) {\nreturn Initializable.fromLazy(lazyRepository);\n}\n}\n

"},{"location":"about/how-it-works/#autodaggerinitializable","title":"AutoDaggerInitializable","text":"

AutoDaggerInitializable is the container for all Initializable that should be initialized at startup. It's provided into the @Singleton component, and accepts a set of all the initializables.

Calling AutoDaggerInitializable.initialize calls initialize on each object in turn.

Any exceptions are rethrown, but only after all objects have been initialized. If multiple objects throw, then subsequent exceptions are added as suppressed exceptions.

"},{"location":"about/how-it-works/#autodaggerstartupinitializer","title":"AutoDaggerStartupInitializer","text":"

AutoDaggerStartupInitializer is the AndroidX Startup initializer that performs the initialization at startup.

"},{"location":"about/license/","title":"License","text":"
Copyright 2022-2023 Nicklas Ansman Giertz\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n

You can find the full license at ansman/auto-dagger.

"},{"location":"integrations/ktorfit/","title":"Integration with Ktorfit","text":"

If you use Ktorfit to define your API services, you can use the @AutoProvideService to automatically contribute your services to the Dagger graph.

Firstly add the required dependency:

dependencies {\nimplementation(\"se.ansman.dagger.auto:ktorfit:1.1.0\")\nkapt(\"se.ansman.dagger.auto:compiler:1.1.0\")\n// or if you use KSP\nksp(\"se.ansman.dagger.auto:compiler:1.1.0\")\n}\n

Then annotate your service with @AutoProvideService:

@AutoProvideService\nclass ApiService {\n@GET(\"users\")\nsuspend fun getUsers(): List<User>\n}\n

You'll also need to provide a Ktorfit instance to the component you want to inject the service into:

@Module\n@InstallIn(SingletonComponent::class)\nobject KtorfitModule {\n@Provides\n@Singleton\nfun provideKtorfit(): Ktorfit = Ktorfit.Builder()\n// Perform any setup you need\n.baseUrl(\"https://api.example.com/\")\n.build()\n}\n

"},{"location":"integrations/ktorfit/#changing-the-target-component","title":"Changing the target component","text":"

By default, services are installed in the SingletonComponent. If you'd like to change this you can do so by specifying the inComponent parameter:

@AutoProvideService(inComponent = SomeOtherComponent::class)\nclass ApiService {\n// Service methods\n}\n

"},{"location":"integrations/ktorfit/#qualifiers","title":"Qualifiers","text":"

If you have multiple ktorfit instances and use qualifiers to differentiate them, you can specify the qualifier on the service:

@AutoProvideService\n@Named(\"api1\")\nclass ApiService {\n// Service methods\n}\n

"},{"location":"integrations/ktorfit/#making-the-service-scoped-or-reusable","title":"Making the service scoped or reusable","text":"

If you'd like to cache/reuse the service instances you can annotate the service with a scope or @Reusable:

@Singleton // This must match the `inComponent` parameter of @AutoProvideService\n@AutoProvideService\nclass ApiService {\n// Service methods\n}\n// Or if you want to make it reusable\n@Reusable\n@AutoProvideService\nclass ApiService {\n// Service methods\n}\n

"},{"location":"integrations/retrofit/","title":"Integration with Retrofit","text":"

If you use Retrofit to define your API services, you can use the @AutoProvideService to automatically contribute your services to the Dagger graph.

Firstly add the required dependency:

dependencies {\nimplementation(\"se.ansman.dagger.auto:retrofit:1.1.0\")\nkapt(\"se.ansman.dagger.auto:compiler:1.1.0\")\n// or if you use KSP\nksp(\"se.ansman.dagger.auto:compiler:1.1.0\")\n}\n

Then annotate your service with @AutoProvideService:

@AutoProvideService\nclass ApiService {\n@GET(\"users\")\nsuspend fun getUsers(): List<User>\n}\n

You'll also need to provide a Retrofit instance to the component you want to inject the service into:

@Module\n@InstallIn(SingletonComponent::class)\nobject RetrofitModule {\n@Provides\n@Singleton\nfun provideRetrofit(): Retrofit = Retrofit.Builder()\n// Perform any setup you need\n.baseUrl(\"https://api.example.com/\")\n.addConverterFactory(SomeConverterFactory.create())\n.build()\n}\n

"},{"location":"integrations/retrofit/#changing-the-target-component","title":"Changing the target component","text":"

By default, services are installed in the SingletonComponent. If you'd like to change this you can do so by specifying the inComponent parameter:

@AutoProvideService(inComponent = SomeOtherComponent::class)\nclass ApiService {\n// Service methods\n}\n

"},{"location":"integrations/retrofit/#qualifiers","title":"Qualifiers","text":"

If you have multiple retrofit instances and use qualifiers to differentiate them, you can specify the qualifier on the service:

@AutoProvideService\n@Named(\"api1\")\nclass ApiService {\n// Service methods\n}\n

"},{"location":"integrations/retrofit/#making-the-service-scoped-or-reusable","title":"Making the service scoped or reusable","text":"

By default, provided service is unscoped and will be created every time it is injected. Retrofit caches the parsing of services so this is not an expensive operation, but it injected frequently you can avoid this by annotating your service with a scope or @Reusable:

@Singleton // This must match the `inComponent` parameter of @AutoProvideService\n@AutoProvideService\nclass ApiService {\n// Service methods\n}\n// Or if you want to make it reusable\n@Reusable\n@AutoProvideService\nclass ApiService {\n// Service methods\n}\n

"},{"location":"integrations/androidx/room/","title":"Integration with AndroidX Room","text":"

If you use AndroidX Room in your project, Auto Dagger can automatically provides some utilities for working with databases.

To get started, add the dependency:

dependencies {\nimplementation(\"se.ansman.dagger.auto:androidx-room:1.1.0\")\nkapt(\"se.ansman.dagger.auto:compiler:1.1.0\")\n// or if you use KSP\nksp(\"se.ansman.dagger.auto:compiler:1.1.0\")\n}\n

"},{"location":"integrations/androidx/room/#automatically-providing-daos","title":"Automatically providing DAOs","text":"

You can annotate your RoomDatabase with @AutoProvideDaos to automatically provide all DAOs in the database:

@Database(entities = [User::class], version = 1)\n@AutoProvideDaos\nabstract class AppDatabase : RoomDatabase() {\nabstract val users: UserDao\n}\n

Now you can inject UserDao directly.

By default, the DAOs will be provided in the SingletonComponent. If you want to change the component you can use the inComponent parameter:

@Database(entities = [User::class], version = 1)\n@AutoProvideDaos(inComponent = SomeOtherComponent::class)\nabstract class AppDatabase : RoomDatabase() {\nabstract val users: UserDao\n}\n

For now, the database must directly extend RoomDatabase. Having it as an indirect superclass is not supported. If you need support for this open a feature request and detail your use case.

"},{"location":"integrations/androidx/viewmodel/","title":"Integration with AndroidX ViewModel","text":"

If you use AndroidX ViewModel in your project, Auto Dagger can automatically provides some utilities for working with view models.

To get started, add the dependency:

dependencies {\nimplementation(\"se.ansman.dagger.auto:androidx-viewmodel:1.1.0\")\n}\n

"},{"location":"integrations/androidx/viewmodel/#coroutinescope","title":"CoroutineScope","text":"

If you use Kotlin Coroutines, you can inject a CoroutineScope into your view models. This allows you to use a test scope when testing your view models.

The scope has the ViewModelSpecific qualifier and uses a SupervisorJob and the Dispatchers.Main.immediate dispatcher.

Usage:

@HiltViewModel\nclass MyViewModel @Inject constructor(\n@ViewModelSpecific\nprivate val viewModelScope: CoroutineScope\n) : ViewModel()\n

"},{"location":"integrations/androidx/viewmodel/#viewmodelspecific","title":"ViewModelSpecific","text":"

ViewModelSpecific is a qualifier annotation that can be used to inject objects that are specific to a view model, but might otherwise be added to your graph such as CoroutineScope.

"},{"location":"usage/auto-bind/","title":"@AutoBind Usage","text":"

To bind objects automatically you just need to annotate a class with the @AutoBind annotation (or @AutoBindIntoSet for binding into a set and @AutoBindIntoMap for binding into a map).

interface Repository\n@AutoBind\n@Singleton\nclass RealRepository @Inject constructor() : Repository\n// Generates the equivalent to:\n@Binds\nabstract fun RealRepository.bindRealRepositoryAsRepository(): Repository\n
"},{"location":"usage/auto-bind/#multibindings","title":"Multibindings","text":"

If you need to bind a object into a set or map you can use @AutoBindIntoSet or @AutoBindIntoMap respectively.

// Binds ExternalResource as Closeable using @IntoSet\n@AutoBindIntoSet\n// Binds ExternalResource as Closeable using @IntoMap with\n// `StringKey` as the map key\n@AutoBindIntoMap\n@StringKey(\"ExternalResourceCloseable\")\n@Singleton\nclass ExternalResource @Inject constructor() : Closeable {\noverride fun close() {}\n}\n// Generates the equivalent to:\n@Binds\n@IntoSet\nabstract fun ExternalResource.bindExternalResourceAsCloseableIntoSet(): Closeable\n@Binds\n@IntoMap\n@StringKey(\"ExternalResourceCloseable\")\nabstract fun ExternalResource.bindExternalResourceAsCloseableIntoMap(): Closeable\n
"},{"location":"usage/auto-bind/#component","title":"Component","text":"

AutoDagger will try to infer the component to install the binding in using the scope. The following mapping is used:

Scope Component No scope SingletonComponent Singleton SingletonComponent Reusable SingletonComponent ActivityRetainedScoped ActivityRetainedComponent ActivityScoped ActivityComponent FragmentScoped FragmentComponent ServiceScoped ServiceComponent ViewScoped ViewComponent ViewModelScoped ViewModelComponent ViewWithFragmentScoped ViewWithFragmentComponent

If you are are using custom scopes or want to change which component the binding is installed in, you can use the inComponent property:

@AutoBind(inComponent = SomeComponent::class)\nclass ExternalResource @Inject constructor() : Closeable {\noverride fun close() {}\n}\n

"},{"location":"usage/auto-bind/#binding-multiple-types","title":"Binding multiple types","text":"

If your object has multiple direct supertypes, you need to specify which ones to bind explicitly using the asTypes parameter:

@AutoBind(asTypes = [Closeable::class])\nclass ExternalResource @Inject constructor() : Runnable, Closeable {\noverride fun run() {}\noverride fun close() {}\n}\n

You can bind multiple types, but only direct supertypes can be bound (see limitations).

"},{"location":"usage/auto-bind/#objects","title":"Objects","text":"

Normally the bound object needs to be provided to the dependency graph using either an @Provides annotated method or using an @Inject annotated constructor.

Auto Dagger allows you to annotate a Kotlin object with @AutoBind without it being provided in the graph. This is especially useful for tests:

@AutoBind\nobject DirectExecutor : Executor {\noverride fun execute(command: Runnable) {\ncommand.run()\n}\n}\n

"},{"location":"usage/auto-bind/#generics","title":"Generics","text":"

When using multibindings, it's often useful to be able to bind generic types as wildcard.

Auto Dagger will, by default, bind the exact type of the supertype. But using the bindGenericAs parameter you can chose to bind it as a wildcard instead.

For types you own, it's sometimes useful to specify a different default for bindGenericAs. For example, say you have a Resource<T> interface. You probably want to always bind this using wildcards since every resource will have a unique type for T. So you can annotate Resource with @BindGenericAs.Default(BindGenericAs.Wildcard) to indicate that, unless specified explicitly, it should be bound as Resource<*>.

// This will bind StringCallable as Callable<*>\n@AutoBindIntoSet(bindGenericAs = BindGenericAs.Wildcard)\nclass StringCallable @Inject constructor() : Callable<String> {\noverride fun call(): String = \"\"\n}\n// For types you own you can specify @BindGenericAs.Default to change the default.\n@BindGenericAs.Default(BindGenericAs.Wildcard)\ninterface Resource<T>\n// This will be bound as Resource<*> since the default has been set to wildcard for Resource.\n@AutoBindIntoSet\nclass SomeResource @Inject constructor() : Resource<Something>\n

There are 3 options for bindGenericAs:

  • Type - Binds the object to the exact supertype (Callable<String> in the example above). This is the default unless set with @BindGenericAs.Default.
  • Wildcard - Binds the object using wildcards (Callable<*> in the example above).
  • TypeAndWildcard - Binds the object as both the exact type and using wildcards.
"},{"location":"usage/auto-initialize/","title":"@AutoInitialize Usage","text":"

Simply annotate any @Singleton scoped object, provider or binding with @AutoInitialize to make it be automatically initialized when your application launches.

@AutoInitialize\n@Singleton\nclass SomeRepository @Inject constructor() {\ninit {\n// This will be executed at application startup, even if nobody injects it.\n}\n}\n
"},{"location":"usage/auto-initialize/#initializable","title":"Initializable","text":"

It's often considered bad practice to have side effects in a constructor/initializer block. If this is a concern, your object can implement the Initializable interface. Auto Dagger will then call initialize when it's time to initialize.

@AutoInitialize\n@Singleton\nclass SomeRepository @Inject constructor() : Initializable {\noverride fun initialize() {\n// This will be executed at application startup, even if nobody injects it.\n}\n}\n
"},{"location":"usage/auto-initialize/#priority","title":"Priority","text":"

By default objects are initialized in an undefined order. This can be changed by setting a priority.

Objects are initialized in descending priority with the default priority being 1. Setting the priority to 0 or below makes the object be initialized after objects with the default priority and setting the priority to 2 or above initializes it before.

@AutoInitialize(priority = 4711)\n@Singleton\nclass ImportantRepository @Inject constructor() {\noverride fun initialize() {\n// This will be called earlier than objects without a priority\n}\n}\n
"},{"location":"usage/auto-initialize/#androidx-startup","title":"AndroidX Startup","text":"

Auto Dagger uses AndroidX Startup to initialize objects at startup.

If you prefer to not use this you can just depend on the core artifact which won't pull in AndroidX Startup.

To initialize the objects manually, use AutoDaggerInitializer.

@HiltAndroidApp\nclass TheApp : Application() {\n@Inject\nlateinit var initializer: AutoDaggerInitializer\noverride fun onCreate() {\nsuper.onCreate()\ninitializer.initialize()\n}\n}\n
"},{"location":"usage/replaces/","title":"@Replaces Usage","text":"

During tests it's often useful to swap out real dependencies for fake dependencies. If you're using @AutoBind to bind your dependencies then it's trivial to swap out dependencies during tests using the @Replaces annotation:

interface Repository\n@AutoBind\n@Singleton\nclass RealRepository @Inject constructor() : Repository\n// In your test source set\n@Replaces(RealRepository::class)\n@Singleton\nclass FakeRepository @Inject constructor() : Repository\n

To use @Replaces there are some requirements:

  • The replacement must implement the types bound the target.
  • The replacement target must be annotated with @AutoBind.
  • The replacement must not be annotated with @AutoBind, @AutoBindIntoSet, @AutoBindIntoMap, or @AutoInitialize.
"},{"location":"usage/replaces/#multibindings","title":"Multibindings","text":"

If the replaced type uses multibindings (@AutoBindIntoSet or @AutoBindIntoMap) then those are only replaced if the annotated type also implements them. Otherwise the multibinding is removed.

So for example. If the target type uses @AutoBindIntoSet to bind it as a Closeable but your replacement doesn't implement Closeable then that binding is removed. If it does implement Closeable then the binding is replaced with the fake binding.

"},{"location":"usage/replaces/#auto-initialize","title":"Auto Initialize","text":"

If the target type is annotated with @AutoInitialize, then an empty module will be generated to replace the auto initialize module, effectively removing it.

"},{"location":"usage/replaces/#objects","title":"Objects","text":"

Normally the replacement object needs to be provided to the dependency graph using either an @Provides annotated method or using an @Inject annotated constructor.

Auto Dagger allows you to annotate a Kotlin object with @Replaces without it being provided in the graph. This is especially useful for tests:

@Replaces(ThreadPoolExecutor::class)\nobject DirectExecutor : Executor {\noverride fun execute(command: Runnable) {\ncommand.run()\n}\n}\n

"}]} \ No newline at end of file diff --git a/1.1.0/sitemap.xml b/1.1.0/sitemap.xml new file mode 100644 index 000000000..2b8c3cc67 --- /dev/null +++ b/1.1.0/sitemap.xml @@ -0,0 +1,63 @@ + + + + https://github.com/ansman/auto-dagger/ + 2024-04-15 + daily + + + https://github.com/ansman/auto-dagger/getting-started/ + 2024-04-15 + daily + + + https://github.com/ansman/auto-dagger/limitations/ + 2024-04-15 + daily + + + https://github.com/ansman/auto-dagger/about/how-it-works/ + 2024-04-15 + daily + + + https://github.com/ansman/auto-dagger/about/license/ + 2024-04-15 + daily + + + https://github.com/ansman/auto-dagger/integrations/ktorfit/ + 2024-04-15 + daily + + + https://github.com/ansman/auto-dagger/integrations/retrofit/ + 2024-04-15 + daily + + + https://github.com/ansman/auto-dagger/integrations/androidx/room/ + 2024-04-15 + daily + + + https://github.com/ansman/auto-dagger/integrations/androidx/viewmodel/ + 2024-04-15 + daily + + + https://github.com/ansman/auto-dagger/usage/auto-bind/ + 2024-04-15 + daily + + + https://github.com/ansman/auto-dagger/usage/auto-initialize/ + 2024-04-15 + daily + + + https://github.com/ansman/auto-dagger/usage/replaces/ + 2024-04-15 + daily + + \ No newline at end of file diff --git a/1.1.0/sitemap.xml.gz b/1.1.0/sitemap.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..4a4c611b3f494afd4f15bc2aba74cac96e1dc960 GIT binary patch literal 330 zcmV-Q0k!@giwFp%CLLx1|8r?{Wo=<_E_iKh0M(XFZo?oDh4(py*NjK~&6MGGTdk7i^iOPa=m~^8r-p8fD(ns5_>eX7+YqfmJmb>;~GaUqn`-GpZ z1@d2weo$^q`WNc&cn(GKUMUtxf_Cb-o_Z3HeAqm7RM^EqbQecOqQ;mGGa>e5FfdLX zmV%&5_p5M_nD!*IVooS2&J7xZO_A(br @AutoBind - Auto Dagger

@AutoBind Usage

To bind objects automatically you just need to annotate a class with the @AutoBind annotation (or @AutoBindIntoSet for binding into a set and @AutoBindIntoMap for binding into a map).

interface Repository
+
+@AutoBind
+@Singleton
+class RealRepository @Inject constructor() : Repository
+
+// Generates the equivalent to:
+@Binds
+abstract fun RealRepository.bindRealRepositoryAsRepository(): Repository
+

Multibindings

If you need to bind a object into a set or map you can use @AutoBindIntoSet or @AutoBindIntoMap respectively.

// Binds ExternalResource as Closeable using @IntoSet
+@AutoBindIntoSet
+// Binds ExternalResource as Closeable using @IntoMap with
+// `StringKey` as the map key
+@AutoBindIntoMap
+@StringKey("ExternalResourceCloseable")
+@Singleton
+class ExternalResource @Inject constructor() : Closeable {
+    override fun close() {}
+}
+
+// Generates the equivalent to:
+@Binds
+@IntoSet
+abstract fun ExternalResource.bindExternalResourceAsCloseableIntoSet(): Closeable
+
+@Binds
+@IntoMap
+@StringKey("ExternalResourceCloseable")
+abstract fun ExternalResource.bindExternalResourceAsCloseableIntoMap(): Closeable
+

Component

AutoDagger will try to infer the component to install the binding in using the scope. The following mapping is used:

Scope Component
No scope SingletonComponent
Singleton SingletonComponent
Reusable SingletonComponent
ActivityRetainedScoped ActivityRetainedComponent
ActivityScoped ActivityComponent
FragmentScoped FragmentComponent
ServiceScoped ServiceComponent
ViewScoped ViewComponent
ViewModelScoped ViewModelComponent
ViewWithFragmentScoped ViewWithFragmentComponent

If you are are using custom scopes or want to change which component the binding is installed in, you can use the inComponent property:

@AutoBind(inComponent = SomeComponent::class)
+class ExternalResource @Inject constructor() : Closeable {
+    override fun close() {}
+}
+

Binding multiple types

If your object has multiple direct supertypes, you need to specify which ones to bind explicitly using the asTypes parameter:

@AutoBind(asTypes = [Closeable::class])
+class ExternalResource @Inject constructor() : Runnable, Closeable {
+    override fun run() {}
+    override fun close() {}
+}
+

You can bind multiple types, but only direct supertypes can be bound (see limitations).

Objects

Normally the bound object needs to be provided to the dependency graph using either an @Provides annotated method or using an @Inject annotated constructor.

Auto Dagger allows you to annotate a Kotlin object with @AutoBind without it being provided in the graph. This is especially useful for tests:

@AutoBind
+object DirectExecutor : Executor {
+  override fun execute(command: Runnable) {
+    command.run()
+  }
+}
+

Generics

When using multibindings, it's often useful to be able to bind generic types as wildcard.

Auto Dagger will, by default, bind the exact type of the supertype. But using the bindGenericAs parameter you can chose to bind it as a wildcard instead.

For types you own, it's sometimes useful to specify a different default for bindGenericAs. For example, say you have a Resource<T> interface. You probably want to always bind this using wildcards since every resource will have a unique type for T. So you can annotate Resource with @BindGenericAs.Default(BindGenericAs.Wildcard) to indicate that, unless specified explicitly, it should be bound as Resource<*>.

// This will bind StringCallable as Callable<*>
+@AutoBindIntoSet(bindGenericAs = BindGenericAs.Wildcard)
+class StringCallable @Inject constructor() : Callable<String> {
+    override fun call(): String = ""
+}
+
+// For types you own you can specify @BindGenericAs.Default to change the default.
+@BindGenericAs.Default(BindGenericAs.Wildcard)
+interface Resource<T>
+
+// This will be bound as Resource<*> since the default has been set to wildcard for Resource.
+@AutoBindIntoSet
+class SomeResource @Inject constructor() : Resource<Something>
+

There are 3 options for bindGenericAs:

  • Type - Binds the object to the exact supertype (Callable<String> in the example above). This is the default unless set with @BindGenericAs.Default.
  • Wildcard - Binds the object using wildcards (Callable<*> in the example above).
  • TypeAndWildcard - Binds the object as both the exact type and using wildcards.
\ No newline at end of file diff --git a/1.1.0/usage/auto-initialize/index.html b/1.1.0/usage/auto-initialize/index.html new file mode 100644 index 000000000..4a10ce3fb --- /dev/null +++ b/1.1.0/usage/auto-initialize/index.html @@ -0,0 +1,32 @@ + @AutoInitialize - Auto Dagger

@AutoInitialize Usage

Simply annotate any @Singleton scoped object, provider or binding with @AutoInitialize to make it be automatically initialized when your application launches.

@AutoInitialize
+@Singleton
+class SomeRepository @Inject constructor() {
+    init {
+        // This will be executed at application startup, even if nobody injects it.
+    }
+}
+

Initializable

It's often considered bad practice to have side effects in a constructor/initializer block. If this is a concern, your object can implement the Initializable interface. Auto Dagger will then call initialize when it's time to initialize.

@AutoInitialize
+@Singleton
+class SomeRepository @Inject constructor() : Initializable {
+    override fun initialize() {
+        // This will be executed at application startup, even if nobody injects it.
+    }
+}
+

Priority

By default objects are initialized in an undefined order. This can be changed by setting a priority.

Objects are initialized in descending priority with the default priority being 1. Setting the priority to 0 or below makes the object be initialized after objects with the default priority and setting the priority to 2 or above initializes it before.

@AutoInitialize(priority = 4711)
+@Singleton
+class ImportantRepository @Inject constructor() {
+    override fun initialize() {
+        // This will be called earlier than objects without a priority
+    }
+}
+

AndroidX Startup

Auto Dagger uses AndroidX Startup to initialize objects at startup.

If you prefer to not use this you can just depend on the core artifact which won't pull in AndroidX Startup.

To initialize the objects manually, use AutoDaggerInitializer.

@HiltAndroidApp
+class TheApp : Application() {
+    @Inject
+    lateinit var initializer: AutoDaggerInitializer
+
+    override fun onCreate() {
+        super.onCreate()
+        initializer.initialize()
+    }
+}
+
\ No newline at end of file diff --git a/1.1.0/usage/replaces/index.html b/1.1.0/usage/replaces/index.html new file mode 100644 index 000000000..e46f4361d --- /dev/null +++ b/1.1.0/usage/replaces/index.html @@ -0,0 +1,17 @@ + @Replaces - Auto Dagger

@Replaces Usage

During tests it's often useful to swap out real dependencies for fake dependencies. If you're using @AutoBind to bind your dependencies then it's trivial to swap out dependencies during tests using the @Replaces annotation:

interface Repository
+
+@AutoBind
+@Singleton
+class RealRepository @Inject constructor() : Repository
+
+// In your test source set
+@Replaces(RealRepository::class)
+@Singleton
+class FakeRepository @Inject constructor() : Repository
+

To use @Replaces there are some requirements:

  • The replacement must implement the types bound the target.
  • The replacement target must be annotated with @AutoBind.
  • The replacement must not be annotated with @AutoBind, @AutoBindIntoSet, @AutoBindIntoMap, or @AutoInitialize.

Multibindings

If the replaced type uses multibindings (@AutoBindIntoSet or @AutoBindIntoMap) then those are only replaced if the annotated type also implements them. Otherwise the multibinding is removed.

So for example. If the target type uses @AutoBindIntoSet to bind it as a Closeable but your replacement doesn't implement Closeable then that binding is removed. If it does implement Closeable then the binding is replaced with the fake binding.

Auto Initialize

If the target type is annotated with @AutoInitialize, then an empty module will be generated to replace the auto initialize module, effectively removing it.

Objects

Normally the replacement object needs to be provided to the dependency graph using either an @Provides annotated method or using an @Inject annotated constructor.

Auto Dagger allows you to annotate a Kotlin object with @Replaces without it being provided in the graph. This is especially useful for tests:

@Replaces(ThreadPoolExecutor::class)
+object DirectExecutor : Executor {
+  override fun execute(command: Runnable) {
+    command.run()
+  }
+}
+

\ No newline at end of file diff --git a/dokka/core/index.html b/dokka/core/index.html index d1d359f22..26b27d0ba 100644 --- a/dokka/core/index.html +++ b/dokka/core/index.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.1.0
+ +
+
@@ -86,7 +90,7 @@

Packages

diff --git a/dokka/core/navigation.html b/dokka/core/navigation.html index 3e11ed8e5..d01bc5f2d 100644 --- a/dokka/core/navigation.html +++ b/dokka/core/navigation.html @@ -1,69 +1,4 @@ -
+ + + + + +
-
+
- diff --git a/dokka/core/se.ansman.dagger.auto/-auto-bind-into-map/as-types.html b/dokka/core/se.ansman.dagger.auto/-auto-bind-into-map/as-types.html index cdfa39f86..bde296b2b 100644 --- a/dokka/core/se.ansman.dagger.auto/-auto-bind-into-map/as-types.html +++ b/dokka/core/se.ansman.dagger.auto/-auto-bind-into-map/as-types.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.1.0
+ +
+
@@ -64,10 +68,10 @@

asTypes

-

Parameters

asTypes

Specifies which supertypes to bind the object as. Required if there are multiple supertypes.

+

Parameters

asTypes

Specifies which supertypes to bind the object as. Required if there are multiple supertypes.

diff --git a/dokka/core/se.ansman.dagger.auto/-auto-bind-into-map/bind-generic-as.html b/dokka/core/se.ansman.dagger.auto/-auto-bind-into-map/bind-generic-as.html index af703d01e..0d93a1de1 100644 --- a/dokka/core/se.ansman.dagger.auto/-auto-bind-into-map/bind-generic-as.html +++ b/dokka/core/se.ansman.dagger.auto/-auto-bind-into-map/bind-generic-as.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.1.0
+ +
+
@@ -64,10 +68,10 @@

bindGenericAs

-

Parameters

bindGenericAs

Specifies how generic supertypes should be bound. Defaults to BindGenericAs.ExactType or if the target type is annotated with BindGenericAs.Default.

+

Parameters

bindGenericAs

Specifies how generic supertypes should be bound. Defaults to BindGenericAs.ExactType or if the target type is annotated with BindGenericAs.Default.

diff --git a/dokka/core/se.ansman.dagger.auto/-auto-bind-into-map/in-component.html b/dokka/core/se.ansman.dagger.auto/-auto-bind-into-map/in-component.html index 7332ce74c..c6b16bc42 100644 --- a/dokka/core/se.ansman.dagger.auto/-auto-bind-into-map/in-component.html +++ b/dokka/core/se.ansman.dagger.auto/-auto-bind-into-map/in-component.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.1.0
+ +
+
@@ -64,10 +68,10 @@

inComponent

-

Parameters

inComponent

Which component to install the binding in. Defaults to being inferred based on the scope.

+

Parameters

inComponent

Which component to install the binding in. Defaults to being inferred based on the scope.

diff --git a/dokka/core/se.ansman.dagger.auto/-auto-bind-into-map/index.html b/dokka/core/se.ansman.dagger.auto/-auto-bind-into-map/index.html index fe1be91b9..1f6ff3a9e 100644 --- a/dokka/core/se.ansman.dagger.auto/-auto-bind-into-map/index.html +++ b/dokka/core/se.ansman.dagger.auto/-auto-bind-into-map/index.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.1.0
+ +
+
@@ -63,7 +67,7 @@

AutoBindIntoMap

-
@Target(allowedTargets = [AnnotationTarget.CLASS])
annotation class AutoBindIntoMap(val inComponent: KClass<*> = Nothing::class, val asTypes: Array<KClass<*>> = [], val bindGenericAs: BindGenericAs = BindGenericAs.ExactType)(source)

A version of AutoBind that binds the object using IntoMap. The object must also be annotated with a MapKey annotated annotation such as StringKey, MapKey, or a custom annotation.

For more documentation on auto bind see AutoBind.

See also https://dagger.dev/dev-guide/multibindings.html#map-multibindings

Since

1.0.0

Parameters

inComponent

Which component to install the binding in. Defaults to being inferred based on the scope.

asTypes

Specifies which supertypes to bind the object as. Required if there are multiple supertypes.

bindGenericAs

Specifies how generic supertypes should be bound. Defaults to BindGenericAs.ExactType or if the target type is annotated with BindGenericAs.Default.

See also

+
@Target(allowedTargets = [AnnotationTarget.CLASS])
annotation class AutoBindIntoMap(val inComponent: KClass<*> = Nothing::class, val asTypes: Array<KClass<*>> = [], val bindGenericAs: BindGenericAs = BindGenericAs.ExactType)(source)

A version of AutoBind that binds the object using IntoMap. The object must also be annotated with a MapKey annotated annotation such as StringKey, MapKey, or a custom annotation.

For more documentation on auto bind see AutoBind.

See also https://dagger.dev/dev-guide/multibindings.html#map-multibindings

Since

1.0.0

Parameters

inComponent

Which component to install the binding in. Defaults to being inferred based on the scope.

asTypes

Specifies which supertypes to bind the object as. Required if there are multiple supertypes.

bindGenericAs

Specifies how generic supertypes should be bound. Defaults to BindGenericAs.ExactType or if the target type is annotated with BindGenericAs.Default.

See also

@@ -80,7 +84,7 @@

Properties

- +
@@ -95,7 +99,7 @@

Properties

@@ -110,7 +114,7 @@

Properties

- +
@@ -121,7 +125,7 @@

Properties

diff --git a/dokka/core/se.ansman.dagger.auto/-auto-bind-into-set/as-types.html b/dokka/core/se.ansman.dagger.auto/-auto-bind-into-set/as-types.html index 99fd8948b..a2b878915 100644 --- a/dokka/core/se.ansman.dagger.auto/-auto-bind-into-set/as-types.html +++ b/dokka/core/se.ansman.dagger.auto/-auto-bind-into-set/as-types.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.1.0
+ +
+
@@ -64,10 +68,10 @@

asTypes

-

Parameters

asTypes

Specifies which supertypes to bind the object as. Required if there are multiple supertypes.

+

Parameters

asTypes

Specifies which supertypes to bind the object as. Required if there are multiple supertypes.

diff --git a/dokka/core/se.ansman.dagger.auto/-auto-bind-into-set/bind-generic-as.html b/dokka/core/se.ansman.dagger.auto/-auto-bind-into-set/bind-generic-as.html index 9c6442174..842f2f5af 100644 --- a/dokka/core/se.ansman.dagger.auto/-auto-bind-into-set/bind-generic-as.html +++ b/dokka/core/se.ansman.dagger.auto/-auto-bind-into-set/bind-generic-as.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.1.0
+ +
+
@@ -64,10 +68,10 @@

bindGenericAs

-

Parameters

bindGenericAs

Specifies how generic supertypes should be bound. Defaults to BindGenericAs.ExactType or if the target type is annotated with BindGenericAs.Default.

+

Parameters

bindGenericAs

Specifies how generic supertypes should be bound. Defaults to BindGenericAs.ExactType or if the target type is annotated with BindGenericAs.Default.

diff --git a/dokka/core/se.ansman.dagger.auto/-auto-bind-into-set/in-component.html b/dokka/core/se.ansman.dagger.auto/-auto-bind-into-set/in-component.html index 73ce4f7e8..688915d73 100644 --- a/dokka/core/se.ansman.dagger.auto/-auto-bind-into-set/in-component.html +++ b/dokka/core/se.ansman.dagger.auto/-auto-bind-into-set/in-component.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.1.0
+ +
+
@@ -64,10 +68,10 @@

inComponent

-

Parameters

inComponent

Which component to install the binding in. Defaults to being inferred based on the scope.

+

Parameters

inComponent

Which component to install the binding in. Defaults to being inferred based on the scope.

diff --git a/dokka/core/se.ansman.dagger.auto/-auto-bind-into-set/index.html b/dokka/core/se.ansman.dagger.auto/-auto-bind-into-set/index.html index b21548d4b..054c15a11 100644 --- a/dokka/core/se.ansman.dagger.auto/-auto-bind-into-set/index.html +++ b/dokka/core/se.ansman.dagger.auto/-auto-bind-into-set/index.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.1.0
+ +
+
@@ -63,7 +67,7 @@

AutoBindIntoSet

-
@Target(allowedTargets = [AnnotationTarget.CLASS])
annotation class AutoBindIntoSet(val inComponent: KClass<*> = Nothing::class, val asTypes: Array<KClass<*>> = [], val bindGenericAs: BindGenericAs = BindGenericAs.ExactType)(source)

A version of AutoBind that binds the object using IntoSet.

For more documentation on auto bind see AutoBind.

See also Set Multibindings

Since

1.0.0

Parameters

inComponent

Which component to install the binding in. Defaults to being inferred based on the scope.

asTypes

Specifies which supertypes to bind the object as. Required if there are multiple supertypes.

bindGenericAs

Specifies how generic supertypes should be bound. Defaults to BindGenericAs.ExactType or if the target type is annotated with BindGenericAs.Default.

See also

+
@Target(allowedTargets = [AnnotationTarget.CLASS])
annotation class AutoBindIntoSet(val inComponent: KClass<*> = Nothing::class, val asTypes: Array<KClass<*>> = [], val bindGenericAs: BindGenericAs = BindGenericAs.ExactType)(source)

A version of AutoBind that binds the object using IntoSet.

For more documentation on auto bind see AutoBind.

See also Set Multibindings

Since

1.0.0

Parameters

inComponent

Which component to install the binding in. Defaults to being inferred based on the scope.

asTypes

Specifies which supertypes to bind the object as. Required if there are multiple supertypes.

bindGenericAs

Specifies how generic supertypes should be bound. Defaults to BindGenericAs.ExactType or if the target type is annotated with BindGenericAs.Default.

See also

@@ -80,7 +84,7 @@

Properties

- +
@@ -95,7 +99,7 @@

Properties

@@ -110,7 +114,7 @@

Properties

- +
@@ -121,7 +125,7 @@

Properties

diff --git a/dokka/core/se.ansman.dagger.auto/-auto-bind/as-types.html b/dokka/core/se.ansman.dagger.auto/-auto-bind/as-types.html index 1ab270820..653977a01 100644 --- a/dokka/core/se.ansman.dagger.auto/-auto-bind/as-types.html +++ b/dokka/core/se.ansman.dagger.auto/-auto-bind/as-types.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.1.0
+ +
+
@@ -64,10 +68,10 @@

asTypes

-

Parameters

asTypes

Specifies which supertypes to bind the object as. Required if there are multiple supertypes.

+

Parameters

asTypes

Specifies which supertypes to bind the object as. Required if there are multiple supertypes.

diff --git a/dokka/core/se.ansman.dagger.auto/-auto-bind/in-component.html b/dokka/core/se.ansman.dagger.auto/-auto-bind/in-component.html index 2d13a98ef..e86d7a617 100644 --- a/dokka/core/se.ansman.dagger.auto/-auto-bind/in-component.html +++ b/dokka/core/se.ansman.dagger.auto/-auto-bind/in-component.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.1.0
+ +
+
@@ -64,10 +68,10 @@

inComponent

-

Parameters

inComponent

Which component to install the binding in. Defaults to being inferred based on the scope.

+

Parameters

inComponent

Which component to install the binding in. Defaults to being inferred based on the scope.

diff --git a/dokka/core/se.ansman.dagger.auto/-auto-bind/index.html b/dokka/core/se.ansman.dagger.auto/-auto-bind/index.html index 334939e44..fdb2cee8c 100644 --- a/dokka/core/se.ansman.dagger.auto/-auto-bind/index.html +++ b/dokka/core/se.ansman.dagger.auto/-auto-bind/index.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.1.0
+ +
+
@@ -63,7 +67,7 @@

AutoBind

-
@Target(allowedTargets = [AnnotationTarget.CLASS])
annotation class AutoBind(val inComponent: KClass<*> = Nothing::class, val asTypes: Array<KClass<*>> = [])(source)

Instructs Auto Dagger to automatically bind the annotated type as its parent type.

To use this annotation the class must:

  • Not be generic - To bind generic types implement your own binding that provides the type arguments.

  • Have exactly one direct supertype - If you have multiple supertypes then specify which to bind using asTypes.

Only direct supertypes can be bound. For example, if your class implements Closeable you cannot bind it as AutoCloseable (which is a supertype of Closeable). To work around this, add the bound type as an explicit supertype.

Example

interface Repository

@AutoBind
@Singleton
class RealRepository @Inject constructor() : Repository

// Generates the equivalent to:
@Binds
abstract fun RealRepository.bindRealRepositoryAsRepository(): Repository

Component

Auto Dagger tries to infer the component based on the scope of the object using the following mapping:

ScopeComponent
No scopeSingletonComponent
SingletonSingletonComponent
ReusableSingletonComponent
ActivityRetainedScopedActivityRetainedComponent
ActivityScopedActivityComponent
FragmentScopedFragmentComponent
ServiceScopedServiceComponent
ViewScopedViewComponent
ViewModelScopedViewModelComponent
ViewWithFragmentScopedViewWithFragmentComponent

If you want to install the binding in a different component or if you're using a custom scope, then you can use the inComponent parameter to explicit provide the component.

Multiple supertypes

If you have multiple supertypes use the asTypes parameter to specify which of them to bind. You only need to specify the raw class name if the type is generic (i.e. if your type implements Callable<Stuff> you pass asTypes = [Callable::class] to indicate you want to bind it).

Objects

Normally the bound object needs to be provided to the dependency graph using either an @Provides annotated method or using an @Inject annotated constructor.

Auto Dagger allows you to annotate a Kotlin object with @AutoBind without it being provided in the graph. This is especially useful for tests:

@AutoBind
object DirectExecutor : Executor {
override fun execute(command: Runnable) {
command.run()
}
}

Multibinding

To bind the object using multibinding, use AutoBindIntoSet and/or AutoBindIntoMap. These can be used at the same time as AutoBind.

Qualifiers

Any Qualifiers on the annotated type will be carried over to the binding:

@Named("Prod")
@AutoBind
class ProdAuthenticator @Inject constructor() : Authenticator

// Generates the equivalent to:
@Binds @Named("Prod")
abstract fun ProdAuthenticator.bindProdAuthenticatorAsAuthenticator(): Authenticator

Since

1.0.0

Parameters

inComponent

Which component to install the binding in. Defaults to being inferred based on the scope.

asTypes

Specifies which supertypes to bind the object as. Required if there are multiple supertypes.

See also

+
@Target(allowedTargets = [AnnotationTarget.CLASS])
annotation class AutoBind(val inComponent: KClass<*> = Nothing::class, val asTypes: Array<KClass<*>> = [])(source)

Instructs Auto Dagger to automatically bind the annotated type as its parent type.

To use this annotation the class must:

  • Not be generic - To bind generic types implement your own binding that provides the type arguments.

  • Have exactly one direct supertype - If you have multiple supertypes then specify which to bind using asTypes.

Only direct supertypes can be bound. For example, if your class implements Closeable you cannot bind it as AutoCloseable (which is a supertype of Closeable). To work around this, add the bound type as an explicit supertype.

Example

interface Repository

@AutoBind
@Singleton
class RealRepository @Inject constructor() : Repository

// Generates the equivalent to:
@Binds
abstract fun RealRepository.bindRealRepositoryAsRepository(): Repository

Component

Auto Dagger tries to infer the component based on the scope of the object using the following mapping:

ScopeComponent
No scopeSingletonComponent
SingletonSingletonComponent
ReusableSingletonComponent
ActivityRetainedScopedActivityRetainedComponent
ActivityScopedActivityComponent
FragmentScopedFragmentComponent
ServiceScopedServiceComponent
ViewScopedViewComponent
ViewModelScopedViewModelComponent
ViewWithFragmentScopedViewWithFragmentComponent

If you want to install the binding in a different component or if you're using a custom scope, then you can use the inComponent parameter to explicit provide the component.

Multiple supertypes

If you have multiple supertypes use the asTypes parameter to specify which of them to bind. You only need to specify the raw class name if the type is generic (i.e. if your type implements Callable<Stuff> you pass asTypes = [Callable::class] to indicate you want to bind it).

Objects

Normally the bound object needs to be provided to the dependency graph using either an @Provides annotated method or using an @Inject annotated constructor.

Auto Dagger allows you to annotate a Kotlin object with @AutoBind without it being provided in the graph. This is especially useful for tests:

@AutoBind
object DirectExecutor : Executor {
override fun execute(command: Runnable) {
command.run()
}
}

Multibinding

To bind the object using multibinding, use AutoBindIntoSet and/or AutoBindIntoMap. These can be used at the same time as AutoBind.

Qualifiers

Any Qualifiers on the annotated type will be carried over to the binding:

@Named("Prod")
@AutoBind
class ProdAuthenticator @Inject constructor() : Authenticator

// Generates the equivalent to:
@Binds @Named("Prod")
abstract fun ProdAuthenticator.bindProdAuthenticatorAsAuthenticator(): Authenticator

Since

1.0.0

Parameters

inComponent

Which component to install the binding in. Defaults to being inferred based on the scope.

asTypes

Specifies which supertypes to bind the object as. Required if there are multiple supertypes.

See also

@@ -80,7 +84,7 @@

Properties

- +
@@ -95,7 +99,7 @@

Properties

- +
@@ -106,7 +110,7 @@

Properties

diff --git a/dokka/core/se.ansman.dagger.auto/-auto-dagger-initializer/-auto-dagger-initializer.html b/dokka/core/se.ansman.dagger.auto/-auto-dagger-initializer/-auto-dagger-initializer.html index 79b735b55..e2073275b 100644 --- a/dokka/core/se.ansman.dagger.auto/-auto-dagger-initializer/-auto-dagger-initializer.html +++ b/dokka/core/se.ansman.dagger.auto/-auto-dagger-initializer/-auto-dagger-initializer.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.1.0
+ +
+
@@ -64,10 +68,10 @@

AutoDaggerInitializer

-
@Inject
constructor(initializables: Set<@JvmSuppressWildcards Initializable>)(source)
+
@Inject
constructor(initializables: Set<@JvmSuppressWildcards Initializable>)(source)
diff --git a/dokka/core/se.ansman.dagger.auto/-auto-dagger-initializer/index.html b/dokka/core/se.ansman.dagger.auto/-auto-dagger-initializer/index.html index 68d5ebfcd..cfa6b6f0c 100644 --- a/dokka/core/se.ansman.dagger.auto/-auto-dagger-initializer/index.html +++ b/dokka/core/se.ansman.dagger.auto/-auto-dagger-initializer/index.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.1.0
+ +
+
@@ -63,7 +67,7 @@

AutoDaggerInitializer

-
class AutoDaggerInitializer @Inject constructor(initializables: Set<@JvmSuppressWildcards Initializable>) : Initializable(source)

A class that can initialize multiple Initializable in order of their priority.

Since

1.0.0

+
class AutoDaggerInitializer @Inject constructor(initializables: Set<@JvmSuppressWildcards Initializable>) : Initializable(source)

A class that can initialize multiple Initializable in order of their priority.

Since

1.0.0

@@ -80,7 +84,7 @@

Constructors

-
@Inject
constructor(initializables: Set<@JvmSuppressWildcards Initializable>)
+
@Inject
constructor(initializables: Set<@JvmSuppressWildcards Initializable>)
@@ -99,7 +103,7 @@

Properties

-

If the initializer has been initialized or not (i.e. if initialize has been called).

+

If the initializer has been initialized or not (i.e. if initialize has been called).

@@ -133,7 +137,7 @@

Functions

-

Returns a new Initializable with the given priority.

+

Returns a new Initializable with the given priority.

@@ -144,7 +148,7 @@

Functions

diff --git a/dokka/core/se.ansman.dagger.auto/-auto-dagger-initializer/initialize.html b/dokka/core/se.ansman.dagger.auto/-auto-dagger-initializer/initialize.html index cc6c1a5b4..6dcbd4320 100644 --- a/dokka/core/se.ansman.dagger.auto/-auto-dagger-initializer/initialize.html +++ b/dokka/core/se.ansman.dagger.auto/-auto-dagger-initializer/initialize.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.1.0
+ +
+
@@ -64,10 +68,10 @@

initialize

-
open override fun initialize()(source)

Initializes the provided Initializable. This method is thread safe and calling it multiple times will only initialize the initializables once.

If any initializable throws an exception the remaining initializes are still initialized before rethrowing the exception. If multiple initializables throw then the first one is thrown with the other exceptions added as suppressed exceptions.

If this method fails, calling it again will complete successfully without attempting to initialize the failed initializables again.

+
open override fun initialize()(source)

Initializes the provided Initializable. This method is thread safe and calling it multiple times will only initialize the initializables once.

If any initializable throws an exception the remaining initializes are still initialized before rethrowing the exception. If multiple initializables throw then the first one is thrown with the other exceptions added as suppressed exceptions.

If this method fails, calling it again will complete successfully without attempting to initialize the failed initializables again.

diff --git a/dokka/core/se.ansman.dagger.auto/-auto-dagger-initializer/is-initialized.html b/dokka/core/se.ansman.dagger.auto/-auto-dagger-initializer/is-initialized.html index 0e4b64d54..a9ef14fbd 100644 --- a/dokka/core/se.ansman.dagger.auto/-auto-dagger-initializer/is-initialized.html +++ b/dokka/core/se.ansman.dagger.auto/-auto-dagger-initializer/is-initialized.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.1.0
+ +
+
@@ -64,10 +68,10 @@

isInitialized

-

If the initializer has been initialized or not (i.e. if initialize has been called).

+

If the initializer has been initialized or not (i.e. if initialize has been called).

diff --git a/dokka/core/se.ansman.dagger.auto/-auto-initialize/-companion/default-priority.html b/dokka/core/se.ansman.dagger.auto/-auto-initialize/-companion/default-priority.html index c53b2b23e..c9fda6266 100644 --- a/dokka/core/se.ansman.dagger.auto/-auto-initialize/-companion/default-priority.html +++ b/dokka/core/se.ansman.dagger.auto/-auto-initialize/-companion/default-priority.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.1.0
+ +
+
@@ -64,10 +68,10 @@

defaultPriority

-
const val defaultPriority: Int = 1(source)
+
const val defaultPriority: Int = 1(source)
diff --git a/dokka/core/se.ansman.dagger.auto/-auto-initialize/-companion/index.html b/dokka/core/se.ansman.dagger.auto/-auto-initialize/-companion/index.html index 3caf6cba1..feed64923 100644 --- a/dokka/core/se.ansman.dagger.auto/-auto-initialize/-companion/index.html +++ b/dokka/core/se.ansman.dagger.auto/-auto-initialize/-companion/index.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.1.0
+ +
+
@@ -63,7 +67,7 @@

Companion

- +
@@ -91,7 +95,7 @@

Properties

diff --git a/dokka/core/se.ansman.dagger.auto/-auto-initialize/index.html b/dokka/core/se.ansman.dagger.auto/-auto-initialize/index.html index 9e131c31c..ddd4500f4 100644 --- a/dokka/core/se.ansman.dagger.auto/-auto-initialize/index.html +++ b/dokka/core/se.ansman.dagger.auto/-auto-initialize/index.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.1.0
+ +
+
@@ -63,7 +67,7 @@

AutoInitialize

-
annotation class AutoInitialize(val priority: Int = defaultPriority)(source)

Marks the given objects as being initializable.

This will instruct Auto Dagger to provide the object as an Initializable which allows you to use AutoDaggerInitializer to later initialize the annotated objects.

If the object implements the Initializable interface then it will be created when AutoDaggerInitializer is injected and Initializable.initialize will be called when AutoDaggerInitializer.initialize is called.

Otherwise, the object is only created when AutoDaggerInitializer.initialize is called.

Since

1.0.0

+
annotation class AutoInitialize(val priority: Int = defaultPriority)(source)

Marks the given objects as being initializable.

This will instruct Auto Dagger to provide the object as an Initializable which allows you to use AutoDaggerInitializer to later initialize the annotated objects.

If the object implements the Initializable interface then it will be created when AutoDaggerInitializer is injected and Initializable.initialize will be called when AutoDaggerInitializer.initialize is called.

Otherwise, the object is only created when AutoDaggerInitializer.initialize is called.

Since

1.0.0

@@ -99,7 +103,7 @@

Properties

-

The priority of the object which determines initialization order. Objects with a higher priority are initialized first. If two initializables have the same priority then they are initialized in an undefined order. The default priority is 1.

+

The priority of the object which determines initialization order. Objects with a higher priority are initialized first. If two initializables have the same priority then they are initialized in an undefined order. The default priority is 1.

@@ -110,7 +114,7 @@

Properties

diff --git a/dokka/core/se.ansman.dagger.auto/-auto-initialize/priority.html b/dokka/core/se.ansman.dagger.auto/-auto-initialize/priority.html index 2307e3b1b..537315dfb 100644 --- a/dokka/core/se.ansman.dagger.auto/-auto-initialize/priority.html +++ b/dokka/core/se.ansman.dagger.auto/-auto-initialize/priority.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.1.0
+ +
+
@@ -64,10 +68,10 @@

priority

- +
diff --git a/dokka/core/se.ansman.dagger.auto/-bind-generic-as/-default/index.html b/dokka/core/se.ansman.dagger.auto/-bind-generic-as/-default/index.html index 2d2ecbe8e..6d9c6859a 100644 --- a/dokka/core/se.ansman.dagger.auto/-bind-generic-as/-default/index.html +++ b/dokka/core/se.ansman.dagger.auto/-bind-generic-as/-default/index.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.1.0
+ +
+
@@ -63,7 +67,7 @@

Default

-
@Target(allowedTargets = [AnnotationTarget.CLASS])
annotation class Default(val value: BindGenericAs)(source)

Specifies the default AutoBindIntoSet.bindGenericAs and AutoBindIntoMap.bindGenericAs for the annotated type.

This is useful if you know that the generic is always unique or if it's always shared. For example, an Interceptor<T> should probably be bound as ExactType because you want to get all interceptors for a given type where as Resource<T> should probably be bound as Wildcard since you're likely interested in getting all resources because there are no duplicates.

You can only add this to generic types.

Example when using wildcard:

@BindGenericAs.Default(BindGenericAs.Wildcard)
interface Resource<T> {
fun produce(): T
fun close()
}

@AutoBindIntoSet // Will bind this as Resource<*> instead of Resource<SomeThing>
class SomeResource @Inject constructor() : Resource<SomeThing> {
...
override fun close() { ... }
}

class ResourceCloser @Inject constructor(
val resources: Set<@JvmSuppressWildcards Resource<*>>
) {
fun closeAllResources() {
resources.forEach { it.close() }
}
}

Example when using exact type:

@BindGenericAs.Default(BindGenericAs.Type)
interface Interceptor<T> {
fun intercept(value: T): T
}

@AutoBindIntoSet // Will bind this as Interceptor<SomeThing>
class SomeInterceptor @Inject constructor() : Interceptor<SomeThing> {
...
}

class SomeOperation @Inject constructor(
val interceptors: Set<@JvmSuppressWildcards Interceptor<SomeThing>>
) {
fun performOperation(value: SomeThing): SomeThing {
return interceptors.fold(value) { v, interceptor -> interceptor.intercept(v) }
}
}

Since

1.0.0

See also

+
@Target(allowedTargets = [AnnotationTarget.CLASS])
annotation class Default(val value: BindGenericAs)(source)

Specifies the default AutoBindIntoSet.bindGenericAs and AutoBindIntoMap.bindGenericAs for the annotated type.

This is useful if you know that the generic is always unique or if it's always shared. For example, an Interceptor<T> should probably be bound as ExactType because you want to get all interceptors for a given type where as Resource<T> should probably be bound as Wildcard since you're likely interested in getting all resources because there are no duplicates.

You can only add this to generic types.

Example when using wildcard:

@BindGenericAs.Default(BindGenericAs.Wildcard)
interface Resource<T> {
fun produce(): T
fun close()
}

@AutoBindIntoSet // Will bind this as Resource<*> instead of Resource<SomeThing>
class SomeResource @Inject constructor() : Resource<SomeThing> {
...
override fun close() { ... }
}

class ResourceCloser @Inject constructor(
val resources: Set<@JvmSuppressWildcards Resource<*>>
) {
fun closeAllResources() {
resources.forEach { it.close() }
}
}

Example when using exact type:

@BindGenericAs.Default(BindGenericAs.Type)
interface Interceptor<T> {
fun intercept(value: T): T
}

@AutoBindIntoSet // Will bind this as Interceptor<SomeThing>
class SomeInterceptor @Inject constructor() : Interceptor<SomeThing> {
...
}

class SomeOperation @Inject constructor(
val interceptors: Set<@JvmSuppressWildcards Interceptor<SomeThing>>
) {
fun performOperation(value: SomeThing): SomeThing {
return interceptors.fold(value) { v, interceptor -> interceptor.intercept(v) }
}
}

Since

1.0.0

See also

@@ -80,7 +84,7 @@

Properties

@@ -91,7 +95,7 @@

Properties

diff --git a/dokka/core/se.ansman.dagger.auto/-bind-generic-as/-default/value.html b/dokka/core/se.ansman.dagger.auto/-bind-generic-as/-default/value.html index 9205e16c4..8b0114df5 100644 --- a/dokka/core/se.ansman.dagger.auto/-bind-generic-as/-default/value.html +++ b/dokka/core/se.ansman.dagger.auto/-bind-generic-as/-default/value.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.1.0
+ +
+
@@ -64,10 +68,10 @@

value

- +
diff --git a/dokka/core/se.ansman.dagger.auto/-bind-generic-as/-exact-type-and-wildcard/index.html b/dokka/core/se.ansman.dagger.auto/-bind-generic-as/-exact-type-and-wildcard/index.html index 7d0a58bd4..da6a8b633 100644 --- a/dokka/core/se.ansman.dagger.auto/-bind-generic-as/-exact-type-and-wildcard/index.html +++ b/dokka/core/se.ansman.dagger.auto/-bind-generic-as/-exact-type-and-wildcard/index.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.1.0
+ +
+
@@ -80,7 +84,7 @@

Properties

- +
@@ -95,7 +99,7 @@

Properties

- +
@@ -106,7 +110,7 @@

Properties

diff --git a/dokka/core/se.ansman.dagger.auto/-bind-generic-as/-exact-type/index.html b/dokka/core/se.ansman.dagger.auto/-bind-generic-as/-exact-type/index.html index 7d68135b1..68630e063 100644 --- a/dokka/core/se.ansman.dagger.auto/-bind-generic-as/-exact-type/index.html +++ b/dokka/core/se.ansman.dagger.auto/-bind-generic-as/-exact-type/index.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.1.0
+ +
+
@@ -80,7 +84,7 @@

Properties

- +
@@ -95,7 +99,7 @@

Properties

- +
@@ -106,7 +110,7 @@

Properties

diff --git a/dokka/core/se.ansman.dagger.auto/-bind-generic-as/-wildcard/index.html b/dokka/core/se.ansman.dagger.auto/-bind-generic-as/-wildcard/index.html index f854a8669..7d3b9842b 100644 --- a/dokka/core/se.ansman.dagger.auto/-bind-generic-as/-wildcard/index.html +++ b/dokka/core/se.ansman.dagger.auto/-bind-generic-as/-wildcard/index.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.1.0
+ +
+
@@ -80,7 +84,7 @@

Properties

- +
@@ -95,7 +99,7 @@

Properties

- +
@@ -106,7 +110,7 @@

Properties

diff --git a/dokka/core/se.ansman.dagger.auto/-bind-generic-as/entries.html b/dokka/core/se.ansman.dagger.auto/-bind-generic-as/entries.html index 6d67b056f..8fc83e584 100644 --- a/dokka/core/se.ansman.dagger.auto/-bind-generic-as/entries.html +++ b/dokka/core/se.ansman.dagger.auto/-bind-generic-as/entries.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.1.0
+ +
+
@@ -64,10 +68,10 @@

entries

-

Returns a representation of an immutable list of all enum entries, in the order they're declared.

This method may be used to iterate over the enum entries.

+

Returns a representation of an immutable list of all enum entries, in the order they're declared.

This method may be used to iterate over the enum entries.

diff --git a/dokka/core/se.ansman.dagger.auto/-bind-generic-as/index.html b/dokka/core/se.ansman.dagger.auto/-bind-generic-as/index.html index dd5324d04..a846cd859 100644 --- a/dokka/core/se.ansman.dagger.auto/-bind-generic-as/index.html +++ b/dokka/core/se.ansman.dagger.auto/-bind-generic-as/index.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.1.0
+ +
+
@@ -63,7 +67,7 @@

BindGenericAs

-

How generic types are bound when using multibinding such as AutoBindIntoSet or AutoBindIntoMap.

The default is ExactType unless the bound type is annotated with Default in which case that is used as the default.

Since

1.0.0

+

How generic types are bound when using multibinding such as AutoBindIntoSet or AutoBindIntoMap.

The default is ExactType unless the bound type is annotated with Default in which case that is used as the default.

Since

1.0.0

@@ -148,7 +152,7 @@

Properties

-

Returns a representation of an immutable list of all enum entries, in the order they're declared.

+

Returns a representation of an immutable list of all enum entries, in the order they're declared.

@@ -163,7 +167,7 @@

Properties

- +
@@ -178,7 +182,7 @@

Properties

- +
@@ -197,7 +201,7 @@

Functions

-

Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)

+

Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)

@@ -212,7 +216,7 @@

Functions

-

Returns an array containing the constants of this enum type, in the order they're declared.

+

Returns an array containing the constants of this enum type, in the order they're declared.

@@ -223,7 +227,7 @@

Functions

diff --git a/dokka/core/se.ansman.dagger.auto/-bind-generic-as/value-of.html b/dokka/core/se.ansman.dagger.auto/-bind-generic-as/value-of.html index 53360fa12..7859be5a3 100644 --- a/dokka/core/se.ansman.dagger.auto/-bind-generic-as/value-of.html +++ b/dokka/core/se.ansman.dagger.auto/-bind-generic-as/value-of.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.1.0
+ +
+
@@ -64,10 +68,10 @@

valueOf

-

Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)

Throws

if this enum type has no constant with the specified name

+

Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)

Throws

if this enum type has no constant with the specified name

diff --git a/dokka/core/se.ansman.dagger.auto/-bind-generic-as/values.html b/dokka/core/se.ansman.dagger.auto/-bind-generic-as/values.html index dbcaf5102..979ca36d2 100644 --- a/dokka/core/se.ansman.dagger.auto/-bind-generic-as/values.html +++ b/dokka/core/se.ansman.dagger.auto/-bind-generic-as/values.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.1.0
+ +
+
@@ -64,10 +68,10 @@

values

-

Returns an array containing the constants of this enum type, in the order they're declared.

This method may be used to iterate over the constants.

+

Returns an array containing the constants of this enum type, in the order they're declared.

This method may be used to iterate over the constants.

diff --git a/dokka/core/se.ansman.dagger.auto/-initializable/-companion/as-initializable.html b/dokka/core/se.ansman.dagger.auto/-initializable/-companion/as-initializable.html index 6847923f7..3a451bccd 100644 --- a/dokka/core/se.ansman.dagger.auto/-initializable/-companion/as-initializable.html +++ b/dokka/core/se.ansman.dagger.auto/-initializable/-companion/as-initializable.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.1.0
+ +
+
@@ -64,10 +68,10 @@

asInitializable

-
@JvmName(name = "fromLazy")
fun Lazy<*>.asInitializable(priority: Int = AutoInitialize.defaultPriority): Initializable(source)

Converts the provided Lazy into an Initializable with the given priority (see AutoInitialize.priority).

When the returned Initializable is initialized, the lazy value is computed.

Since

1.0.0

+
@JvmName(name = "fromLazy")
fun Lazy<*>.asInitializable(priority: Int = AutoInitialize.defaultPriority): Initializable(source)

Converts the provided Lazy into an Initializable with the given priority (see AutoInitialize.priority).

When the returned Initializable is initialized, the lazy value is computed.

Since

1.0.0

diff --git a/dokka/core/se.ansman.dagger.auto/-initializable/-companion/index.html b/dokka/core/se.ansman.dagger.auto/-initializable/-companion/index.html index 02e7d6f76..e414fca01 100644 --- a/dokka/core/se.ansman.dagger.auto/-initializable/-companion/index.html +++ b/dokka/core/se.ansman.dagger.auto/-initializable/-companion/index.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.1.0
+ +
+
@@ -63,15 +67,15 @@

Companion

- +
-
+

Functions

-
+
@@ -80,13 +84,13 @@

Functions

-
@JvmName(name = "fromLazy")
fun Lazy<*>.asInitializable(priority: Int = AutoInitialize.defaultPriority): Initializable

Converts the provided Lazy into an Initializable with the given priority (see AutoInitialize.priority).

+
@JvmName(name = "fromLazy")
fun Lazy<*>.asInitializable(priority: Int = AutoInitialize.defaultPriority): Initializable

Converts the provided Lazy into an Initializable with the given priority (see AutoInitialize.priority).

-
+
@@ -95,7 +99,7 @@

Functions

-

Returns a new Initializable with the given priority.

+

Returns a new Initializable with the given priority.

@@ -106,7 +110,7 @@

Functions

diff --git a/dokka/core/se.ansman.dagger.auto/-initializable/-companion/with-priority.html b/dokka/core/se.ansman.dagger.auto/-initializable/-companion/with-priority.html index 92b8d5712..755795be3 100644 --- a/dokka/core/se.ansman.dagger.auto/-initializable/-companion/with-priority.html +++ b/dokka/core/se.ansman.dagger.auto/-initializable/-companion/with-priority.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.1.0
+ +
+
@@ -64,10 +68,10 @@

withPriority

-

Returns a new Initializable with the given priority.

Since

1.0.0

+

Returns a new Initializable with the given priority.

Since

1.0.0

diff --git a/dokka/core/se.ansman.dagger.auto/-initializable/index.html b/dokka/core/se.ansman.dagger.auto/-initializable/index.html index 05cfc0a68..e97b43843 100644 --- a/dokka/core/se.ansman.dagger.auto/-initializable/index.html +++ b/dokka/core/se.ansman.dagger.auto/-initializable/index.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.1.0
+ +
+
@@ -63,7 +67,7 @@

Initializable

-

An interface used to indicate that initialization isn't done when the object is created but rather when calling initialize.

This is useful if you want to be able to test your object.

Although you can use this interface by itself, it's meant to be used in conjunction with AutoInitialize.

Since

1.0.0

See also

Inheritors

+

An interface used to indicate that initialization isn't done when the object is created but rather when calling initialize.

This is useful if you want to be able to test your object.

Although you can use this interface by itself, it's meant to be used in conjunction with AutoInitialize.

Since

1.0.0

See also

Inheritors

@@ -99,7 +103,7 @@

Functions

-
abstract fun initialize()

Initializes the initializable.

+
abstract fun initialize()

Initializes the initializable.

@@ -114,7 +118,7 @@

Functions

-

Returns a new Initializable with the given priority.

+

Returns a new Initializable with the given priority.

@@ -125,7 +129,7 @@

Functions

diff --git a/dokka/core/se.ansman.dagger.auto/-initializable/initialize.html b/dokka/core/se.ansman.dagger.auto/-initializable/initialize.html index 27a4460e3..fd408604d 100644 --- a/dokka/core/se.ansman.dagger.auto/-initializable/initialize.html +++ b/dokka/core/se.ansman.dagger.auto/-initializable/initialize.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.1.0
+ +
+
@@ -64,10 +68,10 @@

initialize

-
abstract fun initialize()(source)

Initializes the initializable.

+
abstract fun initialize()(source)

Initializes the initializable.

diff --git a/dokka/core/se.ansman.dagger.auto/index.html b/dokka/core/se.ansman.dagger.auto/index.html index f934aa1cb..17da9c113 100644 --- a/dokka/core/se.ansman.dagger.auto/index.html +++ b/dokka/core/se.ansman.dagger.auto/index.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.1.0
+ +
+
@@ -79,7 +83,7 @@

Types

-
@Target(allowedTargets = [AnnotationTarget.CLASS])
annotation class AutoBind(val inComponent: KClass<*> = Nothing::class, val asTypes: Array<KClass<*>> = [])

Instructs Auto Dagger to automatically bind the annotated type as its parent type.

+
@Target(allowedTargets = [AnnotationTarget.CLASS])
annotation class AutoBind(val inComponent: KClass<*> = Nothing::class, val asTypes: Array<KClass<*>> = [])

Instructs Auto Dagger to automatically bind the annotated type as its parent type.

@@ -94,7 +98,7 @@

Types

-
@Target(allowedTargets = [AnnotationTarget.CLASS])
annotation class AutoBindIntoMap(val inComponent: KClass<*> = Nothing::class, val asTypes: Array<KClass<*>> = [], val bindGenericAs: BindGenericAs = BindGenericAs.ExactType)

A version of AutoBind that binds the object using IntoMap. The object must also be annotated with a MapKey annotated annotation such as StringKey, MapKey, or a custom annotation.

+
@Target(allowedTargets = [AnnotationTarget.CLASS])
annotation class AutoBindIntoMap(val inComponent: KClass<*> = Nothing::class, val asTypes: Array<KClass<*>> = [], val bindGenericAs: BindGenericAs = BindGenericAs.ExactType)

A version of AutoBind that binds the object using IntoMap. The object must also be annotated with a MapKey annotated annotation such as StringKey, MapKey, or a custom annotation.

@@ -109,7 +113,7 @@

Types

-
@Target(allowedTargets = [AnnotationTarget.CLASS])
annotation class AutoBindIntoSet(val inComponent: KClass<*> = Nothing::class, val asTypes: Array<KClass<*>> = [], val bindGenericAs: BindGenericAs = BindGenericAs.ExactType)

A version of AutoBind that binds the object using IntoSet.

+
@Target(allowedTargets = [AnnotationTarget.CLASS])
annotation class AutoBindIntoSet(val inComponent: KClass<*> = Nothing::class, val asTypes: Array<KClass<*>> = [], val bindGenericAs: BindGenericAs = BindGenericAs.ExactType)

A version of AutoBind that binds the object using IntoSet.

@@ -124,7 +128,7 @@

Types

-
class AutoDaggerInitializer @Inject constructor(initializables: Set<@JvmSuppressWildcards Initializable>) : Initializable

A class that can initialize multiple Initializable in order of their priority.

+
class AutoDaggerInitializer @Inject constructor(initializables: Set<@JvmSuppressWildcards Initializable>) : Initializable

A class that can initialize multiple Initializable in order of their priority.

@@ -154,7 +158,7 @@

Types

-

How generic types are bound when using multibinding such as AutoBindIntoSet or AutoBindIntoMap.

+

How generic types are bound when using multibinding such as AutoBindIntoSet or AutoBindIntoMap.

@@ -180,7 +184,7 @@

Types

diff --git a/dokka/images/homepage.svg b/dokka/images/homepage.svg new file mode 100644 index 000000000..e3c83b1ce --- /dev/null +++ b/dokka/images/homepage.svg @@ -0,0 +1,3 @@ + + + diff --git a/dokka/index.html b/dokka/index.html index a7108780c..7f9ea3374 100644 --- a/dokka/index.html +++ b/dokka/index.html @@ -45,7 +45,11 @@
-1.0.0
+
+
1.1.0
+ +
+
diff --git a/dokka/older/1.0.0/android/se.ansman.dagger.auto.android/index.html b/dokka/older/1.0.0/android/se.ansman.dagger.auto.android/index.html index 921fa0478..0a4bcf6ee 100644 --- a/dokka/older/1.0.0/android/se.ansman.dagger.auto.android/index.html +++ b/dokka/older/1.0.0/android/se.ansman.dagger.auto.android/index.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/android/testing/index.html b/dokka/older/1.0.0/android/testing/index.html index bd8d3035c..00cb4e6bb 100644 --- a/dokka/older/1.0.0/android/testing/index.html +++ b/dokka/older/1.0.0/android/testing/index.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/android/testing/se.ansman.dagger.auto.android.testing/-replaces/index.html b/dokka/older/1.0.0/android/testing/se.ansman.dagger.auto.android.testing/-replaces/index.html index 1403e22a8..aefb8bac2 100644 --- a/dokka/older/1.0.0/android/testing/se.ansman.dagger.auto.android.testing/-replaces/index.html +++ b/dokka/older/1.0.0/android/testing/se.ansman.dagger.auto.android.testing/-replaces/index.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/android/testing/se.ansman.dagger.auto.android.testing/-replaces/type.html b/dokka/older/1.0.0/android/testing/se.ansman.dagger.auto.android.testing/-replaces/type.html index ef3bff539..018373cc7 100644 --- a/dokka/older/1.0.0/android/testing/se.ansman.dagger.auto.android.testing/-replaces/type.html +++ b/dokka/older/1.0.0/android/testing/se.ansman.dagger.auto.android.testing/-replaces/type.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/android/testing/se.ansman.dagger.auto.android.testing/index.html b/dokka/older/1.0.0/android/testing/se.ansman.dagger.auto.android.testing/index.html index 0919142d4..44dca1a34 100644 --- a/dokka/older/1.0.0/android/testing/se.ansman.dagger.auto.android.testing/index.html +++ b/dokka/older/1.0.0/android/testing/se.ansman.dagger.auto.android.testing/index.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/androidx/room/index.html b/dokka/older/1.0.0/androidx/room/index.html index 70605dbcd..97b04396f 100644 --- a/dokka/older/1.0.0/androidx/room/index.html +++ b/dokka/older/1.0.0/androidx/room/index.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/androidx/room/se.ansman.dagger.auto.androidx.room/-auto-provide-daos/in-component.html b/dokka/older/1.0.0/androidx/room/se.ansman.dagger.auto.androidx.room/-auto-provide-daos/in-component.html index ea1094080..7e95990d5 100644 --- a/dokka/older/1.0.0/androidx/room/se.ansman.dagger.auto.androidx.room/-auto-provide-daos/in-component.html +++ b/dokka/older/1.0.0/androidx/room/se.ansman.dagger.auto.androidx.room/-auto-provide-daos/in-component.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/androidx/room/se.ansman.dagger.auto.androidx.room/-auto-provide-daos/index.html b/dokka/older/1.0.0/androidx/room/se.ansman.dagger.auto.androidx.room/-auto-provide-daos/index.html index 9945f3946..c0db4ed08 100644 --- a/dokka/older/1.0.0/androidx/room/se.ansman.dagger.auto.androidx.room/-auto-provide-daos/index.html +++ b/dokka/older/1.0.0/androidx/room/se.ansman.dagger.auto.androidx.room/-auto-provide-daos/index.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/androidx/room/se.ansman.dagger.auto.androidx.room/index.html b/dokka/older/1.0.0/androidx/room/se.ansman.dagger.auto.androidx.room/index.html index 620139c78..30e5b49f9 100644 --- a/dokka/older/1.0.0/androidx/room/se.ansman.dagger.auto.androidx.room/index.html +++ b/dokka/older/1.0.0/androidx/room/se.ansman.dagger.auto.androidx.room/index.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/androidx/viewmodel/index.html b/dokka/older/1.0.0/androidx/viewmodel/index.html index 5c529a207..e35263ef9 100644 --- a/dokka/older/1.0.0/androidx/viewmodel/index.html +++ b/dokka/older/1.0.0/androidx/viewmodel/index.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/-auto-dagger-view-model-coroutine-scope-component/index.html b/dokka/older/1.0.0/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/-auto-dagger-view-model-coroutine-scope-component/index.html index a90e9c09c..d5ac84785 100644 --- a/dokka/older/1.0.0/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/-auto-dagger-view-model-coroutine-scope-component/index.html +++ b/dokka/older/1.0.0/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/-auto-dagger-view-model-coroutine-scope-component/index.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/-auto-dagger-view-model-coroutine-scope-component/provide-view-model-scope.html b/dokka/older/1.0.0/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/-auto-dagger-view-model-coroutine-scope-component/provide-view-model-scope.html index 22e4fa496..fcb9054c3 100644 --- a/dokka/older/1.0.0/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/-auto-dagger-view-model-coroutine-scope-component/provide-view-model-scope.html +++ b/dokka/older/1.0.0/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/-auto-dagger-view-model-coroutine-scope-component/provide-view-model-scope.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/-view-model-specific/index.html b/dokka/older/1.0.0/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/-view-model-specific/index.html index 2ca7b3c84..28b029a0e 100644 --- a/dokka/older/1.0.0/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/-view-model-specific/index.html +++ b/dokka/older/1.0.0/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/-view-model-specific/index.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/index.html b/dokka/older/1.0.0/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/index.html index cc70255c6..14369cedb 100644 --- a/dokka/older/1.0.0/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/index.html +++ b/dokka/older/1.0.0/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/index.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/core/index.html b/dokka/older/1.0.0/core/index.html index eb12cf47f..79c2d2861 100644 --- a/dokka/older/1.0.0/core/index.html +++ b/dokka/older/1.0.0/core/index.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-bind-into-map/as-types.html b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-bind-into-map/as-types.html index af89a33c2..72228d98e 100644 --- a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-bind-into-map/as-types.html +++ b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-bind-into-map/as-types.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-bind-into-map/bind-generic-as.html b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-bind-into-map/bind-generic-as.html index 44503e6cd..0f866b8dd 100644 --- a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-bind-into-map/bind-generic-as.html +++ b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-bind-into-map/bind-generic-as.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-bind-into-map/in-component.html b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-bind-into-map/in-component.html index 275c34e48..5341f9abb 100644 --- a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-bind-into-map/in-component.html +++ b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-bind-into-map/in-component.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-bind-into-map/index.html b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-bind-into-map/index.html index 70db73b7c..827ee1fc4 100644 --- a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-bind-into-map/index.html +++ b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-bind-into-map/index.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-bind-into-set/as-types.html b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-bind-into-set/as-types.html index 41ff4fe49..8de6fc15c 100644 --- a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-bind-into-set/as-types.html +++ b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-bind-into-set/as-types.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-bind-into-set/bind-generic-as.html b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-bind-into-set/bind-generic-as.html index 52b0b342e..d23b6cff8 100644 --- a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-bind-into-set/bind-generic-as.html +++ b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-bind-into-set/bind-generic-as.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-bind-into-set/in-component.html b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-bind-into-set/in-component.html index beb8fc92b..ac7d681db 100644 --- a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-bind-into-set/in-component.html +++ b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-bind-into-set/in-component.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-bind-into-set/index.html b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-bind-into-set/index.html index c166e3b31..d113fb41a 100644 --- a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-bind-into-set/index.html +++ b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-bind-into-set/index.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-bind/as-types.html b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-bind/as-types.html index 6b3ff95be..8ab959c22 100644 --- a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-bind/as-types.html +++ b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-bind/as-types.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-bind/in-component.html b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-bind/in-component.html index 3c34f7c63..1402550c5 100644 --- a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-bind/in-component.html +++ b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-bind/in-component.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-bind/index.html b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-bind/index.html index 72c0073dd..273941686 100644 --- a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-bind/index.html +++ b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-bind/index.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-dagger-initializer/-auto-dagger-initializer.html b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-dagger-initializer/-auto-dagger-initializer.html index 0dd9a99dc..2bde1a729 100644 --- a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-dagger-initializer/-auto-dagger-initializer.html +++ b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-dagger-initializer/-auto-dagger-initializer.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-dagger-initializer/index.html b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-dagger-initializer/index.html index 9d3b3b175..fc5dcdcbf 100644 --- a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-dagger-initializer/index.html +++ b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-dagger-initializer/index.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-dagger-initializer/initialize.html b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-dagger-initializer/initialize.html index 2eb3bc63f..b3fb4cc84 100644 --- a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-dagger-initializer/initialize.html +++ b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-dagger-initializer/initialize.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-dagger-initializer/is-initialized.html b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-dagger-initializer/is-initialized.html index 393143847..1def717a6 100644 --- a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-dagger-initializer/is-initialized.html +++ b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-dagger-initializer/is-initialized.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-initialize/-companion/default-priority.html b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-initialize/-companion/default-priority.html index b3fbac88b..4df7ab70c 100644 --- a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-initialize/-companion/default-priority.html +++ b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-initialize/-companion/default-priority.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-initialize/-companion/index.html b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-initialize/-companion/index.html index e59eea847..24c8c707b 100644 --- a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-initialize/-companion/index.html +++ b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-initialize/-companion/index.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-initialize/index.html b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-initialize/index.html index b01277ae0..a0443ea31 100644 --- a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-initialize/index.html +++ b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-initialize/index.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-initialize/priority.html b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-initialize/priority.html index 860d44188..47ad48d4d 100644 --- a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-initialize/priority.html +++ b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-auto-initialize/priority.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-bind-generic-as/-default/index.html b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-bind-generic-as/-default/index.html index de5e5f04f..8ee0a1c59 100644 --- a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-bind-generic-as/-default/index.html +++ b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-bind-generic-as/-default/index.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-bind-generic-as/-default/value.html b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-bind-generic-as/-default/value.html index 7b0ade3fc..8deb608d3 100644 --- a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-bind-generic-as/-default/value.html +++ b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-bind-generic-as/-default/value.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-bind-generic-as/-exact-type-and-wildcard/index.html b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-bind-generic-as/-exact-type-and-wildcard/index.html index d2c2542b9..d084f33de 100644 --- a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-bind-generic-as/-exact-type-and-wildcard/index.html +++ b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-bind-generic-as/-exact-type-and-wildcard/index.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-bind-generic-as/-exact-type/index.html b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-bind-generic-as/-exact-type/index.html index 4f6baf86f..59e1003ac 100644 --- a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-bind-generic-as/-exact-type/index.html +++ b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-bind-generic-as/-exact-type/index.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-bind-generic-as/-wildcard/index.html b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-bind-generic-as/-wildcard/index.html index 46a4d5acb..5933f5244 100644 --- a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-bind-generic-as/-wildcard/index.html +++ b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-bind-generic-as/-wildcard/index.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-bind-generic-as/entries.html b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-bind-generic-as/entries.html index 783fa58dc..82f8a1967 100644 --- a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-bind-generic-as/entries.html +++ b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-bind-generic-as/entries.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-bind-generic-as/index.html b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-bind-generic-as/index.html index b453103d1..baea15840 100644 --- a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-bind-generic-as/index.html +++ b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-bind-generic-as/index.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-bind-generic-as/value-of.html b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-bind-generic-as/value-of.html index a7791df68..0f9da8475 100644 --- a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-bind-generic-as/value-of.html +++ b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-bind-generic-as/value-of.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-bind-generic-as/values.html b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-bind-generic-as/values.html index 995752315..e47009af1 100644 --- a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-bind-generic-as/values.html +++ b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-bind-generic-as/values.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-initializable/-companion/as-initializable.html b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-initializable/-companion/as-initializable.html index 9de399083..3441c7236 100644 --- a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-initializable/-companion/as-initializable.html +++ b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-initializable/-companion/as-initializable.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-initializable/-companion/index.html b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-initializable/-companion/index.html index 0063cef3b..00438b34e 100644 --- a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-initializable/-companion/index.html +++ b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-initializable/-companion/index.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-initializable/-companion/with-priority.html b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-initializable/-companion/with-priority.html index b12cb2b57..c43ec7f48 100644 --- a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-initializable/-companion/with-priority.html +++ b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-initializable/-companion/with-priority.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-initializable/index.html b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-initializable/index.html index 0860480e0..6decd0fac 100644 --- a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-initializable/index.html +++ b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-initializable/index.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-initializable/initialize.html b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-initializable/initialize.html index 23411a748..59df3a92a 100644 --- a/dokka/older/1.0.0/core/se.ansman.dagger.auto/-initializable/initialize.html +++ b/dokka/older/1.0.0/core/se.ansman.dagger.auto/-initializable/initialize.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/core/se.ansman.dagger.auto/index.html b/dokka/older/1.0.0/core/se.ansman.dagger.auto/index.html index 5df0af33f..6b1a18c21 100644 --- a/dokka/older/1.0.0/core/se.ansman.dagger.auto/index.html +++ b/dokka/older/1.0.0/core/se.ansman.dagger.auto/index.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/index.html b/dokka/older/1.0.0/index.html index 3dfa9411d..f733ac210 100644 --- a/dokka/older/1.0.0/index.html +++ b/dokka/older/1.0.0/index.html @@ -45,7 +45,11 @@
-1.0.0
+
+
1.0.0
+ +
+
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/retrofit/se.ansman.dagger.auto.retrofit/-auto-provide-service/in-component.html b/dokka/older/1.0.0/retrofit/se.ansman.dagger.auto.retrofit/-auto-provide-service/in-component.html index d4066f9a6..6e73efc58 100644 --- a/dokka/older/1.0.0/retrofit/se.ansman.dagger.auto.retrofit/-auto-provide-service/in-component.html +++ b/dokka/older/1.0.0/retrofit/se.ansman.dagger.auto.retrofit/-auto-provide-service/in-component.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/retrofit/se.ansman.dagger.auto.retrofit/-auto-provide-service/index.html b/dokka/older/1.0.0/retrofit/se.ansman.dagger.auto.retrofit/-auto-provide-service/index.html index 59e56de11..f2eeb38b7 100644 --- a/dokka/older/1.0.0/retrofit/se.ansman.dagger.auto.retrofit/-auto-provide-service/index.html +++ b/dokka/older/1.0.0/retrofit/se.ansman.dagger.auto.retrofit/-auto-provide-service/index.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.0.0/retrofit/se.ansman.dagger.auto.retrofit/index.html b/dokka/older/1.0.0/retrofit/se.ansman.dagger.auto.retrofit/index.html index 761b6ed90..5cc123ef5 100644 --- a/dokka/older/1.0.0/retrofit/se.ansman.dagger.auto.retrofit/index.html +++ b/dokka/older/1.0.0/retrofit/se.ansman.dagger.auto.retrofit/index.html @@ -43,7 +43,11 @@ auto-dagger
-1.0.0
+
+
1.0.0
+ +
+
diff --git a/dokka/older/1.1.0/core/index.html b/dokka/older/1.1.0/core/index.html new file mode 100644 index 000000000..4b78e0361 --- /dev/null +++ b/dokka/older/1.1.0/core/index.html @@ -0,0 +1,101 @@ + + + + + core + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

core

+
+

Packages

+
+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/core/navigation.html b/dokka/older/1.1.0/core/navigation.html new file mode 100644 index 000000000..6548962fc --- /dev/null +++ b/dokka/older/1.1.0/core/navigation.html @@ -0,0 +1,173 @@ + + diff --git a/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-bind-into-map/as-types.html b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-bind-into-map/as-types.html new file mode 100644 index 000000000..e55abc9d6 --- /dev/null +++ b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-bind-into-map/as-types.html @@ -0,0 +1,82 @@ + + + + + asTypes + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

asTypes

+
+

Parameters

asTypes

Specifies which supertypes to bind the object as. Required if there are multiple supertypes.

+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-bind-into-map/bind-generic-as.html b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-bind-into-map/bind-generic-as.html new file mode 100644 index 000000000..9008ff3b3 --- /dev/null +++ b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-bind-into-map/bind-generic-as.html @@ -0,0 +1,82 @@ + + + + + bindGenericAs + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

bindGenericAs

+
+

Parameters

bindGenericAs

Specifies how generic supertypes should be bound. Defaults to BindGenericAs.ExactType or if the target type is annotated with BindGenericAs.Default.

+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-bind-into-map/in-component.html b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-bind-into-map/in-component.html new file mode 100644 index 000000000..7ba166ab2 --- /dev/null +++ b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-bind-into-map/in-component.html @@ -0,0 +1,82 @@ + + + + + inComponent + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

inComponent

+
+

Parameters

inComponent

Which component to install the binding in. Defaults to being inferred based on the scope.

+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-bind-into-map/index.html b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-bind-into-map/index.html new file mode 100644 index 000000000..537d69d1e --- /dev/null +++ b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-bind-into-map/index.html @@ -0,0 +1,136 @@ + + + + + AutoBindIntoMap + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

AutoBindIntoMap

+
@Target(allowedTargets = [AnnotationTarget.CLASS])
annotation class AutoBindIntoMap(val inComponent: KClass<*> = Nothing::class, val asTypes: Array<KClass<*>> = [], val bindGenericAs: BindGenericAs = BindGenericAs.ExactType)(source)

A version of AutoBind that binds the object using IntoMap. The object must also be annotated with a MapKey annotated annotation such as StringKey, MapKey, or a custom annotation.

For more documentation on auto bind see AutoBind.

See also https://dagger.dev/dev-guide/multibindings.html#map-multibindings

Since

1.0.0

Parameters

inComponent

Which component to install the binding in. Defaults to being inferred based on the scope.

asTypes

Specifies which supertypes to bind the object as. Required if there are multiple supertypes.

bindGenericAs

Specifies how generic supertypes should be bound. Defaults to BindGenericAs.ExactType or if the target type is annotated with BindGenericAs.Default.

See also

+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-bind-into-set/as-types.html b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-bind-into-set/as-types.html new file mode 100644 index 000000000..66a831eb2 --- /dev/null +++ b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-bind-into-set/as-types.html @@ -0,0 +1,82 @@ + + + + + asTypes + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

asTypes

+
+

Parameters

asTypes

Specifies which supertypes to bind the object as. Required if there are multiple supertypes.

+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-bind-into-set/bind-generic-as.html b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-bind-into-set/bind-generic-as.html new file mode 100644 index 000000000..fcf095053 --- /dev/null +++ b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-bind-into-set/bind-generic-as.html @@ -0,0 +1,82 @@ + + + + + bindGenericAs + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

bindGenericAs

+
+

Parameters

bindGenericAs

Specifies how generic supertypes should be bound. Defaults to BindGenericAs.ExactType or if the target type is annotated with BindGenericAs.Default.

+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-bind-into-set/in-component.html b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-bind-into-set/in-component.html new file mode 100644 index 000000000..456215994 --- /dev/null +++ b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-bind-into-set/in-component.html @@ -0,0 +1,82 @@ + + + + + inComponent + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

inComponent

+
+

Parameters

inComponent

Which component to install the binding in. Defaults to being inferred based on the scope.

+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-bind-into-set/index.html b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-bind-into-set/index.html new file mode 100644 index 000000000..cb7944434 --- /dev/null +++ b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-bind-into-set/index.html @@ -0,0 +1,136 @@ + + + + + AutoBindIntoSet + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

AutoBindIntoSet

+
@Target(allowedTargets = [AnnotationTarget.CLASS])
annotation class AutoBindIntoSet(val inComponent: KClass<*> = Nothing::class, val asTypes: Array<KClass<*>> = [], val bindGenericAs: BindGenericAs = BindGenericAs.ExactType)(source)

A version of AutoBind that binds the object using IntoSet.

For more documentation on auto bind see AutoBind.

See also Set Multibindings

Since

1.0.0

Parameters

inComponent

Which component to install the binding in. Defaults to being inferred based on the scope.

asTypes

Specifies which supertypes to bind the object as. Required if there are multiple supertypes.

bindGenericAs

Specifies how generic supertypes should be bound. Defaults to BindGenericAs.ExactType or if the target type is annotated with BindGenericAs.Default.

See also

+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+ +
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-bind/as-types.html b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-bind/as-types.html new file mode 100644 index 000000000..c9e5fc650 --- /dev/null +++ b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-bind/as-types.html @@ -0,0 +1,82 @@ + + + + + asTypes + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

asTypes

+
+

Parameters

asTypes

Specifies which supertypes to bind the object as. Required if there are multiple supertypes.

+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-bind/in-component.html b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-bind/in-component.html new file mode 100644 index 000000000..0bea9bac4 --- /dev/null +++ b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-bind/in-component.html @@ -0,0 +1,82 @@ + + + + + inComponent + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

inComponent

+
+

Parameters

inComponent

Which component to install the binding in. Defaults to being inferred based on the scope.

+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-bind/index.html b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-bind/index.html new file mode 100644 index 000000000..5db714a54 --- /dev/null +++ b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-bind/index.html @@ -0,0 +1,121 @@ + + + + + AutoBind + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

AutoBind

+
@Target(allowedTargets = [AnnotationTarget.CLASS])
annotation class AutoBind(val inComponent: KClass<*> = Nothing::class, val asTypes: Array<KClass<*>> = [])(source)

Instructs Auto Dagger to automatically bind the annotated type as its parent type.

To use this annotation the class must:

  • Not be generic - To bind generic types implement your own binding that provides the type arguments.

  • Have exactly one direct supertype - If you have multiple supertypes then specify which to bind using asTypes.

Only direct supertypes can be bound. For example, if your class implements Closeable you cannot bind it as AutoCloseable (which is a supertype of Closeable). To work around this, add the bound type as an explicit supertype.

Example

interface Repository

@AutoBind
@Singleton
class RealRepository @Inject constructor() : Repository

// Generates the equivalent to:
@Binds
abstract fun RealRepository.bindRealRepositoryAsRepository(): Repository

Component

Auto Dagger tries to infer the component based on the scope of the object using the following mapping:

ScopeComponent
No scopeSingletonComponent
SingletonSingletonComponent
ReusableSingletonComponent
ActivityRetainedScopedActivityRetainedComponent
ActivityScopedActivityComponent
FragmentScopedFragmentComponent
ServiceScopedServiceComponent
ViewScopedViewComponent
ViewModelScopedViewModelComponent
ViewWithFragmentScopedViewWithFragmentComponent

If you want to install the binding in a different component or if you're using a custom scope, then you can use the inComponent parameter to explicit provide the component.

Multiple supertypes

If you have multiple supertypes use the asTypes parameter to specify which of them to bind. You only need to specify the raw class name if the type is generic (i.e. if your type implements Callable<Stuff> you pass asTypes = [Callable::class] to indicate you want to bind it).

Objects

Normally the bound object needs to be provided to the dependency graph using either an @Provides annotated method or using an @Inject annotated constructor.

Auto Dagger allows you to annotate a Kotlin object with @AutoBind without it being provided in the graph. This is especially useful for tests:

@AutoBind
object DirectExecutor : Executor {
override fun execute(command: Runnable) {
command.run()
}
}

Multibinding

To bind the object using multibinding, use AutoBindIntoSet and/or AutoBindIntoMap. These can be used at the same time as AutoBind.

Qualifiers

Any Qualifiers on the annotated type will be carried over to the binding:

@Named("Prod")
@AutoBind
class ProdAuthenticator @Inject constructor() : Authenticator

// Generates the equivalent to:
@Binds @Named("Prod")
abstract fun ProdAuthenticator.bindProdAuthenticatorAsAuthenticator(): Authenticator

Since

1.0.0

Parameters

inComponent

Which component to install the binding in. Defaults to being inferred based on the scope.

asTypes

Specifies which supertypes to bind the object as. Required if there are multiple supertypes.

See also

+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-dagger-initializer/-auto-dagger-initializer.html b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-dagger-initializer/-auto-dagger-initializer.html new file mode 100644 index 000000000..d4a8d0914 --- /dev/null +++ b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-dagger-initializer/-auto-dagger-initializer.html @@ -0,0 +1,82 @@ + + + + + AutoDaggerInitializer + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

AutoDaggerInitializer

+
+
@Inject
constructor(initializables: Set<@JvmSuppressWildcards Initializable>)(source)
+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-dagger-initializer/index.html b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-dagger-initializer/index.html new file mode 100644 index 000000000..7dade8217 --- /dev/null +++ b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-dagger-initializer/index.html @@ -0,0 +1,159 @@ + + + + + AutoDaggerInitializer + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

AutoDaggerInitializer

+
class AutoDaggerInitializer @Inject constructor(initializables: Set<@JvmSuppressWildcards Initializable>) : Initializable(source)

A class that can initialize multiple Initializable in order of their priority.

Since

1.0.0

+
+
+
+
+
+

Constructors

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
@Inject
constructor(initializables: Set<@JvmSuppressWildcards Initializable>)
+
+
+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+

If the initializer has been initialized or not (i.e. if initialize has been called).

+
+
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun initialize()

Initializes the provided Initializable. This method is thread safe and calling it multiple times will only initialize the initializables once.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Returns a new Initializable with the given priority.

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-dagger-initializer/initialize.html b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-dagger-initializer/initialize.html new file mode 100644 index 000000000..42b329e32 --- /dev/null +++ b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-dagger-initializer/initialize.html @@ -0,0 +1,82 @@ + + + + + initialize + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

initialize

+
+
open override fun initialize()(source)

Initializes the provided Initializable. This method is thread safe and calling it multiple times will only initialize the initializables once.

If any initializable throws an exception the remaining initializes are still initialized before rethrowing the exception. If multiple initializables throw then the first one is thrown with the other exceptions added as suppressed exceptions.

If this method fails, calling it again will complete successfully without attempting to initialize the failed initializables again.

+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-dagger-initializer/is-initialized.html b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-dagger-initializer/is-initialized.html new file mode 100644 index 000000000..9e5947476 --- /dev/null +++ b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-dagger-initializer/is-initialized.html @@ -0,0 +1,82 @@ + + + + + isInitialized + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

isInitialized

+
+

If the initializer has been initialized or not (i.e. if initialize has been called).

+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-initialize/-companion/default-priority.html b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-initialize/-companion/default-priority.html new file mode 100644 index 000000000..b5be7edb4 --- /dev/null +++ b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-initialize/-companion/default-priority.html @@ -0,0 +1,82 @@ + + + + + defaultPriority + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

defaultPriority

+
+
const val defaultPriority: Int = 1(source)
+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-initialize/-companion/index.html b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-initialize/-companion/index.html new file mode 100644 index 000000000..e341e0026 --- /dev/null +++ b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-initialize/-companion/index.html @@ -0,0 +1,106 @@ + + + + + Companion + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

Companion

+ +
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
const val defaultPriority: Int = 1
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-initialize/index.html b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-initialize/index.html new file mode 100644 index 000000000..73c42efbb --- /dev/null +++ b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-initialize/index.html @@ -0,0 +1,125 @@ + + + + + AutoInitialize + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

AutoInitialize

+
annotation class AutoInitialize(val priority: Int = defaultPriority)(source)

Marks the given objects as being initializable.

This will instruct Auto Dagger to provide the object as an Initializable which allows you to use AutoDaggerInitializer to later initialize the annotated objects.

If the object implements the Initializable interface then it will be created when AutoDaggerInitializer is injected and Initializable.initialize will be called when AutoDaggerInitializer.initialize is called.

Otherwise, the object is only created when AutoDaggerInitializer.initialize is called.

Since

1.0.0

+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
object Companion
+
+
+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+

The priority of the object which determines initialization order. Objects with a higher priority are initialized first. If two initializables have the same priority then they are initialized in an undefined order. The default priority is 1.

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-initialize/priority.html b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-initialize/priority.html new file mode 100644 index 000000000..bba549afb --- /dev/null +++ b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-auto-initialize/priority.html @@ -0,0 +1,82 @@ + + + + + priority + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

priority

+
+ +
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/core/se.ansman.dagger.auto/-bind-generic-as/-default/index.html b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-bind-generic-as/-default/index.html new file mode 100644 index 000000000..ec9bd67c5 --- /dev/null +++ b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-bind-generic-as/-default/index.html @@ -0,0 +1,106 @@ + + + + + Default + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

Default

+
@Target(allowedTargets = [AnnotationTarget.CLASS])
annotation class Default(val value: BindGenericAs)(source)

Specifies the default AutoBindIntoSet.bindGenericAs and AutoBindIntoMap.bindGenericAs for the annotated type.

This is useful if you know that the generic is always unique or if it's always shared. For example, an Interceptor<T> should probably be bound as ExactType because you want to get all interceptors for a given type where as Resource<T> should probably be bound as Wildcard since you're likely interested in getting all resources because there are no duplicates.

You can only add this to generic types.

Example when using wildcard:

@BindGenericAs.Default(BindGenericAs.Wildcard)
interface Resource<T> {
fun produce(): T
fun close()
}

@AutoBindIntoSet // Will bind this as Resource<*> instead of Resource<SomeThing>
class SomeResource @Inject constructor() : Resource<SomeThing> {
...
override fun close() { ... }
}

class ResourceCloser @Inject constructor(
val resources: Set<@JvmSuppressWildcards Resource<*>>
) {
fun closeAllResources() {
resources.forEach { it.close() }
}
}

Example when using exact type:

@BindGenericAs.Default(BindGenericAs.Type)
interface Interceptor<T> {
fun intercept(value: T): T
}

@AutoBindIntoSet // Will bind this as Interceptor<SomeThing>
class SomeInterceptor @Inject constructor() : Interceptor<SomeThing> {
...
}

class SomeOperation @Inject constructor(
val interceptors: Set<@JvmSuppressWildcards Interceptor<SomeThing>>
) {
fun performOperation(value: SomeThing): SomeThing {
return interceptors.fold(value) { v, interceptor -> interceptor.intercept(v) }
}
}

Since

1.0.0

See also

+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/core/se.ansman.dagger.auto/-bind-generic-as/-default/value.html b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-bind-generic-as/-default/value.html new file mode 100644 index 000000000..3f6136a53 --- /dev/null +++ b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-bind-generic-as/-default/value.html @@ -0,0 +1,82 @@ + + + + + value + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

value

+
+ +
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/core/se.ansman.dagger.auto/-bind-generic-as/-exact-type-and-wildcard/index.html b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-bind-generic-as/-exact-type-and-wildcard/index.html new file mode 100644 index 000000000..28fe3763d --- /dev/null +++ b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-bind-generic-as/-exact-type-and-wildcard/index.html @@ -0,0 +1,121 @@ + + + + + ExactTypeAndWildcard + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

ExactTypeAndWildcard

+

The type is bound as the exact supertype and as a wildcard type. For example, if the type is List<String> then it's bound as both List<String> and List<*>.

+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/core/se.ansman.dagger.auto/-bind-generic-as/-exact-type/index.html b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-bind-generic-as/-exact-type/index.html new file mode 100644 index 000000000..794d2a64c --- /dev/null +++ b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-bind-generic-as/-exact-type/index.html @@ -0,0 +1,121 @@ + + + + + ExactType + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

ExactType

+

Only the exact supertype is bound. For example, if the type is List<String> then only List<String> is bound.

This is the default unless the target type is annotated with Default.

+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/core/se.ansman.dagger.auto/-bind-generic-as/-wildcard/index.html b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-bind-generic-as/-wildcard/index.html new file mode 100644 index 000000000..66afc7c05 --- /dev/null +++ b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-bind-generic-as/-wildcard/index.html @@ -0,0 +1,121 @@ + + + + + Wildcard + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

Wildcard

+

The type is bound as a wildcard type. For example, if the type is List<String> then it's bound as List<*>.

+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/core/se.ansman.dagger.auto/-bind-generic-as/entries.html b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-bind-generic-as/entries.html new file mode 100644 index 000000000..9d586d610 --- /dev/null +++ b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-bind-generic-as/entries.html @@ -0,0 +1,82 @@ + + + + + entries + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

entries

+
+

Returns a representation of an immutable list of all enum entries, in the order they're declared.

This method may be used to iterate over the enum entries.

+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/core/se.ansman.dagger.auto/-bind-generic-as/index.html b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-bind-generic-as/index.html new file mode 100644 index 000000000..37db6b8b2 --- /dev/null +++ b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-bind-generic-as/index.html @@ -0,0 +1,238 @@ + + + + + BindGenericAs + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

BindGenericAs

+

How generic types are bound when using multibinding such as AutoBindIntoSet or AutoBindIntoMap.

The default is ExactType unless the bound type is annotated with Default in which case that is used as the default.

Since

1.0.0

+
+
+
+
+
+

Entries

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+

Only the exact supertype is bound. For example, if the type is List<String> then only List<String> is bound.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

The type is bound as a wildcard type. For example, if the type is List<String> then it's bound as List<*>.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

The type is bound as the exact supertype and as a wildcard type. For example, if the type is List<String> then it's bound as both List<String> and List<*>.

+
+
+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
@Target(allowedTargets = [AnnotationTarget.CLASS])
annotation class Default(val value: BindGenericAs)

Specifies the default AutoBindIntoSet.bindGenericAs and AutoBindIntoMap.bindGenericAs for the annotated type.

+
+
+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+

Returns a representation of an immutable list of all enum entries, in the order they're declared.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+

Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Returns an array containing the constants of this enum type, in the order they're declared.

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/core/se.ansman.dagger.auto/-bind-generic-as/value-of.html b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-bind-generic-as/value-of.html new file mode 100644 index 000000000..05421e2b8 --- /dev/null +++ b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-bind-generic-as/value-of.html @@ -0,0 +1,82 @@ + + + + + valueOf + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

valueOf

+
+

Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)

Throws

if this enum type has no constant with the specified name

+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/core/se.ansman.dagger.auto/-bind-generic-as/values.html b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-bind-generic-as/values.html new file mode 100644 index 000000000..6e2afde65 --- /dev/null +++ b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-bind-generic-as/values.html @@ -0,0 +1,82 @@ + + + + + values + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

values

+
+

Returns an array containing the constants of this enum type, in the order they're declared.

This method may be used to iterate over the constants.

+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/core/se.ansman.dagger.auto/-initializable/-companion/as-initializable.html b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-initializable/-companion/as-initializable.html new file mode 100644 index 000000000..c41d32e9f --- /dev/null +++ b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-initializable/-companion/as-initializable.html @@ -0,0 +1,82 @@ + + + + + asInitializable + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

asInitializable

+
+
@JvmName(name = "fromLazy")
fun Lazy<*>.asInitializable(priority: Int = AutoInitialize.defaultPriority): Initializable(source)

Converts the provided Lazy into an Initializable with the given priority (see AutoInitialize.priority).

When the returned Initializable is initialized, the lazy value is computed.

Since

1.0.0

+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/core/se.ansman.dagger.auto/-initializable/-companion/index.html b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-initializable/-companion/index.html new file mode 100644 index 000000000..e5200f67a --- /dev/null +++ b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-initializable/-companion/index.html @@ -0,0 +1,121 @@ + + + + + Companion + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

Companion

+ +
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
@JvmName(name = "fromLazy")
fun Lazy<*>.asInitializable(priority: Int = AutoInitialize.defaultPriority): Initializable

Converts the provided Lazy into an Initializable with the given priority (see AutoInitialize.priority).

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Returns a new Initializable with the given priority.

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/core/se.ansman.dagger.auto/-initializable/-companion/with-priority.html b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-initializable/-companion/with-priority.html new file mode 100644 index 000000000..b0c475372 --- /dev/null +++ b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-initializable/-companion/with-priority.html @@ -0,0 +1,82 @@ + + + + + withPriority + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

withPriority

+
+

Returns a new Initializable with the given priority.

Since

1.0.0

+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/core/se.ansman.dagger.auto/-initializable/index.html b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-initializable/index.html new file mode 100644 index 000000000..5014386a8 --- /dev/null +++ b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-initializable/index.html @@ -0,0 +1,140 @@ + + + + + Initializable + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

Initializable

+

An interface used to indicate that initialization isn't done when the object is created but rather when calling initialize.

This is useful if you want to be able to test your object.

Although you can use this interface by itself, it's meant to be used in conjunction with AutoInitialize.

Since

1.0.0

See also

Inheritors

+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
object Companion
+
+
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
abstract fun initialize()

Initializes the initializable.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Returns a new Initializable with the given priority.

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/core/se.ansman.dagger.auto/-initializable/initialize.html b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-initializable/initialize.html new file mode 100644 index 000000000..6caffb59a --- /dev/null +++ b/dokka/older/1.1.0/core/se.ansman.dagger.auto/-initializable/initialize.html @@ -0,0 +1,82 @@ + + + + + initialize + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

initialize

+
+
abstract fun initialize()(source)

Initializes the initializable.

+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/core/se.ansman.dagger.auto/index.html b/dokka/older/1.1.0/core/se.ansman.dagger.auto/index.html new file mode 100644 index 000000000..a21d5d2aa --- /dev/null +++ b/dokka/older/1.1.0/core/se.ansman.dagger.auto/index.html @@ -0,0 +1,195 @@ + + + + + se.ansman.dagger.auto + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

Package-level declarations

+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
@Target(allowedTargets = [AnnotationTarget.CLASS])
annotation class AutoBind(val inComponent: KClass<*> = Nothing::class, val asTypes: Array<KClass<*>> = [])

Instructs Auto Dagger to automatically bind the annotated type as its parent type.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
@Target(allowedTargets = [AnnotationTarget.CLASS])
annotation class AutoBindIntoMap(val inComponent: KClass<*> = Nothing::class, val asTypes: Array<KClass<*>> = [], val bindGenericAs: BindGenericAs = BindGenericAs.ExactType)

A version of AutoBind that binds the object using IntoMap. The object must also be annotated with a MapKey annotated annotation such as StringKey, MapKey, or a custom annotation.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
@Target(allowedTargets = [AnnotationTarget.CLASS])
annotation class AutoBindIntoSet(val inComponent: KClass<*> = Nothing::class, val asTypes: Array<KClass<*>> = [], val bindGenericAs: BindGenericAs = BindGenericAs.ExactType)

A version of AutoBind that binds the object using IntoSet.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
class AutoDaggerInitializer @Inject constructor(initializables: Set<@JvmSuppressWildcards Initializable>) : Initializable

A class that can initialize multiple Initializable in order of their priority.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
annotation class AutoInitialize(val priority: Int = defaultPriority)

Marks the given objects as being initializable.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

How generic types are bound when using multibinding such as AutoBindIntoSet or AutoBindIntoMap.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
interface Initializable

An interface used to indicate that initialization isn't done when the object is created but rather when calling initialize.

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/images/anchor-copy-button.svg b/dokka/older/1.1.0/images/anchor-copy-button.svg new file mode 100644 index 000000000..19c1fa3f4 --- /dev/null +++ b/dokka/older/1.1.0/images/anchor-copy-button.svg @@ -0,0 +1,8 @@ + + + + + + diff --git a/dokka/older/1.1.0/images/arrow_down.svg b/dokka/older/1.1.0/images/arrow_down.svg new file mode 100644 index 000000000..639aaf12c --- /dev/null +++ b/dokka/older/1.1.0/images/arrow_down.svg @@ -0,0 +1,7 @@ + + + + + diff --git a/dokka/older/1.1.0/images/burger.svg b/dokka/older/1.1.0/images/burger.svg new file mode 100644 index 000000000..fcca732b7 --- /dev/null +++ b/dokka/older/1.1.0/images/burger.svg @@ -0,0 +1,9 @@ + + + + + + + diff --git a/dokka/older/1.1.0/images/copy-icon.svg b/dokka/older/1.1.0/images/copy-icon.svg new file mode 100644 index 000000000..2cb02ec6e --- /dev/null +++ b/dokka/older/1.1.0/images/copy-icon.svg @@ -0,0 +1,7 @@ + + + + + diff --git a/dokka/older/1.1.0/images/copy-successful-icon.svg b/dokka/older/1.1.0/images/copy-successful-icon.svg new file mode 100644 index 000000000..c4b95383d --- /dev/null +++ b/dokka/older/1.1.0/images/copy-successful-icon.svg @@ -0,0 +1,7 @@ + + + + + diff --git a/dokka/older/1.1.0/images/footer-go-to-link.svg b/dokka/older/1.1.0/images/footer-go-to-link.svg new file mode 100644 index 000000000..a87add7a3 --- /dev/null +++ b/dokka/older/1.1.0/images/footer-go-to-link.svg @@ -0,0 +1,7 @@ + + + + + diff --git a/dokka/older/1.1.0/images/go-to-top-icon.svg b/dokka/older/1.1.0/images/go-to-top-icon.svg new file mode 100644 index 000000000..abc3d1cef --- /dev/null +++ b/dokka/older/1.1.0/images/go-to-top-icon.svg @@ -0,0 +1,8 @@ + + + + + + diff --git a/dokka/older/1.1.0/images/homepage.svg b/dokka/older/1.1.0/images/homepage.svg new file mode 100644 index 000000000..e3c83b1ce --- /dev/null +++ b/dokka/older/1.1.0/images/homepage.svg @@ -0,0 +1,3 @@ + + + diff --git a/dokka/older/1.1.0/images/logo-icon.svg b/dokka/older/1.1.0/images/logo-icon.svg new file mode 100644 index 000000000..e42f9570c --- /dev/null +++ b/dokka/older/1.1.0/images/logo-icon.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + diff --git a/dokka/older/1.1.0/images/nav-icons/abstract-class-kotlin.svg b/dokka/older/1.1.0/images/nav-icons/abstract-class-kotlin.svg new file mode 100644 index 000000000..19d6148ca --- /dev/null +++ b/dokka/older/1.1.0/images/nav-icons/abstract-class-kotlin.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dokka/older/1.1.0/images/nav-icons/abstract-class.svg b/dokka/older/1.1.0/images/nav-icons/abstract-class.svg new file mode 100644 index 000000000..601820302 --- /dev/null +++ b/dokka/older/1.1.0/images/nav-icons/abstract-class.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/dokka/older/1.1.0/images/nav-icons/annotation-kotlin.svg b/dokka/older/1.1.0/images/nav-icons/annotation-kotlin.svg new file mode 100644 index 000000000..b90f508c4 --- /dev/null +++ b/dokka/older/1.1.0/images/nav-icons/annotation-kotlin.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/dokka/older/1.1.0/images/nav-icons/annotation.svg b/dokka/older/1.1.0/images/nav-icons/annotation.svg new file mode 100644 index 000000000..b80c54b4b --- /dev/null +++ b/dokka/older/1.1.0/images/nav-icons/annotation.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/dokka/older/1.1.0/images/nav-icons/class-kotlin.svg b/dokka/older/1.1.0/images/nav-icons/class-kotlin.svg new file mode 100644 index 000000000..797a2423c --- /dev/null +++ b/dokka/older/1.1.0/images/nav-icons/class-kotlin.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/dokka/older/1.1.0/images/nav-icons/class.svg b/dokka/older/1.1.0/images/nav-icons/class.svg new file mode 100644 index 000000000..3f1ad167e --- /dev/null +++ b/dokka/older/1.1.0/images/nav-icons/class.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/dokka/older/1.1.0/images/nav-icons/enum-kotlin.svg b/dokka/older/1.1.0/images/nav-icons/enum-kotlin.svg new file mode 100644 index 000000000..775a7cc90 --- /dev/null +++ b/dokka/older/1.1.0/images/nav-icons/enum-kotlin.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/dokka/older/1.1.0/images/nav-icons/enum.svg b/dokka/older/1.1.0/images/nav-icons/enum.svg new file mode 100644 index 000000000..fa7f24766 --- /dev/null +++ b/dokka/older/1.1.0/images/nav-icons/enum.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/dokka/older/1.1.0/images/nav-icons/exception-class.svg b/dokka/older/1.1.0/images/nav-icons/exception-class.svg new file mode 100644 index 000000000..c0b2bdeba --- /dev/null +++ b/dokka/older/1.1.0/images/nav-icons/exception-class.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/dokka/older/1.1.0/images/nav-icons/field-value.svg b/dokka/older/1.1.0/images/nav-icons/field-value.svg new file mode 100644 index 000000000..2771ee56c --- /dev/null +++ b/dokka/older/1.1.0/images/nav-icons/field-value.svg @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/dokka/older/1.1.0/images/nav-icons/field-variable.svg b/dokka/older/1.1.0/images/nav-icons/field-variable.svg new file mode 100644 index 000000000..e2d2bbd01 --- /dev/null +++ b/dokka/older/1.1.0/images/nav-icons/field-variable.svg @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/dokka/older/1.1.0/images/nav-icons/function.svg b/dokka/older/1.1.0/images/nav-icons/function.svg new file mode 100644 index 000000000..f0da64a0b --- /dev/null +++ b/dokka/older/1.1.0/images/nav-icons/function.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/dokka/older/1.1.0/images/nav-icons/interface-kotlin.svg b/dokka/older/1.1.0/images/nav-icons/interface-kotlin.svg new file mode 100644 index 000000000..5e163260e --- /dev/null +++ b/dokka/older/1.1.0/images/nav-icons/interface-kotlin.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/dokka/older/1.1.0/images/nav-icons/interface.svg b/dokka/older/1.1.0/images/nav-icons/interface.svg new file mode 100644 index 000000000..32063ba26 --- /dev/null +++ b/dokka/older/1.1.0/images/nav-icons/interface.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/dokka/older/1.1.0/images/nav-icons/object.svg b/dokka/older/1.1.0/images/nav-icons/object.svg new file mode 100644 index 000000000..31f0ee3e6 --- /dev/null +++ b/dokka/older/1.1.0/images/nav-icons/object.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/dokka/older/1.1.0/images/nav-icons/typealias-kotlin.svg b/dokka/older/1.1.0/images/nav-icons/typealias-kotlin.svg new file mode 100644 index 000000000..f4bb238b5 --- /dev/null +++ b/dokka/older/1.1.0/images/nav-icons/typealias-kotlin.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/dokka/older/1.1.0/images/theme-toggle.svg b/dokka/older/1.1.0/images/theme-toggle.svg new file mode 100644 index 000000000..df86202bb --- /dev/null +++ b/dokka/older/1.1.0/images/theme-toggle.svg @@ -0,0 +1,7 @@ + + + + + diff --git a/dokka/older/1.1.0/index.html b/dokka/older/1.1.0/index.html new file mode 100644 index 000000000..867d57c95 --- /dev/null +++ b/dokka/older/1.1.0/index.html @@ -0,0 +1,157 @@ + + + + + All modules + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

All modules:

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/dokka/older/1.1.0/navigation.html b/dokka/older/1.1.0/navigation.html new file mode 100644 index 000000000..d3cda10f2 --- /dev/null +++ b/dokka/older/1.1.0/navigation.html @@ -0,0 +1,173 @@ + + diff --git a/dokka/older/1.1.0/not-found-version.html b/dokka/older/1.1.0/not-found-version.html new file mode 100644 index 000000000..b632b8fc6 --- /dev/null +++ b/dokka/older/1.1.0/not-found-version.html @@ -0,0 +1,182 @@ + + + + + Unavailable page + + + + + + + + + + + NOT + FOUND + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+

uh-oh!

+
You are requesting a page that not + available in documentation version +
+
+
+
+ + + diff --git a/dokka/older/1.1.0/package-list b/dokka/older/1.1.0/package-list new file mode 100644 index 000000000..cab47e243 --- /dev/null +++ b/dokka/older/1.1.0/package-list @@ -0,0 +1,17 @@ +$dokka.format:html-v1 +$dokka.linkExtension:html + +module:core +se.ansman.dagger.auto +module:android +se.ansman.dagger.auto.android +module:ktorfit +se.ansman.dagger.auto.ktorfit +module:retrofit +se.ansman.dagger.auto.retrofit +module:android-testing +se.ansman.dagger.auto.android.testing +module:androidx-room +se.ansman.dagger.auto.androidx.room +module:androidx-viewmodel +se.ansman.dagger.auto.androidx.viewmodel diff --git a/dokka/older/1.1.0/scripts/clipboard.js b/dokka/older/1.1.0/scripts/clipboard.js new file mode 100644 index 000000000..7a4f33c59 --- /dev/null +++ b/dokka/older/1.1.0/scripts/clipboard.js @@ -0,0 +1,56 @@ +/* + * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. + */ + +window.addEventListener('load', () => { + document.querySelectorAll('span.copy-icon').forEach(element => { + element.addEventListener('click', (el) => copyElementsContentToClipboard(element)); + }) + + document.querySelectorAll('span.anchor-icon').forEach(element => { + element.addEventListener('click', (el) => { + if(element.hasAttribute('pointing-to')){ + const location = hrefWithoutCurrentlyUsedAnchor() + '#' + element.getAttribute('pointing-to') + copyTextToClipboard(element, location) + } + }); + }) +}) + +const copyElementsContentToClipboard = (element) => { + const selection = window.getSelection(); + const range = document.createRange(); + range.selectNodeContents(element.parentNode.parentNode); + selection.removeAllRanges(); + selection.addRange(range); + + copyAndShowPopup(element, () => selection.removeAllRanges()) +} + +const copyTextToClipboard = (element, text) => { + var textarea = document.createElement("textarea"); + textarea.textContent = text; + textarea.style.position = "fixed"; + document.body.appendChild(textarea); + textarea.select(); + + copyAndShowPopup(element, () => document.body.removeChild(textarea)) +} + +const copyAndShowPopup = (element, after) => { + try { + document.execCommand('copy'); + element.nextElementSibling.classList.add('active-popup'); + setTimeout(() => { + element.nextElementSibling.classList.remove('active-popup'); + }, 1200); + } catch (e) { + console.error('Failed to write to clipboard:', e) + } + finally { + if(after) after() + } +} + +const hrefWithoutCurrentlyUsedAnchor = () => window.location.href.split('#')[0] + diff --git a/dokka/older/1.1.0/scripts/main.js b/dokka/older/1.1.0/scripts/main.js new file mode 100644 index 000000000..ba6c34739 --- /dev/null +++ b/dokka/older/1.1.0/scripts/main.js @@ -0,0 +1,44 @@ +(()=>{var e={8527:e=>{e.exports=''},5570:e=>{e.exports=''},107:e=>{e.exports=''},7224:e=>{e.exports=''},538:e=>{e.exports=''},1924:(e,n,t)=>{"use strict";var r=t(210),o=t(5559),i=o(r("String.prototype.indexOf"));e.exports=function(e,n){var t=r(e,!!n);return"function"==typeof t&&i(e,".prototype.")>-1?o(t):t}},5559:(e,n,t)=>{"use strict";var r=t(8612),o=t(210),i=o("%Function.prototype.apply%"),a=o("%Function.prototype.call%"),l=o("%Reflect.apply%",!0)||r.call(a,i),c=o("%Object.getOwnPropertyDescriptor%",!0),u=o("%Object.defineProperty%",!0),s=o("%Math.max%");if(u)try{u({},"a",{value:1})}catch(e){u=null}e.exports=function(e){var n=l(r,a,arguments);if(c&&u){var t=c(n,"length");t.configurable&&u(n,"length",{value:1+s(0,e.length-(arguments.length-1))})}return n};var f=function(){return l(r,i,arguments)};u?u(e.exports,"apply",{value:f}):e.exports.apply=f},4184:(e,n)=>{var t; +/*! + Copyright (c) 2018 Jed Watson. + Licensed under the MIT License (MIT), see + http://jedwatson.github.io/classnames +*/!function(){"use strict";var r={}.hasOwnProperty;function o(){for(var e=[],n=0;n{"use strict";e.exports=function(e,n){var t=this,r=t.constructor;return t.options=Object.assign({storeInstancesGlobally:!0},n||{}),t.callbacks={},t.directMap={},t.sequenceLevels={},t.resetTimer=null,t.ignoreNextKeyup=!1,t.ignoreNextKeypress=!1,t.nextExpectedAction=!1,t.element=e,t.addEvents(),t.options.storeInstancesGlobally&&r.instances.push(t),t},e.exports.prototype.bind=t(2207),e.exports.prototype.bindMultiple=t(3396),e.exports.prototype.unbind=t(9208),e.exports.prototype.trigger=t(9855),e.exports.prototype.reset=t(6214),e.exports.prototype.stopCallback=t(3450),e.exports.prototype.handleKey=t(3067),e.exports.prototype.addEvents=t(718),e.exports.prototype.bindSingle=t(8763),e.exports.prototype.getKeyInfo=t(5825),e.exports.prototype.pickBestAction=t(8608),e.exports.prototype.getReverseMap=t(3956),e.exports.prototype.getMatches=t(3373),e.exports.prototype.resetSequences=t(3346),e.exports.prototype.fireCallback=t(2684),e.exports.prototype.bindSequence=t(7103),e.exports.prototype.resetSequenceTimer=t(7309),e.exports.prototype.detach=t(7554),e.exports.instances=[],e.exports.reset=t(1822),e.exports.REVERSE_MAP=null},718:(e,n,t)=>{"use strict";e.exports=function(){var e=this,n=t(4323),r=e.element;e.eventHandler=t(9646).bind(e),n(r,"keypress",e.eventHandler),n(r,"keydown",e.eventHandler),n(r,"keyup",e.eventHandler)}},2207:e=>{"use strict";e.exports=function(e,n,t){return e=e instanceof Array?e:[e],this.bindMultiple(e,n,t),this}},3396:e=>{"use strict";e.exports=function(e,n,t){for(var r=0;r{"use strict";e.exports=function(e,n,r,o){var i=this;function a(n){return function(){i.nextExpectedAction=n,++i.sequenceLevels[e],i.resetSequenceTimer()}}function l(n){var a;i.fireCallback(r,n,e),"keyup"!==o&&(a=t(6770),i.ignoreNextKeyup=a(n)),setTimeout((function(){i.resetSequences()}),10)}i.sequenceLevels[e]=0;for(var c=0;c{"use strict";e.exports=function(e,n,t,r,o){var i=this;i.directMap[e+":"+t]=n;var a,l=(e=e.replace(/\s+/g," ")).split(" ");l.length>1?i.bindSequence(e,l,n,t):(a=i.getKeyInfo(e,t),i.callbacks[a.key]=i.callbacks[a.key]||[],i.getMatches(a.key,a.modifiers,{type:a.action},r,e,o),i.callbacks[a.key][r?"unshift":"push"]({callback:n,modifiers:a.modifiers,action:a.action,seq:r,level:o,combo:e}))}},7554:(e,n,t)=>{var r=t(4323).off;e.exports=function(){var e=this,n=e.element;r(n,"keypress",e.eventHandler),r(n,"keydown",e.eventHandler),r(n,"keyup",e.eventHandler)}},4323:e=>{function n(e,n,t,r){return!e.addEventListener&&(n="on"+n),(e.addEventListener||e.attachEvent).call(e,n,t,r),t}e.exports=n,e.exports.on=n,e.exports.off=function(e,n,t,r){return!e.removeEventListener&&(n="on"+n),(e.removeEventListener||e.detachEvent).call(e,n,t,r),t}},2684:(e,n,t)=>{"use strict";e.exports=function(e,n,r,o){this.stopCallback(n,n.target||n.srcElement,r,o)||!1===e(n,r)&&(t(1350)(n),t(6103)(n))}},5825:(e,n,t)=>{"use strict";e.exports=function(e,n){var r,o,i,a,l,c,u=[];for(r=t(4520)(e),a=t(7549),l=t(5355),c=t(8581),i=0;i{"use strict";e.exports=function(e,n,r,o,i,a){var l,c,u,s,f=this,p=[],d=r.type;"keypress"!==d||r.code&&"Arrow"===r.code.slice(0,5)||(f.callbacks["any-character"]||[]).forEach((function(e){p.push(e)}));if(!f.callbacks[e])return p;for(u=t(8581),"keyup"===d&&u(e)&&(n=[e]),l=0;l{"use strict";e.exports=function(){var e,n=this.constructor;if(!n.REVERSE_MAP)for(var r in n.REVERSE_MAP={},e=t(4766))r>95&&r<112||e.hasOwnProperty(r)&&(n.REVERSE_MAP[e[r]]=r);return n.REVERSE_MAP}},3067:(e,n,t)=>{"use strict";e.exports=function(e,n,r){var o,i,a,l,c=this,u={},s=0,f=!1;for(o=c.getMatches(e,n,r),i=0;i{"use strict";e.exports=function(e){var n,r=this;"number"!=typeof e.which&&(e.which=e.keyCode);var o=t(6770)(e);void 0!==o&&("keyup"!==e.type||r.ignoreNextKeyup!==o?(n=t(4610),r.handleKey(o,n(e),e)):r.ignoreNextKeyup=!1)}},5532:e=>{"use strict";e.exports=function(e,n){return e.sort().join(",")===n.sort().join(",")}},8608:e=>{"use strict";e.exports=function(e,n,t){return t||(t=this.getReverseMap()[e]?"keydown":"keypress"),"keypress"===t&&n.length&&(t="keydown"),t}},6214:e=>{"use strict";e.exports=function(){return this.callbacks={},this.directMap={},this}},7309:e=>{"use strict";e.exports=function(){var e=this;clearTimeout(e.resetTimer),e.resetTimer=setTimeout((function(){e.resetSequences()}),1e3)}},3346:e=>{"use strict";e.exports=function(e){var n=this;e=e||{};var t,r=!1;for(t in n.sequenceLevels)e[t]?r=!0:n.sequenceLevels[t]=0;r||(n.nextExpectedAction=!1)}},3450:e=>{"use strict";e.exports=function(e,n){if((" "+n.className+" ").indexOf(" combokeys ")>-1)return!1;var t=n.tagName.toLowerCase();return"input"===t||"select"===t||"textarea"===t||n.isContentEditable}},9855:e=>{"use strict";e.exports=function(e,n){return this.directMap[e+":"+n]&&this.directMap[e+":"+n]({},e),this}},9208:e=>{"use strict";e.exports=function(e,n){return this.bind(e,(function(){}),n)}},1822:e=>{"use strict";e.exports=function(){this.instances.forEach((function(e){e.reset()}))}},6770:(e,n,t)=>{"use strict";e.exports=function(e){var n,r;if(n=t(4766),r=t(5295),"keypress"===e.type){var o=String.fromCharCode(e.which);return e.shiftKey||(o=o.toLowerCase()),o}return void 0!==n[e.which]?n[e.which]:void 0!==r[e.which]?r[e.which]:String.fromCharCode(e.which).toLowerCase()}},4610:e=>{"use strict";e.exports=function(e){var n=[];return e.shiftKey&&n.push("shift"),e.altKey&&n.push("alt"),e.ctrlKey&&n.push("ctrl"),e.metaKey&&n.push("meta"),n}},8581:e=>{"use strict";e.exports=function(e){return"shift"===e||"ctrl"===e||"alt"===e||"meta"===e}},4520:e=>{"use strict";e.exports=function(e){return"+"===e?["+"]:e.split("+")}},1350:e=>{"use strict";e.exports=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1}},5355:e=>{"use strict";e.exports={"~":"`","!":"1","@":"2","#":"3",$:"4","%":"5","^":"6","&":"7","*":"8","(":"9",")":"0",_:"-","+":"=",":":";",'"':"'","<":",",">":".","?":"/","|":"\\"}},7549:e=>{"use strict";e.exports={option:"alt",command:"meta",return:"enter",escape:"esc",mod:/Mac|iPod|iPhone|iPad/.test(navigator.platform)?"meta":"ctrl"}},5295:e=>{"use strict";e.exports={106:"*",107:"plus",109:"minus",110:".",111:"/",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"}},4766:e=>{"use strict";e.exports={8:"backspace",9:"tab",13:"enter",16:"shift",17:"ctrl",18:"alt",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"ins",46:"del",91:"meta",93:"meta",173:"minus",187:"plus",189:"minus",224:"meta"};for(var n=1;n<20;++n)e.exports[111+n]="f"+n;for(n=0;n<=9;++n)e.exports[n+96]=n},6103:e=>{"use strict";e.exports=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0}},3362:()=>{var e;!function(){var e=Math.PI,n=2*e,t=e/180,r=document.createElement("div");document.head.appendChild(r);var o=self.ConicGradient=function(e){o.all.push(this),e=e||{},this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),this.repeating=!!e.repeating,this.size=e.size||Math.max(innerWidth,innerHeight),this.canvas.width=this.canvas.height=this.size;var n=e.stops;this.stops=(n||"").split(/\s*,(?![^(]*\))\s*/),this.from=0;for(var t=0;t0){var i=this.stops[0].clone();i.pos=0,this.stops.unshift(i)}if(void 0===this.stops[this.stops.length-1].pos)this.stops[this.stops.length-1].pos=1;else if(!this.repeating&&this.stops[this.stops.length-1].pos<1){var a=this.stops[this.stops.length-1].clone();a.pos=1,this.stops.push(a)}if(this.stops.forEach((function(e,n){if(void 0===e.pos){for(var t=n+1;this[t];t++)if(void 0!==this[t].pos){e.pos=this[n-1].pos+(this[t].pos-this[n-1].pos)/(t-n+1);break}}else n>0&&(e.pos=Math.max(e.pos,this[n-1].pos))}),this.stops),this.repeating){var l=(n=this.stops.slice())[n.length-1].pos-n[0].pos;for(t=0;this.stops[this.stops.length-1].pos<1&&t<1e4;t++)for(var c=0;c'},get png(){return this.canvas.toDataURL()},get r(){return Math.sqrt(2)*this.size/2},paint:function(){var e,n,r,o=this.context,i=this.r,a=this.size/2,l=0,c=this.stops[l];o.translate(this.size/2,this.size/2),o.rotate(-90*t),o.rotate(this.from*t),o.translate(-this.size/2,-this.size/2);for(var u=0;u<360;){if(u/360+1e-5>=c.pos){do{e=c,l++,c=this.stops[l]}while(c&&c!=e&&c.pos===e.pos);if(!c)break;var s=e.color+""==c.color+""&&e!=c;n=e.color.map((function(e,n){return c.color[n]-e}))}r=(u/360-e.pos)/(c.pos-e.pos);var f=s?c.color:n.map((function(n,t){var o=n*r+e.color[t];return t<3?255&o:o}));if(o.fillStyle="rgba("+f.join(",")+")",o.beginPath(),o.moveTo(a,a),s)var p=360*(c.pos-e.pos);else p=.5;var d=u*t,h=(d=Math.min(360*t,d))+p*t;h=Math.min(360*t,h+.02),o.arc(a,a,i,d,h),o.closePath(),o.fill(),u+=p}}},o.ColorStop=function(e,t){if(this.gradient=e,t){var r=t.match(/^(.+?)(?:\s+([\d.]+)(%|deg|turn|grad|rad)?)?(?:\s+([\d.]+)(%|deg|turn|grad|rad)?)?\s*$/);if(this.color=o.ColorStop.colorToRGBA(r[1]),r[2]){var i=r[3];"%"==i||"0"===r[2]&&!i?this.pos=r[2]/100:"turn"==i?this.pos=+r[2]:"deg"==i?this.pos=r[2]/360:"grad"==i?this.pos=r[2]/400:"rad"==i&&(this.pos=r[2]/n)}r[4]&&(this.next=new o.ColorStop(e,r[1]+" "+r[4]+r[5]))}},o.ColorStop.prototype={clone:function(){var e=new o.ColorStop(this.gradient);return e.color=this.color,e.pos=this.pos,e},toString:function(){return"rgba("+this.color.join(", ")+") "+100*this.pos+"%"}},o.ColorStop.colorToRGBA=function(e){if(!Array.isArray(e)&&-1==e.indexOf("from")){r.style.color=e;var n=getComputedStyle(r).color.match(/rgba?\(([\d.]+), ([\d.]+), ([\d.]+)(?:, ([\d.]+))?\)/);return n&&(n.shift(),(n=n.map((function(e){return+e})))[3]=isNaN(n[3])?1:n[3]),n||[0,0,0,0]}return e}}(),self.StyleFix&&((e=document.createElement("p")).style.backgroundImage="conic-gradient(white, black)",e.style.backgroundImage=PrefixFree.prefix+"conic-gradient(white, black)",e.style.backgroundImage||StyleFix.register((function(e,n){return e.indexOf("conic-gradient")>-1&&(e=e.replace(/(?:repeating-)?conic-gradient\(\s*((?:\([^()]+\)|[^;()}])+?)\)/g,(function(e,n){return new ConicGradient({stops:n,repeating:e.indexOf("repeating-")>-1})}))),e})))},9662:(e,n,t)=>{var r=t(7854),o=t(614),i=t(6330),a=r.TypeError;e.exports=function(e){if(o(e))return e;throw a(i(e)+" is not a function")}},9483:(e,n,t)=>{var r=t(7854),o=t(4411),i=t(6330),a=r.TypeError;e.exports=function(e){if(o(e))return e;throw a(i(e)+" is not a constructor")}},6077:(e,n,t)=>{var r=t(7854),o=t(614),i=r.String,a=r.TypeError;e.exports=function(e){if("object"==typeof e||o(e))return e;throw a("Can't set "+i(e)+" as a prototype")}},1223:(e,n,t)=>{var r=t(5112),o=t(30),i=t(3070),a=r("unscopables"),l=Array.prototype;null==l[a]&&i.f(l,a,{configurable:!0,value:o(null)}),e.exports=function(e){l[a][e]=!0}},1530:(e,n,t)=>{"use strict";var r=t(8710).charAt;e.exports=function(e,n,t){return n+(t?r(e,n).length:1)}},5787:(e,n,t)=>{var r=t(7854),o=t(7976),i=r.TypeError;e.exports=function(e,n){if(o(n,e))return e;throw i("Incorrect invocation")}},9670:(e,n,t)=>{var r=t(7854),o=t(111),i=r.String,a=r.TypeError;e.exports=function(e){if(o(e))return e;throw a(i(e)+" is not an object")}},7556:(e,n,t)=>{var r=t(7293);e.exports=r((function(){if("function"==typeof ArrayBuffer){var e=new ArrayBuffer(8);Object.isExtensible(e)&&Object.defineProperty(e,"a",{value:8})}}))},8533:(e,n,t)=>{"use strict";var r=t(2092).forEach,o=t(9341)("forEach");e.exports=o?[].forEach:function(e){return r(this,e,arguments.length>1?arguments[1]:void 0)}},8457:(e,n,t)=>{"use strict";var r=t(7854),o=t(9974),i=t(6916),a=t(7908),l=t(3411),c=t(7659),u=t(4411),s=t(6244),f=t(6135),p=t(8554),d=t(1246),h=r.Array;e.exports=function(e){var n=a(e),t=u(this),r=arguments.length,g=r>1?arguments[1]:void 0,v=void 0!==g;v&&(g=o(g,r>2?arguments[2]:void 0));var A,b,m,y,E,_,C=d(n),w=0;if(!C||this==h&&c(C))for(A=s(n),b=t?new this(A):h(A);A>w;w++)_=v?g(n[w],w):n[w],f(b,w,_);else for(E=(y=p(n,C)).next,b=t?new this:[];!(m=i(E,y)).done;w++)_=v?l(y,g,[m.value,w],!0):m.value,f(b,w,_);return b.length=w,b}},1318:(e,n,t)=>{var r=t(5656),o=t(1400),i=t(6244),a=function(e){return function(n,t,a){var l,c=r(n),u=i(c),s=o(a,u);if(e&&t!=t){for(;u>s;)if((l=c[s++])!=l)return!0}else for(;u>s;s++)if((e||s in c)&&c[s]===t)return e||s||0;return!e&&-1}};e.exports={includes:a(!0),indexOf:a(!1)}},2092:(e,n,t)=>{var r=t(9974),o=t(1702),i=t(8361),a=t(7908),l=t(6244),c=t(5417),u=o([].push),s=function(e){var n=1==e,t=2==e,o=3==e,s=4==e,f=6==e,p=7==e,d=5==e||f;return function(h,g,v,A){for(var b,m,y=a(h),E=i(y),_=r(g,v),C=l(E),w=0,x=A||c,k=n?x(h,C):t||p?x(h,0):void 0;C>w;w++)if((d||w in E)&&(m=_(b=E[w],w,y),e))if(n)k[w]=m;else if(m)switch(e){case 3:return!0;case 5:return b;case 6:return w;case 2:u(k,b)}else switch(e){case 4:return!1;case 7:u(k,b)}return f?-1:o||s?s:k}};e.exports={forEach:s(0),map:s(1),filter:s(2),some:s(3),every:s(4),find:s(5),findIndex:s(6),filterReject:s(7)}},1194:(e,n,t)=>{var r=t(7293),o=t(5112),i=t(7392),a=o("species");e.exports=function(e){return i>=51||!r((function(){var n=[];return(n.constructor={})[a]=function(){return{foo:1}},1!==n[e](Boolean).foo}))}},9341:(e,n,t)=>{"use strict";var r=t(7293);e.exports=function(e,n){var t=[][e];return!!t&&r((function(){t.call(null,n||function(){throw 1},1)}))}},3671:(e,n,t)=>{var r=t(7854),o=t(9662),i=t(7908),a=t(8361),l=t(6244),c=r.TypeError,u=function(e){return function(n,t,r,u){o(t);var s=i(n),f=a(s),p=l(s),d=e?p-1:0,h=e?-1:1;if(r<2)for(;;){if(d in f){u=f[d],d+=h;break}if(d+=h,e?d<0:p<=d)throw c("Reduce of empty array with no initial value")}for(;e?d>=0:p>d;d+=h)d in f&&(u=t(u,f[d],d,s));return u}};e.exports={left:u(!1),right:u(!0)}},206:(e,n,t)=>{var r=t(1702);e.exports=r([].slice)},4362:(e,n,t)=>{var r=t(206),o=Math.floor,i=function(e,n){var t=e.length,c=o(t/2);return t<8?a(e,n):l(e,i(r(e,0,c),n),i(r(e,c),n),n)},a=function(e,n){for(var t,r,o=e.length,i=1;i0;)e[r]=e[--r];r!==i++&&(e[r]=t)}return e},l=function(e,n,t,r){for(var o=n.length,i=t.length,a=0,l=0;a{var r=t(7854),o=t(3157),i=t(4411),a=t(111),l=t(5112)("species"),c=r.Array;e.exports=function(e){var n;return o(e)&&(n=e.constructor,(i(n)&&(n===c||o(n.prototype))||a(n)&&null===(n=n[l]))&&(n=void 0)),void 0===n?c:n}},5417:(e,n,t)=>{var r=t(7475);e.exports=function(e,n){return new(r(e))(0===n?0:n)}},3411:(e,n,t)=>{var r=t(9670),o=t(9212);e.exports=function(e,n,t,i){try{return i?n(r(t)[0],t[1]):n(t)}catch(n){o(e,"throw",n)}}},7072:(e,n,t)=>{var r=t(5112)("iterator"),o=!1;try{var i=0,a={next:function(){return{done:!!i++}},return:function(){o=!0}};a[r]=function(){return this},Array.from(a,(function(){throw 2}))}catch(e){}e.exports=function(e,n){if(!n&&!o)return!1;var t=!1;try{var i={};i[r]=function(){return{next:function(){return{done:t=!0}}}},e(i)}catch(e){}return t}},4326:(e,n,t)=>{var r=t(1702),o=r({}.toString),i=r("".slice);e.exports=function(e){return i(o(e),8,-1)}},648:(e,n,t)=>{var r=t(7854),o=t(1694),i=t(614),a=t(4326),l=t(5112)("toStringTag"),c=r.Object,u="Arguments"==a(function(){return arguments}());e.exports=o?a:function(e){var n,t,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(t=function(e,n){try{return e[n]}catch(e){}}(n=c(e),l))?t:u?a(n):"Object"==(r=a(n))&&i(n.callee)?"Arguments":r}},5631:(e,n,t)=>{"use strict";var r=t(3070).f,o=t(30),i=t(2248),a=t(9974),l=t(5787),c=t(408),u=t(654),s=t(6340),f=t(9781),p=t(2423).fastKey,d=t(9909),h=d.set,g=d.getterFor;e.exports={getConstructor:function(e,n,t,u){var s=e((function(e,r){l(e,d),h(e,{type:n,index:o(null),first:void 0,last:void 0,size:0}),f||(e.size=0),null!=r&&c(r,e[u],{that:e,AS_ENTRIES:t})})),d=s.prototype,v=g(n),A=function(e,n,t){var r,o,i=v(e),a=b(e,n);return a?a.value=t:(i.last=a={index:o=p(n,!0),key:n,value:t,previous:r=i.last,next:void 0,removed:!1},i.first||(i.first=a),r&&(r.next=a),f?i.size++:e.size++,"F"!==o&&(i.index[o]=a)),e},b=function(e,n){var t,r=v(e),o=p(n);if("F"!==o)return r.index[o];for(t=r.first;t;t=t.next)if(t.key==n)return t};return i(d,{clear:function(){for(var e=v(this),n=e.index,t=e.first;t;)t.removed=!0,t.previous&&(t.previous=t.previous.next=void 0),delete n[t.index],t=t.next;e.first=e.last=void 0,f?e.size=0:this.size=0},delete:function(e){var n=this,t=v(n),r=b(n,e);if(r){var o=r.next,i=r.previous;delete t.index[r.index],r.removed=!0,i&&(i.next=o),o&&(o.previous=i),t.first==r&&(t.first=o),t.last==r&&(t.last=i),f?t.size--:n.size--}return!!r},forEach:function(e){for(var n,t=v(this),r=a(e,arguments.length>1?arguments[1]:void 0);n=n?n.next:t.first;)for(r(n.value,n.key,this);n&&n.removed;)n=n.previous},has:function(e){return!!b(this,e)}}),i(d,t?{get:function(e){var n=b(this,e);return n&&n.value},set:function(e,n){return A(this,0===e?0:e,n)}}:{add:function(e){return A(this,e=0===e?0:e,e)}}),f&&r(d,"size",{get:function(){return v(this).size}}),s},setStrong:function(e,n,t){var r=n+" Iterator",o=g(n),i=g(r);u(e,n,(function(e,n){h(this,{type:r,target:e,state:o(e),kind:n,last:void 0})}),(function(){for(var e=i(this),n=e.kind,t=e.last;t&&t.removed;)t=t.previous;return e.target&&(e.last=t=t?t.next:e.state.first)?"keys"==n?{value:t.key,done:!1}:"values"==n?{value:t.value,done:!1}:{value:[t.key,t.value],done:!1}:(e.target=void 0,{value:void 0,done:!0})}),t?"entries":"values",!t,!0),s(n)}}},9320:(e,n,t)=>{"use strict";var r=t(1702),o=t(2248),i=t(2423).getWeakData,a=t(9670),l=t(111),c=t(5787),u=t(408),s=t(2092),f=t(2597),p=t(9909),d=p.set,h=p.getterFor,g=s.find,v=s.findIndex,A=r([].splice),b=0,m=function(e){return e.frozen||(e.frozen=new y)},y=function(){this.entries=[]},E=function(e,n){return g(e.entries,(function(e){return e[0]===n}))};y.prototype={get:function(e){var n=E(this,e);if(n)return n[1]},has:function(e){return!!E(this,e)},set:function(e,n){var t=E(this,e);t?t[1]=n:this.entries.push([e,n])},delete:function(e){var n=v(this.entries,(function(n){return n[0]===e}));return~n&&A(this.entries,n,1),!!~n}},e.exports={getConstructor:function(e,n,t,r){var s=e((function(e,o){c(e,p),d(e,{type:n,id:b++,frozen:void 0}),null!=o&&u(o,e[r],{that:e,AS_ENTRIES:t})})),p=s.prototype,g=h(n),v=function(e,n,t){var r=g(e),o=i(a(n),!0);return!0===o?m(r).set(n,t):o[r.id]=t,e};return o(p,{delete:function(e){var n=g(this);if(!l(e))return!1;var t=i(e);return!0===t?m(n).delete(e):t&&f(t,n.id)&&delete t[n.id]},has:function(e){var n=g(this);if(!l(e))return!1;var t=i(e);return!0===t?m(n).has(e):t&&f(t,n.id)}}),o(p,t?{get:function(e){var n=g(this);if(l(e)){var t=i(e);return!0===t?m(n).get(e):t?t[n.id]:void 0}},set:function(e,n){return v(this,e,n)}}:{add:function(e){return v(this,e,!0)}}),s}}},7710:(e,n,t)=>{"use strict";var r=t(2109),o=t(7854),i=t(1702),a=t(4705),l=t(1320),c=t(2423),u=t(408),s=t(5787),f=t(614),p=t(111),d=t(7293),h=t(7072),g=t(8003),v=t(9587);e.exports=function(e,n,t){var A=-1!==e.indexOf("Map"),b=-1!==e.indexOf("Weak"),m=A?"set":"add",y=o[e],E=y&&y.prototype,_=y,C={},w=function(e){var n=i(E[e]);l(E,e,"add"==e?function(e){return n(this,0===e?0:e),this}:"delete"==e?function(e){return!(b&&!p(e))&&n(this,0===e?0:e)}:"get"==e?function(e){return b&&!p(e)?void 0:n(this,0===e?0:e)}:"has"==e?function(e){return!(b&&!p(e))&&n(this,0===e?0:e)}:function(e,t){return n(this,0===e?0:e,t),this})};if(a(e,!f(y)||!(b||E.forEach&&!d((function(){(new y).entries().next()})))))_=t.getConstructor(n,e,A,m),c.enable();else if(a(e,!0)){var x=new _,k=x[m](b?{}:-0,1)!=x,S=d((function(){x.has(1)})),O=h((function(e){new y(e)})),B=!b&&d((function(){for(var e=new y,n=5;n--;)e[m](n,n);return!e.has(-0)}));O||((_=n((function(e,n){s(e,E);var t=v(new y,e,_);return null!=n&&u(n,t[m],{that:t,AS_ENTRIES:A}),t}))).prototype=E,E.constructor=_),(S||B)&&(w("delete"),w("has"),A&&w("get")),(B||k)&&w(m),b&&E.clear&&delete E.clear}return C[e]=_,r({global:!0,forced:_!=y},C),g(_,e),b||t.setStrong(_,e,A),_}},9920:(e,n,t)=>{var r=t(2597),o=t(3887),i=t(1236),a=t(3070);e.exports=function(e,n){for(var t=o(n),l=a.f,c=i.f,u=0;u{var r=t(5112)("match");e.exports=function(e){var n=/./;try{"/./"[e](n)}catch(t){try{return n[r]=!1,"/./"[e](n)}catch(e){}}return!1}},8544:(e,n,t)=>{var r=t(7293);e.exports=!r((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}))},4230:(e,n,t)=>{var r=t(1702),o=t(4488),i=t(1340),a=/"/g,l=r("".replace);e.exports=function(e,n,t,r){var c=i(o(e)),u="<"+n;return""!==t&&(u+=" "+t+'="'+l(i(r),a,""")+'"'),u+">"+c+""}},4994:(e,n,t)=>{"use strict";var r=t(3383).IteratorPrototype,o=t(30),i=t(9114),a=t(8003),l=t(7497),c=function(){return this};e.exports=function(e,n,t){var u=n+" Iterator";return e.prototype=o(r,{next:i(1,t)}),a(e,u,!1,!0),l[u]=c,e}},8880:(e,n,t)=>{var r=t(9781),o=t(3070),i=t(9114);e.exports=r?function(e,n,t){return o.f(e,n,i(1,t))}:function(e,n,t){return e[n]=t,e}},9114:e=>{e.exports=function(e,n){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:n}}},6135:(e,n,t)=>{"use strict";var r=t(4948),o=t(3070),i=t(9114);e.exports=function(e,n,t){var a=r(n);a in e?o.f(e,a,i(0,t)):e[a]=t}},8709:(e,n,t)=>{"use strict";var r=t(7854),o=t(9670),i=t(2140),a=r.TypeError;e.exports=function(e){if(o(this),"string"===e||"default"===e)e="string";else if("number"!==e)throw a("Incorrect hint");return i(this,e)}},654:(e,n,t)=>{"use strict";var r=t(2109),o=t(6916),i=t(1913),a=t(6530),l=t(614),c=t(4994),u=t(9518),s=t(7674),f=t(8003),p=t(8880),d=t(1320),h=t(5112),g=t(7497),v=t(3383),A=a.PROPER,b=a.CONFIGURABLE,m=v.IteratorPrototype,y=v.BUGGY_SAFARI_ITERATORS,E=h("iterator"),_="keys",C="values",w="entries",x=function(){return this};e.exports=function(e,n,t,a,h,v,k){c(t,n,a);var S,O,B,I=function(e){if(e===h&&R)return R;if(!y&&e in j)return j[e];switch(e){case _:case C:case w:return function(){return new t(this,e)}}return function(){return new t(this)}},T=n+" Iterator",P=!1,j=e.prototype,z=j[E]||j["@@iterator"]||h&&j[h],R=!y&&z||I(h),M="Array"==n&&j.entries||z;if(M&&(S=u(M.call(new e)))!==Object.prototype&&S.next&&(i||u(S)===m||(s?s(S,m):l(S[E])||d(S,E,x)),f(S,T,!0,!0),i&&(g[T]=x)),A&&h==C&&z&&z.name!==C&&(!i&&b?p(j,"name",C):(P=!0,R=function(){return o(z,this)})),h)if(O={values:I(C),keys:v?R:I(_),entries:I(w)},k)for(B in O)(y||P||!(B in j))&&d(j,B,O[B]);else r({target:n,proto:!0,forced:y||P},O);return i&&!k||j[E]===R||d(j,E,R,{name:h}),g[n]=R,O}},7235:(e,n,t)=>{var r=t(857),o=t(2597),i=t(6061),a=t(3070).f;e.exports=function(e){var n=r.Symbol||(r.Symbol={});o(n,e)||a(n,e,{value:i.f(e)})}},9781:(e,n,t)=>{var r=t(7293);e.exports=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},317:(e,n,t)=>{var r=t(7854),o=t(111),i=r.document,a=o(i)&&o(i.createElement);e.exports=function(e){return a?i.createElement(e):{}}},8324:e=>{e.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},8509:(e,n,t)=>{var r=t(317)("span").classList,o=r&&r.constructor&&r.constructor.prototype;e.exports=o===Object.prototype?void 0:o},8886:(e,n,t)=>{var r=t(8113).match(/firefox\/(\d+)/i);e.exports=!!r&&+r[1]},256:(e,n,t)=>{var r=t(8113);e.exports=/MSIE|Trident/.test(r)},5268:(e,n,t)=>{var r=t(4326),o=t(7854);e.exports="process"==r(o.process)},8113:(e,n,t)=>{var r=t(5005);e.exports=r("navigator","userAgent")||""},7392:(e,n,t)=>{var r,o,i=t(7854),a=t(8113),l=i.process,c=i.Deno,u=l&&l.versions||c&&c.version,s=u&&u.v8;s&&(o=(r=s.split("."))[0]>0&&r[0]<4?1:+(r[0]+r[1])),!o&&a&&(!(r=a.match(/Edge\/(\d+)/))||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/))&&(o=+r[1]),e.exports=o},8008:(e,n,t)=>{var r=t(8113).match(/AppleWebKit\/(\d+)\./);e.exports=!!r&&+r[1]},748:e=>{e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},2109:(e,n,t)=>{var r=t(7854),o=t(1236).f,i=t(8880),a=t(1320),l=t(3505),c=t(9920),u=t(4705);e.exports=function(e,n){var t,s,f,p,d,h=e.target,g=e.global,v=e.stat;if(t=g?r:v?r[h]||l(h,{}):(r[h]||{}).prototype)for(s in n){if(p=n[s],f=e.noTargetGet?(d=o(t,s))&&d.value:t[s],!u(g?s:h+(v?".":"#")+s,e.forced)&&void 0!==f){if(typeof p==typeof f)continue;c(p,f)}(e.sham||f&&f.sham)&&i(p,"sham",!0),a(t,s,p,e)}}},7293:e=>{e.exports=function(e){try{return!!e()}catch(e){return!0}}},7007:(e,n,t)=>{"use strict";t(4916);var r=t(1702),o=t(1320),i=t(2261),a=t(7293),l=t(5112),c=t(8880),u=l("species"),s=RegExp.prototype;e.exports=function(e,n,t,f){var p=l(e),d=!a((function(){var n={};return n[p]=function(){return 7},7!=""[e](n)})),h=d&&!a((function(){var n=!1,t=/a/;return"split"===e&&((t={}).constructor={},t.constructor[u]=function(){return t},t.flags="",t[p]=/./[p]),t.exec=function(){return n=!0,null},t[p](""),!n}));if(!d||!h||t){var g=r(/./[p]),v=n(p,""[e],(function(e,n,t,o,a){var l=r(e),c=n.exec;return c===i||c===s.exec?d&&!a?{done:!0,value:g(n,t,o)}:{done:!0,value:l(t,n,o)}:{done:!1}}));o(String.prototype,e,v[0]),o(s,p,v[1])}f&&c(s[p],"sham",!0)}},6677:(e,n,t)=>{var r=t(7293);e.exports=!r((function(){return Object.isExtensible(Object.preventExtensions({}))}))},2104:e=>{var n=Function.prototype,t=n.apply,r=n.bind,o=n.call;e.exports="object"==typeof Reflect&&Reflect.apply||(r?o.bind(t):function(){return o.apply(t,arguments)})},9974:(e,n,t)=>{var r=t(1702),o=t(9662),i=r(r.bind);e.exports=function(e,n){return o(e),void 0===n?e:i?i(e,n):function(){return e.apply(n,arguments)}}},7065:(e,n,t)=>{"use strict";var r=t(7854),o=t(1702),i=t(9662),a=t(111),l=t(2597),c=t(206),u=r.Function,s=o([].concat),f=o([].join),p={},d=function(e,n,t){if(!l(p,n)){for(var r=[],o=0;o{var n=Function.prototype.call;e.exports=n.bind?n.bind(n):function(){return n.apply(n,arguments)}},6530:(e,n,t)=>{var r=t(9781),o=t(2597),i=Function.prototype,a=r&&Object.getOwnPropertyDescriptor,l=o(i,"name"),c=l&&"something"===function(){}.name,u=l&&(!r||r&&a(i,"name").configurable);e.exports={EXISTS:l,PROPER:c,CONFIGURABLE:u}},1702:e=>{var n=Function.prototype,t=n.bind,r=n.call,o=t&&t.bind(r);e.exports=t?function(e){return e&&o(r,e)}:function(e){return e&&function(){return r.apply(e,arguments)}}},5005:(e,n,t)=>{var r=t(7854),o=t(614),i=function(e){return o(e)?e:void 0};e.exports=function(e,n){return arguments.length<2?i(r[e]):r[e]&&r[e][n]}},1246:(e,n,t)=>{var r=t(648),o=t(8173),i=t(7497),a=t(5112)("iterator");e.exports=function(e){if(null!=e)return o(e,a)||o(e,"@@iterator")||i[r(e)]}},8554:(e,n,t)=>{var r=t(7854),o=t(6916),i=t(9662),a=t(9670),l=t(6330),c=t(1246),u=r.TypeError;e.exports=function(e,n){var t=arguments.length<2?c(e):n;if(i(t))return a(o(t,e));throw u(l(e)+" is not iterable")}},8173:(e,n,t)=>{var r=t(9662);e.exports=function(e,n){var t=e[n];return null==t?void 0:r(t)}},647:(e,n,t)=>{var r=t(1702),o=t(7908),i=Math.floor,a=r("".charAt),l=r("".replace),c=r("".slice),u=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,s=/\$([$&'`]|\d{1,2})/g;e.exports=function(e,n,t,r,f,p){var d=t+e.length,h=r.length,g=s;return void 0!==f&&(f=o(f),g=u),l(p,g,(function(o,l){var u;switch(a(l,0)){case"$":return"$";case"&":return e;case"`":return c(n,0,t);case"'":return c(n,d);case"<":u=f[c(l,1,-1)];break;default:var s=+l;if(0===s)return o;if(s>h){var p=i(s/10);return 0===p?o:p<=h?void 0===r[p-1]?a(l,1):r[p-1]+a(l,1):o}u=r[s-1]}return void 0===u?"":u}))}},7854:(e,n,t)=>{var r=function(e){return e&&e.Math==Math&&e};e.exports=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof t.g&&t.g)||function(){return this}()||Function("return this")()},2597:(e,n,t)=>{var r=t(1702),o=t(7908),i=r({}.hasOwnProperty);e.exports=Object.hasOwn||function(e,n){return i(o(e),n)}},3501:e=>{e.exports={}},490:(e,n,t)=>{var r=t(5005);e.exports=r("document","documentElement")},4664:(e,n,t)=>{var r=t(9781),o=t(7293),i=t(317);e.exports=!r&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},8361:(e,n,t)=>{var r=t(7854),o=t(1702),i=t(7293),a=t(4326),l=r.Object,c=o("".split);e.exports=i((function(){return!l("z").propertyIsEnumerable(0)}))?function(e){return"String"==a(e)?c(e,""):l(e)}:l},9587:(e,n,t)=>{var r=t(614),o=t(111),i=t(7674);e.exports=function(e,n,t){var a,l;return i&&r(a=n.constructor)&&a!==t&&o(l=a.prototype)&&l!==t.prototype&&i(e,l),e}},2788:(e,n,t)=>{var r=t(1702),o=t(614),i=t(5465),a=r(Function.toString);o(i.inspectSource)||(i.inspectSource=function(e){return a(e)}),e.exports=i.inspectSource},2423:(e,n,t)=>{var r=t(2109),o=t(1702),i=t(3501),a=t(111),l=t(2597),c=t(3070).f,u=t(8006),s=t(1156),f=t(2050),p=t(9711),d=t(6677),h=!1,g=p("meta"),v=0,A=function(e){c(e,g,{value:{objectID:"O"+v++,weakData:{}}})},b=e.exports={enable:function(){b.enable=function(){},h=!0;var e=u.f,n=o([].splice),t={};t[g]=1,e(t).length&&(u.f=function(t){for(var r=e(t),o=0,i=r.length;o{var r,o,i,a=t(8536),l=t(7854),c=t(1702),u=t(111),s=t(8880),f=t(2597),p=t(5465),d=t(6200),h=t(3501),g="Object already initialized",v=l.TypeError,A=l.WeakMap;if(a||p.state){var b=p.state||(p.state=new A),m=c(b.get),y=c(b.has),E=c(b.set);r=function(e,n){if(y(b,e))throw new v(g);return n.facade=e,E(b,e,n),n},o=function(e){return m(b,e)||{}},i=function(e){return y(b,e)}}else{var _=d("state");h[_]=!0,r=function(e,n){if(f(e,_))throw new v(g);return n.facade=e,s(e,_,n),n},o=function(e){return f(e,_)?e[_]:{}},i=function(e){return f(e,_)}}e.exports={set:r,get:o,has:i,enforce:function(e){return i(e)?o(e):r(e,{})},getterFor:function(e){return function(n){var t;if(!u(n)||(t=o(n)).type!==e)throw v("Incompatible receiver, "+e+" required");return t}}}},7659:(e,n,t)=>{var r=t(5112),o=t(7497),i=r("iterator"),a=Array.prototype;e.exports=function(e){return void 0!==e&&(o.Array===e||a[i]===e)}},3157:(e,n,t)=>{var r=t(4326);e.exports=Array.isArray||function(e){return"Array"==r(e)}},614:e=>{e.exports=function(e){return"function"==typeof e}},4411:(e,n,t)=>{var r=t(1702),o=t(7293),i=t(614),a=t(648),l=t(5005),c=t(2788),u=function(){},s=[],f=l("Reflect","construct"),p=/^\s*(?:class|function)\b/,d=r(p.exec),h=!p.exec(u),g=function(e){if(!i(e))return!1;try{return f(u,s,e),!0}catch(e){return!1}};e.exports=!f||o((function(){var e;return g(g.call)||!g(Object)||!g((function(){e=!0}))||e}))?function(e){if(!i(e))return!1;switch(a(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}return h||!!d(p,c(e))}:g},4705:(e,n,t)=>{var r=t(7293),o=t(614),i=/#|\.prototype\./,a=function(e,n){var t=c[l(e)];return t==s||t!=u&&(o(n)?r(n):!!n)},l=a.normalize=function(e){return String(e).replace(i,".").toLowerCase()},c=a.data={},u=a.NATIVE="N",s=a.POLYFILL="P";e.exports=a},111:(e,n,t)=>{var r=t(614);e.exports=function(e){return"object"==typeof e?null!==e:r(e)}},1913:e=>{e.exports=!1},7850:(e,n,t)=>{var r=t(111),o=t(4326),i=t(5112)("match");e.exports=function(e){var n;return r(e)&&(void 0!==(n=e[i])?!!n:"RegExp"==o(e))}},2190:(e,n,t)=>{var r=t(7854),o=t(5005),i=t(614),a=t(7976),l=t(3307),c=r.Object;e.exports=l?function(e){return"symbol"==typeof e}:function(e){var n=o("Symbol");return i(n)&&a(n.prototype,c(e))}},408:(e,n,t)=>{var r=t(7854),o=t(9974),i=t(6916),a=t(9670),l=t(6330),c=t(7659),u=t(6244),s=t(7976),f=t(8554),p=t(1246),d=t(9212),h=r.TypeError,g=function(e,n){this.stopped=e,this.result=n},v=g.prototype;e.exports=function(e,n,t){var r,A,b,m,y,E,_,C=t&&t.that,w=!(!t||!t.AS_ENTRIES),x=!(!t||!t.IS_ITERATOR),k=!(!t||!t.INTERRUPTED),S=o(n,C),O=function(e){return r&&d(r,"normal",e),new g(!0,e)},B=function(e){return w?(a(e),k?S(e[0],e[1],O):S(e[0],e[1])):k?S(e,O):S(e)};if(x)r=e;else{if(!(A=p(e)))throw h(l(e)+" is not iterable");if(c(A)){for(b=0,m=u(e);m>b;b++)if((y=B(e[b]))&&s(v,y))return y;return new g(!1)}r=f(e,A)}for(E=r.next;!(_=i(E,r)).done;){try{y=B(_.value)}catch(e){d(r,"throw",e)}if("object"==typeof y&&y&&s(v,y))return y}return new g(!1)}},9212:(e,n,t)=>{var r=t(6916),o=t(9670),i=t(8173);e.exports=function(e,n,t){var a,l;o(e);try{if(!(a=i(e,"return"))){if("throw"===n)throw t;return t}a=r(a,e)}catch(e){l=!0,a=e}if("throw"===n)throw t;if(l)throw a;return o(a),t}},3383:(e,n,t)=>{"use strict";var r,o,i,a=t(7293),l=t(614),c=t(30),u=t(9518),s=t(1320),f=t(5112),p=t(1913),d=f("iterator"),h=!1;[].keys&&("next"in(i=[].keys())?(o=u(u(i)))!==Object.prototype&&(r=o):h=!0),null==r||a((function(){var e={};return r[d].call(e)!==e}))?r={}:p&&(r=c(r)),l(r[d])||s(r,d,(function(){return this})),e.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:h}},7497:e=>{e.exports={}},6244:(e,n,t)=>{var r=t(7466);e.exports=function(e){return r(e.length)}},133:(e,n,t)=>{var r=t(7392),o=t(7293);e.exports=!!Object.getOwnPropertySymbols&&!o((function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&r&&r<41}))},8536:(e,n,t)=>{var r=t(7854),o=t(614),i=t(2788),a=r.WeakMap;e.exports=o(a)&&/native code/.test(i(a))},3929:(e,n,t)=>{var r=t(7854),o=t(7850),i=r.TypeError;e.exports=function(e){if(o(e))throw i("The method doesn't accept regular expressions");return e}},1574:(e,n,t)=>{"use strict";var r=t(9781),o=t(1702),i=t(6916),a=t(7293),l=t(1956),c=t(5181),u=t(5296),s=t(7908),f=t(8361),p=Object.assign,d=Object.defineProperty,h=o([].concat);e.exports=!p||a((function(){if(r&&1!==p({b:1},p(d({},"a",{enumerable:!0,get:function(){d(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},n={},t=Symbol(),o="abcdefghijklmnopqrst";return e[t]=7,o.split("").forEach((function(e){n[e]=e})),7!=p({},e)[t]||l(p({},n)).join("")!=o}))?function(e,n){for(var t=s(e),o=arguments.length,a=1,p=c.f,d=u.f;o>a;)for(var g,v=f(arguments[a++]),A=p?h(l(v),p(v)):l(v),b=A.length,m=0;b>m;)g=A[m++],r&&!i(d,v,g)||(t[g]=v[g]);return t}:p},30:(e,n,t)=>{var r,o=t(9670),i=t(6048),a=t(748),l=t(3501),c=t(490),u=t(317),s=t(6200),f=s("IE_PROTO"),p=function(){},d=function(e){return" + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

android

+
+

Packages

+
+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/third-party/android/navigation.html b/dokka/older/1.1.0/third-party/android/navigation.html new file mode 100644 index 000000000..6548962fc --- /dev/null +++ b/dokka/older/1.1.0/third-party/android/navigation.html @@ -0,0 +1,173 @@ + + diff --git a/dokka/older/1.1.0/third-party/android/se.ansman.dagger.auto.android/-auto-dagger-startup-initializer/-auto-dagger-startup-initializer.html b/dokka/older/1.1.0/third-party/android/se.ansman.dagger.auto.android/-auto-dagger-startup-initializer/-auto-dagger-startup-initializer.html new file mode 100644 index 000000000..fabca90f5 --- /dev/null +++ b/dokka/older/1.1.0/third-party/android/se.ansman.dagger.auto.android/-auto-dagger-startup-initializer/-auto-dagger-startup-initializer.html @@ -0,0 +1,82 @@ + + + + + AutoDaggerStartupInitializer + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

AutoDaggerStartupInitializer

+
+
constructor()
+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/third-party/android/se.ansman.dagger.auto.android/-auto-dagger-startup-initializer/create.html b/dokka/older/1.1.0/third-party/android/se.ansman.dagger.auto.android/-auto-dagger-startup-initializer/create.html new file mode 100644 index 000000000..5bda4bc71 --- /dev/null +++ b/dokka/older/1.1.0/third-party/android/se.ansman.dagger.auto.android/-auto-dagger-startup-initializer/create.html @@ -0,0 +1,82 @@ + + + + + create + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

create

+
+
open override fun create(context: Context)
+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/third-party/android/se.ansman.dagger.auto.android/-auto-dagger-startup-initializer/dependencies.html b/dokka/older/1.1.0/third-party/android/se.ansman.dagger.auto.android/-auto-dagger-startup-initializer/dependencies.html new file mode 100644 index 000000000..f977afc18 --- /dev/null +++ b/dokka/older/1.1.0/third-party/android/se.ansman.dagger.auto.android/-auto-dagger-startup-initializer/dependencies.html @@ -0,0 +1,82 @@ + + + + + dependencies + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

dependencies

+
+
open override fun dependencies(): List<Class<out Initializer<*>>>
+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/third-party/android/se.ansman.dagger.auto.android/-auto-dagger-startup-initializer/index.html b/dokka/older/1.1.0/third-party/android/se.ansman.dagger.auto.android/-auto-dagger-startup-initializer/index.html new file mode 100644 index 000000000..652ae60bb --- /dev/null +++ b/dokka/older/1.1.0/third-party/android/se.ansman.dagger.auto.android/-auto-dagger-startup-initializer/index.html @@ -0,0 +1,140 @@ + + + + + AutoDaggerStartupInitializer + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

AutoDaggerStartupInitializer

+

An Initializer that will initialize a Singleton scoped AutoDaggerStartupInitializer.

This will be called by androidx.startup, provides no result and has no dependencies.

Since

1.0.0

+
+
+
+
+
+

Constructors

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
constructor()
+
+
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun create(context: Context)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun dependencies(): List<Class<out Initializer<*>>>
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/third-party/android/se.ansman.dagger.auto.android/index.html b/dokka/older/1.1.0/third-party/android/se.ansman.dagger.auto.android/index.html new file mode 100644 index 000000000..849bcbf65 --- /dev/null +++ b/dokka/older/1.1.0/third-party/android/se.ansman.dagger.auto.android/index.html @@ -0,0 +1,105 @@ + + + + + se.ansman.dagger.auto.android + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

Package-level declarations

+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+

An Initializer that will initialize a Singleton scoped AutoDaggerStartupInitializer.

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/third-party/android/testing/index.html b/dokka/older/1.1.0/third-party/android/testing/index.html new file mode 100644 index 000000000..c9c03e668 --- /dev/null +++ b/dokka/older/1.1.0/third-party/android/testing/index.html @@ -0,0 +1,101 @@ + + + + + android-testing + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

android-testing

+
+

Packages

+
+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/third-party/android/testing/navigation.html b/dokka/older/1.1.0/third-party/android/testing/navigation.html new file mode 100644 index 000000000..6548962fc --- /dev/null +++ b/dokka/older/1.1.0/third-party/android/testing/navigation.html @@ -0,0 +1,173 @@ + + diff --git a/dokka/older/1.1.0/third-party/android/testing/se.ansman.dagger.auto.android.testing/-replaces/index.html b/dokka/older/1.1.0/third-party/android/testing/se.ansman.dagger.auto.android.testing/-replaces/index.html new file mode 100644 index 000000000..5c74ec77b --- /dev/null +++ b/dokka/older/1.1.0/third-party/android/testing/se.ansman.dagger.auto.android.testing/-replaces/index.html @@ -0,0 +1,106 @@ + + + + + Replaces + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

Replaces

+
@Target(allowedTargets = [AnnotationTarget.CLASS])
annotation class Replaces(val type: KClass<*>)(source)

Denotes that the class referenced using type is to be replaced by this type.

The type to replace must be annotated with AutoBind. Any qualifiers and binding keys will be copied from the referenced type.

The annotated class must implement the types which are bound by the referenced type.

Multibindings

If the replaced type uses multibindings (AutoBindIntoSet or AutoBindIntoMap) then those are only replaced if the annotated type also implements them. Otherwise the multibinding is removed

So for example. If the target type uses @AutoBindIntoSet to bind it as a Closeable but your replacement doesn't implement Closeable then that binding is removed. If it does implement Closeable then the binding is replaced with the fake binding.

Objects

Normally the replacement object needs to be provided to the dependency graph using either an @Provides annotated method or using an @Inject annotated constructor.

Auto Dagger allows you to annotate a Kotlin object with @Replaces without it being provided in the graph. This is especially useful for tests:

@Replaces(ThreadPoolExecutor::class)
object DirectExecutor : Executor {
override fun execute(command: Runnable) {
command.run()
}
}

Auto Initialize

If the target type is annotated with AutoInitialize, then an empty module will be generated to replace the auto initialize module, effectively disabling it.

Example

// In your `main` source set
interface Repository

@AutoBind(asTypes = [Repository::class])
@AutoBindIntoSet(asTypes = [Closeable::class])
@Singleton
class RealRepository @Inject constructor() : Repository, Closeable {
override fun close() {}
}

// In your `test` source set
// Since `FakeRepository` doesn't implement `Closeable` then it's
// not bound as `Closable` and the real `RealRepository -> Closeable`
// binding is removed.
@Replaces(RealRepository::class)
class FakeRepository @Inject constructor() : Repository

Since

1.0.0

+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
val type: KClass<*>
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/third-party/android/testing/se.ansman.dagger.auto.android.testing/-replaces/type.html b/dokka/older/1.1.0/third-party/android/testing/se.ansman.dagger.auto.android.testing/-replaces/type.html new file mode 100644 index 000000000..35802cc42 --- /dev/null +++ b/dokka/older/1.1.0/third-party/android/testing/se.ansman.dagger.auto.android.testing/-replaces/type.html @@ -0,0 +1,82 @@ + + + + + type + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

type

+
+
val type: KClass<*>(source)
+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/third-party/android/testing/se.ansman.dagger.auto.android.testing/index.html b/dokka/older/1.1.0/third-party/android/testing/se.ansman.dagger.auto.android.testing/index.html new file mode 100644 index 000000000..d67752de2 --- /dev/null +++ b/dokka/older/1.1.0/third-party/android/testing/se.ansman.dagger.auto.android.testing/index.html @@ -0,0 +1,105 @@ + + + + + se.ansman.dagger.auto.android.testing + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

Package-level declarations

+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
@Target(allowedTargets = [AnnotationTarget.CLASS])
annotation class Replaces(val type: KClass<*>)

Denotes that the class referenced using type is to be replaced by this type.

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/third-party/androidx/room/index.html b/dokka/older/1.1.0/third-party/androidx/room/index.html new file mode 100644 index 000000000..2cf3b4c68 --- /dev/null +++ b/dokka/older/1.1.0/third-party/androidx/room/index.html @@ -0,0 +1,101 @@ + + + + + androidx-room + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

androidx-room

+
+

Packages

+
+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/third-party/androidx/room/navigation.html b/dokka/older/1.1.0/third-party/androidx/room/navigation.html new file mode 100644 index 000000000..6548962fc --- /dev/null +++ b/dokka/older/1.1.0/third-party/androidx/room/navigation.html @@ -0,0 +1,173 @@ + + diff --git a/dokka/older/1.1.0/third-party/androidx/room/se.ansman.dagger.auto.androidx.room/-auto-provide-daos/in-component.html b/dokka/older/1.1.0/third-party/androidx/room/se.ansman.dagger.auto.androidx.room/-auto-provide-daos/in-component.html new file mode 100644 index 000000000..7f505e8cf --- /dev/null +++ b/dokka/older/1.1.0/third-party/androidx/room/se.ansman.dagger.auto.androidx.room/-auto-provide-daos/in-component.html @@ -0,0 +1,82 @@ + + + + + inComponent + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

inComponent

+
+

Parameters

inComponent

The component to provide the DAOs in. Defaults to SingletonComponent.

+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/third-party/androidx/room/se.ansman.dagger.auto.androidx.room/-auto-provide-daos/index.html b/dokka/older/1.1.0/third-party/androidx/room/se.ansman.dagger.auto.androidx.room/-auto-provide-daos/index.html new file mode 100644 index 000000000..b087df396 --- /dev/null +++ b/dokka/older/1.1.0/third-party/androidx/room/se.ansman.dagger.auto.androidx.room/-auto-provide-daos/index.html @@ -0,0 +1,106 @@ + + + + + AutoProvideDaos + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

AutoProvideDaos

+
@Target(allowedTargets = [AnnotationTarget.CLASS])
annotation class AutoProvideDaos(val inComponent: KClass<*> = SingletonComponent::class)(source)

A marker for Room Databases that will automatically contribute all DAOs in your database to the dependency graph.

Simply add this annotation to a Database and auto-data will provide all DAOs.

Example:

@AutoProvideDaos
@Database(entities = [User::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
abstract fun userDao(): UserDao
}

// You'll also need to provide the Database instance to the component you want to inject the service into:
@Module
@InstallIn(SingletonComponent::class)
object DatabaseModule {
@Provides
@Singleton
fun provideDatabase(@ApplicationContext context: Context): AppDatabase =
Room.databaseBuilder(context, AppDatabase::class.java, "database-name").build()
}

Changing the target component

By default, the DAOs are provided in the SingletonComponent. If you'd like to change this you can do so by specifying the inComponent parameter:

@AutoProvideDaos
@Database(entities = [User::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
abstract fun userDao(): UserDao
}

Since

1.0.0

Parameters

inComponent

The component to provide the DAOs in. Defaults to SingletonComponent.

+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/third-party/androidx/room/se.ansman.dagger.auto.androidx.room/index.html b/dokka/older/1.1.0/third-party/androidx/room/se.ansman.dagger.auto.androidx.room/index.html new file mode 100644 index 000000000..299f6ca69 --- /dev/null +++ b/dokka/older/1.1.0/third-party/androidx/room/se.ansman.dagger.auto.androidx.room/index.html @@ -0,0 +1,105 @@ + + + + + se.ansman.dagger.auto.androidx.room + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

Package-level declarations

+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
@Target(allowedTargets = [AnnotationTarget.CLASS])
annotation class AutoProvideDaos(val inComponent: KClass<*> = SingletonComponent::class)

A marker for Room Databases that will automatically contribute all DAOs in your database to the dependency graph.

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/third-party/androidx/viewmodel/index.html b/dokka/older/1.1.0/third-party/androidx/viewmodel/index.html new file mode 100644 index 000000000..26d1a3faf --- /dev/null +++ b/dokka/older/1.1.0/third-party/androidx/viewmodel/index.html @@ -0,0 +1,101 @@ + + + + + androidx-viewmodel + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

androidx-viewmodel

+
+

Packages

+
+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/third-party/androidx/viewmodel/navigation.html b/dokka/older/1.1.0/third-party/androidx/viewmodel/navigation.html new file mode 100644 index 000000000..6548962fc --- /dev/null +++ b/dokka/older/1.1.0/third-party/androidx/viewmodel/navigation.html @@ -0,0 +1,173 @@ + + diff --git a/dokka/older/1.1.0/third-party/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/-auto-dagger-view-model-coroutine-scope-component/index.html b/dokka/older/1.1.0/third-party/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/-auto-dagger-view-model-coroutine-scope-component/index.html new file mode 100644 index 000000000..988080262 --- /dev/null +++ b/dokka/older/1.1.0/third-party/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/-auto-dagger-view-model-coroutine-scope-component/index.html @@ -0,0 +1,106 @@ + + + + + AutoDaggerViewModelCoroutineScopeComponent + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

AutoDaggerViewModelCoroutineScopeComponent

+

A Dagger module which provides a CoroutineScope that is tied to the lifecycle of a ViewModel.

The provided scope is qualified with ViewModelSpecific and will be canceled when the viewmodel is cleared and it ses a SupervisorJob and the [Dispatchers].Main.immediate dispatcher.

To inject:

@HiltViewModel
class MyViewModel @Inject constructor(
@ViewModelSpecific
private val viewModelScope: CoroutineScope
) : ViewModel()

Since

1.0.0

+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun provideViewModelScope(lifecycle: ViewModelLifecycle): CoroutineScope
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/third-party/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/-auto-dagger-view-model-coroutine-scope-component/provide-view-model-scope.html b/dokka/older/1.1.0/third-party/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/-auto-dagger-view-model-coroutine-scope-component/provide-view-model-scope.html new file mode 100644 index 000000000..557f37cf8 --- /dev/null +++ b/dokka/older/1.1.0/third-party/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/-auto-dagger-view-model-coroutine-scope-component/provide-view-model-scope.html @@ -0,0 +1,82 @@ + + + + + provideViewModelScope + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

provideViewModelScope

+
+
fun provideViewModelScope(lifecycle: ViewModelLifecycle): CoroutineScope
+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/third-party/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/-view-model-specific/index.html b/dokka/older/1.1.0/third-party/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/-view-model-specific/index.html new file mode 100644 index 000000000..1deb38141 --- /dev/null +++ b/dokka/older/1.1.0/third-party/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/-view-model-specific/index.html @@ -0,0 +1,86 @@ + + + + + ViewModelSpecific + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

ViewModelSpecific

+
@Qualifier
annotation class ViewModelSpecific

A qualifier indicating that the annotated type is tied to ViewModelComponent.

By default the following things are automatically provided:

CoroutineScope

A CoroutineScope that is tied to the view model's lifecycle is contributed. The scope uses a SupervisorJob and the [Dispatchers].Main.immediate dispatcher.

To use it simply inject it like this:

@HiltViewMode
class MyViewModel @Inject constructor(
@ViewModelSpecific
private val viewModelScope: CoroutineScope
) : ViewModel()

Since

1.0.0

+
+
+
+
+
+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/third-party/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/index.html b/dokka/older/1.1.0/third-party/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/index.html new file mode 100644 index 000000000..59e86932b --- /dev/null +++ b/dokka/older/1.1.0/third-party/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/index.html @@ -0,0 +1,120 @@ + + + + + se.ansman.dagger.auto.androidx.viewmodel + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

Package-level declarations

+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+

A Dagger module which provides a CoroutineScope that is tied to the lifecycle of a ViewModel.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
@Qualifier
annotation class ViewModelSpecific

A qualifier indicating that the annotated type is tied to ViewModelComponent.

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/third-party/ktorfit/index.html b/dokka/older/1.1.0/third-party/ktorfit/index.html new file mode 100644 index 000000000..bc7b1a78e --- /dev/null +++ b/dokka/older/1.1.0/third-party/ktorfit/index.html @@ -0,0 +1,101 @@ + + + + + ktorfit + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

ktorfit

+
+

Packages

+
+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/third-party/ktorfit/navigation.html b/dokka/older/1.1.0/third-party/ktorfit/navigation.html new file mode 100644 index 000000000..6548962fc --- /dev/null +++ b/dokka/older/1.1.0/third-party/ktorfit/navigation.html @@ -0,0 +1,173 @@ + + diff --git a/dokka/older/1.1.0/third-party/ktorfit/se.ansman.dagger.auto.ktorfit/-auto-provide-service/in-component.html b/dokka/older/1.1.0/third-party/ktorfit/se.ansman.dagger.auto.ktorfit/-auto-provide-service/in-component.html new file mode 100644 index 000000000..0a73db96c --- /dev/null +++ b/dokka/older/1.1.0/third-party/ktorfit/se.ansman.dagger.auto.ktorfit/-auto-provide-service/in-component.html @@ -0,0 +1,82 @@ + + + + + inComponent + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

inComponent

+
+

Parameters

inComponent

The component to install the service in. Defaults to SingletonComponent.

+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/third-party/ktorfit/se.ansman.dagger.auto.ktorfit/-auto-provide-service/index.html b/dokka/older/1.1.0/third-party/ktorfit/se.ansman.dagger.auto.ktorfit/-auto-provide-service/index.html new file mode 100644 index 000000000..9de49427c --- /dev/null +++ b/dokka/older/1.1.0/third-party/ktorfit/se.ansman.dagger.auto.ktorfit/-auto-provide-service/index.html @@ -0,0 +1,106 @@ + + + + + AutoProvideService + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

AutoProvideService

+
@Target(allowedTargets = [AnnotationTarget.CLASS])
annotation class AutoProvideService(val inComponent: KClass<*> = SingletonComponent::class)(source)

Marks a Ktorfit Service for automatic contribution to your dependency graph.

Simply add this annotation to the API services you want to inject and auto-dagger will generate the necessary modules.

Example:

@AutoProvideService
class ApiService {
@GET("users")
suspend fun getUsers(): List<User>
}

// You'll also need to provide a Ktorfit instance to the component you want to inject the service into:
@Module
@InstallIn(SingletonComponent::class)
object KtorfitModule {
@Provides
@Singleton
fun provideKtorfit(): Ktorfit = Ktorfit.Builder()
.baseUrl("https://api.example.com/")
.build()
}

Changing the target component

By default, services are installed in the SingletonComponent. If you'd like to change this you can do so by specifying the inComponent parameter:

@AutoProvideService(inComponent = SomeOtherComponent::class)
class ApiService {}

Qualifiers

If you have multiple ktorfit instances and use qualifiers to differentiate them, you can specify the qualifier on the service:

@AutoProvideService
@Named("api1")
class ApiService {}

Making the service scoped or reusable

If you'd like to cache/reuse the service instances you can annotate the service with a scope or @Reusable:

@Singleton // This must match the `inComponent` parameter of @AutoProvideService
@AutoProvideService
class ApiService {
// Service methods
}

// Or if you want to just make it reusable
@Reusable
@AutoProvideService
class ApiService {
// Service methods
}

Since

1.1.0

Parameters

inComponent

The component to install the service in. Defaults to SingletonComponent.

+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/third-party/ktorfit/se.ansman.dagger.auto.ktorfit/index.html b/dokka/older/1.1.0/third-party/ktorfit/se.ansman.dagger.auto.ktorfit/index.html new file mode 100644 index 000000000..cff4d4200 --- /dev/null +++ b/dokka/older/1.1.0/third-party/ktorfit/se.ansman.dagger.auto.ktorfit/index.html @@ -0,0 +1,105 @@ + + + + + se.ansman.dagger.auto.ktorfit + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

Package-level declarations

+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
@Target(allowedTargets = [AnnotationTarget.CLASS])
annotation class AutoProvideService(val inComponent: KClass<*> = SingletonComponent::class)

Marks a Ktorfit Service for automatic contribution to your dependency graph.

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/third-party/retrofit/index.html b/dokka/older/1.1.0/third-party/retrofit/index.html new file mode 100644 index 000000000..d4d6f3835 --- /dev/null +++ b/dokka/older/1.1.0/third-party/retrofit/index.html @@ -0,0 +1,101 @@ + + + + + retrofit + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

retrofit

+
+

Packages

+
+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/third-party/retrofit/navigation.html b/dokka/older/1.1.0/third-party/retrofit/navigation.html new file mode 100644 index 000000000..6548962fc --- /dev/null +++ b/dokka/older/1.1.0/third-party/retrofit/navigation.html @@ -0,0 +1,173 @@ + + diff --git a/dokka/older/1.1.0/third-party/retrofit/se.ansman.dagger.auto.retrofit/-auto-provide-service/in-component.html b/dokka/older/1.1.0/third-party/retrofit/se.ansman.dagger.auto.retrofit/-auto-provide-service/in-component.html new file mode 100644 index 000000000..ad1ad0f46 --- /dev/null +++ b/dokka/older/1.1.0/third-party/retrofit/se.ansman.dagger.auto.retrofit/-auto-provide-service/in-component.html @@ -0,0 +1,82 @@ + + + + + inComponent + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

inComponent

+
+

Parameters

inComponent

The component to install the service in. Defaults to SingletonComponent.

+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/third-party/retrofit/se.ansman.dagger.auto.retrofit/-auto-provide-service/index.html b/dokka/older/1.1.0/third-party/retrofit/se.ansman.dagger.auto.retrofit/-auto-provide-service/index.html new file mode 100644 index 000000000..4cda1d996 --- /dev/null +++ b/dokka/older/1.1.0/third-party/retrofit/se.ansman.dagger.auto.retrofit/-auto-provide-service/index.html @@ -0,0 +1,106 @@ + + + + + AutoProvideService + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

AutoProvideService

+
@Target(allowedTargets = [AnnotationTarget.CLASS])
annotation class AutoProvideService(val inComponent: KClass<*> = SingletonComponent::class)(source)

Marks a Retrofit Service for automatic contribution to your dependency graph.

Simply add this annotation to the API services you want to inject and auto-dagger will generate the necessary modules.

Example:

@AutoProvideService
class ApiService {
@GET("users")
suspend fun getUsers(): List<User>
}

// You'll also need to provide a Retrofit instance to the component you want to inject the service into:
@Module
@InstallIn(SingletonComponent::class)
object RetrofitModule {
@Provides
@Singleton
fun provideRetrofit(): Retrofit = Retrofit.Builder()
.baseUrl("https://api.example.com/")
.addConverterFactory(SomeConverterFactory.create())
.build()
}

Changing the target component

By default, services are installed in the SingletonComponent. If you'd like to change this you can do so by specifying the inComponent parameter:

@AutoProvideService(inComponent = SomeOtherComponent::class)
class ApiService {}

Qualifiers

If you have multiple retrofit instances and use qualifiers to differentiate them, you can specify the qualifier on the service:

@AutoProvideService
@Named("api1")
class ApiService {}

Making the service scoped or reusable

By default, provided service is unscoped and will be created every time it is injected. Retrofit caches the parsing of services so this is not an expensive operation, but it injected frequently you can avoid this by annotating your service with a scope or @Reusable:

@Singleton // This must match the `inComponent` parameter of @AutoProvideService
@AutoProvideService
class ApiService {
// Service methods
}

// Or if you want to just make it reusable
@Reusable
@AutoProvideService
class ApiService {
// Service methods
}

Since

1.0.0

Parameters

inComponent

The component to install the service in. Defaults to SingletonComponent.

+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/third-party/retrofit/se.ansman.dagger.auto.retrofit/index.html b/dokka/older/1.1.0/third-party/retrofit/se.ansman.dagger.auto.retrofit/index.html new file mode 100644 index 000000000..dde384f78 --- /dev/null +++ b/dokka/older/1.1.0/third-party/retrofit/se.ansman.dagger.auto.retrofit/index.html @@ -0,0 +1,105 @@ + + + + + se.ansman.dagger.auto.retrofit + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

Package-level declarations

+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
@Target(allowedTargets = [AnnotationTarget.CLASS])
annotation class AutoProvideService(val inComponent: KClass<*> = SingletonComponent::class)

Marks a Retrofit Service for automatic contribution to your dependency graph.

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + + diff --git a/dokka/older/1.1.0/version.json b/dokka/older/1.1.0/version.json new file mode 100644 index 000000000..b7690d36a --- /dev/null +++ b/dokka/older/1.1.0/version.json @@ -0,0 +1 @@ +{"version":"1.1.0"} \ No newline at end of file diff --git a/dokka/package-list b/dokka/package-list index 49be33ab4..cab47e243 100644 --- a/dokka/package-list +++ b/dokka/package-list @@ -1,10 +1,12 @@ $dokka.format:html-v1 $dokka.linkExtension:html -module:android -se.ansman.dagger.auto.android module:core se.ansman.dagger.auto +module:android +se.ansman.dagger.auto.android +module:ktorfit +se.ansman.dagger.auto.ktorfit module:retrofit se.ansman.dagger.auto.retrofit module:android-testing diff --git a/dokka/scripts/pages.json b/dokka/scripts/pages.json index 68e8c0940..5e27a8c5c 100644 --- a/dokka/scripts/pages.json +++ b/dokka/scripts/pages.json @@ -1 +1 @@ -[{"name":"ExactType","description":"se.ansman.dagger.auto.BindGenericAs.ExactType","location":"core/se.ansman.dagger.auto/-bind-generic-as/-exact-type/index.html","searchKeys":["ExactType","ExactType","se.ansman.dagger.auto.BindGenericAs.ExactType"]},{"name":"ExactTypeAndWildcard","description":"se.ansman.dagger.auto.BindGenericAs.ExactTypeAndWildcard","location":"core/se.ansman.dagger.auto/-bind-generic-as/-exact-type-and-wildcard/index.html","searchKeys":["ExactTypeAndWildcard","ExactTypeAndWildcard","se.ansman.dagger.auto.BindGenericAs.ExactTypeAndWildcard"]},{"name":"Wildcard","description":"se.ansman.dagger.auto.BindGenericAs.Wildcard","location":"core/se.ansman.dagger.auto/-bind-generic-as/-wildcard/index.html","searchKeys":["Wildcard","Wildcard","se.ansman.dagger.auto.BindGenericAs.Wildcard"]},{"name":"abstract fun initialize()","description":"se.ansman.dagger.auto.Initializable.initialize","location":"core/se.ansman.dagger.auto/-initializable/initialize.html","searchKeys":["initialize","abstract fun initialize()","se.ansman.dagger.auto.Initializable.initialize"]},{"name":"annotation class AutoBind(val inComponent: KClass<*> = Nothing::class, val asTypes: Array> = [])","description":"se.ansman.dagger.auto.AutoBind","location":"core/se.ansman.dagger.auto/-auto-bind/index.html","searchKeys":["AutoBind","annotation class AutoBind(val inComponent: KClass<*> = Nothing::class, val asTypes: Array> = [])","se.ansman.dagger.auto.AutoBind"]},{"name":"annotation class AutoBindIntoMap(val inComponent: KClass<*> = Nothing::class, val asTypes: Array> = [], val bindGenericAs: BindGenericAs = BindGenericAs.ExactType)","description":"se.ansman.dagger.auto.AutoBindIntoMap","location":"core/se.ansman.dagger.auto/-auto-bind-into-map/index.html","searchKeys":["AutoBindIntoMap","annotation class AutoBindIntoMap(val inComponent: KClass<*> = Nothing::class, val asTypes: Array> = [], val bindGenericAs: BindGenericAs = BindGenericAs.ExactType)","se.ansman.dagger.auto.AutoBindIntoMap"]},{"name":"annotation class AutoBindIntoSet(val inComponent: KClass<*> = Nothing::class, val asTypes: Array> = [], val bindGenericAs: BindGenericAs = BindGenericAs.ExactType)","description":"se.ansman.dagger.auto.AutoBindIntoSet","location":"core/se.ansman.dagger.auto/-auto-bind-into-set/index.html","searchKeys":["AutoBindIntoSet","annotation class AutoBindIntoSet(val inComponent: KClass<*> = Nothing::class, val asTypes: Array> = [], val bindGenericAs: BindGenericAs = BindGenericAs.ExactType)","se.ansman.dagger.auto.AutoBindIntoSet"]},{"name":"annotation class AutoInitialize(val priority: Int = defaultPriority)","description":"se.ansman.dagger.auto.AutoInitialize","location":"core/se.ansman.dagger.auto/-auto-initialize/index.html","searchKeys":["AutoInitialize","annotation class AutoInitialize(val priority: Int = defaultPriority)","se.ansman.dagger.auto.AutoInitialize"]},{"name":"annotation class Default(val value: BindGenericAs)","description":"se.ansman.dagger.auto.BindGenericAs.Default","location":"core/se.ansman.dagger.auto/-bind-generic-as/-default/index.html","searchKeys":["Default","annotation class Default(val value: BindGenericAs)","se.ansman.dagger.auto.BindGenericAs.Default"]},{"name":"class AutoDaggerInitializer constructor(initializables: Set) : Initializable","description":"se.ansman.dagger.auto.AutoDaggerInitializer","location":"core/se.ansman.dagger.auto/-auto-dagger-initializer/index.html","searchKeys":["AutoDaggerInitializer","class AutoDaggerInitializer constructor(initializables: Set) : Initializable","se.ansman.dagger.auto.AutoDaggerInitializer"]},{"name":"const val defaultPriority: Int = 1","description":"se.ansman.dagger.auto.AutoInitialize.Companion.defaultPriority","location":"core/se.ansman.dagger.auto/-auto-initialize/-companion/default-priority.html","searchKeys":["defaultPriority","const val defaultPriority: Int = 1","se.ansman.dagger.auto.AutoInitialize.Companion.defaultPriority"]},{"name":"constructor(initializables: Set)","description":"se.ansman.dagger.auto.AutoDaggerInitializer.AutoDaggerInitializer","location":"core/se.ansman.dagger.auto/-auto-dagger-initializer/-auto-dagger-initializer.html","searchKeys":["AutoDaggerInitializer","constructor(initializables: Set)","se.ansman.dagger.auto.AutoDaggerInitializer.AutoDaggerInitializer"]},{"name":"enum BindGenericAs : Enum ","description":"se.ansman.dagger.auto.BindGenericAs","location":"core/se.ansman.dagger.auto/-bind-generic-as/index.html","searchKeys":["BindGenericAs","enum BindGenericAs : Enum ","se.ansman.dagger.auto.BindGenericAs"]},{"name":"fun Initializable.withPriority(priority: Int): Initializable","description":"se.ansman.dagger.auto.Initializable.Companion.withPriority","location":"core/se.ansman.dagger.auto/-initializable/-companion/with-priority.html","searchKeys":["withPriority","fun Initializable.withPriority(priority: Int): Initializable","se.ansman.dagger.auto.Initializable.Companion.withPriority"]},{"name":"fun Lazy<*>.asInitializable(priority: Int = AutoInitialize.defaultPriority): Initializable","description":"se.ansman.dagger.auto.Initializable.Companion.asInitializable","location":"core/se.ansman.dagger.auto/-initializable/-companion/as-initializable.html","searchKeys":["asInitializable","fun Lazy<*>.asInitializable(priority: Int = AutoInitialize.defaultPriority): Initializable","se.ansman.dagger.auto.Initializable.Companion.asInitializable"]},{"name":"fun valueOf(value: String): BindGenericAs","description":"se.ansman.dagger.auto.BindGenericAs.valueOf","location":"core/se.ansman.dagger.auto/-bind-generic-as/value-of.html","searchKeys":["valueOf","fun valueOf(value: String): BindGenericAs","se.ansman.dagger.auto.BindGenericAs.valueOf"]},{"name":"fun values(): Array","description":"se.ansman.dagger.auto.BindGenericAs.values","location":"core/se.ansman.dagger.auto/-bind-generic-as/values.html","searchKeys":["values","fun values(): Array","se.ansman.dagger.auto.BindGenericAs.values"]},{"name":"interface Initializable","description":"se.ansman.dagger.auto.Initializable","location":"core/se.ansman.dagger.auto/-initializable/index.html","searchKeys":["Initializable","interface Initializable","se.ansman.dagger.auto.Initializable"]},{"name":"object Companion","description":"se.ansman.dagger.auto.AutoInitialize.Companion","location":"core/se.ansman.dagger.auto/-auto-initialize/-companion/index.html","searchKeys":["Companion","object Companion","se.ansman.dagger.auto.AutoInitialize.Companion"]},{"name":"object Companion","description":"se.ansman.dagger.auto.Initializable.Companion","location":"core/se.ansman.dagger.auto/-initializable/-companion/index.html","searchKeys":["Companion","object Companion","se.ansman.dagger.auto.Initializable.Companion"]},{"name":"open override fun initialize()","description":"se.ansman.dagger.auto.AutoDaggerInitializer.initialize","location":"core/se.ansman.dagger.auto/-auto-dagger-initializer/initialize.html","searchKeys":["initialize","open override fun initialize()","se.ansman.dagger.auto.AutoDaggerInitializer.initialize"]},{"name":"val asTypes: Array>","description":"se.ansman.dagger.auto.AutoBind.asTypes","location":"core/se.ansman.dagger.auto/-auto-bind/as-types.html","searchKeys":["asTypes","val asTypes: Array>","se.ansman.dagger.auto.AutoBind.asTypes"]},{"name":"val asTypes: Array>","description":"se.ansman.dagger.auto.AutoBindIntoMap.asTypes","location":"core/se.ansman.dagger.auto/-auto-bind-into-map/as-types.html","searchKeys":["asTypes","val asTypes: Array>","se.ansman.dagger.auto.AutoBindIntoMap.asTypes"]},{"name":"val asTypes: Array>","description":"se.ansman.dagger.auto.AutoBindIntoSet.asTypes","location":"core/se.ansman.dagger.auto/-auto-bind-into-set/as-types.html","searchKeys":["asTypes","val asTypes: Array>","se.ansman.dagger.auto.AutoBindIntoSet.asTypes"]},{"name":"val bindGenericAs: BindGenericAs","description":"se.ansman.dagger.auto.AutoBindIntoMap.bindGenericAs","location":"core/se.ansman.dagger.auto/-auto-bind-into-map/bind-generic-as.html","searchKeys":["bindGenericAs","val bindGenericAs: BindGenericAs","se.ansman.dagger.auto.AutoBindIntoMap.bindGenericAs"]},{"name":"val bindGenericAs: BindGenericAs","description":"se.ansman.dagger.auto.AutoBindIntoSet.bindGenericAs","location":"core/se.ansman.dagger.auto/-auto-bind-into-set/bind-generic-as.html","searchKeys":["bindGenericAs","val bindGenericAs: BindGenericAs","se.ansman.dagger.auto.AutoBindIntoSet.bindGenericAs"]},{"name":"val entries: EnumEntries","description":"se.ansman.dagger.auto.BindGenericAs.entries","location":"core/se.ansman.dagger.auto/-bind-generic-as/entries.html","searchKeys":["entries","val entries: EnumEntries","se.ansman.dagger.auto.BindGenericAs.entries"]},{"name":"val inComponent: KClass<*>","description":"se.ansman.dagger.auto.AutoBind.inComponent","location":"core/se.ansman.dagger.auto/-auto-bind/in-component.html","searchKeys":["inComponent","val inComponent: KClass<*>","se.ansman.dagger.auto.AutoBind.inComponent"]},{"name":"val inComponent: KClass<*>","description":"se.ansman.dagger.auto.AutoBindIntoMap.inComponent","location":"core/se.ansman.dagger.auto/-auto-bind-into-map/in-component.html","searchKeys":["inComponent","val inComponent: KClass<*>","se.ansman.dagger.auto.AutoBindIntoMap.inComponent"]},{"name":"val inComponent: KClass<*>","description":"se.ansman.dagger.auto.AutoBindIntoSet.inComponent","location":"core/se.ansman.dagger.auto/-auto-bind-into-set/in-component.html","searchKeys":["inComponent","val inComponent: KClass<*>","se.ansman.dagger.auto.AutoBindIntoSet.inComponent"]},{"name":"val priority: Int","description":"se.ansman.dagger.auto.AutoInitialize.priority","location":"core/se.ansman.dagger.auto/-auto-initialize/priority.html","searchKeys":["priority","val priority: Int","se.ansman.dagger.auto.AutoInitialize.priority"]},{"name":"val value: BindGenericAs","description":"se.ansman.dagger.auto.BindGenericAs.Default.value","location":"core/se.ansman.dagger.auto/-bind-generic-as/-default/value.html","searchKeys":["value","val value: BindGenericAs","se.ansman.dagger.auto.BindGenericAs.Default.value"]},{"name":"var isInitialized: Boolean","description":"se.ansman.dagger.auto.AutoDaggerInitializer.isInitialized","location":"core/se.ansman.dagger.auto/-auto-dagger-initializer/is-initialized.html","searchKeys":["isInitialized","var isInitialized: Boolean","se.ansman.dagger.auto.AutoDaggerInitializer.isInitialized"]},{"name":"annotation class AutoProvideService(val inComponent: KClass<*> = SingletonComponent::class)","description":"se.ansman.dagger.auto.retrofit.AutoProvideService","location":"retrofit/se.ansman.dagger.auto.retrofit/-auto-provide-service/index.html","searchKeys":["AutoProvideService","annotation class AutoProvideService(val inComponent: KClass<*> = SingletonComponent::class)","se.ansman.dagger.auto.retrofit.AutoProvideService"]},{"name":"val inComponent: KClass<*>","description":"se.ansman.dagger.auto.retrofit.AutoProvideService.inComponent","location":"retrofit/se.ansman.dagger.auto.retrofit/-auto-provide-service/in-component.html","searchKeys":["inComponent","val inComponent: KClass<*>","se.ansman.dagger.auto.retrofit.AutoProvideService.inComponent"]},{"name":"class AutoDaggerStartupInitializer : Initializer ","description":"se.ansman.dagger.auto.android.AutoDaggerStartupInitializer","location":"android/se.ansman.dagger.auto.android/-auto-dagger-startup-initializer/index.html","searchKeys":["AutoDaggerStartupInitializer","class AutoDaggerStartupInitializer : Initializer ","se.ansman.dagger.auto.android.AutoDaggerStartupInitializer"]},{"name":"constructor()","description":"se.ansman.dagger.auto.android.AutoDaggerStartupInitializer.AutoDaggerStartupInitializer","location":"android/se.ansman.dagger.auto.android/-auto-dagger-startup-initializer/-auto-dagger-startup-initializer.html","searchKeys":["AutoDaggerStartupInitializer","constructor()","se.ansman.dagger.auto.android.AutoDaggerStartupInitializer.AutoDaggerStartupInitializer"]},{"name":"open override fun create(context: Context)","description":"se.ansman.dagger.auto.android.AutoDaggerStartupInitializer.create","location":"android/se.ansman.dagger.auto.android/-auto-dagger-startup-initializer/create.html","searchKeys":["create","open override fun create(context: Context)","se.ansman.dagger.auto.android.AutoDaggerStartupInitializer.create"]},{"name":"open override fun dependencies(): List>>","description":"se.ansman.dagger.auto.android.AutoDaggerStartupInitializer.dependencies","location":"android/se.ansman.dagger.auto.android/-auto-dagger-startup-initializer/dependencies.html","searchKeys":["dependencies","open override fun dependencies(): List>>","se.ansman.dagger.auto.android.AutoDaggerStartupInitializer.dependencies"]},{"name":"annotation class Replaces(val type: KClass<*>)","description":"se.ansman.dagger.auto.android.testing.Replaces","location":"android/testing/se.ansman.dagger.auto.android.testing/-replaces/index.html","searchKeys":["Replaces","annotation class Replaces(val type: KClass<*>)","se.ansman.dagger.auto.android.testing.Replaces"]},{"name":"val type: KClass<*>","description":"se.ansman.dagger.auto.android.testing.Replaces.type","location":"android/testing/se.ansman.dagger.auto.android.testing/-replaces/type.html","searchKeys":["type","val type: KClass<*>","se.ansman.dagger.auto.android.testing.Replaces.type"]},{"name":"annotation class AutoProvideDaos(val inComponent: KClass<*> = SingletonComponent::class)","description":"se.ansman.dagger.auto.androidx.room.AutoProvideDaos","location":"androidx/room/se.ansman.dagger.auto.androidx.room/-auto-provide-daos/index.html","searchKeys":["AutoProvideDaos","annotation class AutoProvideDaos(val inComponent: KClass<*> = SingletonComponent::class)","se.ansman.dagger.auto.androidx.room.AutoProvideDaos"]},{"name":"val inComponent: KClass<*>","description":"se.ansman.dagger.auto.androidx.room.AutoProvideDaos.inComponent","location":"androidx/room/se.ansman.dagger.auto.androidx.room/-auto-provide-daos/in-component.html","searchKeys":["inComponent","val inComponent: KClass<*>","se.ansman.dagger.auto.androidx.room.AutoProvideDaos.inComponent"]},{"name":"annotation class ViewModelSpecific","description":"se.ansman.dagger.auto.androidx.viewmodel.ViewModelSpecific","location":"androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/-view-model-specific/index.html","searchKeys":["ViewModelSpecific","annotation class ViewModelSpecific","se.ansman.dagger.auto.androidx.viewmodel.ViewModelSpecific"]},{"name":"fun provideViewModelScope(lifecycle: ViewModelLifecycle): CoroutineScope","description":"se.ansman.dagger.auto.androidx.viewmodel.AutoDaggerViewModelCoroutineScopeComponent.provideViewModelScope","location":"androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/-auto-dagger-view-model-coroutine-scope-component/provide-view-model-scope.html","searchKeys":["provideViewModelScope","fun provideViewModelScope(lifecycle: ViewModelLifecycle): CoroutineScope","se.ansman.dagger.auto.androidx.viewmodel.AutoDaggerViewModelCoroutineScopeComponent.provideViewModelScope"]},{"name":"object AutoDaggerViewModelCoroutineScopeComponent","description":"se.ansman.dagger.auto.androidx.viewmodel.AutoDaggerViewModelCoroutineScopeComponent","location":"androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/-auto-dagger-view-model-coroutine-scope-component/index.html","searchKeys":["AutoDaggerViewModelCoroutineScopeComponent","object AutoDaggerViewModelCoroutineScopeComponent","se.ansman.dagger.auto.androidx.viewmodel.AutoDaggerViewModelCoroutineScopeComponent"]}] \ No newline at end of file +[{"name":"ExactType","description":"se.ansman.dagger.auto.BindGenericAs.ExactType","location":"core/se.ansman.dagger.auto/-bind-generic-as/-exact-type/index.html","searchKeys":["ExactType","ExactType","se.ansman.dagger.auto.BindGenericAs.ExactType"]},{"name":"ExactTypeAndWildcard","description":"se.ansman.dagger.auto.BindGenericAs.ExactTypeAndWildcard","location":"core/se.ansman.dagger.auto/-bind-generic-as/-exact-type-and-wildcard/index.html","searchKeys":["ExactTypeAndWildcard","ExactTypeAndWildcard","se.ansman.dagger.auto.BindGenericAs.ExactTypeAndWildcard"]},{"name":"Wildcard","description":"se.ansman.dagger.auto.BindGenericAs.Wildcard","location":"core/se.ansman.dagger.auto/-bind-generic-as/-wildcard/index.html","searchKeys":["Wildcard","Wildcard","se.ansman.dagger.auto.BindGenericAs.Wildcard"]},{"name":"abstract fun initialize()","description":"se.ansman.dagger.auto.Initializable.initialize","location":"core/se.ansman.dagger.auto/-initializable/initialize.html","searchKeys":["initialize","abstract fun initialize()","se.ansman.dagger.auto.Initializable.initialize"]},{"name":"annotation class AutoBind(val inComponent: KClass<*> = Nothing::class, val asTypes: Array> = [])","description":"se.ansman.dagger.auto.AutoBind","location":"core/se.ansman.dagger.auto/-auto-bind/index.html","searchKeys":["AutoBind","annotation class AutoBind(val inComponent: KClass<*> = Nothing::class, val asTypes: Array> = [])","se.ansman.dagger.auto.AutoBind"]},{"name":"annotation class AutoBindIntoMap(val inComponent: KClass<*> = Nothing::class, val asTypes: Array> = [], val bindGenericAs: BindGenericAs = BindGenericAs.ExactType)","description":"se.ansman.dagger.auto.AutoBindIntoMap","location":"core/se.ansman.dagger.auto/-auto-bind-into-map/index.html","searchKeys":["AutoBindIntoMap","annotation class AutoBindIntoMap(val inComponent: KClass<*> = Nothing::class, val asTypes: Array> = [], val bindGenericAs: BindGenericAs = BindGenericAs.ExactType)","se.ansman.dagger.auto.AutoBindIntoMap"]},{"name":"annotation class AutoBindIntoSet(val inComponent: KClass<*> = Nothing::class, val asTypes: Array> = [], val bindGenericAs: BindGenericAs = BindGenericAs.ExactType)","description":"se.ansman.dagger.auto.AutoBindIntoSet","location":"core/se.ansman.dagger.auto/-auto-bind-into-set/index.html","searchKeys":["AutoBindIntoSet","annotation class AutoBindIntoSet(val inComponent: KClass<*> = Nothing::class, val asTypes: Array> = [], val bindGenericAs: BindGenericAs = BindGenericAs.ExactType)","se.ansman.dagger.auto.AutoBindIntoSet"]},{"name":"annotation class AutoInitialize(val priority: Int = defaultPriority)","description":"se.ansman.dagger.auto.AutoInitialize","location":"core/se.ansman.dagger.auto/-auto-initialize/index.html","searchKeys":["AutoInitialize","annotation class AutoInitialize(val priority: Int = defaultPriority)","se.ansman.dagger.auto.AutoInitialize"]},{"name":"annotation class Default(val value: BindGenericAs)","description":"se.ansman.dagger.auto.BindGenericAs.Default","location":"core/se.ansman.dagger.auto/-bind-generic-as/-default/index.html","searchKeys":["Default","annotation class Default(val value: BindGenericAs)","se.ansman.dagger.auto.BindGenericAs.Default"]},{"name":"class AutoDaggerInitializer constructor(initializables: Set) : Initializable","description":"se.ansman.dagger.auto.AutoDaggerInitializer","location":"core/se.ansman.dagger.auto/-auto-dagger-initializer/index.html","searchKeys":["AutoDaggerInitializer","class AutoDaggerInitializer constructor(initializables: Set) : Initializable","se.ansman.dagger.auto.AutoDaggerInitializer"]},{"name":"const val defaultPriority: Int = 1","description":"se.ansman.dagger.auto.AutoInitialize.Companion.defaultPriority","location":"core/se.ansman.dagger.auto/-auto-initialize/-companion/default-priority.html","searchKeys":["defaultPriority","const val defaultPriority: Int = 1","se.ansman.dagger.auto.AutoInitialize.Companion.defaultPriority"]},{"name":"constructor(initializables: Set)","description":"se.ansman.dagger.auto.AutoDaggerInitializer.AutoDaggerInitializer","location":"core/se.ansman.dagger.auto/-auto-dagger-initializer/-auto-dagger-initializer.html","searchKeys":["AutoDaggerInitializer","constructor(initializables: Set)","se.ansman.dagger.auto.AutoDaggerInitializer.AutoDaggerInitializer"]},{"name":"enum BindGenericAs : Enum ","description":"se.ansman.dagger.auto.BindGenericAs","location":"core/se.ansman.dagger.auto/-bind-generic-as/index.html","searchKeys":["BindGenericAs","enum BindGenericAs : Enum ","se.ansman.dagger.auto.BindGenericAs"]},{"name":"fun Initializable.withPriority(priority: Int): Initializable","description":"se.ansman.dagger.auto.Initializable.Companion.withPriority","location":"core/se.ansman.dagger.auto/-initializable/-companion/with-priority.html","searchKeys":["withPriority","fun Initializable.withPriority(priority: Int): Initializable","se.ansman.dagger.auto.Initializable.Companion.withPriority"]},{"name":"fun Lazy<*>.asInitializable(priority: Int = AutoInitialize.defaultPriority): Initializable","description":"se.ansman.dagger.auto.Initializable.Companion.asInitializable","location":"core/se.ansman.dagger.auto/-initializable/-companion/as-initializable.html","searchKeys":["asInitializable","fun Lazy<*>.asInitializable(priority: Int = AutoInitialize.defaultPriority): Initializable","se.ansman.dagger.auto.Initializable.Companion.asInitializable"]},{"name":"fun valueOf(value: String): BindGenericAs","description":"se.ansman.dagger.auto.BindGenericAs.valueOf","location":"core/se.ansman.dagger.auto/-bind-generic-as/value-of.html","searchKeys":["valueOf","fun valueOf(value: String): BindGenericAs","se.ansman.dagger.auto.BindGenericAs.valueOf"]},{"name":"fun values(): Array","description":"se.ansman.dagger.auto.BindGenericAs.values","location":"core/se.ansman.dagger.auto/-bind-generic-as/values.html","searchKeys":["values","fun values(): Array","se.ansman.dagger.auto.BindGenericAs.values"]},{"name":"interface Initializable","description":"se.ansman.dagger.auto.Initializable","location":"core/se.ansman.dagger.auto/-initializable/index.html","searchKeys":["Initializable","interface Initializable","se.ansman.dagger.auto.Initializable"]},{"name":"object Companion","description":"se.ansman.dagger.auto.AutoInitialize.Companion","location":"core/se.ansman.dagger.auto/-auto-initialize/-companion/index.html","searchKeys":["Companion","object Companion","se.ansman.dagger.auto.AutoInitialize.Companion"]},{"name":"object Companion","description":"se.ansman.dagger.auto.Initializable.Companion","location":"core/se.ansman.dagger.auto/-initializable/-companion/index.html","searchKeys":["Companion","object Companion","se.ansman.dagger.auto.Initializable.Companion"]},{"name":"open override fun initialize()","description":"se.ansman.dagger.auto.AutoDaggerInitializer.initialize","location":"core/se.ansman.dagger.auto/-auto-dagger-initializer/initialize.html","searchKeys":["initialize","open override fun initialize()","se.ansman.dagger.auto.AutoDaggerInitializer.initialize"]},{"name":"val asTypes: Array>","description":"se.ansman.dagger.auto.AutoBind.asTypes","location":"core/se.ansman.dagger.auto/-auto-bind/as-types.html","searchKeys":["asTypes","val asTypes: Array>","se.ansman.dagger.auto.AutoBind.asTypes"]},{"name":"val asTypes: Array>","description":"se.ansman.dagger.auto.AutoBindIntoMap.asTypes","location":"core/se.ansman.dagger.auto/-auto-bind-into-map/as-types.html","searchKeys":["asTypes","val asTypes: Array>","se.ansman.dagger.auto.AutoBindIntoMap.asTypes"]},{"name":"val asTypes: Array>","description":"se.ansman.dagger.auto.AutoBindIntoSet.asTypes","location":"core/se.ansman.dagger.auto/-auto-bind-into-set/as-types.html","searchKeys":["asTypes","val asTypes: Array>","se.ansman.dagger.auto.AutoBindIntoSet.asTypes"]},{"name":"val bindGenericAs: BindGenericAs","description":"se.ansman.dagger.auto.AutoBindIntoMap.bindGenericAs","location":"core/se.ansman.dagger.auto/-auto-bind-into-map/bind-generic-as.html","searchKeys":["bindGenericAs","val bindGenericAs: BindGenericAs","se.ansman.dagger.auto.AutoBindIntoMap.bindGenericAs"]},{"name":"val bindGenericAs: BindGenericAs","description":"se.ansman.dagger.auto.AutoBindIntoSet.bindGenericAs","location":"core/se.ansman.dagger.auto/-auto-bind-into-set/bind-generic-as.html","searchKeys":["bindGenericAs","val bindGenericAs: BindGenericAs","se.ansman.dagger.auto.AutoBindIntoSet.bindGenericAs"]},{"name":"val entries: EnumEntries","description":"se.ansman.dagger.auto.BindGenericAs.entries","location":"core/se.ansman.dagger.auto/-bind-generic-as/entries.html","searchKeys":["entries","val entries: EnumEntries","se.ansman.dagger.auto.BindGenericAs.entries"]},{"name":"val inComponent: KClass<*>","description":"se.ansman.dagger.auto.AutoBind.inComponent","location":"core/se.ansman.dagger.auto/-auto-bind/in-component.html","searchKeys":["inComponent","val inComponent: KClass<*>","se.ansman.dagger.auto.AutoBind.inComponent"]},{"name":"val inComponent: KClass<*>","description":"se.ansman.dagger.auto.AutoBindIntoMap.inComponent","location":"core/se.ansman.dagger.auto/-auto-bind-into-map/in-component.html","searchKeys":["inComponent","val inComponent: KClass<*>","se.ansman.dagger.auto.AutoBindIntoMap.inComponent"]},{"name":"val inComponent: KClass<*>","description":"se.ansman.dagger.auto.AutoBindIntoSet.inComponent","location":"core/se.ansman.dagger.auto/-auto-bind-into-set/in-component.html","searchKeys":["inComponent","val inComponent: KClass<*>","se.ansman.dagger.auto.AutoBindIntoSet.inComponent"]},{"name":"val priority: Int","description":"se.ansman.dagger.auto.AutoInitialize.priority","location":"core/se.ansman.dagger.auto/-auto-initialize/priority.html","searchKeys":["priority","val priority: Int","se.ansman.dagger.auto.AutoInitialize.priority"]},{"name":"val value: BindGenericAs","description":"se.ansman.dagger.auto.BindGenericAs.Default.value","location":"core/se.ansman.dagger.auto/-bind-generic-as/-default/value.html","searchKeys":["value","val value: BindGenericAs","se.ansman.dagger.auto.BindGenericAs.Default.value"]},{"name":"var isInitialized: Boolean","description":"se.ansman.dagger.auto.AutoDaggerInitializer.isInitialized","location":"core/se.ansman.dagger.auto/-auto-dagger-initializer/is-initialized.html","searchKeys":["isInitialized","var isInitialized: Boolean","se.ansman.dagger.auto.AutoDaggerInitializer.isInitialized"]},{"name":"class AutoDaggerStartupInitializer : Initializer ","description":"se.ansman.dagger.auto.android.AutoDaggerStartupInitializer","location":"third-party/android/se.ansman.dagger.auto.android/-auto-dagger-startup-initializer/index.html","searchKeys":["AutoDaggerStartupInitializer","class AutoDaggerStartupInitializer : Initializer ","se.ansman.dagger.auto.android.AutoDaggerStartupInitializer"]},{"name":"constructor()","description":"se.ansman.dagger.auto.android.AutoDaggerStartupInitializer.AutoDaggerStartupInitializer","location":"third-party/android/se.ansman.dagger.auto.android/-auto-dagger-startup-initializer/-auto-dagger-startup-initializer.html","searchKeys":["AutoDaggerStartupInitializer","constructor()","se.ansman.dagger.auto.android.AutoDaggerStartupInitializer.AutoDaggerStartupInitializer"]},{"name":"open override fun create(context: Context)","description":"se.ansman.dagger.auto.android.AutoDaggerStartupInitializer.create","location":"third-party/android/se.ansman.dagger.auto.android/-auto-dagger-startup-initializer/create.html","searchKeys":["create","open override fun create(context: Context)","se.ansman.dagger.auto.android.AutoDaggerStartupInitializer.create"]},{"name":"open override fun dependencies(): List>>","description":"se.ansman.dagger.auto.android.AutoDaggerStartupInitializer.dependencies","location":"third-party/android/se.ansman.dagger.auto.android/-auto-dagger-startup-initializer/dependencies.html","searchKeys":["dependencies","open override fun dependencies(): List>>","se.ansman.dagger.auto.android.AutoDaggerStartupInitializer.dependencies"]},{"name":"annotation class AutoProvideDaos(val inComponent: KClass<*> = SingletonComponent::class)","description":"se.ansman.dagger.auto.androidx.room.AutoProvideDaos","location":"third-party/androidx/room/se.ansman.dagger.auto.androidx.room/-auto-provide-daos/index.html","searchKeys":["AutoProvideDaos","annotation class AutoProvideDaos(val inComponent: KClass<*> = SingletonComponent::class)","se.ansman.dagger.auto.androidx.room.AutoProvideDaos"]},{"name":"val inComponent: KClass<*>","description":"se.ansman.dagger.auto.androidx.room.AutoProvideDaos.inComponent","location":"third-party/androidx/room/se.ansman.dagger.auto.androidx.room/-auto-provide-daos/in-component.html","searchKeys":["inComponent","val inComponent: KClass<*>","se.ansman.dagger.auto.androidx.room.AutoProvideDaos.inComponent"]},{"name":"annotation class ViewModelSpecific","description":"se.ansman.dagger.auto.androidx.viewmodel.ViewModelSpecific","location":"third-party/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/-view-model-specific/index.html","searchKeys":["ViewModelSpecific","annotation class ViewModelSpecific","se.ansman.dagger.auto.androidx.viewmodel.ViewModelSpecific"]},{"name":"fun provideViewModelScope(lifecycle: ViewModelLifecycle): CoroutineScope","description":"se.ansman.dagger.auto.androidx.viewmodel.AutoDaggerViewModelCoroutineScopeComponent.provideViewModelScope","location":"third-party/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/-auto-dagger-view-model-coroutine-scope-component/provide-view-model-scope.html","searchKeys":["provideViewModelScope","fun provideViewModelScope(lifecycle: ViewModelLifecycle): CoroutineScope","se.ansman.dagger.auto.androidx.viewmodel.AutoDaggerViewModelCoroutineScopeComponent.provideViewModelScope"]},{"name":"object AutoDaggerViewModelCoroutineScopeComponent","description":"se.ansman.dagger.auto.androidx.viewmodel.AutoDaggerViewModelCoroutineScopeComponent","location":"third-party/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/-auto-dagger-view-model-coroutine-scope-component/index.html","searchKeys":["AutoDaggerViewModelCoroutineScopeComponent","object AutoDaggerViewModelCoroutineScopeComponent","se.ansman.dagger.auto.androidx.viewmodel.AutoDaggerViewModelCoroutineScopeComponent"]},{"name":"annotation class AutoProvideService(val inComponent: KClass<*> = SingletonComponent::class)","description":"se.ansman.dagger.auto.ktorfit.AutoProvideService","location":"third-party/ktorfit/se.ansman.dagger.auto.ktorfit/-auto-provide-service/index.html","searchKeys":["AutoProvideService","annotation class AutoProvideService(val inComponent: KClass<*> = SingletonComponent::class)","se.ansman.dagger.auto.ktorfit.AutoProvideService"]},{"name":"val inComponent: KClass<*>","description":"se.ansman.dagger.auto.ktorfit.AutoProvideService.inComponent","location":"third-party/ktorfit/se.ansman.dagger.auto.ktorfit/-auto-provide-service/in-component.html","searchKeys":["inComponent","val inComponent: KClass<*>","se.ansman.dagger.auto.ktorfit.AutoProvideService.inComponent"]},{"name":"annotation class AutoProvideService(val inComponent: KClass<*> = SingletonComponent::class)","description":"se.ansman.dagger.auto.retrofit.AutoProvideService","location":"third-party/retrofit/se.ansman.dagger.auto.retrofit/-auto-provide-service/index.html","searchKeys":["AutoProvideService","annotation class AutoProvideService(val inComponent: KClass<*> = SingletonComponent::class)","se.ansman.dagger.auto.retrofit.AutoProvideService"]},{"name":"val inComponent: KClass<*>","description":"se.ansman.dagger.auto.retrofit.AutoProvideService.inComponent","location":"third-party/retrofit/se.ansman.dagger.auto.retrofit/-auto-provide-service/in-component.html","searchKeys":["inComponent","val inComponent: KClass<*>","se.ansman.dagger.auto.retrofit.AutoProvideService.inComponent"]},{"name":"annotation class Replaces(val type: KClass<*>)","description":"se.ansman.dagger.auto.android.testing.Replaces","location":"third-party/android/testing/se.ansman.dagger.auto.android.testing/-replaces/index.html","searchKeys":["Replaces","annotation class Replaces(val type: KClass<*>)","se.ansman.dagger.auto.android.testing.Replaces"]},{"name":"val type: KClass<*>","description":"se.ansman.dagger.auto.android.testing.Replaces.type","location":"third-party/android/testing/se.ansman.dagger.auto.android.testing/-replaces/type.html","searchKeys":["type","val type: KClass<*>","se.ansman.dagger.auto.android.testing.Replaces.type"]}] \ No newline at end of file diff --git a/dokka/scripts/platform-content-handler.js b/dokka/scripts/platform-content-handler.js index 8c4ca5383..811c47888 100644 --- a/dokka/scripts/platform-content-handler.js +++ b/dokka/scripts/platform-content-handler.js @@ -18,8 +18,6 @@ const samplesLightThemeName = 'idea' window.addEventListener('load', () => { document.querySelectorAll("div[data-platform-hinted]") .forEach(elem => elem.addEventListener('click', (event) => togglePlatformDependent(event, elem))) - document.querySelectorAll("div[tabs-section]") - .forEach(elem => elem.addEventListener('click', (event) => toggleSectionsEventHandler(event))) const filterSection = document.getElementById('filter-section') if (filterSection) { filterSection.addEventListener('click', (event) => filterButtonHandler(event)) @@ -177,19 +175,30 @@ function handleAnchor() { } function initTabs() { - document.querySelectorAll("div[tabs-section]") - .forEach(element => { - showCorrespondingTabBody(element) - element.addEventListener('click', (event) => toggleSectionsEventHandler(event)) - }) - let cached = localStorage.getItem("active-tab") - if (cached) { - let parsed = JSON.parse(cached) - let tab = document.querySelector('div[tabs-section] > button[data-togglable="' + parsed + '"]') - if (tab) { - toggleSections(tab) - } - } + // we could have only a single type of data - classlike or package + const mainContent = document.querySelector('.main-content'); + const type = mainContent ? mainContent.getAttribute("data-page-type") : null; + const localStorageKey = "active-tab-" + type; + document.querySelectorAll('div[tabs-section]').forEach(element => { + showCorrespondingTabBody(element); + element.addEventListener('click', ({target}) => { + const togglable = target ? target.getAttribute("data-togglable") : null; + if (!togglable) return; + + localStorage.setItem(localStorageKey, JSON.stringify(togglable)); + toggleSections(target); + }); + }); + + const cached = localStorage.getItem(localStorageKey); + if (!cached) return; + + const tab = document.querySelector( + 'div[tabs-section] > button[data-togglable="' + JSON.parse(cached) + '"]' + ); + if (!tab) return; + + toggleSections(tab); } function showCorrespondingTabBody(element) { @@ -293,12 +302,6 @@ function toggleSections(target) { activateTabsBody("tabs-section-body") } -function toggleSectionsEventHandler(evt) { - if (!evt.target.getAttribute("data-togglable")) return - localStorage.setItem('active-tab', JSON.stringify(evt.target.getAttribute("data-togglable"))) - toggleSections(evt.target) -} - function togglePlatformDependent(e, container) { let target = e.target if (target.tagName != 'BUTTON') return; diff --git a/dokka/scripts/sourceset_dependencies.js b/dokka/scripts/sourceset_dependencies.js index c2fc9930c..0da605c8f 100644 --- a/dokka/scripts/sourceset_dependencies.js +++ b/dokka/scripts/sourceset_dependencies.js @@ -1 +1 @@ -sourceset_dependencies = '{":core:dokkaHtmlPartial/main":[],":retrofit:dokkaHtmlPartial/main":[],":android:dokkaHtmlPartial/debug":[],":android:dokkaHtmlPartial/main":[],":android:dokkaHtmlPartial/release":[],":android:testing:dokkaHtmlPartial/main":[],":androidx:viewmodel:dokkaHtmlPartial/debug":[],":androidx:viewmodel:dokkaHtmlPartial/main":[],":androidx:viewmodel:dokkaHtmlPartial/release":[],":androidx:room:dokkaHtmlPartial/main":[]}' \ No newline at end of file +sourceset_dependencies = '{":core:dokkaHtmlPartial/main":[],":third-party:retrofit:dokkaHtmlPartial/main":[],":third-party:android:dokkaHtmlPartial/debug":[],":third-party:android:dokkaHtmlPartial/main":[],":third-party:android:dokkaHtmlPartial/release":[],":third-party:android:testing:dokkaHtmlPartial/main":[],":third-party:ktorfit:dokkaHtmlPartial/main":[],":third-party:androidx:viewmodel:dokkaHtmlPartial/debug":[],":third-party:androidx:viewmodel:dokkaHtmlPartial/main":[],":third-party:androidx:viewmodel:dokkaHtmlPartial/release":[],":third-party:androidx:room:dokkaHtmlPartial/main":[]}' \ No newline at end of file diff --git a/dokka/styles/main.css b/dokka/styles/main.css index ebe1ce12f..5f7781ec8 100644 --- a/dokka/styles/main.css +++ b/dokka/styles/main.css @@ -1,6 +1,6 @@ /*! * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. - */#pages-search{cursor:pointer;border:none;border-radius:50%;background:transparent;fill:#fff;fill:var(--dark-mode-and-search-icon-color)}#pages-search:focus{outline:none}#pages-search:hover{background:var(--white-10)}.search,.search [data-test=ring-select],.search [data-test=ring-tooltip],.search [data-test=ring-select_focus],.search #pages-search{display:inline-block;padding:0;margin:0;font-size:0;line-height:0}.search-hotkey-popup{background-color:var(--background-color) !important;padding:4px}.popup-wrapper{min-width:calc(100% - 322px) !important;border:1px solid rgba(255,255,255,.2) !important;background-color:#27282c !important}.popup-wrapper [class^=filterWrapper]{border-bottom:1px solid rgba(255,255,255,.2)}.popup-wrapper input{color:rgba(255,255,255,.8) !important;font-weight:normal !important}.popup-wrapper span[data-test-custom=ring-select-popup-filter-icon]{color:#fff}.popup-wrapper button[data-test=ring-input-clear]{color:#fff !important}@media screen and (max-width: 759px){.popup-wrapper{min-width:100% !important}}.template-wrapper{display:grid;height:32px;grid-template-columns:auto auto}.template-wrapper strong{color:rgba(255,255,255,.8)}.template-wrapper span{color:rgba(255,255,255,.8);line-height:32px}.template-wrapper span.template-description{color:rgba(255,255,255,.6);justify-self:end}@media screen and (max-width: 759px){.template-wrapper{display:flex;flex-direction:column;height:auto}.template-wrapper span{line-height:unset}}.template-name{justify-self:start}[class^=fade]{display:none}[class*=hover]{background-color:rgba(255,255,255,.1) !important} + */#pages-search{cursor:pointer;border:none;border-radius:50%;background:transparent;fill:#fff;fill:var(--dark-mode-and-search-icon-color)}#pages-search:hover{background:var(--white-10)}.search,.search [data-test=ring-select],.search [data-test=ring-tooltip],.search [data-test=ring-select_focus],.search #pages-search{display:inline-block;padding:0;margin:0;font-size:0;line-height:0}.search-hotkey-popup{background-color:var(--background-color) !important;padding:4px}.popup-wrapper{min-width:calc(100% - 322px) !important;border:1px solid rgba(255,255,255,.2) !important;background-color:#27282c !important;color:rgba(255,255,255,.8)}.popup-wrapper [class^=filterWrapper]{border-bottom:1px solid rgba(255,255,255,.2)}.popup-wrapper input{color:rgba(255,255,255,.8) !important;font-weight:normal !important}.popup-wrapper span[data-test-custom=ring-select-popup-filter-icon]{color:#fff}.popup-wrapper button[data-test=ring-input-clear]{color:#fff !important}@media screen and (max-width: 759px){.popup-wrapper{min-width:100% !important}}.template-wrapper{display:grid;height:32px;grid-template-columns:auto auto}.template-wrapper strong{color:rgba(255,255,255,.8)}.template-wrapper span{color:rgba(255,255,255,.8);line-height:32px}.template-wrapper span.template-description{color:rgba(255,255,255,.6);justify-self:end}@media screen and (max-width: 759px){.template-wrapper{display:flex;flex-direction:column;height:auto}.template-wrapper span{line-height:unset}}.template-name{justify-self:start}[class^=fade]{display:none}[class*=hover]{background-color:rgba(255,255,255,.1) !important} /* stylelint-disable color-no-hex */ :root { diff --git a/dokka/styles/style.css b/dokka/styles/style.css index 67a899a59..fc2b84d26 100644 --- a/dokka/styles/style.css +++ b/dokka/styles/style.css @@ -342,6 +342,7 @@ td:first-child { /* --- Navigation controls --- */ .navigation-controls { display: flex; + margin-left: 4px; } @media (min-width: 760px) { @@ -354,45 +355,50 @@ td:first-child { display: none; } -/* --- Navigation THEME --- */ -.navigation-controls--search { +.navigation-controls--btn { display: inline-flex; - font-size: 0; - line-height: 0; -} - -.navigation-controls--theme { - display: block; + align-items: center; + justify-content: center; + width: 40px; + height: 40px; border-radius: 50%; background-color: inherit; - margin-left: 4px; + background-position: 50% 50%; padding: 0; border: none; cursor: pointer; font-size: 0; line-height: 0; + transition: background-color 200ms ease-in-out; + will-change: background-color; } -.navigation-controls--theme::before { - height: 40px; - width: 40px; +.navigation-controls--btn:hover { + background-color: var(--white-10); +} + +.navigation-controls--theme { + background-image: url("../images/theme-toggle.svg"); + background-repeat: no-repeat; } -.navigation-controls--theme:hover { - background: var(--white-10); +@media (max-width: 759px) { + .navigation-controls--theme { + display: none; + } } -.navigation-controls--theme::before { - display: block; - content: url("../images/theme-toggle.svg"); +.navigation-controls--homepage { + background-image: url("../images/homepage.svg"); + background-repeat: no-repeat; + background-size: 24px 24px; } @media (max-width: 759px) { - .navigation-controls--theme { + .navigation-controls--homepage { display: none; } } -/* /--- Navigation THEME --- */ .navigation .platform-selector:not([data-active]) { color: #fff; @@ -656,6 +662,26 @@ code.paragraph { text-decoration: line-through; } +/* Workaround for Firefox https://github.com/Kotlin/dokka/issues/3156 */ +@-moz-document url-prefix() { + .strikethrough { + position: relative; + text-decoration: none; + } + + /* complex selectors here are required to handle multiline cases */ + .strikethrough::after, .strikethrough span:after { + content: ''; + position: absolute; + top: 7px; + left: 0; + right: 0; + height: 1px; + background-color: currentColor; + z-index: 1; + } +} + .symbol:empty { padding: 0; } @@ -684,7 +710,7 @@ code { code:not(.block) { display: inline-block; - vertical-align: middle; + vertical-align: bottom; } .symbol > a { diff --git a/dokka/third-party/android/index.html b/dokka/third-party/android/index.html new file mode 100644 index 000000000..77cf1cd20 --- /dev/null +++ b/dokka/third-party/android/index.html @@ -0,0 +1,100 @@ + + + + + android + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

android

+
+

Packages

+
+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/dokka/third-party/android/navigation.html b/dokka/third-party/android/navigation.html new file mode 100644 index 000000000..d01bc5f2d --- /dev/null +++ b/dokka/third-party/android/navigation.html @@ -0,0 +1,172 @@ + diff --git a/dokka/third-party/android/se.ansman.dagger.auto.android/-auto-dagger-startup-initializer/-auto-dagger-startup-initializer.html b/dokka/third-party/android/se.ansman.dagger.auto.android/-auto-dagger-startup-initializer/-auto-dagger-startup-initializer.html new file mode 100644 index 000000000..606304a95 --- /dev/null +++ b/dokka/third-party/android/se.ansman.dagger.auto.android/-auto-dagger-startup-initializer/-auto-dagger-startup-initializer.html @@ -0,0 +1,81 @@ + + + + + AutoDaggerStartupInitializer + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

AutoDaggerStartupInitializer

+
+
constructor()
+
+ +
+
+
+ + + diff --git a/dokka/third-party/android/se.ansman.dagger.auto.android/-auto-dagger-startup-initializer/create.html b/dokka/third-party/android/se.ansman.dagger.auto.android/-auto-dagger-startup-initializer/create.html new file mode 100644 index 000000000..e0410eb54 --- /dev/null +++ b/dokka/third-party/android/se.ansman.dagger.auto.android/-auto-dagger-startup-initializer/create.html @@ -0,0 +1,81 @@ + + + + + create + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

create

+
+
open override fun create(context: Context)
+
+ +
+
+
+ + + diff --git a/dokka/third-party/android/se.ansman.dagger.auto.android/-auto-dagger-startup-initializer/dependencies.html b/dokka/third-party/android/se.ansman.dagger.auto.android/-auto-dagger-startup-initializer/dependencies.html new file mode 100644 index 000000000..89491512e --- /dev/null +++ b/dokka/third-party/android/se.ansman.dagger.auto.android/-auto-dagger-startup-initializer/dependencies.html @@ -0,0 +1,81 @@ + + + + + dependencies + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

dependencies

+
+
open override fun dependencies(): List<Class<out Initializer<*>>>
+
+ +
+
+
+ + + diff --git a/dokka/third-party/android/se.ansman.dagger.auto.android/-auto-dagger-startup-initializer/index.html b/dokka/third-party/android/se.ansman.dagger.auto.android/-auto-dagger-startup-initializer/index.html new file mode 100644 index 000000000..7f949ee8d --- /dev/null +++ b/dokka/third-party/android/se.ansman.dagger.auto.android/-auto-dagger-startup-initializer/index.html @@ -0,0 +1,139 @@ + + + + + AutoDaggerStartupInitializer + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

AutoDaggerStartupInitializer

+

An Initializer that will initialize a Singleton scoped AutoDaggerStartupInitializer.

This will be called by androidx.startup, provides no result and has no dependencies.

Since

1.0.0

+
+
+
+
+
+

Constructors

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
constructor()
+
+
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun create(context: Context)
+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
open override fun dependencies(): List<Class<out Initializer<*>>>
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/dokka/third-party/android/se.ansman.dagger.auto.android/index.html b/dokka/third-party/android/se.ansman.dagger.auto.android/index.html new file mode 100644 index 000000000..4e41a4507 --- /dev/null +++ b/dokka/third-party/android/se.ansman.dagger.auto.android/index.html @@ -0,0 +1,104 @@ + + + + + se.ansman.dagger.auto.android + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

Package-level declarations

+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+

An Initializer that will initialize a Singleton scoped AutoDaggerStartupInitializer.

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/dokka/third-party/android/testing/index.html b/dokka/third-party/android/testing/index.html new file mode 100644 index 000000000..f342f35c5 --- /dev/null +++ b/dokka/third-party/android/testing/index.html @@ -0,0 +1,100 @@ + + + + + android-testing + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

android-testing

+
+

Packages

+
+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/dokka/third-party/android/testing/navigation.html b/dokka/third-party/android/testing/navigation.html new file mode 100644 index 000000000..d01bc5f2d --- /dev/null +++ b/dokka/third-party/android/testing/navigation.html @@ -0,0 +1,172 @@ + diff --git a/dokka/third-party/android/testing/se.ansman.dagger.auto.android.testing/-replaces/index.html b/dokka/third-party/android/testing/se.ansman.dagger.auto.android.testing/-replaces/index.html new file mode 100644 index 000000000..ac1f390a4 --- /dev/null +++ b/dokka/third-party/android/testing/se.ansman.dagger.auto.android.testing/-replaces/index.html @@ -0,0 +1,105 @@ + + + + + Replaces + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

Replaces

+
@Target(allowedTargets = [AnnotationTarget.CLASS])
annotation class Replaces(val type: KClass<*>)(source)

Denotes that the class referenced using type is to be replaced by this type.

The type to replace must be annotated with AutoBind. Any qualifiers and binding keys will be copied from the referenced type.

The annotated class must implement the types which are bound by the referenced type.

Multibindings

If the replaced type uses multibindings (AutoBindIntoSet or AutoBindIntoMap) then those are only replaced if the annotated type also implements them. Otherwise the multibinding is removed

So for example. If the target type uses @AutoBindIntoSet to bind it as a Closeable but your replacement doesn't implement Closeable then that binding is removed. If it does implement Closeable then the binding is replaced with the fake binding.

Objects

Normally the replacement object needs to be provided to the dependency graph using either an @Provides annotated method or using an @Inject annotated constructor.

Auto Dagger allows you to annotate a Kotlin object with @Replaces without it being provided in the graph. This is especially useful for tests:

@Replaces(ThreadPoolExecutor::class)
object DirectExecutor : Executor {
override fun execute(command: Runnable) {
command.run()
}
}

Auto Initialize

If the target type is annotated with AutoInitialize, then an empty module will be generated to replace the auto initialize module, effectively disabling it.

Example

// In your `main` source set
interface Repository

@AutoBind(asTypes = [Repository::class])
@AutoBindIntoSet(asTypes = [Closeable::class])
@Singleton
class RealRepository @Inject constructor() : Repository, Closeable {
override fun close() {}
}

// In your `test` source set
// Since `FakeRepository` doesn't implement `Closeable` then it's
// not bound as `Closable` and the real `RealRepository -> Closeable`
// binding is removed.
@Replaces(RealRepository::class)
class FakeRepository @Inject constructor() : Repository

Since

1.0.0

+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
val type: KClass<*>
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/dokka/third-party/android/testing/se.ansman.dagger.auto.android.testing/-replaces/type.html b/dokka/third-party/android/testing/se.ansman.dagger.auto.android.testing/-replaces/type.html new file mode 100644 index 000000000..36a6ea120 --- /dev/null +++ b/dokka/third-party/android/testing/se.ansman.dagger.auto.android.testing/-replaces/type.html @@ -0,0 +1,81 @@ + + + + + type + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

type

+
+
val type: KClass<*>(source)
+
+ +
+
+
+ + + diff --git a/dokka/third-party/android/testing/se.ansman.dagger.auto.android.testing/index.html b/dokka/third-party/android/testing/se.ansman.dagger.auto.android.testing/index.html new file mode 100644 index 000000000..82a306f44 --- /dev/null +++ b/dokka/third-party/android/testing/se.ansman.dagger.auto.android.testing/index.html @@ -0,0 +1,104 @@ + + + + + se.ansman.dagger.auto.android.testing + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

Package-level declarations

+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
@Target(allowedTargets = [AnnotationTarget.CLASS])
annotation class Replaces(val type: KClass<*>)

Denotes that the class referenced using type is to be replaced by this type.

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/dokka/third-party/androidx/room/index.html b/dokka/third-party/androidx/room/index.html new file mode 100644 index 000000000..20ae9286d --- /dev/null +++ b/dokka/third-party/androidx/room/index.html @@ -0,0 +1,100 @@ + + + + + androidx-room + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

androidx-room

+
+

Packages

+
+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/dokka/third-party/androidx/room/navigation.html b/dokka/third-party/androidx/room/navigation.html new file mode 100644 index 000000000..d01bc5f2d --- /dev/null +++ b/dokka/third-party/androidx/room/navigation.html @@ -0,0 +1,172 @@ + diff --git a/dokka/third-party/androidx/room/se.ansman.dagger.auto.androidx.room/-auto-provide-daos/in-component.html b/dokka/third-party/androidx/room/se.ansman.dagger.auto.androidx.room/-auto-provide-daos/in-component.html new file mode 100644 index 000000000..306ba94c6 --- /dev/null +++ b/dokka/third-party/androidx/room/se.ansman.dagger.auto.androidx.room/-auto-provide-daos/in-component.html @@ -0,0 +1,81 @@ + + + + + inComponent + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

inComponent

+
+

Parameters

inComponent

The component to provide the DAOs in. Defaults to SingletonComponent.

+
+ +
+
+
+ + + diff --git a/dokka/third-party/androidx/room/se.ansman.dagger.auto.androidx.room/-auto-provide-daos/index.html b/dokka/third-party/androidx/room/se.ansman.dagger.auto.androidx.room/-auto-provide-daos/index.html new file mode 100644 index 000000000..f65e9ea94 --- /dev/null +++ b/dokka/third-party/androidx/room/se.ansman.dagger.auto.androidx.room/-auto-provide-daos/index.html @@ -0,0 +1,105 @@ + + + + + AutoProvideDaos + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

AutoProvideDaos

+
@Target(allowedTargets = [AnnotationTarget.CLASS])
annotation class AutoProvideDaos(val inComponent: KClass<*> = SingletonComponent::class)(source)

A marker for Room Databases that will automatically contribute all DAOs in your database to the dependency graph.

Simply add this annotation to a Database and auto-data will provide all DAOs.

Example:

@AutoProvideDaos
@Database(entities = [User::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
abstract fun userDao(): UserDao
}

// You'll also need to provide the Database instance to the component you want to inject the service into:
@Module
@InstallIn(SingletonComponent::class)
object DatabaseModule {
@Provides
@Singleton
fun provideDatabase(@ApplicationContext context: Context): AppDatabase =
Room.databaseBuilder(context, AppDatabase::class.java, "database-name").build()
}

Changing the target component

By default, the DAOs are provided in the SingletonComponent. If you'd like to change this you can do so by specifying the inComponent parameter:

@AutoProvideDaos
@Database(entities = [User::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
abstract fun userDao(): UserDao
}

Since

1.0.0

Parameters

inComponent

The component to provide the DAOs in. Defaults to SingletonComponent.

+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/dokka/third-party/androidx/room/se.ansman.dagger.auto.androidx.room/index.html b/dokka/third-party/androidx/room/se.ansman.dagger.auto.androidx.room/index.html new file mode 100644 index 000000000..c849ea030 --- /dev/null +++ b/dokka/third-party/androidx/room/se.ansman.dagger.auto.androidx.room/index.html @@ -0,0 +1,104 @@ + + + + + se.ansman.dagger.auto.androidx.room + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

Package-level declarations

+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
@Target(allowedTargets = [AnnotationTarget.CLASS])
annotation class AutoProvideDaos(val inComponent: KClass<*> = SingletonComponent::class)

A marker for Room Databases that will automatically contribute all DAOs in your database to the dependency graph.

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/dokka/third-party/androidx/viewmodel/index.html b/dokka/third-party/androidx/viewmodel/index.html new file mode 100644 index 000000000..3c360c43f --- /dev/null +++ b/dokka/third-party/androidx/viewmodel/index.html @@ -0,0 +1,100 @@ + + + + + androidx-viewmodel + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

androidx-viewmodel

+
+

Packages

+
+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/dokka/third-party/androidx/viewmodel/navigation.html b/dokka/third-party/androidx/viewmodel/navigation.html new file mode 100644 index 000000000..d01bc5f2d --- /dev/null +++ b/dokka/third-party/androidx/viewmodel/navigation.html @@ -0,0 +1,172 @@ + diff --git a/dokka/third-party/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/-auto-dagger-view-model-coroutine-scope-component/index.html b/dokka/third-party/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/-auto-dagger-view-model-coroutine-scope-component/index.html new file mode 100644 index 000000000..e9a0b07ce --- /dev/null +++ b/dokka/third-party/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/-auto-dagger-view-model-coroutine-scope-component/index.html @@ -0,0 +1,105 @@ + + + + + AutoDaggerViewModelCoroutineScopeComponent + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

AutoDaggerViewModelCoroutineScopeComponent

+

A Dagger module which provides a CoroutineScope that is tied to the lifecycle of a ViewModel.

The provided scope is qualified with ViewModelSpecific and will be canceled when the viewmodel is cleared and it ses a SupervisorJob and the [Dispatchers].Main.immediate dispatcher.

To inject:

@HiltViewModel
class MyViewModel @Inject constructor(
@ViewModelSpecific
private val viewModelScope: CoroutineScope
) : ViewModel()

Since

1.0.0

+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
fun provideViewModelScope(lifecycle: ViewModelLifecycle): CoroutineScope
+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/dokka/third-party/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/-auto-dagger-view-model-coroutine-scope-component/provide-view-model-scope.html b/dokka/third-party/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/-auto-dagger-view-model-coroutine-scope-component/provide-view-model-scope.html new file mode 100644 index 000000000..d156f025c --- /dev/null +++ b/dokka/third-party/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/-auto-dagger-view-model-coroutine-scope-component/provide-view-model-scope.html @@ -0,0 +1,81 @@ + + + + + provideViewModelScope + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

provideViewModelScope

+
+
fun provideViewModelScope(lifecycle: ViewModelLifecycle): CoroutineScope
+
+ +
+
+
+ + + diff --git a/dokka/third-party/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/-view-model-specific/index.html b/dokka/third-party/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/-view-model-specific/index.html new file mode 100644 index 000000000..93cc31f6b --- /dev/null +++ b/dokka/third-party/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/-view-model-specific/index.html @@ -0,0 +1,85 @@ + + + + + ViewModelSpecific + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

ViewModelSpecific

+
@Qualifier
annotation class ViewModelSpecific

A qualifier indicating that the annotated type is tied to ViewModelComponent.

By default the following things are automatically provided:

CoroutineScope

A CoroutineScope that is tied to the view model's lifecycle is contributed. The scope uses a SupervisorJob and the [Dispatchers].Main.immediate dispatcher.

To use it simply inject it like this:

@HiltViewMode
class MyViewModel @Inject constructor(
@ViewModelSpecific
private val viewModelScope: CoroutineScope
) : ViewModel()

Since

1.0.0

+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/dokka/third-party/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/index.html b/dokka/third-party/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/index.html new file mode 100644 index 000000000..6d2cc2cfc --- /dev/null +++ b/dokka/third-party/androidx/viewmodel/se.ansman.dagger.auto.androidx.viewmodel/index.html @@ -0,0 +1,119 @@ + + + + + se.ansman.dagger.auto.androidx.viewmodel + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

Package-level declarations

+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+

A Dagger module which provides a CoroutineScope that is tied to the lifecycle of a ViewModel.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+
@Qualifier
annotation class ViewModelSpecific

A qualifier indicating that the annotated type is tied to ViewModelComponent.

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/dokka/third-party/ktorfit/index.html b/dokka/third-party/ktorfit/index.html new file mode 100644 index 000000000..cf93fad2e --- /dev/null +++ b/dokka/third-party/ktorfit/index.html @@ -0,0 +1,100 @@ + + + + + ktorfit + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

ktorfit

+
+

Packages

+
+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/dokka/third-party/ktorfit/navigation.html b/dokka/third-party/ktorfit/navigation.html new file mode 100644 index 000000000..d01bc5f2d --- /dev/null +++ b/dokka/third-party/ktorfit/navigation.html @@ -0,0 +1,172 @@ + diff --git a/dokka/third-party/ktorfit/se.ansman.dagger.auto.ktorfit/-auto-provide-service/in-component.html b/dokka/third-party/ktorfit/se.ansman.dagger.auto.ktorfit/-auto-provide-service/in-component.html new file mode 100644 index 000000000..191b9cd5b --- /dev/null +++ b/dokka/third-party/ktorfit/se.ansman.dagger.auto.ktorfit/-auto-provide-service/in-component.html @@ -0,0 +1,81 @@ + + + + + inComponent + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

inComponent

+
+

Parameters

inComponent

The component to install the service in. Defaults to SingletonComponent.

+
+ +
+
+
+ + + diff --git a/dokka/third-party/ktorfit/se.ansman.dagger.auto.ktorfit/-auto-provide-service/index.html b/dokka/third-party/ktorfit/se.ansman.dagger.auto.ktorfit/-auto-provide-service/index.html new file mode 100644 index 000000000..01fb619f2 --- /dev/null +++ b/dokka/third-party/ktorfit/se.ansman.dagger.auto.ktorfit/-auto-provide-service/index.html @@ -0,0 +1,105 @@ + + + + + AutoProvideService + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

AutoProvideService

+
@Target(allowedTargets = [AnnotationTarget.CLASS])
annotation class AutoProvideService(val inComponent: KClass<*> = SingletonComponent::class)(source)

Marks a Ktorfit Service for automatic contribution to your dependency graph.

Simply add this annotation to the API services you want to inject and auto-dagger will generate the necessary modules.

Example:

@AutoProvideService
class ApiService {
@GET("users")
suspend fun getUsers(): List<User>
}

// You'll also need to provide a Ktorfit instance to the component you want to inject the service into:
@Module
@InstallIn(SingletonComponent::class)
object KtorfitModule {
@Provides
@Singleton
fun provideKtorfit(): Ktorfit = Ktorfit.Builder()
.baseUrl("https://api.example.com/")
.build()
}

Changing the target component

By default, services are installed in the SingletonComponent. If you'd like to change this you can do so by specifying the inComponent parameter:

@AutoProvideService(inComponent = SomeOtherComponent::class)
class ApiService {}

Qualifiers

If you have multiple ktorfit instances and use qualifiers to differentiate them, you can specify the qualifier on the service:

@AutoProvideService
@Named("api1")
class ApiService {}

Making the service scoped or reusable

If you'd like to cache/reuse the service instances you can annotate the service with a scope or @Reusable:

@Singleton // This must match the `inComponent` parameter of @AutoProvideService
@AutoProvideService
class ApiService {
// Service methods
}

// Or if you want to just make it reusable
@Reusable
@AutoProvideService
class ApiService {
// Service methods
}

Since

1.1.0

Parameters

inComponent

The component to install the service in. Defaults to SingletonComponent.

+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/dokka/third-party/ktorfit/se.ansman.dagger.auto.ktorfit/index.html b/dokka/third-party/ktorfit/se.ansman.dagger.auto.ktorfit/index.html new file mode 100644 index 000000000..afff9e480 --- /dev/null +++ b/dokka/third-party/ktorfit/se.ansman.dagger.auto.ktorfit/index.html @@ -0,0 +1,104 @@ + + + + + se.ansman.dagger.auto.ktorfit + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

Package-level declarations

+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
@Target(allowedTargets = [AnnotationTarget.CLASS])
annotation class AutoProvideService(val inComponent: KClass<*> = SingletonComponent::class)

Marks a Ktorfit Service for automatic contribution to your dependency graph.

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/dokka/third-party/retrofit/index.html b/dokka/third-party/retrofit/index.html new file mode 100644 index 000000000..72eb120e3 --- /dev/null +++ b/dokka/third-party/retrofit/index.html @@ -0,0 +1,100 @@ + + + + + retrofit + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

retrofit

+
+

Packages

+
+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/dokka/third-party/retrofit/navigation.html b/dokka/third-party/retrofit/navigation.html new file mode 100644 index 000000000..d01bc5f2d --- /dev/null +++ b/dokka/third-party/retrofit/navigation.html @@ -0,0 +1,172 @@ + diff --git a/dokka/third-party/retrofit/se.ansman.dagger.auto.retrofit/-auto-provide-service/in-component.html b/dokka/third-party/retrofit/se.ansman.dagger.auto.retrofit/-auto-provide-service/in-component.html new file mode 100644 index 000000000..5aa6a0f70 --- /dev/null +++ b/dokka/third-party/retrofit/se.ansman.dagger.auto.retrofit/-auto-provide-service/in-component.html @@ -0,0 +1,81 @@ + + + + + inComponent + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

inComponent

+
+

Parameters

inComponent

The component to install the service in. Defaults to SingletonComponent.

+
+ +
+
+
+ + + diff --git a/dokka/third-party/retrofit/se.ansman.dagger.auto.retrofit/-auto-provide-service/index.html b/dokka/third-party/retrofit/se.ansman.dagger.auto.retrofit/-auto-provide-service/index.html new file mode 100644 index 000000000..3e34c6456 --- /dev/null +++ b/dokka/third-party/retrofit/se.ansman.dagger.auto.retrofit/-auto-provide-service/index.html @@ -0,0 +1,105 @@ + + + + + AutoProvideService + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

AutoProvideService

+
@Target(allowedTargets = [AnnotationTarget.CLASS])
annotation class AutoProvideService(val inComponent: KClass<*> = SingletonComponent::class)(source)

Marks a Retrofit Service for automatic contribution to your dependency graph.

Simply add this annotation to the API services you want to inject and auto-dagger will generate the necessary modules.

Example:

@AutoProvideService
class ApiService {
@GET("users")
suspend fun getUsers(): List<User>
}

// You'll also need to provide a Retrofit instance to the component you want to inject the service into:
@Module
@InstallIn(SingletonComponent::class)
object RetrofitModule {
@Provides
@Singleton
fun provideRetrofit(): Retrofit = Retrofit.Builder()
.baseUrl("https://api.example.com/")
.addConverterFactory(SomeConverterFactory.create())
.build()
}

Changing the target component

By default, services are installed in the SingletonComponent. If you'd like to change this you can do so by specifying the inComponent parameter:

@AutoProvideService(inComponent = SomeOtherComponent::class)
class ApiService {}

Qualifiers

If you have multiple retrofit instances and use qualifiers to differentiate them, you can specify the qualifier on the service:

@AutoProvideService
@Named("api1")
class ApiService {}

Making the service scoped or reusable

By default, provided service is unscoped and will be created every time it is injected. Retrofit caches the parsing of services so this is not an expensive operation, but it injected frequently you can avoid this by annotating your service with a scope or @Reusable:

@Singleton // This must match the `inComponent` parameter of @AutoProvideService
@AutoProvideService
class ApiService {
// Service methods
}

// Or if you want to just make it reusable
@Reusable
@AutoProvideService
class ApiService {
// Service methods
}

Since

1.0.0

Parameters

inComponent

The component to install the service in. Defaults to SingletonComponent.

+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+ +
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/dokka/third-party/retrofit/se.ansman.dagger.auto.retrofit/index.html b/dokka/third-party/retrofit/se.ansman.dagger.auto.retrofit/index.html new file mode 100644 index 000000000..2c8935d6d --- /dev/null +++ b/dokka/third-party/retrofit/se.ansman.dagger.auto.retrofit/index.html @@ -0,0 +1,104 @@ + + + + + se.ansman.dagger.auto.retrofit + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+ +
+

Package-level declarations

+
+
+
+
+
+

Types

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
@Target(allowedTargets = [AnnotationTarget.CLASS])
annotation class AutoProvideService(val inComponent: KClass<*> = SingletonComponent::class)

Marks a Retrofit Service for automatic contribution to your dependency graph.

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/dokka/version.json b/dokka/version.json index 66b33cfc3..b7690d36a 100644 --- a/dokka/version.json +++ b/dokka/version.json @@ -1 +1 @@ -{"version":"1.0.0"} \ No newline at end of file +{"version":"1.1.0"} \ No newline at end of file diff --git a/latest/404.html b/latest/404.html index 60e8af246..bdbc134d8 100644 --- a/latest/404.html +++ b/latest/404.html @@ -1 +1 @@ - Auto Dagger
\ No newline at end of file + Auto Dagger
\ No newline at end of file diff --git a/latest/_data/gradle.yml b/latest/_data/gradle.yml index 10e95e8ed..28c49ff06 100644 --- a/latest/_data/gradle.yml +++ b/latest/_data/gradle.yml @@ -1,4 +1,4 @@ -version: 1.0.0 -daggerVersion: 2.50 -snapshotVersion: 1.1.0-SNAPSHOT +version: 1.1.0 +daggerVersion: 2.51.1 +snapshotVersion: 1.2.0-SNAPSHOT dokkaLink: /dokka/ diff --git a/latest/about/how-it-works/index.html b/latest/about/how-it-works/index.html index a9c9aee52..0af4d36fd 100644 --- a/latest/about/how-it-works/index.html +++ b/latest/about/how-it-works/index.html @@ -1,4 +1,4 @@ - How It Works - Auto Dagger

How it works

@AutoBind

When you annotate an object with @AutoBind, Auto Dagger will generate a component which is installed into the inferred (or explicitly provided) component using Hilt.

Given this class:

interface Repository
+ How It Works - Auto Dagger       

How it works

@AutoBind

When you annotate an object with @AutoBind, Auto Dagger will generate a component which is installed into the inferred (or explicitly provided) component using Hilt.

Given this class:

interface Repository
 
 @AutoBind
 @Singleton
diff --git a/latest/about/license/index.html b/latest/about/license/index.html
index 44abd6f25..b27918b49 100644
--- a/latest/about/license/index.html
+++ b/latest/about/license/index.html
@@ -1,4 +1,4 @@
- License - Auto Dagger       

License

Copyright 2022-2023 Nicklas Ansman Giertz
+ License - Auto Dagger       

License

Copyright 2022-2023 Nicklas Ansman Giertz
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
diff --git a/latest/getting-started/index.html b/latest/getting-started/index.html
index ffc369d61..8416c3a2f 100644
--- a/latest/getting-started/index.html
+++ b/latest/getting-started/index.html
@@ -1,4 +1,4 @@
- Getting Started - Auto Dagger       

Getting Started

Installation

Maven Central

Android Modules

For pure Kotlin modules you need to add KAPT or KSP, the auto-dagger android dependency, the auto-dagger compiler as well as the hilt dependencies:

plugins {
+ Getting Started - Auto Dagger       

Getting Started

Installation

Maven Central

Android Modules

For pure Kotlin modules you need to add KAPT or KSP, the auto-dagger android dependency, the auto-dagger compiler as well as the hilt dependencies:

plugins {
     kotlin("kapt") // For Groovy build scripts use id('kotlin-kapt')
     // of you use KSP:
     id("com.google.devtools.ksp")
@@ -7,22 +7,22 @@
 }
 
 dependencies {
-    implementation("se.ansman.dagger.auto:android:1.0.0")
-    kapt("se.ansman.dagger.auto:compiler:1.0.0")
+    implementation("se.ansman.dagger.auto:android:1.1.0")
+    kapt("se.ansman.dagger.auto:compiler:1.1.0")
     // or if you use KSP
-    ksp("se.ansman.dagger.auto:compiler:1.0.0")
+    ksp("se.ansman.dagger.auto:compiler:1.1.0")
 
     // Add these if you want to replace objects during tests
-    testImplementation("se.ansman.dagger.auto:android-testing:1.0.0")
-    kaptTest("se.ansman.dagger.auto:compiler:1.0.0")
+    testImplementation("se.ansman.dagger.auto:android-testing:1.1.0")
+    kaptTest("se.ansman.dagger.auto:compiler:1.1.0")
     // or if you use KSP
-    kspTest("se.ansman.dagger.auto:compiler:1.0.0")
+    kspTest("se.ansman.dagger.auto:compiler:1.1.0")
 
     // If you haven't already you need to add the Dagger dependencies
-    implementation("com.google.dagger:hilt-android:2.5")
-    kapt("com.google.dagger:hilt-android-compiler:2.5")
+    implementation("com.google.dagger:hilt-android:2.51.1")
+    kapt("com.google.dagger:hilt-android-compiler:2.51.1")
     // or if you use KSP
-    ksp("se.ansman.dagger.auto:compiler:1.0.0")
+    ksp("se.ansman.dagger.auto:compiler:1.1.0")
 }
 

Kotlin Modules

For pure Kotlin modules you need to add KAPT, the auto-dagger core dependency, the auto-dagger compiler as well as the hilt dependencies:

plugins {
     kotlin("kapt") // For Groovy build scripts use id('kotlin-kapt')
@@ -31,16 +31,16 @@
 }
 
 dependencies {
-    implementation("se.ansman.dagger.auto:core:1.0.0")
-    kapt("se.ansman.dagger.auto:compiler:1.0.0")
+    implementation("se.ansman.dagger.auto:core:1.1.0")
+    kapt("se.ansman.dagger.auto:compiler:1.1.0")
     // or if you use KSP
-    ksp("se.ansman.dagger.auto:compiler:1.0.0")
+    ksp("se.ansman.dagger.auto:compiler:1.1.0")
 
     // If you haven't already you need to add the Dagger dependencies
-    implementation("com.google.dagger:hilt-core:2.5")
-    kapt("com.google.dagger:hilt-compiler:2.5")
+    implementation("com.google.dagger:hilt-core:2.51.1")
+    kapt("com.google.dagger:hilt-compiler:2.51.1")
     // or if you use KSP
-    ksp("com.google.dagger:hilt-compiler:2.5")
+    ksp("com.google.dagger:hilt-compiler:2.51.1")
 }
 

Snapshots

Snapshots are published on every commit to Sonatype's snapshot repository. To use a snapshot add the snapshot repository:

buildscripts {
     repositories {
@@ -50,9 +50,9 @@
 }
 
 dependencies {
-    implementation("se.ansman.dagger.auto:android:1.1.0-SNAPSHOT")
-    kapt("se.ansman.dagger.auto:compiler:1.1.0-SNAPSHOT")
+    implementation("se.ansman.dagger.auto:android:1.2.0-SNAPSHOT")
+    kapt("se.ansman.dagger.auto:compiler:1.2.0-SNAPSHOT")
     // or if you use KSP
-    ksp("se.ansman.dagger.auto:compiler:1.1.0-SNAPSHOT")
+    ksp("se.ansman.dagger.auto:compiler:1.2.0-SNAPSHOT")
 }
 

\ No newline at end of file diff --git a/latest/index.html b/latest/index.html index af00e64d0..2a9533c14 100644 --- a/latest/index.html +++ b/latest/index.html @@ -1,4 +1,4 @@ - Auto Dagger

Auto Dagger

Auto Dagger allows you to automate some Dagger setup using Hilt.

For example you can use the @AutoInitialize annotation to automatically initialize objects during app launch and you can use the @AutoBind annotation to automatically bind objects.

Automatic initialization is done using AndroidX Startup.

There's also integrations with popular third party libraries such as AndroidX and Retrofit.

You can find the project on GitHub in the ansman/auto-dagger repo.

If you're looking javadoc/dokka you can find it here here.

To get set up see getting started.

Examples

@AutoBind

interface Repository
+ Auto Dagger       

Auto Dagger

Auto Dagger allows you to automate some Dagger setup using Hilt.

For example you can use the @AutoInitialize annotation to automatically initialize objects during app launch and you can use the @AutoBind annotation to automatically bind objects.

Automatic initialization is done using AndroidX Startup.

There's also integrations with popular third party libraries such as AndroidX and Retrofit.

You can find the project on GitHub in the ansman/auto-dagger repo.

If you're looking javadoc/dokka you can find it here here.

To get set up see getting started.

Examples

@AutoBind

interface Repository
 
 @AutoBind
 @Singleton
diff --git a/latest/integrations/androidx/room/index.html b/latest/integrations/androidx/room/index.html
index e6e5eb3c1..101c9d5ea 100644
--- a/latest/integrations/androidx/room/index.html
+++ b/latest/integrations/androidx/room/index.html
@@ -1,8 +1,8 @@
- Room - Auto Dagger       

Integration with AndroidX Room

If you use AndroidX Room in your project, Auto Dagger can automatically provides some utilities for working with databases.

To get started, add the dependency:

dependencies {
-    implementation("se.ansman.dagger.auto:androidx-room:1.0.0")
-    kapt("se.ansman.dagger.auto:compiler:1.0.0")
+ Room - Auto Dagger       

Integration with AndroidX Room

If you use AndroidX Room in your project, Auto Dagger can automatically provides some utilities for working with databases.

To get started, add the dependency:

dependencies {
+    implementation("se.ansman.dagger.auto:androidx-room:1.1.0")
+    kapt("se.ansman.dagger.auto:compiler:1.1.0")
     // or if you use KSP
-    ksp("se.ansman.dagger.auto:compiler:1.0.0")
+    ksp("se.ansman.dagger.auto:compiler:1.1.0")
 }
 

Automatically providing DAOs

You can annotate your RoomDatabase with @AutoProvideDaos to automatically provide all DAOs in the database:

@Database(entities = [User::class], version = 1)
 @AutoProvideDaos
diff --git a/latest/integrations/androidx/viewmodel/index.html b/latest/integrations/androidx/viewmodel/index.html
index 7bd768f7c..82964ea18 100644
--- a/latest/integrations/androidx/viewmodel/index.html
+++ b/latest/integrations/androidx/viewmodel/index.html
@@ -1,5 +1,5 @@
- ViewModel - Auto Dagger       

Integration with AndroidX ViewModel

If you use AndroidX ViewModel in your project, Auto Dagger can automatically provides some utilities for working with view models.

To get started, add the dependency:

dependencies {
-    implementation("se.ansman.dagger.auto:androidx-viewmodel:1.0.0")
+ ViewModel - Auto Dagger       

Integration with AndroidX ViewModel

If you use AndroidX ViewModel in your project, Auto Dagger can automatically provides some utilities for working with view models.

To get started, add the dependency:

dependencies {
+    implementation("se.ansman.dagger.auto:androidx-viewmodel:1.1.0")
 }
 

CoroutineScope

If you use Kotlin Coroutines, you can inject a CoroutineScope into your view models. This allows you to use a test scope when testing your view models.

The scope has the ViewModelSpecific qualifier and uses a SupervisorJob and the Dispatchers.Main.immediate dispatcher.

Usage:

@HiltViewModel
 class MyViewModel @Inject constructor(
diff --git a/latest/integrations/ktorfit/index.html b/latest/integrations/ktorfit/index.html
new file mode 100644
index 000000000..102a0fb3b
--- /dev/null
+++ b/latest/integrations/ktorfit/index.html
@@ -0,0 +1,43 @@
+ Ktorfit - Auto Dagger       

Integration with Ktorfit

If you use Ktorfit to define your API services, you can use the @AutoProvideService to automatically contribute your services to the Dagger graph.

Firstly add the required dependency:

dependencies {
+    implementation("se.ansman.dagger.auto:ktorfit:1.1.0")
+    kapt("se.ansman.dagger.auto:compiler:1.1.0")
+    // or if you use KSP
+    ksp("se.ansman.dagger.auto:compiler:1.1.0")
+}
+

Then annotate your service with @AutoProvideService:

@AutoProvideService
+class ApiService {
+  @GET("users")
+  suspend fun getUsers(): List<User>
+}
+

You'll also need to provide a Ktorfit instance to the component you want to inject the service into:

@Module
+@InstallIn(SingletonComponent::class)
+object KtorfitModule {
+  @Provides
+  @Singleton
+  fun provideKtorfit(): Ktorfit = Ktorfit.Builder()
+      // Perform any setup you need
+      .baseUrl("https://api.example.com/")
+      .build()
+}
+

Changing the target component

By default, services are installed in the SingletonComponent. If you'd like to change this you can do so by specifying the inComponent parameter:

@AutoProvideService(inComponent = SomeOtherComponent::class)
+class ApiService {
+    // Service methods
+}
+

Qualifiers

If you have multiple ktorfit instances and use qualifiers to differentiate them, you can specify the qualifier on the service:

@AutoProvideService
+@Named("api1")
+class ApiService {
+    // Service methods
+}
+

Making the service scoped or reusable

If you'd like to cache/reuse the service instances you can annotate the service with a scope or @Reusable:

@Singleton // This must match the `inComponent` parameter of @AutoProvideService
+@AutoProvideService
+class ApiService {
+    // Service methods
+}
+
+// Or if you want to make it reusable
+@Reusable
+@AutoProvideService
+class ApiService {
+    // Service methods
+}
+

\ No newline at end of file diff --git a/latest/integrations/retrofit/index.html b/latest/integrations/retrofit/index.html index 9028a6ee5..8ba472a04 100644 --- a/latest/integrations/retrofit/index.html +++ b/latest/integrations/retrofit/index.html @@ -1,8 +1,8 @@ - Retrofit - Auto Dagger

Integration with Retrofit

If you use Retrofit to define your API services, you can use the @AutoProvideService to automatically contribute your services to the Dagger graph.

Firstly add the required dependency:

dependencies {
-    implementation("se.ansman.dagger.auto:retrofit:1.0.0")
-    kapt("se.ansman.dagger.auto:compiler:1.0.0")
+ Retrofit - Auto Dagger       

Integration with Retrofit

If you use Retrofit to define your API services, you can use the @AutoProvideService to automatically contribute your services to the Dagger graph.

Firstly add the required dependency:

dependencies {
+    implementation("se.ansman.dagger.auto:retrofit:1.1.0")
+    kapt("se.ansman.dagger.auto:compiler:1.1.0")
     // or if you use KSP
-    ksp("se.ansman.dagger.auto:compiler:1.0.0")
+    ksp("se.ansman.dagger.auto:compiler:1.1.0")
 }
 

Then annotate your service with @AutoProvideService:

@AutoProvideService
 class ApiService {
diff --git a/latest/limitations/index.html b/latest/limitations/index.html
index ffa34c42a..4580bee46 100644
--- a/latest/limitations/index.html
+++ b/latest/limitations/index.html
@@ -1,4 +1,4 @@
- Limitations - Auto Dagger       

Limitations

@AutoInitializable objects must be @Singleton scoped

For now, all initializable objects must be @Singleton scoped.

This is because the semantics are unclear if an objects are not scoped since AutoDaggerInitializable is not scoped so creating multiple instances of AutoDaggerInitializable would created multiple instances of unscoped objects which might be unexpected.

This limitation might be lifted in the future. If you have a use case for unscoped objects please file an issue.

@AutoBind objects must not be generic

Since Auto Dagger cannot determine actual type arguments, generic objects cannot be automatically bound.

@AutoBind only supports direct supertypes

You can only bind objects to their direct supertypes. For example this isn't supported:

interface Closeable
+ Limitations - Auto Dagger       

Limitations

@AutoInitializable objects must be @Singleton scoped

For now, all initializable objects must be @Singleton scoped.

This is because the semantics are unclear if an objects are not scoped since AutoDaggerInitializable is not scoped so creating multiple instances of AutoDaggerInitializable would created multiple instances of unscoped objects which might be unexpected.

This limitation might be lifted in the future. If you have a use case for unscoped objects please file an issue.

@AutoBind objects must not be generic

Since Auto Dagger cannot determine actual type arguments, generic objects cannot be automatically bound.

@AutoBind only supports direct supertypes

You can only bind objects to their direct supertypes. For example this isn't supported:

interface Closeable
 
 interface Repository : Closeable
 
diff --git a/latest/search/search_index.json b/latest/search/search_index.json
index 79327be7f..69a3c7726 100644
--- a/latest/search/search_index.json
+++ b/latest/search/search_index.json
@@ -1 +1 @@
-{"config":{"lang":["en"],"separator":"[\\s\\u200b\\-_,:!=\\[\\]()\"`/]+|\\.(?!\\d)|&[lg]t;|(?!\\b)(?=[A-Z][a-z])","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Auto Dagger","text":"

Auto Dagger allows you to automate some Dagger setup using Hilt.

For example you can use the @AutoInitialize annotation to automatically initialize objects during app launch and you can use the @AutoBind annotation to automatically bind objects.

Automatic initialization is done using AndroidX Startup.

There's also integrations with popular third party libraries such as AndroidX and Retrofit.

You can find the project on GitHub in the ansman/auto-dagger repo.

If you're looking javadoc/dokka you can find it here here.

To get set up see getting started.

"},{"location":"#examples","title":"Examples","text":""},{"location":"#autobind","title":"@AutoBind","text":"
interface Repository\n@AutoBind\n@Singleton\nclass RealRepository @Inject constructor() : Repository\n

For more detailed documentation see the @AutoBind usage.

"},{"location":"#autoinitialize","title":"@AutoInitialize","text":"
@AutoInitialize\n@Singleton\nclass SomeRepository @Inject constructor() {\ninit {\n// This will be executed at application startup, even if nobody injects it.\n}\n}\n

For more detailed documentation see the @AutoInitialize usage.

"},{"location":"getting-started/","title":"Getting Started","text":""},{"location":"getting-started/#installation","title":"Installation","text":""},{"location":"getting-started/#android-modules","title":"Android Modules","text":"

For pure Kotlin modules you need to add KAPT or KSP, the auto-dagger android dependency, the auto-dagger compiler as well as the hilt dependencies:

plugins {\nkotlin(\"kapt\") // For Groovy build scripts use id('kotlin-kapt')\n// of you use KSP:\nid(\"com.google.devtools.ksp\")\nid(\"com.google.dagger.hilt.android\") // Optional, but recommended\n}\ndependencies {\nimplementation(\"se.ansman.dagger.auto:android:1.0.0\")\nkapt(\"se.ansman.dagger.auto:compiler:1.0.0\")\n// or if you use KSP\nksp(\"se.ansman.dagger.auto:compiler:1.0.0\")\n// Add these if you want to replace objects during tests\ntestImplementation(\"se.ansman.dagger.auto:android-testing:1.0.0\")\nkaptTest(\"se.ansman.dagger.auto:compiler:1.0.0\")\n// or if you use KSP\nkspTest(\"se.ansman.dagger.auto:compiler:1.0.0\")\n// If you haven't already you need to add the Dagger dependencies\nimplementation(\"com.google.dagger:hilt-android:2.5\")\nkapt(\"com.google.dagger:hilt-android-compiler:2.5\")\n// or if you use KSP\nksp(\"se.ansman.dagger.auto:compiler:1.0.0\")\n}\n

"},{"location":"getting-started/#kotlin-modules","title":"Kotlin Modules","text":"

For pure Kotlin modules you need to add KAPT, the auto-dagger core dependency, the auto-dagger compiler as well as the hilt dependencies:

plugins {\nkotlin(\"kapt\") // For Groovy build scripts use id('kotlin-kapt')\n// of you use KSP:\nid(\"com.google.devtools.ksp\")\n}\ndependencies {\nimplementation(\"se.ansman.dagger.auto:core:1.0.0\")\nkapt(\"se.ansman.dagger.auto:compiler:1.0.0\")\n// or if you use KSP\nksp(\"se.ansman.dagger.auto:compiler:1.0.0\")\n// If you haven't already you need to add the Dagger dependencies\nimplementation(\"com.google.dagger:hilt-core:2.5\")\nkapt(\"com.google.dagger:hilt-compiler:2.5\")\n// or if you use KSP\nksp(\"com.google.dagger:hilt-compiler:2.5\")\n}\n

"},{"location":"getting-started/#snapshots","title":"Snapshots","text":"

Snapshots are published on every commit to Sonatype's snapshot repository. To use a snapshot add the snapshot repository:

buildscripts {\nrepositories {\n...\nmaven(\"https://s01.oss.sonatype.org/content/repositories/snapshots/\")\n}\n}\ndependencies {\nimplementation(\"se.ansman.dagger.auto:android:1.1.0-SNAPSHOT\")\nkapt(\"se.ansman.dagger.auto:compiler:1.1.0-SNAPSHOT\")\n// or if you use KSP\nksp(\"se.ansman.dagger.auto:compiler:1.1.0-SNAPSHOT\")\n}\n

"},{"location":"limitations/","title":"Limitations","text":""},{"location":"limitations/#autoinitializable-objects-must-be-singleton-scoped","title":"@AutoInitializable objects must be @Singleton scoped","text":"

For now, all initializable objects must be @Singleton scoped.

This is because the semantics are unclear if an objects are not scoped since AutoDaggerInitializable is not scoped so creating multiple instances of AutoDaggerInitializable would created multiple instances of unscoped objects which might be unexpected.

This limitation might be lifted in the future. If you have a use case for unscoped objects please file an issue.

"},{"location":"limitations/#autobind-objects-must-not-be-generic","title":"@AutoBind objects must not be generic","text":"

Since Auto Dagger cannot determine actual type arguments, generic objects cannot be automatically bound.

"},{"location":"limitations/#autobind-only-supports-direct-supertypes","title":"@AutoBind only supports direct supertypes","text":"

You can only bind objects to their direct supertypes. For example this isn't supported:

interface Closeable\ninterface Repository : Closeable\n// This won't work because `RealRepository` doesn't \n// directly implement `Closeable`\n@AutoBindIntoSet(asTypes = [Closeable::class])\n@Singleton\nclass RealRepository @Inject constructor() : Repository\n

To solve this just add an explicit supertype:

@AutoBindIntoSet(asTypes = [Closeable::class])\n@Singleton\nclass RealRepository @Inject constructor() : Repository, Closeable\n

"},{"location":"about/how-it-works/","title":"How it works","text":""},{"location":"about/how-it-works/#autobind","title":"@AutoBind","text":"

When you annotate an object with @AutoBind, Auto Dagger will generate a component which is installed into the inferred (or explicitly provided) component using Hilt.

Given this class:

interface Repository\n@AutoBind\n@Singleton\nclass RealRepository @Inject constructor() : Repository\n

Auto Dagger will generate this module:

@Module\n@InstallIn(SingletonComponent.class)\n@OriginatingElement(topLevelClass = RealRepository.class)\npublic abstract class AutoBindRealRepositorySingletonModule {\nprivate AutoBindRealRepositorySingletonModule() {}\n@Binds\npublic abstract Repository bindRealRepositoryAsRepository(RealRepository realRepository);\n}\n

"},{"location":"about/how-it-works/#autoinitialize","title":"@AutoInitialize","text":"

When you annotate an object, binding or provider with @AutoInitialize, Auto Dagger will generate a module which is installed into the SingletonComponent using Hilt.

Given this class:

@AutoInitialize\n@Singleton\nclass Repository @Inject constructor()\n

Auto Dagger will generate this module:

@Module\n@InstallIn(SingletonComponent.class)\n@OriginatingElement(topLevelClass = Repository.class)\npublic final class AutoInitializeRepositoryModule {\nprivate AutoInitializeRepositoryModule() {}\n@Provides\n@IntoSet\npublic static Initializable provideRepositoryAsInitializable(Lazy<Repository> lazyRepository) {\nreturn Initializable.fromLazy(lazyRepository);\n}\n}\n

"},{"location":"about/how-it-works/#autodaggerinitializable","title":"AutoDaggerInitializable","text":"

AutoDaggerInitializable is the container for all Initializable that should be initialized at startup. It's provided into the @Singleton component, and accepts a set of all the initializables.

Calling AutoDaggerInitializable.initialize calls initialize on each object in turn.

Any exceptions are rethrown, but only after all objects have been initialized. If multiple objects throw, then subsequent exceptions are added as suppressed exceptions.

"},{"location":"about/how-it-works/#autodaggerstartupinitializer","title":"AutoDaggerStartupInitializer","text":"

AutoDaggerStartupInitializer is the AndroidX Startup initializer that performs the initialization at startup.

"},{"location":"about/license/","title":"License","text":"
Copyright 2022-2023 Nicklas Ansman Giertz\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n

You can find the full license at ansman/auto-dagger.

"},{"location":"integrations/retrofit/","title":"Integration with Retrofit","text":"

If you use Retrofit to define your API services, you can use the @AutoProvideService to automatically contribute your services to the Dagger graph.

Firstly add the required dependency:

dependencies {\nimplementation(\"se.ansman.dagger.auto:retrofit:1.0.0\")\nkapt(\"se.ansman.dagger.auto:compiler:1.0.0\")\n// or if you use KSP\nksp(\"se.ansman.dagger.auto:compiler:1.0.0\")\n}\n

Then annotate your service with @AutoProvideService:

@AutoProvideService\nclass ApiService {\n@GET(\"users\")\nsuspend fun getUsers(): List<User>\n}\n

You'll also need to provide a Retrofit instance to the component you want to inject the service into:

@Module\n@InstallIn(SingletonComponent::class)\nobject RetrofitModule {\n@Provides\n@Singleton\nfun provideRetrofit(): Retrofit = Retrofit.Builder()\n// Perform any setup you need\n.baseUrl(\"https://api.example.com/\")\n.addConverterFactory(SomeConverterFactory.create())\n.build()\n}\n

"},{"location":"integrations/retrofit/#changing-the-target-component","title":"Changing the target component","text":"

By default, services are installed in the SingletonComponent. If you'd like to change this you can do so by specifying the inComponent parameter:

@AutoProvideService(inComponent = SomeOtherComponent::class)\nclass ApiService {\n// Service methods\n}\n

"},{"location":"integrations/retrofit/#qualifiers","title":"Qualifiers","text":"

If you have multiple retrofit instances and use qualifiers to differentiate them, you can specify the qualifier on the service:

@AutoProvideService\n@Named(\"api1\")\nclass ApiService {\n// Service methods\n}\n

"},{"location":"integrations/retrofit/#making-the-service-scoped-or-reusable","title":"Making the service scoped or reusable","text":"

By default, provided service is unscoped and will be created every time it is injected. Retrofit caches the parsing of services so this is not an expensive operation, but it injected frequently you can avoid this by annotating your service with a scope or @Reusable:

@Singleton // This must match the `inComponent` parameter of @AutoProvideService\n@AutoProvideService\nclass ApiService {\n// Service methods\n}\n// Or if you want to make it reusable\n@Reusable\n@AutoProvideService\nclass ApiService {\n// Service methods\n}\n

"},{"location":"integrations/androidx/room/","title":"Integration with AndroidX Room","text":"

If you use AndroidX Room in your project, Auto Dagger can automatically provides some utilities for working with databases.

To get started, add the dependency:

dependencies {\nimplementation(\"se.ansman.dagger.auto:androidx-room:1.0.0\")\nkapt(\"se.ansman.dagger.auto:compiler:1.0.0\")\n// or if you use KSP\nksp(\"se.ansman.dagger.auto:compiler:1.0.0\")\n}\n

"},{"location":"integrations/androidx/room/#automatically-providing-daos","title":"Automatically providing DAOs","text":"

You can annotate your RoomDatabase with @AutoProvideDaos to automatically provide all DAOs in the database:

@Database(entities = [User::class], version = 1)\n@AutoProvideDaos\nabstract class AppDatabase : RoomDatabase() {\nabstract val users: UserDao\n}\n

Now you can inject UserDao directly.

By default, the DAOs will be provided in the SingletonComponent. If you want to change the component you can use the inComponent parameter:

@Database(entities = [User::class], version = 1)\n@AutoProvideDaos(inComponent = SomeOtherComponent::class)\nabstract class AppDatabase : RoomDatabase() {\nabstract val users: UserDao\n}\n

For now, the database must directly extend RoomDatabase. Having it as an indirect superclass is not supported. If you need support for this open a feature request and detail your use case.

"},{"location":"integrations/androidx/viewmodel/","title":"Integration with AndroidX ViewModel","text":"

If you use AndroidX ViewModel in your project, Auto Dagger can automatically provides some utilities for working with view models.

To get started, add the dependency:

dependencies {\nimplementation(\"se.ansman.dagger.auto:androidx-viewmodel:1.0.0\")\n}\n

"},{"location":"integrations/androidx/viewmodel/#coroutinescope","title":"CoroutineScope","text":"

If you use Kotlin Coroutines, you can inject a CoroutineScope into your view models. This allows you to use a test scope when testing your view models.

The scope has the ViewModelSpecific qualifier and uses a SupervisorJob and the Dispatchers.Main.immediate dispatcher.

Usage:

@HiltViewModel\nclass MyViewModel @Inject constructor(\n@ViewModelSpecific\nprivate val viewModelScope: CoroutineScope\n) : ViewModel()\n

"},{"location":"integrations/androidx/viewmodel/#viewmodelspecific","title":"ViewModelSpecific","text":"

ViewModelSpecific is a qualifier annotation that can be used to inject objects that are specific to a view model, but might otherwise be added to your graph such as CoroutineScope.

"},{"location":"usage/auto-bind/","title":"@AutoBind Usage","text":"

To bind objects automatically you just need to annotate a class with the @AutoBind annotation (or @AutoBindIntoSet for binding into a set and @AutoBindIntoMap for binding into a map).

interface Repository\n@AutoBind\n@Singleton\nclass RealRepository @Inject constructor() : Repository\n// Generates the equivalent to:\n@Binds\nabstract fun RealRepository.bindRealRepositoryAsRepository(): Repository\n
"},{"location":"usage/auto-bind/#multibindings","title":"Multibindings","text":"

If you need to bind a object into a set or map you can use @AutoBindIntoSet or @AutoBindIntoMap respectively.

// Binds ExternalResource as Closeable using @IntoSet\n@AutoBindIntoSet\n// Binds ExternalResource as Closeable using @IntoMap with\n// `StringKey` as the map key\n@AutoBindIntoMap\n@StringKey(\"ExternalResourceCloseable\")\n@Singleton\nclass ExternalResource @Inject constructor() : Closeable {\noverride fun close() {}\n}\n// Generates the equivalent to:\n@Binds\n@IntoSet\nabstract fun ExternalResource.bindExternalResourceAsCloseableIntoSet(): Closeable\n@Binds\n@IntoMap\n@StringKey(\"ExternalResourceCloseable\")\nabstract fun ExternalResource.bindExternalResourceAsCloseableIntoMap(): Closeable\n
"},{"location":"usage/auto-bind/#component","title":"Component","text":"

AutoDagger will try to infer the component to install the binding in using the scope. The following mapping is used:

Scope Component No scope SingletonComponent Singleton SingletonComponent Reusable SingletonComponent ActivityRetainedScoped ActivityRetainedComponent ActivityScoped ActivityComponent FragmentScoped FragmentComponent ServiceScoped ServiceComponent ViewScoped ViewComponent ViewModelScoped ViewModelComponent ViewWithFragmentScoped ViewWithFragmentComponent

If you are are using custom scopes or want to change which component the binding is installed in, you can use the inComponent property:

@AutoBind(inComponent = SomeComponent::class)\nclass ExternalResource @Inject constructor() : Closeable {\noverride fun close() {}\n}\n

"},{"location":"usage/auto-bind/#binding-multiple-types","title":"Binding multiple types","text":"

If your object has multiple direct supertypes, you need to specify which ones to bind explicitly using the asTypes parameter:

@AutoBind(asTypes = [Closeable::class])\nclass ExternalResource @Inject constructor() : Runnable, Closeable {\noverride fun run() {}\noverride fun close() {}\n}\n

You can bind multiple types, but only direct supertypes can be bound (see limitations).

"},{"location":"usage/auto-bind/#objects","title":"Objects","text":"

Normally the bound object needs to be provided to the dependency graph using either an @Provides annotated method or using an @Inject annotated constructor.

Auto Dagger allows you to annotate a Kotlin object with @AutoBind without it being provided in the graph. This is especially useful for tests:

@AutoBind\nobject DirectExecutor : Executor {\noverride fun execute(command: Runnable) {\ncommand.run()\n}\n}\n

"},{"location":"usage/auto-bind/#generics","title":"Generics","text":"

When using multibindings, it's often useful to be able to bind generic types as wildcard.

Auto Dagger will, by default, bind the exact type of the supertype. But using the bindGenericAs parameter you can chose to bind it as a wildcard instead.

For types you own, it's sometimes useful to specify a different default for bindGenericAs. For example, say you have a Resource<T> interface. You probably want to always bind this using wildcards since every resource will have a unique type for T. So you can annotate Resource with @BindGenericAs.Default(BindGenericAs.Wildcard) to indicate that, unless specified explicitly, it should be bound as Resource<*>.

// This will bind StringCallable as Callable<*>\n@AutoBindIntoSet(bindGenericAs = BindGenericAs.Wildcard)\nclass StringCallable @Inject constructor() : Callable<String> {\noverride fun call(): String = \"\"\n}\n// For types you own you can specify @BindGenericAs.Default to change the default.\n@BindGenericAs.Default(BindGenericAs.Wildcard)\ninterface Resource<T>\n// This will be bound as Resource<*> since the default has been set to wildcard for Resource.\n@AutoBindIntoSet\nclass SomeResource @Inject constructor() : Resource<Something>\n

There are 3 options for bindGenericAs:

  • Type - Binds the object to the exact supertype (Callable<String> in the example above). This is the default unless set with @BindGenericAs.Default.
  • Wildcard - Binds the object using wildcards (Callable<*> in the example above).
  • TypeAndWildcard - Binds the object as both the exact type and using wildcards.
"},{"location":"usage/auto-initialize/","title":"@AutoInitialize Usage","text":"

Simply annotate any @Singleton scoped object, provider or binding with @AutoInitialize to make it be automatically initialized when your application launches.

@AutoInitialize\n@Singleton\nclass SomeRepository @Inject constructor() {\ninit {\n// This will be executed at application startup, even if nobody injects it.\n}\n}\n
"},{"location":"usage/auto-initialize/#initializable","title":"Initializable","text":"

It's often considered bad practice to have side effects in a constructor/initializer block. If this is a concern, your object can implement the Initializable interface. Auto Dagger will then call initialize when it's time to initialize.

@AutoInitialize\n@Singleton\nclass SomeRepository @Inject constructor() : Initializable {\noverride fun initialize() {\n// This will be executed at application startup, even if nobody injects it.\n}\n}\n
"},{"location":"usage/auto-initialize/#priority","title":"Priority","text":"

By default objects are initialized in an undefined order. This can be changed by setting a priority.

Objects are initialized in descending priority with the default priority being 1. Setting the priority to 0 or below makes the object be initialized after objects with the default priority and setting the priority to 2 or above initializes it before.

@AutoInitialize(priority = 4711)\n@Singleton\nclass ImportantRepository @Inject constructor() {\noverride fun initialize() {\n// This will be called earlier than objects without a priority\n}\n}\n
"},{"location":"usage/auto-initialize/#androidx-startup","title":"AndroidX Startup","text":"

Auto Dagger uses AndroidX Startup to initialize objects at startup.

If you prefer to not use this you can just depend on the core artifact which won't pull in AndroidX Startup.

To initialize the objects manually, use AutoDaggerInitializer.

@HiltAndroidApp\nclass TheApp : Application() {\n@Inject\nlateinit var initializer: AutoDaggerInitializer\noverride fun onCreate() {\nsuper.onCreate()\ninitializer.initialize()\n}\n}\n
"},{"location":"usage/replaces/","title":"@Replaces Usage","text":"

During tests it's often useful to swap out real dependencies for fake dependencies. If you're using @AutoBind to bind your dependencies then it's trivial to swap out dependencies during tests using the @Replaces annotation:

interface Repository\n@AutoBind\n@Singleton\nclass RealRepository @Inject constructor() : Repository\n// In your test source set\n@Replaces(RealRepository::class)\n@Singleton\nclass FakeRepository @Inject constructor() : Repository\n

To use @Replaces there are some requirements:

  • The replacement must implement the types bound the target.
  • The replacement target must be annotated with @AutoBind.
  • The replacement must not be annotated with @AutoBind, @AutoBindIntoSet, @AutoBindIntoMap, or @AutoInitialize.
"},{"location":"usage/replaces/#multibindings","title":"Multibindings","text":"

If the replaced type uses multibindings (@AutoBindIntoSet or @AutoBindIntoMap) then those are only replaced if the annotated type also implements them. Otherwise the multibinding is removed.

So for example. If the target type uses @AutoBindIntoSet to bind it as a Closeable but your replacement doesn't implement Closeable then that binding is removed. If it does implement Closeable then the binding is replaced with the fake binding.

"},{"location":"usage/replaces/#auto-initialize","title":"Auto Initialize","text":"

If the target type is annotated with @AutoInitialize, then an empty module will be generated to replace the auto initialize module, effectively removing it.

"},{"location":"usage/replaces/#objects","title":"Objects","text":"

Normally the replacement object needs to be provided to the dependency graph using either an @Provides annotated method or using an @Inject annotated constructor.

Auto Dagger allows you to annotate a Kotlin object with @Replaces without it being provided in the graph. This is especially useful for tests:

@Replaces(ThreadPoolExecutor::class)\nobject DirectExecutor : Executor {\noverride fun execute(command: Runnable) {\ncommand.run()\n}\n}\n

"}]} \ No newline at end of file +{"config":{"lang":["en"],"separator":"[\\s\\u200b\\-_,:!=\\[\\]()\"`/]+|\\.(?!\\d)|&[lg]t;|(?!\\b)(?=[A-Z][a-z])","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Auto Dagger","text":"

Auto Dagger allows you to automate some Dagger setup using Hilt.

For example you can use the @AutoInitialize annotation to automatically initialize objects during app launch and you can use the @AutoBind annotation to automatically bind objects.

Automatic initialization is done using AndroidX Startup.

There's also integrations with popular third party libraries such as AndroidX and Retrofit.

You can find the project on GitHub in the ansman/auto-dagger repo.

If you're looking javadoc/dokka you can find it here here.

To get set up see getting started.

"},{"location":"#examples","title":"Examples","text":""},{"location":"#autobind","title":"@AutoBind","text":"
interface Repository\n@AutoBind\n@Singleton\nclass RealRepository @Inject constructor() : Repository\n

For more detailed documentation see the @AutoBind usage.

"},{"location":"#autoinitialize","title":"@AutoInitialize","text":"
@AutoInitialize\n@Singleton\nclass SomeRepository @Inject constructor() {\ninit {\n// This will be executed at application startup, even if nobody injects it.\n}\n}\n

For more detailed documentation see the @AutoInitialize usage.

"},{"location":"getting-started/","title":"Getting Started","text":""},{"location":"getting-started/#installation","title":"Installation","text":""},{"location":"getting-started/#android-modules","title":"Android Modules","text":"

For pure Kotlin modules you need to add KAPT or KSP, the auto-dagger android dependency, the auto-dagger compiler as well as the hilt dependencies:

plugins {\nkotlin(\"kapt\") // For Groovy build scripts use id('kotlin-kapt')\n// of you use KSP:\nid(\"com.google.devtools.ksp\")\nid(\"com.google.dagger.hilt.android\") // Optional, but recommended\n}\ndependencies {\nimplementation(\"se.ansman.dagger.auto:android:1.1.0\")\nkapt(\"se.ansman.dagger.auto:compiler:1.1.0\")\n// or if you use KSP\nksp(\"se.ansman.dagger.auto:compiler:1.1.0\")\n// Add these if you want to replace objects during tests\ntestImplementation(\"se.ansman.dagger.auto:android-testing:1.1.0\")\nkaptTest(\"se.ansman.dagger.auto:compiler:1.1.0\")\n// or if you use KSP\nkspTest(\"se.ansman.dagger.auto:compiler:1.1.0\")\n// If you haven't already you need to add the Dagger dependencies\nimplementation(\"com.google.dagger:hilt-android:2.51.1\")\nkapt(\"com.google.dagger:hilt-android-compiler:2.51.1\")\n// or if you use KSP\nksp(\"se.ansman.dagger.auto:compiler:1.1.0\")\n}\n

"},{"location":"getting-started/#kotlin-modules","title":"Kotlin Modules","text":"

For pure Kotlin modules you need to add KAPT, the auto-dagger core dependency, the auto-dagger compiler as well as the hilt dependencies:

plugins {\nkotlin(\"kapt\") // For Groovy build scripts use id('kotlin-kapt')\n// of you use KSP:\nid(\"com.google.devtools.ksp\")\n}\ndependencies {\nimplementation(\"se.ansman.dagger.auto:core:1.1.0\")\nkapt(\"se.ansman.dagger.auto:compiler:1.1.0\")\n// or if you use KSP\nksp(\"se.ansman.dagger.auto:compiler:1.1.0\")\n// If you haven't already you need to add the Dagger dependencies\nimplementation(\"com.google.dagger:hilt-core:2.51.1\")\nkapt(\"com.google.dagger:hilt-compiler:2.51.1\")\n// or if you use KSP\nksp(\"com.google.dagger:hilt-compiler:2.51.1\")\n}\n

"},{"location":"getting-started/#snapshots","title":"Snapshots","text":"

Snapshots are published on every commit to Sonatype's snapshot repository. To use a snapshot add the snapshot repository:

buildscripts {\nrepositories {\n...\nmaven(\"https://s01.oss.sonatype.org/content/repositories/snapshots/\")\n}\n}\ndependencies {\nimplementation(\"se.ansman.dagger.auto:android:1.2.0-SNAPSHOT\")\nkapt(\"se.ansman.dagger.auto:compiler:1.2.0-SNAPSHOT\")\n// or if you use KSP\nksp(\"se.ansman.dagger.auto:compiler:1.2.0-SNAPSHOT\")\n}\n

"},{"location":"limitations/","title":"Limitations","text":""},{"location":"limitations/#autoinitializable-objects-must-be-singleton-scoped","title":"@AutoInitializable objects must be @Singleton scoped","text":"

For now, all initializable objects must be @Singleton scoped.

This is because the semantics are unclear if an objects are not scoped since AutoDaggerInitializable is not scoped so creating multiple instances of AutoDaggerInitializable would created multiple instances of unscoped objects which might be unexpected.

This limitation might be lifted in the future. If you have a use case for unscoped objects please file an issue.

"},{"location":"limitations/#autobind-objects-must-not-be-generic","title":"@AutoBind objects must not be generic","text":"

Since Auto Dagger cannot determine actual type arguments, generic objects cannot be automatically bound.

"},{"location":"limitations/#autobind-only-supports-direct-supertypes","title":"@AutoBind only supports direct supertypes","text":"

You can only bind objects to their direct supertypes. For example this isn't supported:

interface Closeable\ninterface Repository : Closeable\n// This won't work because `RealRepository` doesn't \n// directly implement `Closeable`\n@AutoBindIntoSet(asTypes = [Closeable::class])\n@Singleton\nclass RealRepository @Inject constructor() : Repository\n

To solve this just add an explicit supertype:

@AutoBindIntoSet(asTypes = [Closeable::class])\n@Singleton\nclass RealRepository @Inject constructor() : Repository, Closeable\n

"},{"location":"about/how-it-works/","title":"How it works","text":""},{"location":"about/how-it-works/#autobind","title":"@AutoBind","text":"

When you annotate an object with @AutoBind, Auto Dagger will generate a component which is installed into the inferred (or explicitly provided) component using Hilt.

Given this class:

interface Repository\n@AutoBind\n@Singleton\nclass RealRepository @Inject constructor() : Repository\n

Auto Dagger will generate this module:

@Module\n@InstallIn(SingletonComponent.class)\n@OriginatingElement(topLevelClass = RealRepository.class)\npublic abstract class AutoBindRealRepositorySingletonModule {\nprivate AutoBindRealRepositorySingletonModule() {}\n@Binds\npublic abstract Repository bindRealRepositoryAsRepository(RealRepository realRepository);\n}\n

"},{"location":"about/how-it-works/#autoinitialize","title":"@AutoInitialize","text":"

When you annotate an object, binding or provider with @AutoInitialize, Auto Dagger will generate a module which is installed into the SingletonComponent using Hilt.

Given this class:

@AutoInitialize\n@Singleton\nclass Repository @Inject constructor()\n

Auto Dagger will generate this module:

@Module\n@InstallIn(SingletonComponent.class)\n@OriginatingElement(topLevelClass = Repository.class)\npublic final class AutoInitializeRepositoryModule {\nprivate AutoInitializeRepositoryModule() {}\n@Provides\n@IntoSet\npublic static Initializable provideRepositoryAsInitializable(Lazy<Repository> lazyRepository) {\nreturn Initializable.fromLazy(lazyRepository);\n}\n}\n

"},{"location":"about/how-it-works/#autodaggerinitializable","title":"AutoDaggerInitializable","text":"

AutoDaggerInitializable is the container for all Initializable that should be initialized at startup. It's provided into the @Singleton component, and accepts a set of all the initializables.

Calling AutoDaggerInitializable.initialize calls initialize on each object in turn.

Any exceptions are rethrown, but only after all objects have been initialized. If multiple objects throw, then subsequent exceptions are added as suppressed exceptions.

"},{"location":"about/how-it-works/#autodaggerstartupinitializer","title":"AutoDaggerStartupInitializer","text":"

AutoDaggerStartupInitializer is the AndroidX Startup initializer that performs the initialization at startup.

"},{"location":"about/license/","title":"License","text":"
Copyright 2022-2023 Nicklas Ansman Giertz\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n

You can find the full license at ansman/auto-dagger.

"},{"location":"integrations/ktorfit/","title":"Integration with Ktorfit","text":"

If you use Ktorfit to define your API services, you can use the @AutoProvideService to automatically contribute your services to the Dagger graph.

Firstly add the required dependency:

dependencies {\nimplementation(\"se.ansman.dagger.auto:ktorfit:1.1.0\")\nkapt(\"se.ansman.dagger.auto:compiler:1.1.0\")\n// or if you use KSP\nksp(\"se.ansman.dagger.auto:compiler:1.1.0\")\n}\n

Then annotate your service with @AutoProvideService:

@AutoProvideService\nclass ApiService {\n@GET(\"users\")\nsuspend fun getUsers(): List<User>\n}\n

You'll also need to provide a Ktorfit instance to the component you want to inject the service into:

@Module\n@InstallIn(SingletonComponent::class)\nobject KtorfitModule {\n@Provides\n@Singleton\nfun provideKtorfit(): Ktorfit = Ktorfit.Builder()\n// Perform any setup you need\n.baseUrl(\"https://api.example.com/\")\n.build()\n}\n

"},{"location":"integrations/ktorfit/#changing-the-target-component","title":"Changing the target component","text":"

By default, services are installed in the SingletonComponent. If you'd like to change this you can do so by specifying the inComponent parameter:

@AutoProvideService(inComponent = SomeOtherComponent::class)\nclass ApiService {\n// Service methods\n}\n

"},{"location":"integrations/ktorfit/#qualifiers","title":"Qualifiers","text":"

If you have multiple ktorfit instances and use qualifiers to differentiate them, you can specify the qualifier on the service:

@AutoProvideService\n@Named(\"api1\")\nclass ApiService {\n// Service methods\n}\n

"},{"location":"integrations/ktorfit/#making-the-service-scoped-or-reusable","title":"Making the service scoped or reusable","text":"

If you'd like to cache/reuse the service instances you can annotate the service with a scope or @Reusable:

@Singleton // This must match the `inComponent` parameter of @AutoProvideService\n@AutoProvideService\nclass ApiService {\n// Service methods\n}\n// Or if you want to make it reusable\n@Reusable\n@AutoProvideService\nclass ApiService {\n// Service methods\n}\n

"},{"location":"integrations/retrofit/","title":"Integration with Retrofit","text":"

If you use Retrofit to define your API services, you can use the @AutoProvideService to automatically contribute your services to the Dagger graph.

Firstly add the required dependency:

dependencies {\nimplementation(\"se.ansman.dagger.auto:retrofit:1.1.0\")\nkapt(\"se.ansman.dagger.auto:compiler:1.1.0\")\n// or if you use KSP\nksp(\"se.ansman.dagger.auto:compiler:1.1.0\")\n}\n

Then annotate your service with @AutoProvideService:

@AutoProvideService\nclass ApiService {\n@GET(\"users\")\nsuspend fun getUsers(): List<User>\n}\n

You'll also need to provide a Retrofit instance to the component you want to inject the service into:

@Module\n@InstallIn(SingletonComponent::class)\nobject RetrofitModule {\n@Provides\n@Singleton\nfun provideRetrofit(): Retrofit = Retrofit.Builder()\n// Perform any setup you need\n.baseUrl(\"https://api.example.com/\")\n.addConverterFactory(SomeConverterFactory.create())\n.build()\n}\n

"},{"location":"integrations/retrofit/#changing-the-target-component","title":"Changing the target component","text":"

By default, services are installed in the SingletonComponent. If you'd like to change this you can do so by specifying the inComponent parameter:

@AutoProvideService(inComponent = SomeOtherComponent::class)\nclass ApiService {\n// Service methods\n}\n

"},{"location":"integrations/retrofit/#qualifiers","title":"Qualifiers","text":"

If you have multiple retrofit instances and use qualifiers to differentiate them, you can specify the qualifier on the service:

@AutoProvideService\n@Named(\"api1\")\nclass ApiService {\n// Service methods\n}\n

"},{"location":"integrations/retrofit/#making-the-service-scoped-or-reusable","title":"Making the service scoped or reusable","text":"

By default, provided service is unscoped and will be created every time it is injected. Retrofit caches the parsing of services so this is not an expensive operation, but it injected frequently you can avoid this by annotating your service with a scope or @Reusable:

@Singleton // This must match the `inComponent` parameter of @AutoProvideService\n@AutoProvideService\nclass ApiService {\n// Service methods\n}\n// Or if you want to make it reusable\n@Reusable\n@AutoProvideService\nclass ApiService {\n// Service methods\n}\n

"},{"location":"integrations/androidx/room/","title":"Integration with AndroidX Room","text":"

If you use AndroidX Room in your project, Auto Dagger can automatically provides some utilities for working with databases.

To get started, add the dependency:

dependencies {\nimplementation(\"se.ansman.dagger.auto:androidx-room:1.1.0\")\nkapt(\"se.ansman.dagger.auto:compiler:1.1.0\")\n// or if you use KSP\nksp(\"se.ansman.dagger.auto:compiler:1.1.0\")\n}\n

"},{"location":"integrations/androidx/room/#automatically-providing-daos","title":"Automatically providing DAOs","text":"

You can annotate your RoomDatabase with @AutoProvideDaos to automatically provide all DAOs in the database:

@Database(entities = [User::class], version = 1)\n@AutoProvideDaos\nabstract class AppDatabase : RoomDatabase() {\nabstract val users: UserDao\n}\n

Now you can inject UserDao directly.

By default, the DAOs will be provided in the SingletonComponent. If you want to change the component you can use the inComponent parameter:

@Database(entities = [User::class], version = 1)\n@AutoProvideDaos(inComponent = SomeOtherComponent::class)\nabstract class AppDatabase : RoomDatabase() {\nabstract val users: UserDao\n}\n

For now, the database must directly extend RoomDatabase. Having it as an indirect superclass is not supported. If you need support for this open a feature request and detail your use case.

"},{"location":"integrations/androidx/viewmodel/","title":"Integration with AndroidX ViewModel","text":"

If you use AndroidX ViewModel in your project, Auto Dagger can automatically provides some utilities for working with view models.

To get started, add the dependency:

dependencies {\nimplementation(\"se.ansman.dagger.auto:androidx-viewmodel:1.1.0\")\n}\n

"},{"location":"integrations/androidx/viewmodel/#coroutinescope","title":"CoroutineScope","text":"

If you use Kotlin Coroutines, you can inject a CoroutineScope into your view models. This allows you to use a test scope when testing your view models.

The scope has the ViewModelSpecific qualifier and uses a SupervisorJob and the Dispatchers.Main.immediate dispatcher.

Usage:

@HiltViewModel\nclass MyViewModel @Inject constructor(\n@ViewModelSpecific\nprivate val viewModelScope: CoroutineScope\n) : ViewModel()\n

"},{"location":"integrations/androidx/viewmodel/#viewmodelspecific","title":"ViewModelSpecific","text":"

ViewModelSpecific is a qualifier annotation that can be used to inject objects that are specific to a view model, but might otherwise be added to your graph such as CoroutineScope.

"},{"location":"usage/auto-bind/","title":"@AutoBind Usage","text":"

To bind objects automatically you just need to annotate a class with the @AutoBind annotation (or @AutoBindIntoSet for binding into a set and @AutoBindIntoMap for binding into a map).

interface Repository\n@AutoBind\n@Singleton\nclass RealRepository @Inject constructor() : Repository\n// Generates the equivalent to:\n@Binds\nabstract fun RealRepository.bindRealRepositoryAsRepository(): Repository\n
"},{"location":"usage/auto-bind/#multibindings","title":"Multibindings","text":"

If you need to bind a object into a set or map you can use @AutoBindIntoSet or @AutoBindIntoMap respectively.

// Binds ExternalResource as Closeable using @IntoSet\n@AutoBindIntoSet\n// Binds ExternalResource as Closeable using @IntoMap with\n// `StringKey` as the map key\n@AutoBindIntoMap\n@StringKey(\"ExternalResourceCloseable\")\n@Singleton\nclass ExternalResource @Inject constructor() : Closeable {\noverride fun close() {}\n}\n// Generates the equivalent to:\n@Binds\n@IntoSet\nabstract fun ExternalResource.bindExternalResourceAsCloseableIntoSet(): Closeable\n@Binds\n@IntoMap\n@StringKey(\"ExternalResourceCloseable\")\nabstract fun ExternalResource.bindExternalResourceAsCloseableIntoMap(): Closeable\n
"},{"location":"usage/auto-bind/#component","title":"Component","text":"

AutoDagger will try to infer the component to install the binding in using the scope. The following mapping is used:

Scope Component No scope SingletonComponent Singleton SingletonComponent Reusable SingletonComponent ActivityRetainedScoped ActivityRetainedComponent ActivityScoped ActivityComponent FragmentScoped FragmentComponent ServiceScoped ServiceComponent ViewScoped ViewComponent ViewModelScoped ViewModelComponent ViewWithFragmentScoped ViewWithFragmentComponent

If you are are using custom scopes or want to change which component the binding is installed in, you can use the inComponent property:

@AutoBind(inComponent = SomeComponent::class)\nclass ExternalResource @Inject constructor() : Closeable {\noverride fun close() {}\n}\n

"},{"location":"usage/auto-bind/#binding-multiple-types","title":"Binding multiple types","text":"

If your object has multiple direct supertypes, you need to specify which ones to bind explicitly using the asTypes parameter:

@AutoBind(asTypes = [Closeable::class])\nclass ExternalResource @Inject constructor() : Runnable, Closeable {\noverride fun run() {}\noverride fun close() {}\n}\n

You can bind multiple types, but only direct supertypes can be bound (see limitations).

"},{"location":"usage/auto-bind/#objects","title":"Objects","text":"

Normally the bound object needs to be provided to the dependency graph using either an @Provides annotated method or using an @Inject annotated constructor.

Auto Dagger allows you to annotate a Kotlin object with @AutoBind without it being provided in the graph. This is especially useful for tests:

@AutoBind\nobject DirectExecutor : Executor {\noverride fun execute(command: Runnable) {\ncommand.run()\n}\n}\n

"},{"location":"usage/auto-bind/#generics","title":"Generics","text":"

When using multibindings, it's often useful to be able to bind generic types as wildcard.

Auto Dagger will, by default, bind the exact type of the supertype. But using the bindGenericAs parameter you can chose to bind it as a wildcard instead.

For types you own, it's sometimes useful to specify a different default for bindGenericAs. For example, say you have a Resource<T> interface. You probably want to always bind this using wildcards since every resource will have a unique type for T. So you can annotate Resource with @BindGenericAs.Default(BindGenericAs.Wildcard) to indicate that, unless specified explicitly, it should be bound as Resource<*>.

// This will bind StringCallable as Callable<*>\n@AutoBindIntoSet(bindGenericAs = BindGenericAs.Wildcard)\nclass StringCallable @Inject constructor() : Callable<String> {\noverride fun call(): String = \"\"\n}\n// For types you own you can specify @BindGenericAs.Default to change the default.\n@BindGenericAs.Default(BindGenericAs.Wildcard)\ninterface Resource<T>\n// This will be bound as Resource<*> since the default has been set to wildcard for Resource.\n@AutoBindIntoSet\nclass SomeResource @Inject constructor() : Resource<Something>\n

There are 3 options for bindGenericAs:

  • Type - Binds the object to the exact supertype (Callable<String> in the example above). This is the default unless set with @BindGenericAs.Default.
  • Wildcard - Binds the object using wildcards (Callable<*> in the example above).
  • TypeAndWildcard - Binds the object as both the exact type and using wildcards.
"},{"location":"usage/auto-initialize/","title":"@AutoInitialize Usage","text":"

Simply annotate any @Singleton scoped object, provider or binding with @AutoInitialize to make it be automatically initialized when your application launches.

@AutoInitialize\n@Singleton\nclass SomeRepository @Inject constructor() {\ninit {\n// This will be executed at application startup, even if nobody injects it.\n}\n}\n
"},{"location":"usage/auto-initialize/#initializable","title":"Initializable","text":"

It's often considered bad practice to have side effects in a constructor/initializer block. If this is a concern, your object can implement the Initializable interface. Auto Dagger will then call initialize when it's time to initialize.

@AutoInitialize\n@Singleton\nclass SomeRepository @Inject constructor() : Initializable {\noverride fun initialize() {\n// This will be executed at application startup, even if nobody injects it.\n}\n}\n
"},{"location":"usage/auto-initialize/#priority","title":"Priority","text":"

By default objects are initialized in an undefined order. This can be changed by setting a priority.

Objects are initialized in descending priority with the default priority being 1. Setting the priority to 0 or below makes the object be initialized after objects with the default priority and setting the priority to 2 or above initializes it before.

@AutoInitialize(priority = 4711)\n@Singleton\nclass ImportantRepository @Inject constructor() {\noverride fun initialize() {\n// This will be called earlier than objects without a priority\n}\n}\n
"},{"location":"usage/auto-initialize/#androidx-startup","title":"AndroidX Startup","text":"

Auto Dagger uses AndroidX Startup to initialize objects at startup.

If you prefer to not use this you can just depend on the core artifact which won't pull in AndroidX Startup.

To initialize the objects manually, use AutoDaggerInitializer.

@HiltAndroidApp\nclass TheApp : Application() {\n@Inject\nlateinit var initializer: AutoDaggerInitializer\noverride fun onCreate() {\nsuper.onCreate()\ninitializer.initialize()\n}\n}\n
"},{"location":"usage/replaces/","title":"@Replaces Usage","text":"

During tests it's often useful to swap out real dependencies for fake dependencies. If you're using @AutoBind to bind your dependencies then it's trivial to swap out dependencies during tests using the @Replaces annotation:

interface Repository\n@AutoBind\n@Singleton\nclass RealRepository @Inject constructor() : Repository\n// In your test source set\n@Replaces(RealRepository::class)\n@Singleton\nclass FakeRepository @Inject constructor() : Repository\n

To use @Replaces there are some requirements:

  • The replacement must implement the types bound the target.
  • The replacement target must be annotated with @AutoBind.
  • The replacement must not be annotated with @AutoBind, @AutoBindIntoSet, @AutoBindIntoMap, or @AutoInitialize.
"},{"location":"usage/replaces/#multibindings","title":"Multibindings","text":"

If the replaced type uses multibindings (@AutoBindIntoSet or @AutoBindIntoMap) then those are only replaced if the annotated type also implements them. Otherwise the multibinding is removed.

So for example. If the target type uses @AutoBindIntoSet to bind it as a Closeable but your replacement doesn't implement Closeable then that binding is removed. If it does implement Closeable then the binding is replaced with the fake binding.

"},{"location":"usage/replaces/#auto-initialize","title":"Auto Initialize","text":"

If the target type is annotated with @AutoInitialize, then an empty module will be generated to replace the auto initialize module, effectively removing it.

"},{"location":"usage/replaces/#objects","title":"Objects","text":"

Normally the replacement object needs to be provided to the dependency graph using either an @Provides annotated method or using an @Inject annotated constructor.

Auto Dagger allows you to annotate a Kotlin object with @Replaces without it being provided in the graph. This is especially useful for tests:

@Replaces(ThreadPoolExecutor::class)\nobject DirectExecutor : Executor {\noverride fun execute(command: Runnable) {\ncommand.run()\n}\n}\n

"}]} \ No newline at end of file diff --git a/latest/sitemap.xml b/latest/sitemap.xml index 87c818c98..2b8c3cc67 100644 --- a/latest/sitemap.xml +++ b/latest/sitemap.xml @@ -2,57 +2,62 @@ https://github.com/ansman/auto-dagger/ - 2023-12-31 + 2024-04-15 daily https://github.com/ansman/auto-dagger/getting-started/ - 2023-12-31 + 2024-04-15 daily https://github.com/ansman/auto-dagger/limitations/ - 2023-12-31 + 2024-04-15 daily https://github.com/ansman/auto-dagger/about/how-it-works/ - 2023-12-31 + 2024-04-15 daily https://github.com/ansman/auto-dagger/about/license/ - 2023-12-31 + 2024-04-15 + daily + + + https://github.com/ansman/auto-dagger/integrations/ktorfit/ + 2024-04-15 daily https://github.com/ansman/auto-dagger/integrations/retrofit/ - 2023-12-31 + 2024-04-15 daily https://github.com/ansman/auto-dagger/integrations/androidx/room/ - 2023-12-31 + 2024-04-15 daily https://github.com/ansman/auto-dagger/integrations/androidx/viewmodel/ - 2023-12-31 + 2024-04-15 daily https://github.com/ansman/auto-dagger/usage/auto-bind/ - 2023-12-31 + 2024-04-15 daily https://github.com/ansman/auto-dagger/usage/auto-initialize/ - 2023-12-31 + 2024-04-15 daily https://github.com/ansman/auto-dagger/usage/replaces/ - 2023-12-31 + 2024-04-15 daily \ No newline at end of file diff --git a/latest/sitemap.xml.gz b/latest/sitemap.xml.gz index b5d23878c09061c2e38a58ce39b793e8d67ff7ce..4a4c611b3f494afd4f15bc2aba74cac96e1dc960 100644 GIT binary patch literal 330 zcmV-Q0k!@giwFp%CLLx1|8r?{Wo=<_E_iKh0M(XFZo?oDh4(py*NjK~&6MGGTdk7i^iOPa=m~^8r-p8fD(ns5_>eX7+YqfmJmb>;~GaUqn`-GpZ z1@d2weo$^q`WNc&cn(GKUMUtxf_Cb-o_Z3HeAqm7RM^EqbQecOqQ;mGGa>e5FfdLX zmV%&5_p5M_nD!*IVooS2&J7xZO_A(br(Szs{HQgHk7{q0pf zm4{|k56Lr1k$|Ae)pOabid<8`ZFa5NN7GCx zoMRkGH?) @AutoBind - Auto Dagger

@AutoBind Usage

To bind objects automatically you just need to annotate a class with the @AutoBind annotation (or @AutoBindIntoSet for binding into a set and @AutoBindIntoMap for binding into a map).

interface Repository
+ @AutoBind - Auto Dagger       

@AutoBind Usage

To bind objects automatically you just need to annotate a class with the @AutoBind annotation (or @AutoBindIntoSet for binding into a set and @AutoBindIntoMap for binding into a map).

interface Repository
 
 @AutoBind
 @Singleton
diff --git a/latest/usage/auto-initialize/index.html b/latest/usage/auto-initialize/index.html
index 9ce1d04da..4a10ce3fb 100644
--- a/latest/usage/auto-initialize/index.html
+++ b/latest/usage/auto-initialize/index.html
@@ -1,4 +1,4 @@
- @AutoInitialize - Auto Dagger       

@AutoInitialize Usage

Simply annotate any @Singleton scoped object, provider or binding with @AutoInitialize to make it be automatically initialized when your application launches.

@AutoInitialize
+ @AutoInitialize - Auto Dagger       

@AutoInitialize Usage

Simply annotate any @Singleton scoped object, provider or binding with @AutoInitialize to make it be automatically initialized when your application launches.

@AutoInitialize
 @Singleton
 class SomeRepository @Inject constructor() {
     init {
diff --git a/latest/usage/replaces/index.html b/latest/usage/replaces/index.html
index e1dfea0f8..e46f4361d 100644
--- a/latest/usage/replaces/index.html
+++ b/latest/usage/replaces/index.html
@@ -1,4 +1,4 @@
- @Replaces - Auto Dagger       

@Replaces Usage

During tests it's often useful to swap out real dependencies for fake dependencies. If you're using @AutoBind to bind your dependencies then it's trivial to swap out dependencies during tests using the @Replaces annotation:

interface Repository
+ @Replaces - Auto Dagger       

@Replaces Usage

During tests it's often useful to swap out real dependencies for fake dependencies. If you're using @AutoBind to bind your dependencies then it's trivial to swap out dependencies during tests using the @Replaces annotation:

interface Repository
 
 @AutoBind
 @Singleton
diff --git a/versions.json b/versions.json
index 8af4af16a..97ecbfaea 100644
--- a/versions.json
+++ b/versions.json
@@ -1 +1 @@
-[{"version":"1.0.0","title":"1.0.0","aliases":["latest"]}]
\ No newline at end of file
+[{"version":"1.1.0","title":"1.1.0","aliases":["latest"]},{"version":"1.0.0","title":"1.0.0","aliases":[]}]
\ No newline at end of file