Adler Faulkner c8d4bfec39
feat: Support seeding pods and accounts
* feat(seeding): seed accounts and pods with seeded-pod-config.json

* feat(seeding): dry up SeededPodInitializer by using RegistrationManager directly and make compatible with version/3.0.0

* feat(seeding): update seed config files to version 3.0.0 context

* feat(seeding): simplify seeded-root config by importing pre-existing prefilled-root config

* feat(seeding): Add seeding as a default initializer, update seeded pod copy and guide, change seeded pod config to array

* feat(seeding): remove template info from seeded pod guide, use mockFs, code style nit, fix redlock test

* feat(seeding): remove old config file
2022-03-10 10:16:05 +01:00

54 lines
1.9 KiB
TypeScript

import type { IModuleState } from 'componentsjs';
import { ComponentsManager } from 'componentsjs';
import { remove } from 'fs-extra';
import { joinFilePath } from '../../src/util/PathUtil';
let cachedModuleState: IModuleState;
/**
* Returns a component instantiated from a Components.js configuration.
*/
export async function instantiateFromConfig(componentUrl: string, configPaths: string | string[],
variables?: Record<string, any>): Promise<any> {
// Initialize the Components.js loader
const mainModulePath = joinFilePath(__dirname, '../../');
const manager = await ComponentsManager.build({ mainModulePath, logLevel: 'error', moduleState: cachedModuleState });
cachedModuleState = manager.moduleState;
if (!Array.isArray(configPaths)) {
configPaths = [ configPaths ];
}
// Instantiate the component from the config(s)
for (const configPath of configPaths) {
await manager.configRegistry.register(configPath);
}
return await manager.instantiate(componentUrl, { variables });
}
export function getTestConfigPath(configFile: string): string {
return joinFilePath(__dirname, 'config', configFile);
}
export function getPresetConfigPath(configFile: string): string {
return joinFilePath(__dirname, '../../config', configFile);
}
export function getTestFolder(name: string): string {
return joinFilePath(__dirname, '../tmp', name);
}
export async function removeFolder(folder: string): Promise<void> {
await remove(folder);
}
export function getDefaultVariables(port: number, baseUrl?: string): Record<string, any> {
return {
'urn:solid-server:default:variable:baseUrl': baseUrl ?? `http://localhost:${port}/`,
'urn:solid-server:default:variable:port': port,
'urn:solid-server:default:variable:loggingLevel': 'off',
'urn:solid-server:default:variable:showStackTrace': true,
'urn:solid-server:default:variable:seededPodConfigJson': null,
};
}