Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gregros/typed-wamp
A set of type definitions and convenience wrappers for working with WAMP messages using JS and TS.
https://github.com/gregros/typed-wamp
Last synced: 9 days ago
JSON representation
A set of type definitions and convenience wrappers for working with WAMP messages using JS and TS.
- Host: GitHub
- URL: https://github.com/gregros/typed-wamp
- Owner: GregRos
- License: mit
- Created: 2019-12-31T17:27:41.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2023-01-05T03:58:18.000Z (almost 2 years ago)
- Last Synced: 2024-12-06T19:54:50.093Z (28 days ago)
- Language: TypeScript
- Size: 1.48 MB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 15
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# typed-wamp
[![Build Status](https://travis-ci.org/GregRos/typed-wamp.svg?branch=master)](https://travis-ci.org/GregRos/typed-wamp)[![codecov](https://codecov.io/gh/GregRos/typed-wamp/branch/master/graph/badge.svg)](https://codecov.io/gh/GregRos/typed-wamp)[![npm version](https://badge.fury.io/js/typed-wamp.svg)](https://badge.fury.io/js/typed-wamp)
This is a package that provides accurate TypeScript type definitions and basic message wrappers for the WAMP protocol.
This package doesn't do much by itself. It lets other code, like client and router implementations, use a uniform set of typed and wrappers for working with the WAMP protocol.
## Wrappers and Enums
These work in both JS and TS.
### Message Type Codes
Via the `WampType` enum:
```typescript
import { WampType } from "typed-wamp";let x = WampType.HELLO;
let y = WampType.GOODBYE;
```### WAMP Message Wrapper Objects
These are object versions of WAMP messages, that support properties and methods. They are easier to work with than naked arrays.
Craft using a constructor:
```typescript
import { Wamp } from "typed-wamp";let msgGoodbye = new Wamp.Goodbye({}, "goodbye reason");
let msgHello = new Wamp.Hello("realm", { /* ... */ });
```Parse from an array object:
```typescript
let raw = [1, "realm", helloDetails];
let parsed = Wamp.parse(raw);
```Turn back to raw form:
```typescript
let raw2 = parsed.toRaw();
console.log(raw2); // [1, "realm", helloDetails]
```### Common URIs
URIs mentioned in the WAMP specification.
```typescript
import { WampUri } from "typed-wamp";let reason = WampUri.Error.NotAuthorized; // wamp.error.not_authorized
let onRegisterTopicName = WampUri.Registration.OnRegister; // wamp.registration.on_register
```## Type Definitions
These only make sense from TypeScript.
### WAMP Message Structure Definitions
These are in the namespace `WampRaw`.
```typescript
import { WampRaw, WampType } from "typed-wamp";
import { WampType } from "typed-wamp";let x: WampRaw.Hello = [WampType.HELLO, "realm", {...}];
```### WAMP Options Type Definitions
Type definitions for things like the HELLO message `details` field.
```typescript
import {HelloDetails} from "typed-wamp";let helloDetails: HelloDetails = {
agent: "wampus",
roles: {
publisher: {
features: {
subscriber_blackwhite_listing: true
}
}
},
// ...
};
```## Limitations
This package intentionally doesn't address any specific authentication method, so it doesn't include specific wrappers for `wampcra` authentication (except for wrappers and types describing general `Challenge` and `Authenticate` messages).