mirror of
https://github.com/fluencelabs/fluence-js.git
synced 2025-04-02 15:31:03 +00:00
* * Separate marine worker as a package * Trying to fix tests * Finalizing test fixes * fix: rename back to Fluence CLI (#320) chore: rename back to Fluence CLI * fix(deps): update dependency @fluencelabs/avm to v0.43.1 (#322) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore: release master (#324) * chore: release master * chore: Regenerate pnpm lock file * feat: use marine-js 0.7.2 (#321) * use marine-js 0.5.0 * increace some timeouts * increace some timeouts * use latest marine + remove larger timeouts * propagate CallParameters type * use marine 0.7.2 * Temp use node 18 and 20 * Comment out node 20.x --------- Co-authored-by: Anatoly Laskaris <github_me@nahsi.dev> * chore: Fix test with node 18/20 error message (#323) * Fix test with node 18/20 error message * Run tests on node 18 and 20 * Enhance description * Fix type and obj property --------- Co-authored-by: Anatoly Laskaris <github_me@nahsi.dev> * * Separate marine worker as a package * Trying to fix tests * Finalizing test fixes * * Refactoring packages. * Using CDN to load .wasm deps. * Setting up tests for new architecture * Fix almost all tests * Fix last strange test * Remove package specific packages * Remove avm class as it looks excessive * marine worker new version * misc refactoring/remove console.log's * Rename package js-peer to js-client * Move service info to marine worker * Change CDN path * Fix worker race confition * Remove buffer type * Remove turned off headless mode in platform tests * Remove async keyword to make tests pass * Remove util package * Make js-client.api package just reexport interface from js-client main package * Update package info in CI * Fix review comments * Remove test entry from marine-worker package * Misc fixes * Fix worker type * Add fetchers * Specify correct versions for js-client package * Set first ver for js-client * Update libp2p and related dep versions to the latest * Build all deps into package itself * Fix review * Refine package * Fix comment * Update packages/core/js-client/src/fetchers/browser.ts * Update packages/core/js-client/src/fetchers/index.ts * Update packages/core/js-client/src/fetchers/node.ts * Update packages/core/js-client/src/jsPeer/FluencePeer.ts * Update packages/core/js-client/src/keypair/__test__/KeyPair.spec.ts * Update packages/core/js-client/src/jsPeer/FluencePeer.ts Co-authored-by: shamsartem <shamsartem@gmail.com> * Delete outdated file * Need types for build to work * Inline func call * Add comments to replacement lines. P.S. we can remove some of them after update libp2p --------- Co-authored-by: shamsartem <shamsartem@gmail.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: fluencebot <116741523+fluencebot@users.noreply.github.com> Co-authored-by: Valery Antopol <valery.antopol@gmail.com> Co-authored-by: Anatoly Laskaris <github_me@nahsi.dev>
103 lines
3.7 KiB
TypeScript
103 lines
3.7 KiB
TypeScript
import path, { dirname } from 'path';
|
|
import type { InlineConfig, PluginOption } from 'vite';
|
|
import { build } from 'vite';
|
|
import { builtinModules, createRequire } from 'module';
|
|
import tsconfigPaths from 'vite-tsconfig-paths';
|
|
import inject from '@rollup/plugin-inject';
|
|
import stdLibBrowser from 'node-stdlib-browser';
|
|
import { fileURLToPath } from 'url';
|
|
import { rm, rename } from 'fs/promises';
|
|
import { replaceCodePlugin } from 'vite-plugin-replace';
|
|
import pkg from './package.json' assert { type: 'json' };
|
|
import libAssetsPlugin from '@laynezh/vite-plugin-lib-assets';
|
|
|
|
const require = createRequire(import.meta.url);
|
|
|
|
const commonConfig = (isNode: boolean): InlineConfig & Required<Pick<InlineConfig, 'build'>> => {
|
|
const esbuildShim = require.resolve('node-stdlib-browser/helpers/esbuild/shim');
|
|
return {
|
|
build: {
|
|
target: 'modules',
|
|
minify: 'esbuild',
|
|
lib: {
|
|
entry: './src/index.ts',
|
|
name: 'js-client',
|
|
fileName: `${isNode ? 'node' : 'browser'}/index`,
|
|
},
|
|
outDir: './dist',
|
|
emptyOutDir: false,
|
|
...(isNode ? {
|
|
rollupOptions: {
|
|
external: [...builtinModules, ...builtinModules.map(bm => `node:${bm}`)],
|
|
plugins: [
|
|
// @ts-ignore
|
|
inject({
|
|
self: 'global',
|
|
'WorkerScope': ['worker_threads', '*'],
|
|
'Worker': ['worker_threads', 'Worker'],
|
|
'isMainThread': ['worker_threads', 'isMainThread'],
|
|
})
|
|
]
|
|
}
|
|
} : {
|
|
rollupOptions: {
|
|
plugins: [
|
|
{
|
|
// @ts-ignore
|
|
...inject({
|
|
global: [esbuildShim, 'global'],
|
|
process: [esbuildShim, 'process'],
|
|
Buffer: [esbuildShim, 'Buffer']
|
|
}), enforce: 'post'
|
|
}
|
|
],
|
|
}
|
|
})
|
|
},
|
|
plugins: [tsconfigPaths(), libAssetsPlugin({
|
|
include: ['**/*.wasm*', '**/marine-worker.umd.cjs*'],
|
|
publicUrl: '/',
|
|
}), ...(isNode ? [replaceCodePlugin({
|
|
replacements: [
|
|
// After 'threads' package is built, it produces wrong output, which throws runtime errors.
|
|
// This code aims to fix such places.
|
|
// Should remove this after we move from threads to other package.
|
|
{ from: 'eval("require")("worker_threads")', to: 'WorkerScope' },
|
|
{ from: 'eval("require")("worker_threads")', to: 'WorkerScope' },
|
|
]
|
|
})] : [])] as PluginOption[],
|
|
optimizeDeps: {
|
|
esbuildOptions: {
|
|
define: {
|
|
global: 'globalThis',
|
|
},
|
|
},
|
|
},
|
|
resolve: {
|
|
browserField: !isNode,
|
|
conditions: isNode ? ['node'] : ['browser']
|
|
},
|
|
// Used only by browser
|
|
define: {
|
|
__JS_CLIENT_VERSION__: pkg.version,
|
|
__ENV__: isNode ? 'node' : 'browser'
|
|
},
|
|
};
|
|
};
|
|
|
|
const buildClient = async () => {
|
|
const nodeConfig = commonConfig(true);
|
|
const browserConfig = commonConfig(false);
|
|
|
|
try {
|
|
await rm('./dist', { recursive: true });
|
|
} catch {}
|
|
|
|
await build(nodeConfig);
|
|
await build(browserConfig);
|
|
};
|
|
|
|
buildClient()
|
|
.then(() => console.log('Built successfully'))
|
|
.catch((err) => console.error('failed', err));
|