@fireproof/core 0.16.1 → 0.16.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. package/README.md +14 -7
  2. package/dist/browser/fireproof.cjs +251 -34623
  3. package/dist/browser/fireproof.cjs.map +1 -7
  4. package/dist/browser/fireproof.d.cts +286 -0
  5. package/dist/browser/fireproof.d.ts +286 -0
  6. package/dist/browser/fireproof.global.js +21282 -0
  7. package/dist/browser/fireproof.global.js.map +1 -0
  8. package/dist/browser/fireproof.js +1114 -0
  9. package/dist/browser/fireproof.js.map +1 -0
  10. package/dist/browser/metafile-cjs.json +1 -0
  11. package/dist/browser/metafile-esm.json +1 -0
  12. package/dist/browser/metafile-iife.json +1 -0
  13. package/dist/memory/fireproof.cjs +1143 -0
  14. package/dist/memory/fireproof.cjs.map +1 -0
  15. package/dist/memory/fireproof.d.cts +286 -0
  16. package/dist/memory/fireproof.d.ts +286 -0
  17. package/dist/memory/fireproof.global.js +21282 -0
  18. package/dist/memory/fireproof.global.js.map +1 -0
  19. package/dist/memory/fireproof.js +1114 -0
  20. package/dist/memory/fireproof.js.map +1 -0
  21. package/dist/memory/metafile-cjs.json +1 -0
  22. package/dist/memory/metafile-esm.json +1 -0
  23. package/dist/memory/metafile-iife.json +1 -0
  24. package/dist/node/fireproof.cjs +210 -43910
  25. package/dist/node/fireproof.cjs.map +1 -7
  26. package/dist/node/fireproof.d.cts +286 -0
  27. package/dist/node/fireproof.d.ts +286 -0
  28. package/dist/node/fireproof.global.js +21338 -0
  29. package/dist/node/fireproof.global.js.map +1 -0
  30. package/dist/node/fireproof.js +1114 -0
  31. package/dist/node/fireproof.js.map +1 -0
  32. package/dist/node/metafile-cjs.json +1 -0
  33. package/dist/node/metafile-esm.json +1 -0
  34. package/dist/node/metafile-iife.json +1 -0
  35. package/package.json +38 -33
  36. package/dist/browser/fireproof.esm.js +0 -35509
  37. package/dist/browser/fireproof.esm.js.map +0 -7
  38. package/dist/browser/fireproof.iife.js +0 -35517
  39. package/dist/browser/fireproof.iife.js.map +0 -7
  40. package/dist/node/fireproof.esm.js +0 -44848
  41. package/dist/node/fireproof.esm.js.map +0 -7
  42. package/dist/types/apply-head-queue.d.ts +0 -15
  43. package/dist/types/crdt-clock.d.ts +0 -20
  44. package/dist/types/crdt-helpers.d.ts +0 -14
  45. package/dist/types/crdt.d.ts +0 -27
  46. package/dist/types/database.d.ts +0 -48
  47. package/dist/types/eb-edge.d.ts +0 -0
  48. package/dist/types/eb-node.d.ts +0 -3
  49. package/dist/types/eb-web.d.ts +0 -3
  50. package/dist/types/files.d.ts +0 -12
  51. package/dist/types/fireproof.d.ts +0 -3
  52. package/dist/types/index.d.ts +0 -31
  53. package/dist/types/indexer-helpers.d.ts +0 -57
  54. package/dist/types/types.d.ts +0 -136
  55. package/dist/types/version.d.ts +0 -1
  56. package/dist/types/write-queue.d.ts +0 -7
@@ -1,15 +0,0 @@
1
- import { ClockHead, DocUpdate } from './types';
2
- type ApplyHeadWorkerFunction = (newHead: ClockHead, prevHead: ClockHead) => Promise<void>;
3
- type ApplyHeadTask = {
4
- newHead: ClockHead;
5
- prevHead: ClockHead;
6
- updates: DocUpdate[] | null;
7
- };
8
- export type ApplyHeadQueue = {
9
- push(task: ApplyHeadTask): AsyncGenerator<{
10
- updates: DocUpdate[];
11
- all: boolean;
12
- }, void, unknown>;
13
- };
14
- export declare function applyHeadQueue(worker: ApplyHeadWorkerFunction): ApplyHeadQueue;
15
- export {};
@@ -1,20 +0,0 @@
1
- import type { EncryptedBlockstore } from '@fireproof/encrypted-blockstore';
2
- import type { DocUpdate, ClockHead } from './types';
3
- import { ApplyHeadQueue } from './apply-head-queue';
4
- export declare class CRDTClock {
5
- head: ClockHead;
6
- zoomers: Set<() => void>;
7
- watchers: Set<(updates: DocUpdate[]) => void>;
8
- emptyWatchers: Set<() => void>;
9
- blockstore: EncryptedBlockstore | null;
10
- applyHeadQueue: ApplyHeadQueue;
11
- constructor();
12
- setHead(head: ClockHead): void;
13
- applyHead(newHead: ClockHead, prevHead: ClockHead, updates?: DocUpdate[] | null): Promise<void>;
14
- processUpdates(updatesAcc: DocUpdate[], all: boolean, prevHead: ClockHead): Promise<void>;
15
- notifyWatchers(updates: DocUpdate[]): void;
16
- onTick(fn: (updates: DocUpdate[]) => void): void;
17
- onTock(fn: () => void): void;
18
- onZoom(fn: () => void): void;
19
- int_applyHead(newHead: ClockHead, prevHead: ClockHead): Promise<void>;
20
- }
@@ -1,14 +0,0 @@
1
- import { Block } from 'multiformats/block';
2
- import { type EncryptedBlockstore, type CompactionFetcher, CarTransaction, BlockFetcher } from '@fireproof/encrypted-blockstore';
3
- import type { DocUpdate, ClockHead, DocValue, CRDTMeta, ChangesOptions } from './types';
4
- export declare function applyBulkUpdateToCrdt(tblocks: CarTransaction, head: ClockHead, updates: DocUpdate[], options?: object): Promise<CRDTMeta>;
5
- export declare function getValueFromCrdt(blocks: EncryptedBlockstore, head: ClockHead, key: string): Promise<DocValue>;
6
- export declare function readFiles(blocks: EncryptedBlockstore, { doc }: DocValue): void;
7
- export declare function clockChangesSince(blocks: BlockFetcher, head: ClockHead, since: ClockHead, opts: ChangesOptions): Promise<{
8
- result: DocUpdate[];
9
- head: ClockHead;
10
- }>;
11
- export declare function getAllEntries(blocks: BlockFetcher, head: ClockHead): AsyncGenerator<DocUpdate, void, unknown>;
12
- export declare function clockVis(blocks: EncryptedBlockstore, head: ClockHead): AsyncGenerator<string, void, unknown>;
13
- export declare function doCompact(blockLog: CompactionFetcher, head: ClockHead): Promise<void>;
14
- export declare function getBlock(blocks: BlockFetcher, cidString: string): Promise<Block<unknown, 113, 18, 1>>;
@@ -1,27 +0,0 @@
1
- import { EncryptedBlockstore } from '@fireproof/encrypted-blockstore';
2
- import type { DocUpdate, CRDTMeta, ClockHead, ConfigOpts, ChangesOptions } from './types';
3
- import { type Index } from './index';
4
- import { CRDTClock } from './crdt-clock';
5
- export declare class CRDT {
6
- name: string | null;
7
- opts: ConfigOpts;
8
- ready: Promise<void>;
9
- blockstore: EncryptedBlockstore;
10
- indexBlockstore: EncryptedBlockstore;
11
- indexers: Map<string, Index>;
12
- clock: CRDTClock;
13
- constructor(name?: string, opts?: ConfigOpts);
14
- bulk(updates: DocUpdate[], options?: object): Promise<CRDTMeta>;
15
- allDocs(): Promise<{
16
- result: DocUpdate[];
17
- head: ClockHead;
18
- }>;
19
- vis(): Promise<string>;
20
- getBlock(cidString: string): Promise<import("multiformats/dist/types/src/block").Block<unknown, 113, 18, 1>>;
21
- get(key: string): Promise<import("./types").DocValue | null>;
22
- changes(since?: ClockHead, opts?: ChangesOptions): Promise<{
23
- result: DocUpdate[];
24
- head: ClockHead;
25
- }>;
26
- compact(): Promise<void>;
27
- }
@@ -1,48 +0,0 @@
1
- import { WriteQueue } from './write-queue';
2
- import { CRDT } from './crdt';
3
- import type { DocUpdate, ClockHead, Doc, ConfigOpts, MapFn, QueryOpts, ChangesOptions } from './types';
4
- import { DbResponse, ChangesResponse } from './types';
5
- import { EncryptedBlockstore } from '@fireproof/encrypted-blockstore';
6
- type DbName = string | null;
7
- export declare class Database {
8
- static databases: Map<string, Database>;
9
- name: DbName;
10
- opts: ConfigOpts;
11
- _listening: boolean;
12
- _listeners: Set<ListenerFn>;
13
- _noupdate_listeners: Set<ListenerFn>;
14
- _crdt: CRDT;
15
- _writeQueue: WriteQueue;
16
- blockstore: EncryptedBlockstore;
17
- constructor(name?: string, opts?: ConfigOpts);
18
- get(id: string): Promise<Doc>;
19
- put(doc: Doc): Promise<DbResponse>;
20
- del(id: string): Promise<DbResponse>;
21
- changes(since?: ClockHead, opts?: ChangesOptions): Promise<ChangesResponse>;
22
- allDocs(): Promise<{
23
- rows: {
24
- key: string;
25
- value: Doc;
26
- }[];
27
- clock: ClockHead;
28
- }>;
29
- allDocuments(): Promise<{
30
- rows: {
31
- key: string;
32
- value: Doc;
33
- }[];
34
- clock: ClockHead;
35
- }>;
36
- subscribe(listener: ListenerFn | NoUpdateListenerFn, updates?: boolean): () => void;
37
- query(field: string | MapFn, opts?: QueryOpts): Promise<{
38
- rows: import("./types").IndexRow[];
39
- }>;
40
- compact(): Promise<void>;
41
- _notify(updates: DocUpdate[]): Promise<void>;
42
- _no_update_notify(): Promise<void>;
43
- }
44
- type UpdateListenerFn = (docs: Doc[]) => Promise<void> | void;
45
- type NoUpdateListenerFn = () => Promise<void> | void;
46
- type ListenerFn = UpdateListenerFn | NoUpdateListenerFn;
47
- export declare function fireproof(name: string, opts?: ConfigOpts): Database;
48
- export {};
File without changes
@@ -1,3 +0,0 @@
1
- import * as crypto from '@fireproof/encrypted-blockstore/crypto-node';
2
- import * as store from '@fireproof/encrypted-blockstore/store-node';
3
- export { store, crypto };
@@ -1,3 +0,0 @@
1
- import * as crypto from '@fireproof/encrypted-blockstore/crypto-web';
2
- import * as store from '@fireproof/encrypted-blockstore/store-web';
3
- export { store, crypto };
@@ -1,12 +0,0 @@
1
- import { AnyBlock, AnyLink, DocFileMeta } from './types';
2
- export declare function encodeFile(blob: BlobLike): Promise<{
3
- cid: AnyLink;
4
- blocks: AnyBlock[];
5
- }>;
6
- export declare function decodeFile(blocks: unknown, cid: AnyLink, meta: DocFileMeta): Promise<File>;
7
- export interface BlobLike {
8
- /**
9
- * Returns a ReadableStream which yields the Blob data.
10
- */
11
- stream: () => ReadableStream;
12
- }
@@ -1,3 +0,0 @@
1
- export * from './database';
2
-
3
- export * from './types';
@@ -1,31 +0,0 @@
1
- import type { ClockHead, MapFn, QueryOpts, IdxMeta } from './types';
2
- import { EncryptedBlockstore } from '@fireproof/encrypted-blockstore';
3
- import { IndexTree } from './indexer-helpers';
4
- import { CRDT } from './crdt';
5
- export declare function index({ _crdt }: {
6
- _crdt: CRDT;
7
- }, name: string, mapFn?: MapFn, meta?: IdxMeta): Index;
8
- export declare class Index {
9
- blockstore: EncryptedBlockstore;
10
- crdt: CRDT;
11
- name: string | null;
12
- mapFn: MapFn | null;
13
- mapFnString: string;
14
- byKey: IndexTree;
15
- byId: IndexTree;
16
- indexHead: ClockHead | undefined;
17
- includeDocsDefault: boolean;
18
- initError: Error | null;
19
- ready: Promise<void>;
20
- constructor(crdt: CRDT, name: string, mapFn?: MapFn, meta?: IdxMeta);
21
- applyMapFn(name: string, mapFn?: MapFn, meta?: IdxMeta): void;
22
- query(opts?: QueryOpts): Promise<{
23
- rows: import("./types").IndexRow[];
24
- }>;
25
- _resetIndex(): void;
26
- _hydrateIndex(): Promise<void>;
27
- _updateIndex(): Promise<import("@fireproof/encrypted-blockstore/dist/types/types").TransactionMeta | {
28
- byId: IndexTree;
29
- byKey: IndexTree;
30
- }>;
31
- }
@@ -1,57 +0,0 @@
1
- import type { Block, Link } from 'multiformats';
2
- import { ProllyNode as BaseNode } from 'prolly-trees/base';
3
- import { AnyLink, DocUpdate, MapFn, DocFragment, IndexKey, IndexUpdate, QueryOpts, IndexRow } from './types';
4
- import { CarTransaction, BlockFetcher } from '@fireproof/encrypted-blockstore';
5
- import { CRDT } from './crdt';
6
- export declare class IndexTree {
7
- cid: AnyLink | null;
8
- root: ProllyNode | null;
9
- }
10
- export declare const byKeyOpts: StaticProllyOptions;
11
- export declare const byIdOpts: StaticProllyOptions;
12
- export declare function indexEntriesForChanges(changes: DocUpdate[], mapFn: MapFn): {
13
- key: [string, string];
14
- value: DocFragment;
15
- }[];
16
- export declare function bulkIndex(tblocks: CarTransaction, inIndex: IndexTree, indexEntries: IndexUpdate[], opts: StaticProllyOptions): Promise<IndexTree>;
17
- export declare function loadIndex(tblocks: BlockFetcher, cid: AnyLink, opts: StaticProllyOptions): Promise<ProllyNode>;
18
- export declare function applyQuery(crdt: CRDT, resp: {
19
- result: IndexRow[];
20
- }, query: QueryOpts): Promise<{
21
- rows: IndexRow[];
22
- }>;
23
- export declare function encodeRange(range: [DocFragment, DocFragment]): [IndexKey, IndexKey];
24
- export declare function encodeKey(key: DocFragment): string;
25
- interface ProllyNode extends BaseNode {
26
- getAllEntries(): PromiseLike<{
27
- [x: string]: any;
28
- result: IndexRow[];
29
- }>;
30
- getMany(removeIds: string[]): Promise<{
31
- [x: string]: any;
32
- result: IndexKey[];
33
- }>;
34
- range(a: IndexKey, b: IndexKey): Promise<{
35
- result: IndexRow[];
36
- }>;
37
- get(key: string): Promise<{
38
- result: IndexRow[];
39
- }>;
40
- bulk(bulk: IndexUpdate[]): PromiseLike<{
41
- root: ProllyNode | null;
42
- blocks: Block[];
43
- }>;
44
- address: Promise<Link>;
45
- distance: number;
46
- compare: (a: any, b: any) => number;
47
- cache: any;
48
- block: Promise<Block>;
49
- }
50
- interface StaticProllyOptions {
51
- cache: any;
52
- chunker: (entry: any, distance: number) => boolean;
53
- codec: any;
54
- hasher: any;
55
- compare: (a: any, b: any) => number;
56
- }
57
- export {};
@@ -1,136 +0,0 @@
1
- import type { Link } from 'multiformats'
2
- import type { EventLink } from '@alanshaw/pail/clock'
3
- import type { EventData } from '@alanshaw/pail/crdt'
4
-
5
- import type { DbMeta } from '@fireproof/encrypted-blockstore'
6
-
7
- export type ConfigOpts = {
8
- public?: boolean
9
- meta?: DbMeta
10
- persistIndexes?: boolean
11
- }
12
-
13
- // ts-unused-exports:disable-next-line
14
- export type ClockLink = EventLink<EventData>
15
-
16
- export type ClockHead = ClockLink[]
17
-
18
- export type DocFragment =
19
- | Uint8Array
20
- | string
21
- | number
22
- | boolean
23
- | null
24
- | AnyLink
25
- | DocFragment[]
26
- | { [key: string]: DocFragment }
27
-
28
- export type Doc = DocBody & DocBase
29
-
30
- export type DocBase = {
31
- _id?: string
32
- _files?: DocFiles
33
- _publicFiles?: DocFiles
34
- }
35
-
36
- export type DocFileMeta = {
37
- type: string
38
- size: number
39
- cid: AnyLink
40
- car?: AnyLink
41
- url?: string
42
- file?: () => Promise<File>
43
- }
44
-
45
- export type DocFiles = Record<string, DocFileMeta | File>;
46
-
47
- type DocBody = Record<string, DocFragment> & {
48
- _files?: DocFiles;
49
- _publicFiles?: DocFiles;
50
- }
51
-
52
- // type DocMeta = {
53
- // proof?: DocFragment
54
- // clock?: ClockHead
55
- // }
56
-
57
- export type DocUpdate = {
58
- key: string
59
- value?: { [key: string]: any }
60
- del?: boolean
61
- clock?: AnyLink
62
- }
63
- // todo merge into above
64
- export type DocValue = {
65
- doc?: DocBody
66
- del?: boolean
67
- }
68
-
69
- export type IndexKey = [string, string] | string
70
-
71
- export type IndexUpdate = {
72
- key: IndexKey
73
- value?: DocFragment
74
- del?: boolean
75
- }
76
-
77
- export type IndexRow = {
78
- id: string
79
- key: IndexKey
80
- row?: DocFragment
81
- doc?: Doc | null
82
- value?: DocFragment
83
- del?: boolean
84
- }
85
-
86
- export type CRDTMeta = {
87
- head: ClockHead
88
- }
89
-
90
- // export type FileMeta = {
91
- // files: { [key: string]: DocFileMeta }
92
- // }
93
-
94
- export type IdxMeta = {
95
- byId: AnyLink
96
- byKey: AnyLink
97
- map: string
98
- name: string
99
- head: ClockHead
100
- }
101
-
102
- export type IdxMetaMap = {
103
- indexes: Map<string, IdxMeta>
104
- }
105
-
106
- export type QueryOpts = {
107
- descending?: boolean
108
- limit?: number
109
- includeDocs?: boolean
110
- range?: [IndexKey, IndexKey]
111
- key?: DocFragment
112
- keys?: DocFragment[]
113
- prefix?: DocFragment | [DocFragment]
114
- }
115
-
116
- export type AnyLink = Link<unknown, number, number, 1 | 0>
117
- export type AnyBlock = { cid: AnyLink; bytes: Uint8Array }
118
- export type AnyDecodedBlock = { cid: AnyLink; bytes: Uint8Array; value: any }
119
-
120
- type EmitFn = (k: DocFragment, v?: DocFragment) => void
121
- export type MapFn = (doc: Doc, emit: EmitFn) => DocFragment | void
122
-
123
- export type ChangesOptions = {
124
- dirty?: boolean
125
- limit?: number
126
- }
127
-
128
- export type ChangesResponse = {
129
- clock: ClockHead
130
- rows: { key: string; value: Doc }[]
131
- }
132
-
133
- export type DbResponse = {
134
- id: string
135
- clock: ClockHead
136
- }
@@ -1 +0,0 @@
1
- export declare const PACKAGE_VERSION = "0.16.1";
@@ -1,7 +0,0 @@
1
- import { CRDTMeta, DocUpdate } from './types';
2
- type WorkerFunction = (tasks: DocUpdate[]) => Promise<CRDTMeta>;
3
- export type WriteQueue = {
4
- push(task: DocUpdate): Promise<CRDTMeta>;
5
- };
6
- export declare function writeQueue(worker: WorkerFunction, payload?: number, unbounded?: boolean): WriteQueue;
7
- export {};