LogoRobo.js
Framework

definePlugin()

Function: definePlugin()

function definePlugin<TClientExtensions, TModelExtensions, TState>(plugin): FlashcorePluginDefinition<TClientExtensions, TModelExtensions, TState>

Define a Flashcore plugin with full type safety.

Type Parameters

Type ParameterDefault type
TClientExtensionsRecord<string, unknown>
TModelExtensionsRecord<string, unknown>
TStateRecord<string, unknown>

Parameters

ParameterType
pluginFlashcorePluginDefinition<TClientExtensions, TModelExtensions, TState>

Returns

FlashcorePluginDefinition<TClientExtensions, TModelExtensions, TState>

Example

export const myPlugin = () => definePlugin({
  name: 'my-plugin',

  setup(ctx) {
    ctx.state.counter = 0
  },

  middleware: {
    async create(params, next) {
      this.state.counter++
      return next()
    },
  },

  modelExtensions: {
    async myMethod(this: FlashcoreModel<any>) {
      return this.findMany({})
    },
  },

  clientExtensions: {
    getStats() {
      return { count: this.state.counter }
    },
  },
})

On this page