flecks/packages/server/src/entry.js

50 lines
1.3 KiB
JavaScript
Raw Normal View History

2022-02-25 04:58:08 -06:00
import {mkdir} from 'fs/promises';
import {tmpdir} from 'os';
import {join} from 'path';
2024-01-05 15:52:29 -06:00
import {compose, D} from '@flecks/core';
import {Flecks as BaseFlecks} from '@flecks/core/server';
2022-02-25 04:58:08 -06:00
const {version} = require('../package.json');
(async () => {
2022-03-24 05:30:10 -05:00
const {config, loadFlecks, platforms} = await __non_webpack_require__('@flecks/server/runtime');
2022-02-25 04:58:08 -06:00
// eslint-disable-next-line no-console
console.log(`flecks server v${version}`);
try {
2022-03-01 14:28:53 -06:00
await mkdir(join(tmpdir(), 'flecks'), {recursive: true});
2022-02-25 04:58:08 -06:00
}
catch (error) {
if ('EEXIST' !== error.code) {
throw error;
}
}
2023-12-04 04:29:33 -06:00
const debug = D('@flecks/server/entry');
2022-02-25 04:58:08 -06:00
debug('starting server...');
2022-03-24 05:30:10 -05:00
// Make resolver.
2024-01-05 15:52:29 -06:00
// Flecks mixins.
2024-01-05 22:49:02 -06:00
const resolver = BaseFlecks.makeResolver(config);
const rcs = BaseFlecks.loadRcs(resolver);
BaseFlecks.installCompilers(rcs, resolver);
2024-01-05 15:52:29 -06:00
const flecks = await loadFlecks();
const mixins = Object.entries(flecks)
.map(([, M]) => M.hooks?.['@flecks/core.mixin'])
.filter((e) => e);
const Flecks = compose(...mixins)(BaseFlecks);
2022-03-24 05:30:10 -05:00
global.flecks = new Flecks({
config,
2024-01-05 15:52:29 -06:00
flecks,
2022-03-24 05:30:10 -05:00
platforms,
resolver,
rcs,
});
2022-02-25 04:58:08 -06:00
try {
await Promise.all(global.flecks.invokeFlat('@flecks/core.starting'));
await global.flecks.invokeSequentialAsync('@flecks/server.up');
2022-02-25 04:58:08 -06:00
debug('up!');
}
catch (error) {
debug(error);
}
})();