"use strict";
const require_runtime = require("../_virtual/_rolldown/runtime.js");
const require_index = require("../utils/index.js");
//#region lib/rules/no-deprecated-destroyed-lifecycle.js
/**
* @author Yosuke Ota
* See LICENSE file in root directory for full license.
*/
var require_no_deprecated_destroyed_lifecycle = /* @__PURE__ */ require_runtime.__commonJSMin(((exports, module) => {
	const utils = require_index.default;
	/**
	* @param {RuleFixer} fixer
	* @param {Property} property
	* @param {string} newName
	*/
	function fix(fixer, property, newName) {
		if (property.computed) {
			if (property.key.type === "Literal" || property.key.type === "TemplateLiteral") return fixer.replaceTextRange([property.key.range[0] + 1, property.key.range[1] - 1], newName);
			return null;
		}
		if (property.shorthand) return fixer.insertTextBefore(property.key, `${newName}:`);
		return fixer.replaceText(property.key, newName);
	}
	module.exports = {
		meta: {
			type: "problem",
			docs: {
				description: "disallow using deprecated `destroyed` and `beforeDestroy` lifecycle hooks (in Vue.js 3.0.0+)",
				categories: ["vue3-essential"],
				url: "https://eslint.vuejs.org/rules/no-deprecated-destroyed-lifecycle.html"
			},
			fixable: "code",
			schema: [],
			messages: {
				deprecatedDestroyed: "The `destroyed` lifecycle hook is deprecated. Use `unmounted` instead.",
				deprecatedBeforeDestroy: "The `beforeDestroy` lifecycle hook is deprecated. Use `beforeUnmount` instead."
			}
		},
		/** @param {RuleContext} context */
		create(context) {
			return utils.executeOnVue(context, (obj) => {
				const destroyed = utils.findProperty(obj, "destroyed");
				if (destroyed) context.report({
					node: destroyed.key,
					messageId: "deprecatedDestroyed",
					fix(fixer) {
						return fix(fixer, destroyed, "unmounted");
					}
				});
				const beforeDestroy = utils.findProperty(obj, "beforeDestroy");
				if (beforeDestroy) context.report({
					node: beforeDestroy.key,
					messageId: "deprecatedBeforeDestroy",
					fix(fixer) {
						return fix(fixer, beforeDestroy, "beforeUnmount");
					}
				});
			});
		}
	};
}));
//#endregion
Object.defineProperty(exports, "default", {
	enumerable: true,
	get: function() {
		return require_no_deprecated_destroyed_lifecycle();
	}
});
