@mirai/core 0.1.67 → 0.1.68-beta

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.
package/README.md CHANGED
@@ -29,7 +29,7 @@ Once the two main files of our new core are instantiated, we need to indicate wh
29
29
 
30
30
  ```html
31
31
  <body>
32
- <div data-mirai-id="501404" hidden></div>
32
+ <div data-mirai-id="501404"></div>
33
33
  ...
34
34
  </body>
35
35
  ```
@@ -46,7 +46,7 @@ Here you have an complete example using all these attributes:
46
46
 
47
47
  ```html
48
48
  <body>
49
- <div data-mirai-id="500255" data-type="chain" data-currency="JPY" data-locale="ja-JA" hidden></div>
49
+ <div data-mirai-id="500255" data-type="chain" data-currency="JPY" data-locale="ja-JA"></div>
50
50
  ...
51
51
  </body>
52
52
  ```
@@ -78,7 +78,7 @@ Here you have an example of how you should instantiate it:
78
78
  <div data-mirai-component="finder" data-mobile="true"></div>
79
79
  ```
80
80
 
81
- It should also be noted that some components may offer the _ghosting_ system. This means that that component can receive different html markup than the default component provides.
81
+ It should also be noted that some components may offer the _ghosting_ system. This means that that component can receive different html markup than the default component provides.
82
82
  For that purpose, the `data-ghost` attribute must be set.
83
83
  Css class must be added as well to style the ghost system.
84
84
  Let's see a naive example:
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Notifications = void 0;
7
+ var _dataSources = require("@mirai/data-sources");
8
+ var _locale = require("@mirai/locale");
9
+ var _ui = require("@mirai/ui");
10
+ var _react = _interopRequireWildcard(require("react"));
11
+ var _CoreNotificationsModule = _interopRequireDefault(require("./Core.Notifications.module.css"));
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
14
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
15
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
16
+ const EVENT_NAME = 'notification';
17
+ let queue = {};
18
+ const Notifications = () => {
19
+ const {
20
+ translate
21
+ } = (0, _locale.useLocale)();
22
+ const [, setTimestamp] = (0, _react.useState)();
23
+ const {
24
+ value: {
25
+ session
26
+ }
27
+ } = (0, _dataSources.useStore)();
28
+ (0, _react.useEffect)(() => {
29
+ _dataSources.Event.subscribe(EVENT_NAME, handleAdd);
30
+ return () => _dataSources.Event.unsubscribe(EVENT_NAME, handleAdd);
31
+ // eslint-disable-next-line react-hooks/exhaustive-deps
32
+ }, []);
33
+ (0, _react.useEffect)(() => {
34
+ queue = {};
35
+ }, [session]);
36
+ const handleAdd = notification => {
37
+ if (!notification) return;
38
+ const {
39
+ success,
40
+ warning
41
+ } = notification;
42
+ const id = `${new Date().getTime()}:${Math.random().toFixed(8)}`;
43
+ queue[id] = {
44
+ ...notification,
45
+ visible: false
46
+ };
47
+ forceRender();
48
+ setTimeout(() => {
49
+ queue[id].visible = true;
50
+ forceRender();
51
+ }, parseMotion());
52
+ if (success || warning) setTimeout(() => handleClose(id), success ? 5000 : 10000);
53
+ return;
54
+ };
55
+ const handleClose = id => {
56
+ if (!queue[id]) return;
57
+ setTimestamp(() => {
58
+ queue[id].visible = false;
59
+ setTimeout(() => {
60
+ delete queue[id];
61
+ forceRender();
62
+ }, parseMotion());
63
+ return new Date().getTime();
64
+ });
65
+ };
66
+ const forceRender = () => setTimestamp(new Date().getTime());
67
+ const parseMotion = () => {
68
+ const {
69
+ motionExpand = '0.3s'
70
+ } = _ui.Theme.get();
71
+ return parseFloat(motionExpand.replace('s')) * 1000;
72
+ };
73
+ const keys = Object.keys(queue);
74
+ return /*#__PURE__*/_react.default.createElement(_ui.View, {
75
+ className: _CoreNotificationsModule.default.notifications
76
+ }, keys.sort().map((key, index) => {
77
+ const {
78
+ defaultMessage,
79
+ id,
80
+ visible = false,
81
+ ...props
82
+ } = queue[key];
83
+ return /*#__PURE__*/_react.default.createElement(_ui.Notification, _extends({}, props, {
84
+ key: key,
85
+ wide: true,
86
+ onClose: () => handleClose(key),
87
+ className: (0, _ui.styles)(_CoreNotificationsModule.default.item, visible && _CoreNotificationsModule.default.visible),
88
+ style: {
89
+ zIndex: keys.length - index
90
+ }
91
+ }), translate({
92
+ id,
93
+ defaultMessage
94
+ }));
95
+ }));
96
+ };
97
+ exports.Notifications = Notifications;
98
+ Notifications.displayName = 'core:components:Notifications';
99
+ Notifications.propTypes = {};
100
+ //# sourceMappingURL=Core.Notifications.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Core.Notifications.js","names":["EVENT_NAME","queue","Notifications","translate","useLocale","setTimestamp","useState","value","session","useStore","useEffect","Event","subscribe","handleAdd","unsubscribe","notification","success","warning","id","Date","getTime","Math","random","toFixed","visible","forceRender","setTimeout","parseMotion","handleClose","motionExpand","Theme","get","parseFloat","replace","keys","Object","style","notifications","sort","map","key","index","defaultMessage","props","styles","item","zIndex","length","displayName","propTypes"],"sources":["../src/Core.Notifications.jsx"],"sourcesContent":["import { Event, useStore } from '@mirai/data-sources';\nimport { useLocale } from '@mirai/locale';\nimport { Notification, styles, Theme, View } from '@mirai/ui';\nimport React, { useEffect, useState } from 'react';\n\nimport style from './Core.Notifications.module.css';\n\nconst EVENT_NAME = 'notification';\nlet queue = {};\n\nconst Notifications = () => {\n const { translate } = useLocale();\n const [, setTimestamp] = useState();\n const {\n value: { session },\n } = useStore();\n\n useEffect(() => {\n Event.subscribe(EVENT_NAME, handleAdd);\n return () => Event.unsubscribe(EVENT_NAME, handleAdd);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n queue = {};\n }, [session]);\n\n const handleAdd = (notification) => {\n if (!notification) return;\n\n const { success, warning } = notification;\n const id = `${new Date().getTime()}:${Math.random().toFixed(8)}`;\n\n queue[id] = { ...notification, visible: false };\n forceRender();\n\n setTimeout(() => {\n queue[id].visible = true;\n forceRender();\n }, parseMotion());\n\n if (success || warning) setTimeout(() => handleClose(id), success ? 5000 : 10000);\n\n return;\n };\n\n const handleClose = (id) => {\n if (!queue[id]) return;\n\n setTimestamp(() => {\n queue[id].visible = false;\n\n setTimeout(() => {\n delete queue[id];\n forceRender();\n }, parseMotion());\n\n return new Date().getTime();\n });\n };\n\n const forceRender = () => setTimestamp(new Date().getTime());\n\n const parseMotion = () => {\n const { motionExpand = '0.3s' } = Theme.get();\n\n return parseFloat(motionExpand.replace('s')) * 1000;\n };\n\n const keys = Object.keys(queue);\n\n return (\n <View className={style.notifications}>\n {keys.sort().map((key, index) => {\n const { defaultMessage, id, visible = false, ...props } = queue[key];\n\n return (\n <Notification\n {...props}\n key={key}\n wide\n onClose={() => handleClose(key)}\n className={styles(style.item, visible && style.visible)}\n style={{ zIndex: keys.length - index }}\n >\n {translate({ id, defaultMessage })}\n </Notification>\n );\n })}\n </View>\n );\n};\n\nNotifications.displayName = 'core:components:Notifications';\n\nNotifications.propTypes = {};\n\nexport { Notifications };\n"],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ :root {
2
+ --mirai-ui-breakpoint-S: 430px;
3
+ --mirai-ui-layer-XL: 100;
4
+ --mirai-ui-motion-expand: 300ms;
5
+ --mirai-ui-motion-easing: cubic-bezier(0.1, 0.1, 0.25, 0.9);
6
+ --mirai-ui-space-S: 12px;
7
+ }
8
+
9
+ .notifications {
10
+ max-height: calc(100vh - calc(var(--mirai-ui-space-S) * 2));
11
+ padding: var(--mirai-ui-space-S);
12
+ position: fixed;
13
+ top: 0;
14
+ width: 100%;
15
+ z-index: var(--mirai-ui-layer-XL);
16
+ }
17
+
18
+ .notifications > .item:not(:last-child) {
19
+ margin-bottom: var(--mirai-ui-space-S);
20
+ }
21
+
22
+ /* S */
23
+ @media only screen and (max-width: 430px) {
24
+ .notifications {
25
+ right: 0;
26
+ }
27
+
28
+ .item {
29
+ transform: translateX(110%);
30
+ transition: transform var(--mirai-ui-motion-expand) var(--mirai-ui-motion-easing);
31
+ }
32
+
33
+ .item.visible {
34
+ transform: translateX(0%);
35
+ }
36
+ }
37
+
38
+ /* M & L */
39
+ @media only screen and (min-width: 431px) {
40
+ .notifications {
41
+ left: calc(50% - calc(var(--mirai-ui-breakpoint-S) / 2));
42
+ max-width: calc(var(--mirai-ui-breakpoint-S) - calc(var(--mirai-ui-space-S) * 2));
43
+ }
44
+
45
+ .item {
46
+ opacity: 0;
47
+ transform: translateY(-110%);
48
+ transition: opacity var(--mirai-ui-motion-expand) var(--mirai-ui-motion-easing),
49
+ transform var(--mirai-ui-motion-expand) var(--mirai-ui-motion-easing);
50
+ }
51
+
52
+ .item.visible {
53
+ opacity: 1;
54
+ transform: translateY(0%);
55
+ }
56
+ }
package/build/Core.js CHANGED
@@ -12,6 +12,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
12
12
  var _react = _interopRequireWildcard(require("react"));
13
13
  var _reactDom = _interopRequireDefault(require("react-dom"));
14
14
  var _components = require("./components");
15
+ var _Core = require("./Core.Notifications");
15
16
  var _helpers = require("./helpers");
16
17
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
17
18
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -44,7 +45,7 @@ const Core = _ref => {
44
45
  currency,
45
46
  dictionary,
46
47
  locale
47
- }, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, components.filter(_ref2 => {
48
+ }, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, !skeleton && /*#__PURE__*/_react.default.createElement(_Core.Notifications, null), components.filter(_ref2 => {
48
49
  let {
49
50
  desktop,
50
51
  mobile
package/build/Core.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Core.js","names":["ghosts","Core","children","components","skeleton","isMobile","isDesktop","useDevice","value","currency","locale","DEFAULT_LOCALE","useStore","dictionary","setDictionary","useState","useEffect","next","ServiceDictionary","get","filter","desktop","mobile","map","index","el","component","props","getGhost","skeletonFallback","SKELETONS","React","createElement","ReactDOM","createPortal","COMPONENTS","process","env","NODE_ENV","undefined","ghost","propTypes","PropTypes","node","arrayOf","shape","oneOf","Object","keys","any","bool"],"sources":["../src/Core.jsx"],"sourcesContent":["import { useStore } from '@mirai/data-sources';\nimport { DEFAULT_LOCALE, LocaleProvider } from '@mirai/locale';\nimport { ServiceDictionary } from '@mirai/services';\nimport { useDevice } from '@mirai/ui';\nimport PropTypes from 'prop-types';\nimport React, { useEffect, useState, Suspense } from 'react';\nimport ReactDOM from 'react-dom';\n\nimport { COMPONENTS, SKELETONS } from './components';\nimport { getGhost } from './helpers';\n\nconst ghosts = {};\n\nconst Core = ({ children, components = [], skeleton = false }) => {\n const { isMobile, isDesktop } = useDevice();\n const {\n value: { currency, locale = DEFAULT_LOCALE },\n } = useStore();\n\n const [dictionary, setDictionary] = useState();\n\n useEffect(() => {\n (async () => {\n const next = await ServiceDictionary.get(locale);\n if (next) setDictionary(next);\n })();\n }, [locale]);\n\n return (\n <LocaleProvider {...{ currency, dictionary, locale }}>\n <>\n {components\n .filter(({ desktop, mobile }) => !(isMobile && mobile === 'false') && !(isDesktop && desktop === 'false'))\n .map(({ el, component, ...props }, index) => {\n if (!ghosts[index]) ghosts[index] = getGhost(el);\n const skeletonFallback = SKELETONS[component] ? React.createElement(SKELETONS[component]) : <></>;\n\n return ReactDOM.createPortal(\n skeleton ? (\n skeletonFallback\n ) : (\n <Suspense fallback={skeletonFallback}>\n {React.createElement(COMPONENTS[component], {\n ...props,\n ['data-testid']: process.env.NODE_ENV === 'production' ? component : undefined,\n ghost: ghosts[index],\n skeleton: skeletonFallback,\n el,\n })}\n </Suspense>\n ),\n el,\n );\n })}\n </>\n {children}\n </LocaleProvider>\n );\n};\n\nCore.propTypes = {\n children: PropTypes.node,\n components: PropTypes.arrayOf(\n PropTypes.shape({\n component: PropTypes.oneOf(Object.keys(COMPONENTS)),\n el: PropTypes.any,\n }),\n ),\n skeleton: PropTypes.bool,\n};\n\nexport { Core };\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAqC;AAAA;AAAA;AAErC,MAAMA,MAAM,GAAG,CAAC,CAAC;AAEjB,MAAMC,IAAI,GAAG,QAAqD;EAAA,IAApD;IAAEC,QAAQ;IAAEC,UAAU,GAAG,EAAE;IAAEC,QAAQ,GAAG;EAAM,CAAC;EAC3D,MAAM;IAAEC,QAAQ;IAAEC;EAAU,CAAC,GAAG,IAAAC,aAAS,GAAE;EAC3C,MAAM;IACJC,KAAK,EAAE;MAAEC,QAAQ;MAAEC,MAAM,GAAGC;IAAe;EAC7C,CAAC,GAAG,IAAAC,qBAAQ,GAAE;EAEd,MAAM,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAG,IAAAC,eAAQ,GAAE;EAE9C,IAAAC,gBAAS,EAAC,MAAM;IACd,CAAC,YAAY;MACX,MAAMC,IAAI,GAAG,MAAMC,2BAAiB,CAACC,GAAG,CAACT,MAAM,CAAC;MAChD,IAAIO,IAAI,EAAEH,aAAa,CAACG,IAAI,CAAC;IAC/B,CAAC,GAAG;EACN,CAAC,EAAE,CAACP,MAAM,CAAC,CAAC;EAEZ,oBACE,6BAAC,sBAAc;IAAOD,QAAQ;IAAEI,UAAU;IAAEH;EAAM,gBAChD,4DACGP,UAAU,CACRiB,MAAM,CAAC;IAAA,IAAC;MAAEC,OAAO;MAAEC;IAAO,CAAC;IAAA,OAAK,EAAEjB,QAAQ,IAAIiB,MAAM,KAAK,OAAO,CAAC,IAAI,EAAEhB,SAAS,IAAIe,OAAO,KAAK,OAAO,CAAC;EAAA,EAAC,CACzGE,GAAG,CAAC,QAA8BC,KAAK,KAAK;IAAA,IAAvC;MAAEC,EAAE;MAAEC,SAAS;MAAE,GAAGC;IAAM,CAAC;IAC/B,IAAI,CAAC3B,MAAM,CAACwB,KAAK,CAAC,EAAExB,MAAM,CAACwB,KAAK,CAAC,GAAG,IAAAI,iBAAQ,EAACH,EAAE,CAAC;IAChD,MAAMI,gBAAgB,GAAGC,qBAAS,CAACJ,SAAS,CAAC,gBAAGK,cAAK,CAACC,aAAa,CAACF,qBAAS,CAACJ,SAAS,CAAC,CAAC,gBAAG,2DAAK;IAEjG,oBAAOO,iBAAQ,CAACC,YAAY,CAC1B9B,QAAQ,GACNyB,gBAAgB,gBAEhB,6BAAC,eAAQ;MAAC,QAAQ,EAAEA;IAAiB,gBAClCE,cAAK,CAACC,aAAa,CAACG,sBAAU,CAACT,SAAS,CAAC,EAAE;MAC1C,GAAGC,KAAK;MACR,CAAC,aAAa,GAAGS,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,GAAGZ,SAAS,GAAGa,SAAS;MAC9EC,KAAK,EAAExC,MAAM,CAACwB,KAAK,CAAC;MACpBpB,QAAQ,EAAEyB,gBAAgB;MAC1BJ;IACF,CAAC,CAAC,CAEL,EACDA,EAAE,CACH;EACH,CAAC,CAAC,CACH,EACFvB,QAAQ,CACM;AAErB,CAAC;AAAC;AAEFD,IAAI,CAACwC,SAAS,GAAG;EACfvC,QAAQ,EAAEwC,kBAAS,CAACC,IAAI;EACxBxC,UAAU,EAAEuC,kBAAS,CAACE,OAAO,CAC3BF,kBAAS,CAACG,KAAK,CAAC;IACdnB,SAAS,EAAEgB,kBAAS,CAACI,KAAK,CAACC,MAAM,CAACC,IAAI,CAACb,sBAAU,CAAC,CAAC;IACnDV,EAAE,EAAEiB,kBAAS,CAACO;EAChB,CAAC,CAAC,CACH;EACD7C,QAAQ,EAAEsC,kBAAS,CAACQ;AACtB,CAAC"}
1
+ {"version":3,"file":"Core.js","names":["ghosts","Core","children","components","skeleton","isMobile","isDesktop","useDevice","value","currency","locale","DEFAULT_LOCALE","useStore","dictionary","setDictionary","useState","useEffect","next","ServiceDictionary","get","filter","desktop","mobile","map","index","el","component","props","getGhost","skeletonFallback","SKELETONS","React","createElement","ReactDOM","createPortal","COMPONENTS","process","env","NODE_ENV","undefined","ghost","propTypes","PropTypes","node","arrayOf","shape","oneOf","Object","keys","any","bool"],"sources":["../src/Core.jsx"],"sourcesContent":["import { useStore } from '@mirai/data-sources';\nimport { DEFAULT_LOCALE, LocaleProvider } from '@mirai/locale';\nimport { ServiceDictionary } from '@mirai/services';\nimport { useDevice } from '@mirai/ui';\nimport PropTypes from 'prop-types';\nimport React, { useEffect, useState, Suspense } from 'react';\nimport ReactDOM from 'react-dom';\n\nimport { COMPONENTS, SKELETONS } from './components';\nimport { Notifications } from './Core.Notifications';\nimport { getGhost } from './helpers';\n\nconst ghosts = {};\n\nconst Core = ({ children, components = [], skeleton = false }) => {\n const { isMobile, isDesktop } = useDevice();\n const {\n value: { currency, locale = DEFAULT_LOCALE },\n } = useStore();\n\n const [dictionary, setDictionary] = useState();\n\n useEffect(() => {\n (async () => {\n const next = await ServiceDictionary.get(locale);\n if (next) setDictionary(next);\n })();\n }, [locale]);\n\n return (\n <LocaleProvider {...{ currency, dictionary, locale }}>\n <>\n {!skeleton && <Notifications />}\n\n {components\n .filter(({ desktop, mobile }) => !(isMobile && mobile === 'false') && !(isDesktop && desktop === 'false'))\n .map(({ el, component, ...props }, index) => {\n if (!ghosts[index]) ghosts[index] = getGhost(el);\n const skeletonFallback = SKELETONS[component] ? React.createElement(SKELETONS[component]) : <></>;\n\n return ReactDOM.createPortal(\n skeleton ? (\n skeletonFallback\n ) : (\n <Suspense fallback={skeletonFallback}>\n {React.createElement(COMPONENTS[component], {\n ...props,\n ['data-testid']: process.env.NODE_ENV === 'production' ? component : undefined,\n ghost: ghosts[index],\n skeleton: skeletonFallback,\n el,\n })}\n </Suspense>\n ),\n el,\n );\n })}\n </>\n {children}\n </LocaleProvider>\n );\n};\n\nCore.propTypes = {\n children: PropTypes.node,\n components: PropTypes.arrayOf(\n PropTypes.shape({\n component: PropTypes.oneOf(Object.keys(COMPONENTS)),\n el: PropTypes.any,\n }),\n ),\n skeleton: PropTypes.bool,\n};\n\nexport { Core };\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAqC;AAAA;AAAA;AAErC,MAAMA,MAAM,GAAG,CAAC,CAAC;AAEjB,MAAMC,IAAI,GAAG,QAAqD;EAAA,IAApD;IAAEC,QAAQ;IAAEC,UAAU,GAAG,EAAE;IAAEC,QAAQ,GAAG;EAAM,CAAC;EAC3D,MAAM;IAAEC,QAAQ;IAAEC;EAAU,CAAC,GAAG,IAAAC,aAAS,GAAE;EAC3C,MAAM;IACJC,KAAK,EAAE;MAAEC,QAAQ;MAAEC,MAAM,GAAGC;IAAe;EAC7C,CAAC,GAAG,IAAAC,qBAAQ,GAAE;EAEd,MAAM,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAG,IAAAC,eAAQ,GAAE;EAE9C,IAAAC,gBAAS,EAAC,MAAM;IACd,CAAC,YAAY;MACX,MAAMC,IAAI,GAAG,MAAMC,2BAAiB,CAACC,GAAG,CAACT,MAAM,CAAC;MAChD,IAAIO,IAAI,EAAEH,aAAa,CAACG,IAAI,CAAC;IAC/B,CAAC,GAAG;EACN,CAAC,EAAE,CAACP,MAAM,CAAC,CAAC;EAEZ,oBACE,6BAAC,sBAAc;IAAOD,QAAQ;IAAEI,UAAU;IAAEH;EAAM,gBAChD,4DACG,CAACN,QAAQ,iBAAI,6BAAC,mBAAa,OAAG,EAE9BD,UAAU,CACRiB,MAAM,CAAC;IAAA,IAAC;MAAEC,OAAO;MAAEC;IAAO,CAAC;IAAA,OAAK,EAAEjB,QAAQ,IAAIiB,MAAM,KAAK,OAAO,CAAC,IAAI,EAAEhB,SAAS,IAAIe,OAAO,KAAK,OAAO,CAAC;EAAA,EAAC,CACzGE,GAAG,CAAC,QAA8BC,KAAK,KAAK;IAAA,IAAvC;MAAEC,EAAE;MAAEC,SAAS;MAAE,GAAGC;IAAM,CAAC;IAC/B,IAAI,CAAC3B,MAAM,CAACwB,KAAK,CAAC,EAAExB,MAAM,CAACwB,KAAK,CAAC,GAAG,IAAAI,iBAAQ,EAACH,EAAE,CAAC;IAChD,MAAMI,gBAAgB,GAAGC,qBAAS,CAACJ,SAAS,CAAC,gBAAGK,cAAK,CAACC,aAAa,CAACF,qBAAS,CAACJ,SAAS,CAAC,CAAC,gBAAG,2DAAK;IAEjG,oBAAOO,iBAAQ,CAACC,YAAY,CAC1B9B,QAAQ,GACNyB,gBAAgB,gBAEhB,6BAAC,eAAQ;MAAC,QAAQ,EAAEA;IAAiB,gBAClCE,cAAK,CAACC,aAAa,CAACG,sBAAU,CAACT,SAAS,CAAC,EAAE;MAC1C,GAAGC,KAAK;MACR,CAAC,aAAa,GAAGS,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,GAAGZ,SAAS,GAAGa,SAAS;MAC9EC,KAAK,EAAExC,MAAM,CAACwB,KAAK,CAAC;MACpBpB,QAAQ,EAAEyB,gBAAgB;MAC1BJ;IACF,CAAC,CAAC,CAEL,EACDA,EAAE,CACH;EACH,CAAC,CAAC,CACH,EACFvB,QAAQ,CACM;AAErB,CAAC;AAAC;AAEFD,IAAI,CAACwC,SAAS,GAAG;EACfvC,QAAQ,EAAEwC,kBAAS,CAACC,IAAI;EACxBxC,UAAU,EAAEuC,kBAAS,CAACE,OAAO,CAC3BF,kBAAS,CAACG,KAAK,CAAC;IACdnB,SAAS,EAAEgB,kBAAS,CAACI,KAAK,CAACC,MAAM,CAACC,IAAI,CAACb,sBAAU,CAAC,CAAC;IACnDV,EAAE,EAAEiB,kBAAS,CAACO;EAChB,CAAC,CAAC,CACH;EACD7C,QAAQ,EAAEsC,kBAAS,CAACQ;AACtB,CAAC"}
@@ -28,7 +28,7 @@ const CoreProvider = _ref => {
28
28
  const [store, setStore] = (0, _react.useState)();
29
29
  (0, _react.useLayoutEffect)(() => {
30
30
  (async () => {
31
- const urlParams = (0, _helpers.fetchUrlParams)(location.search.substring(1));
31
+ const urlParams = (0, _helpers.fetchUrlParams)(location.search);
32
32
  const cookies = (0, _helpers.fetchCookies)([_Core3.COOKIE_CART, _Core3.COOKIE_PESTANA, _Core3.COOKIE_VALUES]);
33
33
  let session = (0, _helpers.fetchSession)(urlParams);
34
34
  if (session && !(await (0, _helpers.checkSession)(id))) session = undefined;
@@ -57,14 +57,14 @@ const CoreProvider = _ref => {
57
57
  ...store,
58
58
  ...value
59
59
  }
60
- }, /*#__PURE__*/_react.default.createElement(_Core.Core, null, children))) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null);
60
+ }, /*#__PURE__*/_react.default.createElement(_Core.Core, null, children))) : null;
61
61
  };
62
62
  exports.CoreProvider = CoreProvider;
63
63
  CoreProvider.propTypes = {
64
64
  children: _propTypes.default.node.isRequired,
65
65
  currency: _propTypes.default.string,
66
- id: _propTypes.default.string.isRequired,
67
66
  hotel: _propTypes.default.string,
67
+ id: _propTypes.default.string.isRequired,
68
68
  locale: _propTypes.default.string,
69
69
  metrics: _propTypes.default.string,
70
70
  type: _propTypes.default.oneOf(Object.values(_Core2.TYPE)),
@@ -1 +1 @@
1
- {"version":3,"file":"Core.provider.js","names":["CoreProvider","children","currency","hotel","id","locale","metrics","type","value","store","setStore","useState","useLayoutEffect","urlParams","fetchUrlParams","location","search","substring","cookies","fetchCookies","COOKIE_CART","COOKIE_PESTANA","COOKIE_VALUES","session","fetchSession","checkSession","undefined","instance","config","fetchConfig","consolidateStore","process","env","METRICS","propTypes","PropTypes","node","isRequired","string","oneOf","Object","values","TYPE","shape"],"sources":["../src/Core.provider.jsx"],"sourcesContent":["import { MetricsProvider, StoreProvider } from '@mirai/data-sources';\nimport PropTypes from 'prop-types';\nimport React, { useLayoutEffect, useState } from 'react';\n\nimport { Core } from './Core';\nimport { TYPE } from './Core.constants';\nimport { COOKIE_CART, COOKIE_PESTANA, COOKIE_VALUES } from './Core.definition';\nimport { checkSession, consolidateStore, fetchConfig, fetchCookies, fetchSession, fetchUrlParams } from './helpers';\n\nconst CoreProvider = ({ children, currency, hotel, id, locale, metrics, type, value = {} }) => {\n const [store, setStore] = useState();\n\n useLayoutEffect(() => {\n (async () => {\n const urlParams = fetchUrlParams(location.search.substring(1));\n const cookies = fetchCookies([COOKIE_CART, COOKIE_PESTANA, COOKIE_VALUES]);\n let session = fetchSession(urlParams);\n if (session && !(await checkSession(id))) session = undefined;\n\n const instance = { currency, id, type, locale, hotel };\n const config = await fetchConfig(instance);\n\n setStore(consolidateStore({ config, cookies, instance, session, urlParams }));\n })();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return store ? (\n <MetricsProvider token={metrics || process.env.METRICS}>\n <StoreProvider value={{ ...store, ...value }}>\n <Core>{children}</Core>\n </StoreProvider>\n </MetricsProvider>\n ) : (\n <></>\n );\n};\n\nCoreProvider.propTypes = {\n children: PropTypes.node.isRequired,\n currency: PropTypes.string,\n id: PropTypes.string.isRequired,\n hotel: PropTypes.string,\n locale: PropTypes.string,\n metrics: PropTypes.string,\n type: PropTypes.oneOf(Object.values(TYPE)),\n value: PropTypes.shape({}),\n};\n\nexport { CoreProvider };\n"],"mappings":";;;;;;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAoH;AAAA;AAAA;AAEpH,MAAMA,YAAY,GAAG,QAA0E;EAAA,IAAzE;IAAEC,QAAQ;IAAEC,QAAQ;IAAEC,KAAK;IAAEC,EAAE;IAAEC,MAAM;IAAEC,OAAO;IAAEC,IAAI;IAAEC,KAAK,GAAG,CAAC;EAAE,CAAC;EACxF,MAAM,CAACC,KAAK,EAAEC,QAAQ,CAAC,GAAG,IAAAC,eAAQ,GAAE;EAEpC,IAAAC,sBAAe,EAAC,MAAM;IACpB,CAAC,YAAY;MACX,MAAMC,SAAS,GAAG,IAAAC,uBAAc,EAACC,QAAQ,CAACC,MAAM,CAACC,SAAS,CAAC,CAAC,CAAC,CAAC;MAC9D,MAAMC,OAAO,GAAG,IAAAC,qBAAY,EAAC,CAACC,kBAAW,EAAEC,qBAAc,EAAEC,oBAAa,CAAC,CAAC;MAC1E,IAAIC,OAAO,GAAG,IAAAC,qBAAY,EAACX,SAAS,CAAC;MACrC,IAAIU,OAAO,IAAI,EAAE,MAAM,IAAAE,qBAAY,EAACrB,EAAE,CAAC,CAAC,EAAEmB,OAAO,GAAGG,SAAS;MAE7D,MAAMC,QAAQ,GAAG;QAAEzB,QAAQ;QAAEE,EAAE;QAAEG,IAAI;QAAEF,MAAM;QAAEF;MAAM,CAAC;MACtD,MAAMyB,MAAM,GAAG,MAAM,IAAAC,oBAAW,EAACF,QAAQ,CAAC;MAE1CjB,QAAQ,CAAC,IAAAoB,yBAAgB,EAAC;QAAEF,MAAM;QAAEV,OAAO;QAAES,QAAQ;QAAEJ,OAAO;QAAEV;MAAU,CAAC,CAAC,CAAC;IAC/E,CAAC,GAAG;IACJ;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,OAAOJ,KAAK,gBACV,6BAAC,4BAAe;IAAC,KAAK,EAAEH,OAAO,IAAIyB,OAAO,CAACC,GAAG,CAACC;EAAQ,gBACrD,6BAAC,0BAAa;IAAC,KAAK,EAAE;MAAE,GAAGxB,KAAK;MAAE,GAAGD;IAAM;EAAE,gBAC3C,6BAAC,UAAI,QAAEP,QAAQ,CAAQ,CACT,CACA,gBAElB,2DACD;AACH,CAAC;AAAC;AAEFD,YAAY,CAACkC,SAAS,GAAG;EACvBjC,QAAQ,EAAEkC,kBAAS,CAACC,IAAI,CAACC,UAAU;EACnCnC,QAAQ,EAAEiC,kBAAS,CAACG,MAAM;EAC1BlC,EAAE,EAAE+B,kBAAS,CAACG,MAAM,CAACD,UAAU;EAC/BlC,KAAK,EAAEgC,kBAAS,CAACG,MAAM;EACvBjC,MAAM,EAAE8B,kBAAS,CAACG,MAAM;EACxBhC,OAAO,EAAE6B,kBAAS,CAACG,MAAM;EACzB/B,IAAI,EAAE4B,kBAAS,CAACI,KAAK,CAACC,MAAM,CAACC,MAAM,CAACC,WAAI,CAAC,CAAC;EAC1ClC,KAAK,EAAE2B,kBAAS,CAACQ,KAAK,CAAC,CAAC,CAAC;AAC3B,CAAC"}
1
+ {"version":3,"file":"Core.provider.js","names":["CoreProvider","children","currency","hotel","id","locale","metrics","type","value","store","setStore","useState","useLayoutEffect","urlParams","fetchUrlParams","location","search","cookies","fetchCookies","COOKIE_CART","COOKIE_PESTANA","COOKIE_VALUES","session","fetchSession","checkSession","undefined","instance","config","fetchConfig","consolidateStore","process","env","METRICS","propTypes","PropTypes","node","isRequired","string","oneOf","Object","values","TYPE","shape"],"sources":["../src/Core.provider.jsx"],"sourcesContent":["import { MetricsProvider, StoreProvider } from '@mirai/data-sources';\nimport PropTypes from 'prop-types';\nimport React, { useLayoutEffect, useState } from 'react';\n\nimport { Core } from './Core';\nimport { TYPE } from './Core.constants';\nimport { COOKIE_CART, COOKIE_PESTANA, COOKIE_VALUES } from './Core.definition';\nimport { checkSession, consolidateStore, fetchConfig, fetchCookies, fetchSession, fetchUrlParams } from './helpers';\n\nconst CoreProvider = ({ children, currency, hotel, id, locale, metrics, type, value = {} }) => {\n const [store, setStore] = useState();\n\n useLayoutEffect(() => {\n (async () => {\n const urlParams = fetchUrlParams(location.search);\n const cookies = fetchCookies([COOKIE_CART, COOKIE_PESTANA, COOKIE_VALUES]);\n let session = fetchSession(urlParams);\n if (session && !(await checkSession(id))) session = undefined;\n\n const instance = { currency, id, type, locale, hotel };\n const config = await fetchConfig(instance);\n\n setStore(consolidateStore({ config, cookies, instance, session, urlParams }));\n })();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return store ? (\n <MetricsProvider token={metrics || process.env.METRICS}>\n <StoreProvider value={{ ...store, ...value }}>\n <Core>{children}</Core>\n </StoreProvider>\n </MetricsProvider>\n ) : null;\n};\n\nCoreProvider.propTypes = {\n children: PropTypes.node.isRequired,\n currency: PropTypes.string,\n hotel: PropTypes.string,\n id: PropTypes.string.isRequired,\n locale: PropTypes.string,\n metrics: PropTypes.string,\n type: PropTypes.oneOf(Object.values(TYPE)),\n value: PropTypes.shape({}),\n};\n\nexport { CoreProvider };\n"],"mappings":";;;;;;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAoH;AAAA;AAAA;AAEpH,MAAMA,YAAY,GAAG,QAA0E;EAAA,IAAzE;IAAEC,QAAQ;IAAEC,QAAQ;IAAEC,KAAK;IAAEC,EAAE;IAAEC,MAAM;IAAEC,OAAO;IAAEC,IAAI;IAAEC,KAAK,GAAG,CAAC;EAAE,CAAC;EACxF,MAAM,CAACC,KAAK,EAAEC,QAAQ,CAAC,GAAG,IAAAC,eAAQ,GAAE;EAEpC,IAAAC,sBAAe,EAAC,MAAM;IACpB,CAAC,YAAY;MACX,MAAMC,SAAS,GAAG,IAAAC,uBAAc,EAACC,QAAQ,CAACC,MAAM,CAAC;MACjD,MAAMC,OAAO,GAAG,IAAAC,qBAAY,EAAC,CAACC,kBAAW,EAAEC,qBAAc,EAAEC,oBAAa,CAAC,CAAC;MAC1E,IAAIC,OAAO,GAAG,IAAAC,qBAAY,EAACV,SAAS,CAAC;MACrC,IAAIS,OAAO,IAAI,EAAE,MAAM,IAAAE,qBAAY,EAACpB,EAAE,CAAC,CAAC,EAAEkB,OAAO,GAAGG,SAAS;MAE7D,MAAMC,QAAQ,GAAG;QAAExB,QAAQ;QAAEE,EAAE;QAAEG,IAAI;QAAEF,MAAM;QAAEF;MAAM,CAAC;MACtD,MAAMwB,MAAM,GAAG,MAAM,IAAAC,oBAAW,EAACF,QAAQ,CAAC;MAE1ChB,QAAQ,CAAC,IAAAmB,yBAAgB,EAAC;QAAEF,MAAM;QAAEV,OAAO;QAAES,QAAQ;QAAEJ,OAAO;QAAET;MAAU,CAAC,CAAC,CAAC;IAC/E,CAAC,GAAG;IACJ;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,OAAOJ,KAAK,gBACV,6BAAC,4BAAe;IAAC,KAAK,EAAEH,OAAO,IAAIwB,OAAO,CAACC,GAAG,CAACC;EAAQ,gBACrD,6BAAC,0BAAa;IAAC,KAAK,EAAE;MAAE,GAAGvB,KAAK;MAAE,GAAGD;IAAM;EAAE,gBAC3C,6BAAC,UAAI,QAAEP,QAAQ,CAAQ,CACT,CACA,GAChB,IAAI;AACV,CAAC;AAAC;AAEFD,YAAY,CAACiC,SAAS,GAAG;EACvBhC,QAAQ,EAAEiC,kBAAS,CAACC,IAAI,CAACC,UAAU;EACnClC,QAAQ,EAAEgC,kBAAS,CAACG,MAAM;EAC1BlC,KAAK,EAAE+B,kBAAS,CAACG,MAAM;EACvBjC,EAAE,EAAE8B,kBAAS,CAACG,MAAM,CAACD,UAAU;EAC/B/B,MAAM,EAAE6B,kBAAS,CAACG,MAAM;EACxB/B,OAAO,EAAE4B,kBAAS,CAACG,MAAM;EACzB9B,IAAI,EAAE2B,kBAAS,CAACI,KAAK,CAACC,MAAM,CAACC,MAAM,CAACC,WAAI,CAAC,CAAC;EAC1CjC,KAAK,EAAE0B,kBAAS,CAACQ,KAAK,CAAC,CAAC,CAAC;AAC3B,CAAC"}
@@ -6,8 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.fetchUrlParams = void 0;
7
7
  const fetchUrlParams = function () {
8
8
  let value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
9
- if (!value.length) return {};
10
- return value ? JSON.parse('{"' + decodeURI(value).replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g, '":"') + '"}') : {};
9
+ return Object.fromEntries(new URLSearchParams(value));
11
10
  };
12
11
  exports.fetchUrlParams = fetchUrlParams;
13
12
  //# sourceMappingURL=fetchUrlParams.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fetchUrlParams.js","names":["fetchUrlParams","value","length","JSON","parse","decodeURI","replace"],"sources":["../../src/helpers/fetchUrlParams.js"],"sourcesContent":["export const fetchUrlParams = (value = '') => {\n if (!value.length) return {};\n\n return value\n ? JSON.parse('{\"' + decodeURI(value).replace(/\"/g, '\\\\\"').replace(/&/g, '\",\"').replace(/=/g, '\":\"') + '\"}')\n : {};\n};\n"],"mappings":";;;;;;AAAO,MAAMA,cAAc,GAAG,YAAgB;EAAA,IAAfC,KAAK,uEAAG,EAAE;EACvC,IAAI,CAACA,KAAK,CAACC,MAAM,EAAE,OAAO,CAAC,CAAC;EAE5B,OAAOD,KAAK,GACRE,IAAI,CAACC,KAAK,CAAC,IAAI,GAAGC,SAAS,CAACJ,KAAK,CAAC,CAACK,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAACA,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAACA,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,GACzG,CAAC,CAAC;AACR,CAAC;AAAC"}
1
+ {"version":3,"file":"fetchUrlParams.js","names":["fetchUrlParams","value","Object","fromEntries","URLSearchParams"],"sources":["../../src/helpers/fetchUrlParams.js"],"sourcesContent":["export const fetchUrlParams = (value = '') => Object.fromEntries(new URLSearchParams(value));\n"],"mappings":";;;;;;AAAO,MAAMA,cAAc,GAAG;EAAA,IAACC,KAAK,uEAAG,EAAE;EAAA,OAAKC,MAAM,CAACC,WAAW,CAAC,IAAIC,eAAe,CAACH,KAAK,CAAC,CAAC;AAAA;AAAC"}
package/build/index.js CHANGED
@@ -13,9 +13,11 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
13
13
  window.Mirai = {
14
14
  ...window.Mirai,
15
15
  environment: process.env.NODE_ENV,
16
+ Event: _dataSources.Event,
16
17
  services: {
17
18
  booking: process.env.SERVICE_BOOKING,
18
19
  club: process.env.SERVICE_CLUB,
20
+ dictionary: process.env.SERVICE_DICTIONARY,
19
21
  engine: process.env.SERVICE_ENGINE,
20
22
  static: process.env.SERVICE_STATIC,
21
23
  user: process.env.SERVICE_USER
@@ -28,7 +30,7 @@ window.Mirai.core = async () => {
28
30
  console.log(`${isProduction ? '🟢' : isDevelopment ? '🟡' : '🔴'} ${_package.name} v${_package.version} [${process.env.NODE_ENV}]`);
29
31
 
30
32
  // 1. Fetch client-side dataSources
31
- const urlParams = (0, _helpers.fetchUrlParams)(location.search.substring(1));
33
+ const urlParams = (0, _helpers.fetchUrlParams)(location.search);
32
34
  const cookies = (0, _helpers.fetchCookies)([_Core2.COOKIE_CART, _Core2.COOKIE_PESTANA, _Core2.COOKIE_VALUES]);
33
35
  let session = (0, _helpers.fetchSession)(urlParams);
34
36
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["window","Mirai","environment","process","env","NODE_ENV","services","booking","SERVICE_BOOKING","club","SERVICE_CLUB","engine","SERVICE_ENGINE","static","SERVICE_STATIC","user","SERVICE_USER","version","core","isProduction","isDevelopment","console","log","name","urlParams","fetchUrlParams","location","search","substring","cookies","fetchCookies","COOKIE_CART","COOKIE_PESTANA","COOKIE_VALUES","session","fetchSession","loadEnvironment","undefined","instance","findInstance","components","findComponents","length","ReactDOM","render","el","config","fetchConfig","theme","checkSession","id","store","consolidateStore","METRICS"],"sources":["../src/index.js"],"sourcesContent":["/* eslint-disable no-console */\nimport { MetricsProvider, StoreProvider } from '@mirai/data-sources';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport { name, version } from '../package.json';\nimport { Core } from './Core';\nimport { COOKIE_CART, COOKIE_PESTANA, COOKIE_VALUES } from './Core.definition';\nimport {\n checkSession,\n consolidateStore,\n fetchConfig,\n fetchCookies,\n fetchSession,\n fetchUrlParams,\n findComponents,\n findInstance,\n loadEnvironment,\n theme,\n} from './helpers';\n\nwindow.Mirai = {\n ...window.Mirai,\n environment: process.env.NODE_ENV,\n services: {\n booking: process.env.SERVICE_BOOKING,\n club: process.env.SERVICE_CLUB,\n engine: process.env.SERVICE_ENGINE,\n static: process.env.SERVICE_STATIC,\n user: process.env.SERVICE_USER,\n },\n version,\n};\n\nwindow.Mirai.core = async () => {\n const isProduction = process.env.NODE_ENV === 'production';\n const isDevelopment = process.env.NODE_ENV === 'development';\n\n console.log(`${isProduction ? '🟢' : isDevelopment ? '🟡' : '🔴'} ${name} v${version} [${process.env.NODE_ENV}]`);\n\n // 1. Fetch client-side dataSources\n const urlParams = fetchUrlParams(location.search.substring(1));\n const cookies = fetchCookies([COOKIE_CART, COOKIE_PESTANA, COOKIE_VALUES]);\n let session = fetchSession(urlParams);\n\n // 2. Analize environment\n const environment = urlParams.env && isProduction ? loadEnvironment(urlParams.env) : undefined;\n if (environment) return;\n\n // 3. Find instance\n const instance = findInstance({ urlParams });\n if (!instance) return;\n\n // 4. Find components\n const components = findComponents();\n if (!components.length) return;\n\n // 5. Render skeletons\n ReactDOM.render(\n <React.StrictMode>\n <Core {...{ components }} skeleton />\n </React.StrictMode>,\n instance.el,\n );\n\n // 6. Analize id to fetch its config\n const config = await fetchConfig(instance);\n if (!config) return;\n\n // 7. Theming\n theme();\n\n // 8. Check session\n if (session && !(await checkSession(instance.id))) session = undefined;\n\n // 9. Consolidate store\n const store = consolidateStore({ config, cookies, instance, session, urlParams });\n\n // 10. Render components\n ReactDOM.render(\n <React.StrictMode>\n <MetricsProvider token={process.env.METRICS}>\n <StoreProvider value={store}>\n <Core {...{ components }} />\n </StoreProvider>\n </MetricsProvider>\n </React.StrictMode>,\n instance.el,\n );\n};\n\nwindow.Mirai.core();\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["window","Mirai","environment","process","env","NODE_ENV","Event","services","booking","SERVICE_BOOKING","club","SERVICE_CLUB","dictionary","SERVICE_DICTIONARY","engine","SERVICE_ENGINE","static","SERVICE_STATIC","user","SERVICE_USER","version","core","isProduction","isDevelopment","console","log","name","urlParams","fetchUrlParams","location","search","cookies","fetchCookies","COOKIE_CART","COOKIE_PESTANA","COOKIE_VALUES","session","fetchSession","loadEnvironment","undefined","instance","findInstance","components","findComponents","length","ReactDOM","render","el","config","fetchConfig","theme","checkSession","id","store","consolidateStore","METRICS"],"sources":["../src/index.js"],"sourcesContent":["/* eslint-disable no-console */\nimport { Event, MetricsProvider, StoreProvider } from '@mirai/data-sources';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport { name, version } from '../package.json';\nimport { Core } from './Core';\nimport { COOKIE_CART, COOKIE_PESTANA, COOKIE_VALUES } from './Core.definition';\nimport {\n checkSession,\n consolidateStore,\n fetchConfig,\n fetchCookies,\n fetchSession,\n fetchUrlParams,\n findComponents,\n findInstance,\n loadEnvironment,\n theme,\n} from './helpers';\n\nwindow.Mirai = {\n ...window.Mirai,\n environment: process.env.NODE_ENV,\n Event,\n services: {\n booking: process.env.SERVICE_BOOKING,\n club: process.env.SERVICE_CLUB,\n dictionary: process.env.SERVICE_DICTIONARY,\n engine: process.env.SERVICE_ENGINE,\n static: process.env.SERVICE_STATIC,\n user: process.env.SERVICE_USER,\n },\n version,\n};\n\nwindow.Mirai.core = async () => {\n const isProduction = process.env.NODE_ENV === 'production';\n const isDevelopment = process.env.NODE_ENV === 'development';\n\n console.log(`${isProduction ? '🟢' : isDevelopment ? '🟡' : '🔴'} ${name} v${version} [${process.env.NODE_ENV}]`);\n\n // 1. Fetch client-side dataSources\n const urlParams = fetchUrlParams(location.search);\n const cookies = fetchCookies([COOKIE_CART, COOKIE_PESTANA, COOKIE_VALUES]);\n let session = fetchSession(urlParams);\n\n // 2. Analize environment\n const environment = urlParams.env && isProduction ? loadEnvironment(urlParams.env) : undefined;\n if (environment) return;\n\n // 3. Find instance\n const instance = findInstance({ urlParams });\n if (!instance) return;\n\n // 4. Find components\n const components = findComponents();\n if (!components.length) return;\n\n // 5. Render skeletons\n ReactDOM.render(\n <React.StrictMode>\n <Core {...{ components }} skeleton />\n </React.StrictMode>,\n instance.el,\n );\n\n // 6. Analize id to fetch its config\n const config = await fetchConfig(instance);\n if (!config) return;\n\n // 7. Theming\n theme();\n\n // 8. Check session\n if (session && !(await checkSession(instance.id))) session = undefined;\n\n // 9. Consolidate store\n const store = consolidateStore({ config, cookies, instance, session, urlParams });\n\n // 10. Render components\n ReactDOM.render(\n <React.StrictMode>\n <MetricsProvider token={process.env.METRICS}>\n <StoreProvider value={store}>\n <Core {...{ components }} />\n </StoreProvider>\n </MetricsProvider>\n </React.StrictMode>,\n instance.el,\n );\n};\n\nwindow.Mirai.core();\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mirai/core",
3
- "version": "0.1.67",
3
+ "version": "0.1.68-beta",
4
4
  "source": "src/index.js",
5
5
  "repository": "https://gitlab.com/miraicorp/dev/frontend/core",
6
6
  "author": "JΛVI <hello@soyjavi.com>",