JSPM

  • Created
  • Published
  • Downloads 15228
  • Score
    100M100P100Q172638F
  • License Apache-2.0

III SDK for Node.js

Package Exports

  • iii-sdk
  • iii-sdk/channel
  • iii-sdk/engine
  • iii-sdk/errors
  • iii-sdk/helpers
  • iii-sdk/internal
  • iii-sdk/protocol
  • iii-sdk/runtime
  • iii-sdk/state
  • iii-sdk/stream
  • iii-sdk/trigger

Readme

iii-sdk

Node.js / TypeScript SDK for the iii engine.

npm License

Install

pnpm add iii-sdk
# or: npm install iii-sdk

Hello World

import { registerWorker } from 'iii-sdk'

const iii = registerWorker('ws://localhost:49134')

iii.registerFunction('hello::greet', async (input) => {
  return { message: `Hello, ${input.name}!` }
})

iii.registerTrigger({
  type: 'http',
  function_id: 'hello::greet',
  config: { api_path: '/greet', http_method: 'POST' },
})

const result = await iii.trigger({ function_id: 'hello::greet', payload: { name: 'world' } })

API

Operation Signature Description
Initialize registerWorker(url, options?) Create and connect to the engine. Returns an ISdk instance
Register function iii.registerFunction(id, handler, options?) Register a function that can be invoked by name
Register trigger iii.registerTrigger({ type, function_id, config }) Bind a trigger (HTTP, cron, queue, etc.) to a function
Invoke (await) await iii.trigger({ function_id, payload }) Invoke a function and wait for the result
Invoke (fire-and-forget) iii.trigger({ function_id, payload, action: TriggerAction.Void() }) Invoke without waiting
Invoke (enqueue) iii.trigger({ function_id, payload, action: TriggerAction.Enqueue({ queue }) }) Route invocation through a named queue

Registering Functions

iii.registerFunction('orders::create', async (input) => {
  return { status_code: 201, body: { id: '123', item: input.body.item } }
})

Registering Triggers

iii.registerTrigger({
  type: 'http',
  function_id: 'orders::create',
  config: { api_path: '/orders', http_method: 'POST' },
})

Invoking Functions

import { registerWorker, TriggerAction } from 'iii-sdk'

const iii = registerWorker('ws://localhost:49134')

const result = await iii.trigger({ function_id: 'orders::create', payload: { item: 'widget' } })

iii.trigger({ function_id: 'analytics::track', payload: { event: 'page_view' }, action: TriggerAction.Void() })

Resources