@fireproof/core 0.16.1 → 0.16.3

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.
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 {};