From bc863c921202cb13eff9f07f7fed9816c253e42e Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Thu, 5 Mar 2020 15:40:25 +0000 Subject: [PATCH] Update module spec (#5751) --- docs/building-modules/structure.md | 58 ++++++++++++++---------------- 1 file changed, 27 insertions(+), 31 deletions(-) diff --git a/docs/building-modules/structure.md b/docs/building-modules/structure.md index bb20c9945e..5f7315f91b 100644 --- a/docs/building-modules/structure.md +++ b/docs/building-modules/structure.md @@ -1,6 +1,8 @@ # Recommended Folder Structure @@ -20,23 +22,24 @@ x/{module} │   └── tx.go ├── exported │   └── exported.go -├── internal -│   ├── keeper -│   │   ├── invariants.go -│   │   ├── keeper.go -│   │   ├── ... -│   │   └── querier.go -│   └── types -│   ├── codec.go -│   ├── errors.go -│   ├── events.go -│   ├── expected_keepers.go -│   ├── genesis.go -│   ├── keys.go -│   ├── msgs.go -│   ├── params.go -│   ├── ... -│   └── querier.go +├── keeper +│   ├── invariants.go +│   ├── keeper.go +│   ├── ... +│   └── querier.go +├── types +│ ├── codec.go +│ ├── errors.go +│ ├── events.go +│ ├── expected_keepers.go +│ ├── genesis.go +│ ├── keys.go +│ ├── msgs.go +│ ├── params.go +│ ├── types.pb.go +│ ├── types.proto +│ ├── ... +│ └── querier.go ├── simulation │   ├── decoder.go │   ├── genesis.go @@ -55,9 +58,8 @@ x/{module} - `alias.go`: The module's exported types, constants, and variables. These are mainly to improve developer ergonomics by only needing to import a single package. Note, there is nothing preventing developers from importing other packages from the module -(excluding`internal/`) but it is recommended that `alias.go` have everything -exposed that other modules may need. The majority of the exported values here will -typically come from `internal/` (see below). +but it is recommended that `alias.go` have everything exposed that other modules +may need. - `client/`: The module's CLI and REST client functionality implementation and testing. - `exported/`: The module's exported types -- typically type interfaces. If a module @@ -72,16 +74,10 @@ DRY and also alleviates import cycle chaos. - `genesis.go`: The module's genesis related business logic (e.g. `InitGenesis`). Note, genesis types are defined in `internal/types`. - `handler.go`: The module's message handlers. -- `internal/`: The module's internal types and implementations. The purpose of -this package is mainly two fold. First, it signals that this package is not -intended to be used or imported anywhere outside the defining module. Secondly, -it goes hand-in-hand with `alias.go` in that it allows public types and functions -to be used internally while not being exposed outside to the outside world. This -allows for greater freedom of development while maintaining API stability. - - `internal/types`: The module's type definitions such as messages, `KVStore` - keys, parameter types, and `expected_keepers.go` contracts. - - `internal/keeper`: The module's keeper implementation along with any auxiliary - implementations such as the querier and invariants. +- `keeper/`: The module's keeper implementation along with any auxiliary +implementations such as the querier and invariants. +- `types/`: The module's type definitions such as messages, `KVStore` keys, +parameter types, Protocol Buffer definitions, and `expected_keepers.go` contracts. - `module.go`: The module's implementation of the `AppModule` and `AppModuleBasic` interfaces. - `simulation/`: The module's simulation package defines all the required functions