1 | import { Inject, InjectionToken, NgModule, NgZone, Optional } from '@angular/core';
|
2 | import { STORAGE } from './enums/storage';
|
3 | import { LocalStorageService, SessionStorageService } from './services/index';
|
4 | import { WebStorageHelper } from './helpers/webStorage';
|
5 | import { WebstorageConfig } from './interfaces/config';
|
6 | import { KeyStorageHelper } from './helpers/keyStorage';
|
7 | import { StorageObserverHelper } from './helpers/storageObserver';
|
8 | export * from './interfaces/index';
|
9 | export * from './decorators/index';
|
10 | export * from './services/index';
|
11 | export var WEBSTORAGE_CONFIG = new InjectionToken('WEBSTORAGE_CONFIG');
|
12 | var Ng2Webstorage = (function () {
|
13 | function Ng2Webstorage(ngZone, config) {
|
14 | this.ngZone = ngZone;
|
15 | if (config) {
|
16 | KeyStorageHelper.setStorageKeyPrefix(config.prefix);
|
17 | KeyStorageHelper.setStorageKeySeparator(config.separator);
|
18 | KeyStorageHelper.setCaseSensitivity(config.caseSensitive);
|
19 | }
|
20 | this.initStorageListener();
|
21 | StorageObserverHelper.initStorage();
|
22 | }
|
23 | Ng2Webstorage.forRoot = function (config) {
|
24 | return {
|
25 | ngModule: Ng2Webstorage,
|
26 | providers: [
|
27 | {
|
28 | provide: WEBSTORAGE_CONFIG,
|
29 | useValue: config
|
30 | },
|
31 | {
|
32 | provide: WebstorageConfig,
|
33 | useFactory: provideConfig,
|
34 | deps: [
|
35 | WEBSTORAGE_CONFIG
|
36 | ]
|
37 | }
|
38 | ]
|
39 | };
|
40 | };
|
41 | Ng2Webstorage.prototype.initStorageListener = function () {
|
42 | var _this = this;
|
43 | if (typeof window !== 'undefined') {
|
44 | window.addEventListener('storage', function (event) {
|
45 | return _this.ngZone.run(function () {
|
46 | var storage = window.sessionStorage === event.storageArea ? STORAGE.session : STORAGE.local;
|
47 | WebStorageHelper.refresh(storage, event.key);
|
48 | });
|
49 | });
|
50 | }
|
51 | };
|
52 | Ng2Webstorage.decorators = [
|
53 | { type: NgModule, args: [{
|
54 | declarations: [],
|
55 | providers: [SessionStorageService, LocalStorageService],
|
56 | imports: []
|
57 | },] },
|
58 | ];
|
59 |
|
60 | Ng2Webstorage.ctorParameters = function () { return [
|
61 | { type: NgZone, },
|
62 | { type: WebstorageConfig, decorators: [{ type: Optional }, { type: Inject, args: [WebstorageConfig,] },] },
|
63 | ]; };
|
64 | return Ng2Webstorage;
|
65 | }());
|
66 | export { Ng2Webstorage };
|
67 | export function provideConfig(config) {
|
68 | return new WebstorageConfig(config);
|
69 | }
|
70 |
|
\ | No newline at end of file |