miolo-react 3.0.0-beta.21 → 3.0.0-beta.210
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/package.json +15 -23
- package/src/AppBrowser.jsx +3 -8
- package/src/AppServer.jsx +3 -13
- package/src/context/MioloContext.mjs +2 -2
- package/src/context/MioloContextProvider.jsx +58 -44
- package/src/context/useMioloContext.jsx +2 -2
- package/src/context/withMioloContext.jsx +4 -9
- package/src/index.mjs +5 -6
- package/src/ssr/getSsrDataFromContext.mjs +14 -15
- package/src/ssr/usePropsCheck.mjs +69 -0
- package/src/ssr/useSsrDataOrReload.mjs +218 -32
- package/dist/miolo-react.mjs +0 -265
- package/dist/miolo-react.mjs.map +0 -1
- package/dist/miolo-react.umd.js +0 -378
- package/dist/miolo-react.umd.js.map +0 -1
|
@@ -1,43 +1,229 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import getSsrDataFromContext from
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
return
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
1
|
+
import { useCallback, useEffect, useMemo, useState } from "react"
|
|
2
|
+
import getSsrDataFromContext from "./getSsrDataFromContext.mjs"
|
|
3
|
+
import usePropsCheck from "./usePropsCheck.mjs"
|
|
4
|
+
|
|
5
|
+
const makeSerializable = (obj) => {
|
|
6
|
+
try {
|
|
7
|
+
return JSON.parse(JSON.stringify(obj))
|
|
8
|
+
} catch (_) {
|
|
9
|
+
return obj
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
const useSsrDataOrReload = (context, miolo, name, options) => {
|
|
14
|
+
const { fetcher, socket, logger } = miolo
|
|
15
|
+
const {
|
|
16
|
+
defval = [],
|
|
17
|
+
loader = undefined,
|
|
18
|
+
url = undefined,
|
|
19
|
+
params = undefined,
|
|
20
|
+
modifier = undefined,
|
|
21
|
+
effect = undefined,
|
|
22
|
+
model = undefined,
|
|
23
|
+
cache = false,
|
|
24
|
+
ttl = undefined
|
|
25
|
+
} = options
|
|
26
|
+
|
|
27
|
+
usePropsCheck(loader, effect, modifier, name)
|
|
28
|
+
|
|
29
|
+
const parseData = useCallback(
|
|
30
|
+
(value) => {
|
|
31
|
+
let parsed = value
|
|
32
|
+
if (model !== undefined) {
|
|
33
|
+
parsed = new model(parsed)
|
|
34
|
+
}
|
|
35
|
+
if (modifier !== undefined) {
|
|
36
|
+
parsed = modifier(parsed)
|
|
37
|
+
}
|
|
38
|
+
return parsed
|
|
39
|
+
},
|
|
40
|
+
[modifier, model]
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
const ssrDataFromContext = useMemo(() => {
|
|
44
|
+
return getSsrDataFromContext(context, name)
|
|
45
|
+
}, [context, name])
|
|
46
|
+
|
|
47
|
+
const [ssrData, setSsrData] = useState(
|
|
48
|
+
parseData(ssrDataFromContext !== undefined ? ssrDataFromContext : defval)
|
|
49
|
+
)
|
|
50
|
+
const [status, setStatus] = useState(ssrDataFromContext !== undefined ? "loaded" : "idle")
|
|
51
|
+
const [error, setError] = useState(undefined)
|
|
52
|
+
const [socketInited, setSocketInited] = useState(false)
|
|
53
|
+
|
|
54
|
+
const updateSsrData = useCallback(
|
|
55
|
+
(data) => {
|
|
56
|
+
setStatus("loading")
|
|
57
|
+
setSsrData(parseData(data))
|
|
58
|
+
setStatus("loaded")
|
|
59
|
+
setError(undefined)
|
|
60
|
+
if (cache === true) {
|
|
61
|
+
if (typeof window !== "undefined") {
|
|
62
|
+
import("idb-keyval").then(({ set }) => {
|
|
63
|
+
set(`ssr-cache-${name}`, { data: makeSerializable(data), ts: Date.now() }).catch(
|
|
64
|
+
() => {}
|
|
65
|
+
)
|
|
66
|
+
})
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
[parseData, name, cache]
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
const refreshSsrData = useCallback(async () => {
|
|
74
|
+
if (status === "loading") {
|
|
18
75
|
return
|
|
19
76
|
}
|
|
20
77
|
|
|
21
|
-
|
|
78
|
+
setStatus("loading")
|
|
79
|
+
setError(undefined)
|
|
80
|
+
|
|
81
|
+
let newData
|
|
82
|
+
|
|
83
|
+
if (loader !== undefined) {
|
|
84
|
+
newData = await loader(context, fetcher)
|
|
85
|
+
} else {
|
|
86
|
+
if (!url) {
|
|
87
|
+
setError(`No url provided for ${name}`)
|
|
88
|
+
} else {
|
|
89
|
+
const resp = await fetcher.get(url, params)
|
|
90
|
+
if (resp.ok) {
|
|
91
|
+
newData = resp?.data
|
|
92
|
+
} else {
|
|
93
|
+
setError(resp?.error || "Unknown error")
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
22
97
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
98
|
+
if (newData !== undefined) {
|
|
99
|
+
if (cache === true) {
|
|
100
|
+
if (typeof window !== "undefined") {
|
|
101
|
+
try {
|
|
102
|
+
const { set } = await import("idb-keyval")
|
|
103
|
+
await set(`ssr-cache-${name}`, { data: makeSerializable(newData), ts: Date.now() })
|
|
104
|
+
} catch (err) {
|
|
105
|
+
console.error(err)
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
setSsrData(parseData(newData))
|
|
26
110
|
}
|
|
27
111
|
|
|
28
|
-
|
|
29
|
-
}, [context,
|
|
30
|
-
|
|
112
|
+
setStatus("loaded")
|
|
113
|
+
}, [status, context, fetcher, loader, url, params, parseData, name, cache])
|
|
114
|
+
|
|
115
|
+
const invalidateCache = useCallback((tName, callback = undefined) => {
|
|
116
|
+
if (typeof window !== "undefined") {
|
|
117
|
+
import("idb-keyval").then(({ del }) => {
|
|
118
|
+
del(`ssr-cache-${tName}`)
|
|
119
|
+
.catch(() => {})
|
|
120
|
+
.then(() => {
|
|
121
|
+
if (callback) {
|
|
122
|
+
callback()
|
|
123
|
+
}
|
|
124
|
+
})
|
|
125
|
+
})
|
|
126
|
+
}
|
|
127
|
+
}, [])
|
|
128
|
+
|
|
31
129
|
useEffect(() => {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
130
|
+
let mounted = true
|
|
131
|
+
|
|
132
|
+
const loadData = async () => {
|
|
133
|
+
if (!mounted) return
|
|
134
|
+
|
|
135
|
+
try {
|
|
136
|
+
if (status === "idle") {
|
|
137
|
+
const changed =
|
|
138
|
+
effect === undefined ||
|
|
139
|
+
(typeof effect === "function" && effect() === true) ||
|
|
140
|
+
effect === true
|
|
141
|
+
|
|
142
|
+
if (changed === true) {
|
|
143
|
+
let cached = null
|
|
144
|
+
if (cache === true) {
|
|
145
|
+
if (typeof window !== "undefined") {
|
|
146
|
+
try {
|
|
147
|
+
const { get } = await import("idb-keyval")
|
|
148
|
+
cached = await get(`ssr-cache-${name}`)
|
|
149
|
+
} catch (err) {
|
|
150
|
+
console.error(err)
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
if (cached && cached.data !== undefined) {
|
|
156
|
+
setSsrData(parseData(cached.data))
|
|
157
|
+
|
|
158
|
+
if (ttl !== undefined && Date.now() - cached.ts > ttl * 1000) {
|
|
159
|
+
refreshSsrData()
|
|
160
|
+
} else {
|
|
161
|
+
setStatus("loaded")
|
|
162
|
+
}
|
|
163
|
+
} else {
|
|
164
|
+
refreshSsrData()
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
} catch (_) {}
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
loadData()
|
|
172
|
+
|
|
173
|
+
return () => {
|
|
174
|
+
mounted = false
|
|
175
|
+
}
|
|
176
|
+
}, [status, refreshSsrData, effect, name, ttl, parseData, cache])
|
|
177
|
+
|
|
178
|
+
useEffect(() => {
|
|
179
|
+
if (cache === true) {
|
|
180
|
+
if (ssrDataFromContext !== undefined && typeof window !== "undefined") {
|
|
181
|
+
import("idb-keyval").then(({ set }) => {
|
|
182
|
+
set(`ssr-cache-${name}`, {
|
|
183
|
+
data: makeSerializable(ssrDataFromContext),
|
|
184
|
+
ts: Date.now()
|
|
185
|
+
}).catch(() => {})
|
|
186
|
+
})
|
|
36
187
|
}
|
|
37
|
-
}
|
|
38
|
-
}, [
|
|
188
|
+
}
|
|
189
|
+
}, [ssrDataFromContext, name, cache])
|
|
190
|
+
|
|
191
|
+
useEffect(() => {
|
|
192
|
+
if (socket === undefined) {
|
|
193
|
+
return
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
if (socketInited) {
|
|
197
|
+
return
|
|
198
|
+
}
|
|
199
|
+
setSocketInited(true)
|
|
200
|
+
|
|
201
|
+
socket.on("connect", () => {
|
|
202
|
+
logger.verbose("[ssr] Socket connected")
|
|
203
|
+
})
|
|
204
|
+
|
|
205
|
+
socket.on("ssr-invalidate", (data) => {
|
|
206
|
+
logger.info(`[ssr] ssr-invalidate ${data.name}`)
|
|
207
|
+
invalidateCache(data.name)
|
|
208
|
+
})
|
|
209
|
+
|
|
210
|
+
socket.on("ssr-refresh", (data) => {
|
|
211
|
+
logger.info(`[ssr] ssr-refresh ${data.name}`)
|
|
212
|
+
invalidateCache(data.name, () => {
|
|
213
|
+
refreshSsrData()
|
|
214
|
+
})
|
|
215
|
+
})
|
|
216
|
+
}, [socket, socketInited, logger, invalidateCache, refreshSsrData])
|
|
39
217
|
|
|
40
|
-
return
|
|
218
|
+
return {
|
|
219
|
+
data: ssrData,
|
|
220
|
+
setData: updateSsrData,
|
|
221
|
+
refresh: refreshSsrData,
|
|
222
|
+
invalidate: (callback) => invalidateCache(name, callback),
|
|
223
|
+
error,
|
|
224
|
+
ok: error === undefined,
|
|
225
|
+
ready: status === "loaded"
|
|
226
|
+
}
|
|
41
227
|
}
|
|
42
228
|
|
|
43
|
-
export {useSsrDataOrReload}
|
|
229
|
+
export { useSsrDataOrReload }
|
package/dist/miolo-react.mjs
DELETED
|
@@ -1,265 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* miolo-react v3.0.0-beta.21
|
|
3
|
-
*
|
|
4
|
-
* https://www.afialapis.com/os/miolo
|
|
5
|
-
*
|
|
6
|
-
* Copyright (c) Donato Lorenzo <donato@afialapis.com>
|
|
7
|
-
*
|
|
8
|
-
* This source code is licensed under the MIT license found in the
|
|
9
|
-
* LICENSE.md file in the root directory of this source tree.
|
|
10
|
-
*
|
|
11
|
-
* @license MIT
|
|
12
|
-
*/
|
|
13
|
-
/* eslint-disable */
|
|
14
|
-
import React, { useContext, useCallback, useState, useEffect } from 'react';
|
|
15
|
-
import { miolo_client } from 'miolo-cli';
|
|
16
|
-
|
|
17
|
-
var MioloContext = /*#__PURE__*/React.createContext();
|
|
18
|
-
|
|
19
|
-
/* eslint react/display-name:0 */
|
|
20
|
-
var withMioloContext = BaseComponent => props => {
|
|
21
|
-
var context = useContext(MioloContext);
|
|
22
|
-
return /*#__PURE__*/React.createElement(BaseComponent, Object.assign({}, props, context));
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
var useMioloContext = () => useContext(MioloContext);
|
|
26
|
-
|
|
27
|
-
function asyncGeneratorStep(n, t, e, r, o, a, c) {
|
|
28
|
-
try {
|
|
29
|
-
var i = n[a](c),
|
|
30
|
-
u = i.value;
|
|
31
|
-
} catch (n) {
|
|
32
|
-
return void e(n);
|
|
33
|
-
}
|
|
34
|
-
i.done ? t(u) : Promise.resolve(u).then(r, o);
|
|
35
|
-
}
|
|
36
|
-
function _asyncToGenerator(n) {
|
|
37
|
-
return function () {
|
|
38
|
-
var t = this,
|
|
39
|
-
e = arguments;
|
|
40
|
-
return new Promise(function (r, o) {
|
|
41
|
-
var a = n.apply(t, e);
|
|
42
|
-
function _next(n) {
|
|
43
|
-
asyncGeneratorStep(a, r, o, _next, _throw, "next", n);
|
|
44
|
-
}
|
|
45
|
-
function _throw(n) {
|
|
46
|
-
asyncGeneratorStep(a, r, o, _next, _throw, "throw", n);
|
|
47
|
-
}
|
|
48
|
-
_next(void 0);
|
|
49
|
-
});
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
function _defineProperty(e, r, t) {
|
|
53
|
-
return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
|
|
54
|
-
value: t,
|
|
55
|
-
enumerable: true,
|
|
56
|
-
configurable: true,
|
|
57
|
-
writable: true
|
|
58
|
-
}) : e[r] = t, e;
|
|
59
|
-
}
|
|
60
|
-
function ownKeys(e, r) {
|
|
61
|
-
var t = Object.keys(e);
|
|
62
|
-
if (Object.getOwnPropertySymbols) {
|
|
63
|
-
var o = Object.getOwnPropertySymbols(e);
|
|
64
|
-
r && (o = o.filter(function (r) {
|
|
65
|
-
return Object.getOwnPropertyDescriptor(e, r).enumerable;
|
|
66
|
-
})), t.push.apply(t, o);
|
|
67
|
-
}
|
|
68
|
-
return t;
|
|
69
|
-
}
|
|
70
|
-
function _objectSpread2(e) {
|
|
71
|
-
for (var r = 1; r < arguments.length; r++) {
|
|
72
|
-
var t = null != arguments[r] ? arguments[r] : {};
|
|
73
|
-
r % 2 ? ownKeys(Object(t), true).forEach(function (r) {
|
|
74
|
-
_defineProperty(e, r, t[r]);
|
|
75
|
-
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {
|
|
76
|
-
Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
return e;
|
|
80
|
-
}
|
|
81
|
-
function _toPrimitive(t, r) {
|
|
82
|
-
if ("object" != typeof t || !t) return t;
|
|
83
|
-
var e = t[Symbol.toPrimitive];
|
|
84
|
-
if (void 0 !== e) {
|
|
85
|
-
var i = e.call(t, r);
|
|
86
|
-
if ("object" != typeof i) return i;
|
|
87
|
-
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
88
|
-
}
|
|
89
|
-
return ("string" === r ? String : Number)(t);
|
|
90
|
-
}
|
|
91
|
-
function _toPropertyKey(t) {
|
|
92
|
-
var i = _toPrimitive(t, "string");
|
|
93
|
-
return "symbol" == typeof i ? i : i + "";
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
var _getDataFromWindow = name => {
|
|
97
|
-
try {
|
|
98
|
-
if (window != undefined) {
|
|
99
|
-
var ssr_data = window.__CONTEXT.ssr_data;
|
|
100
|
-
if (ssr_data != undefined) {
|
|
101
|
-
if (ssr_data[name] != undefined) {
|
|
102
|
-
return ssr_data[name];
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
} catch (e) {}
|
|
107
|
-
return undefined;
|
|
108
|
-
};
|
|
109
|
-
var getSsrDataFromContext = (context, name) => {
|
|
110
|
-
var data = undefined;
|
|
111
|
-
if ((context === null || context === void 0 ? void 0 : context.ssr_data) != undefined && (context === null || context === void 0 ? void 0 : context.ssr_data[name]) != undefined) {
|
|
112
|
-
data = context.ssr_data[name];
|
|
113
|
-
} else {
|
|
114
|
-
var wdata = _getDataFromWindow(name);
|
|
115
|
-
if (wdata != undefined) {
|
|
116
|
-
data = wdata;
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
return data;
|
|
120
|
-
};
|
|
121
|
-
|
|
122
|
-
var useSsrDataOrReload = (context, miolo, name, defval, loader, modifier) => {
|
|
123
|
-
var _maybeModify = useCallback(value => {
|
|
124
|
-
return modifier == undefined ? value : modifier(value);
|
|
125
|
-
}, [modifier]);
|
|
126
|
-
var ssrDataFromContext = getSsrDataFromContext(context, name);
|
|
127
|
-
var [ssrData, setSsrData] = useState(_maybeModify(ssrDataFromContext != undefined ? ssrDataFromContext : defval));
|
|
128
|
-
var [needToRefresh, setNeedToRefresh] = useState(ssrDataFromContext == undefined);
|
|
129
|
-
var refreshSsrData = useCallback(() => {
|
|
130
|
-
if (loader == undefined) {
|
|
131
|
-
return;
|
|
132
|
-
}
|
|
133
|
-
var {
|
|
134
|
-
fetcher
|
|
135
|
-
} = miolo;
|
|
136
|
-
function fetchData() {
|
|
137
|
-
return _fetchData.apply(this, arguments);
|
|
138
|
-
}
|
|
139
|
-
function _fetchData() {
|
|
140
|
-
_fetchData = _asyncToGenerator(function* () {
|
|
141
|
-
var nSsrData = yield loader(context, fetcher);
|
|
142
|
-
setSsrData(_maybeModify(nSsrData));
|
|
143
|
-
});
|
|
144
|
-
return _fetchData.apply(this, arguments);
|
|
145
|
-
}
|
|
146
|
-
fetchData();
|
|
147
|
-
}, [context, miolo, loader, _maybeModify]);
|
|
148
|
-
useEffect(() => {
|
|
149
|
-
try {
|
|
150
|
-
if (needToRefresh) {
|
|
151
|
-
setNeedToRefresh(false);
|
|
152
|
-
refreshSsrData();
|
|
153
|
-
}
|
|
154
|
-
} catch (e) {}
|
|
155
|
-
}, [needToRefresh, refreshSsrData]);
|
|
156
|
-
return [ssrData, data => setSsrData(_maybeModify(data)), refreshSsrData];
|
|
157
|
-
};
|
|
158
|
-
|
|
159
|
-
var MioloContextProvider = _ref => {
|
|
160
|
-
var {
|
|
161
|
-
context,
|
|
162
|
-
children
|
|
163
|
-
} = _ref;
|
|
164
|
-
var [innerContext, setInnerContext] = useState(context);
|
|
165
|
-
var [mioloObj, setMioloObj] = useState(miolo_client(context));
|
|
166
|
-
useEffect(() => {
|
|
167
|
-
setInnerContext(context);
|
|
168
|
-
setMioloObj(miolo_client(context));
|
|
169
|
-
}, [context]);
|
|
170
|
-
var login = useCallback(/*#__PURE__*/function () {
|
|
171
|
-
var _ref2 = _asyncToGenerator(function* (credentials) {
|
|
172
|
-
var {
|
|
173
|
-
fetcher
|
|
174
|
-
} = mioloObj;
|
|
175
|
-
var {
|
|
176
|
-
config
|
|
177
|
-
} = innerContext;
|
|
178
|
-
var url = config.login_url || '/login';
|
|
179
|
-
var resp = yield fetcher.login(url, credentials);
|
|
180
|
-
if (resp !== null && resp !== void 0 && resp.data) {
|
|
181
|
-
var _resp$data;
|
|
182
|
-
if (resp !== null && resp !== void 0 && (_resp$data = resp.data) !== null && _resp$data !== void 0 && _resp$data.authenticated) {
|
|
183
|
-
setInnerContext(current => {
|
|
184
|
-
return _objectSpread2(_objectSpread2({}, current), resp === null || resp === void 0 ? void 0 : resp.data);
|
|
185
|
-
});
|
|
186
|
-
}
|
|
187
|
-
return resp === null || resp === void 0 ? void 0 : resp.data;
|
|
188
|
-
}
|
|
189
|
-
return {};
|
|
190
|
-
});
|
|
191
|
-
return function (_x) {
|
|
192
|
-
return _ref2.apply(this, arguments);
|
|
193
|
-
};
|
|
194
|
-
}(), [innerContext, mioloObj]);
|
|
195
|
-
var logout = useCallback(/*#__PURE__*/_asyncToGenerator(function* () {
|
|
196
|
-
var {
|
|
197
|
-
fetcher
|
|
198
|
-
} = mioloObj;
|
|
199
|
-
var {
|
|
200
|
-
config
|
|
201
|
-
} = innerContext;
|
|
202
|
-
var url = config.logout_url || '/logout';
|
|
203
|
-
yield fetcher.logout(url);
|
|
204
|
-
// resp.redirected= true
|
|
205
|
-
|
|
206
|
-
setInnerContext(current => {
|
|
207
|
-
return _objectSpread2(_objectSpread2({}, current), {}, {
|
|
208
|
-
user: undefined,
|
|
209
|
-
authenticated: false
|
|
210
|
-
});
|
|
211
|
-
});
|
|
212
|
-
return {
|
|
213
|
-
user: undefined,
|
|
214
|
-
authenticated: false
|
|
215
|
-
};
|
|
216
|
-
}), [innerContext, mioloObj]);
|
|
217
|
-
var updateUser = useCallback(user => {
|
|
218
|
-
setInnerContext(current => {
|
|
219
|
-
return _objectSpread2(_objectSpread2({}, current), {}, {
|
|
220
|
-
user
|
|
221
|
-
});
|
|
222
|
-
});
|
|
223
|
-
}, []);
|
|
224
|
-
var useSsrData = (name, defval, loader, modifier) => {
|
|
225
|
-
return useSsrDataOrReload(innerContext, mioloObj, name, defval, loader, modifier);
|
|
226
|
-
};
|
|
227
|
-
return /*#__PURE__*/React.createElement(MioloContext.Provider, {
|
|
228
|
-
value: {
|
|
229
|
-
//context: innerContext,
|
|
230
|
-
//setContext: setInnerContext,
|
|
231
|
-
//miolo: mioloObj,
|
|
232
|
-
user: innerContext.user,
|
|
233
|
-
updateUser,
|
|
234
|
-
authenticated: innerContext.authenticated,
|
|
235
|
-
fetcher: mioloObj.fetcher,
|
|
236
|
-
//socket: mioloObj.socket,
|
|
237
|
-
login,
|
|
238
|
-
logout,
|
|
239
|
-
useSsrData
|
|
240
|
-
}
|
|
241
|
-
}, children);
|
|
242
|
-
};
|
|
243
|
-
|
|
244
|
-
var AppBrowser = _ref => {
|
|
245
|
-
var {
|
|
246
|
-
children
|
|
247
|
-
} = _ref;
|
|
248
|
-
var context = typeof window !== 'undefined' && window.__CONTEXT ? window.__CONTEXT : {};
|
|
249
|
-
return /*#__PURE__*/React.createElement(MioloContextProvider, {
|
|
250
|
-
context: context
|
|
251
|
-
}, children);
|
|
252
|
-
};
|
|
253
|
-
|
|
254
|
-
var AppServer = _ref => {
|
|
255
|
-
var {
|
|
256
|
-
context,
|
|
257
|
-
children
|
|
258
|
-
} = _ref;
|
|
259
|
-
return /*#__PURE__*/React.createElement(MioloContextProvider, {
|
|
260
|
-
context: context || {}
|
|
261
|
-
}, children);
|
|
262
|
-
};
|
|
263
|
-
|
|
264
|
-
export { AppBrowser, AppServer, useMioloContext, withMioloContext };
|
|
265
|
-
//# sourceMappingURL=miolo-react.mjs.map
|
package/dist/miolo-react.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"miolo-react.mjs","sources":["../src/context/MioloContext.mjs","../src/context/withMioloContext.jsx","../src/context/useMioloContext.jsx","../src/ssr/getSsrDataFromContext.mjs","../src/ssr/useSsrDataOrReload.mjs","../src/context/MioloContextProvider.jsx","../src/AppBrowser.jsx","../src/AppServer.jsx"],"sourcesContent":["import React from 'react'\n\nconst MioloContext = React.createContext()\n\nexport default MioloContext","import React, {useContext} from 'react'\nimport MioloContext from './MioloContext.mjs'\n\n/* eslint react/display-name:0 */\nconst withMioloContext = (BaseComponent) => (props) => {\n const context = useContext(MioloContext)\n\n return (\n <BaseComponent {...props}\n {...context}/>\n );\n}\n\n\nexport default withMioloContext","import {useContext} from 'react'\nimport MioloContext from './MioloContext.mjs'\n\nconst useMioloContext = () => useContext(MioloContext)\n\nexport default useMioloContext\n","\nconst _getDataFromWindow = (name) => {\n try {\n if (window != undefined) {\n const ssr_data= window.__CONTEXT.ssr_data\n \n if (ssr_data!=undefined) {\n if (ssr_data[name]!=undefined) {\n return ssr_data[name]\n }\n }\n }\n } catch(e) {}\n \n return undefined\n}\n\nconst getSsrDataFromContext = (context, name) => {\n let data= undefined\n\n if (context?.ssr_data != undefined && context?.ssr_data[name]!=undefined) {\n data= context.ssr_data[name]\n } else {\n const wdata= _getDataFromWindow(name)\n if (wdata != undefined) {\n data= wdata\n }\n }\n \n return data\n}\n\nexport default getSsrDataFromContext\n","import {useState, useCallback, useEffect} from 'react'\nimport getSsrDataFromContext from './getSsrDataFromContext.mjs'\n\nconst useSsrDataOrReload = (context, miolo, name, defval, loader, modifier) => {\n \n const _maybeModify = useCallback((value) => {\n return modifier==undefined ? value : modifier(value)\n }, [modifier])\n\n const ssrDataFromContext = getSsrDataFromContext(context, name)\n const [ssrData, setSsrData] = useState(_maybeModify(\n ssrDataFromContext != undefined \n ? ssrDataFromContext : defval))\n const [needToRefresh, setNeedToRefresh] = useState(ssrDataFromContext == undefined)\n\n const refreshSsrData = useCallback(() => {\n if (loader == undefined) {\n return\n }\n\n const {fetcher} = miolo\n\n async function fetchData() {\n let nSsrData = await loader(context, fetcher)\n setSsrData(_maybeModify(nSsrData))\n }\n\n fetchData()\n }, [context, miolo, loader, _maybeModify]) \n \n useEffect(() => {\n try {\n if (needToRefresh) {\n setNeedToRefresh(false)\n refreshSsrData()\n }\n } catch(e) {}\n }, [needToRefresh, refreshSsrData]) \n\n return [ssrData, (data) => setSsrData(_maybeModify(data)), refreshSsrData]\n}\n\nexport {useSsrDataOrReload}","import React , {useState, useEffect, useCallback} from 'react'\nimport Context from './MioloContext.mjs'\nimport { miolo_client } from 'miolo-cli'\nimport { useSsrDataOrReload } from '../ssr/useSsrDataOrReload.mjs'\n\n\nconst MioloContextProvider = ({context, children}) => {\n const [innerContext, setInnerContext]= useState(context)\n const [mioloObj, setMioloObj]= useState(miolo_client(context))\n \n useEffect(() => {\n setInnerContext(context)\n setMioloObj(miolo_client(context))\n }, [context])\n \n const login = useCallback(async (credentials) => {\n const { fetcher } = mioloObj\n const { config } = innerContext\n\n const url = config.login_url || '/login'\n const resp = await fetcher.login(url, credentials)\n\n if (resp?.data) {\n if (resp?.data?.authenticated) {\n setInnerContext(current => {\n return {\n ...current,\n ...resp?.data,\n }\n })\n }\n\n return resp?.data\n }\n\n return {}\n }, [innerContext, mioloObj])\n\n const logout = useCallback(async () => {\n const { fetcher } = mioloObj\n const { config } = innerContext\n\n const url = config.logout_url || '/logout'\n const _resp = await fetcher.logout(url)\n // resp.redirected= true\n\n setInnerContext(current => {\n return {\n ...current,\n user: undefined,\n authenticated: false,\n }\n })\n\n return {\n user: undefined,\n authenticated: false,\n }\n }, [innerContext, mioloObj])\n\n const updateUser = useCallback((user) => {\n setInnerContext((current) => {\n return {\n ...current,\n user,\n }\n })\n }, [])\n\n const useSsrData = (name, defval, loader, modifier) => {\n return useSsrDataOrReload(innerContext, mioloObj, name, defval, loader, modifier)\n } \n \n return (\n <Context.Provider \n value={{\n //context: innerContext, \n //setContext: setInnerContext,\n //miolo: mioloObj,\n user: innerContext.user,\n updateUser,\n authenticated: innerContext.authenticated,\n fetcher: mioloObj.fetcher,\n //socket: mioloObj.socket,\n login,\n logout,\n useSsrData\n }}>\n {children}\n </Context.Provider>\n )\n}\n\n\nexport default MioloContextProvider\n","import React from 'react'\nimport MioloContextProvider from './context/MioloContextProvider.jsx'\n\nconst AppBrowser = ({ children }) => {\n const context = typeof window !== 'undefined' && window.__CONTEXT ? window.__CONTEXT : {};\n\n return (\n <MioloContextProvider context={context}>\n {children}\n </MioloContextProvider>\n ) \n}\n\nexport default AppBrowser\n","\nimport React from 'react'\nimport MioloContextProvider from './context/MioloContextProvider.jsx'\n\n\nconst AppServer = ({context, children}) => {\n\n return (\n <MioloContextProvider \n context= {context || {}}>\n {children}\n </MioloContextProvider>\n )\n}\n\nexport default AppServer\n\n"],"names":["MioloContext","React","createContext","withMioloContext","BaseComponent","props","context","useContext","createElement","Object","assign","useMioloContext","_getDataFromWindow","name","window","undefined","ssr_data","__CONTEXT","e","getSsrDataFromContext","data","wdata","useSsrDataOrReload","miolo","defval","loader","modifier","_maybeModify","useCallback","value","ssrDataFromContext","ssrData","setSsrData","useState","needToRefresh","setNeedToRefresh","refreshSsrData","fetcher","fetchData","_fetchData","apply","arguments","_asyncToGenerator","nSsrData","useEffect","MioloContextProvider","_ref","children","innerContext","setInnerContext","mioloObj","setMioloObj","miolo_client","login","_ref2","credentials","config","url","login_url","resp","_resp$data","authenticated","current","_objectSpread","_x","logout","logout_url","user","updateUser","useSsrData","Context","Provider","AppBrowser","AppServer"],"mappings":"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"}
|