{
  "description": "Requires Legacy and the Core Pack tag details. corePackTag : string or array of strings",
  "legacyTag": "",
  "corePackTag": "",
  "corePackTag": ["corePackTag", "corePackTag"],
  "migrateImports": {
    "description": "Action to migrate the import statements from legacy to core pack for the components in .ts, .js, .tsx, and .json files
                            from	: the legacy component import statement	: string
                            to	: the core pack component import statement	: string or array or strings",
    "from": "legacyImport",
    "to": "corePackImport"
  },
  "migrateImports": {
    "description": "Action to migrate the import statements from legacy to core pack for the components in .ts, .js, .tsx, and .json files
                            from	the legacy component import statement	: string
                            to	the core pack component import statement :	string or array or strings",
    "from": "legacyImport",
    "to": ["corePackImport", "corePackImport"]
  },
  "migrateTagByAttribute": [
    {
      "description": "Action migrates the component tag from legacy to core pack only if the legacy component contains a specific attribute/value 
                            fromTag	: Legacy tag : string
                            toTag	: Core pack tag	: string
                            attribute : Attribute name that would decide the core pack tag	: string
                            attributeValue : Attribute value that would decide the core pack tag	: string",
      "fromTag": "legacyTag",
      "toTag": "corePackTag",
      "attribute": "attribute",
      "attributeValue": "attributeValue"
    }
  ],
  "slotContentToAttribute": [
    {
      "description": "Action to move content from a slot and assign the value of a specified attribute. 
                              fromDescendant : Content will be taken from the tag provided. If no tag is provided the value will be taken from the node being processed : string
                              slotNameFrom	: The value of the specified slot will be added to the attribute provided	: string
                              toDescendant : Content will be added to the tag provided. If no tag is provided the value will be added to the tag being processed : string
                              slotNameTo : toDescendant tag should have the specified slot value : string
                              attribute	: Core pack attribute that will be added with the value from the slot	: string",
      "fromDescendant": "",
      "slotNameFrom": "",
      "toDescendant": "",
      "slotNameTo": "",
      "attribute": ""
    },
    {
      "description": "Action to move content from a slot and assign the value of a specified attribute. 
                              toPeer : Name of the tag that the new attribute will be added to : string, 
                              ownAttribute: Attribute in tag that will make the conection to peer tag : string, 
                              peerAttribute: Attribute whose value matches ownAttribute's value : string
                              attribute	: Core pack attribute that will be added with the value from the content	: string",
      "toPeer": "",
      "ownAttribute": "",
      "peerAttribute": "",
      "attribute": ""
    }
  ],
  "commentSlotContent": {
    "description": "Action to comment out a specific slot's content including the slot tag. 
                            slotName : list all the slot names that should be commented in the core pack code. : string ",
    "slotName": ""
  },
  "classNameToAttribute": [
    {
      "description": "Action to migrate a class defined on a component in legacy to a specific attribute value pair in the core pack.
                            className	: information of class that now would migrate to attribute/value pair	: string
                            attribute	: Core pack attribute	: string
                            attributeValue	: Core pack attribute's value : string",
      "className": "",
      "attribute": "",
      "attributeValue": ""
    },
    {
      "description": "Action to migrate a class defined on a component in legacy to a specific attribute value pair in the core pack.
                            className	: information of class that now would migrate to attribute/value pair	: string
                            attribute	: Core pack attribute	: string
                            attributeValue	: Core pack attribute's value : string",
      "className": "",
      "attribute": "",
      "attributeValue": ""
    }
  ],
  "migrateAttributes": [
    {
      "description": "Action updates the attribute/value pair with a different attribute/ value pair. If the 'To' attribute/value pair is not provided then the legacy attribute/value is removed.
                            toDescendant : Attribute will be transfered from tag being migrated to specified tag
                            fromDescendant : Attribute will be transfered from specified tag to tag being migrated
                            depAttribute	: Dependency attribute	: string
                            depValue	: Dependency attribute value	: string
                            fromAttribute	: Legacy attribute	: string
                            fromValue	: Legacy attribute value	: string
                            toAttribute	: Core Pack attribute	: string
                            toValue	: Core Pack attribute value	: string",
      "depAttribute": "attribute",
      "depValue": "attributeValue",
      "fromAttribute": "attribute",
      "fromValue": "attributeValue",
      "toAttribute": "attribute",
      "toValue": "attributeValue"
    },
    {
      "description": "Action updates the attribute/value pair with a different attribute/ value pair. If the "To" attribute/value pair is not provided then the legacy attribute/value is removed.
                            toDescendant : Attribute will be transfered from tag being migrated to specified tag
                            fromDescendant : Attribute will be transfered from specified tag to tag being migrated
                            depAttribute	: Dependency attribute	: string
                            depValue	: Dependency attribute value	: string
                            fromAttribute	: Legacy attribute	: string
                            fromValue	: Legacy attribute value	: string
                            toAttribute	: Core Pack attribute	: string
                            toValue	: Core Pack attribute value	: string",
      "fromAttribute": "attribute",
      "fromValue": "attributeValue",
      "toAttribute": "attribute",
      "toValue": "attributeValue"
    },
    {
      "description": "Action updates the attribute/value pair with a different attribute/ value pair. If the 'To' attribute/value pair is not provided then the legacy attribute/value is removed.
                            toDescendant : Attribute will be transfered from tag being migrated to specified tag
                            fromDescendant : Attribute will be transfered from specified tag to tag being migrated
                            depAttribute	: Dependency attribute	: string
                            depValue	: Dependency attribute value	: string
                            fromAttribute	: Legacy attribute	: string
                            fromValue	: Legacy attribute value	: string
                            toAttribute	: Core Pack attribute	: string
                            toValue	: Core Pack attribute value	: string",
      "toDescendant": "tag",
      "depAttribute": "attribute",
      "depValue": "attributeValue",
      "fromAttribute": "attribute",
      "fromValue": "attributeValue",
      "toAttribute": "attribute",
      "toValue": "attributeValue"
    },
    {
      "description": "Action updates the attribute/value pair with a different attribute/ value pair. If the 'To' attribute/value pair is not provided then the legacy attribute/value is removed.
                            toDescendant : Attribute will be transfered from tag being migrated to specified descendant tag : string
                            fromDescendant : Attribute will be transfered from specified descendant tag to tag being migrated : string
                            depAttribute	: Dependency attribute	: string
                            depValue	: Dependency attribute value	: string
                            fromAttribute	: Legacy attribute	: string
                            fromValue	: Legacy attribute value	: string
                            toAttribute	: Core Pack attribute	: string",
      "fromDescendant": "tag",
      "depAttribute": "attribute",
      "depValue": "attributeValue",
      "fromAttribute": "attribute",
      "fromValue": "attributeValue",
      "toAttribute": "attribute",
      "toValue": "attributeValue"
    },
    {
      "description": "Action updates the attribute/value pair with a different attribute/ value pair. If the 'To' attribute/value pair is not provided then the legacy attribute/value is removed.
                            toPeer: Attribute will be transfered from tag being migrated to specified peer tag : string, 
                            ownAttribute: Attribute in tag that will make the conection to peer tag : string, 
                            peerAttribute: Attribute whose value matches ownAttribute's value : string
                            depAttribute	: Dependency attribute	: string
                            depValue	: Dependency attribute value	: string
                            fromAttribute	: Legacy attribute	: string
                            fromValue	: Legacy attribute value	: string
                            toAttribute	: Core Pack attribute	: string",
      "toPeer": "",
      "peerAttribute": "",
      "ownAttribute": "",
      "fromAttribute": "",
      "fromValue": "",
      "toAttribute": "",
      "toValue": ""
    }
  ],
  "migrateChildren": [
    {"description": "Migrates the children of the component"}
    "metadataFile1",
    "metadataFile2"
  ],
  "ruleSetToIgnore": [
    {
      "description": "Defines the rule set that can contain a slot or attribute that will cause functionally breaking change and will be ignored as part of the migration
                            slot : Migration will be skipped if the specified slot exists in the legacy code	: string",
      "slot": ""
    },
    {
      "description": "Defines the rule set that can contain a slot or attribute that will cause functionally breaking change and will be ignored as part of the migration
                            attribute	: Migration will be skipped if the specified attribute exists in the legacy code	: string
                            allowedValues: Migration will be skipped if the value of the attribute is not in the allowed array : array
                            prohibitedValues: Migration will be skipped if the value of the attribute is in the prohibited array : array
                            descendant : Migration will be skipped if tag being migrated has the specified tag as a descendant : string",
      "descendant": "",
      "attribute": "",
      "allowedValues": [],
      "prohibitedValues": []
    },
    {
      "description": "Defines the rule set that can contain a slot or attribute that will cause functionally breaking change and will be ignored as part of the migration
                            missAttribute: Migration will be skipped if the component does not have any of the specified attributes : object with attribute/value pair",
      "missAttribute": {
        "attribute1": "",
        "attribute2": ""
      }
    },
    {
      "description": "Defines the rule set that can contain a slot or attribute that will cause functionally breaking change and will be ignored as part of the migration
                            missSlot : Migration will be skipped if the component does not have the specified slot value : string",
      
      "missSlot": ""
    },
    {
      "description": "Defines the rule set that can contain a slot or attribute that will cause functionally breaking change and will be ignored as part of the migration
                            missPeerTag : {
                            tag : array,
                            attribute : string,
                            matchValues : [{
                            peerAttribute : string 
                            ownAttribute : string } : object } array]
                            Migration will be skipped if: any of the specified peer tags is missing, any of the peerAttribute and ownAttribute pair values are not the same, peer tag has specified attribute or is missing specified slot value : object",
      "missPeerTag": {
        "tag": ["", ""],
        "attribute": "",
        "matchValues": [
          {
            "peerAttribute": "",
            "ownAttribute": ""
          }
        ]
      }
    },
    {
      "description": "Defines the rule set that can contain a slot or attribute that will cause functionally breaking change and will be ignored as part of the migration
                            missDescendant : {
                            tag : array,
                            attribute : string,
                            missSlot : string 
                            } Migration will be skipped if no descendant with one of the specified tags is found or descendant is found but it has specified attribute or is missing the specified slot value : object",
      "missDescendant": {
        "tag": ["", ""],
        "attribute": "",
        "missSlot": ""
      }
    }
  ],
  "importantAttributes":[{"description": "Defines potential attributes a component may have that could cause problems if assigned expressions as values.
                  Attributes listed here will be logged in dry run mode when encountered with expressions as values.",}],
  "migrateTest": {
    "description": "Information needed to migrate Web driver test scripts",
    "type": {
      "description": "Information needed to migrate type declarations in Web driver test script
                      from : legacy type : string
                      to : core pack type : string",
      "from": "",
      "to": ""
    },
    "locator": {
      "description": "Information needed to migrate any instance of component being migrated
                      from : legacy locator : string
                      to : core pack locator : string",
      "from": "",
      "to": ""
    },
    "ruleSetToIgnore": 
    [
      { "description": "Methods/APIs listed here are not supported in core pack Web Driver"},
      "method1",
      "method2"
    ]
 }
}
