Generate typed React component bindings
This commit is contained in:
+21
-3
@@ -187,6 +187,11 @@ const interfaceFieldContractFromOption = (
|
||||
return undefined;
|
||||
}
|
||||
const type = typeRefFromOption(object.type, schemaVersion);
|
||||
const refTargetTypeParam = readString(object, "ref_target_type_param");
|
||||
const edgeCardinality =
|
||||
object.edge_cardinality === undefined
|
||||
? undefined
|
||||
: cardinalityFromOption(object.edge_cardinality);
|
||||
return {
|
||||
required: readBoolean(object, "required") ?? false,
|
||||
readable: readBoolean(object, "readable") ?? false,
|
||||
@@ -196,6 +201,8 @@ const interfaceFieldContractFromOption = (
|
||||
? { typeParam: readString(object, "type_param") }
|
||||
: {}),
|
||||
...(type ? { type } : {}),
|
||||
...(refTargetTypeParam ? { refTargetTypeParam } : {}),
|
||||
...(edgeCardinality ? { edgeCardinality } : {}),
|
||||
};
|
||||
};
|
||||
|
||||
@@ -854,6 +861,9 @@ const interfaceSchemaFromType = (
|
||||
),
|
||||
sourceFile,
|
||||
protoMessage: type.fullName,
|
||||
typeParameters: asArray(interfaceOption.type_parameter)
|
||||
.map((entry) => String(entry).trim())
|
||||
.filter(Boolean),
|
||||
};
|
||||
};
|
||||
|
||||
@@ -884,11 +894,10 @@ const walkServices = (
|
||||
}
|
||||
};
|
||||
|
||||
export const compileCaminoSchema = async (
|
||||
export const loadCaminoSchemaRoot = async (
|
||||
sourceFile: string,
|
||||
): Promise<SchemaCompileResult> => {
|
||||
): Promise<{ absoluteSourceFile: string; root: protobuf.Root }> => {
|
||||
const absoluteSourceFile = path.resolve(sourceFile);
|
||||
const defaults = extractFileDefaults(absoluteSourceFile);
|
||||
const root = new protobuf.Root();
|
||||
const envIncludeDirs = [
|
||||
process.env.QUIXOS_PROTO_PATH,
|
||||
@@ -923,6 +932,15 @@ export const compileCaminoSchema = async (
|
||||
await root.load(absoluteSourceFile, { keepCase: true });
|
||||
root.resolveAll();
|
||||
|
||||
return { absoluteSourceFile, root };
|
||||
};
|
||||
|
||||
export const compileCaminoSchema = async (
|
||||
sourceFile: string,
|
||||
): Promise<SchemaCompileResult> => {
|
||||
const { absoluteSourceFile, root } = await loadCaminoSchemaRoot(sourceFile);
|
||||
const defaults = extractFileDefaults(absoluteSourceFile);
|
||||
|
||||
const operationServices: OperationServiceSchema[] = [];
|
||||
walkServices(root, (service) => {
|
||||
operationServices.push(
|
||||
|
||||
Reference in New Issue
Block a user