index.js

/**
 * Plugin factory
 *
 * @param {string} pkgName - NPM package name
 * @returns {class}
 */
async function factory (pkgName) {
  const me = this

  /**
   * WaibuAlpinejs class
   *
   * @class
   */
  class WaibuAlpinejs extends this.app.pluginClass.base {
    static alias = 'walp'
    static dependencies = ['waibu-static']

    constructor () {
      super(pkgName, me.app)
      this.config = {
        plugins: ['mask', 'persist', 'resize'],
        waibu: {
          prefix: 'alpinejs'
        }
      }
    }

    retainAttrKey = (key) => {
      return key.startsWith('x-') || key.includes(':') || key.startsWith('@')
    }

    stripAttrKeys = (attr) => {
      const result = {}
      for (const key in attr) {
        if (!this.retainAttrKey(key)) result[key] = attr[key]
      }
      return result
    }
  }

  return WaibuAlpinejs
}

export default factory