@orditjs/core
v0.2.1-beta.5
Published
Core de libreria Ordit v2: normalizacion y contratos runtime sin framework ni discovery.
Readme
@orditjs/core
Core building blocks for Ordit-compatible runtimes.
Use this package when you want to normalize Ordit binding definitions or build a
custom runtime/host that speaks the same contracts as the ordit framework.
It depends on @orditjs/contracts and deliberately avoids framework discovery,
Node-specific sandboxing, CLI code and vendor SDKs.
Install
npm install @orditjs/core @orditjs/contractsWhat is inside
NormalizeBindingDefinition: validates aBindingDefinitionDraftand applies deterministic defaults.RuntimeEngine: executes a normalizedBindingDefinitionagainst aRuntimeEnvelopeusing injected ports.BindingDefinitionValidationError: deterministic validation failure for invalid binding drafts.- Runtime DTOs:
RuntimeEngineRequest,RuntimeEngineResult,RuntimeEngineStatus.
Normalize a binding
import { NormalizeBindingDefinition } from '@orditjs/core'
const binding = new NormalizeBindingDefinition().execute({
name: 'normalize-user',
triggers: [
{
type: 'http',
key: 'http.POST.users',
method: 'POST',
path: '/users',
eventType: 'user.received',
},
],
})
console.log(binding.handler.cwd)
// functions/normalize-userExecute through ports
RuntimeEngine does not load files, spawn Node processes or publish to real
brokers by itself. You inject adapters that implement the contracts from
@orditjs/contracts.
import { RuntimeEngine } from '@orditjs/core'
import { createEnvelope, createEvent } from '@orditjs/contracts'
const engine = new RuntimeEngine(
sandboxRunner,
publisher,
executionLedger,
idempotencyStore,
retryEngine
)
const result = await engine.execute({
executionId: 'exec-1',
binding,
input: createEnvelope(createEvent('user.received', { userId: 'u-1' }), {
messageId: 'msg-1',
correlationId: 'corr-1',
occurredAt: new Date().toISOString(),
metadata: {},
}),
receivedAt: new Date().toISOString(),
})
console.log(result.status)Adapter responsibilities
SandboxRunner: executes handler code and returns outputs/logs.Publisher: publishes produced envelopes.ExecutionLedger: stores started/completed/failed executions.IdempotencyStore: rejects duplicate execution keys.RetryEngine: decides whether another attempt is allowed.
Package boundary
@orditjs/core is library behavior, not the full framework. Use ordit if you
want the ready-to-use package. Use @orditjs/core if you are building a custom
Ordit-compatible runtime, integration or host.
