@namestys/schema-bind
v0.11.4
Published
Polywrap Schema Binding
Downloads
8
Readme
@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. |