jan/docs/docs/reference/01_init.md
2023-10-27 14:37:20 +07:00

1.5 KiB

title
init

init is the entrypoint for your application and its custom logic. init is a reserved function that Jan will look for to initialize your application.

Usage

Importing

// javascript
const core = require("@janhq/core");

// typescript
import * as core from "@janhq/core";

Setting up event listeners

export function init({ register }) {
  myListener();
}

Setting up core service implementation

export function init({ register }: { register: RegisterExtensionPoint }) {
  register(DataService.GetConversations, "my-app-id", myImplementation);
}

RegisterExtensionPoint

RegisterExtensionPoint is used for app initialization.

It lets you register CoreService functions/methods with the main application.

import { RegisterExtensionPoint } from "@janhq/core";
type RegisterExtensionPoint = (
  extensionName: string,
  extensionId: string,
  method: Function,
  priority?: number
)

invokePluginFunc

invokePluginFunc is a way to invoke your custom functions (defined in your module.ts) from your application client (defined in your index.ts)

// index.ts: your application "frontend" and entrypoint
function foo(id: number) {
  return core.invokePluginFunc(MODULE_PATH, "foo", param1, ...);
}

export function init({ register }: { register: RegisterExtensionPoint }) {
  register(Service.Foo, "my-app-id", foo);
}
// module.ts: your application "backend"
export function foo(param1, ...) {
  // Your code here
}