{
    "rules": {
        'no-restricted-syntax': [
            'error',
            {
                message: "addButton is removed. Update code to be compatible with tinymce5",
                selector: "CallExpression[callee.object.name='editor'][callee.property.name='addButton']"
            },
            {
                message: "addContextToolbar is removed. Update code to be compatible with tinymce5",
                selector: "CallExpression[callee.object.name='editor'][callee.property.name='addContextToolbar']"
            },
            {
                message: "addMenuItem is removed. Update code to be compatible with tinymce5",
                selector: "CallExpression[callee.object.name='editor'][callee.property.name='addMenuItem']"
            },
            {
                message: "addSidebar is removed. Update code to be compatible with tinymce5",
                selector: "CallExpression[callee.object.name='editor'][callee.property.name='addSidebar']"
            },
            {
                message: "file_browser_callback is removed. Update code to be compatible with tinymce5",
                selector: "MemberExpression[property.value='file_browser_callback']"
            },
            {
                message: "file_browser_callback is removed. Update code to be compatible with tinymce5",
                selector: "MemberExpression[property.name='file_browser_callback']"
            },
            {
                message: "file_browser_callback is removed. Update code to be compatible with tinymce5",
                selector: "ObjectExpression > Property > Identifier[name='file_browser_callback']"
            },
            {
                message: "insert_button_items is removed. Update code to be compatible with tinymce5",
                selector: "MemberExpression[property.value='insert_button_items']"
            },
            {
                message: "insert_button_items is removed. Update code to be compatible with tinymce5",
                selector: "MemberExpression[property.name='insert_button_items']"
            },
            {
                message: "insert_button_items is removed. Update code to be compatible with tinymce5",
                selector: "ObjectExpression > Property > Identifier[name='insert_button_items']"
            },
            {
                message: "'modern' theme is removed. Update code to be compatible with tinymce5",
                selector: "AssignmentExpression[left.property.value='theme'][right.value='modern']"
            },
            {
                message: "'modern' theme is removed. Update code to be compatible with tinymce5",
                selector: "AssignmentExpression[left.property.name='theme'][right.value='modern']"
            },
            {
                message: "'modern' theme is removed. Update code to be compatible with tinymce5",
                selector: "ObjectExpression > Property[key.name='theme'][value.value='modern']"
            },
            {
                message: "'inlite' theme is removed. Update code to be compatible with tinymce5",
                selector: "AssignmentExpression[left.property.value='theme'][right.value='inlite']"
            },
            {
                message: "'inlite' theme is removed. Update code to be compatible with tinymce5",
                selector: "AssignmentExpression[left.property.name='theme'][right.value='inlite']"
            },
            {
                message: "'inlite' theme is removed. Update code to be compatible with tinymce5",
                selector: "ObjectExpression > Property[key.name='theme'][value.value='inlite']"
            },
            {
                message: "'mobile' theme is removed. Update code to be compatible with tinymce5",
                selector: "AssignmentExpression[left.property.value='theme'][right.value='mobile']"
            },
            {
                message: "'mobile' theme is removed. Update code to be compatible with tinymce5",
                selector: "AssignmentExpression[left.property.name='theme'][right.value='mobile']"
            },
            {
                message: "'mobile' theme is removed. Update code to be compatible with tinymce5",
                selector: "ObjectExpression > Property[key.name='theme'][value.value='mobile']"
            },
            {
                message: "This method should not be used to remove built-in (native) properties",
                selector: "CallExpression[callee.property.name='removeProp'] > :matches([arguments] Literal[value='disabled'], Literal[value='checked'], Literal[value='selected'], Literal[value='required'], Literal[value='value'], Literal[value='readOnly'])"
            }
        ]
    }
}
