@m3r/sdk 0.5.0

ctx.subscriptions

Tudo que on() devolve entra aqui. O runtime dispose depois do deactivate.

ctx.events.on e ctx.entryPoints.on devolvem um Disposable. Empilhe no store — não guarde numa variável para “lembrar de limpar”.

src/index.ts
ctx.subscriptions.add(
  ctx.events.on(SdkEvent.SalesOrderCreated, handler)
);
ctx.subscriptions.add(
  ctx.entryPoints.on(SdkEntryPoint.SalesOrderBeforeSave, onSave)
);
class DisposableStore {
  add<T extends Disposable>(disposable: T): T;
  disposeAll(): Promise<void>;
}

add devolve o mesmo objeto. dispose() e unsubscribe() (eventos) são equivalentes.

Ciclo

  1. activate — só aqui você registra.
  2. Extensão running — handlers vivos.
  3. deactivate — você solta timer/socket seu.
  4. Runtime chama subscriptions.disposeAll() depois do deactivate.
  5. Um dispose que joga não bloqueia os outros.

Pode / não pode

Pode

  • add de um Disposable próprio, por exemplo { dispose: () => clearInterval(id) }.
  • Chamar add várias vezes.

Não pode

  • Registrar on() no deactivate.
  • dispose() na mão o que já está no store (o runtime faz).
  • Esquecer o add: o handler vaza até o processo morrer.