[TASK] Split `Storage` module
[Packages/TYPO3.CMS.git] / typo3 / sysext / backend / Resources / Private / TypeScript / Storage.ts
1 /*
2  * This file is part of the TYPO3 CMS project.
3  *
4  * It is free software; you can redistribute it and/or modify it under
5  * the terms of the GNU General Public License, either version 2
6  * of the License, or any later version.
7  *
8  * For the full copyright and license information, please read the
9  * LICENSE.txt file that was distributed with this source code.
10  *
11  * The TYPO3 project - inspiring people to share!
12  */
13
14 import Client = require('./Storage/Client');
15 import Persistent = require('./Storage/Persistent');
16
17 /**
18  * Module: TYPO3/CMS/Backend/Storage
19  * Adds a public API for the browsers' localStorage called
20  * TYPO3.Storage.Client and the Backend Users "uc",
21  * available via TYPO3.Storage.Persistent
22  * @exports TYPO3/CMS/Backend/Storage
23  * @deprecated
24  */
25 class Storage {
26   public Client: any;
27   public Persistent: any;
28
29   constructor() {
30     if (console) {
31       console.warn(
32         'TYPO3/CMS/Backend/Storage and TYPO3.Storage are deprecated since TYPO3 v9 and will be removed in TYPO3 v10.',
33       );
34     }
35     this.Client = Client;
36     this.Persistent = Persistent;
37   }
38 }
39
40 let storageObject;
41 try {
42   // fetch from opening window
43   if (window.opener && window.opener.TYPO3 && window.opener.TYPO3.Storage) {
44     storageObject = window.opener.TYPO3.Storage;
45   }
46
47   // fetch from parent
48   if (parent && parent.window.TYPO3 && parent.window.TYPO3.Storage) {
49     storageObject = parent.window.TYPO3.Storage;
50   }
51
52   // fetch object from outer frame
53   if (top && top.TYPO3.Storage) {
54     storageObject = top.TYPO3.Storage;
55   }
56 } catch (e) {
57   // This only happens if the opener, parent or top is some other url (eg a local file)
58   // which loaded the current window. Then the browser's cross domain policy jumps in
59   // and raises an exception.
60   // For this case we are safe and we can create our global object below.
61 }
62
63 if (!storageObject) {
64   storageObject = new Storage();
65 }
66
67 TYPO3.Storage = storageObject;
68 export = storageObject;