-
Notifications
You must be signed in to change notification settings - Fork 5
/
Container.ts
52 lines (38 loc) · 2.27 KB
/
Container.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
import * as Interfaces from 'InjectableInterfaces';
const Symbols = {
Extension: Symbol('Extension'),
FileFormat: Symbol('FileFormat'),
Filler: Symbol('Filler'),
Matcher: Symbol('Matcher'),
PassB: Symbol('PassB'),
PassCli: Symbol('PassCli'),
State: Symbol('State'),
StorageAdapter: Symbol('StorageAdapter'),
};
import {Container} from 'inversify';
const container = new Container({defaultScope: 'Singleton'});
import {PassB as PassBImplementation} from 'PassB';
import {PassCli as PassCliImplementation} from 'PassCli';
import {BrowserStorageAdapter} from 'State/BrowserStorageAdapter';
import {State as StateImplementation} from 'State/State';
container.bind<Interfaces.PassB>(Symbols.PassB).to(PassBImplementation);
container.bind<Interfaces.PassCli>(Symbols.PassCli).to(PassCliImplementation).inSingletonScope();
container.bind<Interfaces.State>(Symbols.State).to(StateImplementation).inSingletonScope();
container.bind<Interfaces.StorageAdaper>(Symbols.StorageAdapter).to(BrowserStorageAdapter);
import {PassExtension} from 'Extensions/PassExtension';
import {QRCodeExtension} from 'Extensions/QRCodeExtension';
container.bind<Interfaces.Extension<{}>>(Symbols.Extension).to(PassExtension);
container.bind<Interfaces.Extension<{}>>(Symbols.Extension).to(QRCodeExtension);
import {FillPasswordInputs} from 'PluggableStrategies/Fillers/FillPasswordInputs';
import {SelectorFiller} from 'PluggableStrategies/Fillers/SelectorFiller/SelectorFiller';
container.bind<Interfaces.Filler<{}>>(Symbols.Filler).to(FillPasswordInputs);
container.bind<Interfaces.Filler<{}>>(Symbols.Filler).to(SelectorFiller);
import {FirstLineFileFormat} from 'PluggableStrategies/FileFormats/FirstLineFileFormat';
import {PrefixFileFormat} from 'PluggableStrategies/FileFormats/PrefixFileFormat';
container.bind<Interfaces.FileFormat<{}>>(Symbols.FileFormat).to(FirstLineFileFormat);
container.bind<Interfaces.FileFormat<{}>>(Symbols.FileFormat).to(PrefixFileFormat);
import {FuzzaldrinMatcher} from 'PluggableStrategies/Matchers/FuzzaldrinMatcher';
import {SimpleMatcher} from 'PluggableStrategies/Matchers/SimpleMatcher';
container.bind<Interfaces.Matcher<{}>>(Symbols.Matcher).to(SimpleMatcher);
container.bind<Interfaces.Matcher<{}>>(Symbols.Matcher).to(FuzzaldrinMatcher);
export {container, Interfaces, Symbols};