@superbee/core 0.1.6 → 0.2.0-pre.1
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/dist/backend.d.ts.map +1 -1
- package/dist/backend.js +29 -7
- package/dist/backend.js.map +1 -1
- package/dist/bundle-ops.d.ts +42 -0
- package/dist/bundle-ops.d.ts.map +1 -0
- package/dist/bundle-ops.js +88 -0
- package/dist/bundle-ops.js.map +1 -0
- package/dist/bundle.d.ts +8 -27
- package/dist/bundle.d.ts.map +1 -1
- package/dist/bundle.js +9 -66
- package/dist/bundle.js.map +1 -1
- package/dist/document-field-actions.d.ts +95 -0
- package/dist/document-field-actions.d.ts.map +1 -0
- package/dist/document-field-actions.js +261 -0
- package/dist/document-field-actions.js.map +1 -0
- package/dist/document-mutation.d.ts +46 -2
- package/dist/document-mutation.d.ts.map +1 -1
- package/dist/document-mutation.js +79 -19
- package/dist/document-mutation.js.map +1 -1
- package/dist/document-write-policy.d.ts +0 -1
- package/dist/document-write-policy.d.ts.map +1 -1
- package/dist/document-write-policy.js +3 -2
- package/dist/document-write-policy.js.map +1 -1
- package/dist/engine.d.ts +2 -0
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +2 -1
- package/dist/engine.js.map +1 -1
- package/dist/freshness.d.ts +10 -7
- package/dist/freshness.d.ts.map +1 -1
- package/dist/freshness.js +14 -11
- package/dist/freshness.js.map +1 -1
- package/dist/frontmatter-contract.d.ts +2 -2
- package/dist/frontmatter-contract.js +2 -2
- package/dist/frontmatter.d.ts +3 -1
- package/dist/frontmatter.d.ts.map +1 -1
- package/dist/frontmatter.js +7 -4
- package/dist/frontmatter.js.map +1 -1
- package/dist/index.d.ts +10 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -2
- package/dist/index.js.map +1 -1
- package/dist/indexeddb-backend.d.ts +165 -0
- package/dist/indexeddb-backend.d.ts.map +1 -0
- package/dist/indexeddb-backend.js +718 -0
- package/dist/indexeddb-backend.js.map +1 -0
- package/dist/journaled-backend.d.ts +178 -0
- package/dist/journaled-backend.d.ts.map +1 -0
- package/dist/journaled-backend.js +77 -0
- package/dist/journaled-backend.js.map +1 -0
- package/dist/kind-field-mutation.d.ts +15 -0
- package/dist/kind-field-mutation.d.ts.map +1 -0
- package/dist/kind-field-mutation.js +160 -0
- package/dist/kind-field-mutation.js.map +1 -0
- package/dist/kinds.d.ts.map +1 -1
- package/dist/kinds.js +3 -1
- package/dist/kinds.js.map +1 -1
- package/dist/meaningful-change-time.d.ts +6 -6
- package/dist/meaningful-change-time.d.ts.map +1 -1
- package/dist/meaningful-change-time.js +12 -13
- package/dist/meaningful-change-time.js.map +1 -1
- package/dist/mutation.d.ts.map +1 -1
- package/dist/mutation.js +2 -2
- package/dist/mutation.js.map +1 -1
- package/dist/page.d.ts.map +1 -1
- package/dist/page.js +2 -1
- package/dist/page.js.map +1 -1
- package/dist/platform.d.ts +161 -0
- package/dist/platform.d.ts.map +1 -0
- package/dist/platform.js +77 -0
- package/dist/platform.js.map +1 -0
- package/dist/recipes.d.ts +3 -1
- package/dist/recipes.d.ts.map +1 -1
- package/dist/recipes.js +4 -4
- package/dist/recipes.js.map +1 -1
- package/dist/remote-backend.d.ts +28 -0
- package/dist/remote-backend.d.ts.map +1 -1
- package/dist/remote-backend.js +75 -2
- package/dist/remote-backend.js.map +1 -1
- package/dist/remote-operations.d.ts +60 -0
- package/dist/remote-operations.d.ts.map +1 -0
- package/dist/remote-operations.js +110 -0
- package/dist/remote-operations.js.map +1 -0
- package/dist/sha256.d.ts +21 -0
- package/dist/sha256.d.ts.map +1 -0
- package/dist/sha256.js +114 -0
- package/dist/sha256.js.map +1 -0
- package/dist/storage.d.ts +5 -1
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +7 -1
- package/dist/storage.js.map +1 -1
- package/dist/types.d.ts +12 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/uncertain-write.d.ts +142 -0
- package/dist/uncertain-write.d.ts.map +1 -0
- package/dist/uncertain-write.js +174 -0
- package/dist/uncertain-write.js.map +1 -0
- package/dist/version-transport.d.ts +7 -0
- package/dist/version-transport.d.ts.map +1 -1
- package/dist/version-transport.js +9 -0
- package/dist/version-transport.js.map +1 -1
- package/dist/versioning.d.ts +9 -3
- package/dist/versioning.d.ts.map +1 -1
- package/dist/versioning.js +14 -10
- package/dist/versioning.js.map +1 -1
- package/package.json +42 -3
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IndexedDB-backed {@link JournaledBackend}: the browser-local working copy's first persistent
|
|
3
|
+
* store candidate, sitting behind the same core seam as {@link FilesystemBackend} and
|
|
4
|
+
* {@link MemoryBackend} and proven by the same adapter contract kit, plus the journal seam the
|
|
5
|
+
* sync runtime needs (`journaled-backend.ts`), proven by that kit's journal rows.
|
|
6
|
+
*
|
|
7
|
+
* Storage shape mirrors the filesystem adapter, not the memory adapter: a concept document is
|
|
8
|
+
* stored as its exact OKF-serialized string and parsed on every read, so the read body carries
|
|
9
|
+
* the serializer's normalization (the trailing newline) and the version token is
|
|
10
|
+
* `versionOfBytes(raw)` over the same bytes the disk copy would hold. Reserved files are stored
|
|
11
|
+
* as raw strings and blobs as raw bytes, both content-addressed with the shared primitives, so a
|
|
12
|
+
* document, reserved file, or blob carries one token on disk, in memory, and in the browser.
|
|
13
|
+
*
|
|
14
|
+
* Compare-and-swap is one IndexedDB readwrite transaction per mutation: the current record is
|
|
15
|
+
* read, compared, and replaced (or the transaction aborted with a {@link VersionConflict}) before
|
|
16
|
+
* the transaction commits. IndexedDB serializes readwrite transactions that overlap on a store,
|
|
17
|
+
* so two adapter instances (two tabs, two workers) over the same database cannot both win a
|
|
18
|
+
* conditional write. A write resolves only after the transaction's `complete` event, which is
|
|
19
|
+
* the point a local-save indicator may follow. That is a commit promise, not a power-loss
|
|
20
|
+
* promise: the browser decides when committed pages reach stable storage.
|
|
21
|
+
*
|
|
22
|
+
* Two further stores serve the working copy's synchronization: `intents` journals every local
|
|
23
|
+
* write as a pending-change intent committed in the same transaction as the document record
|
|
24
|
+
* ({@link IndexedDbBackend.writeJournaled}), and `meta` holds opaque key-value rows such as the
|
|
25
|
+
* bootstrap marker and per-document shared bases. The adapter owns the transaction mechanics;
|
|
26
|
+
* what the rows mean belongs to the sync component that writes them, and what the verbs
|
|
27
|
+
* promise is stated once on the seam.
|
|
28
|
+
*
|
|
29
|
+
* This module imports no Node builtin so it bundles for the browser; the IndexedDB factory is
|
|
30
|
+
* injectable so a Node test can supply an in-memory implementation without touching globals.
|
|
31
|
+
*/
|
|
32
|
+
import { type IntentPatch, type IntentRecord, type JournaledBackend, type JournaledReadResult, type JournaledWriteOptions, type MetaRecord } from "./journaled-backend.js";
|
|
33
|
+
import type { OperationState } from "./uncertain-write.js";
|
|
34
|
+
import type { BlobKey, ConceptId, DeleteOptions, OkfDocument, ReadBlobResult, ReadResult, ReservedFilename, ReservedReadResult, StorageCapabilities, Version, VersionInfo, WriteOptions } from "./types.js";
|
|
35
|
+
export { IntentHoldConflict, IntentStateConflict } from "./journaled-backend.js";
|
|
36
|
+
export type { IntentPatch, IntentRecord, JournaledReadResult, JournaledWriteOptions, MetaRecord, NewIntentRecord } from "./journaled-backend.js";
|
|
37
|
+
type Handler = ((this: any, event: any) => any) | null;
|
|
38
|
+
export interface IdbRequestLike<T = unknown> {
|
|
39
|
+
readonly result: T;
|
|
40
|
+
readonly error: unknown;
|
|
41
|
+
onsuccess: Handler;
|
|
42
|
+
onerror: Handler;
|
|
43
|
+
}
|
|
44
|
+
export interface IdbOpenRequestLike extends IdbRequestLike<IdbDatabaseLike> {
|
|
45
|
+
onupgradeneeded: Handler;
|
|
46
|
+
onblocked: Handler;
|
|
47
|
+
readonly transaction: IdbTransactionLike | null;
|
|
48
|
+
}
|
|
49
|
+
export interface IdbObjectStoreLike {
|
|
50
|
+
get(key: string): IdbRequestLike;
|
|
51
|
+
getAll(): IdbRequestLike<unknown[]>;
|
|
52
|
+
getAllKeys(): IdbRequestLike<unknown[]>;
|
|
53
|
+
count(key: string): IdbRequestLike<number>;
|
|
54
|
+
put(value: unknown): IdbRequestLike;
|
|
55
|
+
delete(key: string): IdbRequestLike;
|
|
56
|
+
}
|
|
57
|
+
export interface IdbTransactionLike {
|
|
58
|
+
objectStore(name: string): IdbObjectStoreLike;
|
|
59
|
+
abort(): void;
|
|
60
|
+
readonly error: unknown;
|
|
61
|
+
oncomplete: Handler;
|
|
62
|
+
onerror: Handler;
|
|
63
|
+
onabort: Handler;
|
|
64
|
+
}
|
|
65
|
+
export interface IdbDatabaseLike {
|
|
66
|
+
readonly version: number;
|
|
67
|
+
readonly objectStoreNames: {
|
|
68
|
+
contains(name: string): boolean;
|
|
69
|
+
readonly length: number;
|
|
70
|
+
};
|
|
71
|
+
createObjectStore(name: string, options?: {
|
|
72
|
+
keyPath?: string;
|
|
73
|
+
}): unknown;
|
|
74
|
+
transaction(storeNames: string | string[], mode?: "readonly" | "readwrite"): IdbTransactionLike;
|
|
75
|
+
close(): void;
|
|
76
|
+
onversionchange: Handler;
|
|
77
|
+
}
|
|
78
|
+
export interface IdbFactoryLike {
|
|
79
|
+
open(name: string, version?: number): IdbOpenRequestLike;
|
|
80
|
+
}
|
|
81
|
+
export interface IndexedDbBackendOptions {
|
|
82
|
+
/** The IndexedDB database holding this working copy; one bundle per database. */
|
|
83
|
+
databaseName: string;
|
|
84
|
+
/** The factory to open it with. Defaults to the host's global `indexedDB`. */
|
|
85
|
+
indexedDB?: IdbFactoryLike;
|
|
86
|
+
}
|
|
87
|
+
/** The database does not carry this adapter's schema and the adapter refuses to touch it. */
|
|
88
|
+
export declare class IndexedDbSchemaError extends Error {
|
|
89
|
+
readonly name = "IndexedDbSchemaError";
|
|
90
|
+
}
|
|
91
|
+
/** Bumping this requires a migration in `upgrade`; the handler refuses any other older layout. */
|
|
92
|
+
export declare const INDEXEDDB_SCHEMA_VERSION = 1;
|
|
93
|
+
/**
|
|
94
|
+
* A persistent browser-local OKF store implementing the {@link JournaledBackend} contract over
|
|
95
|
+
* IndexedDB. One instance per bundle per JavaScript realm; several instances over the same
|
|
96
|
+
* database name are peers whose conditional writes are serialized by the database.
|
|
97
|
+
*/
|
|
98
|
+
export declare class IndexedDbBackend implements JournaledBackend {
|
|
99
|
+
#private;
|
|
100
|
+
/**
|
|
101
|
+
* What a resolved write promises: the IndexedDB transaction reported `complete`. Whether the
|
|
102
|
+
* committed pages survive power loss is the browser's and the operating system's decision.
|
|
103
|
+
*/
|
|
104
|
+
readonly durability: "transaction-committed";
|
|
105
|
+
constructor(options: IndexedDbBackendOptions);
|
|
106
|
+
/** Whether an IndexedDB factory is reachable, so a caller can fall back to another store. */
|
|
107
|
+
static available(indexedDB?: IdbFactoryLike): boolean;
|
|
108
|
+
/** The database name this adapter opens. */
|
|
109
|
+
get databaseName(): string;
|
|
110
|
+
capabilities(): StorageCapabilities;
|
|
111
|
+
/** Release the database handle. The next operation reopens it lazily. */
|
|
112
|
+
close(): void;
|
|
113
|
+
read(id: ConceptId): Promise<ReadResult>;
|
|
114
|
+
readMany(ids: ConceptId[]): Promise<ReadResult[]>;
|
|
115
|
+
write(id: ConceptId, doc: OkfDocument, options?: WriteOptions): Promise<Version>;
|
|
116
|
+
delete(id: ConceptId, options?: DeleteOptions): Promise<boolean>;
|
|
117
|
+
exists(id: ConceptId): Promise<boolean>;
|
|
118
|
+
list(prefix?: string): Promise<ConceptId[]>;
|
|
119
|
+
versions(id: ConceptId): Promise<VersionInfo[]>;
|
|
120
|
+
readReserved(dir: string, name: ReservedFilename): Promise<ReservedReadResult | null>;
|
|
121
|
+
writeReserved(dir: string, name: ReservedFilename, content: string, options?: WriteOptions): Promise<Version>;
|
|
122
|
+
/**
|
|
123
|
+
* One transaction over documents, intents, and meta: the document compare-and-swap of
|
|
124
|
+
* {@link write}, plus (optionally) deleting a superseded intent, recording a new intent for
|
|
125
|
+
* the written bytes, and putting meta rows. Every step is conditional on every other: a
|
|
126
|
+
* failed document CAS records no intent, and a superseded intent whose state moved fails the
|
|
127
|
+
* whole write with {@link IntentStateConflict} so the caller composes against fresh state.
|
|
128
|
+
* With `requireSettled`, an unsettled intent on the target fails it with
|
|
129
|
+
* {@link IntentHoldConflict} before the document is touched.
|
|
130
|
+
*/
|
|
131
|
+
writeJournaled(id: ConceptId, doc: OkfDocument, options?: JournaledWriteOptions): Promise<{
|
|
132
|
+
version: Version;
|
|
133
|
+
raw: string;
|
|
134
|
+
intent: IntentRecord | null;
|
|
135
|
+
}>;
|
|
136
|
+
/**
|
|
137
|
+
* The document, every intent targeting it, and the named meta rows, from ONE readonly
|
|
138
|
+
* transaction over documents, reserved, intents, and meta. A caller deriving where a document
|
|
139
|
+
* stands (its bytes against its shared base and its journal) reads them here so a write in
|
|
140
|
+
* another realm between separate reads can never show it a document of one moment beside a
|
|
141
|
+
* journal of another; with this snapshot a mismatch is a genuine working-copy defect.
|
|
142
|
+
*/
|
|
143
|
+
readWithJournal(id: ConceptId, options?: {
|
|
144
|
+
meta?: readonly string[];
|
|
145
|
+
}): Promise<JournaledReadResult>;
|
|
146
|
+
/** Intents in local commit order, optionally restricted to one or more states. */
|
|
147
|
+
listIntents(state?: OperationState | readonly OperationState[]): Promise<IntentRecord[]>;
|
|
148
|
+
readIntent(requestId: string): Promise<IntentRecord | undefined>;
|
|
149
|
+
/**
|
|
150
|
+
* Compare-and-swap on an intent's `state`: the patch applies only while the record is in
|
|
151
|
+
* `expectedState`, together with any meta rows, in one transaction. A different state or a
|
|
152
|
+
* missing record rejects with {@link IntentStateConflict} and writes nothing.
|
|
153
|
+
*/
|
|
154
|
+
updateIntent(requestId: string, expectedState: OperationState, patch: IntentPatch, options?: {
|
|
155
|
+
meta?: MetaRecord[];
|
|
156
|
+
}): Promise<IntentRecord>;
|
|
157
|
+
readMeta<T = unknown>(key: string): Promise<T | undefined>;
|
|
158
|
+
writeMeta(key: string, value: unknown): Promise<void>;
|
|
159
|
+
readBlob(key: BlobKey): Promise<ReadBlobResult | null>;
|
|
160
|
+
writeBlob(key: BlobKey, bytes: Uint8Array, contentType?: string, options?: WriteOptions): Promise<Version>;
|
|
161
|
+
deleteBlob(key: BlobKey, options?: DeleteOptions): Promise<boolean>;
|
|
162
|
+
existsBlob(key: BlobKey): Promise<boolean>;
|
|
163
|
+
listBlobs(prefix?: string): Promise<BlobKey[]>;
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=indexeddb-backend.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indexeddb-backend.d.ts","sourceRoot":"","sources":["../src/indexeddb-backend.ts"],"names":[],"mappings":"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"}
|