@trainstar/synchro-react-native 0.1.2 → 0.3.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 +103 -24
- package/SynchroReactNative.podspec +3 -2
- package/android/build.gradle +8 -3
- package/android/src/main/kotlin/com/trainstar/synchro/rn/SynchroModule.kt +1105 -238
- package/ios/SynchroModule.mm +178 -51
- package/ios/SynchroModule.swift +1382 -295
- package/lib/module/NativeSynchro.js +5 -0
- package/lib/module/NativeSynchro.js.map +1 -1
- package/lib/module/SynchroClient.js +637 -65
- package/lib/module/SynchroClient.js.map +1 -1
- package/lib/module/digest.js +82 -0
- package/lib/module/digest.js.map +1 -0
- package/lib/module/errors.js +165 -22
- package/lib/module/errors.js.map +1 -1
- package/lib/module/hooks/useQuery.js +37 -3
- package/lib/module/hooks/useQuery.js.map +1 -1
- package/lib/module/hooks/useSyncStatus.js +51 -6
- package/lib/module/hooks/useSyncStatus.js.map +1 -1
- package/lib/module/index.js +2 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/inspection.js +121 -0
- package/lib/module/inspection.js.map +1 -0
- package/lib/module/sqliteValues.js +87 -0
- package/lib/module/sqliteValues.js.map +1 -0
- package/lib/module/types.js +10 -0
- package/lib/module/types.js.map +1 -1
- package/lib/typescript/example/e2e/corpus-harness.d.ts +34 -0
- package/lib/typescript/example/e2e/corpus-harness.d.ts.map +1 -0
- package/lib/typescript/example/src/conformance/runner.d.ts +125 -0
- package/lib/typescript/example/src/conformance/runner.d.ts.map +1 -0
- package/lib/typescript/example/src/conformance/types.d.ts +71 -0
- package/lib/typescript/example/src/conformance/types.d.ts.map +1 -0
- package/lib/typescript/src/NativeSynchro.d.ts +59 -17
- package/lib/typescript/src/NativeSynchro.d.ts.map +1 -1
- package/lib/typescript/src/SynchroClient.d.ts +27 -10
- package/lib/typescript/src/SynchroClient.d.ts.map +1 -1
- package/lib/typescript/src/digest.d.ts +3 -0
- package/lib/typescript/src/digest.d.ts.map +1 -0
- package/lib/typescript/src/errors.d.ts +37 -9
- package/lib/typescript/src/errors.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useQuery.d.ts +2 -2
- package/lib/typescript/src/hooks/useQuery.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useSyncStatus.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +4 -3
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/inspection.d.ts +43 -0
- package/lib/typescript/src/inspection.d.ts.map +1 -0
- package/lib/typescript/src/sqliteValues.d.ts +8 -0
- package/lib/typescript/src/sqliteValues.d.ts.map +1 -0
- package/lib/typescript/src/types.d.ts +203 -11
- package/lib/typescript/src/types.d.ts.map +1 -1
- package/package.json +20 -8
- package/src/NativeSynchro.ts +93 -26
- package/src/SynchroClient.ts +899 -120
- package/src/digest.ts +93 -0
- package/src/errors.ts +273 -33
- package/src/hooks/useQuery.ts +59 -16
- package/src/hooks/useSyncStatus.ts +40 -7
- package/src/index.ts +44 -3
- package/src/inspection.ts +226 -0
- package/src/sqliteValues.ts +105 -0
- package/src/types.ts +317 -16
|
@@ -1,15 +1,60 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { useState, useEffect } from 'react';
|
|
4
|
+
import { mapNativeError } from "../errors.js";
|
|
5
|
+
const uninitialized = {
|
|
6
|
+
status: 'uninitialized',
|
|
7
|
+
retryAt: null,
|
|
8
|
+
operation: null,
|
|
9
|
+
failure: null
|
|
10
|
+
};
|
|
4
11
|
export function useSyncStatus(client) {
|
|
5
|
-
const [
|
|
6
|
-
|
|
7
|
-
|
|
12
|
+
const [snapshot, setSnapshot] = useState({
|
|
13
|
+
client,
|
|
14
|
+
status: uninitialized,
|
|
15
|
+
error: null
|
|
8
16
|
});
|
|
9
17
|
useEffect(() => {
|
|
10
|
-
|
|
11
|
-
|
|
18
|
+
let active = true;
|
|
19
|
+
let receivedEvent = false;
|
|
20
|
+
setSnapshot({
|
|
21
|
+
client,
|
|
22
|
+
status: uninitialized,
|
|
23
|
+
error: null
|
|
24
|
+
});
|
|
25
|
+
const unsubscribe = client.onStatusChange(status => {
|
|
26
|
+
if (!active) return;
|
|
27
|
+
receivedEvent = true;
|
|
28
|
+
setSnapshot({
|
|
29
|
+
client,
|
|
30
|
+
status,
|
|
31
|
+
error: null
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
client.getSyncStatus().then(status => {
|
|
35
|
+
if (active && !receivedEvent) {
|
|
36
|
+
setSnapshot({
|
|
37
|
+
client,
|
|
38
|
+
status,
|
|
39
|
+
error: null
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}, error => {
|
|
43
|
+
if (active && !receivedEvent) {
|
|
44
|
+
setSnapshot({
|
|
45
|
+
client,
|
|
46
|
+
status: uninitialized,
|
|
47
|
+
error: mapNativeError(error)
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
return () => {
|
|
52
|
+
active = false;
|
|
53
|
+
unsubscribe();
|
|
54
|
+
};
|
|
12
55
|
}, [client]);
|
|
13
|
-
return
|
|
56
|
+
if (snapshot.client !== client) return uninitialized;
|
|
57
|
+
if (snapshot.error) throw snapshot.error;
|
|
58
|
+
return snapshot.status;
|
|
14
59
|
}
|
|
15
60
|
//# sourceMappingURL=useSyncStatus.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useState","useEffect","useSyncStatus","client","
|
|
1
|
+
{"version":3,"names":["useState","useEffect","mapNativeError","uninitialized","status","retryAt","operation","failure","useSyncStatus","client","snapshot","setSnapshot","error","active","receivedEvent","unsubscribe","onStatusChange","getSyncStatus","then"],"sourceRoot":"../../../src","sources":["hooks/useSyncStatus.ts"],"mappings":";;AAAA,SAASA,QAAQ,EAAEC,SAAS,QAAQ,OAAO;AAG3C,SAASC,cAAc,QAA2B,cAAW;AAE7D,MAAMC,aAAyB,GAAG;EAChCC,MAAM,EAAE,eAAe;EACvBC,OAAO,EAAE,IAAI;EACbC,SAAS,EAAE,IAAI;EACfC,OAAO,EAAE;AACX,CAAC;AAED,OAAO,SAASC,aAAaA,CAACC,MAAqB,EAAc;EAC/D,MAAM,CAACC,QAAQ,EAAEC,WAAW,CAAC,GAAGX,QAAQ,CAIrC;IAAES,MAAM;IAAEL,MAAM,EAAED,aAAa;IAAES,KAAK,EAAE;EAAK,CAAC,CAAC;EAElDX,SAAS,CAAC,MAAM;IACd,IAAIY,MAAM,GAAG,IAAI;IACjB,IAAIC,aAAa,GAAG,KAAK;IACzBH,WAAW,CAAC;MAAEF,MAAM;MAAEL,MAAM,EAAED,aAAa;MAAES,KAAK,EAAE;IAAK,CAAC,CAAC;IAC3D,MAAMG,WAAW,GAAGN,MAAM,CAACO,cAAc,CAAEZ,MAAM,IAAK;MACpD,IAAI,CAACS,MAAM,EAAE;MACbC,aAAa,GAAG,IAAI;MACpBH,WAAW,CAAC;QAAEF,MAAM;QAAEL,MAAM;QAAEQ,KAAK,EAAE;MAAK,CAAC,CAAC;IAC9C,CAAC,CAAC;IACFH,MAAM,CAACQ,aAAa,CAAC,CAAC,CAACC,IAAI,CACxBd,MAAM,IAAK;MACV,IAAIS,MAAM,IAAI,CAACC,aAAa,EAAE;QAC5BH,WAAW,CAAC;UAAEF,MAAM;UAAEL,MAAM;UAAEQ,KAAK,EAAE;QAAK,CAAC,CAAC;MAC9C;IACF,CAAC,EACAA,KAAc,IAAK;MAClB,IAAIC,MAAM,IAAI,CAACC,aAAa,EAAE;QAC5BH,WAAW,CAAC;UAAEF,MAAM;UAAEL,MAAM,EAAED,aAAa;UAAES,KAAK,EAAEV,cAAc,CAACU,KAAK;QAAE,CAAC,CAAC;MAC9E;IACF,CACF,CAAC;IACD,OAAO,MAAM;MACXC,MAAM,GAAG,KAAK;MACdE,WAAW,CAAC,CAAC;IACf,CAAC;EACH,CAAC,EAAE,CAACN,MAAM,CAAC,CAAC;EAEZ,IAAIC,QAAQ,CAACD,MAAM,KAAKA,MAAM,EAAE,OAAON,aAAa;EACpD,IAAIO,QAAQ,CAACE,KAAK,EAAE,MAAMF,QAAQ,CAACE,KAAK;EACxC,OAAOF,QAAQ,CAACN,MAAM;AACxB","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -4,5 +4,6 @@ export { SynchroClient } from "./SynchroClient.js";
|
|
|
4
4
|
export { useQuery } from "./hooks/useQuery.js";
|
|
5
5
|
export { useSyncStatus } from "./hooks/useSyncStatus.js";
|
|
6
6
|
export { usePendingChanges } from "./hooks/usePendingChanges.js";
|
|
7
|
-
export {
|
|
7
|
+
export { SYNC_STATUS_TYPES, SYNC_OPERATION_KINDS, SYNC_RECOVERY_ACTIONS, SYNC_FAILURE_CODES, PROTOCOL_ERROR_CODES } from "./types.js";
|
|
8
|
+
export { SynchroError, NotConnectedError, SchemaNotLoadedError, TableNotSyncedError, UpgradeRequiredError, SchemaMismatchError, PushRejectedError, NetworkError, ServerError, ProtocolError, SyncBlockedError, UnsupportedSchemaError, InvalidStateTransitionError, DatabaseError, InvalidResponseError, InvalidSeedError, AlreadyStartedError, NotStartedError, TransactionTimeoutError, NATIVE_ERROR_CODES, mapNativeError } from "./errors.js";
|
|
8
9
|
//# sourceMappingURL=index.js.map
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["SynchroClient","useQuery","useSyncStatus","usePendingChanges","SynchroError","NotConnectedError","SchemaNotLoadedError","TableNotSyncedError","UpgradeRequiredError","SchemaMismatchError","
|
|
1
|
+
{"version":3,"names":["SynchroClient","useQuery","useSyncStatus","usePendingChanges","SYNC_STATUS_TYPES","SYNC_OPERATION_KINDS","SYNC_RECOVERY_ACTIONS","SYNC_FAILURE_CODES","PROTOCOL_ERROR_CODES","SynchroError","NotConnectedError","SchemaNotLoadedError","TableNotSyncedError","UpgradeRequiredError","SchemaMismatchError","PushRejectedError","NetworkError","ServerError","ProtocolError","SyncBlockedError","UnsupportedSchemaError","InvalidStateTransitionError","DatabaseError","InvalidResponseError","InvalidSeedError","AlreadyStartedError","NotStartedError","TransactionTimeoutError","NATIVE_ERROR_CODES","mapNativeError"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,oBAAiB;AAC/C,SAASC,QAAQ,QAAQ,qBAAkB;AAC3C,SAASC,aAAa,QAAQ,0BAAuB;AACrD,SAASC,iBAAiB,QAAQ,8BAA2B;AA0C7D,SACEC,iBAAiB,EACjBC,oBAAoB,EACpBC,qBAAqB,EACrBC,kBAAkB,EAClBC,oBAAoB,QACf,YAAS;AAEhB,SACEC,YAAY,EACZC,iBAAiB,EACjBC,oBAAoB,EACpBC,mBAAmB,EACnBC,oBAAoB,EACpBC,mBAAmB,EACnBC,iBAAiB,EACjBC,YAAY,EACZC,WAAW,EACXC,aAAa,EACbC,gBAAgB,EAChBC,sBAAsB,EACtBC,2BAA2B,EAC3BC,aAAa,EACbC,oBAAoB,EACpBC,gBAAgB,EAChBC,mBAAmB,EACnBC,eAAe,EACfC,uBAAuB,EACvBC,kBAAkB,EAClBC,cAAc,QACT,aAAU","ignoreList":[]}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { configureInspection, nativeForInspection, parseClientStateInspection, parseTransportObservationSnapshot } from "./SynchroClient.js";
|
|
4
|
+
import { InvalidResponseError, mapNativeError } from "./errors.js";
|
|
5
|
+
const TRANSPORT_OPERATION_CLASSES = ['connect', 'pull', 'push', 'checkpoint', 'schemas', 'rebuild', 'other'];
|
|
6
|
+
export class SynchroInspection {
|
|
7
|
+
constructor(client, options = {}) {
|
|
8
|
+
this.client = client;
|
|
9
|
+
configureInspection(client, options.transportObservationCapacity ?? 0, options.requireNewDatabase ?? false);
|
|
10
|
+
}
|
|
11
|
+
async clientState() {
|
|
12
|
+
try {
|
|
13
|
+
return parseClientStateInspection(parseJSON(await nativeForInspection(this.client).inspectClientState()));
|
|
14
|
+
} catch (error) {
|
|
15
|
+
throw mapNativeError(error);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
async durableState(tableName, recordID) {
|
|
19
|
+
if (tableName.length === 0 || recordID.length === 0) {
|
|
20
|
+
throw new InvalidResponseError('Durable-state identity is invalid');
|
|
21
|
+
}
|
|
22
|
+
try {
|
|
23
|
+
return parseDurableState(parseJSON(await nativeForInspection(this.client).inspectDurableState(tableName, recordID)));
|
|
24
|
+
} catch (error) {
|
|
25
|
+
throw mapNativeError(error);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
async processIdentity() {
|
|
29
|
+
try {
|
|
30
|
+
const value = await nativeForInspection(this.client).getProcessIdentity();
|
|
31
|
+
if (!/^(?:ios|android)-app:[1-9][0-9]*$/.test(value)) {
|
|
32
|
+
throw new InvalidResponseError('Native bridge returned invalid process identity');
|
|
33
|
+
}
|
|
34
|
+
return value;
|
|
35
|
+
} catch (error) {
|
|
36
|
+
throw mapNativeError(error);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
async transportObservations() {
|
|
40
|
+
try {
|
|
41
|
+
return parseTransportObservationSnapshot(parseJSON(await nativeForInspection(this.client).inspectTransportObservations()));
|
|
42
|
+
} catch (error) {
|
|
43
|
+
throw mapNativeError(error);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
async armTransportPause(operationClass) {
|
|
47
|
+
requireTransportOperationClass(operationClass);
|
|
48
|
+
try {
|
|
49
|
+
await nativeForInspection(this.client).armTransportPause(operationClass);
|
|
50
|
+
} catch (error) {
|
|
51
|
+
throw mapNativeError(error);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
async awaitTransportPause(operationClass, timeoutMs) {
|
|
55
|
+
requireTransportOperationClass(operationClass);
|
|
56
|
+
if (!Number.isSafeInteger(timeoutMs) || timeoutMs < 1 || timeoutMs > 60_000) {
|
|
57
|
+
throw new InvalidResponseError('Transport pause request is invalid');
|
|
58
|
+
}
|
|
59
|
+
try {
|
|
60
|
+
await nativeForInspection(this.client).awaitTransportPause(operationClass, timeoutMs);
|
|
61
|
+
} catch (error) {
|
|
62
|
+
throw mapNativeError(error);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
async resumeTransportPause() {
|
|
66
|
+
try {
|
|
67
|
+
await nativeForInspection(this.client).resumeTransportPause();
|
|
68
|
+
} catch (error) {
|
|
69
|
+
throw mapNativeError(error);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
function parseJSON(source) {
|
|
74
|
+
try {
|
|
75
|
+
return JSON.parse(source);
|
|
76
|
+
} catch {
|
|
77
|
+
throw new InvalidResponseError('Native bridge returned malformed inspection JSON');
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
function parseDurableState(value) {
|
|
81
|
+
const proof = requireRecord(value, 'durable state');
|
|
82
|
+
if (Object.keys(proof).length !== 2 || !Object.prototype.hasOwnProperty.call(proof, 'row_metadata') || !Array.isArray(proof.rebuild_receipts)) {
|
|
83
|
+
throw new InvalidResponseError('Native bridge returned invalid durable state');
|
|
84
|
+
}
|
|
85
|
+
if (proof.row_metadata !== null) {
|
|
86
|
+
const metadata = requireRecord(proof.row_metadata, 'row metadata');
|
|
87
|
+
if (Object.keys(metadata).length !== 4 || typeof metadata.table_name !== 'string' || typeof metadata.record_id !== 'string' || typeof metadata.server_version !== 'string' || metadata.row_checksum !== null && typeof metadata.row_checksum !== 'string') {
|
|
88
|
+
throw new InvalidResponseError('Native bridge returned invalid row metadata');
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
for (const receiptValue of proof.rebuild_receipts) {
|
|
92
|
+
const receipt = requireRecord(receiptValue, 'rebuild receipt');
|
|
93
|
+
if (Object.keys(receipt).length !== 12 || typeof receipt.rebuild_id_fingerprint !== 'string' || !isNonnegativeSafeInteger(receipt.page_count) || !isNonnegativeSafeInteger(receipt.returned_record_count) || !isStringArray(receipt.request_chain_expected) || !isStringArray(receipt.request_chain_observed) || !isStringArray(receipt.record_identities_hex) || !isStringArray(receipt.received_row_checksums) || !isStringArray(receipt.computed_row_checksums) || !isNullableString(receipt.computed_scope_checksum) || !isNullableString(receipt.final_scope_checksum) || !isNullableString(receipt.stored_scope_checksum) || !isNullableString(receipt.local_scope_checksum)) {
|
|
94
|
+
throw new InvalidResponseError('Native bridge returned invalid rebuild receipt');
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return proof;
|
|
98
|
+
}
|
|
99
|
+
function requireRecord(value, name) {
|
|
100
|
+
if (typeof value !== 'object' || value === null || Array.isArray(value)) {
|
|
101
|
+
throw new InvalidResponseError(`Native bridge returned invalid ${name}`);
|
|
102
|
+
}
|
|
103
|
+
return value;
|
|
104
|
+
}
|
|
105
|
+
function isNonnegativeSafeInteger(value) {
|
|
106
|
+
return typeof value === 'number' && Number.isSafeInteger(value) && value >= 0;
|
|
107
|
+
}
|
|
108
|
+
function isStringArray(value) {
|
|
109
|
+
return Array.isArray(value) && value.every(item => typeof item === 'string');
|
|
110
|
+
}
|
|
111
|
+
function isNullableString(value) {
|
|
112
|
+
return value === null || typeof value === 'string';
|
|
113
|
+
}
|
|
114
|
+
function requireTransportOperationClass(value) {
|
|
115
|
+
if (!TRANSPORT_OPERATION_CLASSES.includes(value)) {
|
|
116
|
+
throw new InvalidResponseError('Transport operation class is invalid');
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
export { sha256Hex } from "./digest.js";
|
|
120
|
+
export { isCanonicalBase64Url, isCanonicalInt64 } from "./sqliteValues.js";
|
|
121
|
+
//# sourceMappingURL=inspection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["configureInspection","nativeForInspection","parseClientStateInspection","parseTransportObservationSnapshot","InvalidResponseError","mapNativeError","TRANSPORT_OPERATION_CLASSES","SynchroInspection","constructor","client","options","transportObservationCapacity","requireNewDatabase","clientState","parseJSON","inspectClientState","error","durableState","tableName","recordID","length","parseDurableState","inspectDurableState","processIdentity","value","getProcessIdentity","test","transportObservations","inspectTransportObservations","armTransportPause","operationClass","requireTransportOperationClass","awaitTransportPause","timeoutMs","Number","isSafeInteger","resumeTransportPause","source","JSON","parse","proof","requireRecord","Object","keys","prototype","hasOwnProperty","call","Array","isArray","rebuild_receipts","row_metadata","metadata","table_name","record_id","server_version","row_checksum","receiptValue","receipt","rebuild_id_fingerprint","isNonnegativeSafeInteger","page_count","returned_record_count","isStringArray","request_chain_expected","request_chain_observed","record_identities_hex","received_row_checksums","computed_row_checksums","isNullableString","computed_scope_checksum","final_scope_checksum","stored_scope_checksum","local_scope_checksum","name","every","item","includes","sha256Hex","isCanonicalBase64Url","isCanonicalInt64"],"sourceRoot":"../../src","sources":["inspection.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
const MIN_INT64 = -(BigInt(1) << BigInt(63));
|
|
4
|
+
const MAX_INT64 = (BigInt(1) << BigInt(63)) - BigInt(1);
|
|
5
|
+
const BASE64URL_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_';
|
|
6
|
+
function base64urlValue(character) {
|
|
7
|
+
return BASE64URL_ALPHABET.indexOf(character);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/** Validate an unpadded, canonical RFC 4648 base64url string. */
|
|
11
|
+
export function isCanonicalBase64Url(value) {
|
|
12
|
+
if (!/^[A-Za-z0-9_-]*$/.test(value) || value.length % 4 === 1) {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
const remainder = value.length % 4;
|
|
16
|
+
if (remainder === 2) {
|
|
17
|
+
const last = base64urlValue(value[value.length - 1]);
|
|
18
|
+
return (last & 0x0f) === 0;
|
|
19
|
+
}
|
|
20
|
+
if (remainder === 3) {
|
|
21
|
+
const last = base64urlValue(value[value.length - 1]);
|
|
22
|
+
return (last & 0x03) === 0;
|
|
23
|
+
}
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
export function isCanonicalInt64(value) {
|
|
27
|
+
if (!/^(?:0|-?[1-9][0-9]*)$/.test(value)) {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
try {
|
|
31
|
+
const parsed = BigInt(value);
|
|
32
|
+
return parsed >= MIN_INT64 && parsed <= MAX_INT64 && parsed.toString() === value;
|
|
33
|
+
} catch {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function invalidBindValue(index, reason) {
|
|
38
|
+
return new TypeError(`Invalid SQL bind value at index ${index}: ${reason}`);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/** Reject malformed tagged values before they cross the native bridge. */
|
|
42
|
+
export function assertValidSQLiteBindValue(value, index) {
|
|
43
|
+
if (value === null || typeof value === 'string' || typeof value === 'boolean') {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
if (typeof value === 'number') {
|
|
47
|
+
if (!Number.isFinite(value)) {
|
|
48
|
+
throw invalidBindValue(index, 'number must be finite');
|
|
49
|
+
}
|
|
50
|
+
if (Number.isInteger(value) && Math.abs(value) > Number.MAX_SAFE_INTEGER) {
|
|
51
|
+
throw invalidBindValue(index, 'integer is outside the safe range');
|
|
52
|
+
}
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
if (typeof value !== 'object' || value === null || Array.isArray(value)) {
|
|
56
|
+
throw invalidBindValue(index, 'unsupported value type');
|
|
57
|
+
}
|
|
58
|
+
const keys = Object.keys(value);
|
|
59
|
+
if (keys.length !== 2 || !keys.includes('type')) {
|
|
60
|
+
throw invalidBindValue(index, 'tag must contain exactly type and payload fields');
|
|
61
|
+
}
|
|
62
|
+
const tagged = value;
|
|
63
|
+
if (tagged.type === 'bytes') {
|
|
64
|
+
if (keys.length !== 2 || !keys.includes('base64') || typeof tagged.base64 !== 'string') {
|
|
65
|
+
throw invalidBindValue(index, 'bytes tag must contain a base64 string');
|
|
66
|
+
}
|
|
67
|
+
if (!isCanonicalBase64Url(tagged.base64)) {
|
|
68
|
+
throw invalidBindValue(index, 'bytes tag must use canonical base64url');
|
|
69
|
+
}
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
if (tagged.type === 'int64') {
|
|
73
|
+
if (keys.length !== 2 || !keys.includes('value') || typeof tagged.value !== 'string') {
|
|
74
|
+
throw invalidBindValue(index, 'int64 tag must contain a signed decimal string');
|
|
75
|
+
}
|
|
76
|
+
if (!isCanonicalInt64(tagged.value)) {
|
|
77
|
+
throw invalidBindValue(index, 'int64 tag must contain a canonical signed int64');
|
|
78
|
+
}
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
throw invalidBindValue(index, 'unknown SQL bind tag');
|
|
82
|
+
}
|
|
83
|
+
export function assertValidSQLiteBindParams(values) {
|
|
84
|
+
values.forEach((value, index) => assertValidSQLiteBindValue(value, index));
|
|
85
|
+
return values;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=sqliteValues.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["MIN_INT64","BigInt","MAX_INT64","BASE64URL_ALPHABET","base64urlValue","character","indexOf","isCanonicalBase64Url","value","test","length","remainder","last","isCanonicalInt64","parsed","toString","invalidBindValue","index","reason","TypeError","assertValidSQLiteBindValue","Number","isFinite","isInteger","Math","abs","MAX_SAFE_INTEGER","Array","isArray","keys","Object","includes","tagged","type","base64","assertValidSQLiteBindParams","values","forEach"],"sourceRoot":"../../src","sources":["sqliteValues.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/module/types.js
CHANGED
|
@@ -1,2 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
|
|
3
|
+
/** A lossless SQLite BLOB value at the React Native boundary. */
|
|
4
|
+
|
|
5
|
+
/** A lossless SQLite INTEGER value outside JavaScript's safe integer range. */
|
|
6
|
+
|
|
7
|
+
export const SYNC_STATUS_TYPES = ['uninitialized', 'local_ready', 'connecting', 'schema_applying', 'ready', 'pushing', 'pulling', 'rebuilding', 'backoff', 'error', 'stopped'];
|
|
8
|
+
export const SYNC_OPERATION_KINDS = ['opening', 'connecting', 'schema', 'pushing', 'pulling', 'rebuilding', 'lifecycle', 'database'];
|
|
9
|
+
export const SYNC_RECOVERY_ACTIONS = ['retry', 'schema_reset', 'none'];
|
|
10
|
+
export const SYNC_FAILURE_CODES = ['auth_required', 'client_retired', 'idempotency_conflict', 'invalid_request', 'invalid_response', 'invalid_schema_reference', 'invalid_state_transition', 'local_database', 'schema_application_failed', 'sync_integrity_failure', 'unsupported_schema', 'upgrade_required', 'schema_mismatch', 'server_error', 'network_error', 'database_error', 'local_failure'];
|
|
11
|
+
export const PROTOCOL_ERROR_CODES = ['invalid_request', 'invalid_schema_reference', 'upgrade_required', 'auth_required', 'idempotency_conflict', 'client_retired', 'client_generation_expired', 'rebuild_restart_required', 'schema_mismatch', 'retry_later', 'sync_integrity_failure', 'capture_pending', 'temporary_unavailable'];
|
|
2
12
|
//# sourceMappingURL=types.js.map
|
package/lib/module/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sourceRoot":"../../src","sources":["types.ts"],"mappings":"","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["SYNC_STATUS_TYPES","SYNC_OPERATION_KINDS","SYNC_RECOVERY_ACTIONS","SYNC_FAILURE_CODES","PROTOCOL_ERROR_CODES"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":";;AAEA;;AAMA;;AA6CA,OAAO,MAAMA,iBAAiB,GAAG,CAC/B,eAAe,EACf,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,OAAO,EACP,SAAS,EACT,SAAS,EACT,YAAY,EACZ,SAAS,EACT,OAAO,EACP,SAAS,CACD;AAIV,OAAO,MAAMC,oBAAoB,GAAG,CAClC,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,SAAS,EACT,YAAY,EACZ,WAAW,EACX,UAAU,CACF;AAIV,OAAO,MAAMC,qBAAqB,GAAG,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,CAAU;AAI/E,OAAO,MAAMC,kBAAkB,GAAG,CAChC,eAAe,EACf,gBAAgB,EAChB,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,0BAA0B,EAC1B,0BAA0B,EAC1B,gBAAgB,EAChB,2BAA2B,EAC3B,wBAAwB,EACxB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,eAAe,CACP;AAIV,OAAO,MAAMC,oBAAoB,GAAG,CAClC,iBAAiB,EACjB,0BAA0B,EAC1B,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,2BAA2B,EAC3B,0BAA0B,EAC1B,iBAAiB,EACjB,aAAa,EACb,wBAAwB,EACxB,iBAAiB,EACjB,uBAAuB,CACf","ignoreList":[]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { device } from 'detox';
|
|
2
|
+
type LaunchOptions = Parameters<typeof device.launchApp>[0];
|
|
3
|
+
type ExchangeResponse = {
|
|
4
|
+
schema_version: number;
|
|
5
|
+
sequence: number;
|
|
6
|
+
} & ({
|
|
7
|
+
state: 'command';
|
|
8
|
+
command: Record<string, unknown>;
|
|
9
|
+
} | {
|
|
10
|
+
state: 'complete';
|
|
11
|
+
command: null;
|
|
12
|
+
});
|
|
13
|
+
type ConformanceEnvelope = {
|
|
14
|
+
schema_version: number;
|
|
15
|
+
outcome: 'passed' | 'error';
|
|
16
|
+
result: unknown;
|
|
17
|
+
error_code: string | null;
|
|
18
|
+
error_detail: string | null;
|
|
19
|
+
};
|
|
20
|
+
export declare function coordinatorConfiguration(): {
|
|
21
|
+
endpoint: string;
|
|
22
|
+
token: string;
|
|
23
|
+
};
|
|
24
|
+
export declare function coordinatorCount(name: 'STAGE_COUNT' | 'EXCHANGE_COUNT', minimum: number, maximum?: number): number;
|
|
25
|
+
export declare function exchange(endpoint: string, token: string, sequence: number, rawResult: string): Promise<ExchangeResponse>;
|
|
26
|
+
export declare function pollCorpusResult(timeoutMs: number, timeoutMessage: string): Promise<{
|
|
27
|
+
raw: string;
|
|
28
|
+
envelope: ConformanceEnvelope;
|
|
29
|
+
}>;
|
|
30
|
+
export declare function runCorpusCommandLoop(execute: () => Promise<void>): Promise<void>;
|
|
31
|
+
export declare function launchCorpusApp(options: LaunchOptions): Promise<void>;
|
|
32
|
+
export declare function submitCorpusCommand(serialized: string): Promise<void>;
|
|
33
|
+
export {};
|
|
34
|
+
//# sourceMappingURL=corpus-harness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"corpus-harness.d.ts","sourceRoot":"","sources":["../../../../example/e2e/corpus-harness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,MAAM,EAAoB,MAAM,OAAO,CAAC;AAErD,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAE5D,KAAK,gBAAgB,GAAG;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,CACnE;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GACtD;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,IAAI,CAAA;CAAE,CACvC,CAAC;AAEF,KAAK,mBAAmB,GAAG;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC5B,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,CAAC;AAYF,wBAAgB,wBAAwB,IAAI;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAqB9E;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,aAAa,GAAG,gBAAgB,EACtC,OAAO,EAAE,MAAM,EACf,OAAO,SAA0B,GAChC,MAAM,CAMR;AAqDD,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,gBAAgB,CAAC,CAyB3B;AAED,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,mBAAmB,CAAA;CAAE,CAAC,CAkBzD;AAED,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAOtF;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAI3E;AAED,wBAAsB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAa3E"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import type { ClientStateInspection, DurableStateInspection, ScopeRowInspection, TransportObservationSnapshot } from '@trainstar/synchro-react-native/inspection';
|
|
2
|
+
import type { PendingMutationInspection, RejectedMutationInspection, Row } from '@trainstar/synchro-react-native';
|
|
3
|
+
import type { ConformanceCommand, ConformanceErrorCode, JSONScalar, LifecycleOperation, SynchronizeCompletion } from './types';
|
|
4
|
+
export declare class ConformanceUnavailableError extends Error {
|
|
5
|
+
constructor(message: string);
|
|
6
|
+
}
|
|
7
|
+
export declare class ConformanceCommandError extends Error {
|
|
8
|
+
readonly code: ConformanceErrorCode;
|
|
9
|
+
constructor(code: ConformanceErrorCode, cause?: unknown);
|
|
10
|
+
}
|
|
11
|
+
export type RawSyncStatus = {
|
|
12
|
+
state: string;
|
|
13
|
+
retry_at: string | null;
|
|
14
|
+
operation: string | null;
|
|
15
|
+
failure: RawFailure | null;
|
|
16
|
+
};
|
|
17
|
+
export type RawFailure = {
|
|
18
|
+
operation: string;
|
|
19
|
+
code: string;
|
|
20
|
+
retryable: boolean;
|
|
21
|
+
recovery_action: string;
|
|
22
|
+
};
|
|
23
|
+
export type RawProcessIdentity = {
|
|
24
|
+
process_id: string;
|
|
25
|
+
database_identity_fingerprint: string;
|
|
26
|
+
};
|
|
27
|
+
export type RawEvent = Record<string, JSONScalar | Record<string, JSONScalar> | null>;
|
|
28
|
+
export type ConformanceActionResult = {
|
|
29
|
+
kind: 'opened';
|
|
30
|
+
status: RawSyncStatus;
|
|
31
|
+
process: RawProcessIdentity;
|
|
32
|
+
} | {
|
|
33
|
+
kind: 'local-action';
|
|
34
|
+
rows_affected: number;
|
|
35
|
+
process: RawProcessIdentity;
|
|
36
|
+
} | {
|
|
37
|
+
kind: 'synchronized';
|
|
38
|
+
completion: SynchronizeCompletion;
|
|
39
|
+
status: RawSyncStatus;
|
|
40
|
+
process: RawProcessIdentity;
|
|
41
|
+
} | {
|
|
42
|
+
kind: 'call-begun';
|
|
43
|
+
call_id: string;
|
|
44
|
+
state: 'in_flight';
|
|
45
|
+
process: RawProcessIdentity;
|
|
46
|
+
} | {
|
|
47
|
+
kind: 'call-completed';
|
|
48
|
+
call_id: string;
|
|
49
|
+
state: 'completed';
|
|
50
|
+
completion: SynchronizeCompletion;
|
|
51
|
+
status: RawSyncStatus;
|
|
52
|
+
process: RawProcessIdentity;
|
|
53
|
+
} | {
|
|
54
|
+
kind: 'awaited';
|
|
55
|
+
status: RawSyncStatus;
|
|
56
|
+
process: RawProcessIdentity;
|
|
57
|
+
} | {
|
|
58
|
+
kind: 'lifecycle';
|
|
59
|
+
operation: LifecycleOperation;
|
|
60
|
+
status: RawSyncStatus;
|
|
61
|
+
process: RawProcessIdentity;
|
|
62
|
+
} | {
|
|
63
|
+
kind: 'capture';
|
|
64
|
+
capture: ConformanceCapture;
|
|
65
|
+
process: RawProcessIdentity;
|
|
66
|
+
};
|
|
67
|
+
export interface ConformanceCapture {
|
|
68
|
+
application_rows?: Row[];
|
|
69
|
+
pending_mutations?: PendingMutationInspection[];
|
|
70
|
+
rejected_mutations?: RejectedMutationInspection[];
|
|
71
|
+
client_state?: ClientStateInspection;
|
|
72
|
+
durable_proof?: RawDurableProof;
|
|
73
|
+
provenance?: ScopeRowInspection[];
|
|
74
|
+
request_trace?: TransportObservationSnapshot;
|
|
75
|
+
sync_status?: RawSyncStatus;
|
|
76
|
+
sync_events?: RawEvent[];
|
|
77
|
+
}
|
|
78
|
+
export interface RawDurableProof {
|
|
79
|
+
row_metadata: DurableStateInspection['row_metadata'];
|
|
80
|
+
rebuild_receipt_proofs: Array<{
|
|
81
|
+
rebuild_id_fingerprint: string;
|
|
82
|
+
page_count: number;
|
|
83
|
+
returned_record_count: number;
|
|
84
|
+
request_chain_valid: boolean;
|
|
85
|
+
records_in_canonical_order: boolean;
|
|
86
|
+
row_checksums_valid: boolean;
|
|
87
|
+
scope_checksum_valid: boolean;
|
|
88
|
+
final_checksum_matches_local: boolean;
|
|
89
|
+
}>;
|
|
90
|
+
}
|
|
91
|
+
export interface PublicConformanceRunnerOptions {
|
|
92
|
+
serverURL: string;
|
|
93
|
+
authToken: string;
|
|
94
|
+
appVersion: string;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* PublicConformanceRunner maps one closed host action to public JavaScript APIs.
|
|
98
|
+
* It returns raw facts only. It does not load scenarios or evaluate outcomes.
|
|
99
|
+
*/
|
|
100
|
+
export declare class PublicConformanceRunner {
|
|
101
|
+
private readonly options;
|
|
102
|
+
private readonly sessions;
|
|
103
|
+
private readonly calls;
|
|
104
|
+
private activeClientKey;
|
|
105
|
+
constructor(options: PublicConformanceRunnerOptions);
|
|
106
|
+
execute(command: ConformanceCommand): Promise<ConformanceActionResult>;
|
|
107
|
+
close(): Promise<void>;
|
|
108
|
+
private open;
|
|
109
|
+
private executeLocalAction;
|
|
110
|
+
private executeLocalActions;
|
|
111
|
+
private synchronize;
|
|
112
|
+
private beginCall;
|
|
113
|
+
private awaitCall;
|
|
114
|
+
private lifecycle;
|
|
115
|
+
private awaitStep;
|
|
116
|
+
private capture;
|
|
117
|
+
private activate;
|
|
118
|
+
private requireSession;
|
|
119
|
+
private requireInspection;
|
|
120
|
+
private invokeSynchronizeMethod;
|
|
121
|
+
private waitForCompletion;
|
|
122
|
+
private processIdentity;
|
|
123
|
+
private boundedResult;
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../../../example/src/conformance/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
export type JSONScalar = null | boolean | number | string;
|
|
2
|
+
export type JSONValue = JSONScalar | JSONValue[] | {
|
|
3
|
+
[key: string]: JSONValue;
|
|
4
|
+
};
|
|
5
|
+
export type JSONObject = {
|
|
6
|
+
[key: string]: JSONValue;
|
|
7
|
+
};
|
|
8
|
+
export declare const MAXIMUM_COMMAND_BYTES: number;
|
|
9
|
+
export declare const MAXIMUM_RESULT_BYTES: number;
|
|
10
|
+
export declare const MAXIMUM_JSON_DEPTH = 24;
|
|
11
|
+
export declare const MAXIMUM_OBJECT_KEYS = 256;
|
|
12
|
+
export declare const MAXIMUM_ARRAY_ITEMS = 512;
|
|
13
|
+
export declare const MAXIMUM_VALUE_BYTES: number;
|
|
14
|
+
export type SynchronizeMethod = 'start' | 'sync-now' | 'retry-after-error' | 'reset-schema-and-start';
|
|
15
|
+
export type SynchronizeCompletion = 'idle' | 'blocked' | 'error';
|
|
16
|
+
export type LifecycleOperation = 'stop' | 'enter-background' | 'enter-foreground';
|
|
17
|
+
export interface ScenarioOperation {
|
|
18
|
+
contract_operation: string;
|
|
19
|
+
name: string;
|
|
20
|
+
payload: JSONObject;
|
|
21
|
+
}
|
|
22
|
+
export interface ScenarioStep {
|
|
23
|
+
operation: ScenarioOperation;
|
|
24
|
+
}
|
|
25
|
+
export interface RowSelector {
|
|
26
|
+
table_name: string;
|
|
27
|
+
primary_key_field: string;
|
|
28
|
+
primary_key: JSONScalar;
|
|
29
|
+
}
|
|
30
|
+
export interface ConformanceAction {
|
|
31
|
+
actor: string;
|
|
32
|
+
command: string;
|
|
33
|
+
parameters: JSONObject;
|
|
34
|
+
}
|
|
35
|
+
export interface NativeManifestAction {
|
|
36
|
+
action: ConformanceAction;
|
|
37
|
+
steps: ScenarioStep[];
|
|
38
|
+
}
|
|
39
|
+
export interface ConformanceRuntime {
|
|
40
|
+
client_key: string;
|
|
41
|
+
database_path: string;
|
|
42
|
+
client_id: string;
|
|
43
|
+
seed_database_path?: string;
|
|
44
|
+
server_url?: string;
|
|
45
|
+
auth_token?: string;
|
|
46
|
+
pull_page_size?: number;
|
|
47
|
+
push_batch_size?: number;
|
|
48
|
+
}
|
|
49
|
+
export interface ConformanceCommand {
|
|
50
|
+
schema_version: 1;
|
|
51
|
+
action: NativeManifestAction;
|
|
52
|
+
runtime: ConformanceRuntime;
|
|
53
|
+
}
|
|
54
|
+
export type ConformanceErrorCode = 'invalid_command' | 'unavailable' | 'execution_failed' | 'capture_query_failed' | 'capture_row_cardinality' | 'capture_inspection_failed';
|
|
55
|
+
export interface ConformanceEnvelope {
|
|
56
|
+
schema_version: 1;
|
|
57
|
+
outcome: 'passed' | 'error';
|
|
58
|
+
result: JSONValue | null;
|
|
59
|
+
error_code: ConformanceErrorCode | null;
|
|
60
|
+
error_detail: string | null;
|
|
61
|
+
}
|
|
62
|
+
export declare function isSynchronizeMethod(value: unknown): value is SynchronizeMethod;
|
|
63
|
+
export declare function isLifecycleOperation(value: unknown): value is LifecycleOperation;
|
|
64
|
+
export declare function isCallID(value: unknown): value is string;
|
|
65
|
+
/** Parses one sanitized host command without loading scenario identity or expectations. */
|
|
66
|
+
export declare function parseConformanceCommand(source: string): ConformanceCommand;
|
|
67
|
+
export declare function decodeConformanceCommand(value: unknown): ConformanceCommand;
|
|
68
|
+
export declare function encodeConformanceEnvelope(envelope: ConformanceEnvelope): string;
|
|
69
|
+
export declare function assertBoundedJSON(value: unknown, maximumBytes: number): void;
|
|
70
|
+
export declare function utf8ByteLength(value: string): number;
|
|
71
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../example/src/conformance/types.ts"],"names":[],"mappings":"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"}
|