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.
|
|
|
|
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
|
|
|
const resolver = Flecks.makeResolver(config);
|
|
|
|
const rcs = Flecks.loadRcs(resolver);
|
|
|
|
Flecks.installCompilers(rcs, resolver);
|
|
|
|
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 {
|
2022-08-10 10:09:02 -05:00
|
|
|
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);
|
|
|
|
}
|
|
|
|
})();
|