Sample module definition

TypeScript entry point pattern used by first-party modules in modules/.

import type { ModuleContext, ModuleDefinition, ModuleManifest } from '@avanora/module-sdk';
import manifestJson from '../module.manifest.json';

const manifest = manifestJson as unknown as ModuleManifest;

export const definition: ModuleDefinition = {
  manifest,
  lifecycle: {
    install: async (ctx: ModuleContext) => {
      await ctx.audit.log({ action: 'module.install', moduleKey: manifest.key });
    },
    upgrade: async (ctx: ModuleContext, fromVersion: string) => {
      await ctx.migrations.run({ fromVersion });
    },
    uninstall: async (_ctx: ModuleContext) => {},
  },
};