@m3r/sdk 0.5.0
Início rápido da SDK
m3r.json, defineExtension, validate, build e run.
A pasta da extensão é um pacote Node. O CLI (m3r) lê o manifest e o src/index.ts. Instale as Developer Tools antes — marketplace ou .vsix.
my-extension
m3r.json
package.json
tsconfig.json
src
m3r.json declara o que a extensão usa. Os arrays de plataforma (permissions, events, entryPoints) só aceitam valores do catálogo.
{
"schemaVersion": "1",
"id": "my-extension",
"name": "My Extension",
"version": "0.1.0",
"runtime": { "type": "node", "version": "20", "sdk": "^0.5.0", "core": ">=1.0.0 <2.0.0" },
"entry": "src/index.ts",
"permissions": ["sales.order.read", "extension.storage.write"],
"events": ["sales.order.created"],
"entryPoints": ["IP.SALES.ORDER.BEFORE_SAVE"],
"tables": ["demo_auditoria"],
"screens": ["demo.auditoria"],
"nav": ["demo.auditoria"],
"reports": ["demo.auditoria.periodo"]
}
import { defineExtension } from "@m3r/sdk";
import { registerVendas } from "./vendas/register";
export default defineExtension({
async activate(ctx) {
await registerVendas(ctx);
}
});
O primeiro projeto pode caber num arquivo. Quando houver tabela + tela + IP, fatie: Padrões. O m3r validate lê src/**/*.ts, não só o index.
Rodar
m3r validate
m3r build
m3r deploy # obrigatório em production; o Core assina o .m3rx
m3r run
m3r deploy pede M3R_API_URL, M3R_DEVELOPER_TOKEN, M3R_ORGANIZATION_ID e M3R_ENVIRONMENT_ID.
Command Palette → M3R: Deploy Extension, depois M3R: Run Extension. Produção recusa Run sem install.