Implement main-thread Camino sessions and synchronous CRDT editing
This commit is contained in:
@@ -112,6 +112,8 @@ export const generateTypeScriptBindings = (
|
||||
const messages = new Map<string, string>();
|
||||
const type = (value: ValueType): string => {
|
||||
switch (value.kind) {
|
||||
case "variant":
|
||||
throw new Error("Variants require the Camino portable value runtime; legacy RPC bindings are unsupported");
|
||||
case "builtin":
|
||||
return value.name === "unit" ? "null" : "QxWatchHandle";
|
||||
case "scalar":
|
||||
@@ -340,6 +342,7 @@ export const generateTypeScriptBindings = (
|
||||
// A used port still fails above if its own required codec is missing.
|
||||
const hasCodec = (value: ValueType): boolean => {
|
||||
if (value.kind === "message") return !!options.messages?.[value.descriptorId];
|
||||
if (value.kind === "variant") return false;
|
||||
if (value.kind === "record") return Object.values(value.fields).every(hasCodec);
|
||||
if (value.kind === "list" || value.kind === "optional") return hasCodec(value.value);
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user