@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. |