Integration Libraries
The following libraries and packages integrate Oicana into different tech stacks. The usual functionality is registration of a template and compilation to different output formats with given inputs.
For all integrations, you can find open source example applications on GitHub.
Browser
Section titled “Browser”https://www.npmjs.com/package/@oicana/browser
Oicana can run in browsers as WebAssembly. The @oicana/browser npm package contains a typed interface for interaction with the .wasm file. To not block the UI, it’s advisable to compile templates in a web worker.
An example application using Oicana in a React app can be found on GitHub.
Initializing the WASM file
Section titled “Initializing the WASM file”Oicana’s WebAssembly file has to be hosted as part of your frontend application. The initialization method expects the path to the hosted file. If your bundler supports it, the easiest way to get that URL is via import wasmUrl from '@oicana/browser-wasm/oicana_browser_wasm_bg.wasm?url'.
https://www.nuget.org/packages/Oicana
The nuget package Oicana has a native interface to work with Oicana templates from C#.
An example ASP.NET project using the package can be found on GitHub.
The com.oicana:oicana Maven package provides a native JNI interface to work with Oicana templates from Java. It uses native bindings for optimal performance on the server.
In addition to the main package, you need to add the native dependency for your target platform(s):
| Platform | Artifact |
|---|---|
| Linux x86_64 | com.oicana:oicana-linux-x86_64 |
| Linux aarch64 | com.oicana:oicana-linux-aarch64 |
| macOS x86_64 | com.oicana:oicana-macos-x86_64 |
| macOS aarch64 | com.oicana:oicana-macos-aarch64 |
| Windows x86_64 | com.oicana:oicana-windows-x86_64 |
For example, in Gradle:
dependencies { implementation("com.oicana:oicana:0.1.0-alpha.3") runtimeOnly("com.oicana:oicana-linux-x86_64:0.1.0-alpha.3")}You can add multiple native dependencies if your team uses different platforms. Only the matching native library will be loaded at runtime.
An example Spring Boot application using the package can be found on GitHub.
Node.js
Section titled “Node.js”https://www.npmjs.com/package/@oicana/node
The npm package @oicana/node provides a native Node.js interface to work with Oicana templates. It uses native bindings for optimal performance on the server.
An example NestJS application using the package can be found on GitHub.
https://crates.io/crates/oicana
The oicana crate allows you to compile Oicana templates directly in Rust projects. This integration provides the most direct access to Oicana’s core functionality.
An example Axum application using this crate can be found on GitHub.
Python
Section titled “Python”https://pypi.org/project/oicana/
The oicana Python package provides native bindings to work with Oicana templates from Python. It uses native extensions for optimal performance.
An example FastAPI application using the package can be found on GitHub.
The oicana/oicana Composer package provides a native PHP extension to work with Oicana templates. It uses native bindings for optimal performance.
An example PHP Slim application using the package can be found on GitHub.