The cauldron document (cauldron.json) stored at the root of a cauldron repository contains:
- One record for each mobile application version, for example:
MyWeatherApp iOS 1.1.0and
MyWeatherApp Android 1.0.0.
- Data pertaining to a specific mobile application version including all MiniApps (and their versions) that are currently part of it
- The list of all native dependencies (and their versions) used by MiniApps in a specific mobile application version
- The list of all MiniApp versions that have been pushed as Over-the-Air (OTA) updates for any given mobile application version
In order to use a MiniApp in any mobile application, first you'll need to add the MiniApp in the cauldron associated to that mobile application. Before adding a MiniApp to a Cauldron, Electrode Native performs compatibility checks to confirm that the MiniApp version (to be added to the target mobile application version) contains only native dependencies that are supported and that the versions are properly aligned with the mobile application version.
If compatibility checks pass, a new container version is generated and published. The new container is updated with the changes and the mobile application version data stored in the Cauldron is updated accordingly to reflect the current new state of the new container version. This occurs when the mobile application version is not released yet (in-development). If some dependencies versions are not compatible, a new container won't be created. Similar checks happen for pushing a MiniApp update as an Over-the-Air (OTA) update.
The cauldron stores
yarn.lockfiles that are used internally to guarantee consistency of non-updated MiniApp versions.
Using the Electrode Native CLI, you can access multiple cauldrons. There can however be only one cauldron activated at a time.
The following is an example of a
"releasedBy": "[email protected]",
cauldron.jsondocument shows the following:
- This mobile application version contains two MiniApps (these might be two screens of the application).
- This mobile application version has been released and a CodePush update has been performed to update the version of one of the two MiniApps.
nativeappsarray contains the data of all mobile applications that are part of the cauldron. A cauldron can store multiple mobile applications, however it is not recommended--instead, we recommend that you use one cauldron per mobile application. It can also be a good idea to go even more granular and have one Cauldron per native application platform (i.e
- For each mobile application, the second level is the platforms array. Electrode Native supports two platforms: Android and iOS. For each platform, there can be multiple versions of a mobile application. Most of the Cauldron data is stored at this level (mobile application + platform + version).
For each version of a mobile application, the cauldron stores the following data:
trueif this version is released to users and
falseotherwise (this version is in development)
yarnLocks: The SHA hash of the
nativeDeps: An array of native dependencies descriptors, corresponding to the native dependencies (and their versions) stored in the current container of this mobile application version
miniApps: MiniApps package descriptors corresponding to the MiniApps currently part of the current Container version or released through CodePush updates. The
miniAppsarray only contains immutable versions. What this means is that any MiniApp path refer to a specific version. For example in the case of a MiniApp added as a registry path, a fixed version must be specified (ex:
[email protected]). This cannot be a range version (ex :
movielistminiapp@^0.0.10). In the same way, this cannot be a branch (ex :
"https://github.com/electrode-io/moviedetails-miniapp#master). While it is possible to add a MiniApp this way; Electrode Native will track the branch and only keep a commit SHA in the
miniAppsarray (ex :
"https://github.com/electrode-io/MovieDetailsMiniApp#ce08c19e2b707fc96a4db016c47a6f3ae8d66262). This is done to make sure that one can know exactly what versions (and thus code) of the MiniApps are included in a given Container. Indeed, using a version range such as
^0.0.10or a branch such as
masterwould not allow one to know exactly what is included in a given Container version.
Configuration files (
.jsonfiles) are kept in a
configdirectory at the root of the Cauldron. At this time there is no way to set or update configuration through commands. Configuration should be done manually.
- This cauldron contains global configurations as well as a single Android mobile application version:
"url": "[email protected]:username/myweatherapp-android-container.git"
- At the platform level of the
MyWeatherAppapplication (Android), an optional config object contains configuration for the Container generator that applies to every version of the
MyWeatherAppfor the Android platform. Likewise it contains some configuration for a Container transformer. It also contains CodePush configuration. For information about CodePush, see the CodePush documentation for more details. For information about Container Generator and Transformers configuration, refer to the Container documentation.