{
    "migrator": "./all-templates/index",
    "<*>": {
        "migrator": "./all-tags/index",
        "@if": {
            "type": "statement",
            "deprecated": true
        },
        "@else-if": {
            "type": "statement",
            "deprecated": true
        },
        "@else": {
            "type": "statement",
            "deprecated": true
        },
        "@for": {
            "type": "statement",
            "deprecated": true
        },
        "@unless": {
            "type": "statement",
            "deprecated": true
        },
        "@while": {
            "type": "statement",
            "deprecated": true
        },
        "@w-on*": {
            "pattern": true,
            "type": "string",
            "allow-expressions": true,
            "preserve-name": true,
            "set-flag": "hasComponentEvents",
            "deprecated": true
        },
        "@w-for": {
            "type": "string",
            "preserve-name": true,
            "deprecated": true,
            "set-context-flag": "hasLegacyWidgetAttr"
        },
        "@for-key": {
            "type": "string",
            "preserve-name": true,
            "deprecated": true,
            "set-context-flag": "hasLegacyWidgetAttr"
        },
        "@for-ref": {
            "type": "string",
            "preserve-name": true,
            "deprecated": true,
            "set-context-flag": "hasLegacyWidgetAttr"
        },
        "@w-id": {
            "type": "string",
            "preserve-name": true,
            "deprecated": true,
            "set-context-flag": "hasLegacyWidgetAttr"
        },
        "@w-config": {
            "type": "expression",
            "preserve-name": true,
            "deprecated": true
        },
        "@ref": {
            "type": "string",
            "preserve-name": true,
            "deprecated": true
        },
        "@w-preserve": {
            "type": "flag",
            "preserve-name": true,
            "deprecated": true
        },
        "@w-preserve-body": {
            "type": "flag",
            "preserve-name": true,
            "deprecated": true
        },
        "@w-preserve-if": {
            "preserve-name": true,
            "deprecated": true
        },
        "@w-preserve-body-if": {
            "preserve-name": true,
            "deprecated": true
        },
        "@w-preserve-attrs": {
            "type": "string",
            "preserve-name": true,
            "deprecated": true
        },
        "@w-body": {
            "preserve-name": true,
            "deprecated": true
        },
        "@include": {
            "deprecated": true
        }
    },
    "<invoke>": {
        "migrator": "./invoke-tag",
        "deprecated": true
    },
    "<assign>": {
        "migrator": "./assign-tag",
        "open-tag-only": true,
        "deprecated": true
    },
    "<var>": {
        "migrator": "./var-tag",
        "deprecated": true
    },
    "<async-fragment>": {
        "migrator": "./async-fragment-tag",
        "deprecated": true
    },
    "<async-fragments>": {
        "migrator": "./async-fragments-tag",
        "deprecated": true
    },
    "<async-fragment-placeholder>": {
        "deprecated": true
    },
    "<async-fragment-timeout>": {
        "deprecated": true
    },
    "<async-fragment-error>": {
        "deprecated": true
    },
    "<include>": {
        "migrator": "./include-tag",
        "autocomplete": [
            {
                "displayText": "include(<template>)",
                "snippet": "include(${1:\"./target.marko\"})",
                "descriptionMoreURL": "http://markojs.com/docs/marko/language-guide/#includes"
            },
            {
                "descriptionMoreURL": "http://markojs.com/docs/marko/language-guide/#includes"
            }
        ]
    },
    "<for>": {
        "migrator": "./for-tag"
    },
    "<macro>": {
        "migrator": "./macro-tag"
    },
    "<macro-body>": {
        "migrator": "./macro-body-tag",
        "deprecated": true
    },
    "<layout-put>": {
        "migrator": "./layout-put-tag",
        "deprecated": true
    },
    "<layout-use>": {
        "@*": {
            "remove-dashes": true,
            "type": "string"
        },
        "migrator": "./layout-use-tag.js",
        "autocomplete": [
            {
                "snippet": "layout-use(\"${1:./path/to/template.marko}\")",
                "descriptionMoreURL": "http://markojs.com/docs/marko/layout-taglib/#<code>&ltlayout-use><code>"
            },
            {
                "descriptionMoreURL": "http://markojs.com/docs/marko/layout-taglib/#<code>&ltlayout-use><code>"
            }
        ]
    },
    "<layout-placeholder>": {
        "@name": "string",
        "migrator": "./layout-placeholder-tag",
        "autocomplete": [
            {
                "snippet": "layout-placeholder name=\"${1:name}\"",
                "descriptionMoreURL": "http://markojs.com/docs/marko/layout-taglib/#<code>&ltlayout-placeholder><code>"
            },
            {
                "descriptionMoreURL": "http://markojs.com/docs/marko/layout-taglib/#<code>&ltlayout-placeholder><code>"
            }
        ]
    },
    "<unless>": {
        "migrator": "./unless-tag",
        "deprecated": true
    },
    "<await>": {
        "migrator": "./await-tag"
    },
    "<await-placeholder>": {
        "deprecated": true
    },
    "<await-timeout>": {
        "deprecated": true
    },
    "<await-error>": {
        "deprecated": true
    },
    "<script>": {
        "@marko-init": "boolean",
        "@template-helpers": "boolean"
    }
}
