@olea-bps/base 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (268) hide show
  1. package/components/AppBar/index.js +84 -0
  2. package/components/AppBar/styles.js +27 -0
  3. package/components/BookDetail/index.js +268 -0
  4. package/components/BookDetail/styles.js +124 -0
  5. package/components/ComponentJobsFilter/index.js +188 -0
  6. package/components/ComponentJobsFilter/styles.js +12 -0
  7. package/components/ConnectivityWarning/index.js +65 -0
  8. package/components/ConnectivityWarning/styles.js +19 -0
  9. package/components/ContactDetail/index.js +232 -0
  10. package/components/ContactDetail/styles.js +32 -0
  11. package/components/CourseDetail/index.js +357 -0
  12. package/components/CourseDetail/styles.js +59 -0
  13. package/components/CourseDetailDialog/index.js +169 -0
  14. package/components/CourseDetailDialog/styles.js +116 -0
  15. package/components/CourseInfo/index.js +219 -0
  16. package/components/CourseInfo/styles.js +40 -0
  17. package/components/DevelopmentDialog/index.js +214 -0
  18. package/components/DevelopmentDialog/styles.js +10 -0
  19. package/components/EventCodeInput/index.js +149 -0
  20. package/components/EventCodeInput/styles.js +108 -0
  21. package/components/FlexMenuEntry/index.js +84 -0
  22. package/components/FlexMenuEntry/styles.js +27 -0
  23. package/components/MainMenuEntry/index.js +88 -0
  24. package/components/MainMenuEntry/styles.js +28 -0
  25. package/components/MealItem/index.js +87 -0
  26. package/components/MealItem/styles.js +84 -0
  27. package/components/MensaMenu/index.js +305 -0
  28. package/components/MensaMenu/styles.js +94 -0
  29. package/components/MensaSlider/index.js +188 -0
  30. package/components/MensaSlider/styles.js +53 -0
  31. package/components/Modal/index.js +106 -0
  32. package/components/Modal/styles.js +8 -0
  33. package/components/NewsDetail/index.js +377 -0
  34. package/components/NewsDetail/styles.js +77 -0
  35. package/components/NewsList/index.js +120 -0
  36. package/components/NewsList/styles.js +19 -0
  37. package/components/NewsListItem/index.js +89 -0
  38. package/components/NewsListItem/styles.js +32 -0
  39. package/components/OtherCourses/index.js +152 -0
  40. package/components/OtherCourses/styles.js +10 -0
  41. package/components/PtsDeparture/index.js +140 -0
  42. package/components/PtsDeparture/styles.js +7 -0
  43. package/components/PtsStation/index.js +186 -0
  44. package/components/PtsStation/styles.js +47 -0
  45. package/components/QuickLinks/index.js +127 -0
  46. package/components/QuickLinks/styles.js +45 -0
  47. package/components/RoomDetail/index.js +281 -0
  48. package/components/RoomDetail/styles.js +56 -0
  49. package/components/ScaledImage/index.js +92 -0
  50. package/components/SearchResults/index.js +362 -0
  51. package/components/SearchResults/styles.js +59 -0
  52. package/components/SettingSection/index.js +54 -0
  53. package/components/SettingSection/styles.js +15 -0
  54. package/components/SettingsDialog/index.js +52 -0
  55. package/components/SettingsDialog/styles.js +12 -0
  56. package/components/SettingsDialogRadio/index.js +66 -0
  57. package/components/SettingsDialogRadio/styles.js +7 -0
  58. package/components/SettingsDialogSelect/index.js +73 -0
  59. package/components/SettingsDialogSelect/styles.js +7 -0
  60. package/components/TimetableCodeInput/index.js +205 -0
  61. package/components/TimetableCodeInput/styles.js +28 -0
  62. package/components/TimetableDay/index.js +252 -0
  63. package/components/TimetableDay/styles.js +103 -0
  64. package/components/TimetableEvent/index.js +163 -0
  65. package/components/TimetableEvent/styles.js +108 -0
  66. package/components/TimetableList/index.js +180 -0
  67. package/components/TimetableList/styles.js +106 -0
  68. package/components/TimetableMonth/index.js +156 -0
  69. package/components/TimetableMonth/styles.js +29 -0
  70. package/components/TimetableWeek/index.js +230 -0
  71. package/components/TimetableWeek/styles.js +58 -0
  72. package/components/TopNews/index.js +282 -0
  73. package/components/TopNews/styles.js +125 -0
  74. package/components/TopNewsHtwk/index.js +279 -0
  75. package/components/TopNewsHtwk/styles.js +142 -0
  76. package/components/WebView/index.js +108 -0
  77. package/components/WebView/styles.js +11 -0
  78. package/context/context-callmanager/TucCallManager.js +74 -0
  79. package/context/context-callmanager/index.js +128 -0
  80. package/context/context-canteen/AsistServerApiProvider.js +126 -0
  81. package/context/context-canteen/CollektorVersion2ApiProvider.js +100 -0
  82. package/context/context-canteen/index.js +692 -0
  83. package/context/context-connectivity/index.js +85 -0
  84. package/context/context-event/AsistServerClient.js +82 -0
  85. package/context/context-event/index.js +205 -0
  86. package/context/context-flex-menu/AsistServerApiProvider.js +0 -0
  87. package/context/context-flex-menu/CollectorVersion2ApiProvider.js +32 -0
  88. package/context/context-flex-menu/index.js +160 -0
  89. package/context/context-info-dialog/CollektorVersion2ApiProvider.js +53 -0
  90. package/context/context-info-dialog/ProviderErrors.js +22 -0
  91. package/context/context-info-dialog/index.js +190 -0
  92. package/context/context-mails/MailService.js +147 -0
  93. package/context/context-mails/TucUnseenApiProvider.js +65 -0
  94. package/context/context-mails/index.js +131 -0
  95. package/context/context-news/CollektorVersion2ApiProvider.js +68 -0
  96. package/context/context-news/index.js +155 -0
  97. package/context/context-public-transport-ticket/CollektorVersion2ApiProvider.js +45 -0
  98. package/context/context-public-transport-ticket/ProviderErrors.js +11 -0
  99. package/context/context-public-transport-ticket/index.js +175 -0
  100. package/context/context-timetable/CollectorVersion2ApiProvider.js +102 -0
  101. package/context/context-timetable/ProviderErrors.js +22 -0
  102. package/context/context-timetable/TimetableService.js +357 -0
  103. package/context/context-timetable/index.js +215 -0
  104. package/context/context-user/index.js +586 -0
  105. package/index.js +178 -0
  106. package/libraries/base-api-provider/hooks.js +24 -0
  107. package/libraries/base-api-provider/http-api-provider.js +168 -0
  108. package/libraries/base-api-provider/index.js +20 -0
  109. package/libraries/core/api/canteens.js +88 -0
  110. package/libraries/core/api/corona.js +45 -0
  111. package/libraries/core/api/courses.js +54 -0
  112. package/libraries/core/api/device.js +98 -0
  113. package/libraries/core/api/feed.js +144 -0
  114. package/libraries/core/api/feedback.js +123 -0
  115. package/libraries/core/api/jobs.js +48 -0
  116. package/libraries/core/api/library.js +67 -0
  117. package/libraries/core/api/lostfound.js +77 -0
  118. package/libraries/core/api/occupancy.js +44 -0
  119. package/libraries/core/api/officehours.js +25 -0
  120. package/libraries/core/api/poi.js +25 -0
  121. package/libraries/core/api/pts.js +68 -0
  122. package/libraries/core/api/rooms.js +31 -0
  123. package/libraries/core/api/survey.js +121 -0
  124. package/libraries/core/api/telephone.js +32 -0
  125. package/libraries/core/api/tucrooms.js +31 -0
  126. package/libraries/core/constants/actions.js +75 -0
  127. package/libraries/core/constants/api.js +146 -0
  128. package/libraries/core/constants/enums.js +5 -0
  129. package/libraries/core/helper/date.js +9 -0
  130. package/libraries/core/helper/format.helper.js +2 -0
  131. package/libraries/core/index.js +60 -0
  132. package/libraries/core/redux/actions/notifications.js +6 -0
  133. package/libraries/core/redux/actions/setting.js +75 -0
  134. package/libraries/core/redux/actions/state.js +74 -0
  135. package/libraries/core/redux/asyncDispatch.js +27 -0
  136. package/libraries/core/redux/reducers/api.js +190 -0
  137. package/libraries/core/redux/reducers/index.js +32 -0
  138. package/libraries/core/redux/reducers/notifications.js +16 -0
  139. package/libraries/core/redux/reducers/setting.js +99 -0
  140. package/libraries/core/redux/reducers/state.js +122 -0
  141. package/libraries/core/redux/selectors.js +123 -0
  142. package/libraries/core/redux/store.js +40 -0
  143. package/libraries/core/services/data.js +96 -0
  144. package/libraries/core/services/root-navigation.js +36 -0
  145. package/libraries/core/services/search.js +175 -0
  146. package/libraries/core-plugins/enums/replaceTypes.js +53 -0
  147. package/libraries/core-plugins/index.js +21 -0
  148. package/libraries/core-plugins/redux/actions/plugin.js +13 -0
  149. package/libraries/core-plugins/redux/reducers/plugin.js +210 -0
  150. package/libraries/icons-openasist/index.js +143 -0
  151. package/libraries/notifications/index.js +268 -0
  152. package/libraries/notifications/services/subscriber.service.js +123 -0
  153. package/libraries/react-native-webview-autoheight/README.md +47 -0
  154. package/libraries/react-native-webview-autoheight/index.js +140 -0
  155. package/libraries/react-native-webview-autoheight/package.json +37 -0
  156. package/libraries/react-native-webview-autoheight/utils.js +268 -0
  157. package/libraries/redux-offline/.eslintignore +1 -0
  158. package/libraries/redux-offline/.github/ISSUE_TEMPLATE/redux-offline-core-issues-template.md +25 -0
  159. package/libraries/redux-offline/.prettierrc +6 -0
  160. package/libraries/redux-offline/LICENSE +21 -0
  161. package/libraries/redux-offline/README.md +133 -0
  162. package/libraries/redux-offline/flow-typed/npm/redux-logger_vx.x.x.js +109 -0
  163. package/libraries/redux-offline/flow-typed/npm/redux_v4.x.x.js +100 -0
  164. package/libraries/redux-offline/lib/actions.js +46 -0
  165. package/libraries/redux-offline/lib/config.js +15 -0
  166. package/libraries/redux-offline/lib/constants.js +17 -0
  167. package/libraries/redux-offline/lib/defaults/defaultCommit.js +11 -0
  168. package/libraries/redux-offline/lib/defaults/defaultRollback.js +11 -0
  169. package/libraries/redux-offline/lib/defaults/detectNetwork.js +33 -0
  170. package/libraries/redux-offline/lib/defaults/detectNetwork.native.js +211 -0
  171. package/libraries/redux-offline/lib/defaults/discard.js +18 -0
  172. package/libraries/redux-offline/lib/defaults/effect.js +87 -0
  173. package/libraries/redux-offline/lib/defaults/index.js +32 -0
  174. package/libraries/redux-offline/lib/defaults/offlineStateLens.js +24 -0
  175. package/libraries/redux-offline/lib/defaults/persist.js +9 -0
  176. package/libraries/redux-offline/lib/defaults/persist.native.js +17 -0
  177. package/libraries/redux-offline/lib/defaults/persistAutoRehydrate.js +8 -0
  178. package/libraries/redux-offline/lib/defaults/queue.js +27 -0
  179. package/libraries/redux-offline/lib/defaults/retry.js +29 -0
  180. package/libraries/redux-offline/lib/index.js +115 -0
  181. package/libraries/redux-offline/lib/middleware.js +56 -0
  182. package/libraries/redux-offline/lib/offlineActionTracker.js +43 -0
  183. package/libraries/redux-offline/lib/send.js +112 -0
  184. package/libraries/redux-offline/lib/types.js +3 -0
  185. package/libraries/redux-offline/lib/updater.js +111 -0
  186. package/libraries/redux-offline/package.json +69 -0
  187. package/libraries/redux-offline/src/__tests__/defaults/discard.js +22 -0
  188. package/libraries/redux-offline/src/__tests__/defaults/effect.js +118 -0
  189. package/libraries/redux-offline/src/__tests__/index.js +116 -0
  190. package/libraries/redux-offline/src/__tests__/middleware.js +185 -0
  191. package/libraries/redux-offline/src/__tests__/offlineActionTracker.js +54 -0
  192. package/libraries/redux-offline/src/__tests__/send.js +208 -0
  193. package/libraries/redux-offline/src/actions.js +36 -0
  194. package/libraries/redux-offline/src/config.js +9 -0
  195. package/libraries/redux-offline/src/constants.js +18 -0
  196. package/libraries/redux-offline/src/defaults/defaultCommit.js +7 -0
  197. package/libraries/redux-offline/src/defaults/defaultRollback.js +7 -0
  198. package/libraries/redux-offline/src/defaults/detectNetwork.js +16 -0
  199. package/libraries/redux-offline/src/defaults/detectNetwork.native.js +148 -0
  200. package/libraries/redux-offline/src/defaults/discard.js +19 -0
  201. package/libraries/redux-offline/src/defaults/effect.js +86 -0
  202. package/libraries/redux-offline/src/defaults/index.js +25 -0
  203. package/libraries/redux-offline/src/defaults/offlineStateLens.js +11 -0
  204. package/libraries/redux-offline/src/defaults/persist.js +4 -0
  205. package/libraries/redux-offline/src/defaults/persist.native.js +9 -0
  206. package/libraries/redux-offline/src/defaults/persistAutoRehydrate.js +4 -0
  207. package/libraries/redux-offline/src/defaults/queue.js +20 -0
  208. package/libraries/redux-offline/src/defaults/retry.js +18 -0
  209. package/libraries/redux-offline/src/index.js +138 -0
  210. package/libraries/redux-offline/src/middleware.js +52 -0
  211. package/libraries/redux-offline/src/offlineActionTracker.js +40 -0
  212. package/libraries/redux-offline/src/send.js +111 -0
  213. package/libraries/redux-offline/src/types.js +127 -0
  214. package/libraries/redux-offline/src/updater.js +141 -0
  215. package/libraries/redux-offline/typings.d.ts +150 -0
  216. package/libraries/redux-offline/yarn.lock +6460 -0
  217. package/libraries/stored-state/index.js +155 -0
  218. package/package.json +68 -0
  219. package/views/Callmanager/index.js +148 -0
  220. package/views/Callmanager/styles.js +62 -0
  221. package/views/Canteens/index.js +383 -0
  222. package/views/Canteens/styles.js +89 -0
  223. package/views/Dashboard/index.js +176 -0
  224. package/views/Dashboard/styles.js +16 -0
  225. package/views/DashboardHtwk/index.js +197 -0
  226. package/views/DashboardHtwk/styles.js +24 -0
  227. package/views/Event/index.js +373 -0
  228. package/views/Event/styles.js +63 -0
  229. package/views/FeedList/index.js +165 -0
  230. package/views/FeedList/styles.js +15 -0
  231. package/views/FeedNews/index.js +243 -0
  232. package/views/FeedNews/styles.js +32 -0
  233. package/views/Flexmenu/index.js +185 -0
  234. package/views/Flexmenu/styles.js +62 -0
  235. package/views/FlexmenuWebview/index.js +167 -0
  236. package/views/FlexmenuWebview/styles.js +16 -0
  237. package/views/Howhy/index.js +151 -0
  238. package/views/Howhy/styles.js +11 -0
  239. package/views/Jobs/index.js +217 -0
  240. package/views/Jobs/styles.js +41 -0
  241. package/views/MainMenu/index.js +283 -0
  242. package/views/MainMenu/styles.js +36 -0
  243. package/views/NewsTabbar/index.js +164 -0
  244. package/views/NewsTabbar/styles.js +27 -0
  245. package/views/Opal/index.js +136 -0
  246. package/views/Opal/styles.js +11 -0
  247. package/views/PublicTransportTicket/index.js +173 -0
  248. package/views/PublicTransportTicket/styles.js +17 -0
  249. package/views/Search/index.js +186 -0
  250. package/views/Search/styles.js +67 -0
  251. package/views/SettingsAccessibility/index.js +148 -0
  252. package/views/SettingsAccessibility/styles.js +13 -0
  253. package/views/SettingsAppInfo/index.js +86 -0
  254. package/views/SettingsAppInfo/styles.js +18 -0
  255. package/views/SettingsCanteens/index.js +249 -0
  256. package/views/SettingsCanteens/styles.js +33 -0
  257. package/views/SettingsGeneral/index.js +173 -0
  258. package/views/SettingsGeneral/styles.js +28 -0
  259. package/views/SettingsNotifications/index.js +204 -0
  260. package/views/SettingsNotifications/styles.js +38 -0
  261. package/views/SettingsUser/index.js +170 -0
  262. package/views/SettingsUser/styles.js +17 -0
  263. package/views/TimetableCalendar/index.js +387 -0
  264. package/views/TimetableCalendar/styles.js +121 -0
  265. package/views/TimetableList/index.js +402 -0
  266. package/views/TimetableList/styles.js +55 -0
  267. package/views/Webviews/index.js +158 -0
  268. package/views/Webviews/styles.js +11 -0
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _persist = _interopRequireDefault(require("./persist"));
9
+ var _detectNetwork = _interopRequireDefault(require("./detectNetwork"));
10
+ var _effect = _interopRequireDefault(require("./effect"));
11
+ var _retry = _interopRequireDefault(require("./retry"));
12
+ var _discard = _interopRequireDefault(require("./discard"));
13
+ var _defaultCommit = _interopRequireDefault(require("./defaultCommit"));
14
+ var _defaultRollback = _interopRequireDefault(require("./defaultRollback"));
15
+ var _persistAutoRehydrate = _interopRequireDefault(require("./persistAutoRehydrate"));
16
+ var _offlineStateLens = _interopRequireDefault(require("./offlineStateLens"));
17
+ var _queue = _interopRequireDefault(require("./queue"));
18
+ var _default = exports.default = {
19
+ rehydrate: true,
20
+ // backward compatibility, TODO remove in the next breaking change version
21
+ persist: _persist.default,
22
+ detectNetwork: _detectNetwork.default,
23
+ effect: _effect.default,
24
+ retry: _retry.default,
25
+ discard: _discard.default,
26
+ defaultCommit: _defaultCommit.default,
27
+ defaultRollback: _defaultRollback.default,
28
+ persistAutoRehydrate: _persistAutoRehydrate.default,
29
+ offlineStateLens: _offlineStateLens.default,
30
+ queue: _queue.default,
31
+ returnPromises: false
32
+ };
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
10
+ var _excluded = ["offline"];
11
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
12
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13
+ var _default = exports.default = function _default(state) {
14
+ var offline = state.offline,
15
+ rest = (0, _objectWithoutProperties2.default)(state, _excluded);
16
+ return {
17
+ get: offline,
18
+ set: function set(offlineState) {
19
+ return typeof offlineState === 'undefined' ? rest : _objectSpread({
20
+ offline: offlineState
21
+ }, rest);
22
+ }
23
+ };
24
+ };
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _reduxPersist = require("redux-persist");
8
+ // flow
9
+ var _default = exports.default = _reduxPersist.persistStore;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _reduxPersist = require("redux-persist");
9
+ var _asyncStorage = _interopRequireDefault(require("@react-native-async-storage/async-storage"));
10
+ // $FlowIgnore
11
+ // $FlowIgnore
12
+ var _default = exports.default = function _default(store, options, callback) {
13
+ return (
14
+ // $FlowFixMe
15
+ (0, _reduxPersist.persistStore)(store, callback)
16
+ );
17
+ };
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _reduxPersist = require("redux-persist");
8
+ var _default = exports.default = _reduxPersist.autoRehydrate;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _toArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toArray"));
9
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
10
+ /* eslint-disable no-unused-vars */
11
+
12
+ function enqueue(array, item, context) {
13
+ return [].concat((0, _toConsumableArray2.default)(array), [item]);
14
+ }
15
+ function dequeue(array, item, context) {
16
+ var _array = (0, _toArray2.default)(array),
17
+ rest = _array.slice(1);
18
+ return rest;
19
+ }
20
+ function peek(array, item, context) {
21
+ return array[0];
22
+ }
23
+ var _default = exports.default = {
24
+ enqueue: enqueue,
25
+ dequeue: dequeue,
26
+ peek: peek
27
+ };
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var decaySchedule = [1000,
8
+ // After 1 seconds
9
+ 1000 * 5,
10
+ // After 5 seconds
11
+ 1000 * 15,
12
+ // After 15 seconds
13
+ 1000 * 30,
14
+ // After 30 seconds
15
+ 1000 * 60,
16
+ // After 1 minute
17
+ 1000 * 60 * 3,
18
+ // After 3 minutes
19
+ 1000 * 60 * 5,
20
+ // After 5 minutes
21
+ 1000 * 60 * 10,
22
+ // After 10 minutes
23
+ 1000 * 60 * 30,
24
+ // After 30 minutes
25
+ 1000 * 60 * 60 // After 1 hour
26
+ ];
27
+ var _default = exports.default = function _default(action, retries) {
28
+ return decaySchedule[retries] || null;
29
+ };
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.offline = exports.createOffline = void 0;
8
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
9
+ var _redux = require("redux");
10
+ var _middleware = require("./middleware");
11
+ var _updater = require("./updater");
12
+ var _config = require("./config");
13
+ var _actions = require("./actions");
14
+ var _offlineActionTracker = _interopRequireDefault(require("./offlineActionTracker"));
15
+ /* global $Shape */
16
+ // @TODO: Take createStore as config?
17
+ var warnIfNotReduxAction = function warnIfNotReduxAction(config, key) {
18
+ var maybeAction = config[key];
19
+ var isNotReduxAction = maybeAction === null || (0, _typeof2.default)(maybeAction) !== 'object' || typeof maybeAction.type !== 'string' || maybeAction.type === '';
20
+ if (isNotReduxAction && console.warn) {
21
+ var msg = "".concat(key, " must be a proper redux action, ") + "i.e. it must be an object and have a non-empty string type. " + "Instead you provided: ".concat(JSON.stringify(maybeAction, null, 2));
22
+ console.warn(msg);
23
+ }
24
+ };
25
+ var offline = exports.offline = function offline() {
26
+ var userConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
27
+ return function (createStore) {
28
+ return function (reducer, preloadedState) {
29
+ var enhancer = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function (x) {
30
+ return x;
31
+ };
32
+ var config = (0, _config.applyDefaults)(userConfig);
33
+ warnIfNotReduxAction(config, 'defaultCommit');
34
+ warnIfNotReduxAction(config, 'defaultRollback');
35
+
36
+ // toggle experimental returned promises
37
+ config.offlineActionTracker = config.returnPromises ? _offlineActionTracker.default.withPromises : _offlineActionTracker.default.withoutPromises;
38
+ delete config.returnPromises;
39
+
40
+ // wraps userland reducer with a top-level
41
+ // reducer that handles offline state updating
42
+ var offlineReducer = (0, _updater.enhanceReducer)(reducer, config);
43
+
44
+ // $FlowFixMe
45
+ var offlineMiddleware = (0, _redux.applyMiddleware)((0, _middleware.createOfflineMiddleware)(config));
46
+
47
+ // create autoRehydrate enhancer if required
48
+ var offlineEnhancer = config.persist && config.rehydrate && config.persistAutoRehydrate ? (0, _redux.compose)(offlineMiddleware, config.persistAutoRehydrate()) : offlineMiddleware;
49
+
50
+ // create store
51
+ var store = offlineEnhancer(createStore)(offlineReducer, preloadedState, enhancer);
52
+ var baseReplaceReducer = store.replaceReducer.bind(store);
53
+ // $FlowFixMe
54
+ store.replaceReducer = function replaceReducer(nextReducer) {
55
+ return baseReplaceReducer((0, _updater.enhanceReducer)(nextReducer, config));
56
+ };
57
+
58
+ // launch store persistor
59
+ if (config.persist) {
60
+ config.persist(store, config.persistOptions, config.persistCallback);
61
+ }
62
+
63
+ // launch network detector
64
+ if (config.detectNetwork) {
65
+ config.detectNetwork(function (online) {
66
+ store.dispatch((0, _actions.networkStatusChanged)(online));
67
+ });
68
+ }
69
+ return store;
70
+ };
71
+ };
72
+ };
73
+ var createOffline = exports.createOffline = function createOffline() {
74
+ var userConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
75
+ var config = (0, _config.applyDefaults)(userConfig);
76
+
77
+ // toggle experimental returned promises
78
+ config.offlineActionTracker = config.returnPromises ? _offlineActionTracker.default.withPromises : _offlineActionTracker.default.withoutPromises;
79
+ delete config.returnPromises;
80
+ warnIfNotReduxAction(config, 'defaultCommit');
81
+ warnIfNotReduxAction(config, 'defaultRollback');
82
+ var enhanceStore = function enhanceStore(next) {
83
+ return function (reducer, preloadedState, enhancer) {
84
+ // create autoRehydrate enhancer if required
85
+ var createStore = config.persist && config.rehydrate && config.persistAutoRehydrate ? config.persistAutoRehydrate()(next) : next;
86
+
87
+ // create store
88
+ var store = createStore(reducer, preloadedState, enhancer);
89
+ var baseReplaceReducer = store.replaceReducer.bind(store);
90
+ store.replaceReducer = function replaceReducer(nextReducer) {
91
+ return baseReplaceReducer((0, _updater.enhanceReducer)(nextReducer, config));
92
+ };
93
+
94
+ // launch store persistor
95
+ if (config.persist) {
96
+ config.persist(store, config.persistOptions, config.persistCallback);
97
+ }
98
+
99
+ // launch network detector
100
+ if (config.detectNetwork) {
101
+ config.detectNetwork(function (online) {
102
+ store.dispatch((0, _actions.networkStatusChanged)(online));
103
+ });
104
+ }
105
+ return store;
106
+ };
107
+ };
108
+ return {
109
+ middleware: (0, _middleware.createOfflineMiddleware)(config),
110
+ enhanceReducer: function enhanceReducer(reducer) {
111
+ return (0, _updater.enhanceReducer)(reducer, config);
112
+ },
113
+ enhanceStore: enhanceStore
114
+ };
115
+ };
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.createOfflineMiddleware = void 0;
8
+ var _constants = require("./constants");
9
+ var _actions = require("./actions");
10
+ var _send = _interopRequireDefault(require("./send"));
11
+ var after = function after() {
12
+ var timeout = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
13
+ return new Promise(function (resolve) {
14
+ return setTimeout(resolve, timeout);
15
+ });
16
+ };
17
+ var createOfflineMiddleware = exports.createOfflineMiddleware = function createOfflineMiddleware(config) {
18
+ return function (store) {
19
+ return function (next) {
20
+ return function (action) {
21
+ // allow other middleware to do their things
22
+ var result = next(action);
23
+ var promise;
24
+
25
+ // find any actions to send, if any
26
+ var state = store.getState();
27
+ var offline = config.offlineStateLens(state).get;
28
+ var context = {
29
+ offline: offline
30
+ };
31
+ var offlineAction = config.queue.peek(offline.outbox, action, context);
32
+
33
+ // create promise to return on enqueue offline action
34
+ if (action.meta && action.meta.offline) {
35
+ var registerAction = config.offlineActionTracker.registerAction;
36
+ promise = registerAction(offline.lastTransaction);
37
+ }
38
+
39
+ // if there are any actions in the queue that we are not
40
+ // yet processing, send those actions
41
+ if (offlineAction && !offline.busy && !offline.retryScheduled && offline.online) {
42
+ (0, _send.default)(offlineAction, store.dispatch, config, offline.retryCount);
43
+ }
44
+ if (action.type === _constants.OFFLINE_SCHEDULE_RETRY) {
45
+ after(action.payload.delay).then(function () {
46
+ store.dispatch((0, _actions.completeRetry)(offlineAction));
47
+ });
48
+ }
49
+ if (action.type === _constants.OFFLINE_SEND && offlineAction && !offline.busy) {
50
+ (0, _send.default)(offlineAction, store.dispatch, config, offline.retryCount);
51
+ }
52
+ return promise || result;
53
+ };
54
+ };
55
+ };
56
+ };
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var subscriptions = {};
8
+ function registerAction(transaction) {
9
+ return new Promise(function (resolve, reject) {
10
+ subscriptions[transaction] = {
11
+ resolve: resolve,
12
+ reject: reject
13
+ };
14
+ });
15
+ }
16
+ function resolveAction(transaction, value) {
17
+ var subscription = subscriptions[transaction];
18
+ if (subscription) {
19
+ subscription.resolve(value);
20
+ delete subscriptions[transaction];
21
+ }
22
+ }
23
+ function rejectAction(transaction, error) {
24
+ var subscription = subscriptions[transaction];
25
+ if (subscription) {
26
+ subscription.reject(error);
27
+ delete subscriptions[transaction];
28
+ }
29
+ }
30
+ var withPromises = {
31
+ registerAction: registerAction,
32
+ resolveAction: resolveAction,
33
+ rejectAction: rejectAction
34
+ };
35
+ var withoutPromises = {
36
+ registerAction: function registerAction() {},
37
+ resolveAction: function resolveAction() {},
38
+ rejectAction: function rejectAction() {}
39
+ };
40
+ var _default = exports.default = {
41
+ withPromises: withPromises,
42
+ withoutPromises: withoutPromises
43
+ };
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+ var _actions = require("./actions");
12
+ var _constants = require("./constants");
13
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
15
+ var complete = function complete(action, result, offlineAction, config) {
16
+ var _config$offlineAction = config.offlineActionTracker,
17
+ resolveAction = _config$offlineAction.resolveAction,
18
+ rejectAction = _config$offlineAction.rejectAction;
19
+ if (result.success) {
20
+ resolveAction(offlineAction.meta.transaction, result.payload);
21
+ } else if (result.payload) {
22
+ rejectAction(offlineAction.meta.transaction, result.payload);
23
+ }
24
+ return _objectSpread(_objectSpread({}, action), {}, {
25
+ payload: result.payload,
26
+ meta: _objectSpread(_objectSpread({}, action.meta), {}, {
27
+ success: result.success,
28
+ completed: true
29
+ })
30
+ });
31
+ };
32
+ var handleJsError = function handleJsError(error) {
33
+ return {
34
+ type: _constants.JS_ERROR,
35
+ meta: {
36
+ error: error,
37
+ success: false,
38
+ completed: true
39
+ }
40
+ };
41
+ };
42
+ var send = function send(action, dispatch, config) {
43
+ var retries = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
44
+ var metadata = action.meta.offline;
45
+ dispatch((0, _actions.busy)(true));
46
+ return config.effect(metadata.effect, action).then(function (result) {
47
+ var commitAction = metadata.commit || _objectSpread(_objectSpread({}, config.defaultCommit), {}, {
48
+ meta: _objectSpread(_objectSpread({}, config.defaultCommit.meta), {}, {
49
+ offlineAction: action
50
+ })
51
+ });
52
+ try {
53
+ return dispatch(complete(commitAction, {
54
+ success: true,
55
+ payload: result
56
+ }, action, config));
57
+ } catch (error) {
58
+ return dispatch(handleJsError(error));
59
+ }
60
+ }).catch(/*#__PURE__*/function () {
61
+ var _ref = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee(error) {
62
+ var rollbackAction, mustDiscard, delay, _t;
63
+ return _regenerator.default.wrap(function (_context) {
64
+ while (1) switch (_context.prev = _context.next) {
65
+ case 0:
66
+ rollbackAction = metadata.rollback || _objectSpread(_objectSpread({}, config.defaultRollback), {}, {
67
+ meta: _objectSpread(_objectSpread({}, config.defaultRollback.meta), {}, {
68
+ offlineAction: action
69
+ })
70
+ }); // discard
71
+ mustDiscard = true;
72
+ _context.prev = 1;
73
+ _context.next = 2;
74
+ return config.discard(error, action, retries);
75
+ case 2:
76
+ mustDiscard = _context.sent;
77
+ _context.next = 4;
78
+ break;
79
+ case 3:
80
+ _context.prev = 3;
81
+ _t = _context["catch"](1);
82
+ console.warn(_t);
83
+ case 4:
84
+ if (mustDiscard) {
85
+ _context.next = 5;
86
+ break;
87
+ }
88
+ delay = config.retry(action, retries);
89
+ if (!(delay != null)) {
90
+ _context.next = 5;
91
+ break;
92
+ }
93
+ return _context.abrupt("return", dispatch((0, _actions.scheduleRetry)(delay)));
94
+ case 5:
95
+ return _context.abrupt("return", dispatch(complete(rollbackAction, {
96
+ success: false,
97
+ payload: error
98
+ }, action, config)));
99
+ case 6:
100
+ case "end":
101
+ return _context.stop();
102
+ }
103
+ }, _callee, null, [[1, 3]]);
104
+ }));
105
+ return function (_x) {
106
+ return _ref.apply(this, arguments);
107
+ };
108
+ }()).finally(function () {
109
+ return dispatch((0, _actions.busy)(false));
110
+ });
111
+ };
112
+ var _default = exports.default = send;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+
3
+ var _constants = require("./constants");
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.initialState = exports.enhanceReducer = exports.buildOfflineUpdater = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _constants = require("./constants");
10
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
11
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /* global $Shape */
12
+ var initialState = exports.initialState = {
13
+ busy: false,
14
+ lastTransaction: 0,
15
+ online: false,
16
+ outbox: [],
17
+ retryCount: 0,
18
+ retryScheduled: false,
19
+ netInfo: {
20
+ isConnectionExpensive: null,
21
+ reach: 'NONE'
22
+ }
23
+ };
24
+ var buildOfflineUpdater = exports.buildOfflineUpdater = function buildOfflineUpdater(dequeue, enqueue) {
25
+ return function offlineUpdater() {
26
+ var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
27
+ var action = arguments.length > 1 ? arguments[1] : undefined;
28
+ // Update online/offline status
29
+ if (action.type === _constants.OFFLINE_STATUS_CHANGED && !action.meta) {
30
+ return _objectSpread(_objectSpread({}, state), {}, {
31
+ online: action.payload.online,
32
+ netInfo: action.payload.netInfo
33
+ });
34
+ }
35
+ if (action.type === _constants.PERSIST_REHYDRATE && action.payload) {
36
+ return _objectSpread(_objectSpread(_objectSpread({}, state), action.payload.offline || {}), {}, {
37
+ online: state.online,
38
+ netInfo: state.netInfo,
39
+ retryScheduled: initialState.retryScheduled,
40
+ retryCount: initialState.retryCount,
41
+ busy: initialState.busy
42
+ });
43
+ }
44
+ if (action.type === _constants.OFFLINE_SCHEDULE_RETRY) {
45
+ return _objectSpread(_objectSpread({}, state), {}, {
46
+ retryScheduled: true,
47
+ retryCount: state.retryCount + 1
48
+ });
49
+ }
50
+ if (action.type === _constants.OFFLINE_COMPLETE_RETRY) {
51
+ return _objectSpread(_objectSpread({}, state), {}, {
52
+ retryScheduled: false
53
+ });
54
+ }
55
+ if (action.type === _constants.OFFLINE_BUSY && !action.meta && action.payload && typeof action.payload.busy === 'boolean') {
56
+ return _objectSpread(_objectSpread({}, state), {}, {
57
+ busy: action.payload.busy
58
+ });
59
+ }
60
+
61
+ // Add offline actions to queue
62
+ if (action.meta && action.meta.offline) {
63
+ var transaction = state.lastTransaction + 1;
64
+ var stamped = _objectSpread(_objectSpread({}, action), {}, {
65
+ meta: _objectSpread(_objectSpread({}, action.meta), {}, {
66
+ transaction: transaction
67
+ })
68
+ });
69
+ var offline = state;
70
+ return _objectSpread(_objectSpread({}, state), {}, {
71
+ lastTransaction: transaction,
72
+ outbox: enqueue(offline.outbox, stamped, {
73
+ offline: offline
74
+ })
75
+ });
76
+ }
77
+
78
+ // Remove completed actions from queue (success or fail)
79
+ if (action.meta && action.meta.completed === true) {
80
+ var _offline = state;
81
+ return _objectSpread(_objectSpread({}, state), {}, {
82
+ outbox: dequeue(_offline.outbox, action, {
83
+ offline: _offline
84
+ }),
85
+ retryCount: 0
86
+ });
87
+ }
88
+ if (action.type === _constants.RESET_STATE) {
89
+ return _objectSpread(_objectSpread({}, initialState), {}, {
90
+ online: state.online,
91
+ netInfo: state.netInfo
92
+ });
93
+ }
94
+ return state;
95
+ };
96
+ };
97
+ var enhanceReducer = exports.enhanceReducer = function enhanceReducer(reducer, config) {
98
+ var _config$queue = config.queue,
99
+ dequeue = _config$queue.dequeue,
100
+ enqueue = _config$queue.enqueue;
101
+ var offlineUpdater = buildOfflineUpdater(dequeue, enqueue);
102
+ return function (state, action) {
103
+ var offlineState;
104
+ var restState;
105
+ if (typeof state !== 'undefined') {
106
+ offlineState = config.offlineStateLens(state).get;
107
+ restState = config.offlineStateLens(state).set();
108
+ }
109
+ return config.offlineStateLens(reducer(restState, action)).set(offlineUpdater(offlineState, action));
110
+ };
111
+ };
@@ -0,0 +1,69 @@
1
+ {
2
+ "name": "@olea-bps/redux-offline",
3
+ "version": "1.0.1",
4
+ "description": "Redux Offline-First Architecture forked from https://github.com/redux-offline/redux-offline",
5
+ "main": "lib/index.js",
6
+ "scripts": {
7
+ "build": "rm -rf lib && babel src --out-dir lib --ignore '**/__tests__/**'",
8
+ "flow:start": "flow server",
9
+ "flow:stop": "flow stop",
10
+ "flow": "flow; test $? -eq 0 -o $? -eq 2",
11
+ "lint": "eslint src/",
12
+ "_prepublishOnly_disabled": "npm run lint && npm run flow && npm run test && npm run build",
13
+ "eslint": "eslint src --fix",
14
+ "prettier": "--config .prettierrc --write",
15
+ "test": "jest",
16
+ "test:watch": "jest --watch",
17
+ "watch": "npm run build -- --watch"
18
+ },
19
+ "repository": {
20
+ "type": "git",
21
+ "url": "https://github.com/tuc-urz/olea.git",
22
+ "directory": "packages/libraries/redux-offline"
23
+ },
24
+ "author": "",
25
+ "license": "MIT",
26
+ "files": [
27
+ "package.json",
28
+ "LICENSE",
29
+ "README.md",
30
+ "lib/**/*",
31
+ "src/**/*"
32
+ ],
33
+ "dependencies": {
34
+ "@babel/runtime": "^7.27.1",
35
+ "redux-persist": "^6.0.0"
36
+ },
37
+ "devDependencies": {
38
+ "@babel/cli": "^7.27.2",
39
+ "@babel/core": "^7.27.1",
40
+ "@babel/plugin-proposal-class-properties": "^7.18.6",
41
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
42
+ "@babel/plugin-transform-flow-strip-types": "^7.27.1",
43
+ "@babel/plugin-transform-runtime": "^7.27.1",
44
+ "@babel/preset-env": "^7.27.2",
45
+ "babel-core": "^7.0.0-bridge.0",
46
+ "babel-eslint": "^10.1.0",
47
+ "babel-jest": "^29.7.0",
48
+ "eslint": "^8.2.0",
49
+ "eslint-config-airbnb-base": "^15.0.0",
50
+ "eslint-config-prettier": "^10.1.5",
51
+ "eslint-plugin-babel": "^5.3.1",
52
+ "eslint-plugin-flowtype": "^8.0.3",
53
+ "eslint-plugin-import": "^2.31.0",
54
+ "eslint-plugin-prettier": "^5.4.0",
55
+ "flow-bin": "^0.272.1",
56
+ "husky": "^9.1.7",
57
+ "jest": "^29.7.0",
58
+ "lint-staged": "^16.0.0",
59
+ "prettier": "^3.5.3",
60
+ "redux": "^4.0.5",
61
+ "redux-devtools-instrument": "^1.10.0",
62
+ "redux-logger": "^3.0.6",
63
+ "redux-persist-node-storage": "^2.0.0",
64
+ "release": "^6.3.1"
65
+ },
66
+ "peerDependencies": {
67
+ "redux": ">=3"
68
+ }
69
+ }