Skip to content
/ cap-ts Public
forked from philgresh/cap-ts-1

Common Alerting Protocol (CAP) (ITU X.1303) Library in TypeScript

License

Notifications You must be signed in to change notification settings

dec112/cap-ts

 
 

Repository files navigation

Common Alerting Protocol (CAP) in TypeScript

This library should allow parsing and writing of CAP (Common Alerting Protocol) messages.

Install

@dec112/cap-ts is publicly available on the npm registry.

npm install @dec112/cap-ts

Build

# install dependencies
npm install

# build sources
npm run build

Example

Creating a CAP alert

import {
  AlertBuilder,
  Category,
  Certainty,
  InfoBuilder,
  MsgType,
  Scope,
  Severity,
  Status,
  Urgency,
} from '@dec112/cap-ts/builder';

const info = new InfoBuilder(
  // event
  'Fire in shopping mall',
  Urgency.immediate,
  Severity.extreme,
  Certainty.observed,
  [Category.fire],
);

const alert = new AlertBuilder(
  // alert ID
  'ca15f4ac-7ee9-4391-a9da-a75f1c3374dd',
  // sender ID
  'http://shopping.com/sensors/fire/386',
  new Date().toISOString(),
  Status.actual,
  MsgType.alert,
  Scope.restricted,
);

// add info to alert
alert.info_list = [info];

const xmlString = alert.build().toXML();

Using strings to derive corresponding enum values

import {
  AlertBuilder,
  Category,
  Certainty,
  FromString,
  InfoBuilder,
  MsgType,
  Scope,
  Severity,
  Status,
  Urgency,
} from '@dec112/cap-ts/builder';

// ############################################
// Of course these examples do not make much sense
// as they use string literals and could therefore
// simply replaced by the enums itself
// However this is handy if the enum string
// is available in a variable and the corresponding
// internal enum value needs to be retreived from it
// ############################################
const info = new InfoBuilder(
  // event
  'Fire in shopping mall',
  FromString.getUrgency('immediate') ?? Urgency.unknown,
  FromString.getSeverity('extreme') ?? Severity.unknown,
  FromString.getCertainty('observed') ?? Certainty.unknown,
  [FromString.getCategory('fire') ?? Category.other],
);

const alert = new AlertBuilder(
  // alert ID
  'ca15f4ac-7ee9-4391-a9da-a75f1c3374dd',
  // sender ID
  'http://shopping.com/sensors/fire/386',
  new Date().toISOString(),
  FromString.getStatus('actual') ?? Status.actual,
  FromString.getMsgType('alert') ?? MsgType.alert,
  FromString.getScope('restricted') ?? Scope.restricted,
);

// add info to alert
alert.info_list = [info];

const xmlString = alert.build().toXML();

Parsing a CAP alert

import { CAP_1_2 } from "@dec112/cap-ts";

try {
  const alert = await CAP_1_2.Alert.fromXML('<?xml version="1.0" ... >')
} catch {
  // parsing went wrong
}

Thank You!

A big thank you to JonathanWilbur who initiated this project and to Philgresh who added valuable tests to this project.

This project has received funding from Netidee Call 17.


License

MIT License

About

Common Alerting Protocol (CAP) (ITU X.1303) Library in TypeScript

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 98.7%
  • Dockerfile 1.3%