@hraness/oh 0.3.2 → 0.4.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/README.md +164 -114
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +811 -97
- package/dist/errors.d.ts +39 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/graph.d.ts.map +1 -1
- package/dist/index.js +676 -61
- package/dist/libsql.d.ts.map +1 -1
- package/dist/libsql.js +162 -35
- package/dist/memory-page.js +2 -2
- package/dist/memory.d.ts +87 -6
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +1106 -148
- package/dist/operation.d.ts +3 -1
- package/dist/operation.d.ts.map +1 -1
- package/dist/projection-public.js +2 -2
- package/dist/projection-suss.js +2 -2
- package/dist/sdk.js +780 -88
- package/dist/semantic-cloud.js +2 -2
- package/dist/semantic.js +2 -2
- package/dist/sqlite/index.js +1251 -306
- package/dist/sqlite/port.d.ts +31 -3
- package/dist/sqlite/port.d.ts.map +1 -1
- package/dist/sqlite/store.d.ts +18 -2
- package/dist/sqlite/store.d.ts.map +1 -1
- package/dist/store.d.ts +3 -12
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +154 -32
- package/dist/sync.d.ts +7 -1
- package/dist/sync.d.ts.map +1 -1
- package/dist/sync.js +668 -35
- package/package.json +5 -1
- package/skills/oh/SKILL.md +42 -16
- package/spec/README.md +2 -2
- package/spec/v1/memory.md +134 -16
- package/spec/v1/storage.md +8 -5
- package/spec/v1/store.md +20 -0
- package/spec/v1/sync.md +77 -8
- package/src/cli.test.ts +53 -1
- package/src/cli.ts +34 -8
- package/src/errors.test.ts +87 -0
- package/src/errors.ts +185 -0
- package/src/graph.ts +2 -2
- package/src/libsql.test.ts +36 -0
- package/src/libsql.ts +26 -5
- package/src/memory.test.ts +1488 -18
- package/src/memory.ts +1199 -122
- package/src/operation.ts +13 -3
- package/src/sqlite/port.test.ts +209 -0
- package/src/sqlite/port.ts +118 -4
- package/src/sqlite/store.test.ts +106 -1
- package/src/sqlite/store.ts +168 -30
- package/src/store.test.ts +12 -0
- package/src/store.ts +30 -20
- package/src/sync.test.ts +570 -2
- package/src/sync.ts +586 -36
package/dist/sqlite/port.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { type OhChangesPageV1, type OhCommitInputV1, type OhDependencyClosureV1, type OhHeadRefV1, type OhHeadV1, type OhSnapshotV1, type
|
|
1
|
+
import { type OhChangesPageV1, type OhCommitInputV1, type OhDependencyClosureV1, type OhHeadRefV1, type OhHeadV1, type OhSnapshotV1, type OhStoreBindingV1, type OhStoreHostControlV1, type OhStoreProfileV1, type OhStoreV1, type OhStoreVerificationV1 } from "../store";
|
|
2
2
|
import type { OhOperationV1 } from "../operation";
|
|
3
|
+
import { type OhSyncBundleV1 } from "../sync";
|
|
3
4
|
import type { OhSqliteDatabase } from "./driver";
|
|
4
|
-
import { OhSqliteStore } from "./store";
|
|
5
|
+
import { OhSqliteStore, type OhOperationImportResultV1 } from "./store";
|
|
5
6
|
export type OhSqliteStoreAuthorityOptionsV1 = Readonly<{
|
|
6
7
|
database?: OhSqliteDatabase;
|
|
7
8
|
path?: string;
|
|
@@ -9,6 +10,33 @@ export type OhSqliteStoreAuthorityOptionsV1 = Readonly<{
|
|
|
9
10
|
realmId?: string;
|
|
10
11
|
spaceId?: string;
|
|
11
12
|
}>;
|
|
13
|
+
export interface OhSqliteCanonicalReplicationV1 {
|
|
14
|
+
readonly binding: OhStoreBindingV1;
|
|
15
|
+
exportBundle(input: Readonly<{
|
|
16
|
+
after: OhHeadRefV1;
|
|
17
|
+
limit?: number;
|
|
18
|
+
through: OhHeadRefV1;
|
|
19
|
+
}>): Promise<Readonly<{
|
|
20
|
+
bundle: OhSyncBundleV1;
|
|
21
|
+
from: OhChangesPageV1["from"];
|
|
22
|
+
hasMore: boolean;
|
|
23
|
+
through: OhChangesPageV1["through"];
|
|
24
|
+
to: OhChangesPageV1["to"];
|
|
25
|
+
v: 1;
|
|
26
|
+
}>>;
|
|
27
|
+
head(): Promise<OhHeadV1>;
|
|
28
|
+
importBundle(input: Readonly<{
|
|
29
|
+
bundle: unknown;
|
|
30
|
+
expectedHead: OhHeadRefV1;
|
|
31
|
+
}>): Promise<OhOperationImportResultV1>;
|
|
32
|
+
}
|
|
33
|
+
export interface OhSqliteStoreHostControlV1 extends OhStoreHostControlV1 {
|
|
34
|
+
readonly replication: OhSqliteCanonicalReplicationV1 | null;
|
|
35
|
+
}
|
|
36
|
+
export type OhSqliteStoreAuthorityV1 = Readonly<{
|
|
37
|
+
host: OhSqliteStoreHostControlV1;
|
|
38
|
+
store: OhStoreV1;
|
|
39
|
+
}>;
|
|
12
40
|
export declare class OhSqliteStorePortV1 implements OhStoreV1 {
|
|
13
41
|
#private;
|
|
14
42
|
readonly binding: OhStoreBindingV1;
|
|
@@ -36,5 +64,5 @@ export declare class OhSqliteStorePortV1 implements OhStoreV1 {
|
|
|
36
64
|
* returned `host` object in trusted control-plane code; pass only `store` to
|
|
37
65
|
* ordinary consumers.
|
|
38
66
|
*/
|
|
39
|
-
export declare function createOhSqliteStoreAuthorityV1(options?: OhSqliteStoreAuthorityOptionsV1):
|
|
67
|
+
export declare function createOhSqliteStoreAuthorityV1(options?: OhSqliteStoreAuthorityOptionsV1): OhSqliteStoreAuthorityV1;
|
|
40
68
|
//# sourceMappingURL=port.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"port.d.ts","sourceRoot":"","sources":["../../src/sqlite/port.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"port.d.ts","sourceRoot":"","sources":["../../src/sqlite/port.ts"],"names":[],"mappings":"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"}
|
package/dist/sqlite/store.d.ts
CHANGED
|
@@ -2,9 +2,9 @@ import { type Sha256Hex } from "../canonical";
|
|
|
2
2
|
import { OH_CONTRACT_MANIFEST_V1 } from "../contract";
|
|
3
3
|
import { type KnowledgeGraphRecordKindV1, type KnowledgeGraphRecordV1 } from "../graph";
|
|
4
4
|
import { type OhOperationV1 } from "../operation";
|
|
5
|
-
import { OhConflictError, OhDependencyError, OhIntegrityError, OhProfileError, OhPurgedSpaceError, type OhChangesPageV1, type OhCommitInputV1, type OhDependencyClosureV1, type OhHeadRefV1, type OhHeadV1, type OhSnapshotV1, type OhSpacePurgeReceiptV1, type OhStoreBindingV1 } from "../store";
|
|
5
|
+
import { isOhConflictError, isOhDependencyError, isOhIntegrityError, isOhOperationSizeError, isOhProfileError, OH_OPERATION_SIZE_ERROR_CODE_V1, OhConflictError, OhDependencyError, OhIntegrityError, OhOperationSizeError, OhProfileError, OhPurgedSpaceError, type OhChangesPageV1, type OhCommitInputV1, type OhDependencyClosureV1, type OhHeadRefV1, type OhHeadV1, type OhSnapshotV1, type OhSpacePurgeReceiptV1, type OhStoreBindingV1 } from "../store";
|
|
6
6
|
import { type OhSqliteDatabase } from "./driver";
|
|
7
|
-
export { OhConflictError, OhDependencyError, OhIntegrityError, OhProfileError, OhPurgedSpaceError, };
|
|
7
|
+
export { isOhConflictError, isOhDependencyError, isOhIntegrityError, isOhOperationSizeError, isOhProfileError, OH_OPERATION_SIZE_ERROR_CODE_V1, OhConflictError, OhDependencyError, OhIntegrityError, OhOperationSizeError, OhProfileError, OhPurgedSpaceError, };
|
|
8
8
|
export type { OhCommitInputV1, OhHeadV1 };
|
|
9
9
|
export type OhRecordListOptions = Readonly<{
|
|
10
10
|
kind?: KnowledgeGraphRecordKindV1;
|
|
@@ -25,6 +25,12 @@ export type OhReplayVerificationV1 = Readonly<{
|
|
|
25
25
|
sqliteIntegrity: "ok";
|
|
26
26
|
v: 1;
|
|
27
27
|
}>;
|
|
28
|
+
export type OhOperationImportResultV1 = Readonly<{
|
|
29
|
+
head: OhHeadV1;
|
|
30
|
+
imported: number;
|
|
31
|
+
status: "already-present" | "imported";
|
|
32
|
+
v: 1;
|
|
33
|
+
}>;
|
|
28
34
|
export declare class OhSqliteStore {
|
|
29
35
|
#private;
|
|
30
36
|
readonly database: OhSqliteDatabase;
|
|
@@ -43,6 +49,16 @@ export declare class OhSqliteStore {
|
|
|
43
49
|
imported: boolean;
|
|
44
50
|
operation: OhOperationV1;
|
|
45
51
|
}>;
|
|
52
|
+
/**
|
|
53
|
+
* Imports one already-validated replication interval atomically. A hostile
|
|
54
|
+
* later operation cannot leave a valid prefix committed. Exact replays are
|
|
55
|
+
* accepted only when every supplied operation is already on the current
|
|
56
|
+
* authority chain.
|
|
57
|
+
*/
|
|
58
|
+
importOperations(input: Readonly<{
|
|
59
|
+
expectedHead: OhHeadRefV1;
|
|
60
|
+
operations: readonly unknown[];
|
|
61
|
+
}>): OhOperationImportResultV1;
|
|
46
62
|
exportOperations(afterSequence?: number, limit?: number): readonly OhOperationV1[];
|
|
47
63
|
snapshotAtHead(options?: Readonly<{
|
|
48
64
|
head?: OhHeadRefV1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/sqlite/store.ts"],"names":[],"mappings":"AAGA,OAAO,EAQL,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAML,KAAK,0BAA0B,EAC/B,KAAK,sBAAsB,EAC5B,MAAM,UAAU,CAAC;AAElB,OAAO,
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/sqlite/store.ts"],"names":[],"mappings":"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"}
|
package/dist/store.d.ts
CHANGED
|
@@ -2,19 +2,8 @@ import { type Sha256Hex } from "./canonical";
|
|
|
2
2
|
import { OhRecordCodecRegistry } from "./contract";
|
|
3
3
|
export { OhRecordCodecRegistry } from "./contract";
|
|
4
4
|
import { type KnowledgeGraphChangeV1, type KnowledgeGraphRecordKindV1, type KnowledgeGraphRecordV1 } from "./graph";
|
|
5
|
+
export { isOhConflictError, isOhDependencyError, isOhIntegrityError, isOhOperationSizeError, isOhProfileError, OH_OPERATION_SIZE_ERROR_CODE_V1, OhConflictError, OhDependencyError, OhIntegrityError, OhOperationSizeError, OhProfileError, } from "./errors";
|
|
5
6
|
import { type OhOperationV1 } from "./operation";
|
|
6
|
-
export declare class OhConflictError extends Error {
|
|
7
|
-
constructor(message: string);
|
|
8
|
-
}
|
|
9
|
-
export declare class OhIntegrityError extends Error {
|
|
10
|
-
constructor(message: string);
|
|
11
|
-
}
|
|
12
|
-
export declare class OhDependencyError extends Error {
|
|
13
|
-
constructor(message: string);
|
|
14
|
-
}
|
|
15
|
-
export declare class OhProfileError extends Error {
|
|
16
|
-
constructor(message: string);
|
|
17
|
-
}
|
|
18
7
|
export type OhHeadV1 = Readonly<{
|
|
19
8
|
generation: number;
|
|
20
9
|
graphRevisionSha256: Sha256Hex | null;
|
|
@@ -29,6 +18,7 @@ export type OhCommitInputV1 = Readonly<{
|
|
|
29
18
|
changes: readonly KnowledgeGraphChangeV1[];
|
|
30
19
|
expectedHead: Pick<OhHeadV1, "generation" | "operationSha256">;
|
|
31
20
|
instant?: string;
|
|
21
|
+
maximumOperationBytes?: number;
|
|
32
22
|
operationId: string;
|
|
33
23
|
}>;
|
|
34
24
|
export type OhSnapshotV1 = Readonly<{
|
|
@@ -166,6 +156,7 @@ export declare function transitionOhSnapshotV1(input: Readonly<{
|
|
|
166
156
|
actorId: string;
|
|
167
157
|
changes: readonly KnowledgeGraphChangeV1[];
|
|
168
158
|
instant: string;
|
|
159
|
+
maximumOperationBytes?: number;
|
|
169
160
|
operationId: string;
|
|
170
161
|
snapshot: OhSnapshotV1;
|
|
171
162
|
spaceId: string;
|
package/dist/store.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,KAAK,SAAS,EACf,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,qBAAqB,EACtB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAQL,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,KAAK,sBAAsB,EAC5B,MAAM,SAAS,CAAC;AACjB,OAAO,
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
|
package/dist/store.js
CHANGED
|
@@ -190,7 +190,7 @@ var OH_GRAPH_LIMITS_V1 = Object.freeze({
|
|
|
190
190
|
recordBytes: 1024 * 1024,
|
|
191
191
|
recordsPerSnapshot: 65536
|
|
192
192
|
});
|
|
193
|
-
var OH_KNOWLEDGE_GRAPH_RECORD_KINDS_V1 = [
|
|
193
|
+
var OH_KNOWLEDGE_GRAPH_RECORD_KINDS_V1 = Object.freeze([
|
|
194
194
|
"activity",
|
|
195
195
|
"assertion",
|
|
196
196
|
"context",
|
|
@@ -209,7 +209,7 @@ var OH_KNOWLEDGE_GRAPH_RECORD_KINDS_V1 = [
|
|
|
209
209
|
"type-membership",
|
|
210
210
|
"view",
|
|
211
211
|
"vocabulary"
|
|
212
|
-
];
|
|
212
|
+
]);
|
|
213
213
|
var KNOWLEDGE_GRAPH_RECORD_KEYS_V1 = [
|
|
214
214
|
"dependencies",
|
|
215
215
|
"key",
|
|
@@ -422,6 +422,141 @@ class OhRecordCodecRegistry {
|
|
|
422
422
|
return this.#sealed;
|
|
423
423
|
}
|
|
424
424
|
}
|
|
425
|
+
// src/errors.ts
|
|
426
|
+
var OH_OPERATION_SIZE_ERROR_CODE_V1 = "oh.operation-size.v1";
|
|
427
|
+
var OH_CONFLICT_ERROR_BRAND_V1 = Symbol.for("@hraness/oh/OhConflictError/v1");
|
|
428
|
+
var OH_DEPENDENCY_ERROR_BRAND_V1 = Symbol.for("@hraness/oh/OhDependencyError/v1");
|
|
429
|
+
var OH_INTEGRITY_ERROR_BRAND_V1 = Symbol.for("@hraness/oh/OhIntegrityError/v1");
|
|
430
|
+
var OH_OPERATION_SIZE_ERROR_BRAND_V1 = Symbol.for("@hraness/oh/OhOperationSizeError/v1");
|
|
431
|
+
var OH_PROFILE_ERROR_BRAND_V1 = Symbol.for("@hraness/oh/OhProfileError/v1");
|
|
432
|
+
function immutableOwnValue(value, key) {
|
|
433
|
+
const descriptor = Object.getOwnPropertyDescriptor(value, key);
|
|
434
|
+
return descriptor !== undefined && descriptor.get === undefined && descriptor.set === undefined && descriptor.configurable === false && descriptor.writable === false ? descriptor.value : undefined;
|
|
435
|
+
}
|
|
436
|
+
function brandNativeError(value, brand) {
|
|
437
|
+
Object.defineProperty(value, brand, {
|
|
438
|
+
configurable: false,
|
|
439
|
+
enumerable: false,
|
|
440
|
+
value: true,
|
|
441
|
+
writable: false
|
|
442
|
+
});
|
|
443
|
+
}
|
|
444
|
+
function hasNativeErrorBrand(value, brand) {
|
|
445
|
+
try {
|
|
446
|
+
return Error.isError(value) && immutableOwnValue(value, brand) === true;
|
|
447
|
+
} catch {
|
|
448
|
+
return false;
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
function hasNativeSubclassInstance(constructor, value) {
|
|
452
|
+
return Function.prototype[Symbol.hasInstance].call(constructor, value);
|
|
453
|
+
}
|
|
454
|
+
function isOhConflictError(value) {
|
|
455
|
+
return hasNativeErrorBrand(value, OH_CONFLICT_ERROR_BRAND_V1);
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
class OhConflictError extends Error {
|
|
459
|
+
static [Symbol.hasInstance](value) {
|
|
460
|
+
return this === OhConflictError ? isOhConflictError(value) : hasNativeSubclassInstance(this, value);
|
|
461
|
+
}
|
|
462
|
+
constructor(message) {
|
|
463
|
+
super(message);
|
|
464
|
+
this.name = "OhConflictError";
|
|
465
|
+
brandNativeError(this, OH_CONFLICT_ERROR_BRAND_V1);
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
function isOhIntegrityError(value) {
|
|
469
|
+
return hasNativeErrorBrand(value, OH_INTEGRITY_ERROR_BRAND_V1);
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
class OhIntegrityError extends Error {
|
|
473
|
+
static [Symbol.hasInstance](value) {
|
|
474
|
+
return this === OhIntegrityError ? isOhIntegrityError(value) : hasNativeSubclassInstance(this, value);
|
|
475
|
+
}
|
|
476
|
+
constructor(message) {
|
|
477
|
+
super(message);
|
|
478
|
+
this.name = "OhIntegrityError";
|
|
479
|
+
brandNativeError(this, OH_INTEGRITY_ERROR_BRAND_V1);
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
function isOhDependencyError(value) {
|
|
483
|
+
return hasNativeErrorBrand(value, OH_DEPENDENCY_ERROR_BRAND_V1);
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
class OhDependencyError extends Error {
|
|
487
|
+
static [Symbol.hasInstance](value) {
|
|
488
|
+
return this === OhDependencyError ? isOhDependencyError(value) : hasNativeSubclassInstance(this, value);
|
|
489
|
+
}
|
|
490
|
+
constructor(message) {
|
|
491
|
+
super(message);
|
|
492
|
+
this.name = "OhDependencyError";
|
|
493
|
+
brandNativeError(this, OH_DEPENDENCY_ERROR_BRAND_V1);
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
function isOhProfileError(value) {
|
|
497
|
+
return hasNativeErrorBrand(value, OH_PROFILE_ERROR_BRAND_V1);
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
class OhProfileError extends Error {
|
|
501
|
+
static [Symbol.hasInstance](value) {
|
|
502
|
+
return this === OhProfileError ? isOhProfileError(value) : hasNativeSubclassInstance(this, value);
|
|
503
|
+
}
|
|
504
|
+
constructor(message) {
|
|
505
|
+
super(message);
|
|
506
|
+
this.name = "OhProfileError";
|
|
507
|
+
brandNativeError(this, OH_PROFILE_ERROR_BRAND_V1);
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
function isOhOperationSizeError(value) {
|
|
511
|
+
try {
|
|
512
|
+
if (!Error.isError(value) || !(value instanceof RangeError))
|
|
513
|
+
return false;
|
|
514
|
+
const operationBytes = immutableOwnValue(value, "operationBytes");
|
|
515
|
+
const maximumOperationBytes = immutableOwnValue(value, "maximumOperationBytes");
|
|
516
|
+
return immutableOwnValue(value, OH_OPERATION_SIZE_ERROR_BRAND_V1) === true && immutableOwnValue(value, "code") === OH_OPERATION_SIZE_ERROR_CODE_V1 && Number.isSafeInteger(operationBytes) && operationBytes > 0 && Number.isSafeInteger(maximumOperationBytes) && maximumOperationBytes > 0 && operationBytes > maximumOperationBytes;
|
|
517
|
+
} catch {
|
|
518
|
+
return false;
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
class OhOperationSizeError extends RangeError {
|
|
523
|
+
static [Symbol.hasInstance](value) {
|
|
524
|
+
return this === OhOperationSizeError ? isOhOperationSizeError(value) : hasNativeSubclassInstance(this, value);
|
|
525
|
+
}
|
|
526
|
+
constructor(operationBytes, maximumOperationBytes) {
|
|
527
|
+
if (!Number.isSafeInteger(operationBytes) || operationBytes < 1 || !Number.isSafeInteger(maximumOperationBytes) || maximumOperationBytes < 1 || operationBytes <= maximumOperationBytes) {
|
|
528
|
+
throw new TypeError("Invalid Oh operation size refusal.");
|
|
529
|
+
}
|
|
530
|
+
super(`The ${operationBytes}-byte operation exceeds the host-declared ${maximumOperationBytes}-byte canonical bound.`);
|
|
531
|
+
this.name = "OhOperationSizeError";
|
|
532
|
+
Object.defineProperties(this, {
|
|
533
|
+
[OH_OPERATION_SIZE_ERROR_BRAND_V1]: {
|
|
534
|
+
configurable: false,
|
|
535
|
+
enumerable: false,
|
|
536
|
+
value: true,
|
|
537
|
+
writable: false
|
|
538
|
+
},
|
|
539
|
+
code: {
|
|
540
|
+
configurable: false,
|
|
541
|
+
enumerable: true,
|
|
542
|
+
value: OH_OPERATION_SIZE_ERROR_CODE_V1,
|
|
543
|
+
writable: false
|
|
544
|
+
},
|
|
545
|
+
maximumOperationBytes: {
|
|
546
|
+
configurable: false,
|
|
547
|
+
enumerable: true,
|
|
548
|
+
value: maximumOperationBytes,
|
|
549
|
+
writable: false
|
|
550
|
+
},
|
|
551
|
+
operationBytes: {
|
|
552
|
+
configurable: false,
|
|
553
|
+
enumerable: true,
|
|
554
|
+
value: operationBytes,
|
|
555
|
+
writable: false
|
|
556
|
+
}
|
|
557
|
+
});
|
|
558
|
+
}
|
|
559
|
+
}
|
|
425
560
|
// src/operation.ts
|
|
426
561
|
var OH_OPERATION_MAX_BYTES_V1 = 64 * 1024 * 1024;
|
|
427
562
|
function parsePayload(value) {
|
|
@@ -469,13 +604,18 @@ function parsePayload(value) {
|
|
|
469
604
|
v: 1
|
|
470
605
|
} : null;
|
|
471
606
|
}
|
|
472
|
-
function createOhOperationV1(input) {
|
|
607
|
+
function createOhOperationV1(input, options = {}) {
|
|
608
|
+
const maximumOperationBytes = options.maximumOperationBytes ?? OH_OPERATION_MAX_BYTES_V1;
|
|
609
|
+
if (!Number.isSafeInteger(maximumOperationBytes) || maximumOperationBytes < 1 || maximumOperationBytes > OH_OPERATION_MAX_BYTES_V1) {
|
|
610
|
+
throw new TypeError("Invalid Oh operation byte bound.");
|
|
611
|
+
}
|
|
473
612
|
const payload = parsePayload(input);
|
|
474
613
|
if (payload === null)
|
|
475
614
|
throw new TypeError("Invalid Oh operation payload.");
|
|
476
615
|
const operation = { ...payload, operationSha256: canonicalSha256(payload) };
|
|
477
|
-
|
|
478
|
-
|
|
616
|
+
const operationBytes = Buffer.byteLength(canonicalJson(operation), "utf8");
|
|
617
|
+
if (operationBytes > maximumOperationBytes) {
|
|
618
|
+
throw new OhOperationSizeError(operationBytes, maximumOperationBytes);
|
|
479
619
|
}
|
|
480
620
|
return operation;
|
|
481
621
|
}
|
|
@@ -489,33 +629,6 @@ function parseOhOperationV1(value) {
|
|
|
489
629
|
}
|
|
490
630
|
|
|
491
631
|
// src/store.ts
|
|
492
|
-
class OhConflictError extends Error {
|
|
493
|
-
constructor(message) {
|
|
494
|
-
super(message);
|
|
495
|
-
this.name = "OhConflictError";
|
|
496
|
-
}
|
|
497
|
-
}
|
|
498
|
-
|
|
499
|
-
class OhIntegrityError extends Error {
|
|
500
|
-
constructor(message) {
|
|
501
|
-
super(message);
|
|
502
|
-
this.name = "OhIntegrityError";
|
|
503
|
-
}
|
|
504
|
-
}
|
|
505
|
-
|
|
506
|
-
class OhDependencyError extends Error {
|
|
507
|
-
constructor(message) {
|
|
508
|
-
super(message);
|
|
509
|
-
this.name = "OhDependencyError";
|
|
510
|
-
}
|
|
511
|
-
}
|
|
512
|
-
|
|
513
|
-
class OhProfileError extends Error {
|
|
514
|
-
constructor(message) {
|
|
515
|
-
super(message);
|
|
516
|
-
this.name = "OhProfileError";
|
|
517
|
-
}
|
|
518
|
-
}
|
|
519
632
|
var OH_CANONICAL_STORE_PROFILE_V1 = createOhStoreProfileV1({
|
|
520
633
|
applicationProfileSha256: null,
|
|
521
634
|
capabilities: {
|
|
@@ -828,6 +941,8 @@ function transitionOhSnapshotV1(input) {
|
|
|
828
941
|
sequence: head.sequence + 1,
|
|
829
942
|
spaceId,
|
|
830
943
|
v: 1
|
|
944
|
+
}, input.maximumOperationBytes === undefined ? {} : {
|
|
945
|
+
maximumOperationBytes: input.maximumOperationBytes
|
|
831
946
|
});
|
|
832
947
|
const nextHead = {
|
|
833
948
|
generation: operation.sequence,
|
|
@@ -1065,6 +1180,11 @@ export {
|
|
|
1065
1180
|
parseOhHeadV1,
|
|
1066
1181
|
parseOhHeadRefV1,
|
|
1067
1182
|
parseOhDependencyClosureV1,
|
|
1183
|
+
isOhProfileError,
|
|
1184
|
+
isOhOperationSizeError,
|
|
1185
|
+
isOhIntegrityError,
|
|
1186
|
+
isOhDependencyError,
|
|
1187
|
+
isOhConflictError,
|
|
1068
1188
|
emptyOhHeadV1,
|
|
1069
1189
|
createOhStoreProfileV1,
|
|
1070
1190
|
createOhStoreBindingV1,
|
|
@@ -1074,10 +1194,12 @@ export {
|
|
|
1074
1194
|
OhRecordCodecRegistry,
|
|
1075
1195
|
OhPurgedSpaceError,
|
|
1076
1196
|
OhProfileError,
|
|
1197
|
+
OhOperationSizeError,
|
|
1077
1198
|
OhIntegrityError,
|
|
1078
1199
|
OhDependencyError,
|
|
1079
1200
|
OhConflictError,
|
|
1080
1201
|
OH_WORKING_STORE_PROFILE_V1,
|
|
1202
|
+
OH_OPERATION_SIZE_ERROR_CODE_V1,
|
|
1081
1203
|
OH_DEPENDENCY_CLOSURE_LIMITS_V1,
|
|
1082
1204
|
OH_CANONICAL_STORE_PROFILE_V1
|
|
1083
1205
|
};
|
package/dist/sync.d.ts
CHANGED
|
@@ -2,12 +2,16 @@ import { type Sha256Hex } from "./canonical";
|
|
|
2
2
|
import { type OhContractManifestV1 } from "./contract";
|
|
3
3
|
import { type OhOperationV1 } from "./operation";
|
|
4
4
|
import type { OhSqliteStore } from "./sqlite/store";
|
|
5
|
+
import type { OhHeadRefV1 } from "./store";
|
|
5
6
|
export declare const OH_SYNC_PROTOCOL_V1: "oh.sync.v1";
|
|
6
7
|
export type OhSyncHeadV1 = Readonly<{
|
|
7
8
|
operationSha256: Sha256Hex | null;
|
|
8
9
|
sequence: number;
|
|
9
10
|
v: 1;
|
|
10
11
|
}>;
|
|
12
|
+
export declare const OH_SYNC_BUNDLE_MAX_BYTES_V1: number;
|
|
13
|
+
export declare function parseOhSyncHeadRefV1(value: unknown): OhHeadRefV1 | null;
|
|
14
|
+
export declare function parseOhSyncHeadV1(value: unknown): OhSyncHeadV1 | null;
|
|
11
15
|
export type OhSyncBundleV1 = Readonly<{
|
|
12
16
|
bundleSha256: Sha256Hex;
|
|
13
17
|
contractSha256: Sha256Hex;
|
|
@@ -16,7 +20,9 @@ export type OhSyncBundleV1 = Readonly<{
|
|
|
16
20
|
spaceId: string;
|
|
17
21
|
v: 1;
|
|
18
22
|
}>;
|
|
19
|
-
export declare function createOhSyncBundleV1(spaceId: string, operations: readonly OhOperationV1[]
|
|
23
|
+
export declare function createOhSyncBundleV1(spaceId: string, operations: readonly OhOperationV1[], options?: Readonly<{
|
|
24
|
+
largestFittingPrefix?: boolean;
|
|
25
|
+
}>): OhSyncBundleV1;
|
|
20
26
|
export declare function parseOhSyncBundleV1(value: unknown): OhSyncBundleV1 | null;
|
|
21
27
|
export interface OhOperationSyncTransportV1 {
|
|
22
28
|
handshake(manifest: OhContractManifestV1): Promise<void>;
|
package/dist/sync.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"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"}
|