mirror of
https://github.com/fluencelabs/fluence-js.git
synced 2025-04-25 01:42:13 +00:00
58 lines
2.2 KiB
TypeScript
58 lines
2.2 KiB
TypeScript
import * as platform from 'platform';
|
|
|
|
import { FluencePeer } from '@fluencelabs/js-peer/dist/js-peer/FluencePeer.js';
|
|
import { callAquaFunction } from '@fluencelabs/js-peer/dist/compilerSupport/callFunction.js';
|
|
import { registerService } from '@fluencelabs/js-peer/dist/compilerSupport/registerService.js';
|
|
import { MarineBasedAvmRunner } from '@fluencelabs/js-peer/dist/js-peer/avm.js';
|
|
import { MarineBackgroundRunner } from '@fluencelabs/js-peer/dist/marine/worker/index.js';
|
|
import { marineLogFunction } from '@fluencelabs/js-peer/dist/js-peer/utils.js';
|
|
import { WasmLoaderFromNpm } from '@fluencelabs/js-peer/dist/marine/deps-loader/node.js';
|
|
import { WorkerLoader } from '@fluencelabs/js-peer/dist/marine/worker-script/workerLoader.js';
|
|
|
|
throwIfNotSupported();
|
|
|
|
export const defaultNames = {
|
|
avm: {
|
|
file: 'avm.wasm',
|
|
package: '@fluencelabs/avm',
|
|
},
|
|
marine: {
|
|
file: 'marine-js.wasm',
|
|
package: '@fluencelabs/marine-js',
|
|
},
|
|
};
|
|
|
|
export const createClient = () => {
|
|
const workerLoader = new WorkerLoader();
|
|
const controlModuleLoader = new WasmLoaderFromNpm(defaultNames.marine.package, defaultNames.marine.file);
|
|
const avmModuleLoader = new WasmLoaderFromNpm(defaultNames.avm.package, defaultNames.avm.file);
|
|
|
|
const marine = new MarineBackgroundRunner(workerLoader, controlModuleLoader, marineLogFunction);
|
|
const avm = new MarineBasedAvmRunner(marine, avmModuleLoader, undefined);
|
|
return new FluencePeer(marine, avm);
|
|
};
|
|
|
|
const publicFluenceInterface = {
|
|
clientFactory: createClient,
|
|
defaultClient: createClient(),
|
|
callAquaFunction,
|
|
registerService,
|
|
};
|
|
|
|
// @ts-ignore
|
|
globalThis.fluence = publicFluenceInterface;
|
|
|
|
function throwIfNotSupported() {
|
|
if (platform.name === 'Node.js' && platform.version) {
|
|
const version = platform.version.split('.').map(Number);
|
|
const major = version[0];
|
|
if (major < 16) {
|
|
throw new Error(
|
|
'Fluence JS Client requires node.js version >= "16.x"; Detected ' +
|
|
platform.description +
|
|
' Please update node.js to version 16 or higher.\nYou can use https://nvm.sh utility to update node.js version: "nvm install 17 && nvm use 17 && nvm alias default 17"',
|
|
);
|
|
}
|
|
}
|
|
}
|