@m3r/sdk 0.5.0

Regras e limites

O que a extensão não pode fazer e os tetos do catálogo 0.5.0.

A plataforma fecha o conjunto. Se não está no catálogo, não compile, não valide e não rode.

Proibido

ProibiçãoPor quê
SQLIsolamento multi-tenant. O Core persiste. Tabela física (storage: physical) o Core cria como FAX#### — a extensão não emite DDL.
TypeORM / pgIdem.
React no ERPO host pinta DataTable, Modal e PageHeader.
iframeNão há host iframe nesta versão.
Gerador Python da extensãoPDF usa o tabular do farmus-reports.
Coluna json livreUse string, text, number, boolean, date, enum.

m3r validate recusa o import. Runtime também.

Slugs

CoisaRegexExemplo
Tabela name / coluna^[a-z][a-z0-9_]{1,47}$demo_auditoria, pedido_codigo
Tela / nav / relatório code^[a-z][a-z0-9_.-]{1,62}$demo.auditoria.novo
Tabela física^FAX[0-9]{4}$FAX0001 — só no retorno do ensure ou em physicalName

Não use FAX#### como name lógico. Reservados (não declare): id, company_id, extension_id, created_by, created_at, updated_at, delete_date, table_id.

Unique e soft delete

StorageComo o unique valeremove
documentCore compara as linhas JSONB vivas (FADEV07)softRemove — some do find
physicalCREATE UNIQUE INDEX … WHERE delete_date IS NULL na FAX####delete_date = NOW()

Linha apagada libera o unique. find / tela / relatório não devolvem soft-deleted.

physicalName omitido: sequence fadev_physical_table_seq. Se o número já estiver ocupado (meta ou tabela no Postgres), o Core pula e tenta o próximo. Depois do primeiro ensure, o nome não muda.

Isolamento: companyId + extensionId. Ambiente FADEV02 não separa dado.

Limites de ctx.ext

RecursoTeto
Tabelas por extensão / tenant20
Colunas por tabela30
Bytes por linha64 KB
Itens de menu20
Relatórios10

Validação em três camadas

  1. TypeScript — SdkEntryPoint, SdkEvent, SdkScope, SdkMenuParent.
  2. Runtime — ctx.entryPoints.on("IP.SALES.ORDR…") lança SdkValidationError.
  3. m3r validate — permissions, events, entryPoints existem no catálogo; tables / screens / nav / reports batem 1:1 com o código.

Wired ≠ catalogado

IPs de compras, estoque, financeiro e NF-e existem no catálogo para você declarar no manifest. O Core só invoca os que estão wired. Confira em GET /developer/sdk/catalog e em ctx.capabilities.

Gestão no tenant

Desativar em Configurações → Extensões não é drop. Tabela, record e pacote assinado ficam. Menu, IP e credencial RUN param.

Versão

Esta documentação descreve @m3r/sdk 0.5.0 (SDK_CATALOG.version) e o ciclo do Core em volta (deploy, FADEV11–FADEV13). Troque a versão no seletor da sidebar quando houver snapshot de uma release anterior.