'use strict'; const require_runtime = require('../_virtual/_rolldown/runtime.js'); const require_index = require('../utils/index.js'); //#region lib/rules/component-api-style.js /** * @author Yosuke Ota * See LICENSE file in root directory for full license. */ var require_component_api_style = /* @__PURE__ */ require_runtime.__commonJSMin(((exports, module) => { const utils = require_index.default; /** * @typedef { 'script-setup' | 'composition' | 'composition-vue2' | 'options' } PreferOption * * @typedef {PreferOption[]} UserPreferOption * * @typedef {object} NormalizeOptions * @property {object} allowsSFC * @property {boolean} [allowsSFC.scriptSetup] * @property {boolean} [allowsSFC.composition] * @property {boolean} [allowsSFC.compositionVue2] * @property {boolean} [allowsSFC.options] * @property {object} allowsOther * @property {boolean} [allowsOther.composition] * @property {boolean} [allowsOther.compositionVue2] * @property {boolean} [allowsOther.options] */ /** @type {PreferOption[]} */ const STYLE_OPTIONS = [ "script-setup", "composition", "composition-vue2", "options" ]; /** * Normalize options. * @param {any[]} options The options user configured. * @returns {NormalizeOptions} The normalized options. */ function parseOptions(options) { /** @type {NormalizeOptions} */ const opts = { allowsSFC: {}, allowsOther: {} }; /** @type {UserPreferOption} */ const preferOptions = options[0] || ["script-setup", "composition"]; for (const prefer of preferOptions) switch (prefer) { case "script-setup": opts.allowsSFC.scriptSetup = true; break; case "composition": opts.allowsSFC.composition = true; opts.allowsOther.composition = true; break; case "composition-vue2": opts.allowsSFC.compositionVue2 = true; opts.allowsOther.compositionVue2 = true; break; case "options": opts.allowsSFC.options = true; opts.allowsOther.options = true; break; } if (!opts.allowsOther.composition && !opts.allowsOther.compositionVue2 && !opts.allowsOther.options) { opts.allowsOther.composition = true; opts.allowsOther.compositionVue2 = true; opts.allowsOther.options = true; } return opts; } const OPTIONS_API_OPTIONS = new Set([ "mixins", "extends", "data", "computed", "methods", "watch", "provide", "inject", "beforeCreate", "created", "beforeMount", "mounted", "beforeUpdate", "updated", "activated", "deactivated", "beforeDestroy", "beforeUnmount", "destroyed", "unmounted", "render", "renderTracked", "renderTriggered", "errorCaptured", "expose" ]); const COMPOSITION_API_OPTIONS = new Set(["setup"]); const COMPOSITION_API_VUE2_OPTIONS = new Set([ "setup", "render", "renderTracked", "renderTriggered" ]); const LIFECYCLE_HOOK_OPTIONS = new Set([ "beforeCreate", "created", "beforeMount", "mounted", "beforeUpdate", "updated", "activated", "deactivated", "beforeDestroy", "beforeUnmount", "destroyed", "unmounted", "renderTracked", "renderTriggered", "errorCaptured" ]); /** * @typedef { 'script-setup' | 'composition' | 'options' } ApiStyle */ /** * @param {object} allowsOpt * @param {boolean} [allowsOpt.scriptSetup] * @param {boolean} [allowsOpt.composition] * @param {boolean} [allowsOpt.compositionVue2] * @param {boolean} [allowsOpt.options] */ function buildAllowedPhrase(allowsOpt) { const phrases = []; if (allowsOpt.scriptSetup) phrases.push("`