5.3.7 • Published 8 months ago

tinybase v5.3.7

Weekly downloads
-
License
MIT
Repository
github
Last release
8 months ago
import {createStore} from 'tinybase';

const store = createStore()
  .setValues({employees: 3})
  .setValue('open', true);

console.log(store.getValues());
// -> {employees: 3, open: true}
store
  .setTable('pets', {fido: {species: 'dog'}})
  .setCell('pets', 'fido', 'color', 'brown');

console.log(store.getRow('pets', 'fido'));
// -> {species: 'dog', color: 'brown'}
const listenerId = store.addTableListener('pets', () =>
  console.log('changed'),
);

store.setCell('pets', 'fido', 'sold', false);
// -> 'changed'

store.delListener(listenerId);
import React from 'react';
import {createRoot} from 'react-dom/client';
import {useCell} from 'tinybase/ui-react';

const App1 = () => {
  const color = useCell('pets', 'fido', 'color', store);
  return <>Color: {color}</>;
};

const app = document.createElement('div');
const root = createRoot(app);
root.render(<App1 />);
console.log(app.innerHTML);
// -> 'Color: brown'

store.setCell('pets', 'fido', 'color', 'walnut');
console.log(app.innerHTML);
// -> 'Color: walnut'

root.unmount();
store.setTablesSchema({
  pets: {
    species: {type: 'string'},
    color: {type: 'string'},
    sold: {type: 'boolean', default: false},
  },
});

store.setRow('pets', 'polly', {species: 'parrot'});
console.log(store.getRow('pets', 'polly'));
// -> {species: 'parrot', sold: false}

store.delTablesSchema();
import {WebSocketServer, WebSocket} from 'ws';
import {createMergeableStore} from 'tinybase';
import {createWsServer} from 'tinybase/synchronizers/synchronizer-ws-server';
import {createWsSynchronizer} from 'tinybase/synchronizers/synchronizer-ws-client';

// On a server machine:
const server = createWsServer(
  new WebSocketServer({port: 8040}),
);

// On a client machine:
const store1 = createMergeableStore();
const synchronizer1 = await createWsSynchronizer(
  store1,
  new WebSocket('ws://localhost:8040'),
);
await synchronizer1.startSync();

// ...

synchronizer1.destroy();
server.destroy();
import {createSessionPersister} from 'tinybase/persisters/persister-browser';

const persister = createSessionPersister(store, 'demo');
await persister.save();

console.log(sessionStorage.getItem('demo'));
// ->
`
[
  {
    "pets":{
      "fido":{"species":"dog","color":"walnut","sold":false},
      "polly":{"species":"parrot","sold":false}
    }
  },
  {"employees":3,"open":true}
]
`;

persister.destroy();
sessionStorage.clear();
import {createQueries} from 'tinybase';

store
  .setTable('pets', {
    fido: {species: 'dog', ownerId: '1', price: 5},
    rex: {species: 'dog', ownerId: '2', price: 4},
    felix: {species: 'cat', ownerId: '2', price: 3},
    cujo: {species: 'dog', ownerId: '3', price: 4},
  })
  .setTable('owners', {
    1: {name: 'Alice', state: 'CA'},
    2: {name: 'Bob', state: 'CA'},
    3: {name: 'Carol', state: 'WA'},
  });

const queries = createQueries(store);
queries.setQueryDefinition(
  'prices',
  'pets',
  ({select, join, group}) => {
    select('species');
    select('owners', 'state');
    select('price');
    join('owners', 'ownerId');
    group('price', 'avg').as('avgPrice');
  },
);

queries
  .getResultSortedRowIds('prices', 'avgPrice', true)
  .forEach((rowId) => {
    console.log(queries.getResultRow('prices', rowId));
  });
// -> {species: 'dog', state: 'CA', avgPrice: 4.5}
// -> {species: 'dog', state: 'WA', avgPrice: 4}
// -> {species: 'cat', state: 'CA', avgPrice: 3}

queries.destroy();
import {createMetrics} from 'tinybase';

store.setTable('species', {
  dog: {price: 5},
  cat: {price: 4},
  worm: {price: 1},
});

const metrics = createMetrics(store);
metrics.setMetricDefinition(
  'highestPrice', // metricId
  'species', //      tableId to aggregate
  'max', //          aggregation
  'price', //        cellId to aggregate
);

console.log(metrics.getMetric('highestPrice'));
// -> 5

metrics.addMetricListener('highestPrice', () =>
  console.log(metrics.getMetric('highestPrice')),
);
store.setCell('species', 'horse', 'price', 20);
// -> 20

metrics.destroy();
import {createIndexes} from 'tinybase';

const indexes = createIndexes(store);
indexes.setIndexDefinition(
  'bySpecies', // indexId
  'pets', //      tableId to index
  'species', //   cellId to index
);

console.log(indexes.getSliceIds('bySpecies'));
// -> ['dog', 'cat']
console.log(indexes.getSliceRowIds('bySpecies', 'dog'));
// -> ['fido', 'rex', 'cujo']

indexes.addSliceIdsListener('bySpecies', () =>
  console.log(indexes.getSliceIds('bySpecies')),
);
store.setRow('pets', 'lowly', {species: 'worm'});
// -> ['dog', 'cat', 'worm']

indexes.destroy();
import {createRelationships} from 'tinybase';

const relationships = createRelationships(store);
relationships.setRelationshipDefinition(
  'petSpecies', // relationshipId
  'pets', //       local tableId to link from
  'species', //    remote tableId to link to
  'species', //    cellId containing remote key
);

console.log(
  store.getCell(
    relationships.getRemoteTableId('petSpecies'),
    relationships.getRemoteRowId('petSpecies', 'fido'),
    'price',
  ),
);
// -> 5

relationships.destroy();
import {createCheckpoints} from 'tinybase';

const checkpoints = createCheckpoints(store);

store.setCell('pets', 'felix', 'sold', false);
checkpoints.addCheckpoint('pre-sale');

store.setCell('pets', 'felix', 'sold', true);
console.log(store.getCell('pets', 'felix', 'sold'));
// -> true

checkpoints.goBackward();
console.log(store.getCell('pets', 'felix', 'sold'));
// -> false
const tools = createTools(store);
const [dTs, ts] = tools.getStoreApi('shop');

// -- shop.d.ts --
/* Represents the 'pets' Table. */
export type PetsTable = {[rowId: Id]: PetsRow};
/* Represents a Row when getting the content of the 'pets' Table. */
export type PetsRow = {species: string /* ... */};
//...

// -- shop.ts --
export const createShop: typeof createShopDecl = () => {
  //...
};
5.3.7

8 months ago

5.4.0-beta.2

8 months ago

5.3.6

8 months ago

5.4.0-beta.1

8 months ago

5.3.5

8 months ago

5.3.0-beta.0

10 months ago

5.3.0-beta.2

10 months ago

5.3.0-beta.1

10 months ago

5.3.0-beta.3

9 months ago

5.2.3

10 months ago

5.2.2

10 months ago

5.2.1

10 months ago

5.2.0

10 months ago

5.3.4

8 months ago

5.3.3

8 months ago

5.3.2

9 months ago

5.3.1

9 months ago

5.3.0

9 months ago

5.2.0-beta.5

10 months ago

5.4.0-beta.0

9 months ago

5.0.5

11 months ago

5.0.4

11 months ago

5.0.3

12 months ago

5.0.2

12 months ago

4.8.9

1 year ago

5.0.1

12 months ago

5.0.0

12 months ago

5.1.5

10 months ago

5.1.4

10 months ago

5.1.3

10 months ago

5.1.2

11 months ago

5.1.1

11 months ago

5.1.0

11 months ago

5.2.0-beta.4

10 months ago

5.2.0-beta.3

10 months ago

5.2.0-beta.2

10 months ago

5.2.0-beta.1

11 months ago

5.2.0-beta.0

11 months ago

5.1.0-beta.0

12 months ago

5.1.0-beta.1

11 months ago

5.0.0-beta.22

1 year ago

5.0.0-beta.23

1 year ago

5.0.0-beta.20

1 year ago

5.0.0-beta.21

1 year ago

5.0.0-beta.26

12 months ago

5.0.0-beta.27

12 months ago

5.0.0-beta.24

1 year ago

5.0.0-beta.25

1 year ago

5.0.0-beta.28

12 months ago

4.8.10

1 year ago

4.8.12

1 year ago

4.8.11

1 year ago

4.8.14

1 year ago

4.8.13

1 year ago

4.8.16

12 months ago

4.8.15

12 months ago

4.8.17

12 months ago

5.0.0-beta.19

1 year ago

5.0.0-beta.17

1 year ago

5.0.0-beta.18

1 year ago

5.0.0-beta.16

1 year ago

4.8.8

1 year ago

5.0.0-beta.15

1 year ago

4.8.7

1 year ago

4.8.5

1 year ago

4.8.6

1 year ago

5.0.0-beta.13

1 year ago

5.0.0-beta.14

1 year ago

5.0.0-beta.12

1 year ago

5.0.0-beta.11

1 year ago

4.8.4

1 year ago

5.0.0-beta.10

1 year ago

4.8.3

1 year ago

5.0.0-beta.9

1 year ago

5.0.0-beta.8

1 year ago

5.0.0-beta.7

1 year ago

5.0.0-beta.6

1 year ago

4.8.2

1 year ago

4.8.1

1 year ago

4.8.0

1 year ago

4.7.4

1 year ago

4.7.3

1 year ago

4.7.2

1 year ago

5.0.0-beta.5

1 year ago

4.7.1

1 year ago

4.7.0

1 year ago

4.6.14

1 year ago

4.6.13

1 year ago

5.0.0-beta.4

1 year ago

4.6.12

1 year ago

4.6.11

1 year ago

5.0.0-beta.3

1 year ago

4.6.10

1 year ago

4.6.9

1 year ago

4.6.8

1 year ago

4.6.7

1 year ago

5.0.0-beta.2

1 year ago

4.6.6

1 year ago

4.6.5

1 year ago

4.6.4

1 year ago

4.6.3

1 year ago

5.0.0-beta.1

1 year ago

4.6.2

1 year ago

4.6.1

1 year ago

5.0.0-beta.0

1 year ago

4.5.12

1 year ago

4.6.0

1 year ago

4.6.0-beta.3

1 year ago

4.5.11

1 year ago

4.5.10

1 year ago

4.6.0-beta.2

2 years ago

4.6.0-beta.1

2 years ago

4.5.9

2 years ago

4.5.8

2 years ago

4.5.7

2 years ago

4.5.4

2 years ago

4.5.3

2 years ago

4.5.6

2 years ago

4.5.5

2 years ago

4.4.1

2 years ago

4.4.2

2 years ago

4.5.0

2 years ago

4.5.2

2 years ago

4.5.1

2 years ago

4.6.0-beta.0

2 years ago

4.5.0-beta.0

2 years ago

4.4.0

2 years ago

4.4.0-beta.1

2 years ago

4.4.0-beta.2

2 years ago

4.3.13

2 years ago

4.3.12

2 years ago

4.3.17

2 years ago

4.3.16

2 years ago

4.3.15

2 years ago

4.3.14

2 years ago

4.3.19

2 years ago

4.3.18

2 years ago

4.3.20

2 years ago

4.3.24

2 years ago

4.3.23

2 years ago

4.3.22

2 years ago

4.3.21

2 years ago

3.2.0

2 years ago

4.0.4

2 years ago

4.0.1

2 years ago

4.0.0

2 years ago

4.0.3

2 years ago

4.0.2

2 years ago

4.2.0-beta.0

2 years ago

4.2.0-beta.1

2 years ago

4.0.0-beta.5.1

2 years ago

3.1.6

2 years ago

3.1.5

2 years ago

3.1.4

2 years ago

4.3.2

2 years ago

4.3.1

2 years ago

4.3.4

2 years ago

4.3.3

2 years ago

4.3.0

2 years ago

4.3.0-beta.1

2 years ago

4.3.0-beta.0

2 years ago

4.0.0-beta.5.2

2 years ago

4.0.0-beta.5.3

2 years ago

4.3.9

2 years ago

4.4.0-beta.0

2 years ago

4.3.6

2 years ago

4.3.5

2 years ago

4.3.8

2 years ago

4.3.7

2 years ago

4.3.11

2 years ago

4.3.10

2 years ago

4.2.3

2 years ago

4.2.2

2 years ago

4.2.1

2 years ago

4.2.0

2 years ago

4.1.0-beta.0

2 years ago

4.1.0-beta.1

2 years ago

4.1.0-beta.4

2 years ago

4.1.0-beta.5

2 years ago

4.1.0-beta.2

2 years ago

4.1.0-beta.3

2 years ago

3.3.0

2 years ago

4.0.0-beta.5

2 years ago

4.0.0-beta.4

2 years ago

4.0.0-beta.3

2 years ago

4.1.4

2 years ago

4.1.3

2 years ago

4.1.0

2 years ago

4.1.2

2 years ago

4.1.1

2 years ago

3.0.4

2 years ago

3.0.3

2 years ago

3.0.2

2 years ago

3.0.1

2 years ago

3.0.6

2 years ago

3.0.5

2 years ago

3.0.0

2 years ago

3.0.0-beta.1

2 years ago

3.1.0-beta.1

2 years ago

3.1.0-beta.2

2 years ago

3.1.0-beta.3

2 years ago

3.1.0-beta.4

2 years ago

3.1.0-beta.5

2 years ago

3.1.0-beta.0

2 years ago

3.1.3

2 years ago

3.1.2

2 years ago

3.1.1

2 years ago

3.1.0

2 years ago

4.0.0-beta.2

2 years ago

4.0.0-beta.1

2 years ago

4.0.0-beta.0

2 years ago

3.2.0-beta.0

2 years ago

2.2.0-beta.0

3 years ago

2.2.0-beta.1

3 years ago

2.2.1

3 years ago

2.2.0

3 years ago

2.2.3

3 years ago

2.2.2

3 years ago

2.2.5

3 years ago

2.2.4

3 years ago

2.2.6

3 years ago

3.0.0-beta.0

2 years ago

2.1.1

3 years ago

2.0.0-beta.5

3 years ago

2.1.0

3 years ago

2.0.1

3 years ago

2.0.0-beta.4

3 years ago

2.0.0

3 years ago

2.1.0-beta.0

3 years ago

1.3.6

3 years ago

1.3.5

3 years ago

2.0.0-beta.2

3 years ago

2.0.0-beta.1

3 years ago

2.0.0-beta.0

3 years ago

2.0.0-beta.3

3 years ago

1.3.4

3 years ago

1.3.3

3 years ago

1.3.2

3 years ago

1.2.3

3 years ago

1.3.1

3 years ago

1.2.2

3 years ago

1.3.0

3 years ago

1.2.1

3 years ago

1.3.0-beta.0

3 years ago

1.2.0

3 years ago

1.2.0-beta.1

3 years ago

1.2.0-beta.0

3 years ago

1.1.0

3 years ago

1.1.0-beta.2

3 years ago

1.1.0-beta.1

3 years ago

1.1.0-beta.0

3 years ago

1.0.5

3 years ago

1.0.4

3 years ago

1.0.3

3 years ago

1.0.2

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago

0.9.4

3 years ago

0.9.3

3 years ago

0.9.2

3 years ago

0.9.1

3 years ago

0.9.0

3 years ago

0.0.0

3 years ago