@polywrap/schema-bind

v0.10.4
Polywrap Schema Binding

@polywrap/schema-bind

Bind WRAP ABIs to a variety of supported languages through codegen.

Usage

import { BindOptions, BindOutput, bindSchema } from "@polywrap/schema-bind";
import { parseSchema } from "@polywrap/schema-parse";

const schema = fetch("schema.graphql");
const abi = parseSchema(schema);

const input: BindOptions = {
  projectName: "Test",
  bindLanguage: "wasm-as",
  abi,
  schema,
  outputDirAbs: "/path/to/output/dir"
};

const output: BindOutput = bindSchema(input);

Details

Polywrap uses MessagePack as a common data interchange format between languages. This allows Polywrap WASM modules, authored in different languages, to be run within a single host language (JS, Rust, Python, Go, C#, C++).

MessagePack encoded data is sent between module boundaries. Decoding of the message will happen in the destination environment, using generated binding code, created by this package.

Supported Schema Types

GraphQL Schema Type MessagePack Type Description
UInt uint 32 32-bit unsigned integer.
UInt8 uint 8 8-bit unsigned integer.
UInt16 uint 16 16-bit unsigned integer.
UInt32 uint 32 32-bit unsigned integer.
Int int 32 32-bit signed integer.
Int8 int 8 8-bit signed integer.
Int16 int 16 16-bit signed integer.
Int32 int 32 32-bit signed integer.
String fixstr or str 8/16/32 UTF-8 string.
Boolean bool true or false stored as 1 byte.
Bytes bin 8/16/32 array of 8-bit unsigned integer.
BigInt fixstr or str 8/16/32 UTF-8 string.
BigNumber fixstr or str 8/16/32 UTF-8 string.
JSON fixstr or str 8/16/32 UTF-8 string.
[Type] fixarray or array 16/32 Array of elements.
Map Msgpack extention type Map of key-value pairs.
type CustomObject {
  prop: Type
}
fixmap or map 16/32 Structured object.
npm i @polywrap/[email protected]

Metadata

  • MIT
  • Whatever
  • Unknown
  • released 6/19/2023

Downloads