/**
 * @since Last modified: 2024-09-12 16:57:35
 * @namespace ax
 * @description This is the software's namespace. To use external modules, components, and utility functions, you need to add the 'ax.' prefix.
 */
'use strict';
import { T_el, T_fn, T_obj } from '../../../types/ax';
import config from './config';
import prefix from './prefix';
import alias from './alias';
import augment from '../utils/augment';
import isEmpty from '../utils/isEmpty';
import extend from '../utils/extend';
type T_ax = {
   frame: number,
   ajaxStorage: number[],
   prefix: string,
   alias:string,
   nameSfx: string,
   messages: T_el[],
   valids: any[],
   config: T_obj,
   augment: T_fn,
   [key: string]: any,
}
const ax: T_ax = {
   frame: 0,
   ajaxStorage: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
   prefix,
   alias,
   nameSfx: '_TMP',
   messages: [],
   valids: [],
   config,
   augment,
   install(vue: T_obj, options?: T_obj) {
      !isEmpty(options) && extend({
         target: this.config,
         source: options,
      });
      vue.config.globalProperties.$ax = this;
   }
}
export default ax;
/**
* @callback T_fn_cb
* @description It is a function commonly used in init, reset and destroy scenarios.
* @param {function} [cb] - It is a callback function and the parameters and returns may be undefined.
* @returns {*} - Any type that depends on the plugin or module.
*/
/**
* @callback T_fn
* @description It is a function with any parameters and any returns.
* @param {*} - There is no limit on the number of parameters or the type of parameters.
* @returns {*} - Any type that depends on the plugin or module.
*/
/**
* @callback T_fn_none
* @description It is a function with no parameters and a definite return.
* @returns {*} - Any type that depends on the plugin or module.
*/
/**
* @callback T_fn_obj
* @description It is a function with only one parameter of object type.
* @param {object} [arg] - Standard object type, such as {a:0,b:1}.
* @returns {*} - Any type that depends on the plugin or module.
*/
/**
* @callback T_fn_update
* @description It is a function for updating and saving parameters.
* @param {object} settings - Parameters to be updated.Standard object type, such as {a:0,b:1}.
* @param {T_fn_obj} [cb] - Callback with the settings parameter.
* @returns {*} - Any type that depends on the plugin or module.
*/
