tinybase 1.0.5 → 1.1.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/store.d.ts CHANGED
@@ -332,6 +332,35 @@ export type CellListener = (
332
332
  getCellChange: GetCellChange | undefined,
333
333
  ) => void;
334
334
 
335
+ /**
336
+ * The InvalidCellListener type describes a function that is used to listen to
337
+ * attempts to set invalid data to a Cell.
338
+ *
339
+ * A InvalidCellListener is provided when using the addInvalidCellListener
340
+ * method. See that method for specific examples.
341
+ *
342
+ * When called, a InvalidCellListener is given a reference to the Store, the Id
343
+ * of the Table, the Id of the Row, and the Id of Cell that were being attempted
344
+ * to be changed. It is also given the invalid value of the Cell, which could
345
+ * have been of absolutely any type. Since there could have been multiple failed
346
+ * attempts to set the Cell within a single transaction, this is an array
347
+ * containing each attempt, chronologically.
348
+ *
349
+ * @param store A reference to the Store that was being changed.
350
+ * @param tableId The Id of the Table that was being changed.
351
+ * @param rowId The Id of the Row that was being changed.
352
+ * @param cellId The Id of the Cell that was being changed.
353
+ * @param invalidCells An array of the values of the Cell that were invalid.
354
+ * @category Listener
355
+ */
356
+ export type InvalidCellListener = (
357
+ store: Store,
358
+ tableId: Id,
359
+ rowId: Id,
360
+ cellId: Id,
361
+ invalidCells: any[],
362
+ ) => void;
363
+
335
364
  /**
336
365
  * The GetCellChange type describes a function that returns information about
337
366
  * any Cell's changes during a transaction.
@@ -545,6 +574,9 @@ export type StoreListenerStats = {
545
574
  * unique Id. And the setPartialRow method lets you update multiple Cell values
546
575
  * in a Row without affecting the others.
547
576
  *
577
+ * You can listen to attempts to write invalid data to a Cell with the
578
+ * addInvalidCellListener method.
579
+ *
548
580
  * The transaction method is used to wrap multiple changes to the Store so that
549
581
  * the relevant listeners only fire once.
550
582
  *
@@ -2371,6 +2403,235 @@ export interface Store {
2371
2403
  mutator?: boolean,
2372
2404
  ): Id;
2373
2405
 
2406
+ /**
2407
+ * The addInvalidCellListener method registers a listener function with the
2408
+ * Store that will be called whenever invalid data was attempted to be written
2409
+ * to a Cell.
2410
+ *
2411
+ * You can either listen to a single Cell (by specifying the Table Id, Row Id,
2412
+ * and Cell Id as the method's first three parameters) or invalid attempts to
2413
+ * change any Cell (by providing `null` wildcards).
2414
+ *
2415
+ * All, some, or none of the `tableId`, `rowId`, and `cellId` parameters can
2416
+ * be wildcarded with `null`. You can listen to a specific Cell in a specific
2417
+ * Row in a specific Table, any Cell in any Row in any Table, for example - or
2418
+ * every other combination of wildcards.
2419
+ *
2420
+ * The provided listener is an InvalidCellListener function, and will be
2421
+ * called with a reference to the Store, the Id of the Table, the Id of the
2422
+ * Row, and the Id of Cell that were being attempted to be changed. It is also
2423
+ * given the invalid value of the Cell, which could have been of absolutely
2424
+ * any type. Since there could have been multiple failed attempts to set the
2425
+ * Cell within a single transaction, this is an array containing each attempt,
2426
+ * chronologically.
2427
+ *
2428
+ * Use the optional mutator parameter to indicate that there is code in the
2429
+ * listener that will mutate Store data. If set to `false` (or omitted), such
2430
+ * mutations will be silently ignored. All relevant mutator listeners (with
2431
+ * this flag set to `true`) are called _before_ any non-mutator listeners
2432
+ * (since the latter may become relevant due to changes made in the former).
2433
+ * The changes made by mutator listeners do not fire other mutating listeners,
2434
+ * though they will fire non-mutator listeners.
2435
+ *
2436
+ * Special note should be made for how the listener will be called when a
2437
+ * Schema is present. The listener will be called:
2438
+ *
2439
+ * - if a Table is being updated that is not specified in the Schema
2440
+ * - if a Cell is of the wrong type specified in the Schema
2441
+ * - if a Cell is omitted and is not defaulted in the Schema
2442
+ * - if an empty Row is provided and there are no Cell defaults in the Schema
2443
+ *
2444
+ * The listener will not be called if Cell that is defaulted in the Schema is
2445
+ * not provided, as long as all of the Cells that are _not_ defaulted _are_
2446
+ * provided.
2447
+ *
2448
+ * To help understand all of these schema-based conditions, please see the
2449
+ * Schema example below.
2450
+ *
2451
+ * @param tableId The Id of the Table to listen to, or `null` as a wildcard.
2452
+ * @param rowId The Id of the Row to listen to, or `null` as a wildcard.
2453
+ * @param cellId The Id of the Cell to listen to, or `null` as a wildcard.
2454
+ * @param listener The function that will be called whenever an attempt to
2455
+ * write invalid data to the matching Cell was made.
2456
+ * @param mutator An optional boolean that indicates that the listener mutates
2457
+ * Store data.
2458
+ * @returns A unique Id for the listener that can later be used to call it
2459
+ * explicitly, or to remove it.
2460
+ * @example
2461
+ * This example registers a listener that responds to any invalid changes to a
2462
+ * specific Cell.
2463
+ *
2464
+ * ```js
2465
+ * const store = createStore().setTables({
2466
+ * pets: {fido: {species: 'dog', color: 'brown'}},
2467
+ * });
2468
+ * const listenerId = store.addInvalidCellListener(
2469
+ * 'pets',
2470
+ * 'fido',
2471
+ * 'color',
2472
+ * (store, tableId, rowId, cellId, invalidCells) => {
2473
+ * console.log('Invalid color cell in fido row in pets table');
2474
+ * console.log(invalidCells);
2475
+ * },
2476
+ * );
2477
+ *
2478
+ * store.setCell('pets', 'fido', 'color', {r: '96', g: '4B', b: '00'});
2479
+ * // -> 'Invalid color cell in fido row in pets table'
2480
+ * // -> [{r: '96', g: '4B', b: '00'}]
2481
+ *
2482
+ * store.delListener(listenerId);
2483
+ * ```
2484
+ * @example
2485
+ * This example registers a listener that responds to any invalid changes to
2486
+ * any Cell - in a Store _without_ a Schema. Note also how it then responds to
2487
+ * cases where an empty or invalid Row objects, or Table objects, or Tables
2488
+ * objects are provided.
2489
+ *
2490
+ * ```js
2491
+ * const store = createStore().setTables({
2492
+ * pets: {fido: {species: 'dog', color: 'brown'}},
2493
+ * });
2494
+ * const listenerId = store.addInvalidCellListener(
2495
+ * null,
2496
+ * null,
2497
+ * null,
2498
+ * (store, tableId, rowId, cellId) => {
2499
+ * console.log(
2500
+ * `Invalid ${cellId} cell in ${rowId} row in ${tableId} table`,
2501
+ * );
2502
+ * },
2503
+ * );
2504
+ *
2505
+ * store.setCell('pets', 'fido', 'color', {r: '96', g: '4B', b: '00'});
2506
+ * // -> 'Invalid color cell in fido row in pets table'
2507
+ * store.setTable('sales', {fido: {date: new Date()}});
2508
+ * // -> 'Invalid date cell in fido row in sales table'
2509
+ *
2510
+ * store.setRow('pets', 'felix', {});
2511
+ * // -> 'Invalid undefined cell in felix row in pets table'
2512
+ *
2513
+ * store.setRow('filter', 'name', /[a-z]?/);
2514
+ * // -> 'Invalid undefined cell in name row in filter table'
2515
+ *
2516
+ * store.setRow('sales', '2021', {forecast: undefined});
2517
+ * // -> 'Invalid forecast cell in 2021 row in sales table'
2518
+ *
2519
+ * store.addRow('filter', /[0-9]?/);
2520
+ * // -> 'Invalid undefined cell in undefined row in filter table'
2521
+ *
2522
+ * store.setTable('raw', {});
2523
+ * // -> 'Invalid undefined cell in undefined row in raw table'
2524
+ *
2525
+ * store.setTable('raw', ['row1', 'row2']);
2526
+ * // -> 'Invalid undefined cell in undefined row in raw table'
2527
+ *
2528
+ * store.setTables(['table1', 'table2']);
2529
+ * // -> 'Invalid undefined cell in undefined row in undefined table'
2530
+ *
2531
+ * store.delListener(listenerId);
2532
+ * ```
2533
+ * @example
2534
+ * This example registers a listener that responds to any invalid changes to
2535
+ * any Cell - in a Store _with_ a Schema. Note how it responds to cases where
2536
+ * missing parameters are provided for optional, and defaulted Cell values in
2537
+ * a Row.
2538
+ *
2539
+ * ```js
2540
+ * const store = createStore().setSchema({
2541
+ * pets: {
2542
+ * species: {type: 'string'},
2543
+ * color: {type: 'string', default: 'unknown'},
2544
+ * },
2545
+ * });
2546
+ *
2547
+ * const listenerId = store.addInvalidCellListener(
2548
+ * null,
2549
+ * null,
2550
+ * null,
2551
+ * (store, tableId, rowId, cellId) => {
2552
+ * console.log(
2553
+ * `Invalid ${cellId} cell in ${rowId} row in ${tableId} table`,
2554
+ * );
2555
+ * },
2556
+ * );
2557
+ *
2558
+ * store.setRow('sales', 'fido', {price: 5});
2559
+ * // -> 'Invalid price cell in fido row in sales table'
2560
+ * // The listener is called, because the sales Table is not in the schema
2561
+ *
2562
+ * store.setRow('pets', 'felix', {species: true});
2563
+ * // -> 'Invalid species cell in felix row in pets table'
2564
+ * // The listener is called, because species is invalid...
2565
+ * console.log(store.getRow('pets', 'felix'));
2566
+ * // -> {color: 'unknown'}
2567
+ * // ...even though a Row was set with the default value
2568
+ *
2569
+ * store.setRow('pets', 'fido', {color: 'brown'});
2570
+ * // -> 'Invalid species cell in fido row in pets table'
2571
+ * // The listener is called, because species is missing and not defaulted...
2572
+ * console.log(store.getRow('pets', 'fido'));
2573
+ * // -> {color: 'brown'}
2574
+ * // ...even though a Row was set
2575
+ *
2576
+ * store.setRow('pets', 'rex', {species: 'dog'});
2577
+ * console.log(store.getRow('pets', 'rex'));
2578
+ * // -> {species: 'dog', color: 'unknown'}
2579
+ * // The listener is not called, because color is defaulted
2580
+ *
2581
+ * store.delTables().setSchema({
2582
+ * pets: {
2583
+ * species: {type: 'string'},
2584
+ * color: {type: 'string'},
2585
+ * },
2586
+ * });
2587
+ *
2588
+ * store.setRow('pets', 'cujo', {});
2589
+ * // -> 'Invalid species cell in cujo row in pets table'
2590
+ * // -> 'Invalid color cell in cujo row in pets table'
2591
+ * // -> 'Invalid undefined cell in cujo row in pets table'
2592
+ * // The listener is called multiple times, because neither Cell is defaulted
2593
+ * // and the Row as a whole is empty
2594
+ *
2595
+ * store.delListener(listenerId);
2596
+ * ```
2597
+ * @example
2598
+ * This example registers a listener that responds to any changes to a
2599
+ * specific Cell, and which also mutates the Store itself.
2600
+ *
2601
+ * ```js
2602
+ * const store = createStore().setTables({
2603
+ * pets: {fido: {species: 'dog', color: 'brown'}},
2604
+ * });
2605
+ * const listenerId = store.addInvalidCellListener(
2606
+ * 'pets',
2607
+ * 'fido',
2608
+ * 'color',
2609
+ * (store, tableId, rowId, cellId, invalidCells) =>
2610
+ * store.setCell(
2611
+ * 'meta',
2612
+ * 'invalid_updates',
2613
+ * `${tableId}_${rowId}_${cellId}`,
2614
+ * JSON.stringify(invalidCells[0]),
2615
+ * ),
2616
+ * true,
2617
+ * );
2618
+ *
2619
+ * store.setCell('pets', 'fido', 'color', {r: '96', g: '4B', b: '00'});
2620
+ * console.log(store.getRow('meta', 'invalid_updates'));
2621
+ * // -> {'pets_fido_color': '{"r":"96","g":"4B","b":"00"}'}
2622
+ *
2623
+ * store.delListener(listenerId);
2624
+ * ```
2625
+ * @category Listener
2626
+ */
2627
+ addInvalidCellListener(
2628
+ tableId: IdOrNull,
2629
+ rowId: IdOrNull,
2630
+ cellId: IdOrNull,
2631
+ listener: InvalidCellListener,
2632
+ mutator?: boolean,
2633
+ ): Id;
2634
+
2374
2635
  /**
2375
2636
  * The callListener method provides a way for you to manually provoke a
2376
2637
  * listener to be called, even if the underlying data hasn't changed.
package/lib/store.js CHANGED
@@ -1 +1 @@
1
- const e=e=>typeof e,t=e(""),s=e(!0),n=e(0),r=e(e),l=(e,t)=>e.forEach(t),a=e=>e.length,o=e=>0==a(e),c=e=>e.slice(1),d=e=>JSON.stringify(e,((e,t)=>{return f(t,Map)?(s=[...t],n=(e,[t,s])=>(e[t]=s,e),r={},s.reduce(n,r)):t;var s,n,r})),i=JSON.parse,u=isFinite,f=(e,t)=>e instanceof t,h=e=>null==e,b=(e,t,s)=>h(e)?s?.():t(e),g=e=>e==t||e==s,T=(e,t)=>e?.has(t)??!1,w=e=>h(e)||0==(e=>e.size)(e),p=e=>e.clear(),L=(e,t)=>e?.forEach(t),R=(e,t)=>e?.delete(t),y=e=>new Map(e),C=(e=y)=>[e(),e()],S=e=>[...e?.keys()??[]],I=(e,t)=>e?.get(t),v=(e,t)=>L(e,((e,s)=>t(s,e))),E=(e,t,s)=>h(s)?(R(e,t),e):e?.set(t,s),J=(e,t,s,n)=>(T(e,t)||(n?.(s),e.set(t,s)),I(e,t)),m=(e,t)=>{const s={},n=t??(e=>e);return L(e,((e,t)=>s[t]=n(e))),s},z=(e,t)=>{const s=y(),n=t??(e=>e);return L(e,((e,t)=>s.set(t,n(e)))),s},O=Object,k=O.keys,F=O.isFrozen,M=O.freeze,N=(e,t)=>!h(((e,t)=>b(e,(e=>e[t])))(e,t)),j=(e,t)=>delete e[t],x=(e,t)=>l(O.entries(e),(([e,s])=>t(s,e))),P=e=>new Set(e),q=(e,t,s)=>a(s)<2?((e,t)=>e?.add(t))(o(s)?e:J(e,s[0],P()),t):q(J(e,s[0],y()),t,c(s)),A=e=>{const t=(s,n,...r)=>b(s,(s=>o(r)?e(s,n):l([r[0],null],(e=>t(I(s,e),n,...c(r))))));return t},B=(e,t,s,n=E)=>{const r=(a=S(e),o=e=>!N(t,e),a.filter(o));var a,o;return l(k(t),(n=>s(e,n,t[n]))),l(r,(t=>n(e,t))),e},D=t=>{const s=e(t);return g(s)||s==n&&u(t)?s:void 0},G=(e,t)=>!(h(e)||!(e=>f(e,O)&&e.constructor==O)(e)||F(e))&&(x(e,((s,n)=>{t(s,n)||j(e,n)})),!(e=>o(k(e)))(e)),H=(e,t,s)=>E(e,t,I(e,t)==-s?void 0:s),K=()=>{let t,s=0,o=0;const c=y(),u=y(),f=y(),O=y(),k=y(),F=y(),K=y(),Q=C(P),U=C(P),V=C(),W=C(),X=C(),Y=C(),Z=C(),[$,_,ee,te]=(e=>{let t,s=0;const n=[],r=y();return[(l,a,o=[])=>{t??=e();const c=n.pop()??""+s++;return E(r,c,[l,a,o]),q(a,c,o),c},(e,s=[],...n)=>A(L)(e,(e=>b(I(r,e),(([e])=>e(t,...s,...n)))),...s),e=>b(I(r,e),(([,t,s])=>(A(R)(t,e,...s),E(r,e),a(n)<1e3&&n.push(e),s)),(()=>[])),(e,s,n)=>b(I(r,e),(([e,,r])=>{const o=(...c)=>{const d=a(c);d==a(r)?e(t,...c,...n(c)):h(r[d])?l(s[d](...c),(e=>o(...c,e))):o(...c,r[d])};o()}))]})((()=>Fe)),se=(e,s)=>(!t||T(k,s))&&G(e,(e=>ne(s,e))),ne=(e,t,s)=>G(s?t:le(t,e),((s,n)=>b(re(e,n,s),(e=>(t[n]=e,!0)),(()=>!1)))),re=(e,s,n)=>t?b(I(I(k,e),s),(e=>D(n)!=e.type?e.default:n)):h(D(n))?void 0:n,le=(e,t)=>(b(I(F,t),(t=>x(t,((t,s)=>{N(e,s)||(e[s]=t)})))),e),ae=e=>B(k,e,((e,t,s)=>{const n={};B(J(k,t,y()),s,((e,t,s)=>{E(e,t,s),b(s.default,(e=>n[t]=e))})),E(F,t,n)}),((e,t)=>{E(k,t),E(F,t)})),oe=e=>B(K,e,((e,t,s)=>ce(t,s)),((e,t)=>ge(t))),ce=(e,t)=>B(J(K,e,y(),(()=>pe(e,1))),t,((t,s,n)=>de(e,t,s,n)),((t,s)=>Te(e,t,s))),de=(e,t,s,n,r)=>B(J(t,s,y(),(()=>Le(e,s,1))),n,((t,n,r)=>ie(e,s,t,n,r)),((n,l)=>we(e,t,s,n,l,r))),ie=(e,t,s,n,r)=>{T(s,n)||Re(e,t,n,1);const l=I(s,n);r!==l&&(ye(e,t,n,l),E(s,n,r))},ue=(e,t,s)=>ke((()=>de(e,be(e),t,s))),fe=(e,t,s,n,r)=>b(I(t,s),(t=>ie(e,s,t,n,r)),(()=>de(e,t,s,le({[n]:r},e)))),he=e=>{const t=""+s++;return T(e,t)?he(e):t},be=e=>I(K,e)??ce(e,{}),ge=e=>ce(e,{}),Te=(e,t,s)=>de(e,t,s,{},!0),we=(e,t,s,n,r,l)=>{const a=I(F,e)?.[r];if(!h(a)&&!l)return ie(e,s,n,r,a);const o=t=>{ye(e,s,t,I(n,t)),Re(e,s,t,-1),E(n,t)};h(a)?o(r):v(n,o),w(n)&&(Le(e,s,-1),w(E(t,s))&&(pe(e,-1),E(K,e)))},pe=(e,t)=>H(c,e,t),Le=(e,t,s)=>H(J(u,e,y()),t,s),Re=(e,t,s,n)=>H(J(J(f,e,y()),t,y()),s,n),ye=(e,t,s,n)=>J(J(J(O,e,y()),t,y()),s,n),Ce=(e,t,s)=>{const n=I(I(O,e),t),r=me(e,t,s);return T(n,s)?[!0,I(n,s),r]:[!1,r,r]},Se=e=>{const t=w(Y[e])&&w(W[e])&&w(U[e]),s=w(Z[e])&&w(X[e])&&w(V[e])&&w(Q[e]);if(t&&s)return;const n=e?[z(c),z(u,z),z(f,(e=>z(e,z))),z(O,(e=>z(e,z)))]:[c,u,f,O];if(t||(L(n[2],((t,s)=>L(t,((t,n)=>{w(t)||_(Y[e],[s,n])})))),L(n[1],((t,s)=>{w(t)||_(W[e],[s])})),w(n[0])||_(U[e])),!s){let t;L(n[3],((s,n)=>{let r;L(s,((s,l)=>{let a;L(s,((s,o)=>{const c=me(n,l,o);c!==s&&(_(Z[e],[n,l,o],c,s,Ce),t=r=a=1)})),a&&_(X[e],[n,l],Ce)})),r&&_(V[e],[n],Ce)})),t&&_(Q[e],[],Ce)}},Ie=()=>m(K,(e=>m(e,m))),ve=()=>S(K),Ee=e=>S(I(K,e)),Je=(e,t)=>S(I(I(K,e),t)),me=(e,t,s)=>I(I(I(K,e),t),s),ze=e=>((e=>G(e,se))(e)&&ke((()=>oe(e))),Fe),Oe=()=>(ke((()=>oe({}))),Fe),ke=e=>{if(-1==o)return;o++;const t=e();return o--,0==o&&(o=1,Se(1),o=-1,Se(0),o=0,l([O,c,u,f],p)),t},Fe={getTables:Ie,getTableIds:ve,getTable:e=>m(I(K,e),m),getRowIds:Ee,getRow:(e,t)=>m(I(I(K,e),t)),getCellIds:Je,getCell:me,hasTables:()=>!w(K),hasTable:e=>T(K,e),hasRow:(e,t)=>T(I(K,e),t),hasCell:(e,t,s)=>T(I(I(K,e),t),s),getJson:()=>d(K),getSchemaJson:()=>d(k),setTables:ze,setTable:(e,t)=>(se(t,e)&&ke((()=>ce(e,t))),Fe),setRow:(e,t,s)=>(ne(e,s)&&ue(e,t,s),Fe),addRow:(e,t)=>{let s;return ne(e,t)&&(s=he(I(K,e)),ue(e,s,t)),s},setPartialRow:(e,t,s)=>(ne(e,s,1)&&ke((()=>{const n=be(e);x(s,((s,r)=>fe(e,n,t,r,s)))})),Fe),setCell:(t,s,n,l)=>(b(re(t,n,e(l)==r?l(me(t,s,n)):l),(e=>ke((()=>fe(t,be(t),s,n,e))))),Fe),setJson:e=>{try{"{}"===e?Oe():ze(i(e))}catch{}return Fe},setSchema:e=>{if((t=(e=>G(e,(e=>G(e,(e=>{if(!G(e,((e,t)=>["type","default"].includes(t))))return!1;const t=e.type;return!(!g(t)&&t!=n||(D(e.default)!=t&&j(e,"default"),0))})))))(e))&&(ae(e),!w(K))){const e=Ie();Oe(),ze(e)}return Fe},delTables:Oe,delTable:e=>(T(K,e)&&ke((()=>ge(e))),Fe),delRow:(e,t)=>(b(I(K,e),(s=>{T(s,t)&&ke((()=>Te(e,s,t)))})),Fe),delCell:(e,t,s,n)=>(b(I(K,e),(r=>b(I(r,t),(l=>{T(l,s)&&ke((()=>we(e,r,t,l,s,n)))})))),Fe),delSchema:()=>(ae({}),t=!1,Fe),transaction:ke,forEachTable:e=>L(K,((t,s)=>e(s,(e=>L(t,((t,s)=>e(s,(e=>v(t,e))))))))),forEachRow:(e,t)=>L(I(K,e),((e,s)=>t(s,(t=>v(e,t))))),forEachCell:(e,t,s)=>v(I(I(K,e),t),s),addTablesListener:(e,t)=>$(e,Q[t?1:0]),addTableIdsListener:(e,t)=>$(e,U[t?1:0]),addTableListener:(e,t,s)=>$(t,V[s?1:0],[e]),addRowIdsListener:(e,t,s)=>$(t,W[s?1:0],[e]),addRowListener:(e,t,s,n)=>$(s,X[n?1:0],[e,t]),addCellIdsListener:(e,t,s,n)=>$(s,Y[n?1:0],[e,t]),addCellListener:(e,t,s,n,r)=>$(n,Z[r?1:0],[e,t,s]),callListener:e=>(te(e,[ve,Ee,Je],(e=>h(e[2])?[]:[,,].fill(me(...e)))),Fe),delListener:e=>(ee(e),Fe),getListenerStats:()=>({})};return M(Fe)};export{K as createStore};
1
+ const e=e=>typeof e,t=e(""),s=e(!0),n=e(0),r=e(e),l=(e,t)=>e.forEach(t),a=e=>e.length,o=e=>0==a(e),c=e=>e.slice(1),d=(e,t)=>e.push(t),i=e=>JSON.stringify(e,((e,t)=>{return h(t,Map)?(s=[...t],n=(e,[t,s])=>(e[t]=s,e),r={},s.reduce(n,r)):t;var s,n,r})),u=JSON.parse,f=isFinite,h=(e,t)=>e instanceof t,b=e=>null==e,g=(e,t,s)=>b(e)?s?.():t(e),T=e=>e==t||e==s,w=(e,t)=>e?.has(t)??!1,p=e=>b(e)||0==(e=>e.size)(e),L=e=>e.clear(),R=(e,t)=>e?.forEach(t),C=(e,t)=>e?.delete(t),y=e=>new Map(e),I=(e=y)=>[e(),e()],S=e=>[...e?.keys()??[]],v=(e,t)=>e?.get(t),E=(e,t)=>R(e,((e,s)=>t(s,e))),J=(e,t,s)=>b(s)?(C(e,t),e):e?.set(t,s),m=(e,t,s,n)=>(w(e,t)||(n?.(s),e.set(t,s)),v(e,t)),z=(e,t)=>{const s={},n=t??(e=>e);return R(e,((e,t)=>s[t]=n(e))),s},O=(e,t)=>{const s=y(),n=t??(e=>e);return R(e,((e,t)=>s.set(t,n(e)))),s},k=Object,F=k.keys,M=k.isFrozen,N=k.freeze,j=(e,t)=>!b(((e,t)=>g(e,(e=>e[t])))(e,t)),x=(e,t)=>delete e[t],P=(e,t)=>l(k.entries(e),(([e,s])=>t(s,e))),q=e=>o(F(e)),A=e=>new Set(e),B=(e,t)=>e?.add(t),D=(e,t,s)=>a(s)<2?B(o(s)?e:m(e,s[0],A()),t):D(m(e,s[0],y()),t,c(s)),G=e=>{const t=(s,n,...r)=>g(s,(s=>o(r)?e(s,n):l([r[0],null],(e=>t(v(s,e),n,...c(r))))));return t},H=(e,t,s,n=J)=>{const r=(a=S(e),o=e=>!j(t,e),a.filter(o));var a,o;return l(F(t),(n=>s(e,n,t[n]))),l(r,(t=>n(e,t))),e},K=t=>{const s=e(t);return T(s)||s==n&&f(t)?s:void 0},Q=(e,t,s)=>b(e)||!(e=>h(e,k)&&e.constructor==k)(e)||q(e)||M(e)?(s?.(),!1):(P(e,((s,n)=>{t(s,n)||x(e,n)})),!q(e)),U=(e,t,s)=>J(e,t,v(e,t)==-s?void 0:s),V=()=>{let t,s=0,o=0;const c=y(),f=y(),h=y(),k=y(),F=y(),M=y(),q=y(),V=y(),W=I(A),X=I(A),Y=I(),Z=I(),$=I(),_=I(),ee=I(),te=I(),[se,ne,re,le]=(e=>{let t,s=0;const n=[],r=y();return[(l,a,o=[])=>{t??=e();const c=n.pop()??""+s++;return J(r,c,[l,a,o]),D(a,c,o),c},(e,s=[],...n)=>G(R)(e,(e=>g(v(r,e),(([e])=>e(t,...s,...n)))),...s),e=>g(v(r,e),(([,t,s])=>(G(C)(t,e,...s),J(r,e),a(n)<1e3&&d(n,e),s)),(()=>[])),(e,s,n)=>g(v(r,e),(([e,,r])=>{const o=(...c)=>{const d=a(c);d==a(r)?e(t,...c,...n(c)):b(r[d])?l(s[d](...c),(e=>o(...c,e))):o(...c,r[d])};o()}))]})((()=>qe)),ae=(e,s)=>(!t||w(M,s)||ve(s))&&Q(e,((e,t)=>oe(s,t,e)),(()=>ve(s))),oe=(e,t,s,n)=>Q(n?s:de(s,e,t),((n,r)=>g(ce(e,t,r,n),(e=>(s[r]=e,!0)),(()=>!1))),(()=>ve(e,t))),ce=(e,s,n,r)=>t?g(v(v(M,e),n),(t=>K(r)!=t.type?ve(e,s,n,r,t.default):r),(()=>ve(e,s,n,r))):b(K(r))?ve(e,s,n,r):r,de=(e,t,s)=>(g(v(q,t),(([n,r])=>{R(n,((t,s)=>{j(e,s)||(e[s]=t)})),R(r,(n=>{j(e,n)||ve(t,s,n)}))})),e),ie=e=>H(M,e,((e,t,s)=>{const n=y(),r=A();H(m(M,t,y()),s,((e,t,s)=>{J(e,t,s),g(s.default,(e=>J(n,t,e)),(()=>B(r,t)))})),J(q,t,[n,r])}),((e,t)=>{J(M,t),J(q,t)})),ue=e=>H(V,e,((e,t,s)=>fe(t,s)),((e,t)=>pe(t))),fe=(e,t)=>H(m(V,e,y(),(()=>Ce(e,1))),t,((t,s,n)=>he(e,t,s,n)),((t,s)=>Le(e,t,s))),he=(e,t,s,n,r)=>H(m(t,s,y(),(()=>ye(e,s,1))),n,((t,n,r)=>be(e,s,t,n,r)),((n,l)=>Re(e,t,s,n,l,r))),be=(e,t,s,n,r)=>{w(s,n)||Ie(e,t,n,1);const l=v(s,n);r!==l&&(Se(e,t,n,l),J(s,n,r))},ge=(e,t,s,n,r)=>g(v(t,s),(t=>be(e,s,t,n,r)),(()=>he(e,t,s,de({[n]:r},e,s)))),Te=e=>{const t=""+s++;return w(e,t)?Te(e):t},we=e=>v(V,e)??fe(e,{}),pe=e=>fe(e,{}),Le=(e,t,s)=>he(e,t,s,{},!0),Re=(e,t,s,n,r,l)=>{const a=v(v(q,e)?.[0],r);if(!b(a)&&!l)return be(e,s,n,r,a);const o=t=>{Se(e,s,t,v(n,t)),Ie(e,s,t,-1),J(n,t)};b(a)?o(r):E(n,o),p(n)&&(ye(e,s,-1),p(J(t,s))&&(Ce(e,-1),J(V,e)))},Ce=(e,t)=>U(c,e,t),ye=(e,t,s)=>U(m(f,e,y()),t,s),Ie=(e,t,s,n)=>U(m(m(h,e,y()),t,y()),s,n),Se=(e,t,s,n)=>m(m(m(k,e,y()),t,y()),s,n),ve=(e,t,s,n,r)=>(d(m(m(m(F,e,y()),t,y()),s,[]),n),r),Ee=(e,t,s)=>{const n=v(v(k,e),t),r=Ne(e,t,s);return w(n,s)?[!0,v(n,s),r]:[!1,r,r]},Je=e=>p(F)||p(te[e])?0:R(e?O(F,(e=>O(e,O))):F,((t,s)=>R(t,((t,n)=>R(t,((t,r)=>ne(te[e],[s,n,r],t))))))),me=e=>{if(!p(k)){const t=p(_[e])&&p(Z[e])&&p(X[e]),s=p(ee[e])&&p($[e])&&p(Y[e])&&p(W[e]);if(!t||!s){const n=e?[O(c),O(f,O),O(h,(e=>O(e,O))),O(k,(e=>O(e,O)))]:[c,f,h,k];if(t||(R(n[2],((t,s)=>R(t,((t,n)=>{p(t)||ne(_[e],[s,n])})))),R(n[1],((t,s)=>{p(t)||ne(Z[e],[s])})),p(n[0])||ne(X[e])),!s){let t;R(n[3],((s,n)=>{let r;R(s,((s,l)=>{let a;R(s,((s,o)=>{const c=Ne(n,l,o);c!==s&&(ne(ee[e],[n,l,o],c,s,Ee),t=r=a=1)})),a&&ne($[e],[n,l],Ee)})),r&&ne(Y[e],[n],Ee)})),t&&ne(W[e],[],Ee)}}}},ze=e=>(Pe(e),qe),Oe=()=>z(V,(e=>z(e,z))),ke=()=>S(V),Fe=e=>S(v(V,e)),Me=(e,t)=>S(v(v(V,e),t)),Ne=(e,t,s)=>v(v(v(V,e),t),s),je=e=>ze((()=>(e=>Q(e,ae,ve))(e)?ue(e):0)),xe=()=>ze((()=>ue({}))),Pe=e=>{if(-1==o)return;o++;const t=e?.();return o--,0==o&&(o=1,Je(1),me(1),o=-1,Je(0),me(0),o=0,l([k,F,c,f,h],L)),t},qe={getTables:Oe,getTableIds:ke,getTable:e=>z(v(V,e),z),getRowIds:Fe,getRow:(e,t)=>z(v(v(V,e),t)),getCellIds:Me,getCell:Ne,hasTables:()=>!p(V),hasTable:e=>w(V,e),hasRow:(e,t)=>w(v(V,e),t),hasCell:(e,t,s)=>w(v(v(V,e),t),s),getJson:()=>i(V),getSchemaJson:()=>i(M),setTables:je,setTable:(e,t)=>ze((()=>ae(t,e)?fe(e,t):0)),setRow:(e,t,s)=>ze((()=>oe(e,t,s)?he(e,we(e),t,s):0)),addRow:(e,t)=>Pe((()=>{let s;return oe(e,s,t)&&he(e,we(e),s=Te(v(V,e)),t),s})),setPartialRow:(e,t,s)=>ze((()=>{if(oe(e,t,s,1)){const n=we(e);P(s,((s,r)=>ge(e,n,t,r,s)))}})),setCell:(t,s,n,l)=>ze((()=>g(ce(t,s,n,e(l)==r?l(Ne(t,s,n)):l),(e=>ge(t,we(t),s,n,e))))),setJson:e=>{try{"{}"===e?xe():je(u(e))}catch{}return qe},setSchema:e=>ze((()=>{if((t=(e=>Q(e,(e=>Q(e,(e=>{if(!Q(e,((e,t)=>["type","default"].includes(t))))return!1;const t=e.type;return!(!T(t)&&t!=n||(K(e.default)!=t&&x(e,"default"),0))})))))(e))&&(ie(e),!p(V))){const e=Oe();xe(),je(e)}})),delTables:xe,delTable:e=>ze((()=>w(V,e)?pe(e):0)),delRow:(e,t)=>ze((()=>g(v(V,e),(s=>w(s,t)?Le(e,s,t):0)))),delCell:(e,t,s,n)=>ze((()=>g(v(V,e),(r=>g(v(r,t),(l=>w(l,s)?Re(e,r,t,l,s,n):0)))))),delSchema:()=>ze((()=>{ie({}),t=!1})),transaction:Pe,forEachTable:e=>R(V,((t,s)=>e(s,(e=>R(t,((t,s)=>e(s,(e=>E(t,e))))))))),forEachRow:(e,t)=>R(v(V,e),((e,s)=>t(s,(t=>E(e,t))))),forEachCell:(e,t,s)=>E(v(v(V,e),t),s),addTablesListener:(e,t)=>se(e,W[t?1:0]),addTableIdsListener:(e,t)=>se(e,X[t?1:0]),addTableListener:(e,t,s)=>se(t,Y[s?1:0],[e]),addRowIdsListener:(e,t,s)=>se(t,Z[s?1:0],[e]),addRowListener:(e,t,s,n)=>se(s,$[n?1:0],[e,t]),addCellIdsListener:(e,t,s,n)=>se(s,_[n?1:0],[e,t]),addCellListener:(e,t,s,n,r)=>se(n,ee[r?1:0],[e,t,s]),addInvalidCellListener:(e,t,s,n,r)=>se(n,te[r?1:0],[e,t,s]),callListener:e=>(le(e,[ke,Fe,Me],(e=>b(e[2])?[]:[,,].fill(Ne(...e)))),qe),delListener:e=>(re(e),qe),getListenerStats:()=>({})};return N(qe)};export{V as createStore};
package/lib/store.js.gz CHANGED
Binary file
package/lib/tinybase.js CHANGED
@@ -1 +1 @@
1
- import{promises as e,watch as t}from"fs";const s=e=>typeof e,n=s(""),o=s(!0),r=s(0),a=s(s),i=(e,t)=>e.includes(t),d=(e,t)=>e.every(((s,n)=>0==n||t(e[n-1],s)<=0)),l=(e,t)=>e.sort(t),c=(e,t)=>e.forEach(t),u=e=>f(e,((e,t)=>e+t),0),h=e=>e.length,g=e=>0==h(e),f=(e,t,s)=>e.reduce(t,s),L=e=>e.slice(1),p=e=>JSON.stringify(e,((e,t)=>y(t,Map)?f([...t],((e,[t,s])=>(e[t]=s,e)),{}):t)),w=JSON.parse,v=Math.max,I=Math.min,S=isFinite,y=(e,t)=>e instanceof t,R=e=>null==e,T=(e,t,s)=>R(e)?s?.():t(e),b=e=>e==n||e==o,C=e=>s(e)==a,m=()=>{},E=e=>e.size,k=(e,t)=>e?.has(t)??!1,M=e=>R(e)||0==E(e),A=e=>[...e?.values()??[]],x=e=>e.clear(),D=(e,t)=>e?.forEach(t),J=(e,t)=>e?.delete(t),F=e=>new Map(e),z=(e=F)=>[e(),e()],N=e=>[...e?.keys()??[]],O=(e,t)=>e?.get(t),j=(e,t)=>D(e,((e,s)=>t(s,e))),P=(e,t,s)=>R(s)?(J(e,t),e):e?.set(t,s),B=(e,t,s,n)=>(k(e,t)||(n?.(s),e.set(t,s)),O(e,t)),H=(e,t)=>{const s={},n=t??(e=>e);return D(e,((e,t)=>s[t]=n(e))),s},W=(e,t)=>{const s=F(),n=t??(e=>e);return D(e,((e,t)=>s.set(t,n(e)))),s},q=e=>new Set(e),G=(e,t)=>e?.add(t),K=(e,t,s)=>{const n=e.hasRow,o=F(),r=F(),a=F(),i=F(),d=F(),l=t=>T(O(d,t),(s=>{D(s,e.delListener),P(d,t)})),u=e=>{P(o,e),P(r,e),P(a,e),P(i,e),l(e)};return[()=>e,()=>N(o),e=>j(r,e),e=>k(r,e),e=>O(o,e),e=>O(r,e),(e,t)=>P(r,e,t),(u,h,g,f,L)=>{const p=F(),w=F();P(o,u,h),k(r,u)||(P(r,u,t()),P(a,u,F()),P(i,u,F()));const v=O(a,u),I=O(i,u),S=t=>{const o=s=>e.getCell(h,t,s),r=O(v,t),a=n(h,t)?s(f(o,t)):void 0;if(r!=a&&P(p,t,[r,a]),!R(L)){const e=O(I,t),s=n(h,t)?L(o,t):void 0;e!=s&&P(w,t,s)}},y=e=>{g((()=>{D(p,(([,e],t)=>P(v,t,e))),D(w,((e,t)=>P(I,t,e)))}),p,w,v,I,e),x(p),x(w)};j(v,S),e.hasTable(h)&&c(e.getRowIds(h),(e=>{k(v,e)||S(e)})),y(!0),l(u),P(d,u,q([e.addRowListener(h,null,((e,t,s)=>S(s))),e.addTableListener(h,(()=>y()))]))},u,()=>j(d,u)]},Q=(e,t)=>s(e)==n?t=>t(e):e??(()=>t??""),U=e=>{const t=new WeakMap;return s=>(t.has(s)||t.set(s,e(s)),t.get(s))},V=(e,t,s)=>h(s)<2?G(g(s)?e:B(e,s[0],q()),t):V(B(e,s[0],F()),t,L(s)),X=e=>{const t=(s,n,...o)=>T(s,(s=>g(o)?e(s,n):c([o[0],null],(e=>t(O(s,e),n,...L(o))))));return t},Y=e=>{let t,s=0;const n=[],o=F();return[(r,a,i=[])=>{t??=e();const d=n.pop()??""+s++;return P(o,d,[r,a,i]),V(a,d,i),d},(e,s=[],...n)=>X(D)(e,(e=>T(O(o,e),(([e])=>e(t,...s,...n)))),...s),e=>T(O(o,e),(([,t,s])=>(X(J)(t,e,...s),P(o,e),h(n)<1e3&&n.push(e),s)),(()=>[])),(e,s,n)=>T(O(o,e),(([e,,o])=>{const r=(...a)=>{const i=h(a);i==h(o)?e(t,...a,...n(a)):R(o[i])?c(s[i](...a),(e=>r(...a,e))):r(...a,o[i])};r()}))]},Z=Object,$=Z.keys,_=Z.isFrozen,ee=Z.freeze,te=(e,t)=>!R(((e,t)=>T(e,(e=>e[t])))(e,t)),se=(e,t)=>delete e[t],ne=(e,t)=>c(Z.entries(e),(([e,s])=>t(s,e))),oe=U((e=>{let t,s,n,o=100,r=F(),a=1;const d=q(),l=F(),[u,f,L]=Y((()=>W)),p=F(),w=F(),v=[],I=[],S=(t,s)=>{a=0,e.transaction((()=>D(O(p,s),((s,n)=>D(s,((s,o)=>D(s,((s,r)=>R(s[t])?e.delCell(n,o,r,!0):e.setCell(n,o,r,s[t]))))))))),a=1},y=e=>{P(p,e),P(w,e),f(l,[e])},b=(e,t)=>c(((e,t)=>e.splice(0,t))(e,t??h(e)),y),C=()=>b(v,h(v)-o),m=e.addCellListener(null,null,null,((e,s,o,i,d,l)=>{if(a){T(t,(()=>{v.push(t),C(),b(I),t=void 0,n=1}));const e=B(r,s,F()),a=B(e,o,F()),c=B(a,i,[void 0,void 0],(e=>e[0]=l));c[1]=d,c[0]===c[1]&&M(P(a,i))&&M(P(e,o))&&M(P(r,s))&&(t=v.pop(),n=1),J()}})),E=(e="")=>(R(t)&&(t=""+s++,P(p,t,r),N(t,e),r=F(),n=1),t),A=()=>{g(v)||(I.unshift(E()),S(0,t),t=v.pop(),n=1)},x=()=>{g(I)||(v.push(t),t=I.shift(),S(1,t),n=1)},J=()=>{n&&(f(d),n=0)},z=e=>{const t=E(e);return J(),t},N=(e,t)=>(H(e)&&O(w,e)!==t&&(P(w,e,t),f(l,[e])),W),H=e=>k(p,e),W={setSize:e=>(o=e,C(),W),addCheckpoint:z,setCheckpoint:N,getStore:()=>e,getCheckpointIds:()=>[[...v],t,[...I]],forEachCheckpoint:e=>j(w,e),hasCheckpoint:H,getCheckpoint:e=>O(w,e),goBackward:()=>(A(),J(),W),goForward:()=>(x(),J(),W),goTo:e=>{const s=i(v,e)?A:i(I,e)?x:null;for(;!R(s)&&e!=t;)s();return J(),W},addCheckpointIdsListener:e=>u(e,d),addCheckpointListener:(e,t)=>u(t,l,[e]),delListener:e=>(L(e),W),clear:()=>(b(v),b(I),R(t)||y(t),t=void 0,s=0,z(),W),destroy:()=>{e.delListener(m)},getListenerStats:()=>({})};return ee(W.clear())})),re=(e,t)=>e<t?-1:1,ae=U((e=>{const t=F(),s=F(),[n,o,r,a,i,c,u,h,g,f]=K(e,F,(e=>R(e)?"":e+"")),[L,p,w]=Y((()=>I)),v=(t,s,n)=>{const o=i(t);D(n,((t,n)=>s(n,(s=>D(t,(t=>s(t,(s=>e.forEachCell(o,t,s)))))))))},I={setIndexDefinition:(e,n,o,r,a,i=re)=>{const g=R(a)?void 0:([e],[t])=>a(e,t);return h(e,n,((n,o,a,h,f,L)=>{let w=0;const v=q(),I=q(),S=c(e);if(D(o,(([e,t],s)=>{R(e)||(G(v,e),T(O(S,e),(t=>{J(t,s),M(t)&&(P(S,e),w=1)}))),R(t)||(G(v,t),k(S,t)||(P(S,t,q()),w=1),G(O(S,t),s),R(r)||G(I,t))})),n(),M(f)||(L?j(S,(e=>G(I,e))):j(a,(e=>T(O(h,e),(e=>G(I,e))))),D(I,(e=>{const t=(t,s)=>i(O(f,t),O(f,s),e),s=[...O(S,e)];d(s,t)||(P(S,e,q(l(s,t))),G(v,e))}))),(w||L)&&!R(g)){const t=[...S];d(t,g)||(u(e,F(l(t,g))),w=1)}w&&p(t,[e]),D(v,(t=>p(s,[e,t])))}),Q(o),T(r,Q)),I},delIndexDefinition:e=>(g(e),I),getStore:n,getIndexIds:o,forEachIndex:e=>r(((t,s)=>e(t,(e=>v(t,e,s))))),forEachSlice:(e,t)=>v(e,t,c(e)),hasIndex:a,hasSlice:(e,t)=>k(c(e),t),getTableId:i,getSliceIds:e=>N(c(e)),getSliceRowIds:(e,t)=>A(O(c(e),t)),addSliceIdsListener:(e,s)=>L(s,t,[e]),addSliceRowIdsListener:(e,t,n)=>L(n,s,[e,t]),delListener:e=>(w(e),I),destroy:f,getListenerStats:()=>({})};return ee(I)})),ie=F([["avg",[(e,t)=>u(e)/t,(e,t,s)=>e+(t-e)/(s+1),(e,t,s)=>e+(e-t)/(s-1),(e,t,s,n)=>e+(t-s)/n]],["max",[e=>v(...e),(e,t)=>v(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:v(t,e)]],["min",[e=>I(...e),(e,t)=>I(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:I(t,e)]],["sum",[e=>u(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,s)=>e-s+t]]]),de=U((e=>{const t=F(),[s,n,o,r,a,i,d,l,c,u]=K(e,m,(e=>isNaN(e)||R(e)||!0===e||!1===e||""===e?void 0:1*e)),[h,g,f]=Y((()=>L)),L={setMetricDefinition:(e,s,n,o,r,a,c)=>{const u=C(n)?[n,r,a,c]:O(ie,n)??O(ie,"sum");return l(e,s,((s,n,o,r,a,l)=>{let c=i(e),h=E(r);const[f,L,p,w]=u;l=l||R(c),D(n,(([e,t])=>{l||(c=R(e)?L?.(c,t,h++):R(t)?p?.(c,e,h--):w?.(c,t,e,h)),l=l||R(c)})),s(),M(r)?c=void 0:l&&(c=f(A(r),E(r))),S(c)||(c=void 0);const v=i(e);c!=v&&(d(e,c),g(t,[e],c,v))}),Q(o,1)),L},delMetricDefinition:e=>(c(e),L),getStore:s,getMetricIds:n,forEachMetric:o,hasMetric:r,getTableId:a,getMetric:i,addMetricListener:(e,s)=>h(s,t,[e]),delListener:e=>(f(e),L),destroy:u,getListenerStats:()=>({})};return ee(L)})),le=(e,t,s,n,o)=>{let r,a=0;const i={load:async s=>{if(2!=a){a=1;const n=await t();R(n)||""==n?e.setTables(s):e.setJson(n),a=0}return i},startAutoLoad:async e=>(i.stopAutoLoad(),await i.load(e),n(i.load),i),stopAutoLoad:()=>(o(),i),save:async()=>(1!=a&&(a=2,await s(e.getJson()),a=0),i),startAutoSave:async()=>(await i.stopAutoSave().save(),r=e.addTablesListener((()=>i.save())),i),stopAutoSave:()=>(T(r,e.delListener),i),getStore:()=>e,destroy:()=>i.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return ee(i)},ce=globalThis.window,ue=(e,t,s)=>{let n;return le(e,(async()=>s.getItem(t)),(async e=>s.setItem(t,e)),(e=>{n=n=>{n.storageArea===s&&n.key===t&&e()},ce.addEventListener("storage",n)}),(()=>{ce.removeEventListener("storage",n),n=void 0}))},he=(e,t)=>ue(e,t,localStorage),ge=(e,t)=>ue(e,t,sessionStorage),fe=(s,n)=>{let o;return le(s,(async()=>{try{return await e.readFile(n,"utf8")}catch{}}),(async t=>{try{await e.writeFile(n,t,"utf8")}catch{}}),(e=>{o=t(n,e)}),(()=>{o?.close(),o=void 0}))},Le=e=>e.headers.get("ETag"),pe=(e,t,s,n)=>{let o,r;return le(e,(async()=>{const e=await fetch(t);return r=Le(e),e.text()}),(async e=>await fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:e})),(e=>{o=setInterval((async()=>{const s=await fetch(t,{method:"HEAD"}),n=Le(s);R(r)||R(n)||n==r||(r=n,e())}),1e3*n)}),(()=>{T(o,clearInterval),o=void 0}))},we=U((e=>{const t=F(),s=F(),n=F(),o=F(),[r,a,i,d,l,c,u,h,g,f]=K(e,(()=>[F(),F(),F(),F()]),(e=>R(e)?void 0:e+"")),[L,p,w]=Y((()=>y)),v=(e,t,s)=>T(c(e),(([n,,o])=>{if(!k(o,t)){const r=q();if(l(e)!=S(e))G(r,t);else{let e=t;for(;!R(e)&&!k(r,e);)G(r,e),e=O(n,e)}if(s)return r;P(o,t,r)}return O(o,t)})),I=(e,t)=>T(c(e),(([,,e])=>P(e,t))),S=e=>O(t,e),y={setRelationshipDefinition:(e,r,a,i)=>(P(t,e,a),h(e,r,((t,r)=>{const a=q(),i=q(),d=q(),[l,u]=c(e);D(r,(([t,s],n)=>{R(t)||(G(i,t),T(O(u,t),(e=>{J(e,n),M(e)&&P(u,t)}))),R(s)||(G(i,s),k(u,s)||P(u,s,q()),G(O(u,s),n)),G(a,n),P(l,n,s),j(O(o,e),(t=>{k(v(e,t),n)&&G(d,t)}))})),t(),D(a,(t=>p(s,[e,t]))),D(i,(t=>p(n,[e,t]))),D(d,(t=>{I(e,t),p(o,[e,t])}))}),Q(i)),y),delRelationshipDefinition:e=>(P(t,e),g(e),y),getStore:r,getRelationshipIds:a,forEachRelationship:t=>i((s=>t(s,(t=>e.forEachRow(l(s),t))))),hasRelationship:d,getLocalTableId:l,getRemoteTableId:S,getRemoteRowId:(e,t)=>O(c(e)?.[0],t),getLocalRowIds:(e,t)=>A(O(c(e)?.[1],t)),getLinkedRowIds:(e,t)=>R(c(e))?[t]:A(v(e,t,!0)),addRemoteRowIdListener:(e,t,n)=>L(n,s,[e,t]),addLocalRowIdsListener:(e,t,s)=>L(s,n,[e,t]),addLinkedRowIdsListener:(e,t,s)=>(v(e,t),L(s,o,[e,t])),delListener:e=>(I(...w(e)),y),destroy:f,getListenerStats:()=>({})};return ee(y)})),ve=(e,t,s,n=P)=>{const o=(r=N(e),a=e=>!te(t,e),r.filter(a));var r,a;return c($(t),(n=>s(e,n,t[n]))),c(o,(t=>n(e,t))),e},Ie=e=>{const t=s(e);return b(t)||t==r&&S(e)?t:void 0},Se=(e,t)=>!(R(e)||!(e=>y(e,Z)&&e.constructor==Z)(e)||_(e))&&(ne(e,((s,n)=>{t(s,n)||se(e,n)})),!(e=>g($(e)))(e)),ye=(e,t,s)=>P(e,t,O(e,t)==-s?void 0:s),Re=()=>{let e,t=0,s=0;const n=F(),o=F(),a=F(),d=F(),l=F(),u=F(),h=F(),g=z(q),f=z(q),L=z(),v=z(),I=z(),S=z(),y=z(),[m,E,A,J]=Y((()=>Me)),G=(t,s)=>(!e||k(l,s))&&Se(t,(e=>K(s,e))),K=(e,t,s)=>Se(s?t:U(t,e),((s,n)=>T(Q(e,n,s),(e=>(t[n]=e,!0)),(()=>!1)))),Q=(t,s,n)=>e?T(O(O(l,t),s),(e=>Ie(n)!=e.type?e.default:n)):R(Ie(n))?void 0:n,U=(e,t)=>(T(O(u,t),(t=>ne(t,((t,s)=>{te(e,s)||(e[s]=t)})))),e),V=e=>ve(l,e,((e,t,s)=>{const n={};ve(B(l,t,F()),s,((e,t,s)=>{P(e,t,s),T(s.default,(e=>n[t]=e))})),P(u,t,n)}),((e,t)=>{P(l,t),P(u,t)})),X=e=>ve(h,e,((e,t,s)=>Z(t,s)),((e,t)=>de(t))),Z=(e,t)=>ve(B(h,e,F(),(()=>ue(e,1))),t,((t,s,n)=>$(e,t,s,n)),((t,s)=>le(e,t,s))),$=(e,t,s,n,o)=>ve(B(t,s,F(),(()=>he(e,s,1))),n,((t,n,o)=>_(e,s,t,n,o)),((n,r)=>ce(e,t,s,n,r,o))),_=(e,t,s,n,o)=>{k(s,n)||ge(e,t,n,1);const r=O(s,n);o!==r&&(fe(e,t,n,r),P(s,n,o))},oe=(e,t,s)=>ke((()=>$(e,ie(e),t,s))),re=(e,t,s,n,o)=>T(O(t,s),(t=>_(e,s,t,n,o)),(()=>$(e,t,s,U({[n]:o},e)))),ae=e=>{const s=""+t++;return k(e,s)?ae(e):s},ie=e=>O(h,e)??Z(e,{}),de=e=>Z(e,{}),le=(e,t,s)=>$(e,t,s,{},!0),ce=(e,t,s,n,o,r)=>{const a=O(u,e)?.[o];if(!R(a)&&!r)return _(e,s,n,o,a);const i=t=>{fe(e,s,t,O(n,t)),ge(e,s,t,-1),P(n,t)};R(a)?i(o):j(n,i),M(n)&&(he(e,s,-1),M(P(t,s))&&(ue(e,-1),P(h,e)))},ue=(e,t)=>ye(n,e,t),he=(e,t,s)=>ye(B(o,e,F()),t,s),ge=(e,t,s,n)=>ye(B(B(a,e,F()),t,F()),s,n),fe=(e,t,s,n)=>B(B(B(d,e,F()),t,F()),s,n),Le=(e,t,s)=>{const n=O(O(d,e),t),o=Ce(e,t,s);return k(n,s)?[!0,O(n,s),o]:[!1,o,o]},pe=e=>{const t=M(S[e])&&M(v[e])&&M(f[e]),s=M(y[e])&&M(I[e])&&M(L[e])&&M(g[e]);if(t&&s)return;const r=e?[W(n),W(o,W),W(a,(e=>W(e,W))),W(d,(e=>W(e,W)))]:[n,o,a,d];if(t||(D(r[2],((t,s)=>D(t,((t,n)=>{M(t)||E(S[e],[s,n])})))),D(r[1],((t,s)=>{M(t)||E(v[e],[s])})),M(r[0])||E(f[e])),!s){let t;D(r[3],((s,n)=>{let o;D(s,((s,r)=>{let a;D(s,((s,i)=>{const d=Ce(n,r,i);d!==s&&(E(y[e],[n,r,i],d,s,Le),t=o=a=1)})),a&&E(I[e],[n,r],Le)})),o&&E(L[e],[n],Le)})),t&&E(g[e],[],Le)}},we=()=>H(h,(e=>H(e,H))),Re=()=>N(h),Te=e=>N(O(h,e)),be=(e,t)=>N(O(O(h,e),t)),Ce=(e,t,s)=>O(O(O(h,e),t),s),me=e=>((e=>Se(e,G))(e)&&ke((()=>X(e))),Me),Ee=()=>(ke((()=>X({}))),Me),ke=e=>{if(-1==s)return;s++;const t=e();return s--,0==s&&(s=1,pe(1),s=-1,pe(0),s=0,c([d,n,o,a],x)),t},Me={getTables:we,getTableIds:Re,getTable:e=>H(O(h,e),H),getRowIds:Te,getRow:(e,t)=>H(O(O(h,e),t)),getCellIds:be,getCell:Ce,hasTables:()=>!M(h),hasTable:e=>k(h,e),hasRow:(e,t)=>k(O(h,e),t),hasCell:(e,t,s)=>k(O(O(h,e),t),s),getJson:()=>p(h),getSchemaJson:()=>p(l),setTables:me,setTable:(e,t)=>(G(t,e)&&ke((()=>Z(e,t))),Me),setRow:(e,t,s)=>(K(e,s)&&oe(e,t,s),Me),addRow:(e,t)=>{let s;return K(e,t)&&(s=ae(O(h,e)),oe(e,s,t)),s},setPartialRow:(e,t,s)=>(K(e,s,1)&&ke((()=>{const n=ie(e);ne(s,((s,o)=>re(e,n,t,o,s)))})),Me),setCell:(e,t,s,n)=>(T(Q(e,s,C(n)?n(Ce(e,t,s)):n),(n=>ke((()=>re(e,ie(e),t,s,n))))),Me),setJson:e=>{try{"{}"===e?Ee():me(w(e))}catch{}return Me},setSchema:t=>{if((e=(e=>Se(e,(e=>Se(e,(e=>{if(!Se(e,((e,t)=>i(["type","default"],t))))return!1;const t=e.type;return!(!b(t)&&t!=r||(Ie(e.default)!=t&&se(e,"default"),0))})))))(t))&&(V(t),!M(h))){const e=we();Ee(),me(e)}return Me},delTables:Ee,delTable:e=>(k(h,e)&&ke((()=>de(e))),Me),delRow:(e,t)=>(T(O(h,e),(s=>{k(s,t)&&ke((()=>le(e,s,t)))})),Me),delCell:(e,t,s,n)=>(T(O(h,e),(o=>T(O(o,t),(r=>{k(r,s)&&ke((()=>ce(e,o,t,r,s,n)))})))),Me),delSchema:()=>(V({}),e=!1,Me),transaction:ke,forEachTable:e=>D(h,((t,s)=>e(s,(e=>D(t,((t,s)=>e(s,(e=>j(t,e))))))))),forEachRow:(e,t)=>D(O(h,e),((e,s)=>t(s,(t=>j(e,t))))),forEachCell:(e,t,s)=>j(O(O(h,e),t),s),addTablesListener:(e,t)=>m(e,g[t?1:0]),addTableIdsListener:(e,t)=>m(e,f[t?1:0]),addTableListener:(e,t,s)=>m(t,L[s?1:0],[e]),addRowIdsListener:(e,t,s)=>m(t,v[s?1:0],[e]),addRowListener:(e,t,s,n)=>m(s,I[n?1:0],[e,t]),addCellIdsListener:(e,t,s,n)=>m(s,S[n?1:0],[e,t]),addCellListener:(e,t,s,n,o)=>m(n,y[o?1:0],[e,t,s]),callListener:e=>(J(e,[Re,Te,be],(e=>R(e[2])?[]:[,,].fill(Ce(...e)))),Me),delListener:e=>(A(e),Me),getListenerStats:()=>({})};return ee(Me)};export{oe as createCheckpoints,le as createCustomPersister,fe as createFilePersister,ae as createIndexes,he as createLocalPersister,de as createMetrics,we as createRelationships,pe as createRemotePersister,ge as createSessionPersister,Re as createStore,re as defaultSorter};
1
+ import{promises as e,watch as t}from"fs";const s=e=>typeof e,n=s(""),o=s(!0),a=s(0),r=s(s),i=(e,t)=>e.includes(t),d=(e,t)=>e.every(((s,n)=>0==n||t(e[n-1],s)<=0)),l=(e,t)=>e.sort(t),c=(e,t)=>e.forEach(t),u=e=>g(e,((e,t)=>e+t),0),h=e=>e.length,f=e=>0==h(e),g=(e,t,s)=>e.reduce(t,s),L=e=>e.slice(1),w=(e,t)=>e.push(t),v=e=>e.pop(),p=e=>JSON.stringify(e,((e,t)=>T(t,Map)?g([...t],((e,[t,s])=>(e[t]=s,e)),{}):t)),I=JSON.parse,S=Math.max,y=Math.min,R=isFinite,T=(e,t)=>e instanceof t,b=e=>null==e,C=(e,t,s)=>b(e)?s?.():t(e),m=e=>e==n||e==o,E=e=>s(e)==r,k=()=>{},M=e=>e.size,A=(e,t)=>e?.has(t)??!1,x=e=>b(e)||0==M(e),D=e=>[...e?.values()??[]],J=e=>e.clear(),F=(e,t)=>e?.forEach(t),z=(e,t)=>e?.delete(t),N=e=>new Map(e),O=(e=N)=>[e(),e()],j=e=>[...e?.keys()??[]],P=(e,t)=>e?.get(t),B=(e,t)=>F(e,((e,s)=>t(s,e))),H=(e,t,s)=>b(s)?(z(e,t),e):e?.set(t,s),W=(e,t,s,n)=>(A(e,t)||(n?.(s),e.set(t,s)),P(e,t)),q=(e,t)=>{const s={},n=t??(e=>e);return F(e,((e,t)=>s[t]=n(e))),s},G=(e,t)=>{const s=N(),n=t??(e=>e);return F(e,((e,t)=>s.set(t,n(e)))),s},K=e=>new Set(e),Q=(e,t)=>e?.add(t),U=(e,t,s)=>{const n=e.hasRow,o=N(),a=N(),r=N(),i=N(),d=N(),l=t=>C(P(d,t),(s=>{F(s,e.delListener),H(d,t)})),u=e=>{H(o,e),H(a,e),H(r,e),H(i,e),l(e)};return[()=>e,()=>j(o),e=>B(a,e),e=>A(a,e),e=>P(o,e),e=>P(a,e),(e,t)=>H(a,e,t),(u,h,f,g,L)=>{const w=N(),v=N();H(o,u,h),A(a,u)||(H(a,u,t()),H(r,u,N()),H(i,u,N()));const p=P(r,u),I=P(i,u),S=t=>{const o=s=>e.getCell(h,t,s),a=P(p,t),r=n(h,t)?s(g(o,t)):void 0;if(a!=r&&H(w,t,[a,r]),!b(L)){const e=P(I,t),s=n(h,t)?L(o,t):void 0;e!=s&&H(v,t,s)}},y=e=>{f((()=>{F(w,(([,e],t)=>H(p,t,e))),F(v,((e,t)=>H(I,t,e)))}),w,v,p,I,e),J(w),J(v)};B(p,S),e.hasTable(h)&&c(e.getRowIds(h),(e=>{A(p,e)||S(e)})),y(!0),l(u),H(d,u,K([e.addRowListener(h,null,((e,t,s)=>S(s))),e.addTableListener(h,(()=>y()))]))},u,()=>B(d,u)]},V=(e,t)=>s(e)==n?t=>t(e):e??(()=>t??""),X=e=>{const t=new WeakMap;return s=>(t.has(s)||t.set(s,e(s)),t.get(s))},Y=(e,t,s)=>h(s)<2?Q(f(s)?e:W(e,s[0],K()),t):Y(W(e,s[0],N()),t,L(s)),Z=e=>{const t=(s,n,...o)=>C(s,(s=>f(o)?e(s,n):c([o[0],null],(e=>t(P(s,e),n,...L(o))))));return t},$=e=>{let t,s=0;const n=[],o=N();return[(a,r,i=[])=>{t??=e();const d=v(n)??""+s++;return H(o,d,[a,r,i]),Y(r,d,i),d},(e,s=[],...n)=>Z(F)(e,(e=>C(P(o,e),(([e])=>e(t,...s,...n)))),...s),e=>C(P(o,e),(([,t,s])=>(Z(z)(t,e,...s),H(o,e),h(n)<1e3&&w(n,e),s)),(()=>[])),(e,s,n)=>C(P(o,e),(([e,,o])=>{const a=(...r)=>{const i=h(r);i==h(o)?e(t,...r,...n(r)):b(o[i])?c(s[i](...r),(e=>a(...r,e))):a(...r,o[i])};a()}))]},_=Object,ee=_.keys,te=_.isFrozen,se=_.freeze,ne=(e,t)=>!b(((e,t)=>C(e,(e=>e[t])))(e,t)),oe=(e,t)=>delete e[t],ae=(e,t)=>c(_.entries(e),(([e,s])=>t(s,e))),re=e=>f(ee(e)),ie=X((e=>{let t,s,n,o=100,a=N(),r=1;const d=K(),l=N(),[u,g,L]=$((()=>G)),p=N(),I=N(),S=[],y=[],R=(t,s)=>{r=0,e.transaction((()=>F(P(p,s),((s,n)=>F(s,((s,o)=>F(s,((s,a)=>b(s[t])?e.delCell(n,o,a,!0):e.setCell(n,o,a,s[t]))))))))),r=1},T=e=>{H(p,e),H(I,e),g(l,[e])},m=(e,t)=>c(((e,t)=>e.splice(0,t))(e,t??h(e)),T),E=()=>m(S,h(S)-o),k=e.addCellListener(null,null,null,((e,s,o,i,d,l)=>{if(r){C(t,(()=>{w(S,t),E(),m(y),t=void 0,n=1}));const e=W(a,s,N()),r=W(e,o,N()),c=W(r,i,[void 0,void 0],(e=>e[0]=l));c[1]=d,c[0]===c[1]&&x(H(r,i))&&x(H(e,o))&&x(H(a,s))&&(t=v(S),n=1),z()}})),M=(e="")=>(b(t)&&(t=""+s++,H(p,t,a),j(t,e),a=N(),n=1),t),D=()=>{f(S)||(y.unshift(M()),R(0,t),t=v(S),n=1)},J=()=>{f(y)||(w(S,t),t=y.shift(),R(1,t),n=1)},z=()=>{n&&(g(d),n=0)},O=e=>{const t=M(e);return z(),t},j=(e,t)=>(q(e)&&P(I,e)!==t&&(H(I,e,t),g(l,[e])),G),q=e=>A(p,e),G={setSize:e=>(o=e,E(),G),addCheckpoint:O,setCheckpoint:j,getStore:()=>e,getCheckpointIds:()=>[[...S],t,[...y]],forEachCheckpoint:e=>B(I,e),hasCheckpoint:q,getCheckpoint:e=>P(I,e),goBackward:()=>(D(),z(),G),goForward:()=>(J(),z(),G),goTo:e=>{const s=i(S,e)?D:i(y,e)?J:null;for(;!b(s)&&e!=t;)s();return z(),G},addCheckpointIdsListener:e=>u(e,d),addCheckpointListener:(e,t)=>u(t,l,[e]),delListener:e=>(L(e),G),clear:()=>(m(S),m(y),b(t)||T(t),t=void 0,s=0,O(),G),destroy:()=>{e.delListener(k)},getListenerStats:()=>({})};return se(G.clear())})),de=(e,t)=>e<t?-1:1,le=X((e=>{const t=N(),s=N(),[n,o,a,r,i,c,u,h,f,g]=U(e,N,(e=>b(e)?"":e+"")),[L,w,v]=$((()=>I)),p=(t,s,n)=>{const o=i(t);F(n,((t,n)=>s(n,(s=>F(t,(t=>s(t,(s=>e.forEachCell(o,t,s)))))))))},I={setIndexDefinition:(e,n,o,a,r,i=de)=>{const f=b(r)?void 0:([e],[t])=>r(e,t);return h(e,n,((n,o,r,h,g,L)=>{let v=0;const p=K(),I=K(),S=c(e);if(F(o,(([e,t],s)=>{b(e)||(Q(p,e),C(P(S,e),(t=>{z(t,s),x(t)&&(H(S,e),v=1)}))),b(t)||(Q(p,t),A(S,t)||(H(S,t,K()),v=1),Q(P(S,t),s),b(a)||Q(I,t))})),n(),x(g)||(L?B(S,(e=>Q(I,e))):B(r,(e=>C(P(h,e),(e=>Q(I,e))))),F(I,(e=>{const t=(t,s)=>i(P(g,t),P(g,s),e),s=[...P(S,e)];d(s,t)||(H(S,e,K(l(s,t))),Q(p,e))}))),(v||L)&&!b(f)){const t=[...S];d(t,f)||(u(e,N(l(t,f))),v=1)}v&&w(t,[e]),F(p,(t=>w(s,[e,t])))}),V(o),C(a,V)),I},delIndexDefinition:e=>(f(e),I),getStore:n,getIndexIds:o,forEachIndex:e=>a(((t,s)=>e(t,(e=>p(t,e,s))))),forEachSlice:(e,t)=>p(e,t,c(e)),hasIndex:r,hasSlice:(e,t)=>A(c(e),t),getTableId:i,getSliceIds:e=>j(c(e)),getSliceRowIds:(e,t)=>D(P(c(e),t)),addSliceIdsListener:(e,s)=>L(s,t,[e]),addSliceRowIdsListener:(e,t,n)=>L(n,s,[e,t]),delListener:e=>(v(e),I),destroy:g,getListenerStats:()=>({})};return se(I)})),ce=N([["avg",[(e,t)=>u(e)/t,(e,t,s)=>e+(t-e)/(s+1),(e,t,s)=>e+(e-t)/(s-1),(e,t,s,n)=>e+(t-s)/n]],["max",[e=>S(...e),(e,t)=>S(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:S(t,e)]],["min",[e=>y(...e),(e,t)=>y(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:y(t,e)]],["sum",[e=>u(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,s)=>e-s+t]]]),ue=X((e=>{const t=N(),[s,n,o,a,r,i,d,l,c,u]=U(e,k,(e=>isNaN(e)||b(e)||!0===e||!1===e||""===e?void 0:1*e)),[h,f,g]=$((()=>L)),L={setMetricDefinition:(e,s,n,o,a,r,c)=>{const u=E(n)?[n,a,r,c]:P(ce,n)??P(ce,"sum");return l(e,s,((s,n,o,a,r,l)=>{let c=i(e),h=M(a);const[g,L,w,v]=u;l=l||b(c),F(n,(([e,t])=>{l||(c=b(e)?L?.(c,t,h++):b(t)?w?.(c,e,h--):v?.(c,t,e,h)),l=l||b(c)})),s(),x(a)?c=void 0:l&&(c=g(D(a),M(a))),R(c)||(c=void 0);const p=i(e);c!=p&&(d(e,c),f(t,[e],c,p))}),V(o,1)),L},delMetricDefinition:e=>(c(e),L),getStore:s,getMetricIds:n,forEachMetric:o,hasMetric:a,getTableId:r,getMetric:i,addMetricListener:(e,s)=>h(s,t,[e]),delListener:e=>(g(e),L),destroy:u,getListenerStats:()=>({})};return se(L)})),he=(e,t,s,n,o)=>{let a,r=0;const i={load:async s=>{if(2!=r){r=1;const n=await t();b(n)||""==n?e.setTables(s):e.setJson(n),r=0}return i},startAutoLoad:async e=>(i.stopAutoLoad(),await i.load(e),n(i.load),i),stopAutoLoad:()=>(o(),i),save:async()=>(1!=r&&(r=2,await s(e.getJson()),r=0),i),startAutoSave:async()=>(await i.stopAutoSave().save(),a=e.addTablesListener((()=>i.save())),i),stopAutoSave:()=>(C(a,e.delListener),i),getStore:()=>e,destroy:()=>i.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return se(i)},fe=globalThis.window,ge=(e,t,s)=>{let n;return he(e,(async()=>s.getItem(t)),(async e=>s.setItem(t,e)),(e=>{n=n=>{n.storageArea===s&&n.key===t&&e()},fe.addEventListener("storage",n)}),(()=>{fe.removeEventListener("storage",n),n=void 0}))},Le=(e,t)=>ge(e,t,localStorage),we=(e,t)=>ge(e,t,sessionStorage),ve=(s,n)=>{let o;return he(s,(async()=>{try{return await e.readFile(n,"utf8")}catch{}}),(async t=>{try{await e.writeFile(n,t,"utf8")}catch{}}),(e=>{o=t(n,e)}),(()=>{o?.close(),o=void 0}))},pe=e=>e.headers.get("ETag"),Ie=(e,t,s,n)=>{let o,a;return he(e,(async()=>{const e=await fetch(t);return a=pe(e),e.text()}),(async e=>await fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:e})),(e=>{o=setInterval((async()=>{const s=await fetch(t,{method:"HEAD"}),n=pe(s);b(a)||b(n)||n==a||(a=n,e())}),1e3*n)}),(()=>{C(o,clearInterval),o=void 0}))},Se=X((e=>{const t=N(),s=N(),n=N(),o=N(),[a,r,i,d,l,c,u,h,f,g]=U(e,(()=>[N(),N(),N(),N()]),(e=>b(e)?void 0:e+"")),[L,w,v]=$((()=>y)),p=(e,t,s)=>C(c(e),(([n,,o])=>{if(!A(o,t)){const a=K();if(l(e)!=S(e))Q(a,t);else{let e=t;for(;!b(e)&&!A(a,e);)Q(a,e),e=P(n,e)}if(s)return a;H(o,t,a)}return P(o,t)})),I=(e,t)=>C(c(e),(([,,e])=>H(e,t))),S=e=>P(t,e),y={setRelationshipDefinition:(e,a,r,i)=>(H(t,e,r),h(e,a,((t,a)=>{const r=K(),i=K(),d=K(),[l,u]=c(e);F(a,(([t,s],n)=>{b(t)||(Q(i,t),C(P(u,t),(e=>{z(e,n),x(e)&&H(u,t)}))),b(s)||(Q(i,s),A(u,s)||H(u,s,K()),Q(P(u,s),n)),Q(r,n),H(l,n,s),B(P(o,e),(t=>{A(p(e,t),n)&&Q(d,t)}))})),t(),F(r,(t=>w(s,[e,t]))),F(i,(t=>w(n,[e,t]))),F(d,(t=>{I(e,t),w(o,[e,t])}))}),V(i)),y),delRelationshipDefinition:e=>(H(t,e),f(e),y),getStore:a,getRelationshipIds:r,forEachRelationship:t=>i((s=>t(s,(t=>e.forEachRow(l(s),t))))),hasRelationship:d,getLocalTableId:l,getRemoteTableId:S,getRemoteRowId:(e,t)=>P(c(e)?.[0],t),getLocalRowIds:(e,t)=>D(P(c(e)?.[1],t)),getLinkedRowIds:(e,t)=>b(c(e))?[t]:D(p(e,t,!0)),addRemoteRowIdListener:(e,t,n)=>L(n,s,[e,t]),addLocalRowIdsListener:(e,t,s)=>L(s,n,[e,t]),addLinkedRowIdsListener:(e,t,s)=>(p(e,t),L(s,o,[e,t])),delListener:e=>(I(...v(e)),y),destroy:g,getListenerStats:()=>({})};return se(y)})),ye=(e,t,s,n=H)=>{const o=(a=j(e),r=e=>!ne(t,e),a.filter(r));var a,r;return c(ee(t),(n=>s(e,n,t[n]))),c(o,(t=>n(e,t))),e},Re=e=>{const t=s(e);return m(t)||t==a&&R(e)?t:void 0},Te=(e,t,s)=>b(e)||!(e=>T(e,_)&&e.constructor==_)(e)||re(e)||te(e)?(s?.(),!1):(ae(e,((s,n)=>{t(s,n)||oe(e,n)})),!re(e)),be=(e,t,s)=>H(e,t,P(e,t)==-s?void 0:s),Ce=()=>{let e,t=0,s=0;const n=N(),o=N(),r=N(),d=N(),l=N(),u=N(),h=N(),f=N(),g=O(K),L=O(K),v=O(),S=O(),y=O(),R=O(),T=O(),k=O(),[M,D,z,U]=$((()=>ze)),V=(t,s)=>(!e||A(u,s)||pe(s))&&Te(t,((e,t)=>X(s,t,e)),(()=>pe(s))),X=(e,t,s,n)=>Te(n?s:Z(s,e,t),((n,o)=>C(Y(e,t,o,n),(e=>(s[o]=e,!0)),(()=>!1))),(()=>pe(e,t))),Y=(t,s,n,o)=>e?C(P(P(u,t),n),(e=>Re(o)!=e.type?pe(t,s,n,o,e.default):o),(()=>pe(t,s,n,o))):b(Re(o))?pe(t,s,n,o):o,Z=(e,t,s)=>(C(P(h,t),(([n,o])=>{F(n,((t,s)=>{ne(e,s)||(e[s]=t)})),F(o,(n=>{ne(e,n)||pe(t,s,n)}))})),e),_=e=>ye(u,e,((e,t,s)=>{const n=N(),o=K();ye(W(u,t,N()),s,((e,t,s)=>{H(e,t,s),C(s.default,(e=>H(n,t,e)),(()=>Q(o,t)))})),H(h,t,[n,o])}),((e,t)=>{H(u,t),H(h,t)})),ee=e=>ye(f,e,((e,t,s)=>te(t,s)),((e,t)=>ue(t))),te=(e,t)=>ye(W(f,e,N(),(()=>ge(e,1))),t,((t,s,n)=>re(e,t,s,n)),((t,s)=>he(e,t,s))),re=(e,t,s,n,o)=>ye(W(t,s,N(),(()=>Le(e,s,1))),n,((t,n,o)=>ie(e,s,t,n,o)),((n,a)=>fe(e,t,s,n,a,o))),ie=(e,t,s,n,o)=>{A(s,n)||we(e,t,n,1);const a=P(s,n);o!==a&&(ve(e,t,n,a),H(s,n,o))},de=(e,t,s,n,o)=>C(P(t,s),(t=>ie(e,s,t,n,o)),(()=>re(e,t,s,Z({[n]:o},e,s)))),le=e=>{const s=""+t++;return A(e,s)?le(e):s},ce=e=>P(f,e)??te(e,{}),ue=e=>te(e,{}),he=(e,t,s)=>re(e,t,s,{},!0),fe=(e,t,s,n,o,a)=>{const r=P(P(h,e)?.[0],o);if(!b(r)&&!a)return ie(e,s,n,o,r);const i=t=>{ve(e,s,t,P(n,t)),we(e,s,t,-1),H(n,t)};b(r)?i(o):B(n,i),x(n)&&(Le(e,s,-1),x(H(t,s))&&(ge(e,-1),H(f,e)))},ge=(e,t)=>be(n,e,t),Le=(e,t,s)=>be(W(o,e,N()),t,s),we=(e,t,s,n)=>be(W(W(r,e,N()),t,N()),s,n),ve=(e,t,s,n)=>W(W(W(d,e,N()),t,N()),s,n),pe=(e,t,s,n,o)=>(w(W(W(W(l,e,N()),t,N()),s,[]),n),o),Ie=(e,t,s)=>{const n=P(P(d,e),t),o=xe(e,t,s);return A(n,s)?[!0,P(n,s),o]:[!1,o,o]},Se=e=>x(l)||x(k[e])?0:F(e?G(l,(e=>G(e,G))):l,((t,s)=>F(t,((t,n)=>F(t,((t,o)=>D(k[e],[s,n,o],t))))))),Ce=e=>{if(!x(d)){const t=x(R[e])&&x(S[e])&&x(L[e]),s=x(T[e])&&x(y[e])&&x(v[e])&&x(g[e]);if(!t||!s){const a=e?[G(n),G(o,G),G(r,(e=>G(e,G))),G(d,(e=>G(e,G)))]:[n,o,r,d];if(t||(F(a[2],((t,s)=>F(t,((t,n)=>{x(t)||D(R[e],[s,n])})))),F(a[1],((t,s)=>{x(t)||D(S[e],[s])})),x(a[0])||D(L[e])),!s){let t;F(a[3],((s,n)=>{let o;F(s,((s,a)=>{let r;F(s,((s,i)=>{const d=xe(n,a,i);d!==s&&(D(T[e],[n,a,i],d,s,Ie),t=o=r=1)})),r&&D(y[e],[n,a],Ie)})),o&&D(v[e],[n],Ie)})),t&&D(g[e],[],Ie)}}}},me=e=>(Fe(e),ze),Ee=()=>q(f,(e=>q(e,q))),ke=()=>j(f),Me=e=>j(P(f,e)),Ae=(e,t)=>j(P(P(f,e),t)),xe=(e,t,s)=>P(P(P(f,e),t),s),De=e=>me((()=>(e=>Te(e,V,pe))(e)?ee(e):0)),Je=()=>me((()=>ee({}))),Fe=e=>{if(-1==s)return;s++;const t=e?.();return s--,0==s&&(s=1,Se(1),Ce(1),s=-1,Se(0),Ce(0),s=0,c([d,l,n,o,r],J)),t},ze={getTables:Ee,getTableIds:ke,getTable:e=>q(P(f,e),q),getRowIds:Me,getRow:(e,t)=>q(P(P(f,e),t)),getCellIds:Ae,getCell:xe,hasTables:()=>!x(f),hasTable:e=>A(f,e),hasRow:(e,t)=>A(P(f,e),t),hasCell:(e,t,s)=>A(P(P(f,e),t),s),getJson:()=>p(f),getSchemaJson:()=>p(u),setTables:De,setTable:(e,t)=>me((()=>V(t,e)?te(e,t):0)),setRow:(e,t,s)=>me((()=>X(e,t,s)?re(e,ce(e),t,s):0)),addRow:(e,t)=>Fe((()=>{let s;return X(e,s,t)&&re(e,ce(e),s=le(P(f,e)),t),s})),setPartialRow:(e,t,s)=>me((()=>{if(X(e,t,s,1)){const n=ce(e);ae(s,((s,o)=>de(e,n,t,o,s)))}})),setCell:(e,t,s,n)=>me((()=>C(Y(e,t,s,E(n)?n(xe(e,t,s)):n),(n=>de(e,ce(e),t,s,n))))),setJson:e=>{try{"{}"===e?Je():De(I(e))}catch{}return ze},setSchema:t=>me((()=>{if((e=(e=>Te(e,(e=>Te(e,(e=>{if(!Te(e,((e,t)=>i(["type","default"],t))))return!1;const t=e.type;return!(!m(t)&&t!=a||(Re(e.default)!=t&&oe(e,"default"),0))})))))(t))&&(_(t),!x(f))){const e=Ee();Je(),De(e)}})),delTables:Je,delTable:e=>me((()=>A(f,e)?ue(e):0)),delRow:(e,t)=>me((()=>C(P(f,e),(s=>A(s,t)?he(e,s,t):0)))),delCell:(e,t,s,n)=>me((()=>C(P(f,e),(o=>C(P(o,t),(a=>A(a,s)?fe(e,o,t,a,s,n):0)))))),delSchema:()=>me((()=>{_({}),e=!1})),transaction:Fe,forEachTable:e=>F(f,((t,s)=>e(s,(e=>F(t,((t,s)=>e(s,(e=>B(t,e))))))))),forEachRow:(e,t)=>F(P(f,e),((e,s)=>t(s,(t=>B(e,t))))),forEachCell:(e,t,s)=>B(P(P(f,e),t),s),addTablesListener:(e,t)=>M(e,g[t?1:0]),addTableIdsListener:(e,t)=>M(e,L[t?1:0]),addTableListener:(e,t,s)=>M(t,v[s?1:0],[e]),addRowIdsListener:(e,t,s)=>M(t,S[s?1:0],[e]),addRowListener:(e,t,s,n)=>M(s,y[n?1:0],[e,t]),addCellIdsListener:(e,t,s,n)=>M(s,R[n?1:0],[e,t]),addCellListener:(e,t,s,n,o)=>M(n,T[o?1:0],[e,t,s]),addInvalidCellListener:(e,t,s,n,o)=>M(n,k[o?1:0],[e,t,s]),callListener:e=>(U(e,[ke,Me,Ae],(e=>b(e[2])?[]:[,,].fill(xe(...e)))),ze),delListener:e=>(z(e),ze),getListenerStats:()=>({})};return se(ze)};export{ie as createCheckpoints,he as createCustomPersister,ve as createFilePersister,le as createIndexes,Le as createLocalPersister,ue as createMetrics,Se as createRelationships,Ie as createRemotePersister,we as createSessionPersister,Ce as createStore,de as defaultSorter};
Binary file
@@ -1 +1 @@
1
- var e,t;e=this,t=function(e){"use strict";const t=(e,t)=>e.includes(t),n=(e,t)=>e.forEach(t),o=e=>e.length,s=e=>0==o(e),r=e=>e.slice(1),i=e=>null==e,c=(e,t,n)=>i(e)?n?.():t(e),l=(e,t)=>e?.has(t)??!1,d=e=>i(e)||0==(e=>e.size)(e),a=(e,t)=>e?.forEach(t),p=(e,t)=>e?.delete(t),u=e=>new Map(e),h=(e,t)=>e?.get(t),f=(e,t,n)=>i(n)?(p(e,t),e):e?.set(t,n),C=(e,t,n,o)=>(l(e,t)||(o?.(n),e.set(t,n)),h(e,t)),g=e=>new Set(e),k=(e,t,n)=>o(n)<2?((e,t)=>e?.add(t))(s(n)?e:C(e,n[0],g()),t):k(C(e,n[0],u()),t,r(n)),v=e=>{const t=(o,i,...l)=>c(o,(o=>s(l)?e(o,i):n([l[0],null],(e=>t(h(o,e),i,...r(l))))));return t},y=Object.freeze,L=(e=>{const t=new WeakMap;return n=>(t.has(n)||t.set(n,e(n)),t.get(n))})((e=>{let r,L,b,w=100,S=u(),T=1;const j=g(),x=u(),[z,E,M]=(e=>{let t,s=0;const r=[],l=u();return[(n,o,i=[])=>{t??=e();const c=r.pop()??""+s++;return f(l,c,[n,o,i]),k(o,c,i),c},(e,n=[],...o)=>v(a)(e,(e=>c(h(l,e),(([e])=>e(t,...n,...o)))),...n),e=>c(h(l,e),(([,t,n])=>(v(p)(t,e,...n),f(l,e),o(r)<1e3&&r.push(e),n)),(()=>[])),(e,s,r)=>c(h(l,e),(([e,,c])=>{const l=(...d)=>{const a=o(d);a==o(c)?e(t,...d,...r(d)):i(c[a])?n(s[a](...d),(e=>l(...d,e))):l(...d,c[a])};l()}))]})((()=>Q)),m=u(),B=u(),I=[],O=[],_=(t,n)=>{T=0,e.transaction((()=>a(h(m,n),((n,o)=>a(n,((n,s)=>a(n,((n,r)=>i(n[t])?e.delCell(o,s,r,!0):e.setCell(o,s,r,n[t]))))))))),T=1},F=e=>{f(m,e),f(B,e),E(x,[e])},P=(e,t)=>n(((e,t)=>e.splice(0,t))(e,t??o(e)),F),W=()=>P(I,o(I)-w),q=e.addCellListener(null,null,null,((e,t,n,o,s,i)=>{if(T){c(r,(()=>{I.push(r),W(),P(O),r=void 0,b=1}));const e=C(S,t,u()),l=C(e,n,u()),a=C(l,o,[void 0,void 0],(e=>e[0]=i));a[1]=s,a[0]===a[1]&&d(f(l,o))&&d(f(e,n))&&d(f(S,t))&&(r=I.pop(),b=1),H()}})),A=(e="")=>(i(r)&&(r=""+L++,f(m,r,S),K(r,e),S=u(),b=1),r),D=()=>{s(I)||(O.unshift(A()),_(0,r),r=I.pop(),b=1)},G=()=>{s(O)||(I.push(r),r=O.shift(),_(1,r),b=1)},H=()=>{b&&(E(j),b=0)},J=e=>{const t=A(e);return H(),t},K=(e,t)=>(N(e)&&h(B,e)!==t&&(f(B,e,t),E(x,[e])),Q),N=e=>l(m,e),Q={setSize:e=>(w=e,W(),Q),addCheckpoint:J,setCheckpoint:K,getStore:()=>e,getCheckpointIds:()=>[[...I],r,[...O]],forEachCheckpoint:e=>{return t=e,a(B,((e,n)=>t(n,e)));var t},hasCheckpoint:N,getCheckpoint:e=>h(B,e),goBackward:()=>(D(),H(),Q),goForward:()=>(G(),H(),Q),goTo:e=>{const n=t(I,e)?D:t(O,e)?G:null;for(;!i(n)&&e!=r;)n();return H(),Q},addCheckpointIdsListener:e=>z(e,j),addCheckpointListener:(e,t)=>z(t,x,[e]),delListener:e=>(M(e),Q),clear:()=>(P(I),P(O),i(r)||F(r),r=void 0,L=0,J(),Q),destroy:()=>{e.delListener(q)},getListenerStats:()=>({})};return y(Q.clear())}));e.createCheckpoints=L,Object.defineProperty(e,"__esModule",{value:!0})},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseCheckpoints={});
1
+ var e,t;e=this,t=function(e){"use strict";const t=(e,t)=>e.includes(t),n=(e,t)=>e.forEach(t),o=e=>e.length,s=e=>0==o(e),r=e=>e.slice(1),i=(e,t)=>e.push(t),c=e=>e.pop(),l=e=>null==e,d=(e,t,n)=>l(e)?n?.():t(e),a=(e,t)=>e?.has(t)??!1,u=e=>l(e)||0==(e=>e.size)(e),p=(e,t)=>e?.forEach(t),h=(e,t)=>e?.delete(t),f=e=>new Map(e),C=(e,t)=>e?.get(t),g=(e,t,n)=>l(n)?(h(e,t),e):e?.set(t,n),k=(e,t,n,o)=>(a(e,t)||(o?.(n),e.set(t,n)),C(e,t)),v=e=>new Set(e),y=(e,t,n)=>o(n)<2?((e,t)=>e?.add(t))(s(n)?e:k(e,n[0],v()),t):y(k(e,n[0],f()),t,r(n)),L=e=>{const t=(o,i,...c)=>d(o,(o=>s(c)?e(o,i):n([c[0],null],(e=>t(C(o,e),i,...r(c))))));return t},b=Object.freeze,w=(e=>{const t=new WeakMap;return n=>(t.has(n)||t.set(n,e(n)),t.get(n))})((e=>{let r,w,S,T=100,j=f(),x=1;const z=v(),E=f(),[M,m,B]=(e=>{let t,s=0;const r=[],a=f();return[(n,o,i=[])=>{t??=e();const l=c(r)??""+s++;return g(a,l,[n,o,i]),y(o,l,i),l},(e,n=[],...o)=>L(p)(e,(e=>d(C(a,e),(([e])=>e(t,...n,...o)))),...n),e=>d(C(a,e),(([,t,n])=>(L(h)(t,e,...n),g(a,e),o(r)<1e3&&i(r,e),n)),(()=>[])),(e,s,r)=>d(C(a,e),(([e,,i])=>{const c=(...d)=>{const a=o(d);a==o(i)?e(t,...d,...r(d)):l(i[a])?n(s[a](...d),(e=>c(...d,e))):c(...d,i[a])};c()}))]})((()=>U)),I=f(),O=f(),_=[],F=[],P=(t,n)=>{x=0,e.transaction((()=>p(C(I,n),((n,o)=>p(n,((n,s)=>p(n,((n,r)=>l(n[t])?e.delCell(o,s,r,!0):e.setCell(o,s,r,n[t]))))))))),x=1},W=e=>{g(I,e),g(O,e),m(E,[e])},q=(e,t)=>n(((e,t)=>e.splice(0,t))(e,t??o(e)),W),A=()=>q(_,o(_)-T),D=e.addCellListener(null,null,null,((e,t,n,o,s,l)=>{if(x){d(r,(()=>{i(_,r),A(),q(F),r=void 0,S=1}));const e=k(j,t,f()),a=k(e,n,f()),p=k(a,o,[void 0,void 0],(e=>e[0]=l));p[1]=s,p[0]===p[1]&&u(g(a,o))&&u(g(e,n))&&u(g(j,t))&&(r=c(_),S=1),K()}})),G=(e="")=>(l(r)&&(r=""+w++,g(I,r,j),Q(r,e),j=f(),S=1),r),H=()=>{s(_)||(F.unshift(G()),P(0,r),r=c(_),S=1)},J=()=>{s(F)||(i(_,r),r=F.shift(),P(1,r),S=1)},K=()=>{S&&(m(z),S=0)},N=e=>{const t=G(e);return K(),t},Q=(e,t)=>(R(e)&&C(O,e)!==t&&(g(O,e,t),m(E,[e])),U),R=e=>a(I,e),U={setSize:e=>(T=e,A(),U),addCheckpoint:N,setCheckpoint:Q,getStore:()=>e,getCheckpointIds:()=>[[..._],r,[...F]],forEachCheckpoint:e=>{return t=e,p(O,((e,n)=>t(n,e)));var t},hasCheckpoint:R,getCheckpoint:e=>C(O,e),goBackward:()=>(H(),K(),U),goForward:()=>(J(),K(),U),goTo:e=>{const n=t(_,e)?H:t(F,e)?J:null;for(;!l(n)&&e!=r;)n();return K(),U},addCheckpointIdsListener:e=>M(e,z),addCheckpointListener:(e,t)=>M(t,E,[e]),delListener:e=>(B(e),U),clear:()=>(q(_),q(F),l(r)||W(r),r=void 0,w=0,N(),U),destroy:()=>{e.delListener(D)},getListenerStats:()=>({})};return b(U.clear())}));e.createCheckpoints=w,Object.defineProperty(e,"__esModule",{value:!0})},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseCheckpoints={});
Binary file
package/lib/umd/store.js CHANGED
@@ -1 +1 @@
1
- var e,t;e=this,t=function(e){"use strict";const t=e=>typeof e,s=t(""),n=t(!0),r=t(0),l=t(t),o="type",a="default",d=(e,t)=>e.forEach(t),c=e=>e.length,i=e=>0==c(e),u=e=>e.slice(1),f=e=>JSON.stringify(e,((e,t)=>{return p(t,Map)?(s=[...t],n=(e,[t,s])=>(e[t]=s,e),r={},s.reduce(n,r)):t;var s,n,r})),h=JSON.parse,b=isFinite,p=(e,t)=>e instanceof t,T=e=>null==e,g=(e,t,s)=>T(e)?s?.():t(e),y=e=>e==s||e==n,w=(e,t)=>e?.has(t)??!1,L=e=>T(e)||0==(e=>e.size)(e),R=e=>e.clear(),S=(e,t)=>e?.forEach(t),C=(e,t)=>e?.delete(t),v=e=>new Map(e),I=(e=v)=>[e(),e()],m=e=>[...e?.keys()??[]],E=(e,t)=>e?.get(t),J=(e,t)=>S(e,((e,s)=>t(s,e))),O=(e,t,s)=>T(s)?(C(e,t),e):e?.set(t,s),j=(e,t,s,n)=>(w(e,t)||(n?.(s),e.set(t,s)),E(e,t)),x=(e,t)=>{const s={},n=t??(e=>e);return S(e,((e,t)=>s[t]=n(e))),s},z=(e,t)=>{const s=v(),n=t??(e=>e);return S(e,((e,t)=>s.set(t,n(e)))),s},M=Object,k=M.keys,F=M.isFrozen,N=M.freeze,P=(e,t)=>!T(((e,t)=>g(e,(e=>e[t])))(e,t)),_=(e,t)=>delete e[t],B=(e,t)=>d(M.entries(e),(([e,s])=>t(s,e))),q=e=>new Set(e),A=(e,t,s)=>c(s)<2?((e,t)=>e?.add(t))(i(s)?e:j(e,s[0],q()),t):A(j(e,s[0],v()),t,u(s)),D=e=>{const t=(s,n,...r)=>g(s,(s=>i(r)?e(s,n):d([r[0],null],(e=>t(E(s,e),n,...u(r))))));return t},G=(e,t,s,n=O)=>{const r=(l=m(e),o=e=>!P(t,e),l.filter(o));var l,o;return d(k(t),(n=>s(e,n,t[n]))),d(r,(t=>n(e,t))),e},H=e=>{const s=t(e);return y(s)||s==r&&b(e)?s:void 0},K=(e,t)=>!(T(e)||!(e=>p(e,M)&&e.constructor==M)(e)||F(e)||(B(e,((s,n)=>{t(s,n)||_(e,n)})),(e=>i(k(e)))(e))),Q=(e,t,s)=>O(e,t,E(e,t)==-s?void 0:s);e.createStore=()=>{let e,s=0,n=0;const i=v(),u=v(),b=v(),p=v(),M=v(),k=v(),F=v(),U=I(q),V=I(q),W=I(),X=I(),Y=I(),Z=I(),$=I(),[ee,te,se,ne]=(e=>{let t,s=0;const n=[],r=v();return[(l,o,a=[])=>{t??=e();const d=n.pop()??""+s++;return O(r,d,[l,o,a]),A(o,d,a),d},(e,s=[],...n)=>D(S)(e,(e=>g(E(r,e),(([e])=>e(t,...s,...n)))),...s),e=>g(E(r,e),(([,t,s])=>(D(C)(t,e,...s),O(r,e),c(n)<1e3&&n.push(e),s)),(()=>[])),(e,s,n)=>g(E(r,e),(([e,,r])=>{const l=(...o)=>{const a=c(o);a==c(r)?e(t,...o,...n(o)):T(r[a])?d(s[a](...o),(e=>l(...o,e))):l(...o,r[a])};l()}))]})((()=>ke)),re=(t,s)=>(!e||w(M,s))&&K(t,(e=>le(s,e))),le=(e,t,s)=>K(s?t:ae(t,e),((s,n)=>g(oe(e,n,s),(e=>(t[n]=e,!0)),(()=>!1)))),oe=(t,s,n)=>e?g(E(E(M,t),s),(e=>H(n)!=e.type?e.default:n)):T(H(n))?void 0:n,ae=(e,t)=>(g(E(k,t),(t=>B(t,((t,s)=>{P(e,s)||(e[s]=t)})))),e),de=e=>G(M,e,((e,t,s)=>{const n={};G(j(M,t,v()),s,((e,t,s)=>{O(e,t,s),g(s.default,(e=>n[t]=e))})),O(k,t,n)}),((e,t)=>{O(M,t),O(k,t)})),ce=e=>G(F,e,((e,t,s)=>ie(t,s)),((e,t)=>ge(t))),ie=(e,t)=>G(j(F,e,v(),(()=>Le(e,1))),t,((t,s,n)=>ue(e,t,s,n)),((t,s)=>ye(e,t,s))),ue=(e,t,s,n,r)=>G(j(t,s,v(),(()=>Re(e,s,1))),n,((t,n,r)=>fe(e,s,t,n,r)),((n,l)=>we(e,t,s,n,l,r))),fe=(e,t,s,n,r)=>{w(s,n)||Se(e,t,n,1);const l=E(s,n);r!==l&&(Ce(e,t,n,l),O(s,n,r))},he=(e,t,s)=>Me((()=>ue(e,Te(e),t,s))),be=(e,t,s,n,r)=>g(E(t,s),(t=>fe(e,s,t,n,r)),(()=>ue(e,t,s,ae({[n]:r},e)))),pe=e=>{const t=""+s++;return w(e,t)?pe(e):t},Te=e=>E(F,e)??ie(e,{}),ge=e=>ie(e,{}),ye=(e,t,s)=>ue(e,t,s,{},!0),we=(e,t,s,n,r,l)=>{const o=E(k,e)?.[r];if(!T(o)&&!l)return fe(e,s,n,r,o);const a=t=>{Ce(e,s,t,E(n,t)),Se(e,s,t,-1),O(n,t)};T(o)?a(r):J(n,a),L(n)&&(Re(e,s,-1),L(O(t,s))&&(Le(e,-1),O(F,e)))},Le=(e,t)=>Q(i,e,t),Re=(e,t,s)=>Q(j(u,e,v()),t,s),Se=(e,t,s,n)=>Q(j(j(b,e,v()),t,v()),s,n),Ce=(e,t,s,n)=>j(j(j(p,e,v()),t,v()),s,n),ve=(e,t,s)=>{const n=E(E(p,e),t),r=je(e,t,s);return w(n,s)?[!0,E(n,s),r]:[!1,r,r]},Ie=e=>{const t=L(Z[e])&&L(X[e])&&L(V[e]),s=L($[e])&&L(Y[e])&&L(W[e])&&L(U[e]);if(t&&s)return;const n=e?[z(i),z(u,z),z(b,(e=>z(e,z))),z(p,(e=>z(e,z)))]:[i,u,b,p];if(t||(S(n[2],((t,s)=>S(t,((t,n)=>{L(t)||te(Z[e],[s,n])})))),S(n[1],((t,s)=>{L(t)||te(X[e],[s])})),L(n[0])||te(V[e])),!s){let t;S(n[3],((s,n)=>{let r;S(s,((s,l)=>{let o;S(s,((s,a)=>{const d=je(n,l,a);d!==s&&(te($[e],[n,l,a],d,s,ve),t=r=o=1)})),o&&te(Y[e],[n,l],ve)})),r&&te(W[e],[n],ve)})),t&&te(U[e],[],ve)}},me=()=>x(F,(e=>x(e,x))),Ee=()=>m(F),Je=e=>m(E(F,e)),Oe=(e,t)=>m(E(E(F,e),t)),je=(e,t,s)=>E(E(E(F,e),t),s),xe=e=>((e=>K(e,re))(e)&&Me((()=>ce(e))),ke),ze=()=>(Me((()=>ce({}))),ke),Me=e=>{if(-1==n)return;n++;const t=e();return n--,0==n&&(n=1,Ie(1),n=-1,Ie(0),n=0,d([p,i,u,b],R)),t},ke={getTables:me,getTableIds:Ee,getTable:e=>x(E(F,e),x),getRowIds:Je,getRow:(e,t)=>x(E(E(F,e),t)),getCellIds:Oe,getCell:je,hasTables:()=>!L(F),hasTable:e=>w(F,e),hasRow:(e,t)=>w(E(F,e),t),hasCell:(e,t,s)=>w(E(E(F,e),t),s),getJson:()=>f(F),getSchemaJson:()=>f(M),setTables:xe,setTable:(e,t)=>(re(t,e)&&Me((()=>ie(e,t))),ke),setRow:(e,t,s)=>(le(e,s)&&he(e,t,s),ke),addRow:(e,t)=>{let s;return le(e,t)&&(s=pe(E(F,e)),he(e,s,t)),s},setPartialRow:(e,t,s)=>(le(e,s,1)&&Me((()=>{const n=Te(e);B(s,((s,r)=>be(e,n,t,r,s)))})),ke),setCell:(e,s,n,r)=>(g(oe(e,n,t(r)==l?r(je(e,s,n)):r),(t=>Me((()=>be(e,Te(e),s,n,t))))),ke),setJson:e=>{try{"{}"===e?ze():xe(h(e))}catch{}return ke},setSchema:t=>{if((e=(e=>K(e,(e=>K(e,(e=>{if(!K(e,((e,t)=>[o,a].includes(t))))return!1;const t=e.type;return!(!y(t)&&t!=r||(H(e.default)!=t&&_(e,a),0))})))))(t))&&(de(t),!L(F))){const e=me();ze(),xe(e)}return ke},delTables:ze,delTable:e=>(w(F,e)&&Me((()=>ge(e))),ke),delRow:(e,t)=>(g(E(F,e),(s=>{w(s,t)&&Me((()=>ye(e,s,t)))})),ke),delCell:(e,t,s,n)=>(g(E(F,e),(r=>g(E(r,t),(l=>{w(l,s)&&Me((()=>we(e,r,t,l,s,n)))})))),ke),delSchema:()=>(de({}),e=!1,ke),transaction:Me,forEachTable:e=>S(F,((t,s)=>e(s,(e=>S(t,((t,s)=>e(s,(e=>J(t,e))))))))),forEachRow:(e,t)=>S(E(F,e),((e,s)=>t(s,(t=>J(e,t))))),forEachCell:(e,t,s)=>J(E(E(F,e),t),s),addTablesListener:(e,t)=>ee(e,U[t?1:0]),addTableIdsListener:(e,t)=>ee(e,V[t?1:0]),addTableListener:(e,t,s)=>ee(t,W[s?1:0],[e]),addRowIdsListener:(e,t,s)=>ee(t,X[s?1:0],[e]),addRowListener:(e,t,s,n)=>ee(s,Y[n?1:0],[e,t]),addCellIdsListener:(e,t,s,n)=>ee(s,Z[n?1:0],[e,t]),addCellListener:(e,t,s,n,r)=>ee(n,$[r?1:0],[e,t,s]),callListener:e=>(ne(e,[Ee,Je,Oe],(e=>T(e[2])?[]:[,,].fill(je(...e)))),ke),delListener:e=>(se(e),ke),getListenerStats:()=>({})};return N(ke)},Object.defineProperty(e,"__esModule",{value:!0})},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseStore={});
1
+ var e,t;e=this,t=function(e){"use strict";const t=e=>typeof e,s=t(""),n=t(!0),r=t(0),l=t(t),o="type",a="default",d=(e,t)=>e.forEach(t),c=e=>e.length,i=e=>0==c(e),f=e=>e.slice(1),u=(e,t)=>e.push(t),h=e=>JSON.stringify(e,((e,t)=>{return T(t,Map)?(s=[...t],n=(e,[t,s])=>(e[t]=s,e),r={},s.reduce(n,r)):t;var s,n,r})),b=JSON.parse,p=isFinite,T=(e,t)=>e instanceof t,g=e=>null==e,y=(e,t,s)=>g(e)?s?.():t(e),w=e=>e==s||e==n,L=(e,t)=>e?.has(t)??!1,R=e=>g(e)||0==(e=>e.size)(e),C=e=>e.clear(),S=(e,t)=>e?.forEach(t),v=(e,t)=>e?.delete(t),I=e=>new Map(e),m=(e=I)=>[e(),e()],E=e=>[...e?.keys()??[]],J=(e,t)=>e?.get(t),O=(e,t)=>S(e,((e,s)=>t(s,e))),j=(e,t,s)=>g(s)?(v(e,t),e):e?.set(t,s),x=(e,t,s,n)=>(L(e,t)||(n?.(s),e.set(t,s)),J(e,t)),z=(e,t)=>{const s={},n=t??(e=>e);return S(e,((e,t)=>s[t]=n(e))),s},M=(e,t)=>{const s=I(),n=t??(e=>e);return S(e,((e,t)=>s.set(t,n(e)))),s},k=Object,F=k.keys,N=k.isFrozen,P=k.freeze,_=(e,t)=>!g(((e,t)=>y(e,(e=>e[t])))(e,t)),B=(e,t)=>delete e[t],q=(e,t)=>d(k.entries(e),(([e,s])=>t(s,e))),A=e=>i(F(e)),D=e=>new Set(e),G=(e,t)=>e?.add(t),H=(e,t,s)=>c(s)<2?G(i(s)?e:x(e,s[0],D()),t):H(x(e,s[0],I()),t,f(s)),K=e=>{const t=(s,n,...r)=>y(s,(s=>i(r)?e(s,n):d([r[0],null],(e=>t(J(s,e),n,...f(r))))));return t},Q=(e,t,s,n=j)=>{const r=(l=E(e),o=e=>!_(t,e),l.filter(o));var l,o;return d(F(t),(n=>s(e,n,t[n]))),d(r,(t=>n(e,t))),e},U=e=>{const s=t(e);return w(s)||s==r&&p(e)?s:void 0},V=(e,t,s)=>g(e)||!(e=>T(e,k)&&e.constructor==k)(e)||A(e)||N(e)?(s?.(),!1):(q(e,((s,n)=>{t(s,n)||B(e,n)})),!A(e)),W=(e,t,s)=>j(e,t,J(e,t)==-s?void 0:s);e.createStore=()=>{let e,s=0,n=0;const i=I(),f=I(),p=I(),T=I(),k=I(),F=I(),N=I(),A=I(),X=m(D),Y=m(D),Z=m(),$=m(),ee=m(),te=m(),se=m(),ne=m(),[re,le,oe,ae]=(e=>{let t,s=0;const n=[],r=I();return[(l,o,a=[])=>{t??=e();const d=n.pop()??""+s++;return j(r,d,[l,o,a]),H(o,d,a),d},(e,s=[],...n)=>K(S)(e,(e=>y(J(r,e),(([e])=>e(t,...s,...n)))),...s),e=>y(J(r,e),(([,t,s])=>(K(v)(t,e,...s),j(r,e),c(n)<1e3&&u(n,e),s)),(()=>[])),(e,s,n)=>y(J(r,e),(([e,,r])=>{const l=(...o)=>{const a=c(o);a==c(r)?e(t,...o,...n(o)):g(r[a])?d(s[a](...o),(e=>l(...o,e))):l(...o,r[a])};l()}))]})((()=>qe)),de=(t,s)=>(!e||L(F,s)||Ee(s))&&V(t,((e,t)=>ce(s,t,e)),(()=>Ee(s))),ce=(e,t,s,n)=>V(n?s:fe(s,e,t),((n,r)=>y(ie(e,t,r,n),(e=>(s[r]=e,!0)),(()=>!1))),(()=>Ee(e,t))),ie=(t,s,n,r)=>e?y(J(J(F,t),n),(e=>U(r)!=e.type?Ee(t,s,n,r,e.default):r),(()=>Ee(t,s,n,r))):g(U(r))?Ee(t,s,n,r):r,fe=(e,t,s)=>(y(J(N,t),(([n,r])=>{S(n,((t,s)=>{_(e,s)||(e[s]=t)})),S(r,(n=>{_(e,n)||Ee(t,s,n)}))})),e),ue=e=>Q(F,e,((e,t,s)=>{const n=I(),r=D();Q(x(F,t,I()),s,((e,t,s)=>{j(e,t,s),y(s.default,(e=>j(n,t,e)),(()=>G(r,t)))})),j(N,t,[n,r])}),((e,t)=>{j(F,t),j(N,t)})),he=e=>Q(A,e,((e,t,s)=>be(t,s)),((e,t)=>Le(t))),be=(e,t)=>Q(x(A,e,I(),(()=>Se(e,1))),t,((t,s,n)=>pe(e,t,s,n)),((t,s)=>Re(e,t,s))),pe=(e,t,s,n,r)=>Q(x(t,s,I(),(()=>ve(e,s,1))),n,((t,n,r)=>Te(e,s,t,n,r)),((n,l)=>Ce(e,t,s,n,l,r))),Te=(e,t,s,n,r)=>{L(s,n)||Ie(e,t,n,1);const l=J(s,n);r!==l&&(me(e,t,n,l),j(s,n,r))},ge=(e,t,s,n,r)=>y(J(t,s),(t=>Te(e,s,t,n,r)),(()=>pe(e,t,s,fe({[n]:r},e,s)))),ye=e=>{const t=""+s++;return L(e,t)?ye(e):t},we=e=>J(A,e)??be(e,{}),Le=e=>be(e,{}),Re=(e,t,s)=>pe(e,t,s,{},!0),Ce=(e,t,s,n,r,l)=>{const o=J(J(N,e)?.[0],r);if(!g(o)&&!l)return Te(e,s,n,r,o);const a=t=>{me(e,s,t,J(n,t)),Ie(e,s,t,-1),j(n,t)};g(o)?a(r):O(n,a),R(n)&&(ve(e,s,-1),R(j(t,s))&&(Se(e,-1),j(A,e)))},Se=(e,t)=>W(i,e,t),ve=(e,t,s)=>W(x(f,e,I()),t,s),Ie=(e,t,s,n)=>W(x(x(p,e,I()),t,I()),s,n),me=(e,t,s,n)=>x(x(x(T,e,I()),t,I()),s,n),Ee=(e,t,s,n,r)=>(u(x(x(x(k,e,I()),t,I()),s,[]),n),r),Je=(e,t,s)=>{const n=J(J(T,e),t),r=Ne(e,t,s);return L(n,s)?[!0,J(n,s),r]:[!1,r,r]},Oe=e=>R(k)||R(ne[e])?0:S(e?M(k,(e=>M(e,M))):k,((t,s)=>S(t,((t,n)=>S(t,((t,r)=>le(ne[e],[s,n,r],t))))))),je=e=>{if(!R(T)){const t=R(te[e])&&R($[e])&&R(Y[e]),s=R(se[e])&&R(ee[e])&&R(Z[e])&&R(X[e]);if(!t||!s){const n=e?[M(i),M(f,M),M(p,(e=>M(e,M))),M(T,(e=>M(e,M)))]:[i,f,p,T];if(t||(S(n[2],((t,s)=>S(t,((t,n)=>{R(t)||le(te[e],[s,n])})))),S(n[1],((t,s)=>{R(t)||le($[e],[s])})),R(n[0])||le(Y[e])),!s){let t;S(n[3],((s,n)=>{let r;S(s,((s,l)=>{let o;S(s,((s,a)=>{const d=Ne(n,l,a);d!==s&&(le(se[e],[n,l,a],d,s,Je),t=r=o=1)})),o&&le(ee[e],[n,l],Je)})),r&&le(Z[e],[n],Je)})),t&&le(X[e],[],Je)}}}},xe=e=>(Be(e),qe),ze=()=>z(A,(e=>z(e,z))),Me=()=>E(A),ke=e=>E(J(A,e)),Fe=(e,t)=>E(J(J(A,e),t)),Ne=(e,t,s)=>J(J(J(A,e),t),s),Pe=e=>xe((()=>(e=>V(e,de,Ee))(e)?he(e):0)),_e=()=>xe((()=>he({}))),Be=e=>{if(-1==n)return;n++;const t=e?.();return n--,0==n&&(n=1,Oe(1),je(1),n=-1,Oe(0),je(0),n=0,d([T,k,i,f,p],C)),t},qe={getTables:ze,getTableIds:Me,getTable:e=>z(J(A,e),z),getRowIds:ke,getRow:(e,t)=>z(J(J(A,e),t)),getCellIds:Fe,getCell:Ne,hasTables:()=>!R(A),hasTable:e=>L(A,e),hasRow:(e,t)=>L(J(A,e),t),hasCell:(e,t,s)=>L(J(J(A,e),t),s),getJson:()=>h(A),getSchemaJson:()=>h(F),setTables:Pe,setTable:(e,t)=>xe((()=>de(t,e)?be(e,t):0)),setRow:(e,t,s)=>xe((()=>ce(e,t,s)?pe(e,we(e),t,s):0)),addRow:(e,t)=>Be((()=>{let s;return ce(e,s,t)&&pe(e,we(e),s=ye(J(A,e)),t),s})),setPartialRow:(e,t,s)=>xe((()=>{if(ce(e,t,s,1)){const n=we(e);q(s,((s,r)=>ge(e,n,t,r,s)))}})),setCell:(e,s,n,r)=>xe((()=>y(ie(e,s,n,t(r)==l?r(Ne(e,s,n)):r),(t=>ge(e,we(e),s,n,t))))),setJson:e=>{try{"{}"===e?_e():Pe(b(e))}catch{}return qe},setSchema:t=>xe((()=>{if((e=(e=>V(e,(e=>V(e,(e=>{if(!V(e,((e,t)=>[o,a].includes(t))))return!1;const t=e.type;return!(!w(t)&&t!=r||(U(e.default)!=t&&B(e,a),0))})))))(t))&&(ue(t),!R(A))){const e=ze();_e(),Pe(e)}})),delTables:_e,delTable:e=>xe((()=>L(A,e)?Le(e):0)),delRow:(e,t)=>xe((()=>y(J(A,e),(s=>L(s,t)?Re(e,s,t):0)))),delCell:(e,t,s,n)=>xe((()=>y(J(A,e),(r=>y(J(r,t),(l=>L(l,s)?Ce(e,r,t,l,s,n):0)))))),delSchema:()=>xe((()=>{ue({}),e=!1})),transaction:Be,forEachTable:e=>S(A,((t,s)=>e(s,(e=>S(t,((t,s)=>e(s,(e=>O(t,e))))))))),forEachRow:(e,t)=>S(J(A,e),((e,s)=>t(s,(t=>O(e,t))))),forEachCell:(e,t,s)=>O(J(J(A,e),t),s),addTablesListener:(e,t)=>re(e,X[t?1:0]),addTableIdsListener:(e,t)=>re(e,Y[t?1:0]),addTableListener:(e,t,s)=>re(t,Z[s?1:0],[e]),addRowIdsListener:(e,t,s)=>re(t,$[s?1:0],[e]),addRowListener:(e,t,s,n)=>re(s,ee[n?1:0],[e,t]),addCellIdsListener:(e,t,s,n)=>re(s,te[n?1:0],[e,t]),addCellListener:(e,t,s,n,r)=>re(n,se[r?1:0],[e,t,s]),addInvalidCellListener:(e,t,s,n,r)=>re(n,ne[r?1:0],[e,t,s]),callListener:e=>(ae(e,[Me,ke,Fe],(e=>g(e[2])?[]:[,,].fill(Ne(...e)))),qe),delListener:e=>(oe(e),qe),getListenerStats:()=>({})};return P(qe)},Object.defineProperty(e,"__esModule",{value:!0})},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseStore={});
Binary file
@@ -1 +1 @@
1
- var e,t;e=this,t=function(e,t){"use strict";const s=e=>typeof e,o="",n=s(o),r=s(!0),a=s(0),i=s(s),d="type",l="default",c="utf8",u=(e,t)=>e.includes(t),f=(e,t)=>e.every(((s,o)=>0==o||t(e[o-1],s)<=0)),h=(e,t)=>e.sort(t),g=(e,t)=>e.forEach(t),p=e=>v(e,((e,t)=>e+t),0),L=e=>e.length,w=e=>0==L(e),v=(e,t,s)=>e.reduce(t,s),y=e=>e.slice(1),I=e=>JSON.stringify(e,((e,t)=>C(t,Map)?v([...t],((e,[t,s])=>(e[t]=s,e)),{}):t)),S=JSON.parse,R=Math.max,T=Math.min,b=isFinite,C=(e,t)=>e instanceof t,m=e=>null==e,k=(e,t,s)=>m(e)?s?.():t(e),E=e=>e==n||e==r,M=e=>s(e)==i,x=()=>{},A=e=>e.size,P=(e,t)=>e?.has(t)??!1,D=e=>m(e)||0==A(e),J=e=>[...e?.values()??[]],F=e=>e.clear(),O=(e,t)=>e?.forEach(t),j=(e,t)=>e?.delete(t),z=e=>new Map(e),N=(e=z)=>[e(),e()],B=e=>[...e?.keys()??[]],_=(e,t)=>e?.get(t),q=(e,t)=>O(e,((e,s)=>t(s,e))),H=(e,t,s)=>m(s)?(j(e,t),e):e?.set(t,s),W=(e,t,s,o)=>(P(e,t)||(o?.(s),e.set(t,s)),_(e,t)),G=(e,t)=>{const s={},o=t??(e=>e);return O(e,((e,t)=>s[t]=o(e))),s},K=(e,t)=>{const s=z(),o=t??(e=>e);return O(e,((e,t)=>s.set(t,o(e)))),s},Q=e=>new Set(e),U=(e,t)=>e?.add(t),V=(e,t,s)=>{const o=e.hasRow,n=z(),r=z(),a=z(),i=z(),d=z(),l=t=>k(_(d,t),(s=>{O(s,e.delListener),H(d,t)})),c=e=>{H(n,e),H(r,e),H(a,e),H(i,e),l(e)};return[()=>e,()=>B(n),e=>q(r,e),e=>P(r,e),e=>_(n,e),e=>_(r,e),(e,t)=>H(r,e,t),(c,u,f,h,p)=>{const L=z(),w=z();H(n,c,u),P(r,c)||(H(r,c,t()),H(a,c,z()),H(i,c,z()));const v=_(a,c),y=_(i,c),I=t=>{const n=s=>e.getCell(u,t,s),r=_(v,t),a=o(u,t)?s(h(n,t)):void 0;if(r!=a&&H(L,t,[r,a]),!m(p)){const e=_(y,t),s=o(u,t)?p(n,t):void 0;e!=s&&H(w,t,s)}},S=e=>{f((()=>{O(L,(([,e],t)=>H(v,t,e))),O(w,((e,t)=>H(y,t,e)))}),L,w,v,y,e),F(L),F(w)};q(v,I),e.hasTable(u)&&g(e.getRowIds(u),(e=>{P(v,e)||I(e)})),S(!0),l(c),H(d,c,Q([e.addRowListener(u,null,((e,t,s)=>I(s))),e.addTableListener(u,(()=>S()))]))},c,()=>q(d,c)]},X=(e,t)=>s(e)==n?t=>t(e):e??(()=>t??o),Y=e=>{const t=new WeakMap;return s=>(t.has(s)||t.set(s,e(s)),t.get(s))},Z=(e,t,s)=>L(s)<2?U(w(s)?e:W(e,s[0],Q()),t):Z(W(e,s[0],z()),t,y(s)),$=e=>{const t=(s,o,...n)=>k(s,(s=>w(n)?e(s,o):g([n[0],null],(e=>t(_(s,e),o,...y(n))))));return t},ee=e=>{let t,s=0;const o=[],n=z();return[(r,a,i=[])=>{t??=e();const d=o.pop()??""+s++;return H(n,d,[r,a,i]),Z(a,d,i),d},(e,s=[],...o)=>$(O)(e,(e=>k(_(n,e),(([e])=>e(t,...s,...o)))),...s),e=>k(_(n,e),(([,t,s])=>($(j)(t,e,...s),H(n,e),L(o)<1e3&&o.push(e),s)),(()=>[])),(e,s,o)=>k(_(n,e),(([e,,n])=>{const r=(...a)=>{const i=L(a);i==L(n)?e(t,...a,...o(a)):m(n[i])?g(s[i](...a),(e=>r(...a,e))):r(...a,n[i])};r()}))]},te=Object,se=te.keys,oe=te.isFrozen,ne=te.freeze,re=(e,t)=>!m(((e,t)=>k(e,(e=>e[t])))(e,t)),ae=(e,t)=>delete e[t],ie=(e,t)=>g(te.entries(e),(([e,s])=>t(s,e))),de=Y((e=>{let t,s,o,n=100,r=z(),a=1;const i=Q(),d=z(),[l,c,f]=ee((()=>j)),h=z(),p=z(),v=[],y=[],I=(t,s)=>{a=0,e.transaction((()=>O(_(h,s),((s,o)=>O(s,((s,n)=>O(s,((s,r)=>m(s[t])?e.delCell(o,n,r,!0):e.setCell(o,n,r,s[t]))))))))),a=1},S=e=>{H(h,e),H(p,e),c(d,[e])},R=(e,t)=>g(((e,t)=>e.splice(0,t))(e,t??L(e)),S),T=()=>R(v,L(v)-n),b=e.addCellListener(null,null,null,((e,s,n,i,d,l)=>{if(a){k(t,(()=>{v.push(t),T(),R(y),t=void 0,o=1}));const e=W(r,s,z()),a=W(e,n,z()),c=W(a,i,[void 0,void 0],(e=>e[0]=l));c[1]=d,c[0]===c[1]&&D(H(a,i))&&D(H(e,n))&&D(H(r,s))&&(t=v.pop(),o=1),x()}})),C=(e="")=>(m(t)&&(t=""+s++,H(h,t,r),J(t,e),r=z(),o=1),t),E=()=>{w(v)||(y.unshift(C()),I(0,t),t=v.pop(),o=1)},M=()=>{w(y)||(v.push(t),t=y.shift(),I(1,t),o=1)},x=()=>{o&&(c(i),o=0)},A=e=>{const t=C(e);return x(),t},J=(e,t)=>(F(e)&&_(p,e)!==t&&(H(p,e,t),c(d,[e])),j),F=e=>P(h,e),j={setSize:e=>(n=e,T(),j),addCheckpoint:A,setCheckpoint:J,getStore:()=>e,getCheckpointIds:()=>[[...v],t,[...y]],forEachCheckpoint:e=>q(p,e),hasCheckpoint:F,getCheckpoint:e=>_(p,e),goBackward:()=>(E(),x(),j),goForward:()=>(M(),x(),j),goTo:e=>{const s=u(v,e)?E:u(y,e)?M:null;for(;!m(s)&&e!=t;)s();return x(),j},addCheckpointIdsListener:e=>l(e,i),addCheckpointListener:(e,t)=>l(t,d,[e]),delListener:e=>(f(e),j),clear:()=>(R(v),R(y),m(t)||S(t),t=void 0,s=0,A(),j),destroy:()=>{e.delListener(b)},getListenerStats:()=>({})};return ne(j.clear())})),le=(e,t)=>e<t?-1:1,ce=Y((e=>{const t=z(),s=z(),[n,r,a,i,d,l,c,u,g,p]=V(e,z,(e=>m(e)?o:e+o)),[L,w,v]=ee((()=>I)),y=(t,s,o)=>{const n=d(t);O(o,((t,o)=>s(o,(s=>O(t,(t=>s(t,(s=>e.forEachCell(n,t,s)))))))))},I={setIndexDefinition:(e,o,n,r,a,i=le)=>{const d=m(a)?void 0:([e],[t])=>a(e,t);return u(e,o,((o,n,a,u,g,p)=>{let L=0;const v=Q(),y=Q(),I=l(e);if(O(n,(([e,t],s)=>{m(e)||(U(v,e),k(_(I,e),(t=>{j(t,s),D(t)&&(H(I,e),L=1)}))),m(t)||(U(v,t),P(I,t)||(H(I,t,Q()),L=1),U(_(I,t),s),m(r)||U(y,t))})),o(),D(g)||(p?q(I,(e=>U(y,e))):q(a,(e=>k(_(u,e),(e=>U(y,e))))),O(y,(e=>{const t=(t,s)=>i(_(g,t),_(g,s),e),s=[..._(I,e)];f(s,t)||(H(I,e,Q(h(s,t))),U(v,e))}))),(L||p)&&!m(d)){const t=[...I];f(t,d)||(c(e,z(h(t,d))),L=1)}L&&w(t,[e]),O(v,(t=>w(s,[e,t])))}),X(n),k(r,X)),I},delIndexDefinition:e=>(g(e),I),getStore:n,getIndexIds:r,forEachIndex:e=>a(((t,s)=>e(t,(e=>y(t,e,s))))),forEachSlice:(e,t)=>y(e,t,l(e)),hasIndex:i,hasSlice:(e,t)=>P(l(e),t),getTableId:d,getSliceIds:e=>B(l(e)),getSliceRowIds:(e,t)=>J(_(l(e),t)),addSliceIdsListener:(e,s)=>L(s,t,[e]),addSliceRowIdsListener:(e,t,o)=>L(o,s,[e,t]),delListener:e=>(v(e),I),destroy:p,getListenerStats:()=>({})};return ne(I)})),ue=z([["avg",[(e,t)=>p(e)/t,(e,t,s)=>e+(t-e)/(s+1),(e,t,s)=>e+(e-t)/(s-1),(e,t,s,o)=>e+(t-s)/o]],["max",[e=>R(...e),(e,t)=>R(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:R(t,e)]],["min",[e=>T(...e),(e,t)=>T(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:T(t,e)]],["sum",[e=>p(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,s)=>e-s+t]]]),fe=Y((e=>{const t=z(),[s,n,r,a,i,d,l,c,u,f]=V(e,x,(e=>isNaN(e)||m(e)||!0===e||!1===e||e===o?void 0:1*e)),[h,g,p]=ee((()=>L)),L={setMetricDefinition:(e,s,o,n,r,a,i)=>{const u=M(o)?[o,r,a,i]:_(ue,o)??_(ue,"sum");return c(e,s,((s,o,n,r,a,i)=>{let c=d(e),f=A(r);const[h,p,L,w]=u;i=i||m(c),O(o,(([e,t])=>{i||(c=m(e)?p?.(c,t,f++):m(t)?L?.(c,e,f--):w?.(c,t,e,f)),i=i||m(c)})),s(),D(r)?c=void 0:i&&(c=h(J(r),A(r))),b(c)||(c=void 0);const v=d(e);c!=v&&(l(e,c),g(t,[e],c,v))}),X(n,1)),L},delMetricDefinition:e=>(u(e),L),getStore:s,getMetricIds:n,forEachMetric:r,hasMetric:a,getTableId:i,getMetric:d,addMetricListener:(e,s)=>h(s,t,[e]),delListener:e=>(p(e),L),destroy:f,getListenerStats:()=>({})};return ne(L)})),he=(e,t,s,o,n)=>{let r,a=0;const i={load:async s=>{if(2!=a){a=1;const o=await t();m(o)||""==o?e.setTables(s):e.setJson(o),a=0}return i},startAutoLoad:async e=>(i.stopAutoLoad(),await i.load(e),o(i.load),i),stopAutoLoad:()=>(n(),i),save:async()=>(1!=a&&(a=2,await s(e.getJson()),a=0),i),startAutoSave:async()=>(await i.stopAutoSave().save(),r=e.addTablesListener((()=>i.save())),i),stopAutoSave:()=>(k(r,e.delListener),i),getStore:()=>e,destroy:()=>i.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return ne(i)},ge="storage",pe=globalThis.window,Le=(e,t,s)=>{let o;return he(e,(async()=>s.getItem(t)),(async e=>s.setItem(t,e)),(e=>{o=o=>{o.storageArea===s&&o.key===t&&e()},pe.addEventListener(ge,o)}),(()=>{pe.removeEventListener(ge,o),o=void 0}))},we=e=>e.headers.get("ETag"),ve=Y((e=>{const t=z(),s=z(),n=z(),r=z(),[a,i,d,l,c,u,f,h,g,p]=V(e,(()=>[z(),z(),z(),z()]),(e=>m(e)?void 0:e+o)),[L,w,v]=ee((()=>R)),y=(e,t,s)=>k(u(e),(([o,,n])=>{if(!P(n,t)){const r=Q();if(c(e)!=S(e))U(r,t);else{let e=t;for(;!m(e)&&!P(r,e);)U(r,e),e=_(o,e)}if(s)return r;H(n,t,r)}return _(n,t)})),I=(e,t)=>k(u(e),(([,,e])=>H(e,t))),S=e=>_(t,e),R={setRelationshipDefinition:(e,o,a,i)=>(H(t,e,a),h(e,o,((t,o)=>{const a=Q(),i=Q(),d=Q(),[l,c]=u(e);O(o,(([t,s],o)=>{m(t)||(U(i,t),k(_(c,t),(e=>{j(e,o),D(e)&&H(c,t)}))),m(s)||(U(i,s),P(c,s)||H(c,s,Q()),U(_(c,s),o)),U(a,o),H(l,o,s),q(_(r,e),(t=>{P(y(e,t),o)&&U(d,t)}))})),t(),O(a,(t=>w(s,[e,t]))),O(i,(t=>w(n,[e,t]))),O(d,(t=>{I(e,t),w(r,[e,t])}))}),X(i)),R),delRelationshipDefinition:e=>(H(t,e),g(e),R),getStore:a,getRelationshipIds:i,forEachRelationship:t=>d((s=>t(s,(t=>e.forEachRow(c(s),t))))),hasRelationship:l,getLocalTableId:c,getRemoteTableId:S,getRemoteRowId:(e,t)=>_(u(e)?.[0],t),getLocalRowIds:(e,t)=>J(_(u(e)?.[1],t)),getLinkedRowIds:(e,t)=>m(u(e))?[t]:J(y(e,t,!0)),addRemoteRowIdListener:(e,t,o)=>L(o,s,[e,t]),addLocalRowIdsListener:(e,t,s)=>L(s,n,[e,t]),addLinkedRowIdsListener:(e,t,s)=>(y(e,t),L(s,r,[e,t])),delListener:e=>(I(...v(e)),R),destroy:p,getListenerStats:()=>({})};return ne(R)})),ye=(e,t,s,o=H)=>{const n=(r=B(e),a=e=>!re(t,e),r.filter(a));var r,a;return g(se(t),(o=>s(e,o,t[o]))),g(n,(t=>o(e,t))),e},Ie=e=>{const t=s(e);return E(t)||t==a&&b(e)?t:void 0},Se=(e,t)=>!(m(e)||!(e=>C(e,te)&&e.constructor==te)(e)||oe(e)||(ie(e,((s,o)=>{t(s,o)||ae(e,o)})),(e=>w(se(e)))(e))),Re=(e,t,s)=>H(e,t,_(e,t)==-s?void 0:s);e.createCheckpoints=de,e.createCustomPersister=he,e.createFilePersister=(e,s)=>{let o;return he(e,(async()=>{try{return await t.promises.readFile(s,c)}catch{}}),(async e=>{try{await t.promises.writeFile(s,e,c)}catch{}}),(e=>{o=t.watch(s,e)}),(()=>{o?.close(),o=void 0}))},e.createIndexes=ce,e.createLocalPersister=(e,t)=>Le(e,t,localStorage),e.createMetrics=fe,e.createRelationships=ve,e.createRemotePersister=(e,t,s,o)=>{let n,r;return he(e,(async()=>{const e=await fetch(t);return r=we(e),e.text()}),(async e=>await fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:e})),(e=>{n=setInterval((async()=>{const s=await fetch(t,{method:"HEAD"}),o=we(s);m(r)||m(o)||o==r||(r=o,e())}),1e3*o)}),(()=>{k(n,clearInterval),n=void 0}))},e.createSessionPersister=(e,t)=>Le(e,t,sessionStorage),e.createStore=()=>{let e,t=0,s=0;const o=z(),n=z(),r=z(),i=z(),c=z(),f=z(),h=z(),p=N(Q),L=N(Q),w=N(),v=N(),y=N(),R=N(),T=N(),[b,C,x,A]=ee((()=>Ae)),J=(t,s)=>(!e||P(c,s))&&Se(t,(e=>j(s,e))),j=(e,t,s)=>Se(s?t:V(t,e),((s,o)=>k(U(e,o,s),(e=>(t[o]=e,!0)),(()=>!1)))),U=(t,s,o)=>e?k(_(_(c,t),s),(e=>Ie(o)!=e.type?e.default:o)):m(Ie(o))?void 0:o,V=(e,t)=>(k(_(f,t),(t=>ie(t,((t,s)=>{re(e,s)||(e[s]=t)})))),e),X=e=>ye(c,e,((e,t,s)=>{const o={};ye(W(c,t,z()),s,((e,t,s)=>{H(e,t,s),k(s.default,(e=>o[t]=e))})),H(f,t,o)}),((e,t)=>{H(c,t),H(f,t)})),Y=e=>ye(h,e,((e,t,s)=>Z(t,s)),((e,t)=>ce(t))),Z=(e,t)=>ye(W(h,e,z(),(()=>he(e,1))),t,((t,s,o)=>$(e,t,s,o)),((t,s)=>ue(e,t,s))),$=(e,t,s,o,n)=>ye(W(t,s,z(),(()=>ge(e,s,1))),o,((t,o,n)=>te(e,s,t,o,n)),((o,r)=>fe(e,t,s,o,r,n))),te=(e,t,s,o,n)=>{P(s,o)||pe(e,t,o,1);const r=_(s,o);n!==r&&(Le(e,t,o,r),H(s,o,n))},se=(e,t,s)=>xe((()=>$(e,le(e),t,s))),oe=(e,t,s,o,n)=>k(_(t,s),(t=>te(e,s,t,o,n)),(()=>$(e,t,s,V({[o]:n},e)))),de=e=>{const s=""+t++;return P(e,s)?de(e):s},le=e=>_(h,e)??Z(e,{}),ce=e=>Z(e,{}),ue=(e,t,s)=>$(e,t,s,{},!0),fe=(e,t,s,o,n,r)=>{const a=_(f,e)?.[n];if(!m(a)&&!r)return te(e,s,o,n,a);const i=t=>{Le(e,s,t,_(o,t)),pe(e,s,t,-1),H(o,t)};m(a)?i(n):q(o,i),D(o)&&(ge(e,s,-1),D(H(t,s))&&(he(e,-1),H(h,e)))},he=(e,t)=>Re(o,e,t),ge=(e,t,s)=>Re(W(n,e,z()),t,s),pe=(e,t,s,o)=>Re(W(W(r,e,z()),t,z()),s,o),Le=(e,t,s,o)=>W(W(W(i,e,z()),t,z()),s,o),we=(e,t,s)=>{const o=_(_(i,e),t),n=ke(e,t,s);return P(o,s)?[!0,_(o,s),n]:[!1,n,n]},ve=e=>{const t=D(R[e])&&D(v[e])&&D(L[e]),s=D(T[e])&&D(y[e])&&D(w[e])&&D(p[e]);if(t&&s)return;const a=e?[K(o),K(n,K),K(r,(e=>K(e,K))),K(i,(e=>K(e,K)))]:[o,n,r,i];if(t||(O(a[2],((t,s)=>O(t,((t,o)=>{D(t)||C(R[e],[s,o])})))),O(a[1],((t,s)=>{D(t)||C(v[e],[s])})),D(a[0])||C(L[e])),!s){let t;O(a[3],((s,o)=>{let n;O(s,((s,r)=>{let a;O(s,((s,i)=>{const d=ke(o,r,i);d!==s&&(C(T[e],[o,r,i],d,s,we),t=n=a=1)})),a&&C(y[e],[o,r],we)})),n&&C(w[e],[o],we)})),t&&C(p[e],[],we)}},Te=()=>G(h,(e=>G(e,G))),be=()=>B(h),Ce=e=>B(_(h,e)),me=(e,t)=>B(_(_(h,e),t)),ke=(e,t,s)=>_(_(_(h,e),t),s),Ee=e=>((e=>Se(e,J))(e)&&xe((()=>Y(e))),Ae),Me=()=>(xe((()=>Y({}))),Ae),xe=e=>{if(-1==s)return;s++;const t=e();return s--,0==s&&(s=1,ve(1),s=-1,ve(0),s=0,g([i,o,n,r],F)),t},Ae={getTables:Te,getTableIds:be,getTable:e=>G(_(h,e),G),getRowIds:Ce,getRow:(e,t)=>G(_(_(h,e),t)),getCellIds:me,getCell:ke,hasTables:()=>!D(h),hasTable:e=>P(h,e),hasRow:(e,t)=>P(_(h,e),t),hasCell:(e,t,s)=>P(_(_(h,e),t),s),getJson:()=>I(h),getSchemaJson:()=>I(c),setTables:Ee,setTable:(e,t)=>(J(t,e)&&xe((()=>Z(e,t))),Ae),setRow:(e,t,s)=>(j(e,s)&&se(e,t,s),Ae),addRow:(e,t)=>{let s;return j(e,t)&&(s=de(_(h,e)),se(e,s,t)),s},setPartialRow:(e,t,s)=>(j(e,s,1)&&xe((()=>{const o=le(e);ie(s,((s,n)=>oe(e,o,t,n,s)))})),Ae),setCell:(e,t,s,o)=>(k(U(e,s,M(o)?o(ke(e,t,s)):o),(o=>xe((()=>oe(e,le(e),t,s,o))))),Ae),setJson:e=>{try{"{}"===e?Me():Ee(S(e))}catch{}return Ae},setSchema:t=>{if((e=(e=>Se(e,(e=>Se(e,(e=>{if(!Se(e,((e,t)=>u([d,l],t))))return!1;const t=e.type;return!(!E(t)&&t!=a||(Ie(e.default)!=t&&ae(e,l),0))})))))(t))&&(X(t),!D(h))){const e=Te();Me(),Ee(e)}return Ae},delTables:Me,delTable:e=>(P(h,e)&&xe((()=>ce(e))),Ae),delRow:(e,t)=>(k(_(h,e),(s=>{P(s,t)&&xe((()=>ue(e,s,t)))})),Ae),delCell:(e,t,s,o)=>(k(_(h,e),(n=>k(_(n,t),(r=>{P(r,s)&&xe((()=>fe(e,n,t,r,s,o)))})))),Ae),delSchema:()=>(X({}),e=!1,Ae),transaction:xe,forEachTable:e=>O(h,((t,s)=>e(s,(e=>O(t,((t,s)=>e(s,(e=>q(t,e))))))))),forEachRow:(e,t)=>O(_(h,e),((e,s)=>t(s,(t=>q(e,t))))),forEachCell:(e,t,s)=>q(_(_(h,e),t),s),addTablesListener:(e,t)=>b(e,p[t?1:0]),addTableIdsListener:(e,t)=>b(e,L[t?1:0]),addTableListener:(e,t,s)=>b(t,w[s?1:0],[e]),addRowIdsListener:(e,t,s)=>b(t,v[s?1:0],[e]),addRowListener:(e,t,s,o)=>b(s,y[o?1:0],[e,t]),addCellIdsListener:(e,t,s,o)=>b(s,R[o?1:0],[e,t]),addCellListener:(e,t,s,o,n)=>b(o,T[n?1:0],[e,t,s]),callListener:e=>(A(e,[be,Ce,me],(e=>m(e[2])?[]:[,,].fill(ke(...e)))),Ae),delListener:e=>(x(e),Ae),getListenerStats:()=>({})};return ne(Ae)},e.defaultSorter=le,Object.defineProperty(e,"__esModule",{value:!0})},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("fs")):"function"==typeof define&&define.amd?define(["exports","fs"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBase={},e.fs);
1
+ var e,t;e=this,t=function(e,t){"use strict";const s=e=>typeof e,n="",o=s(n),r=s(!0),a=s(0),i=s(s),d="type",l="default",c="utf8",u=(e,t)=>e.includes(t),f=(e,t)=>e.every(((s,n)=>0==n||t(e[n-1],s)<=0)),h=(e,t)=>e.sort(t),g=(e,t)=>e.forEach(t),p=e=>v(e,((e,t)=>e+t),0),L=e=>e.length,w=e=>0==L(e),v=(e,t,s)=>e.reduce(t,s),I=e=>e.slice(1),y=(e,t)=>e.push(t),S=e=>e.pop(),R=e=>JSON.stringify(e,((e,t)=>k(t,Map)?v([...t],((e,[t,s])=>(e[t]=s,e)),{}):t)),T=JSON.parse,b=Math.max,C=Math.min,m=isFinite,k=(e,t)=>e instanceof t,E=e=>null==e,M=(e,t,s)=>E(e)?s?.():t(e),x=e=>e==o||e==r,A=e=>s(e)==i,P=()=>{},D=e=>e.size,J=(e,t)=>e?.has(t)??!1,F=e=>E(e)||0==D(e),O=e=>[...e?.values()??[]],j=e=>e.clear(),z=(e,t)=>e?.forEach(t),N=(e,t)=>e?.delete(t),B=e=>new Map(e),_=(e=B)=>[e(),e()],q=e=>[...e?.keys()??[]],H=(e,t)=>e?.get(t),W=(e,t)=>z(e,((e,s)=>t(s,e))),G=(e,t,s)=>E(s)?(N(e,t),e):e?.set(t,s),K=(e,t,s,n)=>(J(e,t)||(n?.(s),e.set(t,s)),H(e,t)),Q=(e,t)=>{const s={},n=t??(e=>e);return z(e,((e,t)=>s[t]=n(e))),s},U=(e,t)=>{const s=B(),n=t??(e=>e);return z(e,((e,t)=>s.set(t,n(e)))),s},V=e=>new Set(e),X=(e,t)=>e?.add(t),Y=(e,t,s)=>{const n=e.hasRow,o=B(),r=B(),a=B(),i=B(),d=B(),l=t=>M(H(d,t),(s=>{z(s,e.delListener),G(d,t)})),c=e=>{G(o,e),G(r,e),G(a,e),G(i,e),l(e)};return[()=>e,()=>q(o),e=>W(r,e),e=>J(r,e),e=>H(o,e),e=>H(r,e),(e,t)=>G(r,e,t),(c,u,f,h,p)=>{const L=B(),w=B();G(o,c,u),J(r,c)||(G(r,c,t()),G(a,c,B()),G(i,c,B()));const v=H(a,c),I=H(i,c),y=t=>{const o=s=>e.getCell(u,t,s),r=H(v,t),a=n(u,t)?s(h(o,t)):void 0;if(r!=a&&G(L,t,[r,a]),!E(p)){const e=H(I,t),s=n(u,t)?p(o,t):void 0;e!=s&&G(w,t,s)}},S=e=>{f((()=>{z(L,(([,e],t)=>G(v,t,e))),z(w,((e,t)=>G(I,t,e)))}),L,w,v,I,e),j(L),j(w)};W(v,y),e.hasTable(u)&&g(e.getRowIds(u),(e=>{J(v,e)||y(e)})),S(!0),l(c),G(d,c,V([e.addRowListener(u,null,((e,t,s)=>y(s))),e.addTableListener(u,(()=>S()))]))},c,()=>W(d,c)]},Z=(e,t)=>s(e)==o?t=>t(e):e??(()=>t??n),$=e=>{const t=new WeakMap;return s=>(t.has(s)||t.set(s,e(s)),t.get(s))},ee=(e,t,s)=>L(s)<2?X(w(s)?e:K(e,s[0],V()),t):ee(K(e,s[0],B()),t,I(s)),te=e=>{const t=(s,n,...o)=>M(s,(s=>w(o)?e(s,n):g([o[0],null],(e=>t(H(s,e),n,...I(o))))));return t},se=e=>{let t,s=0;const n=[],o=B();return[(r,a,i=[])=>{t??=e();const d=S(n)??""+s++;return G(o,d,[r,a,i]),ee(a,d,i),d},(e,s=[],...n)=>te(z)(e,(e=>M(H(o,e),(([e])=>e(t,...s,...n)))),...s),e=>M(H(o,e),(([,t,s])=>(te(N)(t,e,...s),G(o,e),L(n)<1e3&&y(n,e),s)),(()=>[])),(e,s,n)=>M(H(o,e),(([e,,o])=>{const r=(...a)=>{const i=L(a);i==L(o)?e(t,...a,...n(a)):E(o[i])?g(s[i](...a),(e=>r(...a,e))):r(...a,o[i])};r()}))]},ne=Object,oe=ne.keys,re=ne.isFrozen,ae=ne.freeze,ie=(e,t)=>!E(((e,t)=>M(e,(e=>e[t])))(e,t)),de=(e,t)=>delete e[t],le=(e,t)=>g(ne.entries(e),(([e,s])=>t(s,e))),ce=e=>w(oe(e)),ue=$((e=>{let t,s,n,o=100,r=B(),a=1;const i=V(),d=B(),[l,c,f]=se((()=>N)),h=B(),p=B(),v=[],I=[],R=(t,s)=>{a=0,e.transaction((()=>z(H(h,s),((s,n)=>z(s,((s,o)=>z(s,((s,r)=>E(s[t])?e.delCell(n,o,r,!0):e.setCell(n,o,r,s[t]))))))))),a=1},T=e=>{G(h,e),G(p,e),c(d,[e])},b=(e,t)=>g(((e,t)=>e.splice(0,t))(e,t??L(e)),T),C=()=>b(v,L(v)-o),m=e.addCellListener(null,null,null,((e,s,o,i,d,l)=>{if(a){M(t,(()=>{y(v,t),C(),b(I),t=void 0,n=1}));const e=K(r,s,B()),a=K(e,o,B()),c=K(a,i,[void 0,void 0],(e=>e[0]=l));c[1]=d,c[0]===c[1]&&F(G(a,i))&&F(G(e,o))&&F(G(r,s))&&(t=S(v),n=1),P()}})),k=(e="")=>(E(t)&&(t=""+s++,G(h,t,r),O(t,e),r=B(),n=1),t),x=()=>{w(v)||(I.unshift(k()),R(0,t),t=S(v),n=1)},A=()=>{w(I)||(y(v,t),t=I.shift(),R(1,t),n=1)},P=()=>{n&&(c(i),n=0)},D=e=>{const t=k(e);return P(),t},O=(e,t)=>(j(e)&&H(p,e)!==t&&(G(p,e,t),c(d,[e])),N),j=e=>J(h,e),N={setSize:e=>(o=e,C(),N),addCheckpoint:D,setCheckpoint:O,getStore:()=>e,getCheckpointIds:()=>[[...v],t,[...I]],forEachCheckpoint:e=>W(p,e),hasCheckpoint:j,getCheckpoint:e=>H(p,e),goBackward:()=>(x(),P(),N),goForward:()=>(A(),P(),N),goTo:e=>{const s=u(v,e)?x:u(I,e)?A:null;for(;!E(s)&&e!=t;)s();return P(),N},addCheckpointIdsListener:e=>l(e,i),addCheckpointListener:(e,t)=>l(t,d,[e]),delListener:e=>(f(e),N),clear:()=>(b(v),b(I),E(t)||T(t),t=void 0,s=0,D(),N),destroy:()=>{e.delListener(m)},getListenerStats:()=>({})};return ae(N.clear())})),fe=(e,t)=>e<t?-1:1,he=$((e=>{const t=B(),s=B(),[o,r,a,i,d,l,c,u,g,p]=Y(e,B,(e=>E(e)?n:e+n)),[L,w,v]=se((()=>y)),I=(t,s,n)=>{const o=d(t);z(n,((t,n)=>s(n,(s=>z(t,(t=>s(t,(s=>e.forEachCell(o,t,s)))))))))},y={setIndexDefinition:(e,n,o,r,a,i=fe)=>{const d=E(a)?void 0:([e],[t])=>a(e,t);return u(e,n,((n,o,a,u,g,p)=>{let L=0;const v=V(),I=V(),y=l(e);if(z(o,(([e,t],s)=>{E(e)||(X(v,e),M(H(y,e),(t=>{N(t,s),F(t)&&(G(y,e),L=1)}))),E(t)||(X(v,t),J(y,t)||(G(y,t,V()),L=1),X(H(y,t),s),E(r)||X(I,t))})),n(),F(g)||(p?W(y,(e=>X(I,e))):W(a,(e=>M(H(u,e),(e=>X(I,e))))),z(I,(e=>{const t=(t,s)=>i(H(g,t),H(g,s),e),s=[...H(y,e)];f(s,t)||(G(y,e,V(h(s,t))),X(v,e))}))),(L||p)&&!E(d)){const t=[...y];f(t,d)||(c(e,B(h(t,d))),L=1)}L&&w(t,[e]),z(v,(t=>w(s,[e,t])))}),Z(o),M(r,Z)),y},delIndexDefinition:e=>(g(e),y),getStore:o,getIndexIds:r,forEachIndex:e=>a(((t,s)=>e(t,(e=>I(t,e,s))))),forEachSlice:(e,t)=>I(e,t,l(e)),hasIndex:i,hasSlice:(e,t)=>J(l(e),t),getTableId:d,getSliceIds:e=>q(l(e)),getSliceRowIds:(e,t)=>O(H(l(e),t)),addSliceIdsListener:(e,s)=>L(s,t,[e]),addSliceRowIdsListener:(e,t,n)=>L(n,s,[e,t]),delListener:e=>(v(e),y),destroy:p,getListenerStats:()=>({})};return ae(y)})),ge=B([["avg",[(e,t)=>p(e)/t,(e,t,s)=>e+(t-e)/(s+1),(e,t,s)=>e+(e-t)/(s-1),(e,t,s,n)=>e+(t-s)/n]],["max",[e=>b(...e),(e,t)=>b(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:b(t,e)]],["min",[e=>C(...e),(e,t)=>C(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:C(t,e)]],["sum",[e=>p(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,s)=>e-s+t]]]),pe=$((e=>{const t=B(),[s,o,r,a,i,d,l,c,u,f]=Y(e,P,(e=>isNaN(e)||E(e)||!0===e||!1===e||e===n?void 0:1*e)),[h,g,p]=se((()=>L)),L={setMetricDefinition:(e,s,n,o,r,a,i)=>{const u=A(n)?[n,r,a,i]:H(ge,n)??H(ge,"sum");return c(e,s,((s,n,o,r,a,i)=>{let c=d(e),f=D(r);const[h,p,L,w]=u;i=i||E(c),z(n,(([e,t])=>{i||(c=E(e)?p?.(c,t,f++):E(t)?L?.(c,e,f--):w?.(c,t,e,f)),i=i||E(c)})),s(),F(r)?c=void 0:i&&(c=h(O(r),D(r))),m(c)||(c=void 0);const v=d(e);c!=v&&(l(e,c),g(t,[e],c,v))}),Z(o,1)),L},delMetricDefinition:e=>(u(e),L),getStore:s,getMetricIds:o,forEachMetric:r,hasMetric:a,getTableId:i,getMetric:d,addMetricListener:(e,s)=>h(s,t,[e]),delListener:e=>(p(e),L),destroy:f,getListenerStats:()=>({})};return ae(L)})),Le=(e,t,s,n,o)=>{let r,a=0;const i={load:async s=>{if(2!=a){a=1;const n=await t();E(n)||""==n?e.setTables(s):e.setJson(n),a=0}return i},startAutoLoad:async e=>(i.stopAutoLoad(),await i.load(e),n(i.load),i),stopAutoLoad:()=>(o(),i),save:async()=>(1!=a&&(a=2,await s(e.getJson()),a=0),i),startAutoSave:async()=>(await i.stopAutoSave().save(),r=e.addTablesListener((()=>i.save())),i),stopAutoSave:()=>(M(r,e.delListener),i),getStore:()=>e,destroy:()=>i.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return ae(i)},we="storage",ve=globalThis.window,Ie=(e,t,s)=>{let n;return Le(e,(async()=>s.getItem(t)),(async e=>s.setItem(t,e)),(e=>{n=n=>{n.storageArea===s&&n.key===t&&e()},ve.addEventListener(we,n)}),(()=>{ve.removeEventListener(we,n),n=void 0}))},ye=e=>e.headers.get("ETag"),Se=$((e=>{const t=B(),s=B(),o=B(),r=B(),[a,i,d,l,c,u,f,h,g,p]=Y(e,(()=>[B(),B(),B(),B()]),(e=>E(e)?void 0:e+n)),[L,w,v]=se((()=>R)),I=(e,t,s)=>M(u(e),(([n,,o])=>{if(!J(o,t)){const r=V();if(c(e)!=S(e))X(r,t);else{let e=t;for(;!E(e)&&!J(r,e);)X(r,e),e=H(n,e)}if(s)return r;G(o,t,r)}return H(o,t)})),y=(e,t)=>M(u(e),(([,,e])=>G(e,t))),S=e=>H(t,e),R={setRelationshipDefinition:(e,n,a,i)=>(G(t,e,a),h(e,n,((t,n)=>{const a=V(),i=V(),d=V(),[l,c]=u(e);z(n,(([t,s],n)=>{E(t)||(X(i,t),M(H(c,t),(e=>{N(e,n),F(e)&&G(c,t)}))),E(s)||(X(i,s),J(c,s)||G(c,s,V()),X(H(c,s),n)),X(a,n),G(l,n,s),W(H(r,e),(t=>{J(I(e,t),n)&&X(d,t)}))})),t(),z(a,(t=>w(s,[e,t]))),z(i,(t=>w(o,[e,t]))),z(d,(t=>{y(e,t),w(r,[e,t])}))}),Z(i)),R),delRelationshipDefinition:e=>(G(t,e),g(e),R),getStore:a,getRelationshipIds:i,forEachRelationship:t=>d((s=>t(s,(t=>e.forEachRow(c(s),t))))),hasRelationship:l,getLocalTableId:c,getRemoteTableId:S,getRemoteRowId:(e,t)=>H(u(e)?.[0],t),getLocalRowIds:(e,t)=>O(H(u(e)?.[1],t)),getLinkedRowIds:(e,t)=>E(u(e))?[t]:O(I(e,t,!0)),addRemoteRowIdListener:(e,t,n)=>L(n,s,[e,t]),addLocalRowIdsListener:(e,t,s)=>L(s,o,[e,t]),addLinkedRowIdsListener:(e,t,s)=>(I(e,t),L(s,r,[e,t])),delListener:e=>(y(...v(e)),R),destroy:p,getListenerStats:()=>({})};return ae(R)})),Re=(e,t,s,n=G)=>{const o=(r=q(e),a=e=>!ie(t,e),r.filter(a));var r,a;return g(oe(t),(n=>s(e,n,t[n]))),g(o,(t=>n(e,t))),e},Te=e=>{const t=s(e);return x(t)||t==a&&m(e)?t:void 0},be=(e,t,s)=>E(e)||!(e=>k(e,ne)&&e.constructor==ne)(e)||ce(e)||re(e)?(s?.(),!1):(le(e,((s,n)=>{t(s,n)||de(e,n)})),!ce(e)),Ce=(e,t,s)=>G(e,t,H(e,t)==-s?void 0:s);e.createCheckpoints=ue,e.createCustomPersister=Le,e.createFilePersister=(e,s)=>{let n;return Le(e,(async()=>{try{return await t.promises.readFile(s,c)}catch{}}),(async e=>{try{await t.promises.writeFile(s,e,c)}catch{}}),(e=>{n=t.watch(s,e)}),(()=>{n?.close(),n=void 0}))},e.createIndexes=he,e.createLocalPersister=(e,t)=>Ie(e,t,localStorage),e.createMetrics=pe,e.createRelationships=Se,e.createRemotePersister=(e,t,s,n)=>{let o,r;return Le(e,(async()=>{const e=await fetch(t);return r=ye(e),e.text()}),(async e=>await fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:e})),(e=>{o=setInterval((async()=>{const s=await fetch(t,{method:"HEAD"}),n=ye(s);E(r)||E(n)||n==r||(r=n,e())}),1e3*n)}),(()=>{M(o,clearInterval),o=void 0}))},e.createSessionPersister=(e,t)=>Ie(e,t,sessionStorage),e.createStore=()=>{let e,t=0,s=0;const n=B(),o=B(),r=B(),i=B(),c=B(),f=B(),h=B(),p=B(),L=_(V),w=_(V),v=_(),I=_(),S=_(),b=_(),C=_(),m=_(),[k,P,D,O]=se((()=>je)),N=(t,s)=>(!e||J(f,s)||ye(s))&&be(t,((e,t)=>Y(s,t,e)),(()=>ye(s))),Y=(e,t,s,n)=>be(n?s:$(s,e,t),((n,o)=>M(Z(e,t,o,n),(e=>(s[o]=e,!0)),(()=>!1))),(()=>ye(e,t))),Z=(t,s,n,o)=>e?M(H(H(f,t),n),(e=>Te(o)!=e.type?ye(t,s,n,o,e.default):o),(()=>ye(t,s,n,o))):E(Te(o))?ye(t,s,n,o):o,$=(e,t,s)=>(M(H(h,t),(([n,o])=>{z(n,((t,s)=>{ie(e,s)||(e[s]=t)})),z(o,(n=>{ie(e,n)||ye(t,s,n)}))})),e),ee=e=>Re(f,e,((e,t,s)=>{const n=B(),o=V();Re(K(f,t,B()),s,((e,t,s)=>{G(e,t,s),M(s.default,(e=>G(n,t,e)),(()=>X(o,t)))})),G(h,t,[n,o])}),((e,t)=>{G(f,t),G(h,t)})),te=e=>Re(p,e,((e,t,s)=>ne(t,s)),((e,t)=>he(t))),ne=(e,t)=>Re(K(p,e,B(),(()=>Le(e,1))),t,((t,s,n)=>oe(e,t,s,n)),((t,s)=>ge(e,t,s))),oe=(e,t,s,n,o)=>Re(K(t,s,B(),(()=>we(e,s,1))),n,((t,n,o)=>re(e,s,t,n,o)),((n,r)=>pe(e,t,s,n,r,o))),re=(e,t,s,n,o)=>{J(s,n)||ve(e,t,n,1);const r=H(s,n);o!==r&&(Ie(e,t,n,r),G(s,n,o))},ce=(e,t,s,n,o)=>M(H(t,s),(t=>re(e,s,t,n,o)),(()=>oe(e,t,s,$({[n]:o},e,s)))),ue=e=>{const s=""+t++;return J(e,s)?ue(e):s},fe=e=>H(p,e)??ne(e,{}),he=e=>ne(e,{}),ge=(e,t,s)=>oe(e,t,s,{},!0),pe=(e,t,s,n,o,r)=>{const a=H(H(h,e)?.[0],o);if(!E(a)&&!r)return re(e,s,n,o,a);const i=t=>{Ie(e,s,t,H(n,t)),ve(e,s,t,-1),G(n,t)};E(a)?i(o):W(n,i),F(n)&&(we(e,s,-1),F(G(t,s))&&(Le(e,-1),G(p,e)))},Le=(e,t)=>Ce(n,e,t),we=(e,t,s)=>Ce(K(o,e,B()),t,s),ve=(e,t,s,n)=>Ce(K(K(r,e,B()),t,B()),s,n),Ie=(e,t,s,n)=>K(K(K(i,e,B()),t,B()),s,n),ye=(e,t,s,n,o)=>(y(K(K(K(c,e,B()),t,B()),s,[]),n),o),Se=(e,t,s)=>{const n=H(H(i,e),t),o=De(e,t,s);return J(n,s)?[!0,H(n,s),o]:[!1,o,o]},me=e=>F(c)||F(m[e])?0:z(e?U(c,(e=>U(e,U))):c,((t,s)=>z(t,((t,n)=>z(t,((t,o)=>P(m[e],[s,n,o],t))))))),ke=e=>{if(!F(i)){const t=F(b[e])&&F(I[e])&&F(w[e]),s=F(C[e])&&F(S[e])&&F(v[e])&&F(L[e]);if(!t||!s){const a=e?[U(n),U(o,U),U(r,(e=>U(e,U))),U(i,(e=>U(e,U)))]:[n,o,r,i];if(t||(z(a[2],((t,s)=>z(t,((t,n)=>{F(t)||P(b[e],[s,n])})))),z(a[1],((t,s)=>{F(t)||P(I[e],[s])})),F(a[0])||P(w[e])),!s){let t;z(a[3],((s,n)=>{let o;z(s,((s,r)=>{let a;z(s,((s,i)=>{const d=De(n,r,i);d!==s&&(P(C[e],[n,r,i],d,s,Se),t=o=a=1)})),a&&P(S[e],[n,r],Se)})),o&&P(v[e],[n],Se)})),t&&P(L[e],[],Se)}}}},Ee=e=>(Oe(e),je),Me=()=>Q(p,(e=>Q(e,Q))),xe=()=>q(p),Ae=e=>q(H(p,e)),Pe=(e,t)=>q(H(H(p,e),t)),De=(e,t,s)=>H(H(H(p,e),t),s),Je=e=>Ee((()=>(e=>be(e,N,ye))(e)?te(e):0)),Fe=()=>Ee((()=>te({}))),Oe=e=>{if(-1==s)return;s++;const t=e?.();return s--,0==s&&(s=1,me(1),ke(1),s=-1,me(0),ke(0),s=0,g([i,c,n,o,r],j)),t},je={getTables:Me,getTableIds:xe,getTable:e=>Q(H(p,e),Q),getRowIds:Ae,getRow:(e,t)=>Q(H(H(p,e),t)),getCellIds:Pe,getCell:De,hasTables:()=>!F(p),hasTable:e=>J(p,e),hasRow:(e,t)=>J(H(p,e),t),hasCell:(e,t,s)=>J(H(H(p,e),t),s),getJson:()=>R(p),getSchemaJson:()=>R(f),setTables:Je,setTable:(e,t)=>Ee((()=>N(t,e)?ne(e,t):0)),setRow:(e,t,s)=>Ee((()=>Y(e,t,s)?oe(e,fe(e),t,s):0)),addRow:(e,t)=>Oe((()=>{let s;return Y(e,s,t)&&oe(e,fe(e),s=ue(H(p,e)),t),s})),setPartialRow:(e,t,s)=>Ee((()=>{if(Y(e,t,s,1)){const n=fe(e);le(s,((s,o)=>ce(e,n,t,o,s)))}})),setCell:(e,t,s,n)=>Ee((()=>M(Z(e,t,s,A(n)?n(De(e,t,s)):n),(n=>ce(e,fe(e),t,s,n))))),setJson:e=>{try{"{}"===e?Fe():Je(T(e))}catch{}return je},setSchema:t=>Ee((()=>{if((e=(e=>be(e,(e=>be(e,(e=>{if(!be(e,((e,t)=>u([d,l],t))))return!1;const t=e.type;return!(!x(t)&&t!=a||(Te(e.default)!=t&&de(e,l),0))})))))(t))&&(ee(t),!F(p))){const e=Me();Fe(),Je(e)}})),delTables:Fe,delTable:e=>Ee((()=>J(p,e)?he(e):0)),delRow:(e,t)=>Ee((()=>M(H(p,e),(s=>J(s,t)?ge(e,s,t):0)))),delCell:(e,t,s,n)=>Ee((()=>M(H(p,e),(o=>M(H(o,t),(r=>J(r,s)?pe(e,o,t,r,s,n):0)))))),delSchema:()=>Ee((()=>{ee({}),e=!1})),transaction:Oe,forEachTable:e=>z(p,((t,s)=>e(s,(e=>z(t,((t,s)=>e(s,(e=>W(t,e))))))))),forEachRow:(e,t)=>z(H(p,e),((e,s)=>t(s,(t=>W(e,t))))),forEachCell:(e,t,s)=>W(H(H(p,e),t),s),addTablesListener:(e,t)=>k(e,L[t?1:0]),addTableIdsListener:(e,t)=>k(e,w[t?1:0]),addTableListener:(e,t,s)=>k(t,v[s?1:0],[e]),addRowIdsListener:(e,t,s)=>k(t,I[s?1:0],[e]),addRowListener:(e,t,s,n)=>k(s,S[n?1:0],[e,t]),addCellIdsListener:(e,t,s,n)=>k(s,b[n?1:0],[e,t]),addCellListener:(e,t,s,n,o)=>k(n,C[o?1:0],[e,t,s]),addInvalidCellListener:(e,t,s,n,o)=>k(n,m[o?1:0],[e,t,s]),callListener:e=>(O(e,[xe,Ae,Pe],(e=>E(e[2])?[]:[,,].fill(De(...e)))),je),delListener:e=>(D(e),je),getListenerStats:()=>({})};return ae(je)},e.defaultSorter=fe,Object.defineProperty(e,"__esModule",{value:!0})},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("fs")):"function"==typeof define&&define.amd?define(["exports","fs"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBase={},e.fs);
Binary file