@k-msg/template
Single source of truth for K-Message template runtime lifecycle, payload validation, and personalization.
Installation
Section titled “Installation”npm install @k-msg/template @k-msg/core# orbun add @k-msg/template @k-msg/coreRuntime API (@k-msg/template)
Section titled “Runtime API (@k-msg/template)”Main exports focus on runtime-safe template workflows:
TemplateLifecycleServiceTemplatePersonalizer,defaultTemplatePersonalizer,TemplateVariableUtilsinterpolatevalidateTemplatePayload,parseTemplateButtons- low-level parsers (
ButtonParser,VariableParser,TemplateValidator)
Lifecycle Service
Section titled “Lifecycle Service”import { TemplateLifecycleService } from "@k-msg/template";import type { TemplateProvider } from "@k-msg/core";
const provider: TemplateProvider = /* your provider */;const templates = new TemplateLifecycleService(provider);
await templates.create({ name: "OTP Verification", content: "[MyApp] Code: #{code}",});Runtime Validation
Section titled “Runtime Validation”import { parseTemplateButtons, validateTemplatePayload } from "@k-msg/template";
const buttons = parseTemplateButtons('[{"type":"WL","name":"Open","url_mobile":"https://example.com"}]');if (buttons.isFailure) throw buttons.error;
const payload = validateTemplatePayload( { name: "Notice", content: "Hello #{name}", buttons: buttons.value, }, { requireName: true, requireContent: true },);
if (payload.isFailure) throw payload.error;Personalization
Section titled “Personalization”import { TemplateVariableUtils } from "@k-msg/template";
const rendered = TemplateVariableUtils.replace("Hello #{name}", { name: "Jane",});// "Hello Jane"Toolkit API (@k-msg/template/toolkit)
Section titled “Toolkit API (@k-msg/template/toolkit)”Builder/registry/testing helpers are exposed separately:
TemplateBuilder,TemplateBuildersTemplateRegistryInMemoryTemplateStore
import { TemplateRegistry, TemplateBuilders } from "@k-msg/template/toolkit";
const registry = new TemplateRegistry();const template = TemplateBuilders.authentication("OTP", "mock") .code("OTP_001") .content("Code: #{code}") .build();
await registry.register(template);License
Section titled “License”MIT