@m3r/sdk 0.5.0
Catálogo da SDK
Fonte de verdade do que a extensão pode implementar — módulos, IPs, eventos, scopes, limites e proibições.
Versão desta doc: 0.5.0 (SDK_CATALOG.version). O catálogo vive em @m3r/sdk (SDK_CATALOG / ctx.capabilities). A API anexa só o que está ligado (wired) em GET /developer/sdk/catalog.
Não copie listas. Importe o const.
Plataforma em cima do 0.5.0
O catálogo da SDK não mudou de versão. O Core e o ERP já fecham o ciclo em volta dele:
- Deploy assinado:
m3r deploy→FADEV11/FADEV12. Production recusa RUN sem install. - Gestão no ERP: ativas / inativas / logs (
FADEV13+FADEV05). - Sample 0.6.1: pastas por domínio;
AFTER_SAVEgravactx.ext.records;openReport:nas actions da tela. - Padrões: árvore, slugs, unique documento vs físico,
SdkMenuParent.
Novidades 0.5.0
- Tabela com
storage: physical: o Core criaFAX0001…FAX9999(FarmusBaseEntity +company_id). A extensão não emite DDL.physicalNameé opcional; omitido = Core atribui e devolve. - Colunas reservadas:
id,company_id,extension_id,created_by,created_at,updated_at,delete_date,table_id. - Evolução só aditiva.
storagenão muda depois doensure.
Novidades 0.4.0
- Relatório: filtro
dateRange/enum/textna coluna declarada (string ou{ type, column?, label? }). - Relatório: export PDF e Excel do mesmo recorte (
GET .../xlsx). - Tela:
ui.hideFieldno ON_LOAD escreen.actionscomopenspara outra tela/modal. - Tela aberta a partir de venda leva
documentId/documentCode; o ON_LOAD recebe o documento. - IPs ligados no host:
ACTION.FULFILL,ACTION.CANCEL,QUICK_SALE.SCREEN.ON_LOAD.
Canais
m3r— dados de negócioevents— depois do fatoentryPoints— no meio do fluxoext— tabela, tela, menu, relatório
Módulos em ctx.m3r
| Módulo | Status |
|---|---|
sales | disponível |
purchase, stock, financial, fiscal | planejado (IPs já existem no catálogo) |
developer | disponível só em ctx.ext / IP.EXT.* |
Const enums
Use o objeto, não o literal:
code de tabela, tela, menu e relatório da sua extensão continua string — é o identificador que você inventa. Tudo que é plataforma é enum.
Limites de ctx.ext
- 20 tabelas por extensão / tenant
- 30 colunas por tabela
- 64 KB por linha
- 20 itens de menu
- 10 relatórios
- tipos de coluna:
string,text,number,boolean,date,enum - storage:
document(JSONB) ouphysical(tabelaFAX####criada pelo Core) physicalNameopcional (FAX0001–FAX9999); omitido = Core atribui e devolve- binds de formulário:
document.id,code,status,observation,customerName,customerId,deliveryDate,orderDocType
Proibido
SQL, React no ERP, TypeORM, iframe, gerador Python próprio, coluna json livre.
Validação
- TypeScript — o handler de um IP recebe o payload daquele código.
- Runtime —
ctx.entryPoints.on("IP.SALES.ORDR…")lançaSdkValidationError. m3r validate—permissions,eventseentryPointsdom3r.jsonprecisam existir no catálogo;tables/screens/nav/reportsbatem 1:1 com o código.- Testes de exaustão — catálogo SDK × mapa tipado × catálogo da API.
