tinybase 4.2.0-beta.0 → 4.2.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.
- package/lib/cjs/persisters/persister-indexed-db.cjs +1 -0
- package/lib/cjs/persisters/persister-indexed-db.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-remote.cjs +1 -1
- package/lib/cjs/persisters/persister-remote.cjs.gz +0 -0
- package/lib/cjs/persisters/persister-yjs.cjs +1 -1
- package/lib/cjs/persisters/persister-yjs.cjs.gz +0 -0
- package/lib/cjs/tools.cjs +1 -1
- package/lib/cjs/tools.cjs.gz +0 -0
- package/lib/cjs/ui-react-dom-debug.cjs +1 -1
- package/lib/cjs/ui-react-dom-debug.cjs.gz +0 -0
- package/lib/cjs/ui-react-dom.cjs +1 -1
- package/lib/cjs/ui-react-dom.cjs.gz +0 -0
- package/lib/cjs/ui-react.cjs +1 -1
- package/lib/cjs/ui-react.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-indexed-db.cjs +1 -0
- package/lib/cjs-es6/persisters/persister-indexed-db.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-remote.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-remote.cjs.gz +0 -0
- package/lib/cjs-es6/persisters/persister-yjs.cjs +1 -1
- package/lib/cjs-es6/persisters/persister-yjs.cjs.gz +0 -0
- package/lib/cjs-es6/tools.cjs +1 -1
- package/lib/cjs-es6/tools.cjs.gz +0 -0
- package/lib/cjs-es6/ui-react-dom-debug.cjs +1 -1
- package/lib/cjs-es6/ui-react-dom-debug.cjs.gz +0 -0
- package/lib/cjs-es6/ui-react-dom.cjs +1 -1
- package/lib/cjs-es6/ui-react-dom.cjs.gz +0 -0
- package/lib/cjs-es6/ui-react.cjs +1 -1
- package/lib/cjs-es6/ui-react.cjs.gz +0 -0
- package/lib/debug/persisters/persister-browser.js +13 -8
- package/lib/debug/persisters/persister-indexed-db.js +272 -0
- package/lib/debug/persisters/persister-remote.js +1 -1
- package/lib/debug/persisters/persister-yjs.js +10 -16
- package/lib/debug/tools.js +21 -5
- package/lib/debug/ui-react-dom.js +187 -126
- package/lib/debug/ui-react.js +4 -3
- package/lib/es6/persisters/persister-indexed-db.js +1 -0
- package/lib/es6/persisters/persister-indexed-db.js.gz +0 -0
- package/lib/es6/persisters/persister-remote.js +1 -1
- package/lib/es6/persisters/persister-remote.js.gz +0 -0
- package/lib/es6/persisters/persister-yjs.js +1 -1
- package/lib/es6/persisters/persister-yjs.js.gz +0 -0
- package/lib/es6/tools.js +1 -1
- package/lib/es6/tools.js.gz +0 -0
- package/lib/es6/ui-react-dom-debug.js +1 -1
- package/lib/es6/ui-react-dom-debug.js.gz +0 -0
- package/lib/es6/ui-react-dom.js +1 -1
- package/lib/es6/ui-react-dom.js.gz +0 -0
- package/lib/es6/ui-react.js +1 -1
- package/lib/es6/ui-react.js.gz +0 -0
- package/lib/persisters/persister-indexed-db.js +1 -0
- package/lib/persisters/persister-indexed-db.js.gz +0 -0
- package/lib/persisters/persister-remote.js +1 -1
- package/lib/persisters/persister-remote.js.gz +0 -0
- package/lib/persisters/persister-yjs.js +1 -1
- package/lib/persisters/persister-yjs.js.gz +0 -0
- package/lib/tools.js +1 -1
- package/lib/tools.js.gz +0 -0
- package/lib/types/persisters/persister-indexed-db.d.ts +75 -0
- package/lib/types/persisters/persister-remote.d.ts +2 -2
- package/lib/types/persisters.d.ts +1 -0
- package/lib/types/with-schemas/persisters/persister-indexed-db.d.ts +86 -0
- package/lib/types/with-schemas/persisters/persister-remote.d.ts +3 -3
- package/lib/types/with-schemas/persisters.d.ts +1 -0
- package/lib/ui-react-dom.js +1 -1
- package/lib/ui-react-dom.js.gz +0 -0
- package/lib/ui-react.js +1 -1
- package/lib/ui-react.js.gz +0 -0
- package/lib/umd/persisters/persister-indexed-db.js +1 -0
- package/lib/umd/persisters/persister-indexed-db.js.gz +0 -0
- package/lib/umd/persisters/persister-remote.js +1 -1
- package/lib/umd/persisters/persister-remote.js.gz +0 -0
- package/lib/umd/persisters/persister-yjs.js +1 -1
- package/lib/umd/persisters/persister-yjs.js.gz +0 -0
- package/lib/umd/tools.js +1 -1
- package/lib/umd/tools.js.gz +0 -0
- package/lib/umd/ui-react-dom-debug.js +1 -1
- package/lib/umd/ui-react-dom-debug.js.gz +0 -0
- package/lib/umd/ui-react-dom.js +1 -1
- package/lib/umd/ui-react-dom.js.gz +0 -0
- package/lib/umd/ui-react.js +1 -1
- package/lib/umd/ui-react.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-indexed-db.js +1 -0
- package/lib/umd-es6/persisters/persister-indexed-db.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-remote.js +1 -1
- package/lib/umd-es6/persisters/persister-remote.js.gz +0 -0
- package/lib/umd-es6/persisters/persister-yjs.js +1 -1
- package/lib/umd-es6/persisters/persister-yjs.js.gz +0 -0
- package/lib/umd-es6/tools.js +1 -1
- package/lib/umd-es6/tools.js.gz +0 -0
- package/lib/umd-es6/ui-react-dom-debug.js +1 -1
- package/lib/umd-es6/ui-react-dom-debug.js.gz +0 -0
- package/lib/umd-es6/ui-react-dom.js +1 -1
- package/lib/umd-es6/ui-react-dom.js.gz +0 -0
- package/lib/umd-es6/ui-react.js +1 -1
- package/lib/umd-es6/ui-react.js.gz +0 -0
- package/package.json +29 -27
- package/readme.md +13 -13
|
@@ -82,8 +82,9 @@ const isArray = (thing) => Array.isArray(thing);
|
|
|
82
82
|
const test = (regex, subject) => regex.test(subject);
|
|
83
83
|
|
|
84
84
|
const {
|
|
85
|
-
|
|
85
|
+
PureComponent,
|
|
86
86
|
Fragment,
|
|
87
|
+
createElement,
|
|
87
88
|
useCallback: useCallback$1,
|
|
88
89
|
useLayoutEffect,
|
|
89
90
|
useRef,
|
|
@@ -194,84 +195,89 @@ const EDIT_SVG = PRE + `<path d='${PENCIL}' />` + POST;
|
|
|
194
195
|
const DONE_SVG = PRE + `<path d='${PENCIL}M20 20l60 60' />` + POST;
|
|
195
196
|
|
|
196
197
|
const SCROLLBAR = '*::-webkit-scrollbar';
|
|
197
|
-
const APP_STYLESHEET =
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
// Panel
|
|
219
|
-
main: 'display:flex;flex-direction:column;background:#111d;color:#fff;position:fixed;',
|
|
220
|
-
...objNew(
|
|
221
|
-
arrayMap(
|
|
222
|
-
[
|
|
223
|
-
'bottom:0;left:0;width:35vw;height:100vh',
|
|
224
|
-
'top:0;right:0;width:100vw;height:30vh',
|
|
225
|
-
'bottom:0;left:0;width:100vw;height:30vh',
|
|
226
|
-
'top:0;right:0;width:35vw;height:100vh',
|
|
227
|
-
'top:0;right:0;width:100vw;height:100vh',
|
|
228
|
-
],
|
|
229
|
-
(css, p) => [`main[data-position='${p}']`, css],
|
|
198
|
+
const APP_STYLESHEET = `#${UNIQUE_ID}{
|
|
199
|
+
all:initial;font-family:sans-serif;font-size:0.75rem;position:fixed;z-index:999999;
|
|
200
|
+
${arrayJoin(
|
|
201
|
+
objMap(
|
|
202
|
+
{
|
|
203
|
+
'*': 'all:revert',
|
|
204
|
+
'*::before': 'all:revert',
|
|
205
|
+
'*::after': 'all:revert',
|
|
206
|
+
[SCROLLBAR]: 'width:0.5rem;height:0.5rem;',
|
|
207
|
+
[SCROLLBAR + '-track']: 'background:#111',
|
|
208
|
+
[SCROLLBAR + '-thumb']: 'background:#999;border:1px solid #111',
|
|
209
|
+
[SCROLLBAR + '-thumb:hover']: 'background:#fff',
|
|
210
|
+
[SCROLLBAR + '-corner']: 'background:#111',
|
|
211
|
+
img: 'width:1rem;height:1rem;background:#111;border:0;vertical-align:text-bottom',
|
|
212
|
+
// Nub
|
|
213
|
+
'>img': 'padding:0.25rem;bottom:0;right:0;position:fixed;' + LOGO_SVG,
|
|
214
|
+
...objNew(
|
|
215
|
+
arrayMap(['bottom:0;left:0', 'top:0;right:0'], (css, p) => [
|
|
216
|
+
`>img[data-position='${p}']`,
|
|
217
|
+
css,
|
|
218
|
+
]),
|
|
230
219
|
),
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
'
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
'
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
220
|
+
// Panel
|
|
221
|
+
main: 'display:flex;flex-direction:column;background:#111d;color:#fff;position:fixed;',
|
|
222
|
+
...objNew(
|
|
223
|
+
arrayMap(
|
|
224
|
+
[
|
|
225
|
+
'bottom:0;left:0;width:35vw;height:100vh',
|
|
226
|
+
'top:0;right:0;width:100vw;height:30vh',
|
|
227
|
+
'bottom:0;left:0;width:100vw;height:30vh',
|
|
228
|
+
'top:0;right:0;width:35vw;height:100vh',
|
|
229
|
+
'top:0;right:0;width:100vw;height:100vh',
|
|
230
|
+
],
|
|
231
|
+
(css, p) => [`main[data-position='${p}']`, css],
|
|
232
|
+
),
|
|
233
|
+
),
|
|
234
|
+
// Header
|
|
235
|
+
header:
|
|
236
|
+
'display:flex;padding:0.25rem;background:#000;align-items:center',
|
|
237
|
+
'header>img:nth-of-type(1)': LOGO_SVG,
|
|
238
|
+
'header>img:nth-of-type(6)': CLOSE_SVG,
|
|
239
|
+
...objNew(
|
|
240
|
+
arrayMap(POSITIONS_SVG, (SVG, p) => [
|
|
241
|
+
`header>img[data-id='${p}']`,
|
|
242
|
+
SVG,
|
|
243
|
+
]),
|
|
244
|
+
),
|
|
245
|
+
'header>span':
|
|
246
|
+
'flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin-left:0.25rem',
|
|
247
|
+
// Body
|
|
248
|
+
article: 'padding:0.25rem 0.25rem 0.25rem 0.5rem;overflow:auto;flex:1',
|
|
249
|
+
details: 'margin-left:0.75rem;width:fit-content;',
|
|
250
|
+
'details img': 'display:none',
|
|
251
|
+
'details[open]>summary img':
|
|
252
|
+
'display:unset;background:none;margin-left:0.25rem',
|
|
253
|
+
'details[open]>summary img.edit': EDIT_SVG,
|
|
254
|
+
'details[open]>summary img.done': DONE_SVG,
|
|
255
|
+
summary:
|
|
256
|
+
'margin-left:-0.75rem;line-height:1.25rem;user-select:none;width:fit-content',
|
|
257
|
+
// tables
|
|
258
|
+
table:
|
|
259
|
+
'border-collapse:collapse;table-layout:fixed;margin-bottom:0.5rem',
|
|
260
|
+
'table input':
|
|
261
|
+
'background:#111;color:unset;padding:0 0.25rem;border:0;font-size:unset;vertical-align:top;margin:0',
|
|
262
|
+
'table input[type="number"]': 'width:4rem',
|
|
263
|
+
'table tbody button':
|
|
264
|
+
'font-size:0;background:#fff;border-radius:50%;margin:0 0.125rem 0 0;width:0.85rem;color:#111',
|
|
265
|
+
'table button:first-letter': 'font-size:0.75rem',
|
|
266
|
+
thead: 'background:#222',
|
|
267
|
+
'th:nth-of-type(1)': 'min-width:2rem;',
|
|
268
|
+
'th.sorted': 'background:#000',
|
|
269
|
+
'table caption':
|
|
270
|
+
'text-align:left;white-space:nowrap;line-height:1.25rem',
|
|
271
|
+
button: 'width:1.5rem;border:none;background:none;color:#fff;padding:0',
|
|
272
|
+
'button[disabled]': 'color:#777',
|
|
273
|
+
'button.next': 'margin-right:0.5rem',
|
|
274
|
+
[`th,td`]:
|
|
275
|
+
'overflow:hidden;text-overflow:ellipsis;padding:0.25rem 0.5rem;max-width:12rem;white-space:nowrap;border-width:1px 0;border-style:solid;border-color:#777;text-align:left',
|
|
276
|
+
'span.warn': 'margin:0.25rem;color:#d81b60',
|
|
277
|
+
},
|
|
278
|
+
(style, selector) => (style ? `& ${selector}{${style}}` : ''),
|
|
279
|
+
),
|
|
280
|
+
)}`;
|
|
275
281
|
|
|
276
282
|
const Nub = ({s}) => {
|
|
277
283
|
const position = useValue(POSITION_VALUE, s) ?? 1;
|
|
@@ -1335,48 +1341,94 @@ const Body = ({s}) => {
|
|
|
1335
1341
|
},
|
|
1336
1342
|
[s],
|
|
1337
1343
|
);
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
)
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
s,
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1344
|
+
const store = useStore();
|
|
1345
|
+
const storeIds = useStoreIds();
|
|
1346
|
+
const metrics = useMetrics();
|
|
1347
|
+
const metricsIds = useMetricsIds();
|
|
1348
|
+
const indexes = useIndexes();
|
|
1349
|
+
const indexesIds = useIndexesIds();
|
|
1350
|
+
const relationships = useRelationships();
|
|
1351
|
+
const relationshipsIds = useRelationshipsIds();
|
|
1352
|
+
const queries = useQueries();
|
|
1353
|
+
const queriesIds = useQueriesIds();
|
|
1354
|
+
return isUndefined(store) &&
|
|
1355
|
+
arrayIsEmpty(storeIds) &&
|
|
1356
|
+
isUndefined(metrics) &&
|
|
1357
|
+
arrayIsEmpty(metricsIds) &&
|
|
1358
|
+
isUndefined(indexes) &&
|
|
1359
|
+
arrayIsEmpty(indexesIds) &&
|
|
1360
|
+
isUndefined(relationships) &&
|
|
1361
|
+
arrayIsEmpty(relationshipsIds) &&
|
|
1362
|
+
isUndefined(queries) &&
|
|
1363
|
+
arrayIsEmpty(queriesIds)
|
|
1364
|
+
? /* @__PURE__ */ createElement(
|
|
1365
|
+
'span',
|
|
1366
|
+
{className: 'warn'},
|
|
1367
|
+
'There are no Stores or other objects to inspect. Make sure you placed the StoreInspector inside a Provider component.',
|
|
1368
|
+
)
|
|
1369
|
+
: /* @__PURE__ */ createElement(
|
|
1370
|
+
'article',
|
|
1371
|
+
{ref: articleRef, onScroll: handleScroll},
|
|
1372
|
+
/* @__PURE__ */ createElement(StoreView, {s}),
|
|
1373
|
+
arrayMap(storeIds, (storeId) =>
|
|
1374
|
+
/* @__PURE__ */ createElement(StoreView, {storeId, key: storeId, s}),
|
|
1375
|
+
),
|
|
1376
|
+
/* @__PURE__ */ createElement(MetricsView, {s}),
|
|
1377
|
+
arrayMap(metricsIds, (metricsId) =>
|
|
1378
|
+
/* @__PURE__ */ createElement(MetricsView, {
|
|
1379
|
+
metricsId,
|
|
1380
|
+
key: metricsId,
|
|
1381
|
+
s,
|
|
1382
|
+
}),
|
|
1383
|
+
),
|
|
1384
|
+
/* @__PURE__ */ createElement(IndexesView, {s}),
|
|
1385
|
+
arrayMap(indexesIds, (indexesId) =>
|
|
1386
|
+
/* @__PURE__ */ createElement(IndexesView, {
|
|
1387
|
+
indexesId,
|
|
1388
|
+
key: indexesId,
|
|
1389
|
+
s,
|
|
1390
|
+
}),
|
|
1391
|
+
),
|
|
1392
|
+
/* @__PURE__ */ createElement(RelationshipsView, {s}),
|
|
1393
|
+
arrayMap(relationshipsIds, (relationshipsId) =>
|
|
1394
|
+
/* @__PURE__ */ createElement(RelationshipsView, {
|
|
1395
|
+
relationshipsId,
|
|
1396
|
+
key: relationshipsId,
|
|
1397
|
+
s,
|
|
1398
|
+
}),
|
|
1399
|
+
),
|
|
1400
|
+
/* @__PURE__ */ createElement(QueriesView, {s}),
|
|
1401
|
+
arrayMap(queriesIds, (queriesId) =>
|
|
1402
|
+
/* @__PURE__ */ createElement(QueriesView, {
|
|
1403
|
+
queriesId,
|
|
1404
|
+
key: queriesId,
|
|
1405
|
+
s,
|
|
1406
|
+
}),
|
|
1407
|
+
),
|
|
1408
|
+
);
|
|
1378
1409
|
};
|
|
1379
1410
|
|
|
1411
|
+
class ErrorBoundary extends PureComponent {
|
|
1412
|
+
constructor(props) {
|
|
1413
|
+
super(props);
|
|
1414
|
+
this.state = {e: 0};
|
|
1415
|
+
}
|
|
1416
|
+
static getDerivedStateFromError = () => ({e: 1});
|
|
1417
|
+
// eslint-disable-next-line react/no-arrow-function-lifecycle
|
|
1418
|
+
componentDidCatch = (error, info) =>
|
|
1419
|
+
// eslint-disable-next-line no-console
|
|
1420
|
+
console.error(error, info.componentStack);
|
|
1421
|
+
render() {
|
|
1422
|
+
return this.state.e
|
|
1423
|
+
? /* @__PURE__ */ createElement(
|
|
1424
|
+
'span',
|
|
1425
|
+
{className: 'warn'},
|
|
1426
|
+
'Inspector error: please see console for details.',
|
|
1427
|
+
)
|
|
1428
|
+
: this.props.children;
|
|
1429
|
+
}
|
|
1430
|
+
}
|
|
1431
|
+
|
|
1380
1432
|
const Header = ({s}) => {
|
|
1381
1433
|
const position = useValue(POSITION_VALUE, s) ?? 1;
|
|
1382
1434
|
const handleClose = useSetValueCallback(OPEN_VALUE, () => false, [], s);
|
|
@@ -1415,7 +1467,11 @@ const Panel = ({s}) => {
|
|
|
1415
1467
|
'main',
|
|
1416
1468
|
{'data-position': position},
|
|
1417
1469
|
/* @__PURE__ */ createElement(Header, {s}),
|
|
1418
|
-
/* @__PURE__ */ createElement(
|
|
1470
|
+
/* @__PURE__ */ createElement(
|
|
1471
|
+
ErrorBoundary,
|
|
1472
|
+
null,
|
|
1473
|
+
/* @__PURE__ */ createElement(Body, {s}),
|
|
1474
|
+
),
|
|
1419
1475
|
)
|
|
1420
1476
|
: null;
|
|
1421
1477
|
};
|
|
@@ -1643,21 +1699,26 @@ const createCustomPersister = (
|
|
|
1643
1699
|
|
|
1644
1700
|
const STORAGE = 'storage';
|
|
1645
1701
|
const WINDOW = globalThis.window;
|
|
1646
|
-
const
|
|
1702
|
+
const createStoragePersister = (
|
|
1703
|
+
store,
|
|
1704
|
+
storageName,
|
|
1705
|
+
storage,
|
|
1706
|
+
onIgnoredError,
|
|
1707
|
+
) => {
|
|
1647
1708
|
const getPersisted = async () => jsonParse(storage.getItem(storageName));
|
|
1648
1709
|
const setPersisted = async (getContent) =>
|
|
1649
1710
|
storage.setItem(storageName, jsonString(getContent()));
|
|
1650
1711
|
const addPersisterListener = (listener) => {
|
|
1651
|
-
const
|
|
1712
|
+
const storageListener = (event) => {
|
|
1652
1713
|
if (event.storageArea === storage && event.key === storageName) {
|
|
1653
1714
|
listener(() => jsonParse(event.newValue));
|
|
1654
1715
|
}
|
|
1655
1716
|
};
|
|
1656
|
-
WINDOW.addEventListener(STORAGE,
|
|
1657
|
-
return
|
|
1717
|
+
WINDOW.addEventListener(STORAGE, storageListener);
|
|
1718
|
+
return storageListener;
|
|
1658
1719
|
};
|
|
1659
|
-
const delPersisterListener = (
|
|
1660
|
-
WINDOW.removeEventListener(STORAGE,
|
|
1720
|
+
const delPersisterListener = (storageListener) =>
|
|
1721
|
+
WINDOW.removeEventListener(STORAGE, storageListener);
|
|
1661
1722
|
return createCustomPersister(
|
|
1662
1723
|
store,
|
|
1663
1724
|
getPersisted,
|
|
@@ -1668,7 +1729,7 @@ const getStoragePersister = (store, storageName, storage, onIgnoredError) => {
|
|
|
1668
1729
|
);
|
|
1669
1730
|
};
|
|
1670
1731
|
const createSessionPersister = (store, storageName, onIgnoredError) =>
|
|
1671
|
-
|
|
1732
|
+
createStoragePersister(store, storageName, sessionStorage, onIgnoredError);
|
|
1672
1733
|
|
|
1673
1734
|
const setNew = (entryOrEntries) =>
|
|
1674
1735
|
new Set(
|
package/lib/debug/ui-react.js
CHANGED
|
@@ -43,7 +43,7 @@ const useThing = (id, offset) => {
|
|
|
43
43
|
return isUndefined(id)
|
|
44
44
|
? contextValue[offset]
|
|
45
45
|
: isString(id)
|
|
46
|
-
? objGet(contextValue[offset + 1], id)
|
|
46
|
+
? objGet(contextValue[offset + 1] ?? {}, id)
|
|
47
47
|
: id;
|
|
48
48
|
};
|
|
49
49
|
const useThingOrThingById = (thingOrThingId, offset) => {
|
|
@@ -52,7 +52,7 @@ const useThingOrThingById = (thingOrThingId, offset) => {
|
|
|
52
52
|
? thing
|
|
53
53
|
: thingOrThingId;
|
|
54
54
|
};
|
|
55
|
-
const useThingIds = (offset) => objIds(useContext(Context)[offset]);
|
|
55
|
+
const useThingIds = (offset) => objIds(useContext(Context)[offset] ?? {});
|
|
56
56
|
const useStore = (id) => useThing(id, 0);
|
|
57
57
|
const useStoreOrStoreById = (storeOrStoreId) =>
|
|
58
58
|
useThingOrThingById(storeOrStoreId, 0);
|
|
@@ -1077,8 +1077,9 @@ const useCreatePersister = (
|
|
|
1077
1077
|
};
|
|
1078
1078
|
|
|
1079
1079
|
const {
|
|
1080
|
-
|
|
1080
|
+
PureComponent,
|
|
1081
1081
|
Fragment,
|
|
1082
|
+
createElement,
|
|
1082
1083
|
useCallback,
|
|
1083
1084
|
useLayoutEffect,
|
|
1084
1085
|
useRef,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=(e,t)=>e.map(t),t=(e,...t)=>e.push(...t),n=Promise,o=setInterval,l=clearInterval,r=e=>null==e,u=(e,t,n)=>r(e)?null==n?void 0:n():t(e),i=e=>new n(e),d=e=>{return t=function*(){return n.all(e)},new Promise(((e,n)=>{var o=e=>{try{r(t.next(e))}catch(e){n(e)}},l=e=>{try{r(t.throw(e))}catch(e){n(e)}},r=t=>t.done?e(t.value):Promise.resolve(t.value).then(o,l);r((t=t.apply(void 0,null)).next())}));var t},c=Object,s=c.keys,a=c.freeze,v=e=>(e=>e instanceof c&&e.constructor==c)(e)&&0==(e=>s(e).length)(e),y=e=>new Map(e),f=(e,t)=>null==e?void 0:e.get(t),h=(e,t,n)=>{return r(n)?(l=t,null==(o=e)||o.delete(l),e):null==e?void 0:e.set(t,n);var o,l},p=(e,t,n)=>{var o,l,r;return l=t,null!=(r=null==(o=e)?void 0:o.has(l))&&r||h(e,t,n()),f(e,t)};var w=(e,t,n)=>new Promise(((o,l)=>{var r=e=>{try{i(n.next(e))}catch(e){l(e)}},u=e=>{try{i(n.throw(e))}catch(e){l(e)}},i=e=>e.done?o(e.value):Promise.resolve(e.value).then(r,u);i((n=n.apply(e,t)).next())}));const g=y(),A=y();var m=(e,t,n)=>new Promise(((o,l)=>{var r=e=>{try{i(n.next(e))}catch(e){l(e)}},u=e=>{try{i(n.throw(e))}catch(e){l(e)}},i=e=>e.done?o(e.value):Promise.resolve(e.value).then(r,u);i((n=n.apply(e,t)).next())}));const x=globalThis.window,S=["t","v"],P={keyPath:"k"},L=(n,o)=>m(void 0,null,(function*(){const l=((t,o)=>e(c.entries(t),(([e,t])=>b(n,"put",{k:e,v:t}))))(o);e(yield b(n,"getAllKeys"),(e=>((e,t)=>!r(((e,t)=>u(e,(e=>e[t])))(e,t)))(o,e)?0:t(l,b(n,"delete",e)))),yield d(l)})),b=(e,t,n)=>m(void 0,null,(function*(){return i(((o,l)=>{const r=e[t](n);r.onsuccess=()=>o(r.result),r.onerror=()=>l(`objectStore.${t} error`)}))})),k=(n,s,y=1,k)=>{const C=(t,...n)=>m(void 0,[t,...n],(function*(t,n=[],o=0){return i(((l,r)=>{const u=x.indexedDB.open(s,1);u.onupgradeneeded=()=>o&&e(S,(e=>u.result.createObjectStore(e,P))),u.onsuccess=()=>m(void 0,null,(function*(){try{const o=u.result.transaction(S,"readwrite"),r=yield d(e(S,((e,l)=>m(void 0,null,(function*(){return yield t(o.objectStore(e),n[l])})))));u.result.close(),l(r)}catch(e){r(e)}})),u.onerror=()=>r("indexedDB.open error")}))}));return((e,n,o,l,i,d,c=[])=>{let s,y,m,x=0,S=0;p(g,c,(()=>0)),p(A,c,(()=>[]));const P=e=>w(void 0,null,(function*(){return 2!=x&&(x=1,yield L.schedule((()=>w(void 0,null,(function*(){yield e(),x=0}))))),L})),L={load:(t,o)=>w(void 0,null,(function*(){return yield P((()=>w(void 0,null,(function*(){try{e.setContent(yield n())}catch(n){e.setContent([t,o])}}))))})),startAutoLoad:(...t)=>w(void 0,[...t],(function*(t={},o={}){return L.stopAutoLoad(),yield L.load(t,o),S=1,m=l(((t,o)=>w(void 0,null,(function*(){if(o){const t=o();yield P((()=>w(void 0,null,(function*(){return e.setTransactionChanges(t)}))))}else yield P((()=>w(void 0,null,(function*(){var o;try{e.setContent(null!=(o=null==t?void 0:t())?o:yield n())}catch(e){null==d||d(e)}}))))})))),L})),stopAutoLoad:()=>(S&&(i(m),m=void 0,S=0),L),save:t=>w(void 0,null,(function*(){return 1!=x&&(x=2,yield L.schedule((()=>w(void 0,null,(function*(){try{yield o(e.getContent,t)}catch(e){null==d||d(e)}x=0}))))),L})),startAutoSave:()=>w(void 0,null,(function*(){return yield L.stopAutoSave().save(),s=e.addDidFinishTransactionListener(((e,t)=>{const[n,o]=t();v(n)&&v(o)||L.save((()=>[n,o]))})),L})),stopAutoSave:()=>(u(s,e.delListener),L),schedule:(...e)=>w(void 0,null,(function*(){return t(f(A,c),...e),yield w(void 0,null,(function*(){if(!f(g,c)){for(h(g,c,1);!r((e=f(A,c),y=e.shift()));)try{yield y()}catch(e){null==d||d(e)}h(g,c,0)}var e})),L})),getStore:()=>e,destroy:()=>L.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return a(L)})(n,(()=>m(void 0,null,(function*(){return yield C((t=>m(void 0,null,(function*(){return((e=[])=>c.fromEntries(e))(e(yield b(t,"getAll"),(({k:e,v:t})=>[e,t])))}))))}))),(e=>m(void 0,null,(function*(){return yield C(((e,t)=>m(void 0,null,(function*(){return yield L(e,t)}))),e(),1)}))),(e=>o(e,1e3*y)),(e=>l(e)),k)};export{k as createIndexedDbPersister,L as objectStoreMatch};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const t=setInterval,e=clearInterval,n=(t,e)=>t instanceof e,o=t=>null==t,l=Object,r=l.keys,i=l.freeze,u=t=>(t=>n(t,l)&&t.constructor==l)(t)&&0==(t=>r(t).length)(t),d=JSON.parse,a=t=>new Map(t),s=(t,e)=>null==t?void 0:t.get(e),c=(t,e,n)=>{return o(n)?(r=e,null==(l=t)||l.delete(r),t):null==t?void 0:t.set(e,n);var l,r},v=(t,e,n)=>{var o,l,r;return l=e,null!=(r=null==(o=t)?void 0:o.has(l))&&r||c(t,e,n()),s(t,e)};var y=(t,e,n)=>new Promise(((o,l)=>{var r=t=>{try{u(n.next(t))}catch(t){l(t)}},i=t=>{try{u(n.throw(t))}catch(t){l(t)}},u=t=>t.done?o(t.value):Promise.resolve(t.value).then(r,i);u((n=n.apply(t,e)).next())}));const h=a(),f=a();var p=(t,e,n)=>new Promise(((o,l)=>{var r=t=>{try{u(n.next(t))}catch(t){l(t)}},i=t=>{try{u(n.throw(t))}catch(t){l(t)}},u=t=>t.done?o(t.value):Promise.resolve(t.value).then(r,i);u((n=n.apply(t,e)).next())}));const g=t=>t.headers.get("ETag"),A=(r,a,A,S,m)=>{let x;return((t,e,n,l,r,d,a=[])=>{let p,g,A,S=0,m=0;v(h,a,(()=>0)),v(f,a,(()=>[]));const x=t=>y(void 0,null,(function*(){return 2!=S&&(S=1,yield C.schedule((()=>y(void 0,null,(function*(){yield t(),S=0}))))),C})),C={load:(n,o)=>y(void 0,null,(function*(){return yield x((()=>y(void 0,null,(function*(){try{t.setContent(yield e())}catch(e){t.setContent([n,o])}}))))})),startAutoLoad:(...n)=>y(void 0,[...n],(function*(n={},o={}){return C.stopAutoLoad(),yield C.load(n,o),m=1,A=l(((n,o)=>y(void 0,null,(function*(){if(o){const e=o();yield x((()=>y(void 0,null,(function*(){return t.setTransactionChanges(e)}))))}else yield x((()=>y(void 0,null,(function*(){var o;try{t.setContent(null!=(o=null==n?void 0:n())?o:yield e())}catch(t){null==d||d(t)}}))))})))),C})),stopAutoLoad:()=>(m&&(r(A),A=void 0,m=0),C),save:e=>y(void 0,null,(function*(){return 1!=S&&(S=2,yield C.schedule((()=>y(void 0,null,(function*(){try{yield n(t.getContent,e)}catch(t){null==d||d(t)}S=0}))))),C})),startAutoSave:()=>y(void 0,null,(function*(){return yield C.stopAutoSave().save(),p=t.addDidFinishTransactionListener(((t,e)=>{const[n,o]=e();u(n)&&u(o)||C.save((()=>[n,o]))})),C})),stopAutoSave:()=>{var e,n;return e=p,n=t.delListener,!!o(e)||n(e),C},schedule:(...t)=>y(void 0,null,(function*(){return((t,...e)=>{t.push(...e)})(s(f,a),...t),yield y(void 0,null,(function*(){if(!s(h,a)){for(c(h,a,1);!o((t=s(f,a),g=t.shift()));)try{yield g()}catch(t){null==d||d(t)}c(h,a,0)}var t})),C})),getStore:()=>t,destroy:()=>C.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return i(C)})(r,(()=>p(void 0,null,(function*(){const t=yield fetch(a);return x=g(t),d(yield t.text())}))),(t=>p(void 0,null,(function*(){return yield fetch(A,{method:"POST",headers:{"Content-Type":"application/json"},body:(e=t(),JSON.stringify(e,((t,e)=>n(e,Map)?l.fromEntries([...e]):e)))});var e}))),(e=>t((()=>p(void 0,null,(function*(){const t=yield fetch(a,{method:"HEAD"}),n=g(t);o(x)||o(n)||n==x||(x=n,e())}))),1e3*S)),(t=>e(t)),m)};export{A as createRemotePersister};
|
|
1
|
+
const t=setInterval,e=clearInterval,n=(t,e)=>t instanceof e,o=t=>null==t,l=Object,r=l.keys,i=l.freeze,u=t=>(t=>n(t,l)&&t.constructor==l)(t)&&0==(t=>r(t).length)(t),d=JSON.parse,a=t=>new Map(t),s=(t,e)=>null==t?void 0:t.get(e),c=(t,e,n)=>{return o(n)?(r=e,null==(l=t)||l.delete(r),t):null==t?void 0:t.set(e,n);var l,r},v=(t,e,n)=>{var o,l,r;return l=e,null!=(r=null==(o=t)?void 0:o.has(l))&&r||c(t,e,n()),s(t,e)};var y=(t,e,n)=>new Promise(((o,l)=>{var r=t=>{try{u(n.next(t))}catch(t){l(t)}},i=t=>{try{u(n.throw(t))}catch(t){l(t)}},u=t=>t.done?o(t.value):Promise.resolve(t.value).then(r,i);u((n=n.apply(t,e)).next())}));const h=a(),f=a();var p=(t,e,n)=>new Promise(((o,l)=>{var r=t=>{try{u(n.next(t))}catch(t){l(t)}},i=t=>{try{u(n.throw(t))}catch(t){l(t)}},u=t=>t.done?o(t.value):Promise.resolve(t.value).then(r,i);u((n=n.apply(t,e)).next())}));const g=t=>t.headers.get("ETag"),A=(r,a,A,S=5,m)=>{let x;return((t,e,n,l,r,d,a=[])=>{let p,g,A,S=0,m=0;v(h,a,(()=>0)),v(f,a,(()=>[]));const x=t=>y(void 0,null,(function*(){return 2!=S&&(S=1,yield C.schedule((()=>y(void 0,null,(function*(){yield t(),S=0}))))),C})),C={load:(n,o)=>y(void 0,null,(function*(){return yield x((()=>y(void 0,null,(function*(){try{t.setContent(yield e())}catch(e){t.setContent([n,o])}}))))})),startAutoLoad:(...n)=>y(void 0,[...n],(function*(n={},o={}){return C.stopAutoLoad(),yield C.load(n,o),m=1,A=l(((n,o)=>y(void 0,null,(function*(){if(o){const e=o();yield x((()=>y(void 0,null,(function*(){return t.setTransactionChanges(e)}))))}else yield x((()=>y(void 0,null,(function*(){var o;try{t.setContent(null!=(o=null==n?void 0:n())?o:yield e())}catch(t){null==d||d(t)}}))))})))),C})),stopAutoLoad:()=>(m&&(r(A),A=void 0,m=0),C),save:e=>y(void 0,null,(function*(){return 1!=S&&(S=2,yield C.schedule((()=>y(void 0,null,(function*(){try{yield n(t.getContent,e)}catch(t){null==d||d(t)}S=0}))))),C})),startAutoSave:()=>y(void 0,null,(function*(){return yield C.stopAutoSave().save(),p=t.addDidFinishTransactionListener(((t,e)=>{const[n,o]=e();u(n)&&u(o)||C.save((()=>[n,o]))})),C})),stopAutoSave:()=>{var e,n;return e=p,n=t.delListener,!!o(e)||n(e),C},schedule:(...t)=>y(void 0,null,(function*(){return((t,...e)=>{t.push(...e)})(s(f,a),...t),yield y(void 0,null,(function*(){if(!s(h,a)){for(c(h,a,1);!o((t=s(f,a),g=t.shift()));)try{yield g()}catch(t){null==d||d(t)}c(h,a,0)}var t})),C})),getStore:()=>t,destroy:()=>C.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return i(C)})(r,(()=>p(void 0,null,(function*(){const t=yield fetch(a);return x=g(t),d(yield t.text())}))),(t=>p(void 0,null,(function*(){return yield fetch(A,{method:"POST",headers:{"Content-Type":"application/json"},body:(e=t(),JSON.stringify(e,((t,e)=>n(e,Map)?l.fromEntries([...e]):e)))});var e}))),(e=>t((()=>p(void 0,null,(function*(){const t=yield fetch(a,{method:"HEAD"}),n=g(t);o(x)||o(n)||n==x||(x=n,e())}))),1e3*S)),(t=>e(t)),m)};export{A as createRemotePersister};
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Map as t}from"yjs";const e=t=>t.length,
|
|
1
|
+
import{Map as t}from"yjs";const e="t",n="v",o=t=>t.length,l=t=>t.shift(),r=t=>null==t,u=(t,e,n)=>r(t)?null==n?void 0:n():e(t),i=Object,s=i.keys,a=i.freeze,d=(t=[])=>i.fromEntries(t),c=(t,e)=>!r(((t,e)=>u(t,(t=>t[e])))(t,e)),v=(t,e)=>((t,e)=>t.map(e))(i.entries(t),(([t,n])=>e(n,t))),f=t=>(t=>t instanceof i&&t.constructor==i)(t)&&0==(t=>o(s(t)))(t),y=(t,e,n)=>(c(t,e)||(t[e]=n()),t[e]),h=t=>new Map(t),g=(t,e)=>null==t?void 0:t.get(e),p=(t,e)=>((t,e)=>null==t?void 0:t.forEach(e))(t,((t,n)=>e(n,t))),S=(t,e,n)=>{return r(n)?(l=e,null==(o=t)||o.delete(l),t):null==t?void 0:t.set(e,n);var o,l},m=(t,e,n)=>{var o,l,r;return l=e,null!=(r=null==(o=t)?void 0:o.has(l))&&r||S(t,e,n()),g(t,e)};var w=(t,e,n)=>new Promise(((o,l)=>{var r=t=>{try{i(n.next(t))}catch(t){l(t)}},u=t=>{try{i(n.throw(t))}catch(t){l(t)}},i=t=>t.done?o(t.value):Promise.resolve(t.value).then(r,u);i((n=n.apply(t,e)).next())}));const A=h(),O=h();var J=(t,e,n)=>new Promise(((o,l)=>{var r=t=>{try{i(n.next(t))}catch(t){l(t)}},u=t=>{try{i(n.throw(t))}catch(t){l(t)}},i=t=>t.done?o(t.value):Promise.resolve(t.value).then(r,u);i((n=n.apply(t,e)).next())}));const L="delete",N=t=>[t.get(e),t.get(n)],x=(e,n,o,l)=>{var u;const i=r(n)?e:null!=(u=e.get(n))?u:e.set(n,new t);let s;return v(o,((t,e)=>{l(i,e,t)&&(s=1)})),i.forEach(((t,e)=>{c(o,e)||(i.delete(e),s=1)})),r(n)||i.size||e.delete(n),s},C=(i,s,c="tinybase",h)=>{const C=s.getMap(c);return((t,e,n,o,i,s,d=[])=>{let c,v,y,h=0,p=0;m(A,d,(()=>0)),m(O,d,(()=>[]));const J=t=>w(void 0,null,(function*(){return 2!=h&&(h=1,yield L.schedule((()=>w(void 0,null,(function*(){yield t(),h=0}))))),L})),L={load:(n,o)=>w(void 0,null,(function*(){return yield J((()=>w(void 0,null,(function*(){try{t.setContent(yield e())}catch(e){t.setContent([n,o])}}))))})),startAutoLoad:(...n)=>w(void 0,[...n],(function*(n={},l={}){return L.stopAutoLoad(),yield L.load(n,l),p=1,y=o(((n,o)=>w(void 0,null,(function*(){if(o){const e=o();yield J((()=>w(void 0,null,(function*(){return t.setTransactionChanges(e)}))))}else yield J((()=>w(void 0,null,(function*(){var o;try{t.setContent(null!=(o=null==n?void 0:n())?o:yield e())}catch(t){null==s||s(t)}}))))})))),L})),stopAutoLoad:()=>(p&&(i(y),y=void 0,p=0),L),save:e=>w(void 0,null,(function*(){return 1!=h&&(h=2,yield L.schedule((()=>w(void 0,null,(function*(){try{yield n(t.getContent,e)}catch(t){null==s||s(t)}h=0}))))),L})),startAutoSave:()=>w(void 0,null,(function*(){return yield L.stopAutoSave().save(),c=t.addDidFinishTransactionListener(((t,e)=>{const[n,o]=e();f(n)&&f(o)||L.save((()=>[n,o]))})),L})),stopAutoSave:()=>(u(c,t.delListener),L),schedule:(...t)=>w(void 0,null,(function*(){return((t,...e)=>{t.push(...e)})(g(O,d),...t),yield w(void 0,null,(function*(){if(!g(A,d)){for(S(A,d,1);!r(v=l(g(O,d)));)try{yield v()}catch(t){null==s||s(t)}S(A,d,0)}})),L})),getStore:()=>t,destroy:()=>L.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return a(L)})(i,(()=>J(void 0,null,(function*(){return C.size?[C.get(e).toJSON(),C.get(n).toJSON()]:void 0}))),((o,l)=>J(void 0,null,(function*(){return s.transact((()=>((o,l,i)=>{o.size||(o.set(e,new t),o.set(n,new t));const[s,a]=N(o),d=()=>{c=1};let c=1;if(u(null==i?void 0:i(),(([t,e])=>{c=0,v(t,((t,e)=>c?0:r(t)?s.delete(e):u(s.get(e),(e=>v(t,((t,n)=>c?0:r(t)?e.delete(n):u(e.get(n),(e=>v(t,((t,n)=>r(t)?e.delete(n):e.set(n,t)))),d)))),d))),v(e,((t,e)=>c?0:r(t)?a.delete(e):a.set(e,t)))})),c){const[t,e]=l();x(s,void 0,t,((t,e,n)=>x(s,e,n,((t,e,n)=>x(t,e,n,((t,e,n)=>{if(t.get(e)!==n)return t.set(e,n),1})))))),x(a,void 0,e,((t,e,n)=>{a.get(e)!==n&&a.set(e,n)}))}})(C,o,l)))}))),(t=>{const r=r=>t(void 0,(()=>((t,r)=>{if(1==o(r)&&(i=r[0].path,0==o(i)))return[t.get(e).toJSON(),t.get(n).toJSON()];var i;const[s,a]=N(t),c={},v={};return((t,n)=>{t.forEach((({path:t,changes:{keys:n}})=>l(t)==e?u(l(t),(e=>{const o=y(c,e,d),r=s.get(e);u(l(t),(t=>{const e=y(o,t,d),l=r.get(t);p(n,((t,{action:n})=>e[t]=n==L?null:l.get(t)))}),(()=>p(n,((t,{action:e})=>{var n;return o[t]=e==L?null:null==(n=r.get(t))?void 0:n.toJSON()}))))}),(()=>p(n,((t,{action:e})=>{var n;return c[t]=e==L?null:null==(n=s.get(t))?void 0:n.toJSON()})))):p(n,((t,{action:e})=>v[t]=e==L?null:a.get(t)))))})(r),[c,v]})(C,r)));return C.observeDeep(r),r}),(t=>{C.unobserveDeep(t)}),h)};export{C as createYjsPersister};
|
|
Binary file
|