| // Copyright 2018 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| library fuchsia.modular; |
| |
| /// Metadata that define the runtime properties of a Module. |
| struct ModuleManifest { |
| /// The relative path from the root of the package where the Module executable |
| /// file can be found. |
| /// TODO(MF-94): Extract a module's URL from its cmx manifest instead of |
| /// here. |
| string binary; |
| |
| /// A human-readable string that can be used when suggesting this Module. |
| /// DEPRECATED. |
| string? suggestion_headline; |
| |
| /// A list of intents that this module is able to handle. |
| vector<IntentFilter>? intent_filters; |
| |
| /// Identifies the pattern with which to compose this module with others. |
| string? composition_pattern; |
| |
| /// Defines the color of the placeholder widget used while the module loads. |
| string? placeholder_color; |
| }; |
| |
| /// This struct is used to describe an intent that a module is able to handle. |
| struct IntentFilter { |
| /// The action this module is able to handle. |
| string action; |
| |
| /// Includes the name and types of entities for the parameters required to |
| /// execute specified [action]. |
| vector<ParameterConstraint> parameter_constraints; |
| |
| /// Defines presentation properties for suggestions of this action. |
| ActionDisplay action_display; |
| }; |
| |
| struct ParameterConstraint { |
| string name; |
| /// The entity type that is valid for this parameter. |
| string type; |
| }; |
| |
| /// Defines how a suggestion of an action will be presented. |
| table ActionDisplay { |
| /// Defines presentation fields for a suggestion. The string fields might be |
| /// templated and will be filled from data in `parameter_mapping`. |
| /// For example: "Listen to $artistName" |
| 1: DisplayInfo display_info; |
| |
| /// Fields to be replaced in the given `display_info` templated strings. |
| /// In the example above, we would map name=artistName to the intent field |
| /// artist.name where artist is the intent parameter name and name a field |
| /// of it. |
| 2: vector<ParameterMapping> parameter_mapping; |
| }; |
| |
| /// Presentation information about the suggestion. |
| table DisplayInfo { |
| /// The title of the suggestion. |
| 1: string title; |
| |
| /// A subtitle for the suggestion. |
| 2: string subtitle; |
| |
| /// A url from which to fetch the icon of the suggestion. |
| 3: string icon; |
| }; |
| |
| /// Defines pairs that will be replaced in the DisplayInfo. |
| table ParameterMapping { |
| /// The name of the variable to be replaced in the template. |
| 1: string name; |
| |
| /// The path in the intent parameter to get that name. |
| /// `PARAMETER_PROPERTY` = string | string . `PARAMETER_PROPERTY` |
| /// The first string in the dot-separated string is the name of the intent |
| /// parameter and the following are nested subfields. |
| 2: string parameter_property; |
| }; |