/
settings.ts
86 lines (80 loc) · 2.85 KB
/
settings.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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import * as NodeRED from 'node-red-interfaces';
import * as when from 'when';
import {SceneManager} from './scene-manager';
import {IStorageApi, IRuntimeFlowConfig} from 'node-red-interfaces';
import {SceneStorage} from './scene-storage';
import {SceneFlows} from './scene-flows';
import {ConsoleLogger} from './console-logger';
import {join} from 'path';
module Settings {
export function createSettings(
opts: {
config?: NodeRed.Scenes.IConfig,
sceneManager?: NodeRed.Scenes.ISceneManager,
storageModule?: SceneStorage,
globalContext?: any,
flows?: SceneFlows,
logger?: NodeRed.Scenes.ILogger
})
: {
settings: NodeRED.ISettings,
flows: SceneFlows,
scenes: NodeRed.Scenes.ISceneManager,
config: NodeRed.Scenes.IConfig,
logger: NodeRed.Scenes.ILogger
} {
const defaultConfig: NodeRed.Scenes.IConfig = {
nodesDir: join(__dirname, '../nodes/'),
userDir: join(__dirname, '../data/'),
initialFlow: 'default',
redUrl: '/',
redApiUrl: '/api'
};
const config: NodeRed.Scenes.IConfig = opts.config || defaultConfig;
const logger: NodeRed.Scenes.ILogger = opts.logger || new ConsoleLogger();
const scenes: NodeRed.Scenes.ISceneManager = opts.sceneManager || new SceneManager();
const functionGlobalContext: any = opts.globalContext || {};
const flows: SceneFlows = opts.flows || new SceneFlows(config, logger);
const storageModule: SceneStorage = opts.storageModule || new SceneStorage(flows, config, opts.logger);
functionGlobalContext.scene = scenes;
// Create the settings object
const settings : NodeRED.ISettings = {
paletteCategories: ['scene', 'function', 'input', 'output'],
functionGlobalContext,
storageModule,
// httpAdminRoot: nodeRedUrl,
// httpNodeRoot: nodeRedApiUrl,
userDir: config.userDir || defaultConfig.userDir,
nodesDir: null, //config.nodesDir || defaultConfig.nodesDir,
flowFile: (config.userDir || defaultConfig.userDir) + (config.initialFlow || defaultConfig.initialFlow),
// adminAuth: {
// type: 'credentials',
// users: [
// {
// username: 'admin',
// password: '$2a$08$Hfo8ZCH3gzErDmH3piUL/.WsihVmHo8pHD3SKpoZ9XC8ip/HwrhVC',
// permissions: '*'
// }
// ]
// },
set: function(what: any, data: any) {
return when.resolve();
},
verbose: true,
logging: {
"custom": {
level: "info",
// metrics: true,
// auditOn: true,
handler: function(settings: any) {
return function(log: any) {
logger.debug(log.msg);
}
}
}
}
};
return {settings, flows, scenes, config, logger};
}
}
export = Settings;