-
Notifications
You must be signed in to change notification settings - Fork 38
/
utils.ts
28 lines (26 loc) · 868 Bytes
/
utils.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import { IDeploySpec } from '@yuants/extension';
import { from, lastValueFrom, toArray } from 'rxjs';
import { bundleCode } from '../Agent/utils';
export const loadManifests = async (entry: string) => {
const module: () => AsyncIterable<IDeploySpec> = await importModule(entry);
return await lastValueFrom(
from(module()).pipe(
//
toArray(),
),
);
};
export const importModule = async (entry: string) => {
const code = await bundleCode(entry);
const module = new Function('DeployContext', `return ${code}`).call(undefined, { bundleCode });
if (module.__esModule) {
if (typeof module.default === 'function') {
return module.default;
}
throw new Error(`Module must export default function`);
}
if (typeof module !== 'function') {
throw new Error('Module must export default function');
}
return module;
};