Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/daangn/metabridge
🔗 Defines the communication layer between mobile native(iOS/Android) and webview using JSON Schema and automatically generates SDK code. (TypeScript, Swift, Kotlin)
https://github.com/daangn/metabridge
bridge cli codegen schema typescript webview
Last synced: 3 months ago
JSON representation
🔗 Defines the communication layer between mobile native(iOS/Android) and webview using JSON Schema and automatically generates SDK code. (TypeScript, Swift, Kotlin)
- Host: GitHub
- URL: https://github.com/daangn/metabridge
- Owner: daangn
- Created: 2022-03-04T14:53:54.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2024-02-23T05:58:35.000Z (12 months ago)
- Last Synced: 2024-04-14T03:08:44.921Z (10 months ago)
- Topics: bridge, cli, codegen, schema, typescript, webview
- Language: TypeScript
- Homepage:
- Size: 112 MB
- Stars: 42
- Watchers: 23
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# metabridge
## Usage
```bash
# Install CLI
$ yarn add --dev @metabridge/cli @metabridge/plugin-typescript# Generate code
$ yarn metabridge-cli \
$ --plugin @metabridge/plugin-typescript \
$ --schema ./somewhere/mySchema.json \
$ --output ./somewhere/__generated__/mySdk.ts
``````typescript
import { makeMyBridge } from "./somewhere/__generated__/mySdk";const myBridge = makeMyBridge({
driver: {
onQueried(queryName, req) {
// ...your business logic for transport layer
return res;
},
},
});// It strictly typed
myBridge.pushRouter({
// ...
});
```## Available Plugins
- `@metabridge/plugin-typescript`: TypeScript SDK
- `@metabridge/plugin-typescript-docs`: TypeScript SDK Documentations (for WebView)
- `@metabridge/plugin-kotlin`: Kotlin Stub
- `@metabridge/plugin-swift`: Swift Stub## How to implement the JavaScript `Driver`
Just implement this
```typescript
export interface MetaBridgeDriver {
onQueried: (queryName: string, requestBody: any) => Promise;
onSubscribed: (
subscriptionName: string,
requestBody: any,
listener: (error: Error | null, response: any | null) => void
) => () => void;
}
```## Contributors
- [@tonyfromundefined](https://github.com/tonyfromundefined)