svelte-map-reduce-store
v0.1.8
Published
```typescript import { MapReduce } from 'svelte-map-reduce-store';
Downloads
5
Readme
Svelte Map Reduce Store
import { MapReduce } from 'svelte-map-reduce-store';
export type Folder = {
_id: 'hello' | 'test' | 'beta';
server?: string;
config?: {
maxsize: {
MAXSIZE_ACTION: number;
MAXSIZE_MEMOCNT: number;
MAXSIZE_MEMOLINE: number;
};
path: {
DIR_LIB: './lib';
DIR_HTML: './html';
DIR_RS: './rs';
DIR_VIL: './data/vil';
DIR_USER: '../data/user';
};
};
};
export const Folders = MapReduce({
format: () => ({
list: [] as Folder[],
sameSites: new Set([location.origin])
}),
reduce: (data, doc) => {
if (doc.server) data.sameSites.add(`http://${doc.server}`);
},
order: (data, { sort, group_sort }, mode: 'asc' | 'desc') => {
data.list = sort(data.list)[mode]((o) => o.server);
}
});
<script lang="ts">
import { Folders } from './model';
Folders.add([
{
_id: 'hello',
server: 'https://localhost/hello-world'
},
{
_id: 'test',
server: 'https://localhost/testpage'
}
]);
Folders.deploy({
hello: {
server: 'https://localhost/hello-world'
},
test: {
server: 'https://localhost/testpage'
}
});
Folders.find('hello');
Folders.reduce(['hello', 'test'], (o: { count: number }) => {
o.count ||= 0;
o.count++;
}).asc((o) => o.count);
Folders.sort('desc');
Folders.sort('asc');
$: console.log($Folders.list);
</script>