From 211e0fe791c99265adb8069beeae1eee5eea4f79 Mon Sep 17 00:00:00 2001 From: brclarkdev <31588123+brclarkdev@users.noreply.github.com> Date: Wed, 28 Aug 2024 13:33:02 +0000 Subject: [PATCH 01/14] added grpc interfaces --- .../aicar-zod/gen/kuksa/val/v1/types_pb.js | 1117 ++++++++++++ .../aicar-zod/gen/kuksa/val/v1/types_pb.ts | 1572 +++++++++++++++++ .../aicar-zod/gen/kuksa/val/v1/val_connect.js | 88 + .../aicar-zod/gen/kuksa/val/v1/val_connect.ts | 89 + .../aicar-zod/gen/kuksa/val/v1/val_pb.js | 470 +++++ .../aicar-zod/gen/kuksa/val/v1/val_pb.ts | 579 ++++++ .../examples/aicar/gen/kuksa/val/v1/main.ts | 0 .../aicar/gen/kuksa/val/v1/types_pb.js | 1117 ++++++++++++ .../aicar/gen/kuksa/val/v1/types_pb.ts | 1572 +++++++++++++++++ .../aicar/gen/kuksa/val/v1/val_connect.js | 88 + .../aicar/gen/kuksa/val/v1/val_connect.ts | 89 + .../examples/aicar/gen/kuksa/val/v1/val_pb.js | 470 +++++ .../examples/aicar/gen/kuksa/val/v1/val_pb.ts | 579 ++++++ 13 files changed, 7830 insertions(+) create mode 100644 typescript/examples/aicar-zod/gen/kuksa/val/v1/types_pb.js create mode 100644 typescript/examples/aicar-zod/gen/kuksa/val/v1/types_pb.ts create mode 100644 typescript/examples/aicar-zod/gen/kuksa/val/v1/val_connect.js create mode 100644 typescript/examples/aicar-zod/gen/kuksa/val/v1/val_connect.ts create mode 100644 typescript/examples/aicar-zod/gen/kuksa/val/v1/val_pb.js create mode 100644 typescript/examples/aicar-zod/gen/kuksa/val/v1/val_pb.ts create mode 100644 typescript/examples/aicar/gen/kuksa/val/v1/main.ts create mode 100644 typescript/examples/aicar/gen/kuksa/val/v1/types_pb.js create mode 100644 typescript/examples/aicar/gen/kuksa/val/v1/types_pb.ts create mode 100644 typescript/examples/aicar/gen/kuksa/val/v1/val_connect.js create mode 100644 typescript/examples/aicar/gen/kuksa/val/v1/val_connect.ts create mode 100644 typescript/examples/aicar/gen/kuksa/val/v1/val_pb.js create mode 100644 typescript/examples/aicar/gen/kuksa/val/v1/val_pb.ts diff --git a/typescript/examples/aicar-zod/gen/kuksa/val/v1/types_pb.js b/typescript/examples/aicar-zod/gen/kuksa/val/v1/types_pb.js new file mode 100644 index 00000000..9cf4f8ca --- /dev/null +++ b/typescript/examples/aicar-zod/gen/kuksa/val/v1/types_pb.js @@ -0,0 +1,1117 @@ +"use strict"; +//******************************************************************************* +// Copyright (c) 2022 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// This program and the accompanying materials are made available under the +// terms of the Apache License 2.0 which is available at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// SPDX-License-Identifier: Apache-2.0 +//****************************************************************************** +Object.defineProperty(exports, "__esModule", { value: true }); +exports.DoubleArray = exports.FloatArray = exports.Uint64Array = exports.Uint32Array = exports.Int64Array = exports.Int32Array = exports.BoolArray = exports.StringArray = exports.DataEntryError = exports.Error = exports.ValueRestrictionString = exports.ValueRestrictionFloat = exports.ValueRestrictionUint = exports.ValueRestrictionInt = exports.ValueRestriction = exports.Attribute = exports.Sensor = exports.Actuator = exports.Metadata = exports.Datapoint = exports.DataEntry = exports.Field = exports.View = exports.EntryType = exports.DataType = void 0; +const protobuf_1 = require("@bufbuild/protobuf"); +/** + * VSS Data type of a signal + * + * Protobuf doesn't support int8, int16, uint8 or uint16. + * These are mapped to int32 and uint32 respectively. + * + * + * @generated from enum kuksa.val.v1.DataType + */ +var DataType; +(function (DataType) { + /** + * @generated from enum value: DATA_TYPE_UNSPECIFIED = 0; + */ + DataType[DataType["UNSPECIFIED"] = 0] = "UNSPECIFIED"; + /** + * @generated from enum value: DATA_TYPE_STRING = 1; + */ + DataType[DataType["STRING"] = 1] = "STRING"; + /** + * @generated from enum value: DATA_TYPE_BOOLEAN = 2; + */ + DataType[DataType["BOOLEAN"] = 2] = "BOOLEAN"; + /** + * @generated from enum value: DATA_TYPE_INT8 = 3; + */ + DataType[DataType["INT8"] = 3] = "INT8"; + /** + * @generated from enum value: DATA_TYPE_INT16 = 4; + */ + DataType[DataType["INT16"] = 4] = "INT16"; + /** + * @generated from enum value: DATA_TYPE_INT32 = 5; + */ + DataType[DataType["INT32"] = 5] = "INT32"; + /** + * @generated from enum value: DATA_TYPE_INT64 = 6; + */ + DataType[DataType["INT64"] = 6] = "INT64"; + /** + * @generated from enum value: DATA_TYPE_UINT8 = 7; + */ + DataType[DataType["UINT8"] = 7] = "UINT8"; + /** + * @generated from enum value: DATA_TYPE_UINT16 = 8; + */ + DataType[DataType["UINT16"] = 8] = "UINT16"; + /** + * @generated from enum value: DATA_TYPE_UINT32 = 9; + */ + DataType[DataType["UINT32"] = 9] = "UINT32"; + /** + * @generated from enum value: DATA_TYPE_UINT64 = 10; + */ + DataType[DataType["UINT64"] = 10] = "UINT64"; + /** + * @generated from enum value: DATA_TYPE_FLOAT = 11; + */ + DataType[DataType["FLOAT"] = 11] = "FLOAT"; + /** + * @generated from enum value: DATA_TYPE_DOUBLE = 12; + */ + DataType[DataType["DOUBLE"] = 12] = "DOUBLE"; + /** + * @generated from enum value: DATA_TYPE_TIMESTAMP = 13; + */ + DataType[DataType["TIMESTAMP"] = 13] = "TIMESTAMP"; + /** + * @generated from enum value: DATA_TYPE_STRING_ARRAY = 20; + */ + DataType[DataType["STRING_ARRAY"] = 20] = "STRING_ARRAY"; + /** + * @generated from enum value: DATA_TYPE_BOOLEAN_ARRAY = 21; + */ + DataType[DataType["BOOLEAN_ARRAY"] = 21] = "BOOLEAN_ARRAY"; + /** + * @generated from enum value: DATA_TYPE_INT8_ARRAY = 22; + */ + DataType[DataType["INT8_ARRAY"] = 22] = "INT8_ARRAY"; + /** + * @generated from enum value: DATA_TYPE_INT16_ARRAY = 23; + */ + DataType[DataType["INT16_ARRAY"] = 23] = "INT16_ARRAY"; + /** + * @generated from enum value: DATA_TYPE_INT32_ARRAY = 24; + */ + DataType[DataType["INT32_ARRAY"] = 24] = "INT32_ARRAY"; + /** + * @generated from enum value: DATA_TYPE_INT64_ARRAY = 25; + */ + DataType[DataType["INT64_ARRAY"] = 25] = "INT64_ARRAY"; + /** + * @generated from enum value: DATA_TYPE_UINT8_ARRAY = 26; + */ + DataType[DataType["UINT8_ARRAY"] = 26] = "UINT8_ARRAY"; + /** + * @generated from enum value: DATA_TYPE_UINT16_ARRAY = 27; + */ + DataType[DataType["UINT16_ARRAY"] = 27] = "UINT16_ARRAY"; + /** + * @generated from enum value: DATA_TYPE_UINT32_ARRAY = 28; + */ + DataType[DataType["UINT32_ARRAY"] = 28] = "UINT32_ARRAY"; + /** + * @generated from enum value: DATA_TYPE_UINT64_ARRAY = 29; + */ + DataType[DataType["UINT64_ARRAY"] = 29] = "UINT64_ARRAY"; + /** + * @generated from enum value: DATA_TYPE_FLOAT_ARRAY = 30; + */ + DataType[DataType["FLOAT_ARRAY"] = 30] = "FLOAT_ARRAY"; + /** + * @generated from enum value: DATA_TYPE_DOUBLE_ARRAY = 31; + */ + DataType[DataType["DOUBLE_ARRAY"] = 31] = "DOUBLE_ARRAY"; + /** + * @generated from enum value: DATA_TYPE_TIMESTAMP_ARRAY = 32; + */ + DataType[DataType["TIMESTAMP_ARRAY"] = 32] = "TIMESTAMP_ARRAY"; +})(DataType || (exports.DataType = DataType = {})); +// Retrieve enum metadata with: proto3.getEnumType(DataType) +protobuf_1.proto3.util.setEnumType(DataType, "kuksa.val.v1.DataType", [ + { no: 0, name: "DATA_TYPE_UNSPECIFIED" }, + { no: 1, name: "DATA_TYPE_STRING" }, + { no: 2, name: "DATA_TYPE_BOOLEAN" }, + { no: 3, name: "DATA_TYPE_INT8" }, + { no: 4, name: "DATA_TYPE_INT16" }, + { no: 5, name: "DATA_TYPE_INT32" }, + { no: 6, name: "DATA_TYPE_INT64" }, + { no: 7, name: "DATA_TYPE_UINT8" }, + { no: 8, name: "DATA_TYPE_UINT16" }, + { no: 9, name: "DATA_TYPE_UINT32" }, + { no: 10, name: "DATA_TYPE_UINT64" }, + { no: 11, name: "DATA_TYPE_FLOAT" }, + { no: 12, name: "DATA_TYPE_DOUBLE" }, + { no: 13, name: "DATA_TYPE_TIMESTAMP" }, + { no: 20, name: "DATA_TYPE_STRING_ARRAY" }, + { no: 21, name: "DATA_TYPE_BOOLEAN_ARRAY" }, + { no: 22, name: "DATA_TYPE_INT8_ARRAY" }, + { no: 23, name: "DATA_TYPE_INT16_ARRAY" }, + { no: 24, name: "DATA_TYPE_INT32_ARRAY" }, + { no: 25, name: "DATA_TYPE_INT64_ARRAY" }, + { no: 26, name: "DATA_TYPE_UINT8_ARRAY" }, + { no: 27, name: "DATA_TYPE_UINT16_ARRAY" }, + { no: 28, name: "DATA_TYPE_UINT32_ARRAY" }, + { no: 29, name: "DATA_TYPE_UINT64_ARRAY" }, + { no: 30, name: "DATA_TYPE_FLOAT_ARRAY" }, + { no: 31, name: "DATA_TYPE_DOUBLE_ARRAY" }, + { no: 32, name: "DATA_TYPE_TIMESTAMP_ARRAY" }, +]); +/** + * Entry type + * + * @generated from enum kuksa.val.v1.EntryType + */ +var EntryType; +(function (EntryType) { + /** + * @generated from enum value: ENTRY_TYPE_UNSPECIFIED = 0; + */ + EntryType[EntryType["UNSPECIFIED"] = 0] = "UNSPECIFIED"; + /** + * @generated from enum value: ENTRY_TYPE_ATTRIBUTE = 1; + */ + EntryType[EntryType["ATTRIBUTE"] = 1] = "ATTRIBUTE"; + /** + * @generated from enum value: ENTRY_TYPE_SENSOR = 2; + */ + EntryType[EntryType["SENSOR"] = 2] = "SENSOR"; + /** + * @generated from enum value: ENTRY_TYPE_ACTUATOR = 3; + */ + EntryType[EntryType["ACTUATOR"] = 3] = "ACTUATOR"; +})(EntryType || (exports.EntryType = EntryType = {})); +// Retrieve enum metadata with: proto3.getEnumType(EntryType) +protobuf_1.proto3.util.setEnumType(EntryType, "kuksa.val.v1.EntryType", [ + { no: 0, name: "ENTRY_TYPE_UNSPECIFIED" }, + { no: 1, name: "ENTRY_TYPE_ATTRIBUTE" }, + { no: 2, name: "ENTRY_TYPE_SENSOR" }, + { no: 3, name: "ENTRY_TYPE_ACTUATOR" }, +]); +/** + * A `View` specifies a set of fields which should + * be populated in a `DataEntry` (in a response message) + * + * @generated from enum kuksa.val.v1.View + */ +var View; +(function (View) { + /** + * Unspecified. Equivalent to VIEW_CURRENT_VALUE unless `fields` are explicitly set. + * + * @generated from enum value: VIEW_UNSPECIFIED = 0; + */ + View[View["UNSPECIFIED"] = 0] = "UNSPECIFIED"; + /** + * Populate DataEntry with value. + * + * @generated from enum value: VIEW_CURRENT_VALUE = 1; + */ + View[View["CURRENT_VALUE"] = 1] = "CURRENT_VALUE"; + /** + * Populate DataEntry with actuator target. + * + * @generated from enum value: VIEW_TARGET_VALUE = 2; + */ + View[View["TARGET_VALUE"] = 2] = "TARGET_VALUE"; + /** + * Populate DataEntry with metadata. + * + * @generated from enum value: VIEW_METADATA = 3; + */ + View[View["METADATA"] = 3] = "METADATA"; + /** + * Populate DataEntry only with requested fields. + * + * @generated from enum value: VIEW_FIELDS = 10; + */ + View[View["FIELDS"] = 10] = "FIELDS"; + /** + * Populate DataEntry with everything. + * + * @generated from enum value: VIEW_ALL = 20; + */ + View[View["ALL"] = 20] = "ALL"; +})(View || (exports.View = View = {})); +// Retrieve enum metadata with: proto3.getEnumType(View) +protobuf_1.proto3.util.setEnumType(View, "kuksa.val.v1.View", [ + { no: 0, name: "VIEW_UNSPECIFIED" }, + { no: 1, name: "VIEW_CURRENT_VALUE" }, + { no: 2, name: "VIEW_TARGET_VALUE" }, + { no: 3, name: "VIEW_METADATA" }, + { no: 10, name: "VIEW_FIELDS" }, + { no: 20, name: "VIEW_ALL" }, +]); +/** + * A `Field` corresponds to a specific field of a `DataEntry`. + * + * It can be used to: + * * populate only specific fields of a `DataEntry` response. + * * specify which fields of a `DataEntry` should be set as + * part of a `Set` request. + * * subscribe to only specific fields of a data entry. + * * convey which fields of an updated `DataEntry` have changed. + * + * @generated from enum kuksa.val.v1.Field + */ +var Field; +(function (Field) { + /** + * "*" i.e. everything + * + * @generated from enum value: FIELD_UNSPECIFIED = 0; + */ + Field[Field["UNSPECIFIED"] = 0] = "UNSPECIFIED"; + /** + * path + * + * @generated from enum value: FIELD_PATH = 1; + */ + Field[Field["PATH"] = 1] = "PATH"; + /** + * value + * + * @generated from enum value: FIELD_VALUE = 2; + */ + Field[Field["VALUE"] = 2] = "VALUE"; + /** + * actuator_target + * + * @generated from enum value: FIELD_ACTUATOR_TARGET = 3; + */ + Field[Field["ACTUATOR_TARGET"] = 3] = "ACTUATOR_TARGET"; + /** + * metadata.* + * + * @generated from enum value: FIELD_METADATA = 10; + */ + Field[Field["METADATA"] = 10] = "METADATA"; + /** + * metadata.data_type + * + * @generated from enum value: FIELD_METADATA_DATA_TYPE = 11; + */ + Field[Field["METADATA_DATA_TYPE"] = 11] = "METADATA_DATA_TYPE"; + /** + * metadata.description + * + * @generated from enum value: FIELD_METADATA_DESCRIPTION = 12; + */ + Field[Field["METADATA_DESCRIPTION"] = 12] = "METADATA_DESCRIPTION"; + /** + * metadata.entry_type + * + * @generated from enum value: FIELD_METADATA_ENTRY_TYPE = 13; + */ + Field[Field["METADATA_ENTRY_TYPE"] = 13] = "METADATA_ENTRY_TYPE"; + /** + * metadata.comment + * + * @generated from enum value: FIELD_METADATA_COMMENT = 14; + */ + Field[Field["METADATA_COMMENT"] = 14] = "METADATA_COMMENT"; + /** + * metadata.deprecation + * + * @generated from enum value: FIELD_METADATA_DEPRECATION = 15; + */ + Field[Field["METADATA_DEPRECATION"] = 15] = "METADATA_DEPRECATION"; + /** + * metadata.unit + * + * @generated from enum value: FIELD_METADATA_UNIT = 16; + */ + Field[Field["METADATA_UNIT"] = 16] = "METADATA_UNIT"; + /** + * metadata.value_restriction.* + * + * @generated from enum value: FIELD_METADATA_VALUE_RESTRICTION = 17; + */ + Field[Field["METADATA_VALUE_RESTRICTION"] = 17] = "METADATA_VALUE_RESTRICTION"; + /** + * metadata.actuator.* + * + * @generated from enum value: FIELD_METADATA_ACTUATOR = 20; + */ + Field[Field["METADATA_ACTUATOR"] = 20] = "METADATA_ACTUATOR"; + /** + * metadata.sensor.* + * + * @generated from enum value: FIELD_METADATA_SENSOR = 30; + */ + Field[Field["METADATA_SENSOR"] = 30] = "METADATA_SENSOR"; + /** + * metadata.attribute.* + * + * @generated from enum value: FIELD_METADATA_ATTRIBUTE = 40; + */ + Field[Field["METADATA_ATTRIBUTE"] = 40] = "METADATA_ATTRIBUTE"; +})(Field || (exports.Field = Field = {})); +// Retrieve enum metadata with: proto3.getEnumType(Field) +protobuf_1.proto3.util.setEnumType(Field, "kuksa.val.v1.Field", [ + { no: 0, name: "FIELD_UNSPECIFIED" }, + { no: 1, name: "FIELD_PATH" }, + { no: 2, name: "FIELD_VALUE" }, + { no: 3, name: "FIELD_ACTUATOR_TARGET" }, + { no: 10, name: "FIELD_METADATA" }, + { no: 11, name: "FIELD_METADATA_DATA_TYPE" }, + { no: 12, name: "FIELD_METADATA_DESCRIPTION" }, + { no: 13, name: "FIELD_METADATA_ENTRY_TYPE" }, + { no: 14, name: "FIELD_METADATA_COMMENT" }, + { no: 15, name: "FIELD_METADATA_DEPRECATION" }, + { no: 16, name: "FIELD_METADATA_UNIT" }, + { no: 17, name: "FIELD_METADATA_VALUE_RESTRICTION" }, + { no: 20, name: "FIELD_METADATA_ACTUATOR" }, + { no: 30, name: "FIELD_METADATA_SENSOR" }, + { no: 40, name: "FIELD_METADATA_ATTRIBUTE" }, +]); +/** + * Describes a VSS entry + * When requesting an entry, the amount of information returned can + * be controlled by specifying either a `View` or a set of `Field`s. + * + * @generated from message kuksa.val.v1.DataEntry + */ +class DataEntry extends protobuf_1.Message { + constructor(data) { + super(); + /** + * Defines the full VSS path of the entry. + * + * [field: FIELD_PATH] + * + * @generated from field: string path = 1; + */ + this.path = ""; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new DataEntry().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new DataEntry().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new DataEntry().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(DataEntry, a, b); + } +} +exports.DataEntry = DataEntry; +DataEntry.runtime = protobuf_1.proto3; +DataEntry.typeName = "kuksa.val.v1.DataEntry"; +DataEntry.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "value", kind: "message", T: Datapoint }, + { no: 3, name: "actuator_target", kind: "message", T: Datapoint }, + { no: 10, name: "metadata", kind: "message", T: Metadata }, +]); +/** + * @generated from message kuksa.val.v1.Datapoint + */ +class Datapoint extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from oneof kuksa.val.v1.Datapoint.value + */ + this.value = { case: undefined }; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new Datapoint().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new Datapoint().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new Datapoint().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(Datapoint, a, b); + } +} +exports.Datapoint = Datapoint; +Datapoint.runtime = protobuf_1.proto3; +Datapoint.typeName = "kuksa.val.v1.Datapoint"; +Datapoint.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "timestamp", kind: "message", T: protobuf_1.Timestamp }, + { no: 11, name: "string", kind: "scalar", T: 9 /* ScalarType.STRING */, oneof: "value" }, + { no: 12, name: "bool", kind: "scalar", T: 8 /* ScalarType.BOOL */, oneof: "value" }, + { no: 13, name: "int32", kind: "scalar", T: 17 /* ScalarType.SINT32 */, oneof: "value" }, + { no: 14, name: "int64", kind: "scalar", T: 18 /* ScalarType.SINT64 */, oneof: "value" }, + { no: 15, name: "uint32", kind: "scalar", T: 13 /* ScalarType.UINT32 */, oneof: "value" }, + { no: 16, name: "uint64", kind: "scalar", T: 4 /* ScalarType.UINT64 */, oneof: "value" }, + { no: 17, name: "float", kind: "scalar", T: 2 /* ScalarType.FLOAT */, oneof: "value" }, + { no: 18, name: "double", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, oneof: "value" }, + { no: 21, name: "string_array", kind: "message", T: StringArray, oneof: "value" }, + { no: 22, name: "bool_array", kind: "message", T: BoolArray, oneof: "value" }, + { no: 23, name: "int32_array", kind: "message", T: Int32Array, oneof: "value" }, + { no: 24, name: "int64_array", kind: "message", T: Int64Array, oneof: "value" }, + { no: 25, name: "uint32_array", kind: "message", T: Uint32Array, oneof: "value" }, + { no: 26, name: "uint64_array", kind: "message", T: Uint64Array, oneof: "value" }, + { no: 27, name: "float_array", kind: "message", T: FloatArray, oneof: "value" }, + { no: 28, name: "double_array", kind: "message", T: DoubleArray, oneof: "value" }, +]); +/** + * @generated from message kuksa.val.v1.Metadata + */ +class Metadata extends protobuf_1.Message { + constructor(data) { + super(); + /** + * Data type + * The VSS data type of the entry (i.e. the value, min, max etc). + * + * NOTE: protobuf doesn't have int8, int16, uint8 or uint16 which means + * that these values must be serialized as int32 and uint32 respectively. + * + * [field: FIELD_METADATA_DATA_TYPE] + * + * @generated from field: kuksa.val.v1.DataType data_type = 11; + */ + this.dataType = DataType.UNSPECIFIED; + /** + * Entry type + * + * [field: FIELD_METADATA_ENTRY_TYPE] + * + * @generated from field: kuksa.val.v1.EntryType entry_type = 12; + */ + this.entryType = EntryType.UNSPECIFIED; + /** + * Entry type specific metadata + * + * @generated from oneof kuksa.val.v1.Metadata.entry_specific + */ + this.entrySpecific = { case: undefined }; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new Metadata().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new Metadata().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new Metadata().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(Metadata, a, b); + } +} +exports.Metadata = Metadata; +Metadata.runtime = protobuf_1.proto3; +Metadata.typeName = "kuksa.val.v1.Metadata"; +Metadata.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 11, name: "data_type", kind: "enum", T: protobuf_1.proto3.getEnumType(DataType) }, + { no: 12, name: "entry_type", kind: "enum", T: protobuf_1.proto3.getEnumType(EntryType) }, + { no: 13, name: "description", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, + { no: 14, name: "comment", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, + { no: 15, name: "deprecation", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, + { no: 16, name: "unit", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, + { no: 17, name: "value_restriction", kind: "message", T: ValueRestriction }, + { no: 20, name: "actuator", kind: "message", T: Actuator, oneof: "entry_specific" }, + { no: 30, name: "sensor", kind: "message", T: Sensor, oneof: "entry_specific" }, + { no: 40, name: "attribute", kind: "message", T: Attribute, oneof: "entry_specific" }, +]); +/** + * ///////////////////// + * Actuator specific fields + * + * Nothing for now + * + * @generated from message kuksa.val.v1.Actuator + */ +class Actuator extends protobuf_1.Message { + constructor(data) { + super(); + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new Actuator().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new Actuator().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new Actuator().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(Actuator, a, b); + } +} +exports.Actuator = Actuator; +Actuator.runtime = protobuf_1.proto3; +Actuator.typeName = "kuksa.val.v1.Actuator"; +Actuator.fields = protobuf_1.proto3.util.newFieldList(() => []); +/** + * ////////////////////// + * Sensor specific + * + * Nothing for now + * + * @generated from message kuksa.val.v1.Sensor + */ +class Sensor extends protobuf_1.Message { + constructor(data) { + super(); + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new Sensor().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new Sensor().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new Sensor().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(Sensor, a, b); + } +} +exports.Sensor = Sensor; +Sensor.runtime = protobuf_1.proto3; +Sensor.typeName = "kuksa.val.v1.Sensor"; +Sensor.fields = protobuf_1.proto3.util.newFieldList(() => []); +/** + * ////////////////////// + * Attribute specific + * + * Nothing for now. + * + * @generated from message kuksa.val.v1.Attribute + */ +class Attribute extends protobuf_1.Message { + constructor(data) { + super(); + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new Attribute().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new Attribute().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new Attribute().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(Attribute, a, b); + } +} +exports.Attribute = Attribute; +Attribute.runtime = protobuf_1.proto3; +Attribute.typeName = "kuksa.val.v1.Attribute"; +Attribute.fields = protobuf_1.proto3.util.newFieldList(() => []); +/** + * Value restriction + * + * One ValueRestriction{type} for each type, since + * they don't make sense unless the types match + * + * + * @generated from message kuksa.val.v1.ValueRestriction + */ +class ValueRestriction extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from oneof kuksa.val.v1.ValueRestriction.type + */ + this.type = { case: undefined }; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new ValueRestriction().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new ValueRestriction().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new ValueRestriction().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(ValueRestriction, a, b); + } +} +exports.ValueRestriction = ValueRestriction; +ValueRestriction.runtime = protobuf_1.proto3; +ValueRestriction.typeName = "kuksa.val.v1.ValueRestriction"; +ValueRestriction.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 21, name: "string", kind: "message", T: ValueRestrictionString, oneof: "type" }, + { no: 22, name: "signed", kind: "message", T: ValueRestrictionInt, oneof: "type" }, + { no: 23, name: "unsigned", kind: "message", T: ValueRestrictionUint, oneof: "type" }, + { no: 24, name: "floating_point", kind: "message", T: ValueRestrictionFloat, oneof: "type" }, +]); +/** + * @generated from message kuksa.val.v1.ValueRestrictionInt + */ +class ValueRestrictionInt extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated sint64 allowed_values = 3; + */ + this.allowedValues = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new ValueRestrictionInt().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new ValueRestrictionInt().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new ValueRestrictionInt().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(ValueRestrictionInt, a, b); + } +} +exports.ValueRestrictionInt = ValueRestrictionInt; +ValueRestrictionInt.runtime = protobuf_1.proto3; +ValueRestrictionInt.typeName = "kuksa.val.v1.ValueRestrictionInt"; +ValueRestrictionInt.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "min", kind: "scalar", T: 18 /* ScalarType.SINT64 */, opt: true }, + { no: 2, name: "max", kind: "scalar", T: 18 /* ScalarType.SINT64 */, opt: true }, + { no: 3, name: "allowed_values", kind: "scalar", T: 18 /* ScalarType.SINT64 */, repeated: true }, +]); +/** + * @generated from message kuksa.val.v1.ValueRestrictionUint + */ +class ValueRestrictionUint extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated uint64 allowed_values = 3; + */ + this.allowedValues = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new ValueRestrictionUint().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new ValueRestrictionUint().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new ValueRestrictionUint().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(ValueRestrictionUint, a, b); + } +} +exports.ValueRestrictionUint = ValueRestrictionUint; +ValueRestrictionUint.runtime = protobuf_1.proto3; +ValueRestrictionUint.typeName = "kuksa.val.v1.ValueRestrictionUint"; +ValueRestrictionUint.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "min", kind: "scalar", T: 4 /* ScalarType.UINT64 */, opt: true }, + { no: 2, name: "max", kind: "scalar", T: 4 /* ScalarType.UINT64 */, opt: true }, + { no: 3, name: "allowed_values", kind: "scalar", T: 4 /* ScalarType.UINT64 */, repeated: true }, +]); +/** + * @generated from message kuksa.val.v1.ValueRestrictionFloat + */ +class ValueRestrictionFloat extends protobuf_1.Message { + constructor(data) { + super(); + /** + * allowed for doubles/floats not recommended + * + * @generated from field: repeated double allowed_values = 3; + */ + this.allowedValues = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new ValueRestrictionFloat().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new ValueRestrictionFloat().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new ValueRestrictionFloat().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(ValueRestrictionFloat, a, b); + } +} +exports.ValueRestrictionFloat = ValueRestrictionFloat; +ValueRestrictionFloat.runtime = protobuf_1.proto3; +ValueRestrictionFloat.typeName = "kuksa.val.v1.ValueRestrictionFloat"; +ValueRestrictionFloat.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "min", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true }, + { no: 2, name: "max", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true }, + { no: 3, name: "allowed_values", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, repeated: true }, +]); +/** + * min, max doesn't make much sense for a string + * + * @generated from message kuksa.val.v1.ValueRestrictionString + */ +class ValueRestrictionString extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated string allowed_values = 3; + */ + this.allowedValues = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new ValueRestrictionString().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new ValueRestrictionString().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new ValueRestrictionString().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(ValueRestrictionString, a, b); + } +} +exports.ValueRestrictionString = ValueRestrictionString; +ValueRestrictionString.runtime = protobuf_1.proto3; +ValueRestrictionString.typeName = "kuksa.val.v1.ValueRestrictionString"; +ValueRestrictionString.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 3, name: "allowed_values", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, +]); +/** + * Error response shall be an HTTP-like code. + * Should follow https://www.w3.org/TR/viss2-transport/#status-codes. + * + * @generated from message kuksa.val.v1.Error + */ +class Error extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: uint32 code = 1; + */ + this.code = 0; + /** + * @generated from field: string reason = 2; + */ + this.reason = ""; + /** + * @generated from field: string message = 3; + */ + this.message = ""; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new Error().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new Error().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new Error().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(Error, a, b); + } +} +exports.Error = Error; +Error.runtime = protobuf_1.proto3; +Error.typeName = "kuksa.val.v1.Error"; +Error.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "code", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 2, name: "reason", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "message", kind: "scalar", T: 9 /* ScalarType.STRING */ }, +]); +/** + * Used in get/set requests to report errors for specific entries + * + * @generated from message kuksa.val.v1.DataEntryError + */ +class DataEntryError extends protobuf_1.Message { + constructor(data) { + super(); + /** + * vss path + * + * @generated from field: string path = 1; + */ + this.path = ""; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new DataEntryError().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new DataEntryError().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new DataEntryError().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(DataEntryError, a, b); + } +} +exports.DataEntryError = DataEntryError; +DataEntryError.runtime = protobuf_1.proto3; +DataEntryError.typeName = "kuksa.val.v1.DataEntryError"; +DataEntryError.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "error", kind: "message", T: Error }, +]); +/** + * @generated from message kuksa.val.v1.StringArray + */ +class StringArray extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated string values = 1; + */ + this.values = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new StringArray().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new StringArray().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new StringArray().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(StringArray, a, b); + } +} +exports.StringArray = StringArray; +StringArray.runtime = protobuf_1.proto3; +StringArray.typeName = "kuksa.val.v1.StringArray"; +StringArray.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "values", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, +]); +/** + * @generated from message kuksa.val.v1.BoolArray + */ +class BoolArray extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated bool values = 1; + */ + this.values = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new BoolArray().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new BoolArray().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new BoolArray().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(BoolArray, a, b); + } +} +exports.BoolArray = BoolArray; +BoolArray.runtime = protobuf_1.proto3; +BoolArray.typeName = "kuksa.val.v1.BoolArray"; +BoolArray.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "values", kind: "scalar", T: 8 /* ScalarType.BOOL */, repeated: true }, +]); +/** + * @generated from message kuksa.val.v1.Int32Array + */ +class Int32Array extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated sint32 values = 1; + */ + this.values = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new Int32Array().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new Int32Array().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new Int32Array().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(Int32Array, a, b); + } +} +exports.Int32Array = Int32Array; +Int32Array.runtime = protobuf_1.proto3; +Int32Array.typeName = "kuksa.val.v1.Int32Array"; +Int32Array.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "values", kind: "scalar", T: 17 /* ScalarType.SINT32 */, repeated: true }, +]); +/** + * @generated from message kuksa.val.v1.Int64Array + */ +class Int64Array extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated sint64 values = 1; + */ + this.values = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new Int64Array().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new Int64Array().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new Int64Array().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(Int64Array, a, b); + } +} +exports.Int64Array = Int64Array; +Int64Array.runtime = protobuf_1.proto3; +Int64Array.typeName = "kuksa.val.v1.Int64Array"; +Int64Array.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "values", kind: "scalar", T: 18 /* ScalarType.SINT64 */, repeated: true }, +]); +/** + * @generated from message kuksa.val.v1.Uint32Array + */ +class Uint32Array extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated uint32 values = 1; + */ + this.values = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new Uint32Array().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new Uint32Array().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new Uint32Array().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(Uint32Array, a, b); + } +} +exports.Uint32Array = Uint32Array; +Uint32Array.runtime = protobuf_1.proto3; +Uint32Array.typeName = "kuksa.val.v1.Uint32Array"; +Uint32Array.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "values", kind: "scalar", T: 13 /* ScalarType.UINT32 */, repeated: true }, +]); +/** + * @generated from message kuksa.val.v1.Uint64Array + */ +class Uint64Array extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated uint64 values = 1; + */ + this.values = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new Uint64Array().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new Uint64Array().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new Uint64Array().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(Uint64Array, a, b); + } +} +exports.Uint64Array = Uint64Array; +Uint64Array.runtime = protobuf_1.proto3; +Uint64Array.typeName = "kuksa.val.v1.Uint64Array"; +Uint64Array.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "values", kind: "scalar", T: 4 /* ScalarType.UINT64 */, repeated: true }, +]); +/** + * @generated from message kuksa.val.v1.FloatArray + */ +class FloatArray extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated float values = 1; + */ + this.values = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new FloatArray().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new FloatArray().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new FloatArray().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(FloatArray, a, b); + } +} +exports.FloatArray = FloatArray; +FloatArray.runtime = protobuf_1.proto3; +FloatArray.typeName = "kuksa.val.v1.FloatArray"; +FloatArray.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "values", kind: "scalar", T: 2 /* ScalarType.FLOAT */, repeated: true }, +]); +/** + * @generated from message kuksa.val.v1.DoubleArray + */ +class DoubleArray extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated double values = 1; + */ + this.values = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new DoubleArray().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new DoubleArray().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new DoubleArray().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(DoubleArray, a, b); + } +} +exports.DoubleArray = DoubleArray; +DoubleArray.runtime = protobuf_1.proto3; +DoubleArray.typeName = "kuksa.val.v1.DoubleArray"; +DoubleArray.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "values", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, repeated: true }, +]); diff --git a/typescript/examples/aicar-zod/gen/kuksa/val/v1/types_pb.ts b/typescript/examples/aicar-zod/gen/kuksa/val/v1/types_pb.ts new file mode 100644 index 00000000..d3a30e3b --- /dev/null +++ b/typescript/examples/aicar-zod/gen/kuksa/val/v1/types_pb.ts @@ -0,0 +1,1572 @@ +//******************************************************************************* +// Copyright (c) 2022 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// This program and the accompanying materials are made available under the +// terms of the Apache License 2.0 which is available at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// SPDX-License-Identifier: Apache-2.0 +//****************************************************************************** + +// @generated by protoc-gen-es v1.10.0 with parameter "target=ts" +// @generated from file kuksa/val/v1/types.proto (package kuksa.val.v1, syntax proto3) +/* eslint-disable */ +// @ts-nocheck + +// I added V1 as in databroker. Is this good practice? + +import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; +import { Message, proto3, Timestamp } from "@bufbuild/protobuf"; + +/** + * VSS Data type of a signal + * + * Protobuf doesn't support int8, int16, uint8 or uint16. + * These are mapped to int32 and uint32 respectively. + * + * + * @generated from enum kuksa.val.v1.DataType + */ +export enum DataType { + /** + * @generated from enum value: DATA_TYPE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * @generated from enum value: DATA_TYPE_STRING = 1; + */ + STRING = 1, + + /** + * @generated from enum value: DATA_TYPE_BOOLEAN = 2; + */ + BOOLEAN = 2, + + /** + * @generated from enum value: DATA_TYPE_INT8 = 3; + */ + INT8 = 3, + + /** + * @generated from enum value: DATA_TYPE_INT16 = 4; + */ + INT16 = 4, + + /** + * @generated from enum value: DATA_TYPE_INT32 = 5; + */ + INT32 = 5, + + /** + * @generated from enum value: DATA_TYPE_INT64 = 6; + */ + INT64 = 6, + + /** + * @generated from enum value: DATA_TYPE_UINT8 = 7; + */ + UINT8 = 7, + + /** + * @generated from enum value: DATA_TYPE_UINT16 = 8; + */ + UINT16 = 8, + + /** + * @generated from enum value: DATA_TYPE_UINT32 = 9; + */ + UINT32 = 9, + + /** + * @generated from enum value: DATA_TYPE_UINT64 = 10; + */ + UINT64 = 10, + + /** + * @generated from enum value: DATA_TYPE_FLOAT = 11; + */ + FLOAT = 11, + + /** + * @generated from enum value: DATA_TYPE_DOUBLE = 12; + */ + DOUBLE = 12, + + /** + * @generated from enum value: DATA_TYPE_TIMESTAMP = 13; + */ + TIMESTAMP = 13, + + /** + * @generated from enum value: DATA_TYPE_STRING_ARRAY = 20; + */ + STRING_ARRAY = 20, + + /** + * @generated from enum value: DATA_TYPE_BOOLEAN_ARRAY = 21; + */ + BOOLEAN_ARRAY = 21, + + /** + * @generated from enum value: DATA_TYPE_INT8_ARRAY = 22; + */ + INT8_ARRAY = 22, + + /** + * @generated from enum value: DATA_TYPE_INT16_ARRAY = 23; + */ + INT16_ARRAY = 23, + + /** + * @generated from enum value: DATA_TYPE_INT32_ARRAY = 24; + */ + INT32_ARRAY = 24, + + /** + * @generated from enum value: DATA_TYPE_INT64_ARRAY = 25; + */ + INT64_ARRAY = 25, + + /** + * @generated from enum value: DATA_TYPE_UINT8_ARRAY = 26; + */ + UINT8_ARRAY = 26, + + /** + * @generated from enum value: DATA_TYPE_UINT16_ARRAY = 27; + */ + UINT16_ARRAY = 27, + + /** + * @generated from enum value: DATA_TYPE_UINT32_ARRAY = 28; + */ + UINT32_ARRAY = 28, + + /** + * @generated from enum value: DATA_TYPE_UINT64_ARRAY = 29; + */ + UINT64_ARRAY = 29, + + /** + * @generated from enum value: DATA_TYPE_FLOAT_ARRAY = 30; + */ + FLOAT_ARRAY = 30, + + /** + * @generated from enum value: DATA_TYPE_DOUBLE_ARRAY = 31; + */ + DOUBLE_ARRAY = 31, + + /** + * @generated from enum value: DATA_TYPE_TIMESTAMP_ARRAY = 32; + */ + TIMESTAMP_ARRAY = 32, +} +// Retrieve enum metadata with: proto3.getEnumType(DataType) +proto3.util.setEnumType(DataType, "kuksa.val.v1.DataType", [ + { no: 0, name: "DATA_TYPE_UNSPECIFIED" }, + { no: 1, name: "DATA_TYPE_STRING" }, + { no: 2, name: "DATA_TYPE_BOOLEAN" }, + { no: 3, name: "DATA_TYPE_INT8" }, + { no: 4, name: "DATA_TYPE_INT16" }, + { no: 5, name: "DATA_TYPE_INT32" }, + { no: 6, name: "DATA_TYPE_INT64" }, + { no: 7, name: "DATA_TYPE_UINT8" }, + { no: 8, name: "DATA_TYPE_UINT16" }, + { no: 9, name: "DATA_TYPE_UINT32" }, + { no: 10, name: "DATA_TYPE_UINT64" }, + { no: 11, name: "DATA_TYPE_FLOAT" }, + { no: 12, name: "DATA_TYPE_DOUBLE" }, + { no: 13, name: "DATA_TYPE_TIMESTAMP" }, + { no: 20, name: "DATA_TYPE_STRING_ARRAY" }, + { no: 21, name: "DATA_TYPE_BOOLEAN_ARRAY" }, + { no: 22, name: "DATA_TYPE_INT8_ARRAY" }, + { no: 23, name: "DATA_TYPE_INT16_ARRAY" }, + { no: 24, name: "DATA_TYPE_INT32_ARRAY" }, + { no: 25, name: "DATA_TYPE_INT64_ARRAY" }, + { no: 26, name: "DATA_TYPE_UINT8_ARRAY" }, + { no: 27, name: "DATA_TYPE_UINT16_ARRAY" }, + { no: 28, name: "DATA_TYPE_UINT32_ARRAY" }, + { no: 29, name: "DATA_TYPE_UINT64_ARRAY" }, + { no: 30, name: "DATA_TYPE_FLOAT_ARRAY" }, + { no: 31, name: "DATA_TYPE_DOUBLE_ARRAY" }, + { no: 32, name: "DATA_TYPE_TIMESTAMP_ARRAY" }, +]); + +/** + * Entry type + * + * @generated from enum kuksa.val.v1.EntryType + */ +export enum EntryType { + /** + * @generated from enum value: ENTRY_TYPE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * @generated from enum value: ENTRY_TYPE_ATTRIBUTE = 1; + */ + ATTRIBUTE = 1, + + /** + * @generated from enum value: ENTRY_TYPE_SENSOR = 2; + */ + SENSOR = 2, + + /** + * @generated from enum value: ENTRY_TYPE_ACTUATOR = 3; + */ + ACTUATOR = 3, +} +// Retrieve enum metadata with: proto3.getEnumType(EntryType) +proto3.util.setEnumType(EntryType, "kuksa.val.v1.EntryType", [ + { no: 0, name: "ENTRY_TYPE_UNSPECIFIED" }, + { no: 1, name: "ENTRY_TYPE_ATTRIBUTE" }, + { no: 2, name: "ENTRY_TYPE_SENSOR" }, + { no: 3, name: "ENTRY_TYPE_ACTUATOR" }, +]); + +/** + * A `View` specifies a set of fields which should + * be populated in a `DataEntry` (in a response message) + * + * @generated from enum kuksa.val.v1.View + */ +export enum View { + /** + * Unspecified. Equivalent to VIEW_CURRENT_VALUE unless `fields` are explicitly set. + * + * @generated from enum value: VIEW_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * Populate DataEntry with value. + * + * @generated from enum value: VIEW_CURRENT_VALUE = 1; + */ + CURRENT_VALUE = 1, + + /** + * Populate DataEntry with actuator target. + * + * @generated from enum value: VIEW_TARGET_VALUE = 2; + */ + TARGET_VALUE = 2, + + /** + * Populate DataEntry with metadata. + * + * @generated from enum value: VIEW_METADATA = 3; + */ + METADATA = 3, + + /** + * Populate DataEntry only with requested fields. + * + * @generated from enum value: VIEW_FIELDS = 10; + */ + FIELDS = 10, + + /** + * Populate DataEntry with everything. + * + * @generated from enum value: VIEW_ALL = 20; + */ + ALL = 20, +} +// Retrieve enum metadata with: proto3.getEnumType(View) +proto3.util.setEnumType(View, "kuksa.val.v1.View", [ + { no: 0, name: "VIEW_UNSPECIFIED" }, + { no: 1, name: "VIEW_CURRENT_VALUE" }, + { no: 2, name: "VIEW_TARGET_VALUE" }, + { no: 3, name: "VIEW_METADATA" }, + { no: 10, name: "VIEW_FIELDS" }, + { no: 20, name: "VIEW_ALL" }, +]); + +/** + * A `Field` corresponds to a specific field of a `DataEntry`. + * + * It can be used to: + * * populate only specific fields of a `DataEntry` response. + * * specify which fields of a `DataEntry` should be set as + * part of a `Set` request. + * * subscribe to only specific fields of a data entry. + * * convey which fields of an updated `DataEntry` have changed. + * + * @generated from enum kuksa.val.v1.Field + */ +export enum Field { + /** + * "*" i.e. everything + * + * @generated from enum value: FIELD_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * path + * + * @generated from enum value: FIELD_PATH = 1; + */ + PATH = 1, + + /** + * value + * + * @generated from enum value: FIELD_VALUE = 2; + */ + VALUE = 2, + + /** + * actuator_target + * + * @generated from enum value: FIELD_ACTUATOR_TARGET = 3; + */ + ACTUATOR_TARGET = 3, + + /** + * metadata.* + * + * @generated from enum value: FIELD_METADATA = 10; + */ + METADATA = 10, + + /** + * metadata.data_type + * + * @generated from enum value: FIELD_METADATA_DATA_TYPE = 11; + */ + METADATA_DATA_TYPE = 11, + + /** + * metadata.description + * + * @generated from enum value: FIELD_METADATA_DESCRIPTION = 12; + */ + METADATA_DESCRIPTION = 12, + + /** + * metadata.entry_type + * + * @generated from enum value: FIELD_METADATA_ENTRY_TYPE = 13; + */ + METADATA_ENTRY_TYPE = 13, + + /** + * metadata.comment + * + * @generated from enum value: FIELD_METADATA_COMMENT = 14; + */ + METADATA_COMMENT = 14, + + /** + * metadata.deprecation + * + * @generated from enum value: FIELD_METADATA_DEPRECATION = 15; + */ + METADATA_DEPRECATION = 15, + + /** + * metadata.unit + * + * @generated from enum value: FIELD_METADATA_UNIT = 16; + */ + METADATA_UNIT = 16, + + /** + * metadata.value_restriction.* + * + * @generated from enum value: FIELD_METADATA_VALUE_RESTRICTION = 17; + */ + METADATA_VALUE_RESTRICTION = 17, + + /** + * metadata.actuator.* + * + * @generated from enum value: FIELD_METADATA_ACTUATOR = 20; + */ + METADATA_ACTUATOR = 20, + + /** + * metadata.sensor.* + * + * @generated from enum value: FIELD_METADATA_SENSOR = 30; + */ + METADATA_SENSOR = 30, + + /** + * metadata.attribute.* + * + * @generated from enum value: FIELD_METADATA_ATTRIBUTE = 40; + */ + METADATA_ATTRIBUTE = 40, +} +// Retrieve enum metadata with: proto3.getEnumType(Field) +proto3.util.setEnumType(Field, "kuksa.val.v1.Field", [ + { no: 0, name: "FIELD_UNSPECIFIED" }, + { no: 1, name: "FIELD_PATH" }, + { no: 2, name: "FIELD_VALUE" }, + { no: 3, name: "FIELD_ACTUATOR_TARGET" }, + { no: 10, name: "FIELD_METADATA" }, + { no: 11, name: "FIELD_METADATA_DATA_TYPE" }, + { no: 12, name: "FIELD_METADATA_DESCRIPTION" }, + { no: 13, name: "FIELD_METADATA_ENTRY_TYPE" }, + { no: 14, name: "FIELD_METADATA_COMMENT" }, + { no: 15, name: "FIELD_METADATA_DEPRECATION" }, + { no: 16, name: "FIELD_METADATA_UNIT" }, + { no: 17, name: "FIELD_METADATA_VALUE_RESTRICTION" }, + { no: 20, name: "FIELD_METADATA_ACTUATOR" }, + { no: 30, name: "FIELD_METADATA_SENSOR" }, + { no: 40, name: "FIELD_METADATA_ATTRIBUTE" }, +]); + +/** + * Describes a VSS entry + * When requesting an entry, the amount of information returned can + * be controlled by specifying either a `View` or a set of `Field`s. + * + * @generated from message kuksa.val.v1.DataEntry + */ +export class DataEntry extends Message { + /** + * Defines the full VSS path of the entry. + * + * [field: FIELD_PATH] + * + * @generated from field: string path = 1; + */ + path = ""; + + /** + * The value (datapoint) + * + * [field: FIELD_VALUE] + * + * @generated from field: kuksa.val.v1.Datapoint value = 2; + */ + value?: Datapoint; + + /** + * Actuator target (only used if the entry is an actuator) + * + * [field: FIELD_ACTUATOR_TARGET] + * + * @generated from field: kuksa.val.v1.Datapoint actuator_target = 3; + */ + actuatorTarget?: Datapoint; + + /** + * Metadata for this entry + * + * [field: FIELD_METADATA] + * + * @generated from field: kuksa.val.v1.Metadata metadata = 10; + */ + metadata?: Metadata; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.DataEntry"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "value", kind: "message", T: Datapoint }, + { no: 3, name: "actuator_target", kind: "message", T: Datapoint }, + { no: 10, name: "metadata", kind: "message", T: Metadata }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): DataEntry { + return new DataEntry().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): DataEntry { + return new DataEntry().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): DataEntry { + return new DataEntry().fromJsonString(jsonString, options); + } + + static equals(a: DataEntry | PlainMessage | undefined, b: DataEntry | PlainMessage | undefined): boolean { + return proto3.util.equals(DataEntry, a, b); + } +} + +/** + * @generated from message kuksa.val.v1.Datapoint + */ +export class Datapoint extends Message { + /** + * @generated from field: google.protobuf.Timestamp timestamp = 1; + */ + timestamp?: Timestamp; + + /** + * @generated from oneof kuksa.val.v1.Datapoint.value + */ + value: { + /** + * @generated from field: string string = 11; + */ + value: string; + case: "string"; + } | { + /** + * @generated from field: bool bool = 12; + */ + value: boolean; + case: "bool"; + } | { + /** + * @generated from field: sint32 int32 = 13; + */ + value: number; + case: "int32"; + } | { + /** + * @generated from field: sint64 int64 = 14; + */ + value: bigint; + case: "int64"; + } | { + /** + * @generated from field: uint32 uint32 = 15; + */ + value: number; + case: "uint32"; + } | { + /** + * @generated from field: uint64 uint64 = 16; + */ + value: bigint; + case: "uint64"; + } | { + /** + * @generated from field: float float = 17; + */ + value: number; + case: "float"; + } | { + /** + * @generated from field: double double = 18; + */ + value: number; + case: "double"; + } | { + /** + * @generated from field: kuksa.val.v1.StringArray string_array = 21; + */ + value: StringArray; + case: "stringArray"; + } | { + /** + * @generated from field: kuksa.val.v1.BoolArray bool_array = 22; + */ + value: BoolArray; + case: "boolArray"; + } | { + /** + * @generated from field: kuksa.val.v1.Int32Array int32_array = 23; + */ + value: Int32Array; + case: "int32Array"; + } | { + /** + * @generated from field: kuksa.val.v1.Int64Array int64_array = 24; + */ + value: Int64Array; + case: "int64Array"; + } | { + /** + * @generated from field: kuksa.val.v1.Uint32Array uint32_array = 25; + */ + value: Uint32Array; + case: "uint32Array"; + } | { + /** + * @generated from field: kuksa.val.v1.Uint64Array uint64_array = 26; + */ + value: Uint64Array; + case: "uint64Array"; + } | { + /** + * @generated from field: kuksa.val.v1.FloatArray float_array = 27; + */ + value: FloatArray; + case: "floatArray"; + } | { + /** + * @generated from field: kuksa.val.v1.DoubleArray double_array = 28; + */ + value: DoubleArray; + case: "doubleArray"; + } | { case: undefined; value?: undefined } = { case: undefined }; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.Datapoint"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "timestamp", kind: "message", T: Timestamp }, + { no: 11, name: "string", kind: "scalar", T: 9 /* ScalarType.STRING */, oneof: "value" }, + { no: 12, name: "bool", kind: "scalar", T: 8 /* ScalarType.BOOL */, oneof: "value" }, + { no: 13, name: "int32", kind: "scalar", T: 17 /* ScalarType.SINT32 */, oneof: "value" }, + { no: 14, name: "int64", kind: "scalar", T: 18 /* ScalarType.SINT64 */, oneof: "value" }, + { no: 15, name: "uint32", kind: "scalar", T: 13 /* ScalarType.UINT32 */, oneof: "value" }, + { no: 16, name: "uint64", kind: "scalar", T: 4 /* ScalarType.UINT64 */, oneof: "value" }, + { no: 17, name: "float", kind: "scalar", T: 2 /* ScalarType.FLOAT */, oneof: "value" }, + { no: 18, name: "double", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, oneof: "value" }, + { no: 21, name: "string_array", kind: "message", T: StringArray, oneof: "value" }, + { no: 22, name: "bool_array", kind: "message", T: BoolArray, oneof: "value" }, + { no: 23, name: "int32_array", kind: "message", T: Int32Array, oneof: "value" }, + { no: 24, name: "int64_array", kind: "message", T: Int64Array, oneof: "value" }, + { no: 25, name: "uint32_array", kind: "message", T: Uint32Array, oneof: "value" }, + { no: 26, name: "uint64_array", kind: "message", T: Uint64Array, oneof: "value" }, + { no: 27, name: "float_array", kind: "message", T: FloatArray, oneof: "value" }, + { no: 28, name: "double_array", kind: "message", T: DoubleArray, oneof: "value" }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): Datapoint { + return new Datapoint().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): Datapoint { + return new Datapoint().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): Datapoint { + return new Datapoint().fromJsonString(jsonString, options); + } + + static equals(a: Datapoint | PlainMessage | undefined, b: Datapoint | PlainMessage | undefined): boolean { + return proto3.util.equals(Datapoint, a, b); + } +} + +/** + * @generated from message kuksa.val.v1.Metadata + */ +export class Metadata extends Message { + /** + * Data type + * The VSS data type of the entry (i.e. the value, min, max etc). + * + * NOTE: protobuf doesn't have int8, int16, uint8 or uint16 which means + * that these values must be serialized as int32 and uint32 respectively. + * + * [field: FIELD_METADATA_DATA_TYPE] + * + * @generated from field: kuksa.val.v1.DataType data_type = 11; + */ + dataType = DataType.UNSPECIFIED; + + /** + * Entry type + * + * [field: FIELD_METADATA_ENTRY_TYPE] + * + * @generated from field: kuksa.val.v1.EntryType entry_type = 12; + */ + entryType = EntryType.UNSPECIFIED; + + /** + * Description + * Describes the meaning and content of the entry. + * + * [field: FIELD_METADATA_DESCRIPTION] + * + * @generated from field: optional string description = 13; + */ + description?: string; + + /** + * Comment [optional] + * A comment can be used to provide additional informal information + * on a entry. + * + * [field: FIELD_METADATA_COMMENT] + * + * @generated from field: optional string comment = 14; + */ + comment?: string; + + /** + * Deprecation [optional] + * Whether this entry is deprecated. Can contain recommendations of what + * to use instead. + * + * [field: FIELD_METADATA_DEPRECATION] + * + * @generated from field: optional string deprecation = 15; + */ + deprecation?: string; + + /** + * Unit [optional] + * The unit of measurement + * + * [field: FIELD_METADATA_UNIT] + * + * @generated from field: optional string unit = 16; + */ + unit?: string; + + /** + * Value restrictions [optional] + * Restrict which values are allowed. + * Only restrictions matching the DataType {datatype} above are valid. + * + * [field: FIELD_METADATA_VALUE_RESTRICTION] + * + * @generated from field: kuksa.val.v1.ValueRestriction value_restriction = 17; + */ + valueRestriction?: ValueRestriction; + + /** + * Entry type specific metadata + * + * @generated from oneof kuksa.val.v1.Metadata.entry_specific + */ + entrySpecific: { + /** + * [field: FIELD_METADATA_ACTUATOR] + * + * @generated from field: kuksa.val.v1.Actuator actuator = 20; + */ + value: Actuator; + case: "actuator"; + } | { + /** + * [field: FIELD_METADATA_SENSOR] + * + * @generated from field: kuksa.val.v1.Sensor sensor = 30; + */ + value: Sensor; + case: "sensor"; + } | { + /** + * [field: FIELD_METADATA_ATTRIBUTE] + * + * @generated from field: kuksa.val.v1.Attribute attribute = 40; + */ + value: Attribute; + case: "attribute"; + } | { case: undefined; value?: undefined } = { case: undefined }; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.Metadata"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 11, name: "data_type", kind: "enum", T: proto3.getEnumType(DataType) }, + { no: 12, name: "entry_type", kind: "enum", T: proto3.getEnumType(EntryType) }, + { no: 13, name: "description", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, + { no: 14, name: "comment", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, + { no: 15, name: "deprecation", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, + { no: 16, name: "unit", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, + { no: 17, name: "value_restriction", kind: "message", T: ValueRestriction }, + { no: 20, name: "actuator", kind: "message", T: Actuator, oneof: "entry_specific" }, + { no: 30, name: "sensor", kind: "message", T: Sensor, oneof: "entry_specific" }, + { no: 40, name: "attribute", kind: "message", T: Attribute, oneof: "entry_specific" }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): Metadata { + return new Metadata().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): Metadata { + return new Metadata().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): Metadata { + return new Metadata().fromJsonString(jsonString, options); + } + + static equals(a: Metadata | PlainMessage | undefined, b: Metadata | PlainMessage | undefined): boolean { + return proto3.util.equals(Metadata, a, b); + } +} + +/** + * ///////////////////// + * Actuator specific fields + * + * Nothing for now + * + * @generated from message kuksa.val.v1.Actuator + */ +export class Actuator extends Message { + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.Actuator"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): Actuator { + return new Actuator().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): Actuator { + return new Actuator().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): Actuator { + return new Actuator().fromJsonString(jsonString, options); + } + + static equals(a: Actuator | PlainMessage | undefined, b: Actuator | PlainMessage | undefined): boolean { + return proto3.util.equals(Actuator, a, b); + } +} + +/** + * ////////////////////// + * Sensor specific + * + * Nothing for now + * + * @generated from message kuksa.val.v1.Sensor + */ +export class Sensor extends Message { + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.Sensor"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): Sensor { + return new Sensor().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): Sensor { + return new Sensor().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): Sensor { + return new Sensor().fromJsonString(jsonString, options); + } + + static equals(a: Sensor | PlainMessage | undefined, b: Sensor | PlainMessage | undefined): boolean { + return proto3.util.equals(Sensor, a, b); + } +} + +/** + * ////////////////////// + * Attribute specific + * + * Nothing for now. + * + * @generated from message kuksa.val.v1.Attribute + */ +export class Attribute extends Message { + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.Attribute"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): Attribute { + return new Attribute().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): Attribute { + return new Attribute().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): Attribute { + return new Attribute().fromJsonString(jsonString, options); + } + + static equals(a: Attribute | PlainMessage | undefined, b: Attribute | PlainMessage | undefined): boolean { + return proto3.util.equals(Attribute, a, b); + } +} + +/** + * Value restriction + * + * One ValueRestriction{type} for each type, since + * they don't make sense unless the types match + * + * + * @generated from message kuksa.val.v1.ValueRestriction + */ +export class ValueRestriction extends Message { + /** + * @generated from oneof kuksa.val.v1.ValueRestriction.type + */ + type: { + /** + * @generated from field: kuksa.val.v1.ValueRestrictionString string = 21; + */ + value: ValueRestrictionString; + case: "string"; + } | { + /** + * For signed VSS integers + * + * @generated from field: kuksa.val.v1.ValueRestrictionInt signed = 22; + */ + value: ValueRestrictionInt; + case: "signed"; + } | { + /** + * For unsigned VSS integers + * + * @generated from field: kuksa.val.v1.ValueRestrictionUint unsigned = 23; + */ + value: ValueRestrictionUint; + case: "unsigned"; + } | { + /** + * For floating point VSS values (float and double) + * + * @generated from field: kuksa.val.v1.ValueRestrictionFloat floating_point = 24; + */ + value: ValueRestrictionFloat; + case: "floatingPoint"; + } | { case: undefined; value?: undefined } = { case: undefined }; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.ValueRestriction"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 21, name: "string", kind: "message", T: ValueRestrictionString, oneof: "type" }, + { no: 22, name: "signed", kind: "message", T: ValueRestrictionInt, oneof: "type" }, + { no: 23, name: "unsigned", kind: "message", T: ValueRestrictionUint, oneof: "type" }, + { no: 24, name: "floating_point", kind: "message", T: ValueRestrictionFloat, oneof: "type" }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ValueRestriction { + return new ValueRestriction().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ValueRestriction { + return new ValueRestriction().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ValueRestriction { + return new ValueRestriction().fromJsonString(jsonString, options); + } + + static equals(a: ValueRestriction | PlainMessage | undefined, b: ValueRestriction | PlainMessage | undefined): boolean { + return proto3.util.equals(ValueRestriction, a, b); + } +} + +/** + * @generated from message kuksa.val.v1.ValueRestrictionInt + */ +export class ValueRestrictionInt extends Message { + /** + * @generated from field: optional sint64 min = 1; + */ + min?: bigint; + + /** + * @generated from field: optional sint64 max = 2; + */ + max?: bigint; + + /** + * @generated from field: repeated sint64 allowed_values = 3; + */ + allowedValues: bigint[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.ValueRestrictionInt"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "min", kind: "scalar", T: 18 /* ScalarType.SINT64 */, opt: true }, + { no: 2, name: "max", kind: "scalar", T: 18 /* ScalarType.SINT64 */, opt: true }, + { no: 3, name: "allowed_values", kind: "scalar", T: 18 /* ScalarType.SINT64 */, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ValueRestrictionInt { + return new ValueRestrictionInt().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ValueRestrictionInt { + return new ValueRestrictionInt().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ValueRestrictionInt { + return new ValueRestrictionInt().fromJsonString(jsonString, options); + } + + static equals(a: ValueRestrictionInt | PlainMessage | undefined, b: ValueRestrictionInt | PlainMessage | undefined): boolean { + return proto3.util.equals(ValueRestrictionInt, a, b); + } +} + +/** + * @generated from message kuksa.val.v1.ValueRestrictionUint + */ +export class ValueRestrictionUint extends Message { + /** + * @generated from field: optional uint64 min = 1; + */ + min?: bigint; + + /** + * @generated from field: optional uint64 max = 2; + */ + max?: bigint; + + /** + * @generated from field: repeated uint64 allowed_values = 3; + */ + allowedValues: bigint[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.ValueRestrictionUint"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "min", kind: "scalar", T: 4 /* ScalarType.UINT64 */, opt: true }, + { no: 2, name: "max", kind: "scalar", T: 4 /* ScalarType.UINT64 */, opt: true }, + { no: 3, name: "allowed_values", kind: "scalar", T: 4 /* ScalarType.UINT64 */, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ValueRestrictionUint { + return new ValueRestrictionUint().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ValueRestrictionUint { + return new ValueRestrictionUint().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ValueRestrictionUint { + return new ValueRestrictionUint().fromJsonString(jsonString, options); + } + + static equals(a: ValueRestrictionUint | PlainMessage | undefined, b: ValueRestrictionUint | PlainMessage | undefined): boolean { + return proto3.util.equals(ValueRestrictionUint, a, b); + } +} + +/** + * @generated from message kuksa.val.v1.ValueRestrictionFloat + */ +export class ValueRestrictionFloat extends Message { + /** + * @generated from field: optional double min = 1; + */ + min?: number; + + /** + * @generated from field: optional double max = 2; + */ + max?: number; + + /** + * allowed for doubles/floats not recommended + * + * @generated from field: repeated double allowed_values = 3; + */ + allowedValues: number[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.ValueRestrictionFloat"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "min", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true }, + { no: 2, name: "max", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true }, + { no: 3, name: "allowed_values", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ValueRestrictionFloat { + return new ValueRestrictionFloat().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ValueRestrictionFloat { + return new ValueRestrictionFloat().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ValueRestrictionFloat { + return new ValueRestrictionFloat().fromJsonString(jsonString, options); + } + + static equals(a: ValueRestrictionFloat | PlainMessage | undefined, b: ValueRestrictionFloat | PlainMessage | undefined): boolean { + return proto3.util.equals(ValueRestrictionFloat, a, b); + } +} + +/** + * min, max doesn't make much sense for a string + * + * @generated from message kuksa.val.v1.ValueRestrictionString + */ +export class ValueRestrictionString extends Message { + /** + * @generated from field: repeated string allowed_values = 3; + */ + allowedValues: string[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.ValueRestrictionString"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 3, name: "allowed_values", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ValueRestrictionString { + return new ValueRestrictionString().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ValueRestrictionString { + return new ValueRestrictionString().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ValueRestrictionString { + return new ValueRestrictionString().fromJsonString(jsonString, options); + } + + static equals(a: ValueRestrictionString | PlainMessage | undefined, b: ValueRestrictionString | PlainMessage | undefined): boolean { + return proto3.util.equals(ValueRestrictionString, a, b); + } +} + +/** + * Error response shall be an HTTP-like code. + * Should follow https://www.w3.org/TR/viss2-transport/#status-codes. + * + * @generated from message kuksa.val.v1.Error + */ +export class Error extends Message { + /** + * @generated from field: uint32 code = 1; + */ + code = 0; + + /** + * @generated from field: string reason = 2; + */ + reason = ""; + + /** + * @generated from field: string message = 3; + */ + message = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.Error"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "code", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 2, name: "reason", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "message", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): Error { + return new Error().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): Error { + return new Error().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): Error { + return new Error().fromJsonString(jsonString, options); + } + + static equals(a: Error | PlainMessage | undefined, b: Error | PlainMessage | undefined): boolean { + return proto3.util.equals(Error, a, b); + } +} + +/** + * Used in get/set requests to report errors for specific entries + * + * @generated from message kuksa.val.v1.DataEntryError + */ +export class DataEntryError extends Message { + /** + * vss path + * + * @generated from field: string path = 1; + */ + path = ""; + + /** + * @generated from field: kuksa.val.v1.Error error = 2; + */ + error?: Error; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.DataEntryError"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "error", kind: "message", T: Error }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): DataEntryError { + return new DataEntryError().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): DataEntryError { + return new DataEntryError().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): DataEntryError { + return new DataEntryError().fromJsonString(jsonString, options); + } + + static equals(a: DataEntryError | PlainMessage | undefined, b: DataEntryError | PlainMessage | undefined): boolean { + return proto3.util.equals(DataEntryError, a, b); + } +} + +/** + * @generated from message kuksa.val.v1.StringArray + */ +export class StringArray extends Message { + /** + * @generated from field: repeated string values = 1; + */ + values: string[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.StringArray"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "values", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): StringArray { + return new StringArray().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): StringArray { + return new StringArray().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): StringArray { + return new StringArray().fromJsonString(jsonString, options); + } + + static equals(a: StringArray | PlainMessage | undefined, b: StringArray | PlainMessage | undefined): boolean { + return proto3.util.equals(StringArray, a, b); + } +} + +/** + * @generated from message kuksa.val.v1.BoolArray + */ +export class BoolArray extends Message { + /** + * @generated from field: repeated bool values = 1; + */ + values: boolean[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.BoolArray"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "values", kind: "scalar", T: 8 /* ScalarType.BOOL */, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): BoolArray { + return new BoolArray().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): BoolArray { + return new BoolArray().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): BoolArray { + return new BoolArray().fromJsonString(jsonString, options); + } + + static equals(a: BoolArray | PlainMessage | undefined, b: BoolArray | PlainMessage | undefined): boolean { + return proto3.util.equals(BoolArray, a, b); + } +} + +/** + * @generated from message kuksa.val.v1.Int32Array + */ +export class Int32Array extends Message { + /** + * @generated from field: repeated sint32 values = 1; + */ + values: number[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.Int32Array"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "values", kind: "scalar", T: 17 /* ScalarType.SINT32 */, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): Int32Array { + return new Int32Array().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): Int32Array { + return new Int32Array().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): Int32Array { + return new Int32Array().fromJsonString(jsonString, options); + } + + static equals(a: Int32Array | PlainMessage | undefined, b: Int32Array | PlainMessage | undefined): boolean { + return proto3.util.equals(Int32Array, a, b); + } +} + +/** + * @generated from message kuksa.val.v1.Int64Array + */ +export class Int64Array extends Message { + /** + * @generated from field: repeated sint64 values = 1; + */ + values: bigint[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.Int64Array"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "values", kind: "scalar", T: 18 /* ScalarType.SINT64 */, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): Int64Array { + return new Int64Array().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): Int64Array { + return new Int64Array().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): Int64Array { + return new Int64Array().fromJsonString(jsonString, options); + } + + static equals(a: Int64Array | PlainMessage | undefined, b: Int64Array | PlainMessage | undefined): boolean { + return proto3.util.equals(Int64Array, a, b); + } +} + +/** + * @generated from message kuksa.val.v1.Uint32Array + */ +export class Uint32Array extends Message { + /** + * @generated from field: repeated uint32 values = 1; + */ + values: number[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.Uint32Array"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "values", kind: "scalar", T: 13 /* ScalarType.UINT32 */, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): Uint32Array { + return new Uint32Array().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): Uint32Array { + return new Uint32Array().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): Uint32Array { + return new Uint32Array().fromJsonString(jsonString, options); + } + + static equals(a: Uint32Array | PlainMessage | undefined, b: Uint32Array | PlainMessage | undefined): boolean { + return proto3.util.equals(Uint32Array, a, b); + } +} + +/** + * @generated from message kuksa.val.v1.Uint64Array + */ +export class Uint64Array extends Message { + /** + * @generated from field: repeated uint64 values = 1; + */ + values: bigint[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.Uint64Array"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "values", kind: "scalar", T: 4 /* ScalarType.UINT64 */, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): Uint64Array { + return new Uint64Array().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): Uint64Array { + return new Uint64Array().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): Uint64Array { + return new Uint64Array().fromJsonString(jsonString, options); + } + + static equals(a: Uint64Array | PlainMessage | undefined, b: Uint64Array | PlainMessage | undefined): boolean { + return proto3.util.equals(Uint64Array, a, b); + } +} + +/** + * @generated from message kuksa.val.v1.FloatArray + */ +export class FloatArray extends Message { + /** + * @generated from field: repeated float values = 1; + */ + values: number[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.FloatArray"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "values", kind: "scalar", T: 2 /* ScalarType.FLOAT */, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): FloatArray { + return new FloatArray().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): FloatArray { + return new FloatArray().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): FloatArray { + return new FloatArray().fromJsonString(jsonString, options); + } + + static equals(a: FloatArray | PlainMessage | undefined, b: FloatArray | PlainMessage | undefined): boolean { + return proto3.util.equals(FloatArray, a, b); + } +} + +/** + * @generated from message kuksa.val.v1.DoubleArray + */ +export class DoubleArray extends Message { + /** + * @generated from field: repeated double values = 1; + */ + values: number[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.DoubleArray"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "values", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): DoubleArray { + return new DoubleArray().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): DoubleArray { + return new DoubleArray().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): DoubleArray { + return new DoubleArray().fromJsonString(jsonString, options); + } + + static equals(a: DoubleArray | PlainMessage | undefined, b: DoubleArray | PlainMessage | undefined): boolean { + return proto3.util.equals(DoubleArray, a, b); + } +} + diff --git a/typescript/examples/aicar-zod/gen/kuksa/val/v1/val_connect.js b/typescript/examples/aicar-zod/gen/kuksa/val/v1/val_connect.js new file mode 100644 index 00000000..2ecdffa1 --- /dev/null +++ b/typescript/examples/aicar-zod/gen/kuksa/val/v1/val_connect.js @@ -0,0 +1,88 @@ +"use strict"; +//******************************************************************************* +// Copyright (c) 2022 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// This program and the accompanying materials are made available under the +// terms of the Apache License 2.0 which is available at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// SPDX-License-Identifier: Apache-2.0 +//****************************************************************************** +Object.defineProperty(exports, "__esModule", { value: true }); +exports.VAL = void 0; +// @generated by protoc-gen-connect-es v1.4.0 with parameter "target=ts" +// @generated from file kuksa/val/v1/val.proto (package kuksa.val.v1, syntax proto3) +/* eslint-disable */ +// @ts-nocheck +const val_pb_js_1 = require("./val_pb.js"); +const protobuf_1 = require("@bufbuild/protobuf"); +/** + * @generated from service kuksa.val.v1.VAL + */ +exports.VAL = { + typeName: "kuksa.val.v1.VAL", + methods: { + /** + * Get entries + * + * @generated from rpc kuksa.val.v1.VAL.Get + */ + get: { + name: "Get", + I: val_pb_js_1.GetRequest, + O: val_pb_js_1.GetResponse, + kind: protobuf_1.MethodKind.Unary, + }, + /** + * Set entries + * + * @generated from rpc kuksa.val.v1.VAL.Set + */ + set: { + name: "Set", + I: val_pb_js_1.SetRequest, + O: val_pb_js_1.SetResponse, + kind: protobuf_1.MethodKind.Unary, + }, + /** + * @generated from rpc kuksa.val.v1.VAL.StreamedUpdate + */ + streamedUpdate: { + name: "StreamedUpdate", + I: val_pb_js_1.StreamedUpdateRequest, + O: val_pb_js_1.StreamedUpdateResponse, + kind: protobuf_1.MethodKind.BiDiStreaming, + }, + /** + * Subscribe to a set of entries + * + * Returns a stream of notifications. + * + * InvalidArgument is returned if the request is malformed. + * + * @generated from rpc kuksa.val.v1.VAL.Subscribe + */ + subscribe: { + name: "Subscribe", + I: val_pb_js_1.SubscribeRequest, + O: val_pb_js_1.SubscribeResponse, + kind: protobuf_1.MethodKind.ServerStreaming, + }, + /** + * Shall return information that allows the client to determine + * what server/server implementation/version it is talking to + * eg. kuksa-databroker 0.5.1 + * + * @generated from rpc kuksa.val.v1.VAL.GetServerInfo + */ + getServerInfo: { + name: "GetServerInfo", + I: val_pb_js_1.GetServerInfoRequest, + O: val_pb_js_1.GetServerInfoResponse, + kind: protobuf_1.MethodKind.Unary, + }, + } +}; diff --git a/typescript/examples/aicar-zod/gen/kuksa/val/v1/val_connect.ts b/typescript/examples/aicar-zod/gen/kuksa/val/v1/val_connect.ts new file mode 100644 index 00000000..ed09e035 --- /dev/null +++ b/typescript/examples/aicar-zod/gen/kuksa/val/v1/val_connect.ts @@ -0,0 +1,89 @@ +//******************************************************************************* +// Copyright (c) 2022 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// This program and the accompanying materials are made available under the +// terms of the Apache License 2.0 which is available at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// SPDX-License-Identifier: Apache-2.0 +//****************************************************************************** + +// @generated by protoc-gen-connect-es v1.4.0 with parameter "target=ts" +// @generated from file kuksa/val/v1/val.proto (package kuksa.val.v1, syntax proto3) +/* eslint-disable */ +// @ts-nocheck + +import { GetRequest, GetResponse, GetServerInfoRequest, GetServerInfoResponse, SetRequest, SetResponse, StreamedUpdateRequest, StreamedUpdateResponse, SubscribeRequest, SubscribeResponse } from "./val_pb.js"; +import { MethodKind } from "@bufbuild/protobuf"; + +/** + * @generated from service kuksa.val.v1.VAL + */ +export const VAL = { + typeName: "kuksa.val.v1.VAL", + methods: { + /** + * Get entries + * + * @generated from rpc kuksa.val.v1.VAL.Get + */ + get: { + name: "Get", + I: GetRequest, + O: GetResponse, + kind: MethodKind.Unary, + }, + /** + * Set entries + * + * @generated from rpc kuksa.val.v1.VAL.Set + */ + set: { + name: "Set", + I: SetRequest, + O: SetResponse, + kind: MethodKind.Unary, + }, + /** + * @generated from rpc kuksa.val.v1.VAL.StreamedUpdate + */ + streamedUpdate: { + name: "StreamedUpdate", + I: StreamedUpdateRequest, + O: StreamedUpdateResponse, + kind: MethodKind.BiDiStreaming, + }, + /** + * Subscribe to a set of entries + * + * Returns a stream of notifications. + * + * InvalidArgument is returned if the request is malformed. + * + * @generated from rpc kuksa.val.v1.VAL.Subscribe + */ + subscribe: { + name: "Subscribe", + I: SubscribeRequest, + O: SubscribeResponse, + kind: MethodKind.ServerStreaming, + }, + /** + * Shall return information that allows the client to determine + * what server/server implementation/version it is talking to + * eg. kuksa-databroker 0.5.1 + * + * @generated from rpc kuksa.val.v1.VAL.GetServerInfo + */ + getServerInfo: { + name: "GetServerInfo", + I: GetServerInfoRequest, + O: GetServerInfoResponse, + kind: MethodKind.Unary, + }, + } +} as const; + diff --git a/typescript/examples/aicar-zod/gen/kuksa/val/v1/val_pb.js b/typescript/examples/aicar-zod/gen/kuksa/val/v1/val_pb.js new file mode 100644 index 00000000..66c9a1b2 --- /dev/null +++ b/typescript/examples/aicar-zod/gen/kuksa/val/v1/val_pb.js @@ -0,0 +1,470 @@ +"use strict"; +//******************************************************************************* +// Copyright (c) 2022 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// This program and the accompanying materials are made available under the +// terms of the Apache License 2.0 which is available at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// SPDX-License-Identifier: Apache-2.0 +//****************************************************************************** +Object.defineProperty(exports, "__esModule", { value: true }); +exports.GetServerInfoResponse = exports.GetServerInfoRequest = exports.SubscribeResponse = exports.SubscribeRequest = exports.SubscribeEntry = exports.StreamedUpdateResponse = exports.StreamedUpdateRequest = exports.SetResponse = exports.SetRequest = exports.EntryUpdate = exports.GetResponse = exports.GetRequest = exports.EntryRequest = void 0; +const protobuf_1 = require("@bufbuild/protobuf"); +const types_pb_js_1 = require("./types_pb.js"); +/** + * Define which data we want + * + * @generated from message kuksa.val.v1.EntryRequest + */ +class EntryRequest extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: string path = 1; + */ + this.path = ""; + /** + * @generated from field: kuksa.val.v1.View view = 2; + */ + this.view = types_pb_js_1.View.UNSPECIFIED; + /** + * @generated from field: repeated kuksa.val.v1.Field fields = 3; + */ + this.fields = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new EntryRequest().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new EntryRequest().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new EntryRequest().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(EntryRequest, a, b); + } +} +exports.EntryRequest = EntryRequest; +EntryRequest.runtime = protobuf_1.proto3; +EntryRequest.typeName = "kuksa.val.v1.EntryRequest"; +EntryRequest.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "view", kind: "enum", T: protobuf_1.proto3.getEnumType(types_pb_js_1.View) }, + { no: 3, name: "fields", kind: "enum", T: protobuf_1.proto3.getEnumType(types_pb_js_1.Field), repeated: true }, +]); +/** + * Request a set of entries. + * + * @generated from message kuksa.val.v1.GetRequest + */ +class GetRequest extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated kuksa.val.v1.EntryRequest entries = 1; + */ + this.entries = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new GetRequest().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new GetRequest().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new GetRequest().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(GetRequest, a, b); + } +} +exports.GetRequest = GetRequest; +GetRequest.runtime = protobuf_1.proto3; +GetRequest.typeName = "kuksa.val.v1.GetRequest"; +GetRequest.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "entries", kind: "message", T: EntryRequest, repeated: true }, +]); +/** + * Global errors are specified in `error`. + * Errors for individual entries are specified in `errors`. + * + * @generated from message kuksa.val.v1.GetResponse + */ +class GetResponse extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated kuksa.val.v1.DataEntry entries = 1; + */ + this.entries = []; + /** + * @generated from field: repeated kuksa.val.v1.DataEntryError errors = 2; + */ + this.errors = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new GetResponse().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new GetResponse().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new GetResponse().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(GetResponse, a, b); + } +} +exports.GetResponse = GetResponse; +GetResponse.runtime = protobuf_1.proto3; +GetResponse.typeName = "kuksa.val.v1.GetResponse"; +GetResponse.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "entries", kind: "message", T: types_pb_js_1.DataEntry, repeated: true }, + { no: 2, name: "errors", kind: "message", T: types_pb_js_1.DataEntryError, repeated: true }, + { no: 3, name: "error", kind: "message", T: types_pb_js_1.Error }, +]); +/** + * Define the data we want to set + * + * @generated from message kuksa.val.v1.EntryUpdate + */ +class EntryUpdate extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated kuksa.val.v1.Field fields = 2; + */ + this.fields = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new EntryUpdate().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new EntryUpdate().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new EntryUpdate().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(EntryUpdate, a, b); + } +} +exports.EntryUpdate = EntryUpdate; +EntryUpdate.runtime = protobuf_1.proto3; +EntryUpdate.typeName = "kuksa.val.v1.EntryUpdate"; +EntryUpdate.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "entry", kind: "message", T: types_pb_js_1.DataEntry }, + { no: 2, name: "fields", kind: "enum", T: protobuf_1.proto3.getEnumType(types_pb_js_1.Field), repeated: true }, +]); +/** + * A list of entries to be updated + * + * @generated from message kuksa.val.v1.SetRequest + */ +class SetRequest extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated kuksa.val.v1.EntryUpdate updates = 1; + */ + this.updates = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new SetRequest().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new SetRequest().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new SetRequest().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(SetRequest, a, b); + } +} +exports.SetRequest = SetRequest; +SetRequest.runtime = protobuf_1.proto3; +SetRequest.typeName = "kuksa.val.v1.SetRequest"; +SetRequest.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "updates", kind: "message", T: EntryUpdate, repeated: true }, +]); +/** + * Global errors are specified in `error`. + * Errors for individual entries are specified in `errors`. + * + * @generated from message kuksa.val.v1.SetResponse + */ +class SetResponse extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated kuksa.val.v1.DataEntryError errors = 2; + */ + this.errors = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new SetResponse().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new SetResponse().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new SetResponse().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(SetResponse, a, b); + } +} +exports.SetResponse = SetResponse; +SetResponse.runtime = protobuf_1.proto3; +SetResponse.typeName = "kuksa.val.v1.SetResponse"; +SetResponse.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "error", kind: "message", T: types_pb_js_1.Error }, + { no: 2, name: "errors", kind: "message", T: types_pb_js_1.DataEntryError, repeated: true }, +]); +/** + * @generated from message kuksa.val.v1.StreamedUpdateRequest + */ +class StreamedUpdateRequest extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated kuksa.val.v1.EntryUpdate updates = 1; + */ + this.updates = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new StreamedUpdateRequest().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new StreamedUpdateRequest().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new StreamedUpdateRequest().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(StreamedUpdateRequest, a, b); + } +} +exports.StreamedUpdateRequest = StreamedUpdateRequest; +StreamedUpdateRequest.runtime = protobuf_1.proto3; +StreamedUpdateRequest.typeName = "kuksa.val.v1.StreamedUpdateRequest"; +StreamedUpdateRequest.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "updates", kind: "message", T: EntryUpdate, repeated: true }, +]); +/** + * @generated from message kuksa.val.v1.StreamedUpdateResponse + */ +class StreamedUpdateResponse extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated kuksa.val.v1.DataEntryError errors = 2; + */ + this.errors = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new StreamedUpdateResponse().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new StreamedUpdateResponse().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new StreamedUpdateResponse().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(StreamedUpdateResponse, a, b); + } +} +exports.StreamedUpdateResponse = StreamedUpdateResponse; +StreamedUpdateResponse.runtime = protobuf_1.proto3; +StreamedUpdateResponse.typeName = "kuksa.val.v1.StreamedUpdateResponse"; +StreamedUpdateResponse.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "error", kind: "message", T: types_pb_js_1.Error }, + { no: 2, name: "errors", kind: "message", T: types_pb_js_1.DataEntryError, repeated: true }, +]); +/** + * Define what to subscribe to + * + * @generated from message kuksa.val.v1.SubscribeEntry + */ +class SubscribeEntry extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: string path = 1; + */ + this.path = ""; + /** + * @generated from field: kuksa.val.v1.View view = 2; + */ + this.view = types_pb_js_1.View.UNSPECIFIED; + /** + * @generated from field: repeated kuksa.val.v1.Field fields = 3; + */ + this.fields = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new SubscribeEntry().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new SubscribeEntry().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new SubscribeEntry().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(SubscribeEntry, a, b); + } +} +exports.SubscribeEntry = SubscribeEntry; +SubscribeEntry.runtime = protobuf_1.proto3; +SubscribeEntry.typeName = "kuksa.val.v1.SubscribeEntry"; +SubscribeEntry.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "view", kind: "enum", T: protobuf_1.proto3.getEnumType(types_pb_js_1.View) }, + { no: 3, name: "fields", kind: "enum", T: protobuf_1.proto3.getEnumType(types_pb_js_1.Field), repeated: true }, +]); +/** + * Subscribe to changes in datapoints. + * + * @generated from message kuksa.val.v1.SubscribeRequest + */ +class SubscribeRequest extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated kuksa.val.v1.SubscribeEntry entries = 1; + */ + this.entries = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new SubscribeRequest().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new SubscribeRequest().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new SubscribeRequest().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(SubscribeRequest, a, b); + } +} +exports.SubscribeRequest = SubscribeRequest; +SubscribeRequest.runtime = protobuf_1.proto3; +SubscribeRequest.typeName = "kuksa.val.v1.SubscribeRequest"; +SubscribeRequest.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "entries", kind: "message", T: SubscribeEntry, repeated: true }, +]); +/** + * A subscription response + * + * @generated from message kuksa.val.v1.SubscribeResponse + */ +class SubscribeResponse extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated kuksa.val.v1.EntryUpdate updates = 1; + */ + this.updates = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new SubscribeResponse().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new SubscribeResponse().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new SubscribeResponse().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(SubscribeResponse, a, b); + } +} +exports.SubscribeResponse = SubscribeResponse; +SubscribeResponse.runtime = protobuf_1.proto3; +SubscribeResponse.typeName = "kuksa.val.v1.SubscribeResponse"; +SubscribeResponse.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "updates", kind: "message", T: EntryUpdate, repeated: true }, +]); +/** + * Nothing yet + * + * @generated from message kuksa.val.v1.GetServerInfoRequest + */ +class GetServerInfoRequest extends protobuf_1.Message { + constructor(data) { + super(); + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new GetServerInfoRequest().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new GetServerInfoRequest().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new GetServerInfoRequest().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(GetServerInfoRequest, a, b); + } +} +exports.GetServerInfoRequest = GetServerInfoRequest; +GetServerInfoRequest.runtime = protobuf_1.proto3; +GetServerInfoRequest.typeName = "kuksa.val.v1.GetServerInfoRequest"; +GetServerInfoRequest.fields = protobuf_1.proto3.util.newFieldList(() => []); +/** + * @generated from message kuksa.val.v1.GetServerInfoResponse + */ +class GetServerInfoResponse extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: string name = 1; + */ + this.name = ""; + /** + * @generated from field: string version = 2; + */ + this.version = ""; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new GetServerInfoResponse().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new GetServerInfoResponse().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new GetServerInfoResponse().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(GetServerInfoResponse, a, b); + } +} +exports.GetServerInfoResponse = GetServerInfoResponse; +GetServerInfoResponse.runtime = protobuf_1.proto3; +GetServerInfoResponse.typeName = "kuksa.val.v1.GetServerInfoResponse"; +GetServerInfoResponse.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "version", kind: "scalar", T: 9 /* ScalarType.STRING */ }, +]); diff --git a/typescript/examples/aicar-zod/gen/kuksa/val/v1/val_pb.ts b/typescript/examples/aicar-zod/gen/kuksa/val/v1/val_pb.ts new file mode 100644 index 00000000..2b656bbe --- /dev/null +++ b/typescript/examples/aicar-zod/gen/kuksa/val/v1/val_pb.ts @@ -0,0 +1,579 @@ +//******************************************************************************* +// Copyright (c) 2022 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// This program and the accompanying materials are made available under the +// terms of the Apache License 2.0 which is available at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// SPDX-License-Identifier: Apache-2.0 +//****************************************************************************** + +// @generated by protoc-gen-es v1.10.0 with parameter "target=ts" +// @generated from file kuksa/val/v1/val.proto (package kuksa.val.v1, syntax proto3) +/* eslint-disable */ +// @ts-nocheck + +import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; +import { Message, proto3 } from "@bufbuild/protobuf"; +import { DataEntry, DataEntryError, Error, Field, View } from "./types_pb.js"; + +/** + * Define which data we want + * + * @generated from message kuksa.val.v1.EntryRequest + */ +export class EntryRequest extends Message { + /** + * @generated from field: string path = 1; + */ + path = ""; + + /** + * @generated from field: kuksa.val.v1.View view = 2; + */ + view = View.UNSPECIFIED; + + /** + * @generated from field: repeated kuksa.val.v1.Field fields = 3; + */ + fields: Field[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.EntryRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "view", kind: "enum", T: proto3.getEnumType(View) }, + { no: 3, name: "fields", kind: "enum", T: proto3.getEnumType(Field), repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): EntryRequest { + return new EntryRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): EntryRequest { + return new EntryRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): EntryRequest { + return new EntryRequest().fromJsonString(jsonString, options); + } + + static equals(a: EntryRequest | PlainMessage | undefined, b: EntryRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(EntryRequest, a, b); + } +} + +/** + * Request a set of entries. + * + * @generated from message kuksa.val.v1.GetRequest + */ +export class GetRequest extends Message { + /** + * @generated from field: repeated kuksa.val.v1.EntryRequest entries = 1; + */ + entries: EntryRequest[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.GetRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "entries", kind: "message", T: EntryRequest, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): GetRequest { + return new GetRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): GetRequest { + return new GetRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): GetRequest { + return new GetRequest().fromJsonString(jsonString, options); + } + + static equals(a: GetRequest | PlainMessage | undefined, b: GetRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(GetRequest, a, b); + } +} + +/** + * Global errors are specified in `error`. + * Errors for individual entries are specified in `errors`. + * + * @generated from message kuksa.val.v1.GetResponse + */ +export class GetResponse extends Message { + /** + * @generated from field: repeated kuksa.val.v1.DataEntry entries = 1; + */ + entries: DataEntry[] = []; + + /** + * @generated from field: repeated kuksa.val.v1.DataEntryError errors = 2; + */ + errors: DataEntryError[] = []; + + /** + * @generated from field: kuksa.val.v1.Error error = 3; + */ + error?: Error; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.GetResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "entries", kind: "message", T: DataEntry, repeated: true }, + { no: 2, name: "errors", kind: "message", T: DataEntryError, repeated: true }, + { no: 3, name: "error", kind: "message", T: Error }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): GetResponse { + return new GetResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): GetResponse { + return new GetResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): GetResponse { + return new GetResponse().fromJsonString(jsonString, options); + } + + static equals(a: GetResponse | PlainMessage | undefined, b: GetResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(GetResponse, a, b); + } +} + +/** + * Define the data we want to set + * + * @generated from message kuksa.val.v1.EntryUpdate + */ +export class EntryUpdate extends Message { + /** + * @generated from field: kuksa.val.v1.DataEntry entry = 1; + */ + entry?: DataEntry; + + /** + * @generated from field: repeated kuksa.val.v1.Field fields = 2; + */ + fields: Field[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.EntryUpdate"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "entry", kind: "message", T: DataEntry }, + { no: 2, name: "fields", kind: "enum", T: proto3.getEnumType(Field), repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): EntryUpdate { + return new EntryUpdate().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): EntryUpdate { + return new EntryUpdate().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): EntryUpdate { + return new EntryUpdate().fromJsonString(jsonString, options); + } + + static equals(a: EntryUpdate | PlainMessage | undefined, b: EntryUpdate | PlainMessage | undefined): boolean { + return proto3.util.equals(EntryUpdate, a, b); + } +} + +/** + * A list of entries to be updated + * + * @generated from message kuksa.val.v1.SetRequest + */ +export class SetRequest extends Message { + /** + * @generated from field: repeated kuksa.val.v1.EntryUpdate updates = 1; + */ + updates: EntryUpdate[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.SetRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "updates", kind: "message", T: EntryUpdate, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): SetRequest { + return new SetRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): SetRequest { + return new SetRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): SetRequest { + return new SetRequest().fromJsonString(jsonString, options); + } + + static equals(a: SetRequest | PlainMessage | undefined, b: SetRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(SetRequest, a, b); + } +} + +/** + * Global errors are specified in `error`. + * Errors for individual entries are specified in `errors`. + * + * @generated from message kuksa.val.v1.SetResponse + */ +export class SetResponse extends Message { + /** + * @generated from field: kuksa.val.v1.Error error = 1; + */ + error?: Error; + + /** + * @generated from field: repeated kuksa.val.v1.DataEntryError errors = 2; + */ + errors: DataEntryError[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.SetResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "error", kind: "message", T: Error }, + { no: 2, name: "errors", kind: "message", T: DataEntryError, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): SetResponse { + return new SetResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): SetResponse { + return new SetResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): SetResponse { + return new SetResponse().fromJsonString(jsonString, options); + } + + static equals(a: SetResponse | PlainMessage | undefined, b: SetResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(SetResponse, a, b); + } +} + +/** + * @generated from message kuksa.val.v1.StreamedUpdateRequest + */ +export class StreamedUpdateRequest extends Message { + /** + * @generated from field: repeated kuksa.val.v1.EntryUpdate updates = 1; + */ + updates: EntryUpdate[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.StreamedUpdateRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "updates", kind: "message", T: EntryUpdate, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): StreamedUpdateRequest { + return new StreamedUpdateRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): StreamedUpdateRequest { + return new StreamedUpdateRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): StreamedUpdateRequest { + return new StreamedUpdateRequest().fromJsonString(jsonString, options); + } + + static equals(a: StreamedUpdateRequest | PlainMessage | undefined, b: StreamedUpdateRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(StreamedUpdateRequest, a, b); + } +} + +/** + * @generated from message kuksa.val.v1.StreamedUpdateResponse + */ +export class StreamedUpdateResponse extends Message { + /** + * @generated from field: kuksa.val.v1.Error error = 1; + */ + error?: Error; + + /** + * @generated from field: repeated kuksa.val.v1.DataEntryError errors = 2; + */ + errors: DataEntryError[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.StreamedUpdateResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "error", kind: "message", T: Error }, + { no: 2, name: "errors", kind: "message", T: DataEntryError, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): StreamedUpdateResponse { + return new StreamedUpdateResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): StreamedUpdateResponse { + return new StreamedUpdateResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): StreamedUpdateResponse { + return new StreamedUpdateResponse().fromJsonString(jsonString, options); + } + + static equals(a: StreamedUpdateResponse | PlainMessage | undefined, b: StreamedUpdateResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(StreamedUpdateResponse, a, b); + } +} + +/** + * Define what to subscribe to + * + * @generated from message kuksa.val.v1.SubscribeEntry + */ +export class SubscribeEntry extends Message { + /** + * @generated from field: string path = 1; + */ + path = ""; + + /** + * @generated from field: kuksa.val.v1.View view = 2; + */ + view = View.UNSPECIFIED; + + /** + * @generated from field: repeated kuksa.val.v1.Field fields = 3; + */ + fields: Field[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.SubscribeEntry"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "view", kind: "enum", T: proto3.getEnumType(View) }, + { no: 3, name: "fields", kind: "enum", T: proto3.getEnumType(Field), repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): SubscribeEntry { + return new SubscribeEntry().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): SubscribeEntry { + return new SubscribeEntry().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): SubscribeEntry { + return new SubscribeEntry().fromJsonString(jsonString, options); + } + + static equals(a: SubscribeEntry | PlainMessage | undefined, b: SubscribeEntry | PlainMessage | undefined): boolean { + return proto3.util.equals(SubscribeEntry, a, b); + } +} + +/** + * Subscribe to changes in datapoints. + * + * @generated from message kuksa.val.v1.SubscribeRequest + */ +export class SubscribeRequest extends Message { + /** + * @generated from field: repeated kuksa.val.v1.SubscribeEntry entries = 1; + */ + entries: SubscribeEntry[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.SubscribeRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "entries", kind: "message", T: SubscribeEntry, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): SubscribeRequest { + return new SubscribeRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): SubscribeRequest { + return new SubscribeRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): SubscribeRequest { + return new SubscribeRequest().fromJsonString(jsonString, options); + } + + static equals(a: SubscribeRequest | PlainMessage | undefined, b: SubscribeRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(SubscribeRequest, a, b); + } +} + +/** + * A subscription response + * + * @generated from message kuksa.val.v1.SubscribeResponse + */ +export class SubscribeResponse extends Message { + /** + * @generated from field: repeated kuksa.val.v1.EntryUpdate updates = 1; + */ + updates: EntryUpdate[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.SubscribeResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "updates", kind: "message", T: EntryUpdate, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): SubscribeResponse { + return new SubscribeResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): SubscribeResponse { + return new SubscribeResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): SubscribeResponse { + return new SubscribeResponse().fromJsonString(jsonString, options); + } + + static equals(a: SubscribeResponse | PlainMessage | undefined, b: SubscribeResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(SubscribeResponse, a, b); + } +} + +/** + * Nothing yet + * + * @generated from message kuksa.val.v1.GetServerInfoRequest + */ +export class GetServerInfoRequest extends Message { + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.GetServerInfoRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): GetServerInfoRequest { + return new GetServerInfoRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): GetServerInfoRequest { + return new GetServerInfoRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): GetServerInfoRequest { + return new GetServerInfoRequest().fromJsonString(jsonString, options); + } + + static equals(a: GetServerInfoRequest | PlainMessage | undefined, b: GetServerInfoRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(GetServerInfoRequest, a, b); + } +} + +/** + * @generated from message kuksa.val.v1.GetServerInfoResponse + */ +export class GetServerInfoResponse extends Message { + /** + * @generated from field: string name = 1; + */ + name = ""; + + /** + * @generated from field: string version = 2; + */ + version = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.GetServerInfoResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "version", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): GetServerInfoResponse { + return new GetServerInfoResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): GetServerInfoResponse { + return new GetServerInfoResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): GetServerInfoResponse { + return new GetServerInfoResponse().fromJsonString(jsonString, options); + } + + static equals(a: GetServerInfoResponse | PlainMessage | undefined, b: GetServerInfoResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(GetServerInfoResponse, a, b); + } +} + diff --git a/typescript/examples/aicar/gen/kuksa/val/v1/main.ts b/typescript/examples/aicar/gen/kuksa/val/v1/main.ts new file mode 100644 index 00000000..e69de29b diff --git a/typescript/examples/aicar/gen/kuksa/val/v1/types_pb.js b/typescript/examples/aicar/gen/kuksa/val/v1/types_pb.js new file mode 100644 index 00000000..9cf4f8ca --- /dev/null +++ b/typescript/examples/aicar/gen/kuksa/val/v1/types_pb.js @@ -0,0 +1,1117 @@ +"use strict"; +//******************************************************************************* +// Copyright (c) 2022 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// This program and the accompanying materials are made available under the +// terms of the Apache License 2.0 which is available at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// SPDX-License-Identifier: Apache-2.0 +//****************************************************************************** +Object.defineProperty(exports, "__esModule", { value: true }); +exports.DoubleArray = exports.FloatArray = exports.Uint64Array = exports.Uint32Array = exports.Int64Array = exports.Int32Array = exports.BoolArray = exports.StringArray = exports.DataEntryError = exports.Error = exports.ValueRestrictionString = exports.ValueRestrictionFloat = exports.ValueRestrictionUint = exports.ValueRestrictionInt = exports.ValueRestriction = exports.Attribute = exports.Sensor = exports.Actuator = exports.Metadata = exports.Datapoint = exports.DataEntry = exports.Field = exports.View = exports.EntryType = exports.DataType = void 0; +const protobuf_1 = require("@bufbuild/protobuf"); +/** + * VSS Data type of a signal + * + * Protobuf doesn't support int8, int16, uint8 or uint16. + * These are mapped to int32 and uint32 respectively. + * + * + * @generated from enum kuksa.val.v1.DataType + */ +var DataType; +(function (DataType) { + /** + * @generated from enum value: DATA_TYPE_UNSPECIFIED = 0; + */ + DataType[DataType["UNSPECIFIED"] = 0] = "UNSPECIFIED"; + /** + * @generated from enum value: DATA_TYPE_STRING = 1; + */ + DataType[DataType["STRING"] = 1] = "STRING"; + /** + * @generated from enum value: DATA_TYPE_BOOLEAN = 2; + */ + DataType[DataType["BOOLEAN"] = 2] = "BOOLEAN"; + /** + * @generated from enum value: DATA_TYPE_INT8 = 3; + */ + DataType[DataType["INT8"] = 3] = "INT8"; + /** + * @generated from enum value: DATA_TYPE_INT16 = 4; + */ + DataType[DataType["INT16"] = 4] = "INT16"; + /** + * @generated from enum value: DATA_TYPE_INT32 = 5; + */ + DataType[DataType["INT32"] = 5] = "INT32"; + /** + * @generated from enum value: DATA_TYPE_INT64 = 6; + */ + DataType[DataType["INT64"] = 6] = "INT64"; + /** + * @generated from enum value: DATA_TYPE_UINT8 = 7; + */ + DataType[DataType["UINT8"] = 7] = "UINT8"; + /** + * @generated from enum value: DATA_TYPE_UINT16 = 8; + */ + DataType[DataType["UINT16"] = 8] = "UINT16"; + /** + * @generated from enum value: DATA_TYPE_UINT32 = 9; + */ + DataType[DataType["UINT32"] = 9] = "UINT32"; + /** + * @generated from enum value: DATA_TYPE_UINT64 = 10; + */ + DataType[DataType["UINT64"] = 10] = "UINT64"; + /** + * @generated from enum value: DATA_TYPE_FLOAT = 11; + */ + DataType[DataType["FLOAT"] = 11] = "FLOAT"; + /** + * @generated from enum value: DATA_TYPE_DOUBLE = 12; + */ + DataType[DataType["DOUBLE"] = 12] = "DOUBLE"; + /** + * @generated from enum value: DATA_TYPE_TIMESTAMP = 13; + */ + DataType[DataType["TIMESTAMP"] = 13] = "TIMESTAMP"; + /** + * @generated from enum value: DATA_TYPE_STRING_ARRAY = 20; + */ + DataType[DataType["STRING_ARRAY"] = 20] = "STRING_ARRAY"; + /** + * @generated from enum value: DATA_TYPE_BOOLEAN_ARRAY = 21; + */ + DataType[DataType["BOOLEAN_ARRAY"] = 21] = "BOOLEAN_ARRAY"; + /** + * @generated from enum value: DATA_TYPE_INT8_ARRAY = 22; + */ + DataType[DataType["INT8_ARRAY"] = 22] = "INT8_ARRAY"; + /** + * @generated from enum value: DATA_TYPE_INT16_ARRAY = 23; + */ + DataType[DataType["INT16_ARRAY"] = 23] = "INT16_ARRAY"; + /** + * @generated from enum value: DATA_TYPE_INT32_ARRAY = 24; + */ + DataType[DataType["INT32_ARRAY"] = 24] = "INT32_ARRAY"; + /** + * @generated from enum value: DATA_TYPE_INT64_ARRAY = 25; + */ + DataType[DataType["INT64_ARRAY"] = 25] = "INT64_ARRAY"; + /** + * @generated from enum value: DATA_TYPE_UINT8_ARRAY = 26; + */ + DataType[DataType["UINT8_ARRAY"] = 26] = "UINT8_ARRAY"; + /** + * @generated from enum value: DATA_TYPE_UINT16_ARRAY = 27; + */ + DataType[DataType["UINT16_ARRAY"] = 27] = "UINT16_ARRAY"; + /** + * @generated from enum value: DATA_TYPE_UINT32_ARRAY = 28; + */ + DataType[DataType["UINT32_ARRAY"] = 28] = "UINT32_ARRAY"; + /** + * @generated from enum value: DATA_TYPE_UINT64_ARRAY = 29; + */ + DataType[DataType["UINT64_ARRAY"] = 29] = "UINT64_ARRAY"; + /** + * @generated from enum value: DATA_TYPE_FLOAT_ARRAY = 30; + */ + DataType[DataType["FLOAT_ARRAY"] = 30] = "FLOAT_ARRAY"; + /** + * @generated from enum value: DATA_TYPE_DOUBLE_ARRAY = 31; + */ + DataType[DataType["DOUBLE_ARRAY"] = 31] = "DOUBLE_ARRAY"; + /** + * @generated from enum value: DATA_TYPE_TIMESTAMP_ARRAY = 32; + */ + DataType[DataType["TIMESTAMP_ARRAY"] = 32] = "TIMESTAMP_ARRAY"; +})(DataType || (exports.DataType = DataType = {})); +// Retrieve enum metadata with: proto3.getEnumType(DataType) +protobuf_1.proto3.util.setEnumType(DataType, "kuksa.val.v1.DataType", [ + { no: 0, name: "DATA_TYPE_UNSPECIFIED" }, + { no: 1, name: "DATA_TYPE_STRING" }, + { no: 2, name: "DATA_TYPE_BOOLEAN" }, + { no: 3, name: "DATA_TYPE_INT8" }, + { no: 4, name: "DATA_TYPE_INT16" }, + { no: 5, name: "DATA_TYPE_INT32" }, + { no: 6, name: "DATA_TYPE_INT64" }, + { no: 7, name: "DATA_TYPE_UINT8" }, + { no: 8, name: "DATA_TYPE_UINT16" }, + { no: 9, name: "DATA_TYPE_UINT32" }, + { no: 10, name: "DATA_TYPE_UINT64" }, + { no: 11, name: "DATA_TYPE_FLOAT" }, + { no: 12, name: "DATA_TYPE_DOUBLE" }, + { no: 13, name: "DATA_TYPE_TIMESTAMP" }, + { no: 20, name: "DATA_TYPE_STRING_ARRAY" }, + { no: 21, name: "DATA_TYPE_BOOLEAN_ARRAY" }, + { no: 22, name: "DATA_TYPE_INT8_ARRAY" }, + { no: 23, name: "DATA_TYPE_INT16_ARRAY" }, + { no: 24, name: "DATA_TYPE_INT32_ARRAY" }, + { no: 25, name: "DATA_TYPE_INT64_ARRAY" }, + { no: 26, name: "DATA_TYPE_UINT8_ARRAY" }, + { no: 27, name: "DATA_TYPE_UINT16_ARRAY" }, + { no: 28, name: "DATA_TYPE_UINT32_ARRAY" }, + { no: 29, name: "DATA_TYPE_UINT64_ARRAY" }, + { no: 30, name: "DATA_TYPE_FLOAT_ARRAY" }, + { no: 31, name: "DATA_TYPE_DOUBLE_ARRAY" }, + { no: 32, name: "DATA_TYPE_TIMESTAMP_ARRAY" }, +]); +/** + * Entry type + * + * @generated from enum kuksa.val.v1.EntryType + */ +var EntryType; +(function (EntryType) { + /** + * @generated from enum value: ENTRY_TYPE_UNSPECIFIED = 0; + */ + EntryType[EntryType["UNSPECIFIED"] = 0] = "UNSPECIFIED"; + /** + * @generated from enum value: ENTRY_TYPE_ATTRIBUTE = 1; + */ + EntryType[EntryType["ATTRIBUTE"] = 1] = "ATTRIBUTE"; + /** + * @generated from enum value: ENTRY_TYPE_SENSOR = 2; + */ + EntryType[EntryType["SENSOR"] = 2] = "SENSOR"; + /** + * @generated from enum value: ENTRY_TYPE_ACTUATOR = 3; + */ + EntryType[EntryType["ACTUATOR"] = 3] = "ACTUATOR"; +})(EntryType || (exports.EntryType = EntryType = {})); +// Retrieve enum metadata with: proto3.getEnumType(EntryType) +protobuf_1.proto3.util.setEnumType(EntryType, "kuksa.val.v1.EntryType", [ + { no: 0, name: "ENTRY_TYPE_UNSPECIFIED" }, + { no: 1, name: "ENTRY_TYPE_ATTRIBUTE" }, + { no: 2, name: "ENTRY_TYPE_SENSOR" }, + { no: 3, name: "ENTRY_TYPE_ACTUATOR" }, +]); +/** + * A `View` specifies a set of fields which should + * be populated in a `DataEntry` (in a response message) + * + * @generated from enum kuksa.val.v1.View + */ +var View; +(function (View) { + /** + * Unspecified. Equivalent to VIEW_CURRENT_VALUE unless `fields` are explicitly set. + * + * @generated from enum value: VIEW_UNSPECIFIED = 0; + */ + View[View["UNSPECIFIED"] = 0] = "UNSPECIFIED"; + /** + * Populate DataEntry with value. + * + * @generated from enum value: VIEW_CURRENT_VALUE = 1; + */ + View[View["CURRENT_VALUE"] = 1] = "CURRENT_VALUE"; + /** + * Populate DataEntry with actuator target. + * + * @generated from enum value: VIEW_TARGET_VALUE = 2; + */ + View[View["TARGET_VALUE"] = 2] = "TARGET_VALUE"; + /** + * Populate DataEntry with metadata. + * + * @generated from enum value: VIEW_METADATA = 3; + */ + View[View["METADATA"] = 3] = "METADATA"; + /** + * Populate DataEntry only with requested fields. + * + * @generated from enum value: VIEW_FIELDS = 10; + */ + View[View["FIELDS"] = 10] = "FIELDS"; + /** + * Populate DataEntry with everything. + * + * @generated from enum value: VIEW_ALL = 20; + */ + View[View["ALL"] = 20] = "ALL"; +})(View || (exports.View = View = {})); +// Retrieve enum metadata with: proto3.getEnumType(View) +protobuf_1.proto3.util.setEnumType(View, "kuksa.val.v1.View", [ + { no: 0, name: "VIEW_UNSPECIFIED" }, + { no: 1, name: "VIEW_CURRENT_VALUE" }, + { no: 2, name: "VIEW_TARGET_VALUE" }, + { no: 3, name: "VIEW_METADATA" }, + { no: 10, name: "VIEW_FIELDS" }, + { no: 20, name: "VIEW_ALL" }, +]); +/** + * A `Field` corresponds to a specific field of a `DataEntry`. + * + * It can be used to: + * * populate only specific fields of a `DataEntry` response. + * * specify which fields of a `DataEntry` should be set as + * part of a `Set` request. + * * subscribe to only specific fields of a data entry. + * * convey which fields of an updated `DataEntry` have changed. + * + * @generated from enum kuksa.val.v1.Field + */ +var Field; +(function (Field) { + /** + * "*" i.e. everything + * + * @generated from enum value: FIELD_UNSPECIFIED = 0; + */ + Field[Field["UNSPECIFIED"] = 0] = "UNSPECIFIED"; + /** + * path + * + * @generated from enum value: FIELD_PATH = 1; + */ + Field[Field["PATH"] = 1] = "PATH"; + /** + * value + * + * @generated from enum value: FIELD_VALUE = 2; + */ + Field[Field["VALUE"] = 2] = "VALUE"; + /** + * actuator_target + * + * @generated from enum value: FIELD_ACTUATOR_TARGET = 3; + */ + Field[Field["ACTUATOR_TARGET"] = 3] = "ACTUATOR_TARGET"; + /** + * metadata.* + * + * @generated from enum value: FIELD_METADATA = 10; + */ + Field[Field["METADATA"] = 10] = "METADATA"; + /** + * metadata.data_type + * + * @generated from enum value: FIELD_METADATA_DATA_TYPE = 11; + */ + Field[Field["METADATA_DATA_TYPE"] = 11] = "METADATA_DATA_TYPE"; + /** + * metadata.description + * + * @generated from enum value: FIELD_METADATA_DESCRIPTION = 12; + */ + Field[Field["METADATA_DESCRIPTION"] = 12] = "METADATA_DESCRIPTION"; + /** + * metadata.entry_type + * + * @generated from enum value: FIELD_METADATA_ENTRY_TYPE = 13; + */ + Field[Field["METADATA_ENTRY_TYPE"] = 13] = "METADATA_ENTRY_TYPE"; + /** + * metadata.comment + * + * @generated from enum value: FIELD_METADATA_COMMENT = 14; + */ + Field[Field["METADATA_COMMENT"] = 14] = "METADATA_COMMENT"; + /** + * metadata.deprecation + * + * @generated from enum value: FIELD_METADATA_DEPRECATION = 15; + */ + Field[Field["METADATA_DEPRECATION"] = 15] = "METADATA_DEPRECATION"; + /** + * metadata.unit + * + * @generated from enum value: FIELD_METADATA_UNIT = 16; + */ + Field[Field["METADATA_UNIT"] = 16] = "METADATA_UNIT"; + /** + * metadata.value_restriction.* + * + * @generated from enum value: FIELD_METADATA_VALUE_RESTRICTION = 17; + */ + Field[Field["METADATA_VALUE_RESTRICTION"] = 17] = "METADATA_VALUE_RESTRICTION"; + /** + * metadata.actuator.* + * + * @generated from enum value: FIELD_METADATA_ACTUATOR = 20; + */ + Field[Field["METADATA_ACTUATOR"] = 20] = "METADATA_ACTUATOR"; + /** + * metadata.sensor.* + * + * @generated from enum value: FIELD_METADATA_SENSOR = 30; + */ + Field[Field["METADATA_SENSOR"] = 30] = "METADATA_SENSOR"; + /** + * metadata.attribute.* + * + * @generated from enum value: FIELD_METADATA_ATTRIBUTE = 40; + */ + Field[Field["METADATA_ATTRIBUTE"] = 40] = "METADATA_ATTRIBUTE"; +})(Field || (exports.Field = Field = {})); +// Retrieve enum metadata with: proto3.getEnumType(Field) +protobuf_1.proto3.util.setEnumType(Field, "kuksa.val.v1.Field", [ + { no: 0, name: "FIELD_UNSPECIFIED" }, + { no: 1, name: "FIELD_PATH" }, + { no: 2, name: "FIELD_VALUE" }, + { no: 3, name: "FIELD_ACTUATOR_TARGET" }, + { no: 10, name: "FIELD_METADATA" }, + { no: 11, name: "FIELD_METADATA_DATA_TYPE" }, + { no: 12, name: "FIELD_METADATA_DESCRIPTION" }, + { no: 13, name: "FIELD_METADATA_ENTRY_TYPE" }, + { no: 14, name: "FIELD_METADATA_COMMENT" }, + { no: 15, name: "FIELD_METADATA_DEPRECATION" }, + { no: 16, name: "FIELD_METADATA_UNIT" }, + { no: 17, name: "FIELD_METADATA_VALUE_RESTRICTION" }, + { no: 20, name: "FIELD_METADATA_ACTUATOR" }, + { no: 30, name: "FIELD_METADATA_SENSOR" }, + { no: 40, name: "FIELD_METADATA_ATTRIBUTE" }, +]); +/** + * Describes a VSS entry + * When requesting an entry, the amount of information returned can + * be controlled by specifying either a `View` or a set of `Field`s. + * + * @generated from message kuksa.val.v1.DataEntry + */ +class DataEntry extends protobuf_1.Message { + constructor(data) { + super(); + /** + * Defines the full VSS path of the entry. + * + * [field: FIELD_PATH] + * + * @generated from field: string path = 1; + */ + this.path = ""; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new DataEntry().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new DataEntry().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new DataEntry().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(DataEntry, a, b); + } +} +exports.DataEntry = DataEntry; +DataEntry.runtime = protobuf_1.proto3; +DataEntry.typeName = "kuksa.val.v1.DataEntry"; +DataEntry.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "value", kind: "message", T: Datapoint }, + { no: 3, name: "actuator_target", kind: "message", T: Datapoint }, + { no: 10, name: "metadata", kind: "message", T: Metadata }, +]); +/** + * @generated from message kuksa.val.v1.Datapoint + */ +class Datapoint extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from oneof kuksa.val.v1.Datapoint.value + */ + this.value = { case: undefined }; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new Datapoint().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new Datapoint().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new Datapoint().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(Datapoint, a, b); + } +} +exports.Datapoint = Datapoint; +Datapoint.runtime = protobuf_1.proto3; +Datapoint.typeName = "kuksa.val.v1.Datapoint"; +Datapoint.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "timestamp", kind: "message", T: protobuf_1.Timestamp }, + { no: 11, name: "string", kind: "scalar", T: 9 /* ScalarType.STRING */, oneof: "value" }, + { no: 12, name: "bool", kind: "scalar", T: 8 /* ScalarType.BOOL */, oneof: "value" }, + { no: 13, name: "int32", kind: "scalar", T: 17 /* ScalarType.SINT32 */, oneof: "value" }, + { no: 14, name: "int64", kind: "scalar", T: 18 /* ScalarType.SINT64 */, oneof: "value" }, + { no: 15, name: "uint32", kind: "scalar", T: 13 /* ScalarType.UINT32 */, oneof: "value" }, + { no: 16, name: "uint64", kind: "scalar", T: 4 /* ScalarType.UINT64 */, oneof: "value" }, + { no: 17, name: "float", kind: "scalar", T: 2 /* ScalarType.FLOAT */, oneof: "value" }, + { no: 18, name: "double", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, oneof: "value" }, + { no: 21, name: "string_array", kind: "message", T: StringArray, oneof: "value" }, + { no: 22, name: "bool_array", kind: "message", T: BoolArray, oneof: "value" }, + { no: 23, name: "int32_array", kind: "message", T: Int32Array, oneof: "value" }, + { no: 24, name: "int64_array", kind: "message", T: Int64Array, oneof: "value" }, + { no: 25, name: "uint32_array", kind: "message", T: Uint32Array, oneof: "value" }, + { no: 26, name: "uint64_array", kind: "message", T: Uint64Array, oneof: "value" }, + { no: 27, name: "float_array", kind: "message", T: FloatArray, oneof: "value" }, + { no: 28, name: "double_array", kind: "message", T: DoubleArray, oneof: "value" }, +]); +/** + * @generated from message kuksa.val.v1.Metadata + */ +class Metadata extends protobuf_1.Message { + constructor(data) { + super(); + /** + * Data type + * The VSS data type of the entry (i.e. the value, min, max etc). + * + * NOTE: protobuf doesn't have int8, int16, uint8 or uint16 which means + * that these values must be serialized as int32 and uint32 respectively. + * + * [field: FIELD_METADATA_DATA_TYPE] + * + * @generated from field: kuksa.val.v1.DataType data_type = 11; + */ + this.dataType = DataType.UNSPECIFIED; + /** + * Entry type + * + * [field: FIELD_METADATA_ENTRY_TYPE] + * + * @generated from field: kuksa.val.v1.EntryType entry_type = 12; + */ + this.entryType = EntryType.UNSPECIFIED; + /** + * Entry type specific metadata + * + * @generated from oneof kuksa.val.v1.Metadata.entry_specific + */ + this.entrySpecific = { case: undefined }; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new Metadata().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new Metadata().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new Metadata().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(Metadata, a, b); + } +} +exports.Metadata = Metadata; +Metadata.runtime = protobuf_1.proto3; +Metadata.typeName = "kuksa.val.v1.Metadata"; +Metadata.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 11, name: "data_type", kind: "enum", T: protobuf_1.proto3.getEnumType(DataType) }, + { no: 12, name: "entry_type", kind: "enum", T: protobuf_1.proto3.getEnumType(EntryType) }, + { no: 13, name: "description", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, + { no: 14, name: "comment", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, + { no: 15, name: "deprecation", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, + { no: 16, name: "unit", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, + { no: 17, name: "value_restriction", kind: "message", T: ValueRestriction }, + { no: 20, name: "actuator", kind: "message", T: Actuator, oneof: "entry_specific" }, + { no: 30, name: "sensor", kind: "message", T: Sensor, oneof: "entry_specific" }, + { no: 40, name: "attribute", kind: "message", T: Attribute, oneof: "entry_specific" }, +]); +/** + * ///////////////////// + * Actuator specific fields + * + * Nothing for now + * + * @generated from message kuksa.val.v1.Actuator + */ +class Actuator extends protobuf_1.Message { + constructor(data) { + super(); + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new Actuator().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new Actuator().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new Actuator().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(Actuator, a, b); + } +} +exports.Actuator = Actuator; +Actuator.runtime = protobuf_1.proto3; +Actuator.typeName = "kuksa.val.v1.Actuator"; +Actuator.fields = protobuf_1.proto3.util.newFieldList(() => []); +/** + * ////////////////////// + * Sensor specific + * + * Nothing for now + * + * @generated from message kuksa.val.v1.Sensor + */ +class Sensor extends protobuf_1.Message { + constructor(data) { + super(); + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new Sensor().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new Sensor().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new Sensor().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(Sensor, a, b); + } +} +exports.Sensor = Sensor; +Sensor.runtime = protobuf_1.proto3; +Sensor.typeName = "kuksa.val.v1.Sensor"; +Sensor.fields = protobuf_1.proto3.util.newFieldList(() => []); +/** + * ////////////////////// + * Attribute specific + * + * Nothing for now. + * + * @generated from message kuksa.val.v1.Attribute + */ +class Attribute extends protobuf_1.Message { + constructor(data) { + super(); + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new Attribute().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new Attribute().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new Attribute().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(Attribute, a, b); + } +} +exports.Attribute = Attribute; +Attribute.runtime = protobuf_1.proto3; +Attribute.typeName = "kuksa.val.v1.Attribute"; +Attribute.fields = protobuf_1.proto3.util.newFieldList(() => []); +/** + * Value restriction + * + * One ValueRestriction{type} for each type, since + * they don't make sense unless the types match + * + * + * @generated from message kuksa.val.v1.ValueRestriction + */ +class ValueRestriction extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from oneof kuksa.val.v1.ValueRestriction.type + */ + this.type = { case: undefined }; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new ValueRestriction().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new ValueRestriction().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new ValueRestriction().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(ValueRestriction, a, b); + } +} +exports.ValueRestriction = ValueRestriction; +ValueRestriction.runtime = protobuf_1.proto3; +ValueRestriction.typeName = "kuksa.val.v1.ValueRestriction"; +ValueRestriction.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 21, name: "string", kind: "message", T: ValueRestrictionString, oneof: "type" }, + { no: 22, name: "signed", kind: "message", T: ValueRestrictionInt, oneof: "type" }, + { no: 23, name: "unsigned", kind: "message", T: ValueRestrictionUint, oneof: "type" }, + { no: 24, name: "floating_point", kind: "message", T: ValueRestrictionFloat, oneof: "type" }, +]); +/** + * @generated from message kuksa.val.v1.ValueRestrictionInt + */ +class ValueRestrictionInt extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated sint64 allowed_values = 3; + */ + this.allowedValues = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new ValueRestrictionInt().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new ValueRestrictionInt().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new ValueRestrictionInt().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(ValueRestrictionInt, a, b); + } +} +exports.ValueRestrictionInt = ValueRestrictionInt; +ValueRestrictionInt.runtime = protobuf_1.proto3; +ValueRestrictionInt.typeName = "kuksa.val.v1.ValueRestrictionInt"; +ValueRestrictionInt.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "min", kind: "scalar", T: 18 /* ScalarType.SINT64 */, opt: true }, + { no: 2, name: "max", kind: "scalar", T: 18 /* ScalarType.SINT64 */, opt: true }, + { no: 3, name: "allowed_values", kind: "scalar", T: 18 /* ScalarType.SINT64 */, repeated: true }, +]); +/** + * @generated from message kuksa.val.v1.ValueRestrictionUint + */ +class ValueRestrictionUint extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated uint64 allowed_values = 3; + */ + this.allowedValues = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new ValueRestrictionUint().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new ValueRestrictionUint().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new ValueRestrictionUint().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(ValueRestrictionUint, a, b); + } +} +exports.ValueRestrictionUint = ValueRestrictionUint; +ValueRestrictionUint.runtime = protobuf_1.proto3; +ValueRestrictionUint.typeName = "kuksa.val.v1.ValueRestrictionUint"; +ValueRestrictionUint.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "min", kind: "scalar", T: 4 /* ScalarType.UINT64 */, opt: true }, + { no: 2, name: "max", kind: "scalar", T: 4 /* ScalarType.UINT64 */, opt: true }, + { no: 3, name: "allowed_values", kind: "scalar", T: 4 /* ScalarType.UINT64 */, repeated: true }, +]); +/** + * @generated from message kuksa.val.v1.ValueRestrictionFloat + */ +class ValueRestrictionFloat extends protobuf_1.Message { + constructor(data) { + super(); + /** + * allowed for doubles/floats not recommended + * + * @generated from field: repeated double allowed_values = 3; + */ + this.allowedValues = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new ValueRestrictionFloat().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new ValueRestrictionFloat().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new ValueRestrictionFloat().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(ValueRestrictionFloat, a, b); + } +} +exports.ValueRestrictionFloat = ValueRestrictionFloat; +ValueRestrictionFloat.runtime = protobuf_1.proto3; +ValueRestrictionFloat.typeName = "kuksa.val.v1.ValueRestrictionFloat"; +ValueRestrictionFloat.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "min", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true }, + { no: 2, name: "max", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true }, + { no: 3, name: "allowed_values", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, repeated: true }, +]); +/** + * min, max doesn't make much sense for a string + * + * @generated from message kuksa.val.v1.ValueRestrictionString + */ +class ValueRestrictionString extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated string allowed_values = 3; + */ + this.allowedValues = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new ValueRestrictionString().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new ValueRestrictionString().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new ValueRestrictionString().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(ValueRestrictionString, a, b); + } +} +exports.ValueRestrictionString = ValueRestrictionString; +ValueRestrictionString.runtime = protobuf_1.proto3; +ValueRestrictionString.typeName = "kuksa.val.v1.ValueRestrictionString"; +ValueRestrictionString.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 3, name: "allowed_values", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, +]); +/** + * Error response shall be an HTTP-like code. + * Should follow https://www.w3.org/TR/viss2-transport/#status-codes. + * + * @generated from message kuksa.val.v1.Error + */ +class Error extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: uint32 code = 1; + */ + this.code = 0; + /** + * @generated from field: string reason = 2; + */ + this.reason = ""; + /** + * @generated from field: string message = 3; + */ + this.message = ""; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new Error().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new Error().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new Error().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(Error, a, b); + } +} +exports.Error = Error; +Error.runtime = protobuf_1.proto3; +Error.typeName = "kuksa.val.v1.Error"; +Error.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "code", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 2, name: "reason", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "message", kind: "scalar", T: 9 /* ScalarType.STRING */ }, +]); +/** + * Used in get/set requests to report errors for specific entries + * + * @generated from message kuksa.val.v1.DataEntryError + */ +class DataEntryError extends protobuf_1.Message { + constructor(data) { + super(); + /** + * vss path + * + * @generated from field: string path = 1; + */ + this.path = ""; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new DataEntryError().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new DataEntryError().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new DataEntryError().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(DataEntryError, a, b); + } +} +exports.DataEntryError = DataEntryError; +DataEntryError.runtime = protobuf_1.proto3; +DataEntryError.typeName = "kuksa.val.v1.DataEntryError"; +DataEntryError.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "error", kind: "message", T: Error }, +]); +/** + * @generated from message kuksa.val.v1.StringArray + */ +class StringArray extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated string values = 1; + */ + this.values = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new StringArray().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new StringArray().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new StringArray().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(StringArray, a, b); + } +} +exports.StringArray = StringArray; +StringArray.runtime = protobuf_1.proto3; +StringArray.typeName = "kuksa.val.v1.StringArray"; +StringArray.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "values", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, +]); +/** + * @generated from message kuksa.val.v1.BoolArray + */ +class BoolArray extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated bool values = 1; + */ + this.values = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new BoolArray().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new BoolArray().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new BoolArray().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(BoolArray, a, b); + } +} +exports.BoolArray = BoolArray; +BoolArray.runtime = protobuf_1.proto3; +BoolArray.typeName = "kuksa.val.v1.BoolArray"; +BoolArray.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "values", kind: "scalar", T: 8 /* ScalarType.BOOL */, repeated: true }, +]); +/** + * @generated from message kuksa.val.v1.Int32Array + */ +class Int32Array extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated sint32 values = 1; + */ + this.values = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new Int32Array().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new Int32Array().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new Int32Array().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(Int32Array, a, b); + } +} +exports.Int32Array = Int32Array; +Int32Array.runtime = protobuf_1.proto3; +Int32Array.typeName = "kuksa.val.v1.Int32Array"; +Int32Array.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "values", kind: "scalar", T: 17 /* ScalarType.SINT32 */, repeated: true }, +]); +/** + * @generated from message kuksa.val.v1.Int64Array + */ +class Int64Array extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated sint64 values = 1; + */ + this.values = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new Int64Array().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new Int64Array().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new Int64Array().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(Int64Array, a, b); + } +} +exports.Int64Array = Int64Array; +Int64Array.runtime = protobuf_1.proto3; +Int64Array.typeName = "kuksa.val.v1.Int64Array"; +Int64Array.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "values", kind: "scalar", T: 18 /* ScalarType.SINT64 */, repeated: true }, +]); +/** + * @generated from message kuksa.val.v1.Uint32Array + */ +class Uint32Array extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated uint32 values = 1; + */ + this.values = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new Uint32Array().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new Uint32Array().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new Uint32Array().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(Uint32Array, a, b); + } +} +exports.Uint32Array = Uint32Array; +Uint32Array.runtime = protobuf_1.proto3; +Uint32Array.typeName = "kuksa.val.v1.Uint32Array"; +Uint32Array.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "values", kind: "scalar", T: 13 /* ScalarType.UINT32 */, repeated: true }, +]); +/** + * @generated from message kuksa.val.v1.Uint64Array + */ +class Uint64Array extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated uint64 values = 1; + */ + this.values = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new Uint64Array().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new Uint64Array().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new Uint64Array().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(Uint64Array, a, b); + } +} +exports.Uint64Array = Uint64Array; +Uint64Array.runtime = protobuf_1.proto3; +Uint64Array.typeName = "kuksa.val.v1.Uint64Array"; +Uint64Array.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "values", kind: "scalar", T: 4 /* ScalarType.UINT64 */, repeated: true }, +]); +/** + * @generated from message kuksa.val.v1.FloatArray + */ +class FloatArray extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated float values = 1; + */ + this.values = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new FloatArray().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new FloatArray().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new FloatArray().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(FloatArray, a, b); + } +} +exports.FloatArray = FloatArray; +FloatArray.runtime = protobuf_1.proto3; +FloatArray.typeName = "kuksa.val.v1.FloatArray"; +FloatArray.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "values", kind: "scalar", T: 2 /* ScalarType.FLOAT */, repeated: true }, +]); +/** + * @generated from message kuksa.val.v1.DoubleArray + */ +class DoubleArray extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated double values = 1; + */ + this.values = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new DoubleArray().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new DoubleArray().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new DoubleArray().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(DoubleArray, a, b); + } +} +exports.DoubleArray = DoubleArray; +DoubleArray.runtime = protobuf_1.proto3; +DoubleArray.typeName = "kuksa.val.v1.DoubleArray"; +DoubleArray.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "values", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, repeated: true }, +]); diff --git a/typescript/examples/aicar/gen/kuksa/val/v1/types_pb.ts b/typescript/examples/aicar/gen/kuksa/val/v1/types_pb.ts new file mode 100644 index 00000000..d3a30e3b --- /dev/null +++ b/typescript/examples/aicar/gen/kuksa/val/v1/types_pb.ts @@ -0,0 +1,1572 @@ +//******************************************************************************* +// Copyright (c) 2022 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// This program and the accompanying materials are made available under the +// terms of the Apache License 2.0 which is available at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// SPDX-License-Identifier: Apache-2.0 +//****************************************************************************** + +// @generated by protoc-gen-es v1.10.0 with parameter "target=ts" +// @generated from file kuksa/val/v1/types.proto (package kuksa.val.v1, syntax proto3) +/* eslint-disable */ +// @ts-nocheck + +// I added V1 as in databroker. Is this good practice? + +import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; +import { Message, proto3, Timestamp } from "@bufbuild/protobuf"; + +/** + * VSS Data type of a signal + * + * Protobuf doesn't support int8, int16, uint8 or uint16. + * These are mapped to int32 and uint32 respectively. + * + * + * @generated from enum kuksa.val.v1.DataType + */ +export enum DataType { + /** + * @generated from enum value: DATA_TYPE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * @generated from enum value: DATA_TYPE_STRING = 1; + */ + STRING = 1, + + /** + * @generated from enum value: DATA_TYPE_BOOLEAN = 2; + */ + BOOLEAN = 2, + + /** + * @generated from enum value: DATA_TYPE_INT8 = 3; + */ + INT8 = 3, + + /** + * @generated from enum value: DATA_TYPE_INT16 = 4; + */ + INT16 = 4, + + /** + * @generated from enum value: DATA_TYPE_INT32 = 5; + */ + INT32 = 5, + + /** + * @generated from enum value: DATA_TYPE_INT64 = 6; + */ + INT64 = 6, + + /** + * @generated from enum value: DATA_TYPE_UINT8 = 7; + */ + UINT8 = 7, + + /** + * @generated from enum value: DATA_TYPE_UINT16 = 8; + */ + UINT16 = 8, + + /** + * @generated from enum value: DATA_TYPE_UINT32 = 9; + */ + UINT32 = 9, + + /** + * @generated from enum value: DATA_TYPE_UINT64 = 10; + */ + UINT64 = 10, + + /** + * @generated from enum value: DATA_TYPE_FLOAT = 11; + */ + FLOAT = 11, + + /** + * @generated from enum value: DATA_TYPE_DOUBLE = 12; + */ + DOUBLE = 12, + + /** + * @generated from enum value: DATA_TYPE_TIMESTAMP = 13; + */ + TIMESTAMP = 13, + + /** + * @generated from enum value: DATA_TYPE_STRING_ARRAY = 20; + */ + STRING_ARRAY = 20, + + /** + * @generated from enum value: DATA_TYPE_BOOLEAN_ARRAY = 21; + */ + BOOLEAN_ARRAY = 21, + + /** + * @generated from enum value: DATA_TYPE_INT8_ARRAY = 22; + */ + INT8_ARRAY = 22, + + /** + * @generated from enum value: DATA_TYPE_INT16_ARRAY = 23; + */ + INT16_ARRAY = 23, + + /** + * @generated from enum value: DATA_TYPE_INT32_ARRAY = 24; + */ + INT32_ARRAY = 24, + + /** + * @generated from enum value: DATA_TYPE_INT64_ARRAY = 25; + */ + INT64_ARRAY = 25, + + /** + * @generated from enum value: DATA_TYPE_UINT8_ARRAY = 26; + */ + UINT8_ARRAY = 26, + + /** + * @generated from enum value: DATA_TYPE_UINT16_ARRAY = 27; + */ + UINT16_ARRAY = 27, + + /** + * @generated from enum value: DATA_TYPE_UINT32_ARRAY = 28; + */ + UINT32_ARRAY = 28, + + /** + * @generated from enum value: DATA_TYPE_UINT64_ARRAY = 29; + */ + UINT64_ARRAY = 29, + + /** + * @generated from enum value: DATA_TYPE_FLOAT_ARRAY = 30; + */ + FLOAT_ARRAY = 30, + + /** + * @generated from enum value: DATA_TYPE_DOUBLE_ARRAY = 31; + */ + DOUBLE_ARRAY = 31, + + /** + * @generated from enum value: DATA_TYPE_TIMESTAMP_ARRAY = 32; + */ + TIMESTAMP_ARRAY = 32, +} +// Retrieve enum metadata with: proto3.getEnumType(DataType) +proto3.util.setEnumType(DataType, "kuksa.val.v1.DataType", [ + { no: 0, name: "DATA_TYPE_UNSPECIFIED" }, + { no: 1, name: "DATA_TYPE_STRING" }, + { no: 2, name: "DATA_TYPE_BOOLEAN" }, + { no: 3, name: "DATA_TYPE_INT8" }, + { no: 4, name: "DATA_TYPE_INT16" }, + { no: 5, name: "DATA_TYPE_INT32" }, + { no: 6, name: "DATA_TYPE_INT64" }, + { no: 7, name: "DATA_TYPE_UINT8" }, + { no: 8, name: "DATA_TYPE_UINT16" }, + { no: 9, name: "DATA_TYPE_UINT32" }, + { no: 10, name: "DATA_TYPE_UINT64" }, + { no: 11, name: "DATA_TYPE_FLOAT" }, + { no: 12, name: "DATA_TYPE_DOUBLE" }, + { no: 13, name: "DATA_TYPE_TIMESTAMP" }, + { no: 20, name: "DATA_TYPE_STRING_ARRAY" }, + { no: 21, name: "DATA_TYPE_BOOLEAN_ARRAY" }, + { no: 22, name: "DATA_TYPE_INT8_ARRAY" }, + { no: 23, name: "DATA_TYPE_INT16_ARRAY" }, + { no: 24, name: "DATA_TYPE_INT32_ARRAY" }, + { no: 25, name: "DATA_TYPE_INT64_ARRAY" }, + { no: 26, name: "DATA_TYPE_UINT8_ARRAY" }, + { no: 27, name: "DATA_TYPE_UINT16_ARRAY" }, + { no: 28, name: "DATA_TYPE_UINT32_ARRAY" }, + { no: 29, name: "DATA_TYPE_UINT64_ARRAY" }, + { no: 30, name: "DATA_TYPE_FLOAT_ARRAY" }, + { no: 31, name: "DATA_TYPE_DOUBLE_ARRAY" }, + { no: 32, name: "DATA_TYPE_TIMESTAMP_ARRAY" }, +]); + +/** + * Entry type + * + * @generated from enum kuksa.val.v1.EntryType + */ +export enum EntryType { + /** + * @generated from enum value: ENTRY_TYPE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * @generated from enum value: ENTRY_TYPE_ATTRIBUTE = 1; + */ + ATTRIBUTE = 1, + + /** + * @generated from enum value: ENTRY_TYPE_SENSOR = 2; + */ + SENSOR = 2, + + /** + * @generated from enum value: ENTRY_TYPE_ACTUATOR = 3; + */ + ACTUATOR = 3, +} +// Retrieve enum metadata with: proto3.getEnumType(EntryType) +proto3.util.setEnumType(EntryType, "kuksa.val.v1.EntryType", [ + { no: 0, name: "ENTRY_TYPE_UNSPECIFIED" }, + { no: 1, name: "ENTRY_TYPE_ATTRIBUTE" }, + { no: 2, name: "ENTRY_TYPE_SENSOR" }, + { no: 3, name: "ENTRY_TYPE_ACTUATOR" }, +]); + +/** + * A `View` specifies a set of fields which should + * be populated in a `DataEntry` (in a response message) + * + * @generated from enum kuksa.val.v1.View + */ +export enum View { + /** + * Unspecified. Equivalent to VIEW_CURRENT_VALUE unless `fields` are explicitly set. + * + * @generated from enum value: VIEW_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * Populate DataEntry with value. + * + * @generated from enum value: VIEW_CURRENT_VALUE = 1; + */ + CURRENT_VALUE = 1, + + /** + * Populate DataEntry with actuator target. + * + * @generated from enum value: VIEW_TARGET_VALUE = 2; + */ + TARGET_VALUE = 2, + + /** + * Populate DataEntry with metadata. + * + * @generated from enum value: VIEW_METADATA = 3; + */ + METADATA = 3, + + /** + * Populate DataEntry only with requested fields. + * + * @generated from enum value: VIEW_FIELDS = 10; + */ + FIELDS = 10, + + /** + * Populate DataEntry with everything. + * + * @generated from enum value: VIEW_ALL = 20; + */ + ALL = 20, +} +// Retrieve enum metadata with: proto3.getEnumType(View) +proto3.util.setEnumType(View, "kuksa.val.v1.View", [ + { no: 0, name: "VIEW_UNSPECIFIED" }, + { no: 1, name: "VIEW_CURRENT_VALUE" }, + { no: 2, name: "VIEW_TARGET_VALUE" }, + { no: 3, name: "VIEW_METADATA" }, + { no: 10, name: "VIEW_FIELDS" }, + { no: 20, name: "VIEW_ALL" }, +]); + +/** + * A `Field` corresponds to a specific field of a `DataEntry`. + * + * It can be used to: + * * populate only specific fields of a `DataEntry` response. + * * specify which fields of a `DataEntry` should be set as + * part of a `Set` request. + * * subscribe to only specific fields of a data entry. + * * convey which fields of an updated `DataEntry` have changed. + * + * @generated from enum kuksa.val.v1.Field + */ +export enum Field { + /** + * "*" i.e. everything + * + * @generated from enum value: FIELD_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * path + * + * @generated from enum value: FIELD_PATH = 1; + */ + PATH = 1, + + /** + * value + * + * @generated from enum value: FIELD_VALUE = 2; + */ + VALUE = 2, + + /** + * actuator_target + * + * @generated from enum value: FIELD_ACTUATOR_TARGET = 3; + */ + ACTUATOR_TARGET = 3, + + /** + * metadata.* + * + * @generated from enum value: FIELD_METADATA = 10; + */ + METADATA = 10, + + /** + * metadata.data_type + * + * @generated from enum value: FIELD_METADATA_DATA_TYPE = 11; + */ + METADATA_DATA_TYPE = 11, + + /** + * metadata.description + * + * @generated from enum value: FIELD_METADATA_DESCRIPTION = 12; + */ + METADATA_DESCRIPTION = 12, + + /** + * metadata.entry_type + * + * @generated from enum value: FIELD_METADATA_ENTRY_TYPE = 13; + */ + METADATA_ENTRY_TYPE = 13, + + /** + * metadata.comment + * + * @generated from enum value: FIELD_METADATA_COMMENT = 14; + */ + METADATA_COMMENT = 14, + + /** + * metadata.deprecation + * + * @generated from enum value: FIELD_METADATA_DEPRECATION = 15; + */ + METADATA_DEPRECATION = 15, + + /** + * metadata.unit + * + * @generated from enum value: FIELD_METADATA_UNIT = 16; + */ + METADATA_UNIT = 16, + + /** + * metadata.value_restriction.* + * + * @generated from enum value: FIELD_METADATA_VALUE_RESTRICTION = 17; + */ + METADATA_VALUE_RESTRICTION = 17, + + /** + * metadata.actuator.* + * + * @generated from enum value: FIELD_METADATA_ACTUATOR = 20; + */ + METADATA_ACTUATOR = 20, + + /** + * metadata.sensor.* + * + * @generated from enum value: FIELD_METADATA_SENSOR = 30; + */ + METADATA_SENSOR = 30, + + /** + * metadata.attribute.* + * + * @generated from enum value: FIELD_METADATA_ATTRIBUTE = 40; + */ + METADATA_ATTRIBUTE = 40, +} +// Retrieve enum metadata with: proto3.getEnumType(Field) +proto3.util.setEnumType(Field, "kuksa.val.v1.Field", [ + { no: 0, name: "FIELD_UNSPECIFIED" }, + { no: 1, name: "FIELD_PATH" }, + { no: 2, name: "FIELD_VALUE" }, + { no: 3, name: "FIELD_ACTUATOR_TARGET" }, + { no: 10, name: "FIELD_METADATA" }, + { no: 11, name: "FIELD_METADATA_DATA_TYPE" }, + { no: 12, name: "FIELD_METADATA_DESCRIPTION" }, + { no: 13, name: "FIELD_METADATA_ENTRY_TYPE" }, + { no: 14, name: "FIELD_METADATA_COMMENT" }, + { no: 15, name: "FIELD_METADATA_DEPRECATION" }, + { no: 16, name: "FIELD_METADATA_UNIT" }, + { no: 17, name: "FIELD_METADATA_VALUE_RESTRICTION" }, + { no: 20, name: "FIELD_METADATA_ACTUATOR" }, + { no: 30, name: "FIELD_METADATA_SENSOR" }, + { no: 40, name: "FIELD_METADATA_ATTRIBUTE" }, +]); + +/** + * Describes a VSS entry + * When requesting an entry, the amount of information returned can + * be controlled by specifying either a `View` or a set of `Field`s. + * + * @generated from message kuksa.val.v1.DataEntry + */ +export class DataEntry extends Message { + /** + * Defines the full VSS path of the entry. + * + * [field: FIELD_PATH] + * + * @generated from field: string path = 1; + */ + path = ""; + + /** + * The value (datapoint) + * + * [field: FIELD_VALUE] + * + * @generated from field: kuksa.val.v1.Datapoint value = 2; + */ + value?: Datapoint; + + /** + * Actuator target (only used if the entry is an actuator) + * + * [field: FIELD_ACTUATOR_TARGET] + * + * @generated from field: kuksa.val.v1.Datapoint actuator_target = 3; + */ + actuatorTarget?: Datapoint; + + /** + * Metadata for this entry + * + * [field: FIELD_METADATA] + * + * @generated from field: kuksa.val.v1.Metadata metadata = 10; + */ + metadata?: Metadata; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.DataEntry"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "value", kind: "message", T: Datapoint }, + { no: 3, name: "actuator_target", kind: "message", T: Datapoint }, + { no: 10, name: "metadata", kind: "message", T: Metadata }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): DataEntry { + return new DataEntry().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): DataEntry { + return new DataEntry().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): DataEntry { + return new DataEntry().fromJsonString(jsonString, options); + } + + static equals(a: DataEntry | PlainMessage | undefined, b: DataEntry | PlainMessage | undefined): boolean { + return proto3.util.equals(DataEntry, a, b); + } +} + +/** + * @generated from message kuksa.val.v1.Datapoint + */ +export class Datapoint extends Message { + /** + * @generated from field: google.protobuf.Timestamp timestamp = 1; + */ + timestamp?: Timestamp; + + /** + * @generated from oneof kuksa.val.v1.Datapoint.value + */ + value: { + /** + * @generated from field: string string = 11; + */ + value: string; + case: "string"; + } | { + /** + * @generated from field: bool bool = 12; + */ + value: boolean; + case: "bool"; + } | { + /** + * @generated from field: sint32 int32 = 13; + */ + value: number; + case: "int32"; + } | { + /** + * @generated from field: sint64 int64 = 14; + */ + value: bigint; + case: "int64"; + } | { + /** + * @generated from field: uint32 uint32 = 15; + */ + value: number; + case: "uint32"; + } | { + /** + * @generated from field: uint64 uint64 = 16; + */ + value: bigint; + case: "uint64"; + } | { + /** + * @generated from field: float float = 17; + */ + value: number; + case: "float"; + } | { + /** + * @generated from field: double double = 18; + */ + value: number; + case: "double"; + } | { + /** + * @generated from field: kuksa.val.v1.StringArray string_array = 21; + */ + value: StringArray; + case: "stringArray"; + } | { + /** + * @generated from field: kuksa.val.v1.BoolArray bool_array = 22; + */ + value: BoolArray; + case: "boolArray"; + } | { + /** + * @generated from field: kuksa.val.v1.Int32Array int32_array = 23; + */ + value: Int32Array; + case: "int32Array"; + } | { + /** + * @generated from field: kuksa.val.v1.Int64Array int64_array = 24; + */ + value: Int64Array; + case: "int64Array"; + } | { + /** + * @generated from field: kuksa.val.v1.Uint32Array uint32_array = 25; + */ + value: Uint32Array; + case: "uint32Array"; + } | { + /** + * @generated from field: kuksa.val.v1.Uint64Array uint64_array = 26; + */ + value: Uint64Array; + case: "uint64Array"; + } | { + /** + * @generated from field: kuksa.val.v1.FloatArray float_array = 27; + */ + value: FloatArray; + case: "floatArray"; + } | { + /** + * @generated from field: kuksa.val.v1.DoubleArray double_array = 28; + */ + value: DoubleArray; + case: "doubleArray"; + } | { case: undefined; value?: undefined } = { case: undefined }; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.Datapoint"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "timestamp", kind: "message", T: Timestamp }, + { no: 11, name: "string", kind: "scalar", T: 9 /* ScalarType.STRING */, oneof: "value" }, + { no: 12, name: "bool", kind: "scalar", T: 8 /* ScalarType.BOOL */, oneof: "value" }, + { no: 13, name: "int32", kind: "scalar", T: 17 /* ScalarType.SINT32 */, oneof: "value" }, + { no: 14, name: "int64", kind: "scalar", T: 18 /* ScalarType.SINT64 */, oneof: "value" }, + { no: 15, name: "uint32", kind: "scalar", T: 13 /* ScalarType.UINT32 */, oneof: "value" }, + { no: 16, name: "uint64", kind: "scalar", T: 4 /* ScalarType.UINT64 */, oneof: "value" }, + { no: 17, name: "float", kind: "scalar", T: 2 /* ScalarType.FLOAT */, oneof: "value" }, + { no: 18, name: "double", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, oneof: "value" }, + { no: 21, name: "string_array", kind: "message", T: StringArray, oneof: "value" }, + { no: 22, name: "bool_array", kind: "message", T: BoolArray, oneof: "value" }, + { no: 23, name: "int32_array", kind: "message", T: Int32Array, oneof: "value" }, + { no: 24, name: "int64_array", kind: "message", T: Int64Array, oneof: "value" }, + { no: 25, name: "uint32_array", kind: "message", T: Uint32Array, oneof: "value" }, + { no: 26, name: "uint64_array", kind: "message", T: Uint64Array, oneof: "value" }, + { no: 27, name: "float_array", kind: "message", T: FloatArray, oneof: "value" }, + { no: 28, name: "double_array", kind: "message", T: DoubleArray, oneof: "value" }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): Datapoint { + return new Datapoint().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): Datapoint { + return new Datapoint().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): Datapoint { + return new Datapoint().fromJsonString(jsonString, options); + } + + static equals(a: Datapoint | PlainMessage | undefined, b: Datapoint | PlainMessage | undefined): boolean { + return proto3.util.equals(Datapoint, a, b); + } +} + +/** + * @generated from message kuksa.val.v1.Metadata + */ +export class Metadata extends Message { + /** + * Data type + * The VSS data type of the entry (i.e. the value, min, max etc). + * + * NOTE: protobuf doesn't have int8, int16, uint8 or uint16 which means + * that these values must be serialized as int32 and uint32 respectively. + * + * [field: FIELD_METADATA_DATA_TYPE] + * + * @generated from field: kuksa.val.v1.DataType data_type = 11; + */ + dataType = DataType.UNSPECIFIED; + + /** + * Entry type + * + * [field: FIELD_METADATA_ENTRY_TYPE] + * + * @generated from field: kuksa.val.v1.EntryType entry_type = 12; + */ + entryType = EntryType.UNSPECIFIED; + + /** + * Description + * Describes the meaning and content of the entry. + * + * [field: FIELD_METADATA_DESCRIPTION] + * + * @generated from field: optional string description = 13; + */ + description?: string; + + /** + * Comment [optional] + * A comment can be used to provide additional informal information + * on a entry. + * + * [field: FIELD_METADATA_COMMENT] + * + * @generated from field: optional string comment = 14; + */ + comment?: string; + + /** + * Deprecation [optional] + * Whether this entry is deprecated. Can contain recommendations of what + * to use instead. + * + * [field: FIELD_METADATA_DEPRECATION] + * + * @generated from field: optional string deprecation = 15; + */ + deprecation?: string; + + /** + * Unit [optional] + * The unit of measurement + * + * [field: FIELD_METADATA_UNIT] + * + * @generated from field: optional string unit = 16; + */ + unit?: string; + + /** + * Value restrictions [optional] + * Restrict which values are allowed. + * Only restrictions matching the DataType {datatype} above are valid. + * + * [field: FIELD_METADATA_VALUE_RESTRICTION] + * + * @generated from field: kuksa.val.v1.ValueRestriction value_restriction = 17; + */ + valueRestriction?: ValueRestriction; + + /** + * Entry type specific metadata + * + * @generated from oneof kuksa.val.v1.Metadata.entry_specific + */ + entrySpecific: { + /** + * [field: FIELD_METADATA_ACTUATOR] + * + * @generated from field: kuksa.val.v1.Actuator actuator = 20; + */ + value: Actuator; + case: "actuator"; + } | { + /** + * [field: FIELD_METADATA_SENSOR] + * + * @generated from field: kuksa.val.v1.Sensor sensor = 30; + */ + value: Sensor; + case: "sensor"; + } | { + /** + * [field: FIELD_METADATA_ATTRIBUTE] + * + * @generated from field: kuksa.val.v1.Attribute attribute = 40; + */ + value: Attribute; + case: "attribute"; + } | { case: undefined; value?: undefined } = { case: undefined }; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.Metadata"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 11, name: "data_type", kind: "enum", T: proto3.getEnumType(DataType) }, + { no: 12, name: "entry_type", kind: "enum", T: proto3.getEnumType(EntryType) }, + { no: 13, name: "description", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, + { no: 14, name: "comment", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, + { no: 15, name: "deprecation", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, + { no: 16, name: "unit", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, + { no: 17, name: "value_restriction", kind: "message", T: ValueRestriction }, + { no: 20, name: "actuator", kind: "message", T: Actuator, oneof: "entry_specific" }, + { no: 30, name: "sensor", kind: "message", T: Sensor, oneof: "entry_specific" }, + { no: 40, name: "attribute", kind: "message", T: Attribute, oneof: "entry_specific" }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): Metadata { + return new Metadata().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): Metadata { + return new Metadata().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): Metadata { + return new Metadata().fromJsonString(jsonString, options); + } + + static equals(a: Metadata | PlainMessage | undefined, b: Metadata | PlainMessage | undefined): boolean { + return proto3.util.equals(Metadata, a, b); + } +} + +/** + * ///////////////////// + * Actuator specific fields + * + * Nothing for now + * + * @generated from message kuksa.val.v1.Actuator + */ +export class Actuator extends Message { + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.Actuator"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): Actuator { + return new Actuator().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): Actuator { + return new Actuator().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): Actuator { + return new Actuator().fromJsonString(jsonString, options); + } + + static equals(a: Actuator | PlainMessage | undefined, b: Actuator | PlainMessage | undefined): boolean { + return proto3.util.equals(Actuator, a, b); + } +} + +/** + * ////////////////////// + * Sensor specific + * + * Nothing for now + * + * @generated from message kuksa.val.v1.Sensor + */ +export class Sensor extends Message { + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.Sensor"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): Sensor { + return new Sensor().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): Sensor { + return new Sensor().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): Sensor { + return new Sensor().fromJsonString(jsonString, options); + } + + static equals(a: Sensor | PlainMessage | undefined, b: Sensor | PlainMessage | undefined): boolean { + return proto3.util.equals(Sensor, a, b); + } +} + +/** + * ////////////////////// + * Attribute specific + * + * Nothing for now. + * + * @generated from message kuksa.val.v1.Attribute + */ +export class Attribute extends Message { + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.Attribute"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): Attribute { + return new Attribute().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): Attribute { + return new Attribute().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): Attribute { + return new Attribute().fromJsonString(jsonString, options); + } + + static equals(a: Attribute | PlainMessage | undefined, b: Attribute | PlainMessage | undefined): boolean { + return proto3.util.equals(Attribute, a, b); + } +} + +/** + * Value restriction + * + * One ValueRestriction{type} for each type, since + * they don't make sense unless the types match + * + * + * @generated from message kuksa.val.v1.ValueRestriction + */ +export class ValueRestriction extends Message { + /** + * @generated from oneof kuksa.val.v1.ValueRestriction.type + */ + type: { + /** + * @generated from field: kuksa.val.v1.ValueRestrictionString string = 21; + */ + value: ValueRestrictionString; + case: "string"; + } | { + /** + * For signed VSS integers + * + * @generated from field: kuksa.val.v1.ValueRestrictionInt signed = 22; + */ + value: ValueRestrictionInt; + case: "signed"; + } | { + /** + * For unsigned VSS integers + * + * @generated from field: kuksa.val.v1.ValueRestrictionUint unsigned = 23; + */ + value: ValueRestrictionUint; + case: "unsigned"; + } | { + /** + * For floating point VSS values (float and double) + * + * @generated from field: kuksa.val.v1.ValueRestrictionFloat floating_point = 24; + */ + value: ValueRestrictionFloat; + case: "floatingPoint"; + } | { case: undefined; value?: undefined } = { case: undefined }; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.ValueRestriction"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 21, name: "string", kind: "message", T: ValueRestrictionString, oneof: "type" }, + { no: 22, name: "signed", kind: "message", T: ValueRestrictionInt, oneof: "type" }, + { no: 23, name: "unsigned", kind: "message", T: ValueRestrictionUint, oneof: "type" }, + { no: 24, name: "floating_point", kind: "message", T: ValueRestrictionFloat, oneof: "type" }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ValueRestriction { + return new ValueRestriction().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ValueRestriction { + return new ValueRestriction().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ValueRestriction { + return new ValueRestriction().fromJsonString(jsonString, options); + } + + static equals(a: ValueRestriction | PlainMessage | undefined, b: ValueRestriction | PlainMessage | undefined): boolean { + return proto3.util.equals(ValueRestriction, a, b); + } +} + +/** + * @generated from message kuksa.val.v1.ValueRestrictionInt + */ +export class ValueRestrictionInt extends Message { + /** + * @generated from field: optional sint64 min = 1; + */ + min?: bigint; + + /** + * @generated from field: optional sint64 max = 2; + */ + max?: bigint; + + /** + * @generated from field: repeated sint64 allowed_values = 3; + */ + allowedValues: bigint[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.ValueRestrictionInt"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "min", kind: "scalar", T: 18 /* ScalarType.SINT64 */, opt: true }, + { no: 2, name: "max", kind: "scalar", T: 18 /* ScalarType.SINT64 */, opt: true }, + { no: 3, name: "allowed_values", kind: "scalar", T: 18 /* ScalarType.SINT64 */, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ValueRestrictionInt { + return new ValueRestrictionInt().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ValueRestrictionInt { + return new ValueRestrictionInt().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ValueRestrictionInt { + return new ValueRestrictionInt().fromJsonString(jsonString, options); + } + + static equals(a: ValueRestrictionInt | PlainMessage | undefined, b: ValueRestrictionInt | PlainMessage | undefined): boolean { + return proto3.util.equals(ValueRestrictionInt, a, b); + } +} + +/** + * @generated from message kuksa.val.v1.ValueRestrictionUint + */ +export class ValueRestrictionUint extends Message { + /** + * @generated from field: optional uint64 min = 1; + */ + min?: bigint; + + /** + * @generated from field: optional uint64 max = 2; + */ + max?: bigint; + + /** + * @generated from field: repeated uint64 allowed_values = 3; + */ + allowedValues: bigint[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.ValueRestrictionUint"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "min", kind: "scalar", T: 4 /* ScalarType.UINT64 */, opt: true }, + { no: 2, name: "max", kind: "scalar", T: 4 /* ScalarType.UINT64 */, opt: true }, + { no: 3, name: "allowed_values", kind: "scalar", T: 4 /* ScalarType.UINT64 */, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ValueRestrictionUint { + return new ValueRestrictionUint().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ValueRestrictionUint { + return new ValueRestrictionUint().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ValueRestrictionUint { + return new ValueRestrictionUint().fromJsonString(jsonString, options); + } + + static equals(a: ValueRestrictionUint | PlainMessage | undefined, b: ValueRestrictionUint | PlainMessage | undefined): boolean { + return proto3.util.equals(ValueRestrictionUint, a, b); + } +} + +/** + * @generated from message kuksa.val.v1.ValueRestrictionFloat + */ +export class ValueRestrictionFloat extends Message { + /** + * @generated from field: optional double min = 1; + */ + min?: number; + + /** + * @generated from field: optional double max = 2; + */ + max?: number; + + /** + * allowed for doubles/floats not recommended + * + * @generated from field: repeated double allowed_values = 3; + */ + allowedValues: number[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.ValueRestrictionFloat"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "min", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true }, + { no: 2, name: "max", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, opt: true }, + { no: 3, name: "allowed_values", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ValueRestrictionFloat { + return new ValueRestrictionFloat().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ValueRestrictionFloat { + return new ValueRestrictionFloat().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ValueRestrictionFloat { + return new ValueRestrictionFloat().fromJsonString(jsonString, options); + } + + static equals(a: ValueRestrictionFloat | PlainMessage | undefined, b: ValueRestrictionFloat | PlainMessage | undefined): boolean { + return proto3.util.equals(ValueRestrictionFloat, a, b); + } +} + +/** + * min, max doesn't make much sense for a string + * + * @generated from message kuksa.val.v1.ValueRestrictionString + */ +export class ValueRestrictionString extends Message { + /** + * @generated from field: repeated string allowed_values = 3; + */ + allowedValues: string[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.ValueRestrictionString"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 3, name: "allowed_values", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ValueRestrictionString { + return new ValueRestrictionString().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ValueRestrictionString { + return new ValueRestrictionString().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ValueRestrictionString { + return new ValueRestrictionString().fromJsonString(jsonString, options); + } + + static equals(a: ValueRestrictionString | PlainMessage | undefined, b: ValueRestrictionString | PlainMessage | undefined): boolean { + return proto3.util.equals(ValueRestrictionString, a, b); + } +} + +/** + * Error response shall be an HTTP-like code. + * Should follow https://www.w3.org/TR/viss2-transport/#status-codes. + * + * @generated from message kuksa.val.v1.Error + */ +export class Error extends Message { + /** + * @generated from field: uint32 code = 1; + */ + code = 0; + + /** + * @generated from field: string reason = 2; + */ + reason = ""; + + /** + * @generated from field: string message = 3; + */ + message = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.Error"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "code", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 2, name: "reason", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "message", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): Error { + return new Error().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): Error { + return new Error().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): Error { + return new Error().fromJsonString(jsonString, options); + } + + static equals(a: Error | PlainMessage | undefined, b: Error | PlainMessage | undefined): boolean { + return proto3.util.equals(Error, a, b); + } +} + +/** + * Used in get/set requests to report errors for specific entries + * + * @generated from message kuksa.val.v1.DataEntryError + */ +export class DataEntryError extends Message { + /** + * vss path + * + * @generated from field: string path = 1; + */ + path = ""; + + /** + * @generated from field: kuksa.val.v1.Error error = 2; + */ + error?: Error; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.DataEntryError"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "error", kind: "message", T: Error }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): DataEntryError { + return new DataEntryError().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): DataEntryError { + return new DataEntryError().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): DataEntryError { + return new DataEntryError().fromJsonString(jsonString, options); + } + + static equals(a: DataEntryError | PlainMessage | undefined, b: DataEntryError | PlainMessage | undefined): boolean { + return proto3.util.equals(DataEntryError, a, b); + } +} + +/** + * @generated from message kuksa.val.v1.StringArray + */ +export class StringArray extends Message { + /** + * @generated from field: repeated string values = 1; + */ + values: string[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.StringArray"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "values", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): StringArray { + return new StringArray().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): StringArray { + return new StringArray().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): StringArray { + return new StringArray().fromJsonString(jsonString, options); + } + + static equals(a: StringArray | PlainMessage | undefined, b: StringArray | PlainMessage | undefined): boolean { + return proto3.util.equals(StringArray, a, b); + } +} + +/** + * @generated from message kuksa.val.v1.BoolArray + */ +export class BoolArray extends Message { + /** + * @generated from field: repeated bool values = 1; + */ + values: boolean[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.BoolArray"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "values", kind: "scalar", T: 8 /* ScalarType.BOOL */, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): BoolArray { + return new BoolArray().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): BoolArray { + return new BoolArray().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): BoolArray { + return new BoolArray().fromJsonString(jsonString, options); + } + + static equals(a: BoolArray | PlainMessage | undefined, b: BoolArray | PlainMessage | undefined): boolean { + return proto3.util.equals(BoolArray, a, b); + } +} + +/** + * @generated from message kuksa.val.v1.Int32Array + */ +export class Int32Array extends Message { + /** + * @generated from field: repeated sint32 values = 1; + */ + values: number[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.Int32Array"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "values", kind: "scalar", T: 17 /* ScalarType.SINT32 */, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): Int32Array { + return new Int32Array().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): Int32Array { + return new Int32Array().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): Int32Array { + return new Int32Array().fromJsonString(jsonString, options); + } + + static equals(a: Int32Array | PlainMessage | undefined, b: Int32Array | PlainMessage | undefined): boolean { + return proto3.util.equals(Int32Array, a, b); + } +} + +/** + * @generated from message kuksa.val.v1.Int64Array + */ +export class Int64Array extends Message { + /** + * @generated from field: repeated sint64 values = 1; + */ + values: bigint[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.Int64Array"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "values", kind: "scalar", T: 18 /* ScalarType.SINT64 */, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): Int64Array { + return new Int64Array().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): Int64Array { + return new Int64Array().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): Int64Array { + return new Int64Array().fromJsonString(jsonString, options); + } + + static equals(a: Int64Array | PlainMessage | undefined, b: Int64Array | PlainMessage | undefined): boolean { + return proto3.util.equals(Int64Array, a, b); + } +} + +/** + * @generated from message kuksa.val.v1.Uint32Array + */ +export class Uint32Array extends Message { + /** + * @generated from field: repeated uint32 values = 1; + */ + values: number[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.Uint32Array"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "values", kind: "scalar", T: 13 /* ScalarType.UINT32 */, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): Uint32Array { + return new Uint32Array().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): Uint32Array { + return new Uint32Array().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): Uint32Array { + return new Uint32Array().fromJsonString(jsonString, options); + } + + static equals(a: Uint32Array | PlainMessage | undefined, b: Uint32Array | PlainMessage | undefined): boolean { + return proto3.util.equals(Uint32Array, a, b); + } +} + +/** + * @generated from message kuksa.val.v1.Uint64Array + */ +export class Uint64Array extends Message { + /** + * @generated from field: repeated uint64 values = 1; + */ + values: bigint[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.Uint64Array"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "values", kind: "scalar", T: 4 /* ScalarType.UINT64 */, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): Uint64Array { + return new Uint64Array().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): Uint64Array { + return new Uint64Array().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): Uint64Array { + return new Uint64Array().fromJsonString(jsonString, options); + } + + static equals(a: Uint64Array | PlainMessage | undefined, b: Uint64Array | PlainMessage | undefined): boolean { + return proto3.util.equals(Uint64Array, a, b); + } +} + +/** + * @generated from message kuksa.val.v1.FloatArray + */ +export class FloatArray extends Message { + /** + * @generated from field: repeated float values = 1; + */ + values: number[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.FloatArray"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "values", kind: "scalar", T: 2 /* ScalarType.FLOAT */, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): FloatArray { + return new FloatArray().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): FloatArray { + return new FloatArray().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): FloatArray { + return new FloatArray().fromJsonString(jsonString, options); + } + + static equals(a: FloatArray | PlainMessage | undefined, b: FloatArray | PlainMessage | undefined): boolean { + return proto3.util.equals(FloatArray, a, b); + } +} + +/** + * @generated from message kuksa.val.v1.DoubleArray + */ +export class DoubleArray extends Message { + /** + * @generated from field: repeated double values = 1; + */ + values: number[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.DoubleArray"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "values", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): DoubleArray { + return new DoubleArray().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): DoubleArray { + return new DoubleArray().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): DoubleArray { + return new DoubleArray().fromJsonString(jsonString, options); + } + + static equals(a: DoubleArray | PlainMessage | undefined, b: DoubleArray | PlainMessage | undefined): boolean { + return proto3.util.equals(DoubleArray, a, b); + } +} + diff --git a/typescript/examples/aicar/gen/kuksa/val/v1/val_connect.js b/typescript/examples/aicar/gen/kuksa/val/v1/val_connect.js new file mode 100644 index 00000000..2ecdffa1 --- /dev/null +++ b/typescript/examples/aicar/gen/kuksa/val/v1/val_connect.js @@ -0,0 +1,88 @@ +"use strict"; +//******************************************************************************* +// Copyright (c) 2022 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// This program and the accompanying materials are made available under the +// terms of the Apache License 2.0 which is available at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// SPDX-License-Identifier: Apache-2.0 +//****************************************************************************** +Object.defineProperty(exports, "__esModule", { value: true }); +exports.VAL = void 0; +// @generated by protoc-gen-connect-es v1.4.0 with parameter "target=ts" +// @generated from file kuksa/val/v1/val.proto (package kuksa.val.v1, syntax proto3) +/* eslint-disable */ +// @ts-nocheck +const val_pb_js_1 = require("./val_pb.js"); +const protobuf_1 = require("@bufbuild/protobuf"); +/** + * @generated from service kuksa.val.v1.VAL + */ +exports.VAL = { + typeName: "kuksa.val.v1.VAL", + methods: { + /** + * Get entries + * + * @generated from rpc kuksa.val.v1.VAL.Get + */ + get: { + name: "Get", + I: val_pb_js_1.GetRequest, + O: val_pb_js_1.GetResponse, + kind: protobuf_1.MethodKind.Unary, + }, + /** + * Set entries + * + * @generated from rpc kuksa.val.v1.VAL.Set + */ + set: { + name: "Set", + I: val_pb_js_1.SetRequest, + O: val_pb_js_1.SetResponse, + kind: protobuf_1.MethodKind.Unary, + }, + /** + * @generated from rpc kuksa.val.v1.VAL.StreamedUpdate + */ + streamedUpdate: { + name: "StreamedUpdate", + I: val_pb_js_1.StreamedUpdateRequest, + O: val_pb_js_1.StreamedUpdateResponse, + kind: protobuf_1.MethodKind.BiDiStreaming, + }, + /** + * Subscribe to a set of entries + * + * Returns a stream of notifications. + * + * InvalidArgument is returned if the request is malformed. + * + * @generated from rpc kuksa.val.v1.VAL.Subscribe + */ + subscribe: { + name: "Subscribe", + I: val_pb_js_1.SubscribeRequest, + O: val_pb_js_1.SubscribeResponse, + kind: protobuf_1.MethodKind.ServerStreaming, + }, + /** + * Shall return information that allows the client to determine + * what server/server implementation/version it is talking to + * eg. kuksa-databroker 0.5.1 + * + * @generated from rpc kuksa.val.v1.VAL.GetServerInfo + */ + getServerInfo: { + name: "GetServerInfo", + I: val_pb_js_1.GetServerInfoRequest, + O: val_pb_js_1.GetServerInfoResponse, + kind: protobuf_1.MethodKind.Unary, + }, + } +}; diff --git a/typescript/examples/aicar/gen/kuksa/val/v1/val_connect.ts b/typescript/examples/aicar/gen/kuksa/val/v1/val_connect.ts new file mode 100644 index 00000000..ed09e035 --- /dev/null +++ b/typescript/examples/aicar/gen/kuksa/val/v1/val_connect.ts @@ -0,0 +1,89 @@ +//******************************************************************************* +// Copyright (c) 2022 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// This program and the accompanying materials are made available under the +// terms of the Apache License 2.0 which is available at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// SPDX-License-Identifier: Apache-2.0 +//****************************************************************************** + +// @generated by protoc-gen-connect-es v1.4.0 with parameter "target=ts" +// @generated from file kuksa/val/v1/val.proto (package kuksa.val.v1, syntax proto3) +/* eslint-disable */ +// @ts-nocheck + +import { GetRequest, GetResponse, GetServerInfoRequest, GetServerInfoResponse, SetRequest, SetResponse, StreamedUpdateRequest, StreamedUpdateResponse, SubscribeRequest, SubscribeResponse } from "./val_pb.js"; +import { MethodKind } from "@bufbuild/protobuf"; + +/** + * @generated from service kuksa.val.v1.VAL + */ +export const VAL = { + typeName: "kuksa.val.v1.VAL", + methods: { + /** + * Get entries + * + * @generated from rpc kuksa.val.v1.VAL.Get + */ + get: { + name: "Get", + I: GetRequest, + O: GetResponse, + kind: MethodKind.Unary, + }, + /** + * Set entries + * + * @generated from rpc kuksa.val.v1.VAL.Set + */ + set: { + name: "Set", + I: SetRequest, + O: SetResponse, + kind: MethodKind.Unary, + }, + /** + * @generated from rpc kuksa.val.v1.VAL.StreamedUpdate + */ + streamedUpdate: { + name: "StreamedUpdate", + I: StreamedUpdateRequest, + O: StreamedUpdateResponse, + kind: MethodKind.BiDiStreaming, + }, + /** + * Subscribe to a set of entries + * + * Returns a stream of notifications. + * + * InvalidArgument is returned if the request is malformed. + * + * @generated from rpc kuksa.val.v1.VAL.Subscribe + */ + subscribe: { + name: "Subscribe", + I: SubscribeRequest, + O: SubscribeResponse, + kind: MethodKind.ServerStreaming, + }, + /** + * Shall return information that allows the client to determine + * what server/server implementation/version it is talking to + * eg. kuksa-databroker 0.5.1 + * + * @generated from rpc kuksa.val.v1.VAL.GetServerInfo + */ + getServerInfo: { + name: "GetServerInfo", + I: GetServerInfoRequest, + O: GetServerInfoResponse, + kind: MethodKind.Unary, + }, + } +} as const; + diff --git a/typescript/examples/aicar/gen/kuksa/val/v1/val_pb.js b/typescript/examples/aicar/gen/kuksa/val/v1/val_pb.js new file mode 100644 index 00000000..66c9a1b2 --- /dev/null +++ b/typescript/examples/aicar/gen/kuksa/val/v1/val_pb.js @@ -0,0 +1,470 @@ +"use strict"; +//******************************************************************************* +// Copyright (c) 2022 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// This program and the accompanying materials are made available under the +// terms of the Apache License 2.0 which is available at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// SPDX-License-Identifier: Apache-2.0 +//****************************************************************************** +Object.defineProperty(exports, "__esModule", { value: true }); +exports.GetServerInfoResponse = exports.GetServerInfoRequest = exports.SubscribeResponse = exports.SubscribeRequest = exports.SubscribeEntry = exports.StreamedUpdateResponse = exports.StreamedUpdateRequest = exports.SetResponse = exports.SetRequest = exports.EntryUpdate = exports.GetResponse = exports.GetRequest = exports.EntryRequest = void 0; +const protobuf_1 = require("@bufbuild/protobuf"); +const types_pb_js_1 = require("./types_pb.js"); +/** + * Define which data we want + * + * @generated from message kuksa.val.v1.EntryRequest + */ +class EntryRequest extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: string path = 1; + */ + this.path = ""; + /** + * @generated from field: kuksa.val.v1.View view = 2; + */ + this.view = types_pb_js_1.View.UNSPECIFIED; + /** + * @generated from field: repeated kuksa.val.v1.Field fields = 3; + */ + this.fields = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new EntryRequest().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new EntryRequest().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new EntryRequest().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(EntryRequest, a, b); + } +} +exports.EntryRequest = EntryRequest; +EntryRequest.runtime = protobuf_1.proto3; +EntryRequest.typeName = "kuksa.val.v1.EntryRequest"; +EntryRequest.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "view", kind: "enum", T: protobuf_1.proto3.getEnumType(types_pb_js_1.View) }, + { no: 3, name: "fields", kind: "enum", T: protobuf_1.proto3.getEnumType(types_pb_js_1.Field), repeated: true }, +]); +/** + * Request a set of entries. + * + * @generated from message kuksa.val.v1.GetRequest + */ +class GetRequest extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated kuksa.val.v1.EntryRequest entries = 1; + */ + this.entries = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new GetRequest().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new GetRequest().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new GetRequest().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(GetRequest, a, b); + } +} +exports.GetRequest = GetRequest; +GetRequest.runtime = protobuf_1.proto3; +GetRequest.typeName = "kuksa.val.v1.GetRequest"; +GetRequest.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "entries", kind: "message", T: EntryRequest, repeated: true }, +]); +/** + * Global errors are specified in `error`. + * Errors for individual entries are specified in `errors`. + * + * @generated from message kuksa.val.v1.GetResponse + */ +class GetResponse extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated kuksa.val.v1.DataEntry entries = 1; + */ + this.entries = []; + /** + * @generated from field: repeated kuksa.val.v1.DataEntryError errors = 2; + */ + this.errors = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new GetResponse().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new GetResponse().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new GetResponse().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(GetResponse, a, b); + } +} +exports.GetResponse = GetResponse; +GetResponse.runtime = protobuf_1.proto3; +GetResponse.typeName = "kuksa.val.v1.GetResponse"; +GetResponse.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "entries", kind: "message", T: types_pb_js_1.DataEntry, repeated: true }, + { no: 2, name: "errors", kind: "message", T: types_pb_js_1.DataEntryError, repeated: true }, + { no: 3, name: "error", kind: "message", T: types_pb_js_1.Error }, +]); +/** + * Define the data we want to set + * + * @generated from message kuksa.val.v1.EntryUpdate + */ +class EntryUpdate extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated kuksa.val.v1.Field fields = 2; + */ + this.fields = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new EntryUpdate().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new EntryUpdate().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new EntryUpdate().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(EntryUpdate, a, b); + } +} +exports.EntryUpdate = EntryUpdate; +EntryUpdate.runtime = protobuf_1.proto3; +EntryUpdate.typeName = "kuksa.val.v1.EntryUpdate"; +EntryUpdate.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "entry", kind: "message", T: types_pb_js_1.DataEntry }, + { no: 2, name: "fields", kind: "enum", T: protobuf_1.proto3.getEnumType(types_pb_js_1.Field), repeated: true }, +]); +/** + * A list of entries to be updated + * + * @generated from message kuksa.val.v1.SetRequest + */ +class SetRequest extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated kuksa.val.v1.EntryUpdate updates = 1; + */ + this.updates = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new SetRequest().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new SetRequest().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new SetRequest().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(SetRequest, a, b); + } +} +exports.SetRequest = SetRequest; +SetRequest.runtime = protobuf_1.proto3; +SetRequest.typeName = "kuksa.val.v1.SetRequest"; +SetRequest.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "updates", kind: "message", T: EntryUpdate, repeated: true }, +]); +/** + * Global errors are specified in `error`. + * Errors for individual entries are specified in `errors`. + * + * @generated from message kuksa.val.v1.SetResponse + */ +class SetResponse extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated kuksa.val.v1.DataEntryError errors = 2; + */ + this.errors = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new SetResponse().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new SetResponse().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new SetResponse().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(SetResponse, a, b); + } +} +exports.SetResponse = SetResponse; +SetResponse.runtime = protobuf_1.proto3; +SetResponse.typeName = "kuksa.val.v1.SetResponse"; +SetResponse.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "error", kind: "message", T: types_pb_js_1.Error }, + { no: 2, name: "errors", kind: "message", T: types_pb_js_1.DataEntryError, repeated: true }, +]); +/** + * @generated from message kuksa.val.v1.StreamedUpdateRequest + */ +class StreamedUpdateRequest extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated kuksa.val.v1.EntryUpdate updates = 1; + */ + this.updates = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new StreamedUpdateRequest().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new StreamedUpdateRequest().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new StreamedUpdateRequest().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(StreamedUpdateRequest, a, b); + } +} +exports.StreamedUpdateRequest = StreamedUpdateRequest; +StreamedUpdateRequest.runtime = protobuf_1.proto3; +StreamedUpdateRequest.typeName = "kuksa.val.v1.StreamedUpdateRequest"; +StreamedUpdateRequest.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "updates", kind: "message", T: EntryUpdate, repeated: true }, +]); +/** + * @generated from message kuksa.val.v1.StreamedUpdateResponse + */ +class StreamedUpdateResponse extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated kuksa.val.v1.DataEntryError errors = 2; + */ + this.errors = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new StreamedUpdateResponse().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new StreamedUpdateResponse().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new StreamedUpdateResponse().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(StreamedUpdateResponse, a, b); + } +} +exports.StreamedUpdateResponse = StreamedUpdateResponse; +StreamedUpdateResponse.runtime = protobuf_1.proto3; +StreamedUpdateResponse.typeName = "kuksa.val.v1.StreamedUpdateResponse"; +StreamedUpdateResponse.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "error", kind: "message", T: types_pb_js_1.Error }, + { no: 2, name: "errors", kind: "message", T: types_pb_js_1.DataEntryError, repeated: true }, +]); +/** + * Define what to subscribe to + * + * @generated from message kuksa.val.v1.SubscribeEntry + */ +class SubscribeEntry extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: string path = 1; + */ + this.path = ""; + /** + * @generated from field: kuksa.val.v1.View view = 2; + */ + this.view = types_pb_js_1.View.UNSPECIFIED; + /** + * @generated from field: repeated kuksa.val.v1.Field fields = 3; + */ + this.fields = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new SubscribeEntry().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new SubscribeEntry().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new SubscribeEntry().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(SubscribeEntry, a, b); + } +} +exports.SubscribeEntry = SubscribeEntry; +SubscribeEntry.runtime = protobuf_1.proto3; +SubscribeEntry.typeName = "kuksa.val.v1.SubscribeEntry"; +SubscribeEntry.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "view", kind: "enum", T: protobuf_1.proto3.getEnumType(types_pb_js_1.View) }, + { no: 3, name: "fields", kind: "enum", T: protobuf_1.proto3.getEnumType(types_pb_js_1.Field), repeated: true }, +]); +/** + * Subscribe to changes in datapoints. + * + * @generated from message kuksa.val.v1.SubscribeRequest + */ +class SubscribeRequest extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated kuksa.val.v1.SubscribeEntry entries = 1; + */ + this.entries = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new SubscribeRequest().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new SubscribeRequest().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new SubscribeRequest().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(SubscribeRequest, a, b); + } +} +exports.SubscribeRequest = SubscribeRequest; +SubscribeRequest.runtime = protobuf_1.proto3; +SubscribeRequest.typeName = "kuksa.val.v1.SubscribeRequest"; +SubscribeRequest.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "entries", kind: "message", T: SubscribeEntry, repeated: true }, +]); +/** + * A subscription response + * + * @generated from message kuksa.val.v1.SubscribeResponse + */ +class SubscribeResponse extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated kuksa.val.v1.EntryUpdate updates = 1; + */ + this.updates = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new SubscribeResponse().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new SubscribeResponse().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new SubscribeResponse().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(SubscribeResponse, a, b); + } +} +exports.SubscribeResponse = SubscribeResponse; +SubscribeResponse.runtime = protobuf_1.proto3; +SubscribeResponse.typeName = "kuksa.val.v1.SubscribeResponse"; +SubscribeResponse.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "updates", kind: "message", T: EntryUpdate, repeated: true }, +]); +/** + * Nothing yet + * + * @generated from message kuksa.val.v1.GetServerInfoRequest + */ +class GetServerInfoRequest extends protobuf_1.Message { + constructor(data) { + super(); + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new GetServerInfoRequest().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new GetServerInfoRequest().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new GetServerInfoRequest().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(GetServerInfoRequest, a, b); + } +} +exports.GetServerInfoRequest = GetServerInfoRequest; +GetServerInfoRequest.runtime = protobuf_1.proto3; +GetServerInfoRequest.typeName = "kuksa.val.v1.GetServerInfoRequest"; +GetServerInfoRequest.fields = protobuf_1.proto3.util.newFieldList(() => []); +/** + * @generated from message kuksa.val.v1.GetServerInfoResponse + */ +class GetServerInfoResponse extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: string name = 1; + */ + this.name = ""; + /** + * @generated from field: string version = 2; + */ + this.version = ""; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new GetServerInfoResponse().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new GetServerInfoResponse().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new GetServerInfoResponse().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(GetServerInfoResponse, a, b); + } +} +exports.GetServerInfoResponse = GetServerInfoResponse; +GetServerInfoResponse.runtime = protobuf_1.proto3; +GetServerInfoResponse.typeName = "kuksa.val.v1.GetServerInfoResponse"; +GetServerInfoResponse.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "version", kind: "scalar", T: 9 /* ScalarType.STRING */ }, +]); diff --git a/typescript/examples/aicar/gen/kuksa/val/v1/val_pb.ts b/typescript/examples/aicar/gen/kuksa/val/v1/val_pb.ts new file mode 100644 index 00000000..2b656bbe --- /dev/null +++ b/typescript/examples/aicar/gen/kuksa/val/v1/val_pb.ts @@ -0,0 +1,579 @@ +//******************************************************************************* +// Copyright (c) 2022 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// This program and the accompanying materials are made available under the +// terms of the Apache License 2.0 which is available at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// SPDX-License-Identifier: Apache-2.0 +//****************************************************************************** + +// @generated by protoc-gen-es v1.10.0 with parameter "target=ts" +// @generated from file kuksa/val/v1/val.proto (package kuksa.val.v1, syntax proto3) +/* eslint-disable */ +// @ts-nocheck + +import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; +import { Message, proto3 } from "@bufbuild/protobuf"; +import { DataEntry, DataEntryError, Error, Field, View } from "./types_pb.js"; + +/** + * Define which data we want + * + * @generated from message kuksa.val.v1.EntryRequest + */ +export class EntryRequest extends Message { + /** + * @generated from field: string path = 1; + */ + path = ""; + + /** + * @generated from field: kuksa.val.v1.View view = 2; + */ + view = View.UNSPECIFIED; + + /** + * @generated from field: repeated kuksa.val.v1.Field fields = 3; + */ + fields: Field[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.EntryRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "view", kind: "enum", T: proto3.getEnumType(View) }, + { no: 3, name: "fields", kind: "enum", T: proto3.getEnumType(Field), repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): EntryRequest { + return new EntryRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): EntryRequest { + return new EntryRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): EntryRequest { + return new EntryRequest().fromJsonString(jsonString, options); + } + + static equals(a: EntryRequest | PlainMessage | undefined, b: EntryRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(EntryRequest, a, b); + } +} + +/** + * Request a set of entries. + * + * @generated from message kuksa.val.v1.GetRequest + */ +export class GetRequest extends Message { + /** + * @generated from field: repeated kuksa.val.v1.EntryRequest entries = 1; + */ + entries: EntryRequest[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.GetRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "entries", kind: "message", T: EntryRequest, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): GetRequest { + return new GetRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): GetRequest { + return new GetRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): GetRequest { + return new GetRequest().fromJsonString(jsonString, options); + } + + static equals(a: GetRequest | PlainMessage | undefined, b: GetRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(GetRequest, a, b); + } +} + +/** + * Global errors are specified in `error`. + * Errors for individual entries are specified in `errors`. + * + * @generated from message kuksa.val.v1.GetResponse + */ +export class GetResponse extends Message { + /** + * @generated from field: repeated kuksa.val.v1.DataEntry entries = 1; + */ + entries: DataEntry[] = []; + + /** + * @generated from field: repeated kuksa.val.v1.DataEntryError errors = 2; + */ + errors: DataEntryError[] = []; + + /** + * @generated from field: kuksa.val.v1.Error error = 3; + */ + error?: Error; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.GetResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "entries", kind: "message", T: DataEntry, repeated: true }, + { no: 2, name: "errors", kind: "message", T: DataEntryError, repeated: true }, + { no: 3, name: "error", kind: "message", T: Error }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): GetResponse { + return new GetResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): GetResponse { + return new GetResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): GetResponse { + return new GetResponse().fromJsonString(jsonString, options); + } + + static equals(a: GetResponse | PlainMessage | undefined, b: GetResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(GetResponse, a, b); + } +} + +/** + * Define the data we want to set + * + * @generated from message kuksa.val.v1.EntryUpdate + */ +export class EntryUpdate extends Message { + /** + * @generated from field: kuksa.val.v1.DataEntry entry = 1; + */ + entry?: DataEntry; + + /** + * @generated from field: repeated kuksa.val.v1.Field fields = 2; + */ + fields: Field[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.EntryUpdate"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "entry", kind: "message", T: DataEntry }, + { no: 2, name: "fields", kind: "enum", T: proto3.getEnumType(Field), repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): EntryUpdate { + return new EntryUpdate().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): EntryUpdate { + return new EntryUpdate().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): EntryUpdate { + return new EntryUpdate().fromJsonString(jsonString, options); + } + + static equals(a: EntryUpdate | PlainMessage | undefined, b: EntryUpdate | PlainMessage | undefined): boolean { + return proto3.util.equals(EntryUpdate, a, b); + } +} + +/** + * A list of entries to be updated + * + * @generated from message kuksa.val.v1.SetRequest + */ +export class SetRequest extends Message { + /** + * @generated from field: repeated kuksa.val.v1.EntryUpdate updates = 1; + */ + updates: EntryUpdate[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.SetRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "updates", kind: "message", T: EntryUpdate, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): SetRequest { + return new SetRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): SetRequest { + return new SetRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): SetRequest { + return new SetRequest().fromJsonString(jsonString, options); + } + + static equals(a: SetRequest | PlainMessage | undefined, b: SetRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(SetRequest, a, b); + } +} + +/** + * Global errors are specified in `error`. + * Errors for individual entries are specified in `errors`. + * + * @generated from message kuksa.val.v1.SetResponse + */ +export class SetResponse extends Message { + /** + * @generated from field: kuksa.val.v1.Error error = 1; + */ + error?: Error; + + /** + * @generated from field: repeated kuksa.val.v1.DataEntryError errors = 2; + */ + errors: DataEntryError[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.SetResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "error", kind: "message", T: Error }, + { no: 2, name: "errors", kind: "message", T: DataEntryError, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): SetResponse { + return new SetResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): SetResponse { + return new SetResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): SetResponse { + return new SetResponse().fromJsonString(jsonString, options); + } + + static equals(a: SetResponse | PlainMessage | undefined, b: SetResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(SetResponse, a, b); + } +} + +/** + * @generated from message kuksa.val.v1.StreamedUpdateRequest + */ +export class StreamedUpdateRequest extends Message { + /** + * @generated from field: repeated kuksa.val.v1.EntryUpdate updates = 1; + */ + updates: EntryUpdate[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.StreamedUpdateRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "updates", kind: "message", T: EntryUpdate, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): StreamedUpdateRequest { + return new StreamedUpdateRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): StreamedUpdateRequest { + return new StreamedUpdateRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): StreamedUpdateRequest { + return new StreamedUpdateRequest().fromJsonString(jsonString, options); + } + + static equals(a: StreamedUpdateRequest | PlainMessage | undefined, b: StreamedUpdateRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(StreamedUpdateRequest, a, b); + } +} + +/** + * @generated from message kuksa.val.v1.StreamedUpdateResponse + */ +export class StreamedUpdateResponse extends Message { + /** + * @generated from field: kuksa.val.v1.Error error = 1; + */ + error?: Error; + + /** + * @generated from field: repeated kuksa.val.v1.DataEntryError errors = 2; + */ + errors: DataEntryError[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.StreamedUpdateResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "error", kind: "message", T: Error }, + { no: 2, name: "errors", kind: "message", T: DataEntryError, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): StreamedUpdateResponse { + return new StreamedUpdateResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): StreamedUpdateResponse { + return new StreamedUpdateResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): StreamedUpdateResponse { + return new StreamedUpdateResponse().fromJsonString(jsonString, options); + } + + static equals(a: StreamedUpdateResponse | PlainMessage | undefined, b: StreamedUpdateResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(StreamedUpdateResponse, a, b); + } +} + +/** + * Define what to subscribe to + * + * @generated from message kuksa.val.v1.SubscribeEntry + */ +export class SubscribeEntry extends Message { + /** + * @generated from field: string path = 1; + */ + path = ""; + + /** + * @generated from field: kuksa.val.v1.View view = 2; + */ + view = View.UNSPECIFIED; + + /** + * @generated from field: repeated kuksa.val.v1.Field fields = 3; + */ + fields: Field[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.SubscribeEntry"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "view", kind: "enum", T: proto3.getEnumType(View) }, + { no: 3, name: "fields", kind: "enum", T: proto3.getEnumType(Field), repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): SubscribeEntry { + return new SubscribeEntry().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): SubscribeEntry { + return new SubscribeEntry().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): SubscribeEntry { + return new SubscribeEntry().fromJsonString(jsonString, options); + } + + static equals(a: SubscribeEntry | PlainMessage | undefined, b: SubscribeEntry | PlainMessage | undefined): boolean { + return proto3.util.equals(SubscribeEntry, a, b); + } +} + +/** + * Subscribe to changes in datapoints. + * + * @generated from message kuksa.val.v1.SubscribeRequest + */ +export class SubscribeRequest extends Message { + /** + * @generated from field: repeated kuksa.val.v1.SubscribeEntry entries = 1; + */ + entries: SubscribeEntry[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.SubscribeRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "entries", kind: "message", T: SubscribeEntry, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): SubscribeRequest { + return new SubscribeRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): SubscribeRequest { + return new SubscribeRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): SubscribeRequest { + return new SubscribeRequest().fromJsonString(jsonString, options); + } + + static equals(a: SubscribeRequest | PlainMessage | undefined, b: SubscribeRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(SubscribeRequest, a, b); + } +} + +/** + * A subscription response + * + * @generated from message kuksa.val.v1.SubscribeResponse + */ +export class SubscribeResponse extends Message { + /** + * @generated from field: repeated kuksa.val.v1.EntryUpdate updates = 1; + */ + updates: EntryUpdate[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.SubscribeResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "updates", kind: "message", T: EntryUpdate, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): SubscribeResponse { + return new SubscribeResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): SubscribeResponse { + return new SubscribeResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): SubscribeResponse { + return new SubscribeResponse().fromJsonString(jsonString, options); + } + + static equals(a: SubscribeResponse | PlainMessage | undefined, b: SubscribeResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(SubscribeResponse, a, b); + } +} + +/** + * Nothing yet + * + * @generated from message kuksa.val.v1.GetServerInfoRequest + */ +export class GetServerInfoRequest extends Message { + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.GetServerInfoRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): GetServerInfoRequest { + return new GetServerInfoRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): GetServerInfoRequest { + return new GetServerInfoRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): GetServerInfoRequest { + return new GetServerInfoRequest().fromJsonString(jsonString, options); + } + + static equals(a: GetServerInfoRequest | PlainMessage | undefined, b: GetServerInfoRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(GetServerInfoRequest, a, b); + } +} + +/** + * @generated from message kuksa.val.v1.GetServerInfoResponse + */ +export class GetServerInfoResponse extends Message { + /** + * @generated from field: string name = 1; + */ + name = ""; + + /** + * @generated from field: string version = 2; + */ + version = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "kuksa.val.v1.GetServerInfoResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "version", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): GetServerInfoResponse { + return new GetServerInfoResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): GetServerInfoResponse { + return new GetServerInfoResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): GetServerInfoResponse { + return new GetServerInfoResponse().fromJsonString(jsonString, options); + } + + static equals(a: GetServerInfoResponse | PlainMessage | undefined, b: GetServerInfoResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(GetServerInfoResponse, a, b); + } +} + From ea17fc4042a0cafcab19b573234f512eca9744ec Mon Sep 17 00:00:00 2001 From: brclarkdev <31588123+brclarkdev@users.noreply.github.com> Date: Wed, 28 Aug 2024 13:36:20 +0000 Subject: [PATCH 02/14] added main code files --- typescript/examples/{aicar/gen/kuksa/val/v1 => aicar-zod}/main.ts | 0 typescript/examples/aicar/main.ts | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename typescript/examples/{aicar/gen/kuksa/val/v1 => aicar-zod}/main.ts (100%) create mode 100644 typescript/examples/aicar/main.ts diff --git a/typescript/examples/aicar/gen/kuksa/val/v1/main.ts b/typescript/examples/aicar-zod/main.ts similarity index 100% rename from typescript/examples/aicar/gen/kuksa/val/v1/main.ts rename to typescript/examples/aicar-zod/main.ts diff --git a/typescript/examples/aicar/main.ts b/typescript/examples/aicar/main.ts new file mode 100644 index 00000000..e69de29b From 923b151bacc07a7efcae4364f04f8ab14f9f20d3 Mon Sep 17 00:00:00 2001 From: brclarkdev <31588123+brclarkdev@users.noreply.github.com> Date: Wed, 28 Aug 2024 13:39:27 +0000 Subject: [PATCH 03/14] uploaded utils and schema files. --- .../aicar-zod/SDVCarActionZodSchema.ts | 199 ++++++++++++++++++ typescript/examples/aicar-zod/input.txt | 49 +++++ typescript/examples/aicar-zod/utils.ts | 136 ++++++++++++ typescript/examples/aicar/input.txt | 49 +++++ typescript/examples/aicar/utils.ts | 136 ++++++++++++ 5 files changed, 569 insertions(+) create mode 100644 typescript/examples/aicar-zod/SDVCarActionZodSchema.ts create mode 100644 typescript/examples/aicar-zod/input.txt create mode 100644 typescript/examples/aicar-zod/utils.ts create mode 100644 typescript/examples/aicar/input.txt create mode 100644 typescript/examples/aicar/utils.ts diff --git a/typescript/examples/aicar-zod/SDVCarActionZodSchema.ts b/typescript/examples/aicar-zod/SDVCarActionZodSchema.ts new file mode 100644 index 00000000..8aca1d99 --- /dev/null +++ b/typescript/examples/aicar-zod/SDVCarActionZodSchema.ts @@ -0,0 +1,199 @@ +import { z } from "zod"; +//import { VAL} from "./gen/kuksa/val/v1/val_connect"; +//import path from "path"; +//import { EntryRequest } from "./gen/kuksa/val/v1/val_pb"; + +// """ Here is a list of signals which are used inside the app: +// Door Control: bool +// Vehicle.Cabin.Door.Row1.DriverSide.IsLocked bool +// Vehicle.Cabin.Door.Row1.PassengerSide.IsLocked +// Vehicle.Cabin.Door.Row2.DriverSide.IsLocked +// Vehicle.Cabin.Door.Row2.PassengerSide.IsLocked +// Vehicle.Body.Trunk.Rear.IsLocked +// Vehicle.Cabin.Door.Row1.DriverSide.IsOpen +// Vehicle.Cabin.Door.Row1.PassengerSide.IsOpen +// Vehicle.Cabin.Door.Row2.DriverSide.IsOpen +// Vehicle.Cabin.Door.Row2.PassengerSide.IsOpen +// Vehicle.Body.Trunk.Rear.IsOpen +// Temperature Control: int32 +// Vehicle.Cabin.HVAC.Station.Row1.Driver.Temperature +// Vehicle.Cabin.HVAC.Station.Row1.Passenger.Temperature +// Vehicle.Cabin.HVAC.Station.Row2.Driver.Temperature +// Vehicle.Cabin.HVAC.Station.Row2.Passenger.Temperature +// Light Control: bool +// Vehicle.Body.Lights.Beam.High.IsOn +// Vehicle.Body.Lights.Beam.Low.IsOn +// Vehicle.Body.Lights.DirectionIndicator.Left.IsSignaling +// Vehicle.Body.Lights.DirectionIndicator.Right.IsSignaling +// Vehicle.Body.Lights.Fog.Front.IsOn +// Vehicle.Body.Lights.Fog.Rear.IsOn +// Vehicle.Body.Lights.Hazard.IsSignaling +// Vehicle.Body.Lights.Parking.IsOn +// Vehicle.Body.Lights.Running.IsOn +// Tire Pressure:uint32 +// Vehicle.Chassis.Axle.Row1.Wheel.Left.Tire.Pressure +// Vehicle.Chassis.Axle.Row1.Wheel.Right.Tire.Pressure +// Vehicle.Chassis.Axle.Row2.Wheel.Left.Tire.Pressure +// Vehicle.Chassis.Axle.Row2.Wheel.Right.Tire.Pressure """ + +export const UnknownText = z.object({ + type: z.literal('unknown'), + command: z.string().describe("The text that wasn't understood") +}); + +export const DataEntry = z.object({ + //path: z.enum(['Vehicle.Cabin.HVAC.Station.Row1.Driver.Temperature', 'Vehicle.Cabin.HVAC.Station.Row2.Driver.Temperature', 'Vehicle.Cabin.HVAC.Station.Row1.Passenger.Temperature', 'Vehicle.Cabin.HVAC.Station.Row2.Passenger.Temperature']).describe("The path to the datapoint"), + path: z.string().describe("The path to the datapoint"), + value: z.string() +}); + +//export const GetTemperature = z.instanceof(DataEntry) +export const GetTemperature = z.object({ + type: z.literal('GetTemperature'), + command: z.object({entries: z.object({path: z.enum(['Vehicle.Cabin.HVAC.Station.Row1.Driver.Temperature', + 'Vehicle.Cabin.HVAC.Station.Row2.Driver.Temperature', + 'Vehicle.Cabin.HVAC.Station.Row1.Passenger.Temperature', + 'Vehicle.Cabin.HVAC.Station.Row2.Passenger.Temperature'])}).array()}), +}); + +export const GetDoorLockState = z.object({ + type: z.literal('GetDoorLockState'), + command: z.object({entries: z.object({path: z.enum(['Vehicle.Cabin.Door.Row1.DriverSide.IsLocked', + 'Vehicle.Cabin.Door.Row2.DriverSide.IsLocked', + 'Vehicle.Cabin.Door.Row1.PassengerSide.IsLocked', + 'Vehicle.Cabin.Door.Row2.PassengerSide.IsLocked', + 'Vehicle.Body.Trunk.Rear.IsLocked'])}).array()}), +}); +export const SetTemperature = z.object({ + type: z.literal('SetTemperature'), + command: z.object({updates: z.array( + z.object({ + entry: z.object({ + path: z.enum(['Vehicle.Cabin.HVAC.Station.Row1.Driver.Temperature', + 'Vehicle.Cabin.HVAC.Station.Row2.Driver.Temperature', + 'Vehicle.Cabin.HVAC.Station.Row1.Passenger.Temperature', + 'Vehicle.Cabin.HVAC.Station.Row2.Passenger.Temperature']), + value: z.object({ int32: z.number() }) + }), + fields: z.string().array().nonempty().default(['FIELD_VALUE']) + }) + )}), + }); + +export const SetDoorLockState = z.object({ + type: z.literal('SetDoorLockState'), + command: z.object({updates: z.array( + z.object({ + entry: z.object({ + path: z.enum(['Vehicle.Cabin.Door.Row1.DriverSide.IsLocked', + 'Vehicle.Cabin.Door.Row2.DriverSide.IsLocked', + 'Vehicle.Cabin.Door.Row1.PassengerSide.IsLocked', + 'Vehicle.Cabin.Door.Row2.PassengerSide.IsLocked','Vehicle.Body.Trunk.Rear.IsLocked']).describe("which door to lock"), + value: z.object({ bool: z.boolean() }) + }), + fields: z.string().array().nonempty().default(['FIELD_VALUE']) + }) + )}), + }); + export const GetDoorOpenState = z.object({ + type: z.literal('GetDoorOpenState'), + command: z.object({entries: z.object({path: z.enum(['Vehicle.Cabin.Door.Row1.DriverSide.IsOpen', + 'Vehicle.Cabin.Door.Row2.DriverSide.IsOpen', + 'Vehicle.Cabin.Door.Row1.PassengerSide.IsOpen', + 'Vehicle.Cabin.Door.Row2.PassengerSide.IsOpen','Vehicle.Body.Trunk.Rear.IsOpen'])}).array()}), +}); + + export const SetDoorOpenState = z.object({ + type: z.literal('SetDoorOpenState'), + command: z.object({updates: z.array( + z.object({ + entry: z.object({ + path: z.enum(['Vehicle.Cabin.Door.Row1.DriverSide.IsOpen', + 'Vehicle.Cabin.Door.Row2.DriverSide.IsOpen', + 'Vehicle.Cabin.Door.Row1.PassengerSide.IsOpen', + 'Vehicle.Cabin.Door.Row2.PassengerSide.IsOpen','Vehicle.Body.Trunk.Rear.IsOpen']).describe("which door to open or close"), + value: z.object({ bool: z.boolean() }) + }), + fields: z.string().array().nonempty().default(['FIELD_VALUE']) + }) + )}), + }); + //use to turn the lights off and on + export const SetLightState = z.object({ + type: z.literal('SetLightState'), + command: z.object({updates: z.array( + z.object({ + entry: z.object({ + path: z.enum(['Vehicle.Body.Lights.Beam.High.IsOn', + 'Vehicle.Body.Lights.Beam.Low.IsOn', + 'Vehicle.Body.Lights.DirectionIndicator.Left.IsSignaling', + 'Vehicle.Body.Lights.DirectionIndicator.Right.IsSignaling', + 'Vehicle.Body.Lights.Fog.Front.IsOn', + 'Vehicle.Body.Lights.Fog.Rear.IsOn', + 'Vehicle.Body.Lights.Hazard.IsSignaling', + 'Vehicle.Body.Lights.Parking.IsOn', + 'Vehicle.Body.Lights.Running.IsOn']), + value: z.object({ bool: z.boolean() }) + }), + fields: z.string().array().nonempty().default(['FIELD_VALUE']) + }) + )}), + }); + //use to get the state of the lights + export const GetLightState = z.object({ + type: z.literal('GetLightState'), + command: z.object({entries: z.object({path: z.enum(['Vehicle.Body.Lights.Beam.High.IsOn', + 'Vehicle.Body.Lights.Beam.Low.IsOn', + 'Vehicle.Body.Lights.DirectionIndicator.Left.IsSignaling', + 'Vehicle.Body.Lights.DirectionIndicator.Right.IsSignaling', + 'Vehicle.Body.Lights.Fog.Front.IsOn', + 'Vehicle.Body.Lights.Fog.Rear.IsOn', + 'Vehicle.Body.Lights.Hazard.IsSignaling', + 'Vehicle.Body.Lights.Parking.IsOn', + 'Vehicle.Body.Lights.Running.IsOn'])}).array()}), + }); + //use to get the pressure of the tires + export const GetTirePressure = z.object({ + type: z.literal('GetTirePressure'), + command: z.object({entries: z.object({path: z.enum(['Vehicle.Chassis.Axle.Row1.Wheel.Left.Tire.Pressure', + 'Vehicle.Chassis.Axle.Row1.Wheel.Right.Tire.Pressure', + 'Vehicle.Chassis.Axle.Row2.Wheel.Left.Tire.Pressure', + 'Vehicle.Chassis.Axle.Row2.Wheel.Right.Tire.Pressure'])}).array().describe('must be an array of entries')}), + }); + //use to set the pressure of the vehicle tires + export const SetTirePressure = z.object({ + type: z.literal('SetTirePressure'), + command: z.object({updates: z.array( + z.object({ + entry: z.object({ + path: z.enum(['Vehicle.Chassis.Axle.Row1.Wheel.Left.Tire.Pressure', + 'Vehicle.Chassis.Axle.Row1.Wheel.Right.Tire.Pressure', + 'Vehicle.Chassis.Axle.Row2.Wheel.Left.Tire.Pressure', + 'Vehicle.Chassis.Axle.Row2.Wheel.Right.Tire.Pressure']), + value: z.object({ uint32: z.number() }) + }), + fields: z.string().array().nonempty().default(['FIELD_VALUE']) + }) + )}), + }); + +export const SDVCarActions = z.object({ + actions: z.discriminatedUnion("type", [ + GetDoorLockState.describe('Use this to get the state of the door locks'), + SetTemperature.describe('Use this to set the temperature'), + GetTemperature.describe('Use this to get the temperature'), + GetLightState.describe('Use this to get the state of the lights'), + SetLightState.describe('Use this to turn the lights off and on'), + SetDoorLockState.describe('Use this to lock and unlock the doors. use GetDoorOpenState for opening and closing doors'), + GetTirePressure.describe('Use this to get the tire pressure'), + GetDoorOpenState.describe('Get the door open state'), + SetDoorOpenState.describe('Use this to open and close the doors. use SetDoorLockState for locking and unlocking doors'), + SetTirePressure.describe('Use this to set the tire pressure'), + UnknownText]).array() +}); + +export const SDVCarSchema ={ + SDVCarActions: SDVCarActions.describe("The actions to perform on the car"), + UnknownText: UnknownText.describe("Use this type for order items that match nothing else") +}; + diff --git a/typescript/examples/aicar-zod/input.txt b/typescript/examples/aicar-zod/input.txt new file mode 100644 index 00000000..23ce2372 --- /dev/null +++ b/typescript/examples/aicar-zod/input.txt @@ -0,0 +1,49 @@ +What is the temperature on the front drivers side? +What is the temperature on the front passengar side? +What is the temperature on the rear driver side? +What is the temperature on the front passenger side? +Set the temperature on the front drivers side to 33. +Set the temperature on the rear drivers side to 33. +Is the drivers side front door locked? +Please lock the drivers side front door. +what is the temperature in all the zones of the car? +are the fog lights on? +is the left turn signal on? +turn the left turn signal on. +are the high beams on? +close the trunk. +turn the high beams on. +turn off the left turn signal. +what is the left drivers side tire pressure? +what is the right rear drivers side tire pressure? +what is the left rear passenger side tire pressure? +set the drivers front tire pressure to 33. +set the passenger rear tire pressure to 33. +open the rear passenger door. +unlock the rear passenger door. +close the rear passenger door. +lock the rear passenger door. +are the hazard lights on? what is the capital of france? +turn on the hazard lights. +is the trunk open? +open the trunk. +lock the rear passenger side door. +turn on the fog lights +turn off the fog lights and turn on the high beams. +open and unlock all the doors. +is austin texas a city? Are the doors open? +Are the doors unlocked? +turn on the right turn signal. +turn off the right turn signal. +Are the hazard lights on? +is the right turn signal on? +turn on the hazard lights and set the driver side temperature to 43. +what is the temperature on the passenger zones of the car? +turn up the driver side temperature to 55. +lock every door except for the driver side. +unlock all non driver doors +lock every door +close and lock everything +set the tire pressure on all wheels to 22. +open, unlock and turn on everything also set every temperature to 78 +close, lock and turn off everything also set every temperature to 22 \ No newline at end of file diff --git a/typescript/examples/aicar-zod/utils.ts b/typescript/examples/aicar-zod/utils.ts new file mode 100644 index 00000000..b6171714 --- /dev/null +++ b/typescript/examples/aicar-zod/utils.ts @@ -0,0 +1,136 @@ +import { z } from "zod"; +import { VAL} from "./gen/kuksa/val/v1/val_connect"; +import { GetRequest, SetRequest} from "./gen/kuksa/val/v1/val_pb"; +import { createPromiseClient } from "@connectrpc/connect"; +import { createGrpcTransport } from "@connectrpc/connect-node"; +import { Command, Option, OptionValues } from 'commander'; +import path from "path"; +import { createAzureOpenAILanguageModel, createLanguageModel,createOpenAILanguageModel } from "typechat"; +import fs from "fs"; + +export class requestTracking { + request: string | undefined; + status?: string; + expectedRequest?: string; + generatedRequest?: string; + expectedAPIResponse?: string; + APIResponse?: string; + unknownRequest?: string; + errors?: string[]; + prompt?: string; +} + +export function parseCommandLine(){ + const program = new Command(); + program.addOption(new Option('-v, --validate', 'perform validattion of the input file'),); + program.addOption(new Option('-i, --inputfile ', 'file to parse input from'),); + program.addOption(new Option('-o, --outputfile ', 'file to parse input from'),); + program.addOption(new Option('-m, --model ', 'model to select from the modelconfig.json'),); + program.parse(process.argv); + return program.opts(); +}; + +export function createLLM(inputOptions: OptionValues, modelConfigPath: string | undefined){ + let llmodel; + if(inputOptions.model && modelConfigPath){ + const models = JSON.parse(fs.readFileSync(modelConfigPath, "utf8")) as ModelConfig[]; + const model = models.find(x => x.name === inputOptions.model); + if(model){ + llmodel = model.type === 'AzureOpenAI' ? createAzureOpenAILanguageModel(model.modelDetails.apiKey, model.modelDetails.apiEndpoint) + : model.type === 'Ollama' ? createOpenAILanguageModel(model.modelDetails.apiKey, model.name, model.modelDetails.apiEndpoint) + : createLanguageModel(process.env) + } + } + else{ + console.log('Model not found'); + llmodel = createLanguageModel(process.env); + } + return llmodel; +} + +export const SDVRequestResponse = z.object({ + entries: z.array( + z.object({ + path: z.string(), + value: z.object({ timestamp: z.string(), int32: z.number() }) + }) + ), + errors: z.array(z.unknown()) +}) + +export const SDVSetResponse = z.object({ + errors: z.array( + z.object({ + path: z.string(), + error: z.object({ + code: z.number(), + reason: z.string(), + message: z.string() + }) + }) + ) +}) + +export type Error = { + + code: 0; + reason: ""; + message: ""; +} +export type DataEntryError = { + path: ""; + error?: Error; +} + +export interface ModelDetails { + apiKey: string; + apiEndpoint: string; + port?: number | string; +} + +export interface ModelConfig { + name: string; + type: string; + modelDetails: ModelDetails; +} + +export async function validateCarResponse(request, translator) { + const transport = createGrpcTransport({baseUrl: "http://localhost:55556",httpVersion: "2"}); + const vl = createPromiseClient(VAL, transport); + let requestTracking: requestTracking = {request: request}; + //translator.stripNulls = true; + translator.attemptRepair = true; + requestTracking.prompt = translator.createRequestPrompt(request); + const response = await translator.translate(request); + if (!response.success) { + //console.log('Failed translation: '+JSON.stringify(response)); + requestTracking.status = "Failed"; + requestTracking.errors = [response.message]; + return requestTracking; + } + const car = response.data; + for (const item of car.actions) { + //console.log(JSON.stringify('Running Command: ' + JSON.stringify(item.command))); + if(item.type.includes('Set')) + { + requestTracking.generatedRequest = JSON.stringify(item.command); + const s1 = await vl.set(SetRequest.fromJsonString(JSON.stringify(item.command))); + requestTracking.APIResponse = JSON.stringify(s1); + requestTracking.status = s1.errors.length > 0 ? "Failed" : "Passed" + } + else if(item.type.includes('Get')) + { + requestTracking.generatedRequest = JSON.stringify(item.command); + const g1 = await vl.get(GetRequest.fromJsonString(JSON.stringify(item.command))); + requestTracking.APIResponse = JSON.stringify(g1); + requestTracking.status = g1.errors.length > 0 ? "Failed" : "Passed" + } + else + { + requestTracking.unknownRequest = JSON.stringify(item.command); + //console.log('Unknown Command: '+ JSON.stringify(item.command)); + } + } + //requestArray.push(requestTracking); + return requestTracking; +} diff --git a/typescript/examples/aicar/input.txt b/typescript/examples/aicar/input.txt new file mode 100644 index 00000000..23ce2372 --- /dev/null +++ b/typescript/examples/aicar/input.txt @@ -0,0 +1,49 @@ +What is the temperature on the front drivers side? +What is the temperature on the front passengar side? +What is the temperature on the rear driver side? +What is the temperature on the front passenger side? +Set the temperature on the front drivers side to 33. +Set the temperature on the rear drivers side to 33. +Is the drivers side front door locked? +Please lock the drivers side front door. +what is the temperature in all the zones of the car? +are the fog lights on? +is the left turn signal on? +turn the left turn signal on. +are the high beams on? +close the trunk. +turn the high beams on. +turn off the left turn signal. +what is the left drivers side tire pressure? +what is the right rear drivers side tire pressure? +what is the left rear passenger side tire pressure? +set the drivers front tire pressure to 33. +set the passenger rear tire pressure to 33. +open the rear passenger door. +unlock the rear passenger door. +close the rear passenger door. +lock the rear passenger door. +are the hazard lights on? what is the capital of france? +turn on the hazard lights. +is the trunk open? +open the trunk. +lock the rear passenger side door. +turn on the fog lights +turn off the fog lights and turn on the high beams. +open and unlock all the doors. +is austin texas a city? Are the doors open? +Are the doors unlocked? +turn on the right turn signal. +turn off the right turn signal. +Are the hazard lights on? +is the right turn signal on? +turn on the hazard lights and set the driver side temperature to 43. +what is the temperature on the passenger zones of the car? +turn up the driver side temperature to 55. +lock every door except for the driver side. +unlock all non driver doors +lock every door +close and lock everything +set the tire pressure on all wheels to 22. +open, unlock and turn on everything also set every temperature to 78 +close, lock and turn off everything also set every temperature to 22 \ No newline at end of file diff --git a/typescript/examples/aicar/utils.ts b/typescript/examples/aicar/utils.ts new file mode 100644 index 00000000..b6171714 --- /dev/null +++ b/typescript/examples/aicar/utils.ts @@ -0,0 +1,136 @@ +import { z } from "zod"; +import { VAL} from "./gen/kuksa/val/v1/val_connect"; +import { GetRequest, SetRequest} from "./gen/kuksa/val/v1/val_pb"; +import { createPromiseClient } from "@connectrpc/connect"; +import { createGrpcTransport } from "@connectrpc/connect-node"; +import { Command, Option, OptionValues } from 'commander'; +import path from "path"; +import { createAzureOpenAILanguageModel, createLanguageModel,createOpenAILanguageModel } from "typechat"; +import fs from "fs"; + +export class requestTracking { + request: string | undefined; + status?: string; + expectedRequest?: string; + generatedRequest?: string; + expectedAPIResponse?: string; + APIResponse?: string; + unknownRequest?: string; + errors?: string[]; + prompt?: string; +} + +export function parseCommandLine(){ + const program = new Command(); + program.addOption(new Option('-v, --validate', 'perform validattion of the input file'),); + program.addOption(new Option('-i, --inputfile ', 'file to parse input from'),); + program.addOption(new Option('-o, --outputfile ', 'file to parse input from'),); + program.addOption(new Option('-m, --model ', 'model to select from the modelconfig.json'),); + program.parse(process.argv); + return program.opts(); +}; + +export function createLLM(inputOptions: OptionValues, modelConfigPath: string | undefined){ + let llmodel; + if(inputOptions.model && modelConfigPath){ + const models = JSON.parse(fs.readFileSync(modelConfigPath, "utf8")) as ModelConfig[]; + const model = models.find(x => x.name === inputOptions.model); + if(model){ + llmodel = model.type === 'AzureOpenAI' ? createAzureOpenAILanguageModel(model.modelDetails.apiKey, model.modelDetails.apiEndpoint) + : model.type === 'Ollama' ? createOpenAILanguageModel(model.modelDetails.apiKey, model.name, model.modelDetails.apiEndpoint) + : createLanguageModel(process.env) + } + } + else{ + console.log('Model not found'); + llmodel = createLanguageModel(process.env); + } + return llmodel; +} + +export const SDVRequestResponse = z.object({ + entries: z.array( + z.object({ + path: z.string(), + value: z.object({ timestamp: z.string(), int32: z.number() }) + }) + ), + errors: z.array(z.unknown()) +}) + +export const SDVSetResponse = z.object({ + errors: z.array( + z.object({ + path: z.string(), + error: z.object({ + code: z.number(), + reason: z.string(), + message: z.string() + }) + }) + ) +}) + +export type Error = { + + code: 0; + reason: ""; + message: ""; +} +export type DataEntryError = { + path: ""; + error?: Error; +} + +export interface ModelDetails { + apiKey: string; + apiEndpoint: string; + port?: number | string; +} + +export interface ModelConfig { + name: string; + type: string; + modelDetails: ModelDetails; +} + +export async function validateCarResponse(request, translator) { + const transport = createGrpcTransport({baseUrl: "http://localhost:55556",httpVersion: "2"}); + const vl = createPromiseClient(VAL, transport); + let requestTracking: requestTracking = {request: request}; + //translator.stripNulls = true; + translator.attemptRepair = true; + requestTracking.prompt = translator.createRequestPrompt(request); + const response = await translator.translate(request); + if (!response.success) { + //console.log('Failed translation: '+JSON.stringify(response)); + requestTracking.status = "Failed"; + requestTracking.errors = [response.message]; + return requestTracking; + } + const car = response.data; + for (const item of car.actions) { + //console.log(JSON.stringify('Running Command: ' + JSON.stringify(item.command))); + if(item.type.includes('Set')) + { + requestTracking.generatedRequest = JSON.stringify(item.command); + const s1 = await vl.set(SetRequest.fromJsonString(JSON.stringify(item.command))); + requestTracking.APIResponse = JSON.stringify(s1); + requestTracking.status = s1.errors.length > 0 ? "Failed" : "Passed" + } + else if(item.type.includes('Get')) + { + requestTracking.generatedRequest = JSON.stringify(item.command); + const g1 = await vl.get(GetRequest.fromJsonString(JSON.stringify(item.command))); + requestTracking.APIResponse = JSON.stringify(g1); + requestTracking.status = g1.errors.length > 0 ? "Failed" : "Passed" + } + else + { + requestTracking.unknownRequest = JSON.stringify(item.command); + //console.log('Unknown Command: '+ JSON.stringify(item.command)); + } + } + //requestArray.push(requestTracking); + return requestTracking; +} From 5c689a49bbea32a066b009a66db0cbf13a57886b Mon Sep 17 00:00:00 2001 From: brclarkdev <31588123+brclarkdev@users.noreply.github.com> Date: Thu, 29 Aug 2024 18:29:59 +0000 Subject: [PATCH 04/14] initial check in for native schema implementation --- .../examples/aicar/SDVCarActionSchema.ts | 162 ++++++++++++++++++ typescript/examples/aicar/main.ts | 55 ++++++ typescript/examples/aicar/package.json | 16 ++ typescript/package-lock.json | 97 +++++++++++ 4 files changed, 330 insertions(+) create mode 100644 typescript/examples/aicar/SDVCarActionSchema.ts create mode 100644 typescript/examples/aicar/package.json diff --git a/typescript/examples/aicar/SDVCarActionSchema.ts b/typescript/examples/aicar/SDVCarActionSchema.ts new file mode 100644 index 00000000..fcdf442d --- /dev/null +++ b/typescript/examples/aicar/SDVCarActionSchema.ts @@ -0,0 +1,162 @@ +// The following types define the structure of an object of type CarActions that represents a list of actions you can do on a car. + + + +// export type CarActions = { +// actions: Action[]; +// }; +export interface CarActions { + actions: (GetTempurature | SetTemperature | GetDoorLockState + | SetDoorLockState | GetLightState | SetLightState | SetDoorOpenState + | GetTirePressure | GetDoorOpenState | SetTirePressure | UnknownAction)[]; +} + +// export interface Action +// | GetTempurature //use this to get the temperature of the car +// | SetTemperature //use this to set the temperature of the car +// | GetDoorLockState //use this to see if the doors or locked or unlocked +// | SetDoorLockState //use this to lock or unlock the doors +// | GetLightState //use this to see if the lights are on or off +// | SetLightState //use this to turn the lights off and on +// | SetDoorOpenState //use this to open or close the vehicle doors +// | GetTirePressure //use this to get the pressure of the vehicle tires +// | GetDoorOpenState //use this to see if the vehicle doors are open or closed +// | SetDoorOpenState //use this to open or close the vehicle doors +// | SetTirePressure //use this to set the pressure of the vehicle tires +// | UnknownAction; //use this when you don't know what the user is asking for + +//use this when you don't know what the user is asking for +export interface UnknownAction { + type: 'unknown'; + // text typed by the user that the system did not understand + command: string; +} + +//use this to get the temperature of the car +export interface GetTempurature { + type: "GetTemperature"; + command: { + entries: { + path: "Vehicle.Cabin.HVAC.Station.Row1.Driver.Temperature" | "Vehicle.Cabin.HVAC.Station.Row2.Driver.Temperature" | "Vehicle.Cabin.HVAC.Station.Row1.Passenger.Temperature" | "Vehicle.Cabin.HVAC.Station.Row2.Passenger.Temperature"; + }[]; + }; +}; + +//use this to set the temperature of the car +export interface SetTemperature { + type: "SetTemperature" + command: { + updates: Array<{ + entry: { + path: "Vehicle.Cabin.HVAC.Station.Row1.Driver.Temperature" | "Vehicle.Cabin.HVAC.Station.Row2.Driver.Temperature" | "Vehicle.Cabin.HVAC.Station.Row1.Passenger.Temperature" | "Vehicle.Cabin.HVAC.Station.Row2.Passenger.Temperature"; + value: {int32: number}; //always ensure thie value is set to a number and in the entry object + } + fields: string[] + }> + } +} + +//use this to lock or unlock the doors +export interface SetDoorLockState { + type: "SetDoorLockState"; + command: { + updates: { + entry: { + /** which door to lock */ + path: "Vehicle.Cabin.Door.Row1.DriverSide.IsLocked" | "Vehicle.Cabin.Door.Row2.DriverSide.IsLocked" | "Vehicle.Cabin.Door.Row1.PassengerSide.IsLocked" | "Vehicle.Cabin.Door.Row2.PassengerSide.IsLocked" | "Vehicle.Body.Trunk.Rear.IsLocked"; + value: { + bool: boolean; + }; + }; + fields: ("FIELD_VALUE")[]; + }[]; + }; +}; + +//use this to see if the doors or locked or unlocked +export interface GetDoorLockState { + type: "GetDoorLockState"; + command: { + entries: { + path: "Vehicle.Cabin.Door.Row1.DriverSide.IsLocked" | "Vehicle.Cabin.Door.Row2.DriverSide.IsLocked" | "Vehicle.Cabin.Door.Row1.PassengerSide.IsLocked" | "Vehicle.Cabin.Door.Row2.PassengerSide.IsLocked" | "Vehicle.Body.Trunk.Rear.IsLocked"; + }[]; + }; +} + +//use this to see if the lights are on or off +export interface GetLightState { + type: "GetLightState"; + command: { + entries: { + path: "Vehicle.Body.Lights.Beam.High.IsOn" | "Vehicle.Body.Lights.Beam.Low.IsOn" | "Vehicle.Body.Lights.DirectionIndicator.Left.IsSignaling" | "Vehicle.Body.Lights.DirectionIndicator.Right.IsSignaling" | "Vehicle.Body.Lights.Fog.Front.IsOn" | "Vehicle.Body.Lights.Fog.Rear.IsOn" | "Vehicle.Body.Lights.Hazard.IsSignaling" | "Vehicle.Body.Lights.Parking.IsOn" | "Vehicle.Body.Lights.Running.IsOn"; + }[]; + }; +}; + +//use this to turn the lights off and on +export interface SetLightState { + type: "SetLightState"; + command: { + updates: { + entry: { + path: "Vehicle.Body.Lights.Beam.High.IsOn" | "Vehicle.Body.Lights.Beam.Low.IsOn" | "Vehicle.Body.Lights.DirectionIndicator.Left.IsSignaling" | "Vehicle.Body.Lights.DirectionIndicator.Right.IsSignaling" | "Vehicle.Body.Lights.Fog.Front.IsOn" | "Vehicle.Body.Lights.Fog.Rear.IsOn" | "Vehicle.Body.Lights.Hazard.IsSignaling" | "Vehicle.Body.Lights.Parking.IsOn" | "Vehicle.Body.Lights.Running.IsOn"; + value: { + bool: boolean; + }; + }; + fields: ("FIELD_VALUE")[]; + }[]; + }; +}; + +//use this to get the pressure of the vehicle tires +export interface GetTirePressure { + type: "GetTirePressure"; + command: { + /** must be an array of entries */ + entries: { + path: "Vehicle.Chassis.Axle.Row1.Wheel.Left.Tire.Pressure" | "Vehicle.Chassis.Axle.Row1.Wheel.Right.Tire.Pressure" | "Vehicle.Chassis.Axle.Row2.Wheel.Left.Tire.Pressure" | "Vehicle.Chassis.Axle.Row2.Wheel.Right.Tire.Pressure"; + }[]; + }; +}; + +//use this to see if the vehicle doors are open or closed +export interface GetDoorOpenState { + type: "GetDoorOpenState"; + command: { + entries: { + path: "Vehicle.Cabin.Door.Row1.DriverSide.IsOpen" | "Vehicle.Cabin.Door.Row2.DriverSide.IsOpen" | "Vehicle.Cabin.Door.Row1.PassengerSide.IsOpen" | "Vehicle.Cabin.Door.Row2.PassengerSide.IsOpen" | "Vehicle.Body.Trunk.Rear.IsOpen"; + }[]; + }; +}; + +//use this to open or close the vehicle doors +export interface SetDoorOpenState { + type: "SetDoorOpenState"; + command: { + updates: { + entry: { + /** which door to open or close */ + path: "Vehicle.Cabin.Door.Row1.DriverSide.IsOpen" | "Vehicle.Cabin.Door.Row2.DriverSide.IsOpen" | "Vehicle.Cabin.Door.Row1.PassengerSide.IsOpen" | "Vehicle.Cabin.Door.Row2.PassengerSide.IsOpen" | "Vehicle.Body.Trunk.Rear.IsOpen"; + value: { + bool: boolean; + }; + }; + fields: ("FIELD_VALUE")[]; + }[]; + }; +}; + +//use this to set the pressure of the vehicle tires +export interface SetTirePressure { + type: "SetTirePressure"; + command: { + updates: { + entry: { + path: "Vehicle.Chassis.Axle.Row1.Wheel.Left.Tire.Pressure" | "Vehicle.Chassis.Axle.Row1.Wheel.Right.Tire.Pressure" | "Vehicle.Chassis.Axle.Row2.Wheel.Left.Tire.Pressure" | "Vehicle.Chassis.Axle.Row2.Wheel.Right.Tire.Pressure"; + value: {uint32: number}; + }; + fields: ['FIELD_VALUE']; + }[]; + }; +}; \ No newline at end of file diff --git a/typescript/examples/aicar/main.ts b/typescript/examples/aicar/main.ts index e69de29b..ed892bf4 100644 --- a/typescript/examples/aicar/main.ts +++ b/typescript/examples/aicar/main.ts @@ -0,0 +1,55 @@ +import assert from "assert"; +import dotenv from "dotenv"; +import findConfig from "find-config"; +import fs from "fs"; +import path from "path"; +import { createJsonTranslator, createLanguageModel } from "typechat"; +import { createTypeScriptJsonValidator } from "typechat/ts"; +import { processRequests } from "typechat/interactive"; +import { CarActions } from "./SDVCarActionSchema"; +import {ModelConfig, requestTracking, validateCarResponse, parseCommandLine, createLLM} from "./utils" +import * as tsprogress from 'ts-progress'; + +const inputOptions = parseCommandLine(); +let models: ModelConfig[] = []; +const dotEnvPath = findConfig(".env"); +const modelConfigPath = findConfig("modelconfig.json"); +assert(dotEnvPath, ".env file not found!"); +dotenv.config({ path: dotEnvPath }); + +const llmodel = createLLM(inputOptions, modelConfigPath ?? undefined); +const schema = fs.readFileSync(path.join(__dirname, "SDVCarActionSchema.ts"), "utf8"); +const validator = createTypeScriptJsonValidator(schema, "CarActions"); +const translator = createJsonTranslator(llmodel, validator); +//const translator = createCarActionTranslator(llmodel, validator); + +if(inputOptions.validate){ + + if(inputOptions.inputfile) //check the input file exists + { + const lines = fs.readFileSync(inputOptions.inputfile).toString().split(/\r?\n/); + var progress = tsprogress.create({total: lines.length}); + let responses = Promise.all(lines.map(async (x) => { + const result = await validateCarResponse(x, translator); + progress.update(); + return result; + })) + .then((values) => { + console.log('Processing Complete - Recap:'); + let passed = values.filter(e => e.status === 'Passed').length + let failed = values.filter(e => e.status === 'Failed').length + console.log('#of Requests: ' +values.length+ ' Passed: ' + passed + ' Failed: ' + failed + ' % correct: ' + (passed/values.length)*100 + '%'); + if(inputOptions.outputfile){ + fs.writeFileSync(inputOptions.outputfile, values.map(x=>JSON.stringify(x)).join('\n')); + } + }); + } +} +else{ + console.log('Interactive mode'); + processRequests("☕> ", "", async (request): Promise => { + const res: requestTracking = await validateCarResponse(request, translator); + console.log(res); + return; + }); +} diff --git a/typescript/examples/aicar/package.json b/typescript/examples/aicar/package.json new file mode 100644 index 00000000..0676075f --- /dev/null +++ b/typescript/examples/aicar/package.json @@ -0,0 +1,16 @@ +{ + "name": "aicar", + "version": "0.0.1", + "main": "dist/main.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "MIT", + "description": "", + "dependencies": { + "@connectrpc/connect-node": "^1.4.0", + "commander": "^12.1.0", + "ts-progress": "^0.1.9" + } +} diff --git a/typescript/package-lock.json b/typescript/package-lock.json index 87941205..00848953 100644 --- a/typescript/package-lock.json +++ b/typescript/package-lock.json @@ -31,6 +31,15 @@ } } }, + "examples/aicar": { + "version": "0.0.1", + "license": "MIT", + "dependencies": { + "@connectrpc/connect-node": "^1.4.0", + "commander": "^12.1.0", + "ts-progress": "^0.1.9" + } + }, "examples/calendar": { "version": "0.0.1", "license": "MIT", @@ -209,6 +218,48 @@ "typescript": "^5.3.3" } }, + "node_modules/@bufbuild/protobuf": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-1.10.0.tgz", + "integrity": "sha512-QDdVFLoN93Zjg36NoQPZfsVH9tZew7wKDKyV5qRdj8ntT4wQCOradQjRaTdwMhWUYsgKsvCINKKm87FdEk96Ag==", + "license": "(Apache-2.0 AND BSD-3-Clause)", + "peer": true + }, + "node_modules/@connectrpc/connect": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@connectrpc/connect/-/connect-1.4.0.tgz", + "integrity": "sha512-vZeOkKaAjyV4+RH3+rJZIfDFJAfr+7fyYr6sLDKbYX3uuTVszhFe9/YKf5DNqrDb5cKdKVlYkGn6DTDqMitAnA==", + "license": "Apache-2.0", + "peer": true, + "peerDependencies": { + "@bufbuild/protobuf": "^1.4.2" + } + }, + "node_modules/@connectrpc/connect-node": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@connectrpc/connect-node/-/connect-node-1.4.0.tgz", + "integrity": "sha512-0ANnrr6SvsjevsWEgdzHy7BaHkluZyS6s4xNoVt7RBHFR5V/kT9lPokoIbYUOU9JHzdRgTaS3x5595mwUsu15g==", + "license": "Apache-2.0", + "dependencies": { + "undici": "^5.28.3" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@bufbuild/protobuf": "^1.4.2", + "@connectrpc/connect": "1.4.0" + } + }, + "node_modules/@fastify/busboy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, "node_modules/@gar/promisify": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", @@ -435,6 +486,10 @@ "node": ">=8" } }, + "node_modules/aicar": { + "resolved": "examples/aicar", + "link": true + }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -709,6 +764,15 @@ "node": ">=4" } }, + "node_modules/charm": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/charm/-/charm-1.0.2.tgz", + "integrity": "sha512-wqW3VdPnlSWT4eRiYX+hcs+C6ViBPUWk1qTCd+37qw9kEm/a5n2qcyQDMBWvSYKN/ctqZzeXNQaeBjOetJJUkw==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1" + } + }, "node_modules/chownr": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", @@ -778,6 +842,15 @@ "node": ">= 0.8" } }, + "node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -2696,6 +2769,18 @@ "node": ">=0.6" } }, + "node_modules/ts-progress": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/ts-progress/-/ts-progress-0.1.9.tgz", + "integrity": "sha512-1jp591MFPSmQwPahlBN+NHPYOxTnackPHG0sCwZErTAb4XaH3IrK45H2PXQDJfuzXUIu1y9dLaB9l+tWBcB04g==", + "license": "MIT", + "dependencies": { + "charm": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -2735,6 +2820,18 @@ "node": ">=14.17" } }, + "node_modules/undici": { + "version": "5.28.4", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", + "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", + "license": "MIT", + "dependencies": { + "@fastify/busboy": "^2.0.0" + }, + "engines": { + "node": ">=14.0" + } + }, "node_modules/undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", From b89a2dcfb63db4e3026a0be406046bedcd92b903 Mon Sep 17 00:00:00 2001 From: brclarkdev <31588123+brclarkdev@users.noreply.github.com> Date: Thu, 29 Aug 2024 18:31:00 +0000 Subject: [PATCH 05/14] slight clean on --- typescript/examples/aicar/main.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/typescript/examples/aicar/main.ts b/typescript/examples/aicar/main.ts index ed892bf4..77eb9f85 100644 --- a/typescript/examples/aicar/main.ts +++ b/typescript/examples/aicar/main.ts @@ -21,11 +21,10 @@ const llmodel = createLLM(inputOptions, modelConfigPath ?? undefined); const schema = fs.readFileSync(path.join(__dirname, "SDVCarActionSchema.ts"), "utf8"); const validator = createTypeScriptJsonValidator(schema, "CarActions"); const translator = createJsonTranslator(llmodel, validator); -//const translator = createCarActionTranslator(llmodel, validator); if(inputOptions.validate){ - if(inputOptions.inputfile) //check the input file exists + if(inputOptions.inputfile) { const lines = fs.readFileSync(inputOptions.inputfile).toString().split(/\r?\n/); var progress = tsprogress.create({total: lines.length}); From b00fd353994e0ff04d70d7f10b2ba35f2fce459d Mon Sep 17 00:00:00 2001 From: brclarkdev <31588123+brclarkdev@users.noreply.github.com> Date: Thu, 29 Aug 2024 18:52:51 +0000 Subject: [PATCH 06/14] slight schema clean up --- .../examples/aicar/SDVCarActionSchema.ts | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/typescript/examples/aicar/SDVCarActionSchema.ts b/typescript/examples/aicar/SDVCarActionSchema.ts index fcdf442d..cb304b4b 100644 --- a/typescript/examples/aicar/SDVCarActionSchema.ts +++ b/typescript/examples/aicar/SDVCarActionSchema.ts @@ -1,30 +1,11 @@ // The following types define the structure of an object of type CarActions that represents a list of actions you can do on a car. - - -// export type CarActions = { -// actions: Action[]; -// }; export interface CarActions { actions: (GetTempurature | SetTemperature | GetDoorLockState | SetDoorLockState | GetLightState | SetLightState | SetDoorOpenState | GetTirePressure | GetDoorOpenState | SetTirePressure | UnknownAction)[]; } -// export interface Action -// | GetTempurature //use this to get the temperature of the car -// | SetTemperature //use this to set the temperature of the car -// | GetDoorLockState //use this to see if the doors or locked or unlocked -// | SetDoorLockState //use this to lock or unlock the doors -// | GetLightState //use this to see if the lights are on or off -// | SetLightState //use this to turn the lights off and on -// | SetDoorOpenState //use this to open or close the vehicle doors -// | GetTirePressure //use this to get the pressure of the vehicle tires -// | GetDoorOpenState //use this to see if the vehicle doors are open or closed -// | SetDoorOpenState //use this to open or close the vehicle doors -// | SetTirePressure //use this to set the pressure of the vehicle tires -// | UnknownAction; //use this when you don't know what the user is asking for - //use this when you don't know what the user is asking for export interface UnknownAction { type: 'unknown'; From 7a2e98bba8269e97d9a4e503f675fb38eb981795 Mon Sep 17 00:00:00 2001 From: brclarkdev <31588123+brclarkdev@users.noreply.github.com> Date: Thu, 29 Aug 2024 18:56:35 +0000 Subject: [PATCH 07/14] added comments --- typescript/examples/aicar/utils.ts | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/typescript/examples/aicar/utils.ts b/typescript/examples/aicar/utils.ts index b6171714..b3d572d2 100644 --- a/typescript/examples/aicar/utils.ts +++ b/typescript/examples/aicar/utils.ts @@ -95,22 +95,19 @@ export interface ModelConfig { } export async function validateCarResponse(request, translator) { - const transport = createGrpcTransport({baseUrl: "http://localhost:55556",httpVersion: "2"}); + const transport = createGrpcTransport({baseUrl: "http://localhost:55556",httpVersion: "2"}); //assumes local databroker on commonly used port const vl = createPromiseClient(VAL, transport); let requestTracking: requestTracking = {request: request}; - //translator.stripNulls = true; translator.attemptRepair = true; requestTracking.prompt = translator.createRequestPrompt(request); const response = await translator.translate(request); if (!response.success) { - //console.log('Failed translation: '+JSON.stringify(response)); requestTracking.status = "Failed"; requestTracking.errors = [response.message]; return requestTracking; } const car = response.data; for (const item of car.actions) { - //console.log(JSON.stringify('Running Command: ' + JSON.stringify(item.command))); if(item.type.includes('Set')) { requestTracking.generatedRequest = JSON.stringify(item.command); @@ -128,9 +125,7 @@ export async function validateCarResponse(request, translator) { else { requestTracking.unknownRequest = JSON.stringify(item.command); - //console.log('Unknown Command: '+ JSON.stringify(item.command)); } } - //requestArray.push(requestTracking); return requestTracking; } From a0370fa40187203c7881a58a94bd4b6a0334fd63 Mon Sep 17 00:00:00 2001 From: brclarkdev <31588123+brclarkdev@users.noreply.github.com> Date: Thu, 29 Aug 2024 21:25:02 +0000 Subject: [PATCH 08/14] updated build config --- .devcontainer/devcontainer.json | 3 +- package-lock.json | 6 + .../examples/aicar/gen/kuksa/val/v1/val_pb.js | 470 --------- typescript/examples/aicar/package.json | 26 +- .../aicar/{ => src}/SDVCarActionSchema.ts | 0 .../aicar/src/gen/kuksa/val/v1/types_pb.d.ts | 970 ++++++++++++++++++ .../{ => src}/gen/kuksa/val/v1/types_pb.js | 1 + .../{ => src}/gen/kuksa/val/v1/types_pb.ts | 0 .../src/gen/kuksa/val/v1/val_connect.d.ts | 69 ++ .../{ => src}/gen/kuksa/val/v1/val_connect.js | 1 + .../{ => src}/gen/kuksa/val/v1/val_connect.ts | 0 .../aicar/src/gen/kuksa/val/v1/val_pb.d.ts | 282 +++++ .../aicar/src/gen/kuksa/val/v1/val_pb.js | 471 +++++++++ .../{ => src}/gen/kuksa/val/v1/val_pb.ts | 0 typescript/examples/aicar/{ => src}/input.txt | 0 typescript/examples/aicar/{ => src}/main.ts | 4 +- typescript/examples/aicar/src/tsconfig.json | 23 + typescript/examples/aicar/{ => src}/utils.ts | 8 +- .../examples/sentiment/src/tsconfig.json | 1 + typescript/package-lock.json | 520 +++++++++- 20 files changed, 2365 insertions(+), 490 deletions(-) create mode 100644 package-lock.json delete mode 100644 typescript/examples/aicar/gen/kuksa/val/v1/val_pb.js rename typescript/examples/aicar/{ => src}/SDVCarActionSchema.ts (100%) create mode 100644 typescript/examples/aicar/src/gen/kuksa/val/v1/types_pb.d.ts rename typescript/examples/aicar/{ => src}/gen/kuksa/val/v1/types_pb.js (50%) rename typescript/examples/aicar/{ => src}/gen/kuksa/val/v1/types_pb.ts (100%) create mode 100644 typescript/examples/aicar/src/gen/kuksa/val/v1/val_connect.d.ts rename typescript/examples/aicar/{ => src}/gen/kuksa/val/v1/val_connect.js (66%) rename typescript/examples/aicar/{ => src}/gen/kuksa/val/v1/val_connect.ts (100%) create mode 100644 typescript/examples/aicar/src/gen/kuksa/val/v1/val_pb.d.ts create mode 100644 typescript/examples/aicar/src/gen/kuksa/val/v1/val_pb.js rename typescript/examples/aicar/{ => src}/gen/kuksa/val/v1/val_pb.ts (100%) rename typescript/examples/aicar/{ => src}/input.txt (100%) rename typescript/examples/aicar/{ => src}/main.ts (96%) create mode 100644 typescript/examples/aicar/src/tsconfig.json rename typescript/examples/aicar/{ => src}/utils.ts (95%) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index defa87d4..0043c66c 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -14,7 +14,8 @@ }, "ghcr.io/devcontainers-contrib/features/hatch:2": { "version": "latest" - } + }, + "ghcr.io/devcontainers/features/docker-outside-of-docker": {} }, // Use 'forwardPorts' to make a list of ports inside the container available locally. diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..17ee6355 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,6 @@ +{ + "name": "TypeChat", + "lockfileVersion": 3, + "requires": true, + "packages": {} +} diff --git a/typescript/examples/aicar/gen/kuksa/val/v1/val_pb.js b/typescript/examples/aicar/gen/kuksa/val/v1/val_pb.js deleted file mode 100644 index 66c9a1b2..00000000 --- a/typescript/examples/aicar/gen/kuksa/val/v1/val_pb.js +++ /dev/null @@ -1,470 +0,0 @@ -"use strict"; -//******************************************************************************* -// Copyright (c) 2022 Contributors to the Eclipse Foundation -// -// See the NOTICE file(s) distributed with this work for additional -// information regarding copyright ownership. -// -// This program and the accompanying materials are made available under the -// terms of the Apache License 2.0 which is available at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// SPDX-License-Identifier: Apache-2.0 -//****************************************************************************** -Object.defineProperty(exports, "__esModule", { value: true }); -exports.GetServerInfoResponse = exports.GetServerInfoRequest = exports.SubscribeResponse = exports.SubscribeRequest = exports.SubscribeEntry = exports.StreamedUpdateResponse = exports.StreamedUpdateRequest = exports.SetResponse = exports.SetRequest = exports.EntryUpdate = exports.GetResponse = exports.GetRequest = exports.EntryRequest = void 0; -const protobuf_1 = require("@bufbuild/protobuf"); -const types_pb_js_1 = require("./types_pb.js"); -/** - * Define which data we want - * - * @generated from message kuksa.val.v1.EntryRequest - */ -class EntryRequest extends protobuf_1.Message { - constructor(data) { - super(); - /** - * @generated from field: string path = 1; - */ - this.path = ""; - /** - * @generated from field: kuksa.val.v1.View view = 2; - */ - this.view = types_pb_js_1.View.UNSPECIFIED; - /** - * @generated from field: repeated kuksa.val.v1.Field fields = 3; - */ - this.fields = []; - protobuf_1.proto3.util.initPartial(data, this); - } - static fromBinary(bytes, options) { - return new EntryRequest().fromBinary(bytes, options); - } - static fromJson(jsonValue, options) { - return new EntryRequest().fromJson(jsonValue, options); - } - static fromJsonString(jsonString, options) { - return new EntryRequest().fromJsonString(jsonString, options); - } - static equals(a, b) { - return protobuf_1.proto3.util.equals(EntryRequest, a, b); - } -} -exports.EntryRequest = EntryRequest; -EntryRequest.runtime = protobuf_1.proto3; -EntryRequest.typeName = "kuksa.val.v1.EntryRequest"; -EntryRequest.fields = protobuf_1.proto3.util.newFieldList(() => [ - { no: 1, name: "path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "view", kind: "enum", T: protobuf_1.proto3.getEnumType(types_pb_js_1.View) }, - { no: 3, name: "fields", kind: "enum", T: protobuf_1.proto3.getEnumType(types_pb_js_1.Field), repeated: true }, -]); -/** - * Request a set of entries. - * - * @generated from message kuksa.val.v1.GetRequest - */ -class GetRequest extends protobuf_1.Message { - constructor(data) { - super(); - /** - * @generated from field: repeated kuksa.val.v1.EntryRequest entries = 1; - */ - this.entries = []; - protobuf_1.proto3.util.initPartial(data, this); - } - static fromBinary(bytes, options) { - return new GetRequest().fromBinary(bytes, options); - } - static fromJson(jsonValue, options) { - return new GetRequest().fromJson(jsonValue, options); - } - static fromJsonString(jsonString, options) { - return new GetRequest().fromJsonString(jsonString, options); - } - static equals(a, b) { - return protobuf_1.proto3.util.equals(GetRequest, a, b); - } -} -exports.GetRequest = GetRequest; -GetRequest.runtime = protobuf_1.proto3; -GetRequest.typeName = "kuksa.val.v1.GetRequest"; -GetRequest.fields = protobuf_1.proto3.util.newFieldList(() => [ - { no: 1, name: "entries", kind: "message", T: EntryRequest, repeated: true }, -]); -/** - * Global errors are specified in `error`. - * Errors for individual entries are specified in `errors`. - * - * @generated from message kuksa.val.v1.GetResponse - */ -class GetResponse extends protobuf_1.Message { - constructor(data) { - super(); - /** - * @generated from field: repeated kuksa.val.v1.DataEntry entries = 1; - */ - this.entries = []; - /** - * @generated from field: repeated kuksa.val.v1.DataEntryError errors = 2; - */ - this.errors = []; - protobuf_1.proto3.util.initPartial(data, this); - } - static fromBinary(bytes, options) { - return new GetResponse().fromBinary(bytes, options); - } - static fromJson(jsonValue, options) { - return new GetResponse().fromJson(jsonValue, options); - } - static fromJsonString(jsonString, options) { - return new GetResponse().fromJsonString(jsonString, options); - } - static equals(a, b) { - return protobuf_1.proto3.util.equals(GetResponse, a, b); - } -} -exports.GetResponse = GetResponse; -GetResponse.runtime = protobuf_1.proto3; -GetResponse.typeName = "kuksa.val.v1.GetResponse"; -GetResponse.fields = protobuf_1.proto3.util.newFieldList(() => [ - { no: 1, name: "entries", kind: "message", T: types_pb_js_1.DataEntry, repeated: true }, - { no: 2, name: "errors", kind: "message", T: types_pb_js_1.DataEntryError, repeated: true }, - { no: 3, name: "error", kind: "message", T: types_pb_js_1.Error }, -]); -/** - * Define the data we want to set - * - * @generated from message kuksa.val.v1.EntryUpdate - */ -class EntryUpdate extends protobuf_1.Message { - constructor(data) { - super(); - /** - * @generated from field: repeated kuksa.val.v1.Field fields = 2; - */ - this.fields = []; - protobuf_1.proto3.util.initPartial(data, this); - } - static fromBinary(bytes, options) { - return new EntryUpdate().fromBinary(bytes, options); - } - static fromJson(jsonValue, options) { - return new EntryUpdate().fromJson(jsonValue, options); - } - static fromJsonString(jsonString, options) { - return new EntryUpdate().fromJsonString(jsonString, options); - } - static equals(a, b) { - return protobuf_1.proto3.util.equals(EntryUpdate, a, b); - } -} -exports.EntryUpdate = EntryUpdate; -EntryUpdate.runtime = protobuf_1.proto3; -EntryUpdate.typeName = "kuksa.val.v1.EntryUpdate"; -EntryUpdate.fields = protobuf_1.proto3.util.newFieldList(() => [ - { no: 1, name: "entry", kind: "message", T: types_pb_js_1.DataEntry }, - { no: 2, name: "fields", kind: "enum", T: protobuf_1.proto3.getEnumType(types_pb_js_1.Field), repeated: true }, -]); -/** - * A list of entries to be updated - * - * @generated from message kuksa.val.v1.SetRequest - */ -class SetRequest extends protobuf_1.Message { - constructor(data) { - super(); - /** - * @generated from field: repeated kuksa.val.v1.EntryUpdate updates = 1; - */ - this.updates = []; - protobuf_1.proto3.util.initPartial(data, this); - } - static fromBinary(bytes, options) { - return new SetRequest().fromBinary(bytes, options); - } - static fromJson(jsonValue, options) { - return new SetRequest().fromJson(jsonValue, options); - } - static fromJsonString(jsonString, options) { - return new SetRequest().fromJsonString(jsonString, options); - } - static equals(a, b) { - return protobuf_1.proto3.util.equals(SetRequest, a, b); - } -} -exports.SetRequest = SetRequest; -SetRequest.runtime = protobuf_1.proto3; -SetRequest.typeName = "kuksa.val.v1.SetRequest"; -SetRequest.fields = protobuf_1.proto3.util.newFieldList(() => [ - { no: 1, name: "updates", kind: "message", T: EntryUpdate, repeated: true }, -]); -/** - * Global errors are specified in `error`. - * Errors for individual entries are specified in `errors`. - * - * @generated from message kuksa.val.v1.SetResponse - */ -class SetResponse extends protobuf_1.Message { - constructor(data) { - super(); - /** - * @generated from field: repeated kuksa.val.v1.DataEntryError errors = 2; - */ - this.errors = []; - protobuf_1.proto3.util.initPartial(data, this); - } - static fromBinary(bytes, options) { - return new SetResponse().fromBinary(bytes, options); - } - static fromJson(jsonValue, options) { - return new SetResponse().fromJson(jsonValue, options); - } - static fromJsonString(jsonString, options) { - return new SetResponse().fromJsonString(jsonString, options); - } - static equals(a, b) { - return protobuf_1.proto3.util.equals(SetResponse, a, b); - } -} -exports.SetResponse = SetResponse; -SetResponse.runtime = protobuf_1.proto3; -SetResponse.typeName = "kuksa.val.v1.SetResponse"; -SetResponse.fields = protobuf_1.proto3.util.newFieldList(() => [ - { no: 1, name: "error", kind: "message", T: types_pb_js_1.Error }, - { no: 2, name: "errors", kind: "message", T: types_pb_js_1.DataEntryError, repeated: true }, -]); -/** - * @generated from message kuksa.val.v1.StreamedUpdateRequest - */ -class StreamedUpdateRequest extends protobuf_1.Message { - constructor(data) { - super(); - /** - * @generated from field: repeated kuksa.val.v1.EntryUpdate updates = 1; - */ - this.updates = []; - protobuf_1.proto3.util.initPartial(data, this); - } - static fromBinary(bytes, options) { - return new StreamedUpdateRequest().fromBinary(bytes, options); - } - static fromJson(jsonValue, options) { - return new StreamedUpdateRequest().fromJson(jsonValue, options); - } - static fromJsonString(jsonString, options) { - return new StreamedUpdateRequest().fromJsonString(jsonString, options); - } - static equals(a, b) { - return protobuf_1.proto3.util.equals(StreamedUpdateRequest, a, b); - } -} -exports.StreamedUpdateRequest = StreamedUpdateRequest; -StreamedUpdateRequest.runtime = protobuf_1.proto3; -StreamedUpdateRequest.typeName = "kuksa.val.v1.StreamedUpdateRequest"; -StreamedUpdateRequest.fields = protobuf_1.proto3.util.newFieldList(() => [ - { no: 1, name: "updates", kind: "message", T: EntryUpdate, repeated: true }, -]); -/** - * @generated from message kuksa.val.v1.StreamedUpdateResponse - */ -class StreamedUpdateResponse extends protobuf_1.Message { - constructor(data) { - super(); - /** - * @generated from field: repeated kuksa.val.v1.DataEntryError errors = 2; - */ - this.errors = []; - protobuf_1.proto3.util.initPartial(data, this); - } - static fromBinary(bytes, options) { - return new StreamedUpdateResponse().fromBinary(bytes, options); - } - static fromJson(jsonValue, options) { - return new StreamedUpdateResponse().fromJson(jsonValue, options); - } - static fromJsonString(jsonString, options) { - return new StreamedUpdateResponse().fromJsonString(jsonString, options); - } - static equals(a, b) { - return protobuf_1.proto3.util.equals(StreamedUpdateResponse, a, b); - } -} -exports.StreamedUpdateResponse = StreamedUpdateResponse; -StreamedUpdateResponse.runtime = protobuf_1.proto3; -StreamedUpdateResponse.typeName = "kuksa.val.v1.StreamedUpdateResponse"; -StreamedUpdateResponse.fields = protobuf_1.proto3.util.newFieldList(() => [ - { no: 1, name: "error", kind: "message", T: types_pb_js_1.Error }, - { no: 2, name: "errors", kind: "message", T: types_pb_js_1.DataEntryError, repeated: true }, -]); -/** - * Define what to subscribe to - * - * @generated from message kuksa.val.v1.SubscribeEntry - */ -class SubscribeEntry extends protobuf_1.Message { - constructor(data) { - super(); - /** - * @generated from field: string path = 1; - */ - this.path = ""; - /** - * @generated from field: kuksa.val.v1.View view = 2; - */ - this.view = types_pb_js_1.View.UNSPECIFIED; - /** - * @generated from field: repeated kuksa.val.v1.Field fields = 3; - */ - this.fields = []; - protobuf_1.proto3.util.initPartial(data, this); - } - static fromBinary(bytes, options) { - return new SubscribeEntry().fromBinary(bytes, options); - } - static fromJson(jsonValue, options) { - return new SubscribeEntry().fromJson(jsonValue, options); - } - static fromJsonString(jsonString, options) { - return new SubscribeEntry().fromJsonString(jsonString, options); - } - static equals(a, b) { - return protobuf_1.proto3.util.equals(SubscribeEntry, a, b); - } -} -exports.SubscribeEntry = SubscribeEntry; -SubscribeEntry.runtime = protobuf_1.proto3; -SubscribeEntry.typeName = "kuksa.val.v1.SubscribeEntry"; -SubscribeEntry.fields = protobuf_1.proto3.util.newFieldList(() => [ - { no: 1, name: "path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "view", kind: "enum", T: protobuf_1.proto3.getEnumType(types_pb_js_1.View) }, - { no: 3, name: "fields", kind: "enum", T: protobuf_1.proto3.getEnumType(types_pb_js_1.Field), repeated: true }, -]); -/** - * Subscribe to changes in datapoints. - * - * @generated from message kuksa.val.v1.SubscribeRequest - */ -class SubscribeRequest extends protobuf_1.Message { - constructor(data) { - super(); - /** - * @generated from field: repeated kuksa.val.v1.SubscribeEntry entries = 1; - */ - this.entries = []; - protobuf_1.proto3.util.initPartial(data, this); - } - static fromBinary(bytes, options) { - return new SubscribeRequest().fromBinary(bytes, options); - } - static fromJson(jsonValue, options) { - return new SubscribeRequest().fromJson(jsonValue, options); - } - static fromJsonString(jsonString, options) { - return new SubscribeRequest().fromJsonString(jsonString, options); - } - static equals(a, b) { - return protobuf_1.proto3.util.equals(SubscribeRequest, a, b); - } -} -exports.SubscribeRequest = SubscribeRequest; -SubscribeRequest.runtime = protobuf_1.proto3; -SubscribeRequest.typeName = "kuksa.val.v1.SubscribeRequest"; -SubscribeRequest.fields = protobuf_1.proto3.util.newFieldList(() => [ - { no: 1, name: "entries", kind: "message", T: SubscribeEntry, repeated: true }, -]); -/** - * A subscription response - * - * @generated from message kuksa.val.v1.SubscribeResponse - */ -class SubscribeResponse extends protobuf_1.Message { - constructor(data) { - super(); - /** - * @generated from field: repeated kuksa.val.v1.EntryUpdate updates = 1; - */ - this.updates = []; - protobuf_1.proto3.util.initPartial(data, this); - } - static fromBinary(bytes, options) { - return new SubscribeResponse().fromBinary(bytes, options); - } - static fromJson(jsonValue, options) { - return new SubscribeResponse().fromJson(jsonValue, options); - } - static fromJsonString(jsonString, options) { - return new SubscribeResponse().fromJsonString(jsonString, options); - } - static equals(a, b) { - return protobuf_1.proto3.util.equals(SubscribeResponse, a, b); - } -} -exports.SubscribeResponse = SubscribeResponse; -SubscribeResponse.runtime = protobuf_1.proto3; -SubscribeResponse.typeName = "kuksa.val.v1.SubscribeResponse"; -SubscribeResponse.fields = protobuf_1.proto3.util.newFieldList(() => [ - { no: 1, name: "updates", kind: "message", T: EntryUpdate, repeated: true }, -]); -/** - * Nothing yet - * - * @generated from message kuksa.val.v1.GetServerInfoRequest - */ -class GetServerInfoRequest extends protobuf_1.Message { - constructor(data) { - super(); - protobuf_1.proto3.util.initPartial(data, this); - } - static fromBinary(bytes, options) { - return new GetServerInfoRequest().fromBinary(bytes, options); - } - static fromJson(jsonValue, options) { - return new GetServerInfoRequest().fromJson(jsonValue, options); - } - static fromJsonString(jsonString, options) { - return new GetServerInfoRequest().fromJsonString(jsonString, options); - } - static equals(a, b) { - return protobuf_1.proto3.util.equals(GetServerInfoRequest, a, b); - } -} -exports.GetServerInfoRequest = GetServerInfoRequest; -GetServerInfoRequest.runtime = protobuf_1.proto3; -GetServerInfoRequest.typeName = "kuksa.val.v1.GetServerInfoRequest"; -GetServerInfoRequest.fields = protobuf_1.proto3.util.newFieldList(() => []); -/** - * @generated from message kuksa.val.v1.GetServerInfoResponse - */ -class GetServerInfoResponse extends protobuf_1.Message { - constructor(data) { - super(); - /** - * @generated from field: string name = 1; - */ - this.name = ""; - /** - * @generated from field: string version = 2; - */ - this.version = ""; - protobuf_1.proto3.util.initPartial(data, this); - } - static fromBinary(bytes, options) { - return new GetServerInfoResponse().fromBinary(bytes, options); - } - static fromJson(jsonValue, options) { - return new GetServerInfoResponse().fromJson(jsonValue, options); - } - static fromJsonString(jsonString, options) { - return new GetServerInfoResponse().fromJsonString(jsonString, options); - } - static equals(a, b) { - return protobuf_1.proto3.util.equals(GetServerInfoResponse, a, b); - } -} -exports.GetServerInfoResponse = GetServerInfoResponse; -GetServerInfoResponse.runtime = protobuf_1.proto3; -GetServerInfoResponse.typeName = "kuksa.val.v1.GetServerInfoResponse"; -GetServerInfoResponse.fields = protobuf_1.proto3.util.newFieldList(() => [ - { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "version", kind: "scalar", T: 9 /* ScalarType.STRING */ }, -]); diff --git a/typescript/examples/aicar/package.json b/typescript/examples/aicar/package.json index 0676075f..84c38f6a 100644 --- a/typescript/examples/aicar/package.json +++ b/typescript/examples/aicar/package.json @@ -3,14 +3,36 @@ "version": "0.0.1", "main": "dist/main.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "build": "tsc -p src", + "postbuild": "copyfiles -u 1 src/**/*Schema.ts src/**/*.txt src/**/*.html dist" + }, + "exports": { + "./*": [ + "./dist/*.js" + ] }, "author": "", "license": "MIT", "description": "", "dependencies": { + "@bufbuild/buf": "^1.39.0", + "@bufbuild/protobuf": "^1.10.0", + "@bufbuild/protoc-gen-es": "^1.10.0", + "@connectrpc/connect": "^1.4.0", "@connectrpc/connect-node": "^1.4.0", + "@connectrpc/protoc-gen-connect-es": "^1.4.0", + "assert": "^2.1.0", "commander": "^12.1.0", - "ts-progress": "^0.1.9" + "dotenv": "^16.4.5", + "find-config": "^1.0.0", + "ts-progress": "^0.1.9", + "typescript": "^5.5.4", + "zod": "^3.23.8" + }, + "devDependencies": { + "@types/assert": "^1.5.10", + "@types/find-config": "^1.0.4", + "@types/node": "^22.5.1", + "copyfiles": "^2.4.1" } } diff --git a/typescript/examples/aicar/SDVCarActionSchema.ts b/typescript/examples/aicar/src/SDVCarActionSchema.ts similarity index 100% rename from typescript/examples/aicar/SDVCarActionSchema.ts rename to typescript/examples/aicar/src/SDVCarActionSchema.ts diff --git a/typescript/examples/aicar/src/gen/kuksa/val/v1/types_pb.d.ts b/typescript/examples/aicar/src/gen/kuksa/val/v1/types_pb.d.ts new file mode 100644 index 00000000..f95de1f1 --- /dev/null +++ b/typescript/examples/aicar/src/gen/kuksa/val/v1/types_pb.d.ts @@ -0,0 +1,970 @@ +import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; +import { Message, proto3, Timestamp } from "@bufbuild/protobuf"; +/** + * VSS Data type of a signal + * + * Protobuf doesn't support int8, int16, uint8 or uint16. + * These are mapped to int32 and uint32 respectively. + * + * + * @generated from enum kuksa.val.v1.DataType + */ +export declare enum DataType { + /** + * @generated from enum value: DATA_TYPE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + /** + * @generated from enum value: DATA_TYPE_STRING = 1; + */ + STRING = 1, + /** + * @generated from enum value: DATA_TYPE_BOOLEAN = 2; + */ + BOOLEAN = 2, + /** + * @generated from enum value: DATA_TYPE_INT8 = 3; + */ + INT8 = 3, + /** + * @generated from enum value: DATA_TYPE_INT16 = 4; + */ + INT16 = 4, + /** + * @generated from enum value: DATA_TYPE_INT32 = 5; + */ + INT32 = 5, + /** + * @generated from enum value: DATA_TYPE_INT64 = 6; + */ + INT64 = 6, + /** + * @generated from enum value: DATA_TYPE_UINT8 = 7; + */ + UINT8 = 7, + /** + * @generated from enum value: DATA_TYPE_UINT16 = 8; + */ + UINT16 = 8, + /** + * @generated from enum value: DATA_TYPE_UINT32 = 9; + */ + UINT32 = 9, + /** + * @generated from enum value: DATA_TYPE_UINT64 = 10; + */ + UINT64 = 10, + /** + * @generated from enum value: DATA_TYPE_FLOAT = 11; + */ + FLOAT = 11, + /** + * @generated from enum value: DATA_TYPE_DOUBLE = 12; + */ + DOUBLE = 12, + /** + * @generated from enum value: DATA_TYPE_TIMESTAMP = 13; + */ + TIMESTAMP = 13, + /** + * @generated from enum value: DATA_TYPE_STRING_ARRAY = 20; + */ + STRING_ARRAY = 20, + /** + * @generated from enum value: DATA_TYPE_BOOLEAN_ARRAY = 21; + */ + BOOLEAN_ARRAY = 21, + /** + * @generated from enum value: DATA_TYPE_INT8_ARRAY = 22; + */ + INT8_ARRAY = 22, + /** + * @generated from enum value: DATA_TYPE_INT16_ARRAY = 23; + */ + INT16_ARRAY = 23, + /** + * @generated from enum value: DATA_TYPE_INT32_ARRAY = 24; + */ + INT32_ARRAY = 24, + /** + * @generated from enum value: DATA_TYPE_INT64_ARRAY = 25; + */ + INT64_ARRAY = 25, + /** + * @generated from enum value: DATA_TYPE_UINT8_ARRAY = 26; + */ + UINT8_ARRAY = 26, + /** + * @generated from enum value: DATA_TYPE_UINT16_ARRAY = 27; + */ + UINT16_ARRAY = 27, + /** + * @generated from enum value: DATA_TYPE_UINT32_ARRAY = 28; + */ + UINT32_ARRAY = 28, + /** + * @generated from enum value: DATA_TYPE_UINT64_ARRAY = 29; + */ + UINT64_ARRAY = 29, + /** + * @generated from enum value: DATA_TYPE_FLOAT_ARRAY = 30; + */ + FLOAT_ARRAY = 30, + /** + * @generated from enum value: DATA_TYPE_DOUBLE_ARRAY = 31; + */ + DOUBLE_ARRAY = 31, + /** + * @generated from enum value: DATA_TYPE_TIMESTAMP_ARRAY = 32; + */ + TIMESTAMP_ARRAY = 32 +} +/** + * Entry type + * + * @generated from enum kuksa.val.v1.EntryType + */ +export declare enum EntryType { + /** + * @generated from enum value: ENTRY_TYPE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + /** + * @generated from enum value: ENTRY_TYPE_ATTRIBUTE = 1; + */ + ATTRIBUTE = 1, + /** + * @generated from enum value: ENTRY_TYPE_SENSOR = 2; + */ + SENSOR = 2, + /** + * @generated from enum value: ENTRY_TYPE_ACTUATOR = 3; + */ + ACTUATOR = 3 +} +/** + * A `View` specifies a set of fields which should + * be populated in a `DataEntry` (in a response message) + * + * @generated from enum kuksa.val.v1.View + */ +export declare enum View { + /** + * Unspecified. Equivalent to VIEW_CURRENT_VALUE unless `fields` are explicitly set. + * + * @generated from enum value: VIEW_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + /** + * Populate DataEntry with value. + * + * @generated from enum value: VIEW_CURRENT_VALUE = 1; + */ + CURRENT_VALUE = 1, + /** + * Populate DataEntry with actuator target. + * + * @generated from enum value: VIEW_TARGET_VALUE = 2; + */ + TARGET_VALUE = 2, + /** + * Populate DataEntry with metadata. + * + * @generated from enum value: VIEW_METADATA = 3; + */ + METADATA = 3, + /** + * Populate DataEntry only with requested fields. + * + * @generated from enum value: VIEW_FIELDS = 10; + */ + FIELDS = 10, + /** + * Populate DataEntry with everything. + * + * @generated from enum value: VIEW_ALL = 20; + */ + ALL = 20 +} +/** + * A `Field` corresponds to a specific field of a `DataEntry`. + * + * It can be used to: + * * populate only specific fields of a `DataEntry` response. + * * specify which fields of a `DataEntry` should be set as + * part of a `Set` request. + * * subscribe to only specific fields of a data entry. + * * convey which fields of an updated `DataEntry` have changed. + * + * @generated from enum kuksa.val.v1.Field + */ +export declare enum Field { + /** + * "*" i.e. everything + * + * @generated from enum value: FIELD_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + /** + * path + * + * @generated from enum value: FIELD_PATH = 1; + */ + PATH = 1, + /** + * value + * + * @generated from enum value: FIELD_VALUE = 2; + */ + VALUE = 2, + /** + * actuator_target + * + * @generated from enum value: FIELD_ACTUATOR_TARGET = 3; + */ + ACTUATOR_TARGET = 3, + /** + * metadata.* + * + * @generated from enum value: FIELD_METADATA = 10; + */ + METADATA = 10, + /** + * metadata.data_type + * + * @generated from enum value: FIELD_METADATA_DATA_TYPE = 11; + */ + METADATA_DATA_TYPE = 11, + /** + * metadata.description + * + * @generated from enum value: FIELD_METADATA_DESCRIPTION = 12; + */ + METADATA_DESCRIPTION = 12, + /** + * metadata.entry_type + * + * @generated from enum value: FIELD_METADATA_ENTRY_TYPE = 13; + */ + METADATA_ENTRY_TYPE = 13, + /** + * metadata.comment + * + * @generated from enum value: FIELD_METADATA_COMMENT = 14; + */ + METADATA_COMMENT = 14, + /** + * metadata.deprecation + * + * @generated from enum value: FIELD_METADATA_DEPRECATION = 15; + */ + METADATA_DEPRECATION = 15, + /** + * metadata.unit + * + * @generated from enum value: FIELD_METADATA_UNIT = 16; + */ + METADATA_UNIT = 16, + /** + * metadata.value_restriction.* + * + * @generated from enum value: FIELD_METADATA_VALUE_RESTRICTION = 17; + */ + METADATA_VALUE_RESTRICTION = 17, + /** + * metadata.actuator.* + * + * @generated from enum value: FIELD_METADATA_ACTUATOR = 20; + */ + METADATA_ACTUATOR = 20, + /** + * metadata.sensor.* + * + * @generated from enum value: FIELD_METADATA_SENSOR = 30; + */ + METADATA_SENSOR = 30, + /** + * metadata.attribute.* + * + * @generated from enum value: FIELD_METADATA_ATTRIBUTE = 40; + */ + METADATA_ATTRIBUTE = 40 +} +/** + * Describes a VSS entry + * When requesting an entry, the amount of information returned can + * be controlled by specifying either a `View` or a set of `Field`s. + * + * @generated from message kuksa.val.v1.DataEntry + */ +export declare class DataEntry extends Message { + /** + * Defines the full VSS path of the entry. + * + * [field: FIELD_PATH] + * + * @generated from field: string path = 1; + */ + path: string; + /** + * The value (datapoint) + * + * [field: FIELD_VALUE] + * + * @generated from field: kuksa.val.v1.Datapoint value = 2; + */ + value?: Datapoint; + /** + * Actuator target (only used if the entry is an actuator) + * + * [field: FIELD_ACTUATOR_TARGET] + * + * @generated from field: kuksa.val.v1.Datapoint actuator_target = 3; + */ + actuatorTarget?: Datapoint; + /** + * Metadata for this entry + * + * [field: FIELD_METADATA] + * + * @generated from field: kuksa.val.v1.Metadata metadata = 10; + */ + metadata?: Metadata; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.DataEntry"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): DataEntry; + static fromJson(jsonValue: JsonValue, options?: Partial): DataEntry; + static fromJsonString(jsonString: string, options?: Partial): DataEntry; + static equals(a: DataEntry | PlainMessage | undefined, b: DataEntry | PlainMessage | undefined): boolean; +} +/** + * @generated from message kuksa.val.v1.Datapoint + */ +export declare class Datapoint extends Message { + /** + * @generated from field: google.protobuf.Timestamp timestamp = 1; + */ + timestamp?: Timestamp; + /** + * @generated from oneof kuksa.val.v1.Datapoint.value + */ + value: { + /** + * @generated from field: string string = 11; + */ + value: string; + case: "string"; + } | { + /** + * @generated from field: bool bool = 12; + */ + value: boolean; + case: "bool"; + } | { + /** + * @generated from field: sint32 int32 = 13; + */ + value: number; + case: "int32"; + } | { + /** + * @generated from field: sint64 int64 = 14; + */ + value: bigint; + case: "int64"; + } | { + /** + * @generated from field: uint32 uint32 = 15; + */ + value: number; + case: "uint32"; + } | { + /** + * @generated from field: uint64 uint64 = 16; + */ + value: bigint; + case: "uint64"; + } | { + /** + * @generated from field: float float = 17; + */ + value: number; + case: "float"; + } | { + /** + * @generated from field: double double = 18; + */ + value: number; + case: "double"; + } | { + /** + * @generated from field: kuksa.val.v1.StringArray string_array = 21; + */ + value: StringArray; + case: "stringArray"; + } | { + /** + * @generated from field: kuksa.val.v1.BoolArray bool_array = 22; + */ + value: BoolArray; + case: "boolArray"; + } | { + /** + * @generated from field: kuksa.val.v1.Int32Array int32_array = 23; + */ + value: Int32Array; + case: "int32Array"; + } | { + /** + * @generated from field: kuksa.val.v1.Int64Array int64_array = 24; + */ + value: Int64Array; + case: "int64Array"; + } | { + /** + * @generated from field: kuksa.val.v1.Uint32Array uint32_array = 25; + */ + value: Uint32Array; + case: "uint32Array"; + } | { + /** + * @generated from field: kuksa.val.v1.Uint64Array uint64_array = 26; + */ + value: Uint64Array; + case: "uint64Array"; + } | { + /** + * @generated from field: kuksa.val.v1.FloatArray float_array = 27; + */ + value: FloatArray; + case: "floatArray"; + } | { + /** + * @generated from field: kuksa.val.v1.DoubleArray double_array = 28; + */ + value: DoubleArray; + case: "doubleArray"; + } | { + case: undefined; + value?: undefined; + }; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.Datapoint"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): Datapoint; + static fromJson(jsonValue: JsonValue, options?: Partial): Datapoint; + static fromJsonString(jsonString: string, options?: Partial): Datapoint; + static equals(a: Datapoint | PlainMessage | undefined, b: Datapoint | PlainMessage | undefined): boolean; +} +/** + * @generated from message kuksa.val.v1.Metadata + */ +export declare class Metadata extends Message { + /** + * Data type + * The VSS data type of the entry (i.e. the value, min, max etc). + * + * NOTE: protobuf doesn't have int8, int16, uint8 or uint16 which means + * that these values must be serialized as int32 and uint32 respectively. + * + * [field: FIELD_METADATA_DATA_TYPE] + * + * @generated from field: kuksa.val.v1.DataType data_type = 11; + */ + dataType: DataType; + /** + * Entry type + * + * [field: FIELD_METADATA_ENTRY_TYPE] + * + * @generated from field: kuksa.val.v1.EntryType entry_type = 12; + */ + entryType: EntryType; + /** + * Description + * Describes the meaning and content of the entry. + * + * [field: FIELD_METADATA_DESCRIPTION] + * + * @generated from field: optional string description = 13; + */ + description?: string; + /** + * Comment [optional] + * A comment can be used to provide additional informal information + * on a entry. + * + * [field: FIELD_METADATA_COMMENT] + * + * @generated from field: optional string comment = 14; + */ + comment?: string; + /** + * Deprecation [optional] + * Whether this entry is deprecated. Can contain recommendations of what + * to use instead. + * + * [field: FIELD_METADATA_DEPRECATION] + * + * @generated from field: optional string deprecation = 15; + */ + deprecation?: string; + /** + * Unit [optional] + * The unit of measurement + * + * [field: FIELD_METADATA_UNIT] + * + * @generated from field: optional string unit = 16; + */ + unit?: string; + /** + * Value restrictions [optional] + * Restrict which values are allowed. + * Only restrictions matching the DataType {datatype} above are valid. + * + * [field: FIELD_METADATA_VALUE_RESTRICTION] + * + * @generated from field: kuksa.val.v1.ValueRestriction value_restriction = 17; + */ + valueRestriction?: ValueRestriction; + /** + * Entry type specific metadata + * + * @generated from oneof kuksa.val.v1.Metadata.entry_specific + */ + entrySpecific: { + /** + * [field: FIELD_METADATA_ACTUATOR] + * + * @generated from field: kuksa.val.v1.Actuator actuator = 20; + */ + value: Actuator; + case: "actuator"; + } | { + /** + * [field: FIELD_METADATA_SENSOR] + * + * @generated from field: kuksa.val.v1.Sensor sensor = 30; + */ + value: Sensor; + case: "sensor"; + } | { + /** + * [field: FIELD_METADATA_ATTRIBUTE] + * + * @generated from field: kuksa.val.v1.Attribute attribute = 40; + */ + value: Attribute; + case: "attribute"; + } | { + case: undefined; + value?: undefined; + }; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.Metadata"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): Metadata; + static fromJson(jsonValue: JsonValue, options?: Partial): Metadata; + static fromJsonString(jsonString: string, options?: Partial): Metadata; + static equals(a: Metadata | PlainMessage | undefined, b: Metadata | PlainMessage | undefined): boolean; +} +/** + * ///////////////////// + * Actuator specific fields + * + * Nothing for now + * + * @generated from message kuksa.val.v1.Actuator + */ +export declare class Actuator extends Message { + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.Actuator"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): Actuator; + static fromJson(jsonValue: JsonValue, options?: Partial): Actuator; + static fromJsonString(jsonString: string, options?: Partial): Actuator; + static equals(a: Actuator | PlainMessage | undefined, b: Actuator | PlainMessage | undefined): boolean; +} +/** + * ////////////////////// + * Sensor specific + * + * Nothing for now + * + * @generated from message kuksa.val.v1.Sensor + */ +export declare class Sensor extends Message { + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.Sensor"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): Sensor; + static fromJson(jsonValue: JsonValue, options?: Partial): Sensor; + static fromJsonString(jsonString: string, options?: Partial): Sensor; + static equals(a: Sensor | PlainMessage | undefined, b: Sensor | PlainMessage | undefined): boolean; +} +/** + * ////////////////////// + * Attribute specific + * + * Nothing for now. + * + * @generated from message kuksa.val.v1.Attribute + */ +export declare class Attribute extends Message { + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.Attribute"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): Attribute; + static fromJson(jsonValue: JsonValue, options?: Partial): Attribute; + static fromJsonString(jsonString: string, options?: Partial): Attribute; + static equals(a: Attribute | PlainMessage | undefined, b: Attribute | PlainMessage | undefined): boolean; +} +/** + * Value restriction + * + * One ValueRestriction{type} for each type, since + * they don't make sense unless the types match + * + * + * @generated from message kuksa.val.v1.ValueRestriction + */ +export declare class ValueRestriction extends Message { + /** + * @generated from oneof kuksa.val.v1.ValueRestriction.type + */ + type: { + /** + * @generated from field: kuksa.val.v1.ValueRestrictionString string = 21; + */ + value: ValueRestrictionString; + case: "string"; + } | { + /** + * For signed VSS integers + * + * @generated from field: kuksa.val.v1.ValueRestrictionInt signed = 22; + */ + value: ValueRestrictionInt; + case: "signed"; + } | { + /** + * For unsigned VSS integers + * + * @generated from field: kuksa.val.v1.ValueRestrictionUint unsigned = 23; + */ + value: ValueRestrictionUint; + case: "unsigned"; + } | { + /** + * For floating point VSS values (float and double) + * + * @generated from field: kuksa.val.v1.ValueRestrictionFloat floating_point = 24; + */ + value: ValueRestrictionFloat; + case: "floatingPoint"; + } | { + case: undefined; + value?: undefined; + }; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.ValueRestriction"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): ValueRestriction; + static fromJson(jsonValue: JsonValue, options?: Partial): ValueRestriction; + static fromJsonString(jsonString: string, options?: Partial): ValueRestriction; + static equals(a: ValueRestriction | PlainMessage | undefined, b: ValueRestriction | PlainMessage | undefined): boolean; +} +/** + * @generated from message kuksa.val.v1.ValueRestrictionInt + */ +export declare class ValueRestrictionInt extends Message { + /** + * @generated from field: optional sint64 min = 1; + */ + min?: bigint; + /** + * @generated from field: optional sint64 max = 2; + */ + max?: bigint; + /** + * @generated from field: repeated sint64 allowed_values = 3; + */ + allowedValues: bigint[]; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.ValueRestrictionInt"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): ValueRestrictionInt; + static fromJson(jsonValue: JsonValue, options?: Partial): ValueRestrictionInt; + static fromJsonString(jsonString: string, options?: Partial): ValueRestrictionInt; + static equals(a: ValueRestrictionInt | PlainMessage | undefined, b: ValueRestrictionInt | PlainMessage | undefined): boolean; +} +/** + * @generated from message kuksa.val.v1.ValueRestrictionUint + */ +export declare class ValueRestrictionUint extends Message { + /** + * @generated from field: optional uint64 min = 1; + */ + min?: bigint; + /** + * @generated from field: optional uint64 max = 2; + */ + max?: bigint; + /** + * @generated from field: repeated uint64 allowed_values = 3; + */ + allowedValues: bigint[]; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.ValueRestrictionUint"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): ValueRestrictionUint; + static fromJson(jsonValue: JsonValue, options?: Partial): ValueRestrictionUint; + static fromJsonString(jsonString: string, options?: Partial): ValueRestrictionUint; + static equals(a: ValueRestrictionUint | PlainMessage | undefined, b: ValueRestrictionUint | PlainMessage | undefined): boolean; +} +/** + * @generated from message kuksa.val.v1.ValueRestrictionFloat + */ +export declare class ValueRestrictionFloat extends Message { + /** + * @generated from field: optional double min = 1; + */ + min?: number; + /** + * @generated from field: optional double max = 2; + */ + max?: number; + /** + * allowed for doubles/floats not recommended + * + * @generated from field: repeated double allowed_values = 3; + */ + allowedValues: number[]; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.ValueRestrictionFloat"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): ValueRestrictionFloat; + static fromJson(jsonValue: JsonValue, options?: Partial): ValueRestrictionFloat; + static fromJsonString(jsonString: string, options?: Partial): ValueRestrictionFloat; + static equals(a: ValueRestrictionFloat | PlainMessage | undefined, b: ValueRestrictionFloat | PlainMessage | undefined): boolean; +} +/** + * min, max doesn't make much sense for a string + * + * @generated from message kuksa.val.v1.ValueRestrictionString + */ +export declare class ValueRestrictionString extends Message { + /** + * @generated from field: repeated string allowed_values = 3; + */ + allowedValues: string[]; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.ValueRestrictionString"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): ValueRestrictionString; + static fromJson(jsonValue: JsonValue, options?: Partial): ValueRestrictionString; + static fromJsonString(jsonString: string, options?: Partial): ValueRestrictionString; + static equals(a: ValueRestrictionString | PlainMessage | undefined, b: ValueRestrictionString | PlainMessage | undefined): boolean; +} +/** + * Error response shall be an HTTP-like code. + * Should follow https://www.w3.org/TR/viss2-transport/#status-codes. + * + * @generated from message kuksa.val.v1.Error + */ +export declare class Error extends Message { + /** + * @generated from field: uint32 code = 1; + */ + code: number; + /** + * @generated from field: string reason = 2; + */ + reason: string; + /** + * @generated from field: string message = 3; + */ + message: string; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.Error"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): Error; + static fromJson(jsonValue: JsonValue, options?: Partial): Error; + static fromJsonString(jsonString: string, options?: Partial): Error; + static equals(a: Error | PlainMessage | undefined, b: Error | PlainMessage | undefined): boolean; +} +/** + * Used in get/set requests to report errors for specific entries + * + * @generated from message kuksa.val.v1.DataEntryError + */ +export declare class DataEntryError extends Message { + /** + * vss path + * + * @generated from field: string path = 1; + */ + path: string; + /** + * @generated from field: kuksa.val.v1.Error error = 2; + */ + error?: Error; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.DataEntryError"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): DataEntryError; + static fromJson(jsonValue: JsonValue, options?: Partial): DataEntryError; + static fromJsonString(jsonString: string, options?: Partial): DataEntryError; + static equals(a: DataEntryError | PlainMessage | undefined, b: DataEntryError | PlainMessage | undefined): boolean; +} +/** + * @generated from message kuksa.val.v1.StringArray + */ +export declare class StringArray extends Message { + /** + * @generated from field: repeated string values = 1; + */ + values: string[]; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.StringArray"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): StringArray; + static fromJson(jsonValue: JsonValue, options?: Partial): StringArray; + static fromJsonString(jsonString: string, options?: Partial): StringArray; + static equals(a: StringArray | PlainMessage | undefined, b: StringArray | PlainMessage | undefined): boolean; +} +/** + * @generated from message kuksa.val.v1.BoolArray + */ +export declare class BoolArray extends Message { + /** + * @generated from field: repeated bool values = 1; + */ + values: boolean[]; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.BoolArray"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): BoolArray; + static fromJson(jsonValue: JsonValue, options?: Partial): BoolArray; + static fromJsonString(jsonString: string, options?: Partial): BoolArray; + static equals(a: BoolArray | PlainMessage | undefined, b: BoolArray | PlainMessage | undefined): boolean; +} +/** + * @generated from message kuksa.val.v1.Int32Array + */ +export declare class Int32Array extends Message { + /** + * @generated from field: repeated sint32 values = 1; + */ + values: number[]; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.Int32Array"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): Int32Array; + static fromJson(jsonValue: JsonValue, options?: Partial): Int32Array; + static fromJsonString(jsonString: string, options?: Partial): Int32Array; + static equals(a: Int32Array | PlainMessage | undefined, b: Int32Array | PlainMessage | undefined): boolean; +} +/** + * @generated from message kuksa.val.v1.Int64Array + */ +export declare class Int64Array extends Message { + /** + * @generated from field: repeated sint64 values = 1; + */ + values: bigint[]; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.Int64Array"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): Int64Array; + static fromJson(jsonValue: JsonValue, options?: Partial): Int64Array; + static fromJsonString(jsonString: string, options?: Partial): Int64Array; + static equals(a: Int64Array | PlainMessage | undefined, b: Int64Array | PlainMessage | undefined): boolean; +} +/** + * @generated from message kuksa.val.v1.Uint32Array + */ +export declare class Uint32Array extends Message { + /** + * @generated from field: repeated uint32 values = 1; + */ + values: number[]; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.Uint32Array"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): Uint32Array; + static fromJson(jsonValue: JsonValue, options?: Partial): Uint32Array; + static fromJsonString(jsonString: string, options?: Partial): Uint32Array; + static equals(a: Uint32Array | PlainMessage | undefined, b: Uint32Array | PlainMessage | undefined): boolean; +} +/** + * @generated from message kuksa.val.v1.Uint64Array + */ +export declare class Uint64Array extends Message { + /** + * @generated from field: repeated uint64 values = 1; + */ + values: bigint[]; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.Uint64Array"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): Uint64Array; + static fromJson(jsonValue: JsonValue, options?: Partial): Uint64Array; + static fromJsonString(jsonString: string, options?: Partial): Uint64Array; + static equals(a: Uint64Array | PlainMessage | undefined, b: Uint64Array | PlainMessage | undefined): boolean; +} +/** + * @generated from message kuksa.val.v1.FloatArray + */ +export declare class FloatArray extends Message { + /** + * @generated from field: repeated float values = 1; + */ + values: number[]; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.FloatArray"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): FloatArray; + static fromJson(jsonValue: JsonValue, options?: Partial): FloatArray; + static fromJsonString(jsonString: string, options?: Partial): FloatArray; + static equals(a: FloatArray | PlainMessage | undefined, b: FloatArray | PlainMessage | undefined): boolean; +} +/** + * @generated from message kuksa.val.v1.DoubleArray + */ +export declare class DoubleArray extends Message { + /** + * @generated from field: repeated double values = 1; + */ + values: number[]; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.DoubleArray"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): DoubleArray; + static fromJson(jsonValue: JsonValue, options?: Partial): DoubleArray; + static fromJsonString(jsonString: string, options?: Partial): DoubleArray; + static equals(a: DoubleArray | PlainMessage | undefined, b: DoubleArray | PlainMessage | undefined): boolean; +} diff --git a/typescript/examples/aicar/gen/kuksa/val/v1/types_pb.js b/typescript/examples/aicar/src/gen/kuksa/val/v1/types_pb.js similarity index 50% rename from typescript/examples/aicar/gen/kuksa/val/v1/types_pb.js rename to typescript/examples/aicar/src/gen/kuksa/val/v1/types_pb.js index 9cf4f8ca..a10c4a40 100644 --- a/typescript/examples/aicar/gen/kuksa/val/v1/types_pb.js +++ b/typescript/examples/aicar/src/gen/kuksa/val/v1/types_pb.js @@ -1115,3 +1115,4 @@ DoubleArray.typeName = "kuksa.val.v1.DoubleArray"; DoubleArray.fields = protobuf_1.proto3.util.newFieldList(() => [ { no: 1, name: "values", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, repeated: true }, ]); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNfcGIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0eXBlc19wYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsaUZBQWlGO0FBQ2pGLDREQUE0RDtBQUM1RCxFQUFFO0FBQ0YsbUVBQW1FO0FBQ25FLDZDQUE2QztBQUM3QyxFQUFFO0FBQ0YsMkVBQTJFO0FBQzNFLHdEQUF3RDtBQUN4RCw2Q0FBNkM7QUFDN0MsRUFBRTtBQUNGLHNDQUFzQztBQUN0QyxnRkFBZ0Y7OztBQVVoRixpREFBZ0U7QUFFaEU7Ozs7Ozs7O0dBUUc7QUFDSCxJQUFZLFFBdUlYO0FBdklELFdBQVksUUFBUTtJQUNsQjs7T0FFRztJQUNILHFEQUFlLENBQUE7SUFFZjs7T0FFRztJQUNILDJDQUFVLENBQUE7SUFFVjs7T0FFRztJQUNILDZDQUFXLENBQUE7SUFFWDs7T0FFRztJQUNILHVDQUFRLENBQUE7SUFFUjs7T0FFRztJQUNILHlDQUFTLENBQUE7SUFFVDs7T0FFRztJQUNILHlDQUFTLENBQUE7SUFFVDs7T0FFRztJQUNILHlDQUFTLENBQUE7SUFFVDs7T0FFRztJQUNILHlDQUFTLENBQUE7SUFFVDs7T0FFRztJQUNILDJDQUFVLENBQUE7SUFFVjs7T0FFRztJQUNILDJDQUFVLENBQUE7SUFFVjs7T0FFRztJQUNILDRDQUFXLENBQUE7SUFFWDs7T0FFRztJQUNILDBDQUFVLENBQUE7SUFFVjs7T0FFRztJQUNILDRDQUFXLENBQUE7SUFFWDs7T0FFRztJQUNILGtEQUFjLENBQUE7SUFFZDs7T0FFRztJQUNILHdEQUFpQixDQUFBO0lBRWpCOztPQUVHO0lBQ0gsMERBQWtCLENBQUE7SUFFbEI7O09BRUc7SUFDSCxvREFBZSxDQUFBO0lBRWY7O09BRUc7SUFDSCxzREFBZ0IsQ0FBQTtJQUVoQjs7T0FFRztJQUNILHNEQUFnQixDQUFBO0lBRWhCOztPQUVHO0lBQ0gsc0RBQWdCLENBQUE7SUFFaEI7O09BRUc7SUFDSCxzREFBZ0IsQ0FBQTtJQUVoQjs7T0FFRztJQUNILHdEQUFpQixDQUFBO0lBRWpCOztPQUVHO0lBQ0gsd0RBQWlCLENBQUE7SUFFakI7O09BRUc7SUFDSCx3REFBaUIsQ0FBQTtJQUVqQjs7T0FFRztJQUNILHNEQUFnQixDQUFBO0lBRWhCOztPQUVHO0lBQ0gsd0RBQWlCLENBQUE7SUFFakI7O09BRUc7SUFDSCw4REFBb0IsQ0FBQTtBQUN0QixDQUFDLEVBdklXLFFBQVEsd0JBQVIsUUFBUSxRQXVJbkI7QUFDRCw0REFBNEQ7QUFDNUQsaUJBQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSx1QkFBdUIsRUFBRTtJQUN6RCxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLHVCQUF1QixFQUFFO0lBQ3hDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUU7SUFDbkMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRTtJQUNwQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO0lBQ2pDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUU7SUFDbEMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRTtJQUNsQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFO0lBQ2xDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUU7SUFDbEMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRTtJQUNuQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFO0lBQ25DLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUU7SUFDcEMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRTtJQUNuQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFO0lBQ3BDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUscUJBQXFCLEVBQUU7SUFDdkMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSx3QkFBd0IsRUFBRTtJQUMxQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLHlCQUF5QixFQUFFO0lBQzNDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsc0JBQXNCLEVBQUU7SUFDeEMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSx1QkFBdUIsRUFBRTtJQUN6QyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLHVCQUF1QixFQUFFO0lBQ3pDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsdUJBQXVCLEVBQUU7SUFDekMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSx1QkFBdUIsRUFBRTtJQUN6QyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLHdCQUF3QixFQUFFO0lBQzFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsd0JBQXdCLEVBQUU7SUFDMUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSx3QkFBd0IsRUFBRTtJQUMxQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLHVCQUF1QixFQUFFO0lBQ3pDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsd0JBQXdCLEVBQUU7SUFDMUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSwyQkFBMkIsRUFBRTtDQUM5QyxDQUFDLENBQUM7QUFFSDs7OztHQUlHO0FBQ0gsSUFBWSxTQW9CWDtBQXBCRCxXQUFZLFNBQVM7SUFDbkI7O09BRUc7SUFDSCx1REFBZSxDQUFBO0lBRWY7O09BRUc7SUFDSCxtREFBYSxDQUFBO0lBRWI7O09BRUc7SUFDSCw2Q0FBVSxDQUFBO0lBRVY7O09BRUc7SUFDSCxpREFBWSxDQUFBO0FBQ2QsQ0FBQyxFQXBCVyxTQUFTLHlCQUFULFNBQVMsUUFvQnBCO0FBQ0QsNkRBQTZEO0FBQzdELGlCQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsd0JBQXdCLEVBQUU7SUFDM0QsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSx3QkFBd0IsRUFBRTtJQUN6QyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFO0lBQ3ZDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUU7SUFDcEMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRTtDQUN2QyxDQUFDLENBQUM7QUFFSDs7Ozs7R0FLRztBQUNILElBQVksSUEwQ1g7QUExQ0QsV0FBWSxJQUFJO0lBQ2Q7Ozs7T0FJRztJQUNILDZDQUFlLENBQUE7SUFFZjs7OztPQUlHO0lBQ0gsaURBQWlCLENBQUE7SUFFakI7Ozs7T0FJRztJQUNILCtDQUFnQixDQUFBO0lBRWhCOzs7O09BSUc7SUFDSCx1Q0FBWSxDQUFBO0lBRVo7Ozs7T0FJRztJQUNILG9DQUFXLENBQUE7SUFFWDs7OztPQUlHO0lBQ0gsOEJBQVEsQ0FBQTtBQUNWLENBQUMsRUExQ1csSUFBSSxvQkFBSixJQUFJLFFBMENmO0FBQ0Qsd0RBQXdEO0FBQ3hELGlCQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLEVBQUU7SUFDakQsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRTtJQUNuQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLG9CQUFvQixFQUFFO0lBQ3JDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUU7SUFDcEMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUU7SUFDaEMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUU7SUFDL0IsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Q0FDN0IsQ0FBQyxDQUFDO0FBRUg7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxJQUFZLEtBeUdYO0FBekdELFdBQVksS0FBSztJQUNmOzs7O09BSUc7SUFDSCwrQ0FBZSxDQUFBO0lBRWY7Ozs7T0FJRztJQUNILGlDQUFRLENBQUE7SUFFUjs7OztPQUlHO0lBQ0gsbUNBQVMsQ0FBQTtJQUVUOzs7O09BSUc7SUFDSCx1REFBbUIsQ0FBQTtJQUVuQjs7OztPQUlHO0lBQ0gsMENBQWEsQ0FBQTtJQUViOzs7O09BSUc7SUFDSCw4REFBdUIsQ0FBQTtJQUV2Qjs7OztPQUlHO0lBQ0gsa0VBQXlCLENBQUE7SUFFekI7Ozs7T0FJRztJQUNILGdFQUF3QixDQUFBO0lBRXhCOzs7O09BSUc7SUFDSCwwREFBcUIsQ0FBQTtJQUVyQjs7OztPQUlHO0lBQ0gsa0VBQXlCLENBQUE7SUFFekI7Ozs7T0FJRztJQUNILG9EQUFrQixDQUFBO0lBRWxCOzs7O09BSUc7SUFDSCw4RUFBK0IsQ0FBQTtJQUUvQjs7OztPQUlHO0lBQ0gsNERBQXNCLENBQUE7SUFFdEI7Ozs7T0FJRztJQUNILHdEQUFvQixDQUFBO0lBRXBCOzs7O09BSUc7SUFDSCw4REFBdUIsQ0FBQTtBQUN6QixDQUFDLEVBekdXLEtBQUsscUJBQUwsS0FBSyxRQXlHaEI7QUFDRCx5REFBeUQ7QUFDekQsaUJBQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxvQkFBb0IsRUFBRTtJQUNuRCxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFO0lBQ3BDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFO0lBQzdCLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFO0lBQzlCLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsdUJBQXVCLEVBQUU7SUFDeEMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtJQUNsQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLDBCQUEwQixFQUFFO0lBQzVDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsNEJBQTRCLEVBQUU7SUFDOUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSwyQkFBMkIsRUFBRTtJQUM3QyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLHdCQUF3QixFQUFFO0lBQzFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsNEJBQTRCLEVBQUU7SUFDOUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRTtJQUN2QyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLGtDQUFrQyxFQUFFO0lBQ3BELEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUseUJBQXlCLEVBQUU7SUFDM0MsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSx1QkFBdUIsRUFBRTtJQUN6QyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLDBCQUEwQixFQUFFO0NBQzdDLENBQUMsQ0FBQztBQUVIOzs7Ozs7R0FNRztBQUNILE1BQWEsU0FBVSxTQUFRLGtCQUFrQjtJQXFDL0MsWUFBWSxJQUFnQztRQUMxQyxLQUFLLEVBQUUsQ0FBQztRQXJDVjs7Ozs7O1dBTUc7UUFDSCxTQUFJLEdBQUcsRUFBRSxDQUFDO1FBK0JSLGlCQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQVdELE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBaUIsRUFBRSxPQUFvQztRQUN2RSxPQUFPLElBQUksU0FBUyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFvQixFQUFFLE9BQWtDO1FBQ3RFLE9BQU8sSUFBSSxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLFVBQWtCLEVBQUUsT0FBa0M7UUFDMUUsT0FBTyxJQUFJLFNBQVMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBa0QsRUFBRSxDQUFrRDtRQUNsSCxPQUFPLGlCQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdDLENBQUM7O0FBakVILDhCQWtFQztBQXhCaUIsaUJBQU8sR0FBa0IsaUJBQU0sQUFBeEIsQ0FBeUI7QUFDaEMsa0JBQVEsR0FBRyx3QkFBd0IsQUFBM0IsQ0FBNEI7QUFDcEMsZ0JBQU0sR0FBYyxpQkFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDakUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLHVCQUF1QixFQUFFO0lBQ3JFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRTtJQUN2RCxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRTtJQUNqRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUU7Q0FDM0QsQ0FBQyxBQUxvQixDQUtuQjtBQW1CTDs7R0FFRztBQUNILE1BQWEsU0FBVSxTQUFRLGtCQUFrQjtJQTJHL0MsWUFBWSxJQUFnQztRQUMxQyxLQUFLLEVBQUUsQ0FBQztRQXRHVjs7V0FFRztRQUNILFVBQUssR0FnR3dDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBSS9ELGlCQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQXdCRCxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQWlCLEVBQUUsT0FBb0M7UUFDdkUsT0FBTyxJQUFJLFNBQVMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBb0IsRUFBRSxPQUFrQztRQUN0RSxPQUFPLElBQUksU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxVQUFrQixFQUFFLE9BQWtDO1FBQzFFLE9BQU8sSUFBSSxTQUFTLEVBQUUsQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLENBQWtELEVBQUUsQ0FBa0Q7UUFDbEgsT0FBTyxpQkFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM3QyxDQUFDOztBQXBKSCw4QkFxSkM7QUFyQ2lCLGlCQUFPLEdBQWtCLGlCQUFNLEFBQXhCLENBQXlCO0FBQ2hDLGtCQUFRLEdBQUcsd0JBQXdCLEFBQTNCLENBQTRCO0FBQ3BDLGdCQUFNLEdBQWMsaUJBQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2pFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLG9CQUFTLEVBQUU7SUFDM0QsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLHVCQUF1QixFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7SUFDeEYsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLHFCQUFxQixFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7SUFDcEYsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLHVCQUF1QixFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7SUFDeEYsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLHVCQUF1QixFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7SUFDeEYsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLHVCQUF1QixFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7SUFDekYsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLHVCQUF1QixFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7SUFDeEYsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLHNCQUFzQixFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7SUFDdEYsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLHVCQUF1QixFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7SUFDeEYsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7SUFDakYsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7SUFDN0UsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7SUFDL0UsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7SUFDL0UsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7SUFDakYsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsV0FBVyxF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 \ No newline at end of file diff --git a/typescript/examples/aicar/gen/kuksa/val/v1/types_pb.ts b/typescript/examples/aicar/src/gen/kuksa/val/v1/types_pb.ts similarity index 100% rename from typescript/examples/aicar/gen/kuksa/val/v1/types_pb.ts rename to typescript/examples/aicar/src/gen/kuksa/val/v1/types_pb.ts diff --git a/typescript/examples/aicar/src/gen/kuksa/val/v1/val_connect.d.ts b/typescript/examples/aicar/src/gen/kuksa/val/v1/val_connect.d.ts new file mode 100644 index 00000000..9ce20fcf --- /dev/null +++ b/typescript/examples/aicar/src/gen/kuksa/val/v1/val_connect.d.ts @@ -0,0 +1,69 @@ +import { GetRequest, GetResponse, GetServerInfoRequest, GetServerInfoResponse, SetRequest, SetResponse, StreamedUpdateRequest, StreamedUpdateResponse, SubscribeRequest, SubscribeResponse } from "./val_pb.js"; +import { MethodKind } from "@bufbuild/protobuf"; +/** + * @generated from service kuksa.val.v1.VAL + */ +export declare const VAL: { + readonly typeName: "kuksa.val.v1.VAL"; + readonly methods: { + /** + * Get entries + * + * @generated from rpc kuksa.val.v1.VAL.Get + */ + readonly get: { + readonly name: "Get"; + readonly I: typeof GetRequest; + readonly O: typeof GetResponse; + readonly kind: MethodKind.Unary; + }; + /** + * Set entries + * + * @generated from rpc kuksa.val.v1.VAL.Set + */ + readonly set: { + readonly name: "Set"; + readonly I: typeof SetRequest; + readonly O: typeof SetResponse; + readonly kind: MethodKind.Unary; + }; + /** + * @generated from rpc kuksa.val.v1.VAL.StreamedUpdate + */ + readonly streamedUpdate: { + readonly name: "StreamedUpdate"; + readonly I: typeof StreamedUpdateRequest; + readonly O: typeof StreamedUpdateResponse; + readonly kind: MethodKind.BiDiStreaming; + }; + /** + * Subscribe to a set of entries + * + * Returns a stream of notifications. + * + * InvalidArgument is returned if the request is malformed. + * + * @generated from rpc kuksa.val.v1.VAL.Subscribe + */ + readonly subscribe: { + readonly name: "Subscribe"; + readonly I: typeof SubscribeRequest; + readonly O: typeof SubscribeResponse; + readonly kind: MethodKind.ServerStreaming; + }; + /** + * Shall return information that allows the client to determine + * what server/server implementation/version it is talking to + * eg. kuksa-databroker 0.5.1 + * + * @generated from rpc kuksa.val.v1.VAL.GetServerInfo + */ + readonly getServerInfo: { + readonly name: "GetServerInfo"; + readonly I: typeof GetServerInfoRequest; + readonly O: typeof GetServerInfoResponse; + readonly kind: MethodKind.Unary; + }; + }; +}; diff --git a/typescript/examples/aicar/gen/kuksa/val/v1/val_connect.js b/typescript/examples/aicar/src/gen/kuksa/val/v1/val_connect.js similarity index 66% rename from typescript/examples/aicar/gen/kuksa/val/v1/val_connect.js rename to typescript/examples/aicar/src/gen/kuksa/val/v1/val_connect.js index 2ecdffa1..9fcb0ebf 100644 --- a/typescript/examples/aicar/gen/kuksa/val/v1/val_connect.js +++ b/typescript/examples/aicar/src/gen/kuksa/val/v1/val_connect.js @@ -86,3 +86,4 @@ exports.VAL = { }, } }; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsX2Nvbm5lY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ2YWxfY29ubmVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsaUZBQWlGO0FBQ2pGLDREQUE0RDtBQUM1RCxFQUFFO0FBQ0YsbUVBQW1FO0FBQ25FLDZDQUE2QztBQUM3QyxFQUFFO0FBQ0YsMkVBQTJFO0FBQzNFLHdEQUF3RDtBQUN4RCw2Q0FBNkM7QUFDN0MsRUFBRTtBQUNGLHNDQUFzQztBQUN0QyxnRkFBZ0Y7OztBQUVoRix3RUFBd0U7QUFDeEUsb0ZBQW9GO0FBQ3BGLG9CQUFvQjtBQUNwQixjQUFjO0FBRWQsMkNBQWdOO0FBQ2hOLGlEQUFnRDtBQUVoRDs7R0FFRztBQUNVLFFBQUEsR0FBRyxHQUFHO0lBQ2pCLFFBQVEsRUFBRSxrQkFBa0I7SUFDNUIsT0FBTyxFQUFFO1FBQ1A7Ozs7V0FJRztRQUNILEdBQUcsRUFBRTtZQUNILElBQUksRUFBRSxLQUFLO1lBQ1gsQ0FBQyxFQUFFLHNCQUFVO1lBQ2IsQ0FBQyxFQUFFLHVCQUFXO1lBQ2QsSUFBSSxFQUFFLHFCQUFVLENBQUMsS0FBSztTQUN2QjtRQUNEOzs7O1dBSUc7UUFDSCxHQUFHLEVBQUU7WUFDSCxJQUFJLEVBQUUsS0FBSztZQUNYLENBQUMsRUFBRSxzQkFBVTtZQUNiLENBQUMsRUFBRSx1QkFBVztZQUNkLElBQUksRUFBRSxxQkFBVSxDQUFDLEtBQUs7U0FDdkI7UUFDRDs7V0FFRztRQUNILGNBQWMsRUFBRTtZQUNkLElBQUksRUFBRSxnQkFBZ0I7WUFDdEIsQ0FBQyxFQUFFLGlDQUFxQjtZQUN4QixDQUFDLEVBQUUsa0NBQXNCO1lBQ3pCLElBQUksRUFBRSxxQkFBVSxDQUFDLGFBQWE7U0FDL0I7UUFDRDs7Ozs7Ozs7V0FRRztRQUNILFNBQVMsRUFBRTtZQUNULElBQUksRUFBRSxXQUFXO1lBQ2pCLENBQUMsRUFBRSw0QkFBZ0I7WUFDbkIsQ0FBQyxFQUFFLDZCQUFpQjtZQUNwQixJQUFJLEVBQUUscUJBQVUsQ0FBQyxlQUFlO1NBQ2pDO1FBQ0Q7Ozs7OztXQU1HO1FBQ0gsYUFBYSxFQUFFO1lBQ2IsSUFBSSxFQUFFLGVBQWU7WUFDckIsQ0FBQyxFQUFFLGdDQUFvQjtZQUN2QixDQUFDLEVBQUUsaUNBQXFCO1lBQ3hCLElBQUksRUFBRSxxQkFBVSxDQUFDLEtBQUs7U0FDdkI7S0FDRjtDQUNPLENBQUMifQ== \ No newline at end of file diff --git a/typescript/examples/aicar/gen/kuksa/val/v1/val_connect.ts b/typescript/examples/aicar/src/gen/kuksa/val/v1/val_connect.ts similarity index 100% rename from typescript/examples/aicar/gen/kuksa/val/v1/val_connect.ts rename to typescript/examples/aicar/src/gen/kuksa/val/v1/val_connect.ts diff --git a/typescript/examples/aicar/src/gen/kuksa/val/v1/val_pb.d.ts b/typescript/examples/aicar/src/gen/kuksa/val/v1/val_pb.d.ts new file mode 100644 index 00000000..c39557cf --- /dev/null +++ b/typescript/examples/aicar/src/gen/kuksa/val/v1/val_pb.d.ts @@ -0,0 +1,282 @@ +import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; +import { Message, proto3 } from "@bufbuild/protobuf"; +import { DataEntry, DataEntryError, Error, Field, View } from "./types_pb.js"; +/** + * Define which data we want + * + * @generated from message kuksa.val.v1.EntryRequest + */ +export declare class EntryRequest extends Message { + /** + * @generated from field: string path = 1; + */ + path: string; + /** + * @generated from field: kuksa.val.v1.View view = 2; + */ + view: View; + /** + * @generated from field: repeated kuksa.val.v1.Field fields = 3; + */ + fields: Field[]; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.EntryRequest"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): EntryRequest; + static fromJson(jsonValue: JsonValue, options?: Partial): EntryRequest; + static fromJsonString(jsonString: string, options?: Partial): EntryRequest; + static equals(a: EntryRequest | PlainMessage | undefined, b: EntryRequest | PlainMessage | undefined): boolean; +} +/** + * Request a set of entries. + * + * @generated from message kuksa.val.v1.GetRequest + */ +export declare class GetRequest extends Message { + /** + * @generated from field: repeated kuksa.val.v1.EntryRequest entries = 1; + */ + entries: EntryRequest[]; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.GetRequest"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): GetRequest; + static fromJson(jsonValue: JsonValue, options?: Partial): GetRequest; + static fromJsonString(jsonString: string, options?: Partial): GetRequest; + static equals(a: GetRequest | PlainMessage | undefined, b: GetRequest | PlainMessage | undefined): boolean; +} +/** + * Global errors are specified in `error`. + * Errors for individual entries are specified in `errors`. + * + * @generated from message kuksa.val.v1.GetResponse + */ +export declare class GetResponse extends Message { + /** + * @generated from field: repeated kuksa.val.v1.DataEntry entries = 1; + */ + entries: DataEntry[]; + /** + * @generated from field: repeated kuksa.val.v1.DataEntryError errors = 2; + */ + errors: DataEntryError[]; + /** + * @generated from field: kuksa.val.v1.Error error = 3; + */ + error?: Error; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.GetResponse"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): GetResponse; + static fromJson(jsonValue: JsonValue, options?: Partial): GetResponse; + static fromJsonString(jsonString: string, options?: Partial): GetResponse; + static equals(a: GetResponse | PlainMessage | undefined, b: GetResponse | PlainMessage | undefined): boolean; +} +/** + * Define the data we want to set + * + * @generated from message kuksa.val.v1.EntryUpdate + */ +export declare class EntryUpdate extends Message { + /** + * @generated from field: kuksa.val.v1.DataEntry entry = 1; + */ + entry?: DataEntry; + /** + * @generated from field: repeated kuksa.val.v1.Field fields = 2; + */ + fields: Field[]; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.EntryUpdate"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): EntryUpdate; + static fromJson(jsonValue: JsonValue, options?: Partial): EntryUpdate; + static fromJsonString(jsonString: string, options?: Partial): EntryUpdate; + static equals(a: EntryUpdate | PlainMessage | undefined, b: EntryUpdate | PlainMessage | undefined): boolean; +} +/** + * A list of entries to be updated + * + * @generated from message kuksa.val.v1.SetRequest + */ +export declare class SetRequest extends Message { + /** + * @generated from field: repeated kuksa.val.v1.EntryUpdate updates = 1; + */ + updates: EntryUpdate[]; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.SetRequest"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): SetRequest; + static fromJson(jsonValue: JsonValue, options?: Partial): SetRequest; + static fromJsonString(jsonString: string, options?: Partial): SetRequest; + static equals(a: SetRequest | PlainMessage | undefined, b: SetRequest | PlainMessage | undefined): boolean; +} +/** + * Global errors are specified in `error`. + * Errors for individual entries are specified in `errors`. + * + * @generated from message kuksa.val.v1.SetResponse + */ +export declare class SetResponse extends Message { + /** + * @generated from field: kuksa.val.v1.Error error = 1; + */ + error?: Error; + /** + * @generated from field: repeated kuksa.val.v1.DataEntryError errors = 2; + */ + errors: DataEntryError[]; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.SetResponse"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): SetResponse; + static fromJson(jsonValue: JsonValue, options?: Partial): SetResponse; + static fromJsonString(jsonString: string, options?: Partial): SetResponse; + static equals(a: SetResponse | PlainMessage | undefined, b: SetResponse | PlainMessage | undefined): boolean; +} +/** + * @generated from message kuksa.val.v1.StreamedUpdateRequest + */ +export declare class StreamedUpdateRequest extends Message { + /** + * @generated from field: repeated kuksa.val.v1.EntryUpdate updates = 1; + */ + updates: EntryUpdate[]; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.StreamedUpdateRequest"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): StreamedUpdateRequest; + static fromJson(jsonValue: JsonValue, options?: Partial): StreamedUpdateRequest; + static fromJsonString(jsonString: string, options?: Partial): StreamedUpdateRequest; + static equals(a: StreamedUpdateRequest | PlainMessage | undefined, b: StreamedUpdateRequest | PlainMessage | undefined): boolean; +} +/** + * @generated from message kuksa.val.v1.StreamedUpdateResponse + */ +export declare class StreamedUpdateResponse extends Message { + /** + * @generated from field: kuksa.val.v1.Error error = 1; + */ + error?: Error; + /** + * @generated from field: repeated kuksa.val.v1.DataEntryError errors = 2; + */ + errors: DataEntryError[]; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.StreamedUpdateResponse"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): StreamedUpdateResponse; + static fromJson(jsonValue: JsonValue, options?: Partial): StreamedUpdateResponse; + static fromJsonString(jsonString: string, options?: Partial): StreamedUpdateResponse; + static equals(a: StreamedUpdateResponse | PlainMessage | undefined, b: StreamedUpdateResponse | PlainMessage | undefined): boolean; +} +/** + * Define what to subscribe to + * + * @generated from message kuksa.val.v1.SubscribeEntry + */ +export declare class SubscribeEntry extends Message { + /** + * @generated from field: string path = 1; + */ + path: string; + /** + * @generated from field: kuksa.val.v1.View view = 2; + */ + view: View; + /** + * @generated from field: repeated kuksa.val.v1.Field fields = 3; + */ + fields: Field[]; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.SubscribeEntry"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): SubscribeEntry; + static fromJson(jsonValue: JsonValue, options?: Partial): SubscribeEntry; + static fromJsonString(jsonString: string, options?: Partial): SubscribeEntry; + static equals(a: SubscribeEntry | PlainMessage | undefined, b: SubscribeEntry | PlainMessage | undefined): boolean; +} +/** + * Subscribe to changes in datapoints. + * + * @generated from message kuksa.val.v1.SubscribeRequest + */ +export declare class SubscribeRequest extends Message { + /** + * @generated from field: repeated kuksa.val.v1.SubscribeEntry entries = 1; + */ + entries: SubscribeEntry[]; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.SubscribeRequest"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): SubscribeRequest; + static fromJson(jsonValue: JsonValue, options?: Partial): SubscribeRequest; + static fromJsonString(jsonString: string, options?: Partial): SubscribeRequest; + static equals(a: SubscribeRequest | PlainMessage | undefined, b: SubscribeRequest | PlainMessage | undefined): boolean; +} +/** + * A subscription response + * + * @generated from message kuksa.val.v1.SubscribeResponse + */ +export declare class SubscribeResponse extends Message { + /** + * @generated from field: repeated kuksa.val.v1.EntryUpdate updates = 1; + */ + updates: EntryUpdate[]; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.SubscribeResponse"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): SubscribeResponse; + static fromJson(jsonValue: JsonValue, options?: Partial): SubscribeResponse; + static fromJsonString(jsonString: string, options?: Partial): SubscribeResponse; + static equals(a: SubscribeResponse | PlainMessage | undefined, b: SubscribeResponse | PlainMessage | undefined): boolean; +} +/** + * Nothing yet + * + * @generated from message kuksa.val.v1.GetServerInfoRequest + */ +export declare class GetServerInfoRequest extends Message { + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.GetServerInfoRequest"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): GetServerInfoRequest; + static fromJson(jsonValue: JsonValue, options?: Partial): GetServerInfoRequest; + static fromJsonString(jsonString: string, options?: Partial): GetServerInfoRequest; + static equals(a: GetServerInfoRequest | PlainMessage | undefined, b: GetServerInfoRequest | PlainMessage | undefined): boolean; +} +/** + * @generated from message kuksa.val.v1.GetServerInfoResponse + */ +export declare class GetServerInfoResponse extends Message { + /** + * @generated from field: string name = 1; + */ + name: string; + /** + * @generated from field: string version = 2; + */ + version: string; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.GetServerInfoResponse"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): GetServerInfoResponse; + static fromJson(jsonValue: JsonValue, options?: Partial): GetServerInfoResponse; + static fromJsonString(jsonString: string, options?: Partial): GetServerInfoResponse; + static equals(a: GetServerInfoResponse | PlainMessage | undefined, b: GetServerInfoResponse | PlainMessage | undefined): boolean; +} diff --git a/typescript/examples/aicar/src/gen/kuksa/val/v1/val_pb.js b/typescript/examples/aicar/src/gen/kuksa/val/v1/val_pb.js new file mode 100644 index 00000000..f0c64479 --- /dev/null +++ b/typescript/examples/aicar/src/gen/kuksa/val/v1/val_pb.js @@ -0,0 +1,471 @@ +"use strict"; +//******************************************************************************* +// Copyright (c) 2022 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// This program and the accompanying materials are made available under the +// terms of the Apache License 2.0 which is available at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// SPDX-License-Identifier: Apache-2.0 +//****************************************************************************** +Object.defineProperty(exports, "__esModule", { value: true }); +exports.GetServerInfoResponse = exports.GetServerInfoRequest = exports.SubscribeResponse = exports.SubscribeRequest = exports.SubscribeEntry = exports.StreamedUpdateResponse = exports.StreamedUpdateRequest = exports.SetResponse = exports.SetRequest = exports.EntryUpdate = exports.GetResponse = exports.GetRequest = exports.EntryRequest = void 0; +const protobuf_1 = require("@bufbuild/protobuf"); +const types_pb_js_1 = require("./types_pb.js"); +/** + * Define which data we want + * + * @generated from message kuksa.val.v1.EntryRequest + */ +class EntryRequest extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: string path = 1; + */ + this.path = ""; + /** + * @generated from field: kuksa.val.v1.View view = 2; + */ + this.view = types_pb_js_1.View.UNSPECIFIED; + /** + * @generated from field: repeated kuksa.val.v1.Field fields = 3; + */ + this.fields = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new EntryRequest().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new EntryRequest().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new EntryRequest().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(EntryRequest, a, b); + } +} +exports.EntryRequest = EntryRequest; +EntryRequest.runtime = protobuf_1.proto3; +EntryRequest.typeName = "kuksa.val.v1.EntryRequest"; +EntryRequest.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "view", kind: "enum", T: protobuf_1.proto3.getEnumType(types_pb_js_1.View) }, + { no: 3, name: "fields", kind: "enum", T: protobuf_1.proto3.getEnumType(types_pb_js_1.Field), repeated: true }, +]); +/** + * Request a set of entries. + * + * @generated from message kuksa.val.v1.GetRequest + */ +class GetRequest extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated kuksa.val.v1.EntryRequest entries = 1; + */ + this.entries = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new GetRequest().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new GetRequest().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new GetRequest().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(GetRequest, a, b); + } +} +exports.GetRequest = GetRequest; +GetRequest.runtime = protobuf_1.proto3; +GetRequest.typeName = "kuksa.val.v1.GetRequest"; +GetRequest.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "entries", kind: "message", T: EntryRequest, repeated: true }, +]); +/** + * Global errors are specified in `error`. + * Errors for individual entries are specified in `errors`. + * + * @generated from message kuksa.val.v1.GetResponse + */ +class GetResponse extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated kuksa.val.v1.DataEntry entries = 1; + */ + this.entries = []; + /** + * @generated from field: repeated kuksa.val.v1.DataEntryError errors = 2; + */ + this.errors = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new GetResponse().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new GetResponse().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new GetResponse().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(GetResponse, a, b); + } +} +exports.GetResponse = GetResponse; +GetResponse.runtime = protobuf_1.proto3; +GetResponse.typeName = "kuksa.val.v1.GetResponse"; +GetResponse.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "entries", kind: "message", T: types_pb_js_1.DataEntry, repeated: true }, + { no: 2, name: "errors", kind: "message", T: types_pb_js_1.DataEntryError, repeated: true }, + { no: 3, name: "error", kind: "message", T: types_pb_js_1.Error }, +]); +/** + * Define the data we want to set + * + * @generated from message kuksa.val.v1.EntryUpdate + */ +class EntryUpdate extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated kuksa.val.v1.Field fields = 2; + */ + this.fields = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new EntryUpdate().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new EntryUpdate().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new EntryUpdate().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(EntryUpdate, a, b); + } +} +exports.EntryUpdate = EntryUpdate; +EntryUpdate.runtime = protobuf_1.proto3; +EntryUpdate.typeName = "kuksa.val.v1.EntryUpdate"; +EntryUpdate.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "entry", kind: "message", T: types_pb_js_1.DataEntry }, + { no: 2, name: "fields", kind: "enum", T: protobuf_1.proto3.getEnumType(types_pb_js_1.Field), repeated: true }, +]); +/** + * A list of entries to be updated + * + * @generated from message kuksa.val.v1.SetRequest + */ +class SetRequest extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated kuksa.val.v1.EntryUpdate updates = 1; + */ + this.updates = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new SetRequest().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new SetRequest().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new SetRequest().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(SetRequest, a, b); + } +} +exports.SetRequest = SetRequest; +SetRequest.runtime = protobuf_1.proto3; +SetRequest.typeName = "kuksa.val.v1.SetRequest"; +SetRequest.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "updates", kind: "message", T: EntryUpdate, repeated: true }, +]); +/** + * Global errors are specified in `error`. + * Errors for individual entries are specified in `errors`. + * + * @generated from message kuksa.val.v1.SetResponse + */ +class SetResponse extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated kuksa.val.v1.DataEntryError errors = 2; + */ + this.errors = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new SetResponse().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new SetResponse().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new SetResponse().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(SetResponse, a, b); + } +} +exports.SetResponse = SetResponse; +SetResponse.runtime = protobuf_1.proto3; +SetResponse.typeName = "kuksa.val.v1.SetResponse"; +SetResponse.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "error", kind: "message", T: types_pb_js_1.Error }, + { no: 2, name: "errors", kind: "message", T: types_pb_js_1.DataEntryError, repeated: true }, +]); +/** + * @generated from message kuksa.val.v1.StreamedUpdateRequest + */ +class StreamedUpdateRequest extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated kuksa.val.v1.EntryUpdate updates = 1; + */ + this.updates = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new StreamedUpdateRequest().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new StreamedUpdateRequest().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new StreamedUpdateRequest().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(StreamedUpdateRequest, a, b); + } +} +exports.StreamedUpdateRequest = StreamedUpdateRequest; +StreamedUpdateRequest.runtime = protobuf_1.proto3; +StreamedUpdateRequest.typeName = "kuksa.val.v1.StreamedUpdateRequest"; +StreamedUpdateRequest.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "updates", kind: "message", T: EntryUpdate, repeated: true }, +]); +/** + * @generated from message kuksa.val.v1.StreamedUpdateResponse + */ +class StreamedUpdateResponse extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated kuksa.val.v1.DataEntryError errors = 2; + */ + this.errors = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new StreamedUpdateResponse().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new StreamedUpdateResponse().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new StreamedUpdateResponse().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(StreamedUpdateResponse, a, b); + } +} +exports.StreamedUpdateResponse = StreamedUpdateResponse; +StreamedUpdateResponse.runtime = protobuf_1.proto3; +StreamedUpdateResponse.typeName = "kuksa.val.v1.StreamedUpdateResponse"; +StreamedUpdateResponse.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "error", kind: "message", T: types_pb_js_1.Error }, + { no: 2, name: "errors", kind: "message", T: types_pb_js_1.DataEntryError, repeated: true }, +]); +/** + * Define what to subscribe to + * + * @generated from message kuksa.val.v1.SubscribeEntry + */ +class SubscribeEntry extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: string path = 1; + */ + this.path = ""; + /** + * @generated from field: kuksa.val.v1.View view = 2; + */ + this.view = types_pb_js_1.View.UNSPECIFIED; + /** + * @generated from field: repeated kuksa.val.v1.Field fields = 3; + */ + this.fields = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new SubscribeEntry().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new SubscribeEntry().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new SubscribeEntry().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(SubscribeEntry, a, b); + } +} +exports.SubscribeEntry = SubscribeEntry; +SubscribeEntry.runtime = protobuf_1.proto3; +SubscribeEntry.typeName = "kuksa.val.v1.SubscribeEntry"; +SubscribeEntry.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "view", kind: "enum", T: protobuf_1.proto3.getEnumType(types_pb_js_1.View) }, + { no: 3, name: "fields", kind: "enum", T: protobuf_1.proto3.getEnumType(types_pb_js_1.Field), repeated: true }, +]); +/** + * Subscribe to changes in datapoints. + * + * @generated from message kuksa.val.v1.SubscribeRequest + */ +class SubscribeRequest extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated kuksa.val.v1.SubscribeEntry entries = 1; + */ + this.entries = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new SubscribeRequest().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new SubscribeRequest().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new SubscribeRequest().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(SubscribeRequest, a, b); + } +} +exports.SubscribeRequest = SubscribeRequest; +SubscribeRequest.runtime = protobuf_1.proto3; +SubscribeRequest.typeName = "kuksa.val.v1.SubscribeRequest"; +SubscribeRequest.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "entries", kind: "message", T: SubscribeEntry, repeated: true }, +]); +/** + * A subscription response + * + * @generated from message kuksa.val.v1.SubscribeResponse + */ +class SubscribeResponse extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated kuksa.val.v1.EntryUpdate updates = 1; + */ + this.updates = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new SubscribeResponse().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new SubscribeResponse().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new SubscribeResponse().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(SubscribeResponse, a, b); + } +} +exports.SubscribeResponse = SubscribeResponse; +SubscribeResponse.runtime = protobuf_1.proto3; +SubscribeResponse.typeName = "kuksa.val.v1.SubscribeResponse"; +SubscribeResponse.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "updates", kind: "message", T: EntryUpdate, repeated: true }, +]); +/** + * Nothing yet + * + * @generated from message kuksa.val.v1.GetServerInfoRequest + */ +class GetServerInfoRequest extends protobuf_1.Message { + constructor(data) { + super(); + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new GetServerInfoRequest().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new GetServerInfoRequest().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new GetServerInfoRequest().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(GetServerInfoRequest, a, b); + } +} +exports.GetServerInfoRequest = GetServerInfoRequest; +GetServerInfoRequest.runtime = protobuf_1.proto3; +GetServerInfoRequest.typeName = "kuksa.val.v1.GetServerInfoRequest"; +GetServerInfoRequest.fields = protobuf_1.proto3.util.newFieldList(() => []); +/** + * @generated from message kuksa.val.v1.GetServerInfoResponse + */ +class GetServerInfoResponse extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: string name = 1; + */ + this.name = ""; + /** + * @generated from field: string version = 2; + */ + this.version = ""; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new GetServerInfoResponse().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new GetServerInfoResponse().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new GetServerInfoResponse().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(GetServerInfoResponse, a, b); + } +} +exports.GetServerInfoResponse = GetServerInfoResponse; +GetServerInfoResponse.runtime = protobuf_1.proto3; +GetServerInfoResponse.typeName = "kuksa.val.v1.GetServerInfoResponse"; +GetServerInfoResponse.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "version", kind: "scalar", T: 9 /* ScalarType.STRING */ }, +]); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsX3BiLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidmFsX3BiLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxpRkFBaUY7QUFDakYsNERBQTREO0FBQzVELEVBQUU7QUFDRixtRUFBbUU7QUFDbkUsNkNBQTZDO0FBQzdDLEVBQUU7QUFDRiwyRUFBMkU7QUFDM0Usd0RBQXdEO0FBQ3hELDZDQUE2QztBQUM3QyxFQUFFO0FBQ0Ysc0NBQXNDO0FBQ3RDLGdGQUFnRjs7O0FBUWhGLGlEQUFxRDtBQUNyRCwrQ0FBOEU7QUFFOUU7Ozs7R0FJRztBQUNILE1BQWEsWUFBYSxTQUFRLGtCQUFxQjtJQWdCckQsWUFBWSxJQUFtQztRQUM3QyxLQUFLLEVBQUUsQ0FBQztRQWhCVjs7V0FFRztRQUNILFNBQUksR0FBRyxFQUFFLENBQUM7UUFFVjs7V0FFRztRQUNILFNBQUksR0FBRyxrQkFBSSxDQUFDLFdBQVcsQ0FBQztRQUV4Qjs7V0FFRztRQUNILFdBQU0sR0FBWSxFQUFFLENBQUM7UUFJbkIsaUJBQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBVUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFpQixFQUFFLE9BQW9DO1FBQ3ZFLE9BQU8sSUFBSSxZQUFZLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQW9CLEVBQUUsT0FBa0M7UUFDdEUsT0FBTyxJQUFJLFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsVUFBa0IsRUFBRSxPQUFrQztRQUMxRSxPQUFPLElBQUksWUFBWSxFQUFFLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUF3RCxFQUFFLENBQXdEO1FBQzlILE9BQU8saUJBQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsQ0FBQzs7QUEzQ0gsb0NBNENDO0FBdkJpQixvQkFBTyxHQUFrQixpQkFBTSxBQUF4QixDQUF5QjtBQUNoQyxxQkFBUSxHQUFHLDJCQUEyQixBQUE5QixDQUErQjtBQUN2QyxtQkFBTSxHQUFjLGlCQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNqRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsdUJBQXVCLEVBQUU7SUFDckUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsaUJBQU0sQ0FBQyxXQUFXLENBQUMsa0JBQUksQ0FBQyxFQUFFO0lBQ2xFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLGlCQUFNLENBQUMsV0FBVyxDQUFDLG1CQUFLLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO0NBQ3RGLENBQUMsQUFKb0IsQ0FJbkI7QUFtQkw7Ozs7R0FJRztBQUNILE1BQWEsVUFBVyxTQUFRLGtCQUFtQjtJQU1qRCxZQUFZLElBQWlDO1FBQzNDLEtBQUssRUFBRSxDQUFDO1FBTlY7O1dBRUc7UUFDSCxZQUFPLEdBQW1CLEVBQUUsQ0FBQztRQUkzQixpQkFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFRRCxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQWlCLEVBQUUsT0FBb0M7UUFDdkUsT0FBTyxJQUFJLFVBQVUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBb0IsRUFBRSxPQUFrQztRQUN0RSxPQUFPLElBQUksVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxVQUFrQixFQUFFLE9BQWtDO1FBQzFFLE9BQU8sSUFBSSxVQUFVLEVBQUUsQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLENBQW9ELEVBQUUsQ0FBb0Q7UUFDdEgsT0FBTyxpQkFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5QyxDQUFDOztBQS9CSCxnQ0FnQ0M7QUFyQmlCLGtCQUFPLEdBQWtCLGlCQUFNLEFBQXhCLENBQXlCO0FBQ2hDLG1CQUFRLEdBQUcseUJBQXlCLEFBQTVCLENBQTZCO0FBQ3JDLGlCQUFNLEdBQWMsaUJBQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2pFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO0NBQzdFLENBQUMsQUFGb0IsQ0FFbkI7QUFtQkw7Ozs7O0dBS0c7QUFDSCxNQUFhLFdBQVksU0FBUSxrQkFBb0I7SUFnQm5ELFlBQVksSUFBa0M7UUFDNUMsS0FBSyxFQUFFLENBQUM7UUFoQlY7O1dBRUc7UUFDSCxZQUFPLEdBQWdCLEVBQUUsQ0FBQztRQUUxQjs7V0FFRztRQUNILFdBQU0sR0FBcUIsRUFBRSxDQUFDO1FBUzVCLGlCQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQVVELE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBaUIsRUFBRSxPQUFvQztRQUN2RSxPQUFPLElBQUksV0FBVyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFvQixFQUFFLE9BQWtDO1FBQ3RFLE9BQU8sSUFBSSxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLFVBQWtCLEVBQUUsT0FBa0M7UUFDMUUsT0FBTyxJQUFJLFdBQVcsRUFBRSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBc0QsRUFBRSxDQUFzRDtRQUMxSCxPQUFPLGlCQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7O0FBM0NILGtDQTRDQztBQXZCaUIsbUJBQU8sR0FBa0IsaUJBQU0sQUFBeEIsQ0FBeUI7QUFDaEMsb0JBQVEsR0FBRywwQkFBMEIsQUFBN0IsQ0FBOEI7QUFDdEMsa0JBQU0sR0FBYyxpQkFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDakUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsdUJBQVMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO0lBQ3pFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLDRCQUFjLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtJQUM3RSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxtQkFBSyxFQUFFO0NBQ3BELENBQUMsQUFKb0IsQ0FJbkI7QUFtQkw7Ozs7R0FJRztBQUNILE1BQWEsV0FBWSxTQUFRLGtCQUFvQjtJQVduRCxZQUFZLElBQWtDO1FBQzVDLEtBQUssRUFBRSxDQUFDO1FBTlY7O1dBRUc7UUFDSCxXQUFNLEdBQVksRUFBRSxDQUFDO1FBSW5CLGlCQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQVNELE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBaUIsRUFBRSxPQUFvQztRQUN2RSxPQUFPLElBQUksV0FBVyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFvQixFQUFFLE9BQWtDO1FBQ3RFLE9BQU8sSUFBSSxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLFVBQWtCLEVBQUUsT0FBa0M7UUFDMUUsT0FBTyxJQUFJLFdBQVcsRUFBRSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBc0QsRUFBRSxDQUFzRDtRQUMxSCxPQUFPLGlCQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7O0FBckNILGtDQXNDQztBQXRCaUIsbUJBQU8sR0FBa0IsaUJBQU0sQUFBeEIsQ0FBeUI7QUFDaEMsb0JBQVEsR0FBRywwQkFBMEIsQUFBN0IsQ0FBOEI7QUFDdEMsa0JBQU0sR0FBYyxpQkFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDakUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsdUJBQVMsRUFBRTtJQUN2RCxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxpQkFBTSxDQUFDLFdBQVcsQ0FBQyxtQkFBSyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtDQUN0RixDQUFDLEFBSG9CLENBR25CO0FBbUJMOzs7O0dBSUc7QUFDSCxNQUFhLFVBQVcsU0FBUSxrQkFBbUI7SUFNakQsWUFBWSxJQUFpQztRQUMzQyxLQUFLLEVBQUUsQ0FBQztRQU5WOztXQUVHO1FBQ0gsWUFBTyxHQUFrQixFQUFFLENBQUM7UUFJMUIsaUJBQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBUUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFpQixFQUFFLE9BQW9DO1FBQ3ZFLE9BQU8sSUFBSSxVQUFVLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQW9CLEVBQUUsT0FBa0M7UUFDdEUsT0FBTyxJQUFJLFVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsVUFBa0IsRUFBRSxPQUFrQztRQUMxRSxPQUFPLElBQUksVUFBVSxFQUFFLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFvRCxFQUFFLENBQW9EO1FBQ3RILE9BQU8saUJBQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUMsQ0FBQzs7QUEvQkgsZ0NBZ0NDO0FBckJpQixrQkFBTyxHQUFrQixpQkFBTSxBQUF4QixDQUF5QjtBQUNoQyxtQkFBUSxHQUFHLHlCQUF5QixBQUE1QixDQUE2QjtBQUNyQyxpQkFBTSxHQUFjLGlCQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNqRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtDQUM1RSxDQUFDLEFBRm9CLENBRW5CO0FBbUJMOzs7OztHQUtHO0FBQ0gsTUFBYSxXQUFZLFNBQVEsa0JBQW9CO0lBV25ELFlBQVksSUFBa0M7UUFDNUMsS0FBSyxFQUFFLENBQUM7UUFOVjs7V0FFRztRQUNILFdBQU0sR0FBcUIsRUFBRSxDQUFDO1FBSTVCLGlCQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQVNELE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBaUIsRUFBRSxPQUFvQztRQUN2RSxPQUFPLElBQUksV0FBVyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFvQixFQUFFLE9BQWtDO1FBQ3RFLE9BQU8sSUFBSSxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLFVBQWtCLEVBQUUsT0FBa0M7UUFDMUUsT0FBTyxJQUFJLFdBQVcsRUFBRSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBc0QsRUFBRSxDQUFzRDtRQUMxSCxPQUFPLGlCQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7O0FBckNILGtDQXNDQztBQXRCaUIsbUJBQU8sR0FBa0IsaUJBQU0sQUFBeEIsQ0FBeUI7QUFDaEMsb0JBQVEsR0FBRywwQkFBMEIsQUFBN0IsQ0FBOEI7QUFDdEMsa0JBQU0sR0FBYyxpQkFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDakUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsbUJBQUssRUFBRTtJQUNuRCxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSw0QkFBYyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Q0FDOUUsQ0FBQyxBQUhvQixDQUduQjtBQW1CTDs7R0FFRztBQUNILE1BQWEscUJBQXNCLFNBQVEsa0JBQThCO0lBTXZFLFlBQVksSUFBNEM7UUFDdEQsS0FBSyxFQUFFLENBQUM7UUFOVjs7V0FFRztRQUNILFlBQU8sR0FBa0IsRUFBRSxDQUFDO1FBSTFCLGlCQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQVFELE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBaUIsRUFBRSxPQUFvQztRQUN2RSxPQUFPLElBQUkscUJBQXFCLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQW9CLEVBQUUsT0FBa0M7UUFDdEUsT0FBTyxJQUFJLHFCQUFxQixFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxVQUFrQixFQUFFLE9BQWtDO1FBQzFFLE9BQU8sSUFBSSxxQkFBcUIsRUFBRSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBMEUsRUFBRSxDQUEwRTtRQUNsSyxPQUFPLGlCQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQzs7QUEvQkgsc0RBZ0NDO0FBckJpQiw2QkFBTyxHQUFrQixpQkFBTSxBQUF4QixDQUF5QjtBQUNoQyw4QkFBUSxHQUFHLG9DQUFvQyxBQUF2QyxDQUF3QztBQUNoRCw0QkFBTSxHQUFjLGlCQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNqRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtDQUM1RSxDQUFDLEFBRm9CLENBRW5CO0FBbUJMOztHQUVHO0FBQ0gsTUFBYSxzQkFBdUIsU0FBUSxrQkFBK0I7SUFXekUsWUFBWSxJQUE2QztRQUN2RCxLQUFLLEVBQUUsQ0FBQztRQU5WOztXQUVHO1FBQ0gsV0FBTSxHQUFxQixFQUFFLENBQUM7UUFJNUIsaUJBQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBU0QsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFpQixFQUFFLE9BQW9DO1FBQ3ZFLE9BQU8sSUFBSSxzQkFBc0IsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBb0IsRUFBRSxPQUFrQztRQUN0RSxPQUFPLElBQUksc0JBQXNCLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLFVBQWtCLEVBQUUsT0FBa0M7UUFDMUUsT0FBTyxJQUFJLHNCQUFzQixFQUFFLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUE0RSxFQUFFLENBQTRFO1FBQ3RLLE9BQU8saUJBQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLHNCQUFzQixFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxRCxDQUFDOztBQXJDSCx3REFzQ0M7QUF0QmlCLDhCQUFPLEdBQWtCLGlCQUFNLEFBQXhCLENBQXlCO0FBQ2hDLCtCQUFRLEdBQUcscUNBQXFDLEFBQXhDLENBQXlDO0FBQ2pELDZCQUFNLEdBQWMsaUJBQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2pFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLG1CQUFLLEVBQUU7SUFDbkQsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsNEJBQWMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO0NBQzlFLENBQUMsQUFIb0IsQ0FHbkI7QUFtQkw7Ozs7R0FJRztBQUNILE1BQWEsY0FBZSxTQUFRLGtCQUF1QjtJQWdCekQsWUFBWSxJQUFxQztRQUMvQyxLQUFLLEVBQUUsQ0FBQztRQWhCVjs7V0FFRztRQUNILFNBQUksR0FBRyxFQUFFLENBQUM7UUFFVjs7V0FFRztRQUNILFNBQUksR0FBRyxrQkFBSSxDQUFDLFdBQVcsQ0FBQztRQUV4Qjs7V0FFRztRQUNILFdBQU0sR0FBWSxFQUFFLENBQUM7UUFJbkIsaUJBQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBVUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFpQixFQUFFLE9BQW9DO1FBQ3ZFLE9BQU8sSUFBSSxjQUFjLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQW9CLEVBQUUsT0FBa0M7UUFDdEUsT0FBTyxJQUFJLGNBQWMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsVUFBa0IsRUFBRSxPQUFrQztRQUMxRSxPQUFPLElBQUksY0FBYyxFQUFFLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUE0RCxFQUFFLENBQTREO1FBQ3RJLE9BQU8saUJBQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEQsQ0FBQzs7QUEzQ0gsd0NBNENDO0FBdkJpQixzQkFBTyxHQUFrQixpQkFBTSxBQUF4QixDQUF5QjtBQUNoQyx1QkFBUSxHQUFHLDZCQUE2QixBQUFoQyxDQUFpQztBQUN6QyxxQkFBTSxHQUFjLGlCQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNqRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsdUJBQXVCLEVBQUU7SUFDckUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsaUJBQU0sQ0FBQyxXQUFXLENBQUMsa0JBQUksQ0FBQyxFQUFFO0lBQ2xFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLGlCQUFNLENBQUMsV0FBVyxDQUFDLG1CQUFLLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO0NBQ3RGLENBQUMsQUFKb0IsQ0FJbkI7QUFtQkw7Ozs7R0FJRztBQUNILE1BQWEsZ0JBQWlCLFNBQVEsa0JBQXlCO0lBTTdELFlBQVksSUFBdUM7UUFDakQsS0FBSyxFQUFFLENBQUM7UUFOVjs7V0FFRztRQUNILFlBQU8sR0FBcUIsRUFBRSxDQUFDO1FBSTdCLGlCQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQVFELE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBaUIsRUFBRSxPQUFvQztRQUN2RSxPQUFPLElBQUksZ0JBQWdCLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQW9CLEVBQUUsT0FBa0M7UUFDdEUsT0FBTyxJQUFJLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxVQUFrQixFQUFFLE9BQWtDO1FBQzFFLE9BQU8sSUFBSSxnQkFBZ0IsRUFBRSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBZ0UsRUFBRSxDQUFnRTtRQUM5SSxPQUFPLGlCQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDcEQsQ0FBQzs7QUEvQkgsNENBZ0NDO0FBckJpQix3QkFBTyxHQUFrQixpQkFBTSxBQUF4QixDQUF5QjtBQUNoQyx5QkFBUSxHQUFHLCtCQUErQixBQUFsQyxDQUFtQztBQUMzQyx1QkFBTSxHQUFjLGlCQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNqRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtDQUMvRSxDQUFDLEFBRm9CLENBRW5CO0FBbUJMOzs7O0dBSUc7QUFDSCxNQUFhLGlCQUFrQixTQUFRLGtCQUEwQjtJQU0vRCxZQUFZLElBQXdDO1FBQ2xELEtBQUssRUFBRSxDQUFDO1FBTlY7O1dBRUc7UUFDSCxZQUFPLEdBQWtCLEVBQUUsQ0FBQztRQUkxQixpQkFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFRRCxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQWlCLEVBQUUsT0FBb0M7UUFDdkUsT0FBTyxJQUFJLGlCQUFpQixFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFvQixFQUFFLE9BQWtDO1FBQ3RFLE9BQU8sSUFBSSxpQkFBaUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsVUFBa0IsRUFBRSxPQUFrQztRQUMxRSxPQUFPLElBQUksaUJBQWlCLEVBQUUsQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLENBQWtFLEVBQUUsQ0FBa0U7UUFDbEosT0FBTyxpQkFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7O0FBL0JILDhDQWdDQztBQXJCaUIseUJBQU8sR0FBa0IsaUJBQU0sQUFBeEIsQ0FBeUI7QUFDaEMsMEJBQVEsR0FBRyxnQ0FBZ0MsQUFBbkMsQ0FBb0M7QUFDNUMsd0JBQU0sR0FBYyxpQkFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDakUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Q0FDNUUsQ0FBQyxBQUZvQixDQUVuQjtBQW1CTDs7OztHQUlHO0FBQ0gsTUFBYSxvQkFBcUIsU0FBUSxrQkFBNkI7SUFDckUsWUFBWSxJQUEyQztRQUNyRCxLQUFLLEVBQUUsQ0FBQztRQUNSLGlCQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQU9ELE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBaUIsRUFBRSxPQUFvQztRQUN2RSxPQUFPLElBQUksb0JBQW9CLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQW9CLEVBQUUsT0FBa0M7UUFDdEUsT0FBTyxJQUFJLG9CQUFvQixFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxVQUFrQixFQUFFLE9BQWtDO1FBQzFFLE9BQU8sSUFBSSxvQkFBb0IsRUFBRSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBd0UsRUFBRSxDQUF3RTtRQUM5SixPQUFPLGlCQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQzs7QUF6Qkgsb0RBMEJDO0FBcEJpQiw0QkFBTyxHQUFrQixpQkFBTSxDQUFDO0FBQ2hDLDZCQUFRLEdBQUcsbUNBQW1DLENBQUM7QUFDL0MsMkJBQU0sR0FBYyxpQkFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsRUFDbEUsQ0FBQyxDQUFDO0FBbUJMOztHQUVHO0FBQ0gsTUFBYSxxQkFBc0IsU0FBUSxrQkFBOEI7SUFXdkUsWUFBWSxJQUE0QztRQUN0RCxLQUFLLEVBQUUsQ0FBQztRQVhWOztXQUVHO1FBQ0gsU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUVWOztXQUVHO1FBQ0gsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUlYLGlCQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQVNELE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBaUIsRUFBRSxPQUFvQztRQUN2RSxPQUFPLElBQUkscUJBQXFCLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQW9CLEVBQUUsT0FBa0M7UUFDdEUsT0FBTyxJQUFJLHFCQUFxQixFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxVQUFrQixFQUFFLE9BQWtDO1FBQzFFLE9BQU8sSUFBSSxxQkFBcUIsRUFBRSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBMEUsRUFBRSxDQUEwRTtRQUNsSyxPQUFPLGlCQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQzs7QUFyQ0gsc0RBc0NDO0FBdEJpQiw2QkFBTyxHQUFrQixpQkFBTSxBQUF4QixDQUF5QjtBQUNoQyw4QkFBUSxHQUFHLG9DQUFvQyxBQUF2QyxDQUF3QztBQUNoRCw0QkFBTSxHQUFjLGlCQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNqRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsdUJBQXVCLEVBQUU7SUFDckUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLHVCQUF1QixFQUFFO0NBQ3pFLENBQUMsQUFIb0IsQ0FHbkIifQ== \ No newline at end of file diff --git a/typescript/examples/aicar/gen/kuksa/val/v1/val_pb.ts b/typescript/examples/aicar/src/gen/kuksa/val/v1/val_pb.ts similarity index 100% rename from typescript/examples/aicar/gen/kuksa/val/v1/val_pb.ts rename to typescript/examples/aicar/src/gen/kuksa/val/v1/val_pb.ts diff --git a/typescript/examples/aicar/input.txt b/typescript/examples/aicar/src/input.txt similarity index 100% rename from typescript/examples/aicar/input.txt rename to typescript/examples/aicar/src/input.txt diff --git a/typescript/examples/aicar/main.ts b/typescript/examples/aicar/src/main.ts similarity index 96% rename from typescript/examples/aicar/main.ts rename to typescript/examples/aicar/src/main.ts index 77eb9f85..268c7a2f 100644 --- a/typescript/examples/aicar/main.ts +++ b/typescript/examples/aicar/src/main.ts @@ -3,7 +3,7 @@ import dotenv from "dotenv"; import findConfig from "find-config"; import fs from "fs"; import path from "path"; -import { createJsonTranslator, createLanguageModel } from "typechat"; +import { createJsonTranslator } from "typechat"; import { createTypeScriptJsonValidator } from "typechat/ts"; import { processRequests } from "typechat/interactive"; import { CarActions } from "./SDVCarActionSchema"; @@ -17,7 +17,7 @@ const modelConfigPath = findConfig("modelconfig.json"); assert(dotEnvPath, ".env file not found!"); dotenv.config({ path: dotEnvPath }); -const llmodel = createLLM(inputOptions, modelConfigPath ?? undefined); +const llmodel = createLLM(inputOptions, modelConfigPath ?? undefined)!; const schema = fs.readFileSync(path.join(__dirname, "SDVCarActionSchema.ts"), "utf8"); const validator = createTypeScriptJsonValidator(schema, "CarActions"); const translator = createJsonTranslator(llmodel, validator); diff --git a/typescript/examples/aicar/src/tsconfig.json b/typescript/examples/aicar/src/tsconfig.json new file mode 100644 index 00000000..3c52b822 --- /dev/null +++ b/typescript/examples/aicar/src/tsconfig.json @@ -0,0 +1,23 @@ +{ + "include": [ + "." + ], + "compilerOptions": { + "target": "es2021", + "lib": ["es2021"], + "module": "node16", + "allowJs": true, + "types": ["node"], + "outDir": "../dist", + "rootDirs": ["../gen"], + "esModuleInterop": true, + "moduleResolution": "NodeNext", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noUnusedLocals": false, + "inlineSourceMap": true, + "declaration": true, + "composite": true, + "skipLibCheck": true + } + } \ No newline at end of file diff --git a/typescript/examples/aicar/utils.ts b/typescript/examples/aicar/src/utils.ts similarity index 95% rename from typescript/examples/aicar/utils.ts rename to typescript/examples/aicar/src/utils.ts index b3d572d2..61180ea9 100644 --- a/typescript/examples/aicar/utils.ts +++ b/typescript/examples/aicar/src/utils.ts @@ -1,10 +1,9 @@ import { z } from "zod"; -import { VAL} from "./gen/kuksa/val/v1/val_connect"; -import { GetRequest, SetRequest} from "./gen/kuksa/val/v1/val_pb"; +import { VAL} from "../src/gen/kuksa/val/v1/val_connect"; +import { GetRequest, SetRequest} from "../src/gen/kuksa/val/v1/val_pb"; import { createPromiseClient } from "@connectrpc/connect"; import { createGrpcTransport } from "@connectrpc/connect-node"; import { Command, Option, OptionValues } from 'commander'; -import path from "path"; import { createAzureOpenAILanguageModel, createLanguageModel,createOpenAILanguageModel } from "typechat"; import fs from "fs"; @@ -72,7 +71,6 @@ export const SDVSetResponse = z.object({ }) export type Error = { - code: 0; reason: ""; message: ""; @@ -94,7 +92,7 @@ export interface ModelConfig { modelDetails: ModelDetails; } -export async function validateCarResponse(request, translator) { +export async function validateCarResponse(request: string, translator: any) { const transport = createGrpcTransport({baseUrl: "http://localhost:55556",httpVersion: "2"}); //assumes local databroker on commonly used port const vl = createPromiseClient(VAL, transport); let requestTracking: requestTracking = {request: request}; diff --git a/typescript/examples/sentiment/src/tsconfig.json b/typescript/examples/sentiment/src/tsconfig.json index 0f8bbec6..07010f4f 100644 --- a/typescript/examples/sentiment/src/tsconfig.json +++ b/typescript/examples/sentiment/src/tsconfig.json @@ -6,6 +6,7 @@ "types": ["node"], "outDir": "../dist", "esModuleInterop": true, + "moduleResolution": "Node16", "forceConsistentCasingInFileNames": true, "strict": true, "noUnusedLocals": true, diff --git a/typescript/package-lock.json b/typescript/package-lock.json index 00848953..83d6da40 100644 --- a/typescript/package-lock.json +++ b/typescript/package-lock.json @@ -35,11 +35,44 @@ "version": "0.0.1", "license": "MIT", "dependencies": { + "@bufbuild/buf": "^1.39.0", + "@bufbuild/protobuf": "^1.10.0", + "@bufbuild/protoc-gen-es": "^1.10.0", + "@connectrpc/connect": "^1.4.0", "@connectrpc/connect-node": "^1.4.0", + "@connectrpc/protoc-gen-connect-es": "^1.4.0", + "assert": "^2.1.0", "commander": "^12.1.0", - "ts-progress": "^0.1.9" + "dotenv": "^16.4.5", + "find-config": "^1.0.0", + "ts-progress": "^0.1.9", + "typescript": "^5.5.4", + "zod": "^3.23.8" + }, + "devDependencies": { + "@types/assert": "^1.5.10", + "@types/find-config": "^1.0.4", + "@types/node": "^22.5.1", + "copyfiles": "^2.4.1" + } + }, + "examples/aicar/node_modules/@types/node": { + "version": "22.5.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.1.tgz", + "integrity": "sha512-KkHsxej0j9IW1KKOOAA/XBA0z08UFSrRQHErzEfA3Vgq57eXIMYboIlHJuYIfd+lwCQjtKqUu3UnmKbtUc9yRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.19.2" } }, + "examples/aicar/node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "dev": true, + "license": "MIT" + }, "examples/calendar": { "version": "0.0.1", "license": "MIT", @@ -218,19 +251,184 @@ "typescript": "^5.3.3" } }, + "node_modules/@bufbuild/buf": { + "version": "1.39.0", + "resolved": "https://registry.npmjs.org/@bufbuild/buf/-/buf-1.39.0.tgz", + "integrity": "sha512-lm7xb9pc7X04rRjCQ69o9byAAZ7/dsUQGoH+iJ9uBSXQWiwQ1Ts8gneBnuUVsAH2vdW73NFBpmNQGE9XtFauVQ==", + "hasInstallScript": true, + "license": "Apache-2.0", + "bin": { + "buf": "bin/buf", + "protoc-gen-buf-breaking": "bin/protoc-gen-buf-breaking", + "protoc-gen-buf-lint": "bin/protoc-gen-buf-lint" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@bufbuild/buf-darwin-arm64": "1.39.0", + "@bufbuild/buf-darwin-x64": "1.39.0", + "@bufbuild/buf-linux-aarch64": "1.39.0", + "@bufbuild/buf-linux-x64": "1.39.0", + "@bufbuild/buf-win32-arm64": "1.39.0", + "@bufbuild/buf-win32-x64": "1.39.0" + } + }, + "node_modules/@bufbuild/buf-darwin-arm64": { + "version": "1.39.0", + "resolved": "https://registry.npmjs.org/@bufbuild/buf-darwin-arm64/-/buf-darwin-arm64-1.39.0.tgz", + "integrity": "sha512-Ptl0uAGssLxQTzoZhGwv1FFTbzUfcstIpEwMhN+XrwiuqsSxOg9eq/n3yXoci5VJsHokjDUHnWkR3y+j5P/5KA==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@bufbuild/buf-darwin-x64": { + "version": "1.39.0", + "resolved": "https://registry.npmjs.org/@bufbuild/buf-darwin-x64/-/buf-darwin-x64-1.39.0.tgz", + "integrity": "sha512-XNCuy9sjQwVJ4NIZqxaTIyzUtlyquSkp/Uuoh5W5thJ3nzZ5RSgvXKF5iXHhZmesrfRGApktwoCx5Am8runsfQ==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@bufbuild/buf-linux-aarch64": { + "version": "1.39.0", + "resolved": "https://registry.npmjs.org/@bufbuild/buf-linux-aarch64/-/buf-linux-aarch64-1.39.0.tgz", + "integrity": "sha512-Am+hrw94awp/eY027ROXwRQBuwAzOpQ/4zI4dgmgsyhzeWZ8w1LWC8z2SSr8T2cqd0cm52KxtoWMW+B3b2qzbw==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@bufbuild/buf-linux-x64": { + "version": "1.39.0", + "resolved": "https://registry.npmjs.org/@bufbuild/buf-linux-x64/-/buf-linux-x64-1.39.0.tgz", + "integrity": "sha512-JXVkHoMrTvmpseqdoQPJJ6MRV7/vlloYtvXHHACEzVytYjljOYCNoVET/E5gLBco/edeXFMNc40cCi1KgL3rSw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@bufbuild/buf-win32-arm64": { + "version": "1.39.0", + "resolved": "https://registry.npmjs.org/@bufbuild/buf-win32-arm64/-/buf-win32-arm64-1.39.0.tgz", + "integrity": "sha512-akdGW02mo04wbLfjNMBQqxC4mPQ/L/vTU8/o79I67GSxyFYt7bKifvYIYhAA39C2gibHyB7ZLmoeRPbaU8wbYA==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@bufbuild/buf-win32-x64": { + "version": "1.39.0", + "resolved": "https://registry.npmjs.org/@bufbuild/buf-win32-x64/-/buf-win32-x64-1.39.0.tgz", + "integrity": "sha512-jos08UMg9iUZsGjPrNpLXP+FNk6q6GizO+bjee/GcI0kSijIzXYMg14goQr0TKlvqs/+IRAM5vZIokQBYlAENQ==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@bufbuild/protobuf": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-1.10.0.tgz", "integrity": "sha512-QDdVFLoN93Zjg36NoQPZfsVH9tZew7wKDKyV5qRdj8ntT4wQCOradQjRaTdwMhWUYsgKsvCINKKm87FdEk96Ag==", + "license": "(Apache-2.0 AND BSD-3-Clause)" + }, + "node_modules/@bufbuild/protoc-gen-es": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@bufbuild/protoc-gen-es/-/protoc-gen-es-1.10.0.tgz", + "integrity": "sha512-zBYBsVT/ul4uZb6F+kD7/k4sWNHVVbEPfJwKi0FDr+9VJo8MKIofI6pkr5ksBLr4fi/74r+e/75Xi/0clL5dXg==", + "license": "Apache-2.0", + "dependencies": { + "@bufbuild/protobuf": "^1.10.0", + "@bufbuild/protoplugin": "1.10.0" + }, + "bin": { + "protoc-gen-es": "bin/protoc-gen-es" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@bufbuild/protobuf": "1.10.0" + }, + "peerDependenciesMeta": { + "@bufbuild/protobuf": { + "optional": true + } + } + }, + "node_modules/@bufbuild/protoplugin": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@bufbuild/protoplugin/-/protoplugin-1.10.0.tgz", + "integrity": "sha512-u6NE4vL0lw1+EK4/PiE/SQB7fKO4LRJNTEScIXVOi2x88K/c8WKc/k0KyEaA0asVBMpwekJQZGnRyj04ZtN5Gg==", "license": "(Apache-2.0 AND BSD-3-Clause)", - "peer": true + "dependencies": { + "@bufbuild/protobuf": "1.10.0", + "@typescript/vfs": "^1.4.0", + "typescript": "4.5.2" + } + }, + "node_modules/@bufbuild/protoplugin/node_modules/typescript": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.2.tgz", + "integrity": "sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw==", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } }, "node_modules/@connectrpc/connect": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@connectrpc/connect/-/connect-1.4.0.tgz", "integrity": "sha512-vZeOkKaAjyV4+RH3+rJZIfDFJAfr+7fyYr6sLDKbYX3uuTVszhFe9/YKf5DNqrDb5cKdKVlYkGn6DTDqMitAnA==", "license": "Apache-2.0", - "peer": true, "peerDependencies": { "@bufbuild/protobuf": "^1.4.2" } @@ -251,6 +449,34 @@ "@connectrpc/connect": "1.4.0" } }, + "node_modules/@connectrpc/protoc-gen-connect-es": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@connectrpc/protoc-gen-connect-es/-/protoc-gen-connect-es-1.4.0.tgz", + "integrity": "sha512-/7vQ8Q7mEBhV8qEVh/eifRQlQnf8EJ6weMwCD2DljVAQRlZYcW9SLxjYZhV1uM1ZZqQC7Cw2vvgXRg2XQswHBg==", + "license": "Apache-2.0", + "dependencies": { + "@bufbuild/protobuf": "^1.7.2", + "@bufbuild/protoplugin": "^1.7.2" + }, + "bin": { + "protoc-gen-connect-es": "bin/protoc-gen-connect-es" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@bufbuild/protoc-gen-es": "^1.7.2", + "@connectrpc/connect": "1.4.0" + }, + "peerDependenciesMeta": { + "@bufbuild/protoc-gen-es": { + "optional": true + }, + "@connectrpc/connect": { + "optional": true + } + } + }, "node_modules/@fastify/busboy": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", @@ -299,6 +525,13 @@ "node": ">= 6" } }, + "node_modules/@types/assert": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/@types/assert/-/assert-1.5.10.tgz", + "integrity": "sha512-qEO+AUgYab7GVbeDDgUNCU3o0aZUoIMpNAe+w5LDbRxfxQX7vQAdDgwj1AroX+i8KaV56FWg0srXlSZROnsrIQ==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/body-parser": { "version": "1.19.5", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", @@ -346,7 +579,8 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/@types/find-config/-/find-config-1.0.4.tgz", "integrity": "sha512-BCXaKgzHK7KnfCQBRQBWGTA+QajOE9uFolXPt+9EktiiMS56D8oXF2ZCh9eCxuEyfqDmX/mYIcmWg9j9f659eg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/http-errors": { "version": "2.0.4", @@ -408,6 +642,41 @@ "integrity": "sha512-oZLKiI6Fck/BGd0QdmIdJCY351xQfRkfpx2Q23jIntL3YQx85vScYuFJMK81/NoSK9m7HYOl2DW4A9WomDuJOA==", "dev": true }, + "node_modules/@typescript/vfs": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@typescript/vfs/-/vfs-1.6.0.tgz", + "integrity": "sha512-hvJUjNVeBMp77qPINuUvYXj4FyWeeMMKZkxEATEU3hqBAQ7qdTBCUFT7Sp0Zu0faeEtFf+ldXxMEDr/bk73ISg==", + "license": "MIT", + "dependencies": { + "debug": "^4.1.1" + }, + "peerDependencies": { + "typescript": "*" + } + }, + "node_modules/@typescript/vfs/node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript/vfs/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "license": "MIT" + }, "node_modules/abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -557,11 +826,39 @@ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, + "node_modules/assert": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", + "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "is-nan": "^1.3.2", + "object-is": "^1.1.5", + "object.assign": "^4.1.4", + "util": "^0.12.5" + } + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/axios": { "version": "1.6.7", "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", @@ -970,6 +1267,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -1013,6 +1327,7 @@ "version": "16.4.5", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "license": "BSD-2-Clause", "engines": { "node": ">=12" }, @@ -1207,6 +1522,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/find-config/-/find-config-1.0.0.tgz", "integrity": "sha512-Z+suHH+7LSE40WfUeZPIxSxypCWvrzdVc60xAjUShZeT5eMWM0/FQUduq3HjluyfAHWvC/aOBkT1pTZktyF/jg==", + "license": "MIT", "dependencies": { "user-home": "^2.0.0" }, @@ -1233,6 +1549,15 @@ } } }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.3" + } + }, "node_modules/form-data": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", @@ -1421,6 +1746,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", @@ -1640,6 +1980,34 @@ "node": ">= 0.10" } }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-docker": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", @@ -1663,12 +2031,58 @@ "node": ">=8" } }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-lambda": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", "optional": true }, + "node_modules/is-nan": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", + "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", @@ -2043,6 +2457,49 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/object-is": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", @@ -2122,6 +2579,15 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/prebuild-install": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.2.tgz", @@ -2809,9 +3275,10 @@ "link": true }, "node_modules/typescript": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -2884,6 +3351,19 @@ "node": ">=0.10.0" } }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -2920,6 +3400,25 @@ "node": ">= 8" } }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/wide-align": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", @@ -3035,9 +3534,10 @@ } }, "node_modules/zod": { - "version": "3.22.4", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz", - "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==", + "version": "3.23.8", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", + "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" } From d618f8baa362f95327b320d1e27dccc04a948310 Mon Sep 17 00:00:00 2001 From: brclarkdev <31588123+brclarkdev@users.noreply.github.com> Date: Thu, 29 Aug 2024 21:54:05 +0000 Subject: [PATCH 09/14] updated zod imp for build --- .../aicar-zod/gen/kuksa/val/v1/val_pb.js | 470 --------- .../{ => src}/SDVCarActionZodSchema.ts | 0 .../src/gen/kuksa/val/v1/types_pb.d.ts | 970 ++++++++++++++++++ .../{ => src}/gen/kuksa/val/v1/types_pb.js | 1 + .../{ => src}/gen/kuksa/val/v1/types_pb.ts | 0 .../src/gen/kuksa/val/v1/val_connect.d.ts | 69 ++ .../{ => src}/gen/kuksa/val/v1/val_connect.js | 1 + .../{ => src}/gen/kuksa/val/v1/val_connect.ts | 0 .../src/gen/kuksa/val/v1/val_pb.d.ts | 282 +++++ .../aicar-zod/src/gen/kuksa/val/v1/val_pb.js | 471 +++++++++ .../{ => src}/gen/kuksa/val/v1/val_pb.ts | 0 .../examples/aicar-zod/{ => src}/input.txt | 0 .../examples/aicar-zod/{ => src}/main.ts | 0 .../examples/aicar-zod/src/tsconfig.json | 23 + .../examples/aicar-zod/{ => src}/utils.ts | 0 15 files changed, 1817 insertions(+), 470 deletions(-) delete mode 100644 typescript/examples/aicar-zod/gen/kuksa/val/v1/val_pb.js rename typescript/examples/aicar-zod/{ => src}/SDVCarActionZodSchema.ts (100%) create mode 100644 typescript/examples/aicar-zod/src/gen/kuksa/val/v1/types_pb.d.ts rename typescript/examples/aicar-zod/{ => src}/gen/kuksa/val/v1/types_pb.js (50%) rename typescript/examples/aicar-zod/{ => src}/gen/kuksa/val/v1/types_pb.ts (100%) create mode 100644 typescript/examples/aicar-zod/src/gen/kuksa/val/v1/val_connect.d.ts rename typescript/examples/aicar-zod/{ => src}/gen/kuksa/val/v1/val_connect.js (66%) rename typescript/examples/aicar-zod/{ => src}/gen/kuksa/val/v1/val_connect.ts (100%) create mode 100644 typescript/examples/aicar-zod/src/gen/kuksa/val/v1/val_pb.d.ts create mode 100644 typescript/examples/aicar-zod/src/gen/kuksa/val/v1/val_pb.js rename typescript/examples/aicar-zod/{ => src}/gen/kuksa/val/v1/val_pb.ts (100%) rename typescript/examples/aicar-zod/{ => src}/input.txt (100%) rename typescript/examples/aicar-zod/{ => src}/main.ts (100%) create mode 100644 typescript/examples/aicar-zod/src/tsconfig.json rename typescript/examples/aicar-zod/{ => src}/utils.ts (100%) diff --git a/typescript/examples/aicar-zod/gen/kuksa/val/v1/val_pb.js b/typescript/examples/aicar-zod/gen/kuksa/val/v1/val_pb.js deleted file mode 100644 index 66c9a1b2..00000000 --- a/typescript/examples/aicar-zod/gen/kuksa/val/v1/val_pb.js +++ /dev/null @@ -1,470 +0,0 @@ -"use strict"; -//******************************************************************************* -// Copyright (c) 2022 Contributors to the Eclipse Foundation -// -// See the NOTICE file(s) distributed with this work for additional -// information regarding copyright ownership. -// -// This program and the accompanying materials are made available under the -// terms of the Apache License 2.0 which is available at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// SPDX-License-Identifier: Apache-2.0 -//****************************************************************************** -Object.defineProperty(exports, "__esModule", { value: true }); -exports.GetServerInfoResponse = exports.GetServerInfoRequest = exports.SubscribeResponse = exports.SubscribeRequest = exports.SubscribeEntry = exports.StreamedUpdateResponse = exports.StreamedUpdateRequest = exports.SetResponse = exports.SetRequest = exports.EntryUpdate = exports.GetResponse = exports.GetRequest = exports.EntryRequest = void 0; -const protobuf_1 = require("@bufbuild/protobuf"); -const types_pb_js_1 = require("./types_pb.js"); -/** - * Define which data we want - * - * @generated from message kuksa.val.v1.EntryRequest - */ -class EntryRequest extends protobuf_1.Message { - constructor(data) { - super(); - /** - * @generated from field: string path = 1; - */ - this.path = ""; - /** - * @generated from field: kuksa.val.v1.View view = 2; - */ - this.view = types_pb_js_1.View.UNSPECIFIED; - /** - * @generated from field: repeated kuksa.val.v1.Field fields = 3; - */ - this.fields = []; - protobuf_1.proto3.util.initPartial(data, this); - } - static fromBinary(bytes, options) { - return new EntryRequest().fromBinary(bytes, options); - } - static fromJson(jsonValue, options) { - return new EntryRequest().fromJson(jsonValue, options); - } - static fromJsonString(jsonString, options) { - return new EntryRequest().fromJsonString(jsonString, options); - } - static equals(a, b) { - return protobuf_1.proto3.util.equals(EntryRequest, a, b); - } -} -exports.EntryRequest = EntryRequest; -EntryRequest.runtime = protobuf_1.proto3; -EntryRequest.typeName = "kuksa.val.v1.EntryRequest"; -EntryRequest.fields = protobuf_1.proto3.util.newFieldList(() => [ - { no: 1, name: "path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "view", kind: "enum", T: protobuf_1.proto3.getEnumType(types_pb_js_1.View) }, - { no: 3, name: "fields", kind: "enum", T: protobuf_1.proto3.getEnumType(types_pb_js_1.Field), repeated: true }, -]); -/** - * Request a set of entries. - * - * @generated from message kuksa.val.v1.GetRequest - */ -class GetRequest extends protobuf_1.Message { - constructor(data) { - super(); - /** - * @generated from field: repeated kuksa.val.v1.EntryRequest entries = 1; - */ - this.entries = []; - protobuf_1.proto3.util.initPartial(data, this); - } - static fromBinary(bytes, options) { - return new GetRequest().fromBinary(bytes, options); - } - static fromJson(jsonValue, options) { - return new GetRequest().fromJson(jsonValue, options); - } - static fromJsonString(jsonString, options) { - return new GetRequest().fromJsonString(jsonString, options); - } - static equals(a, b) { - return protobuf_1.proto3.util.equals(GetRequest, a, b); - } -} -exports.GetRequest = GetRequest; -GetRequest.runtime = protobuf_1.proto3; -GetRequest.typeName = "kuksa.val.v1.GetRequest"; -GetRequest.fields = protobuf_1.proto3.util.newFieldList(() => [ - { no: 1, name: "entries", kind: "message", T: EntryRequest, repeated: true }, -]); -/** - * Global errors are specified in `error`. - * Errors for individual entries are specified in `errors`. - * - * @generated from message kuksa.val.v1.GetResponse - */ -class GetResponse extends protobuf_1.Message { - constructor(data) { - super(); - /** - * @generated from field: repeated kuksa.val.v1.DataEntry entries = 1; - */ - this.entries = []; - /** - * @generated from field: repeated kuksa.val.v1.DataEntryError errors = 2; - */ - this.errors = []; - protobuf_1.proto3.util.initPartial(data, this); - } - static fromBinary(bytes, options) { - return new GetResponse().fromBinary(bytes, options); - } - static fromJson(jsonValue, options) { - return new GetResponse().fromJson(jsonValue, options); - } - static fromJsonString(jsonString, options) { - return new GetResponse().fromJsonString(jsonString, options); - } - static equals(a, b) { - return protobuf_1.proto3.util.equals(GetResponse, a, b); - } -} -exports.GetResponse = GetResponse; -GetResponse.runtime = protobuf_1.proto3; -GetResponse.typeName = "kuksa.val.v1.GetResponse"; -GetResponse.fields = protobuf_1.proto3.util.newFieldList(() => [ - { no: 1, name: "entries", kind: "message", T: types_pb_js_1.DataEntry, repeated: true }, - { no: 2, name: "errors", kind: "message", T: types_pb_js_1.DataEntryError, repeated: true }, - { no: 3, name: "error", kind: "message", T: types_pb_js_1.Error }, -]); -/** - * Define the data we want to set - * - * @generated from message kuksa.val.v1.EntryUpdate - */ -class EntryUpdate extends protobuf_1.Message { - constructor(data) { - super(); - /** - * @generated from field: repeated kuksa.val.v1.Field fields = 2; - */ - this.fields = []; - protobuf_1.proto3.util.initPartial(data, this); - } - static fromBinary(bytes, options) { - return new EntryUpdate().fromBinary(bytes, options); - } - static fromJson(jsonValue, options) { - return new EntryUpdate().fromJson(jsonValue, options); - } - static fromJsonString(jsonString, options) { - return new EntryUpdate().fromJsonString(jsonString, options); - } - static equals(a, b) { - return protobuf_1.proto3.util.equals(EntryUpdate, a, b); - } -} -exports.EntryUpdate = EntryUpdate; -EntryUpdate.runtime = protobuf_1.proto3; -EntryUpdate.typeName = "kuksa.val.v1.EntryUpdate"; -EntryUpdate.fields = protobuf_1.proto3.util.newFieldList(() => [ - { no: 1, name: "entry", kind: "message", T: types_pb_js_1.DataEntry }, - { no: 2, name: "fields", kind: "enum", T: protobuf_1.proto3.getEnumType(types_pb_js_1.Field), repeated: true }, -]); -/** - * A list of entries to be updated - * - * @generated from message kuksa.val.v1.SetRequest - */ -class SetRequest extends protobuf_1.Message { - constructor(data) { - super(); - /** - * @generated from field: repeated kuksa.val.v1.EntryUpdate updates = 1; - */ - this.updates = []; - protobuf_1.proto3.util.initPartial(data, this); - } - static fromBinary(bytes, options) { - return new SetRequest().fromBinary(bytes, options); - } - static fromJson(jsonValue, options) { - return new SetRequest().fromJson(jsonValue, options); - } - static fromJsonString(jsonString, options) { - return new SetRequest().fromJsonString(jsonString, options); - } - static equals(a, b) { - return protobuf_1.proto3.util.equals(SetRequest, a, b); - } -} -exports.SetRequest = SetRequest; -SetRequest.runtime = protobuf_1.proto3; -SetRequest.typeName = "kuksa.val.v1.SetRequest"; -SetRequest.fields = protobuf_1.proto3.util.newFieldList(() => [ - { no: 1, name: "updates", kind: "message", T: EntryUpdate, repeated: true }, -]); -/** - * Global errors are specified in `error`. - * Errors for individual entries are specified in `errors`. - * - * @generated from message kuksa.val.v1.SetResponse - */ -class SetResponse extends protobuf_1.Message { - constructor(data) { - super(); - /** - * @generated from field: repeated kuksa.val.v1.DataEntryError errors = 2; - */ - this.errors = []; - protobuf_1.proto3.util.initPartial(data, this); - } - static fromBinary(bytes, options) { - return new SetResponse().fromBinary(bytes, options); - } - static fromJson(jsonValue, options) { - return new SetResponse().fromJson(jsonValue, options); - } - static fromJsonString(jsonString, options) { - return new SetResponse().fromJsonString(jsonString, options); - } - static equals(a, b) { - return protobuf_1.proto3.util.equals(SetResponse, a, b); - } -} -exports.SetResponse = SetResponse; -SetResponse.runtime = protobuf_1.proto3; -SetResponse.typeName = "kuksa.val.v1.SetResponse"; -SetResponse.fields = protobuf_1.proto3.util.newFieldList(() => [ - { no: 1, name: "error", kind: "message", T: types_pb_js_1.Error }, - { no: 2, name: "errors", kind: "message", T: types_pb_js_1.DataEntryError, repeated: true }, -]); -/** - * @generated from message kuksa.val.v1.StreamedUpdateRequest - */ -class StreamedUpdateRequest extends protobuf_1.Message { - constructor(data) { - super(); - /** - * @generated from field: repeated kuksa.val.v1.EntryUpdate updates = 1; - */ - this.updates = []; - protobuf_1.proto3.util.initPartial(data, this); - } - static fromBinary(bytes, options) { - return new StreamedUpdateRequest().fromBinary(bytes, options); - } - static fromJson(jsonValue, options) { - return new StreamedUpdateRequest().fromJson(jsonValue, options); - } - static fromJsonString(jsonString, options) { - return new StreamedUpdateRequest().fromJsonString(jsonString, options); - } - static equals(a, b) { - return protobuf_1.proto3.util.equals(StreamedUpdateRequest, a, b); - } -} -exports.StreamedUpdateRequest = StreamedUpdateRequest; -StreamedUpdateRequest.runtime = protobuf_1.proto3; -StreamedUpdateRequest.typeName = "kuksa.val.v1.StreamedUpdateRequest"; -StreamedUpdateRequest.fields = protobuf_1.proto3.util.newFieldList(() => [ - { no: 1, name: "updates", kind: "message", T: EntryUpdate, repeated: true }, -]); -/** - * @generated from message kuksa.val.v1.StreamedUpdateResponse - */ -class StreamedUpdateResponse extends protobuf_1.Message { - constructor(data) { - super(); - /** - * @generated from field: repeated kuksa.val.v1.DataEntryError errors = 2; - */ - this.errors = []; - protobuf_1.proto3.util.initPartial(data, this); - } - static fromBinary(bytes, options) { - return new StreamedUpdateResponse().fromBinary(bytes, options); - } - static fromJson(jsonValue, options) { - return new StreamedUpdateResponse().fromJson(jsonValue, options); - } - static fromJsonString(jsonString, options) { - return new StreamedUpdateResponse().fromJsonString(jsonString, options); - } - static equals(a, b) { - return protobuf_1.proto3.util.equals(StreamedUpdateResponse, a, b); - } -} -exports.StreamedUpdateResponse = StreamedUpdateResponse; -StreamedUpdateResponse.runtime = protobuf_1.proto3; -StreamedUpdateResponse.typeName = "kuksa.val.v1.StreamedUpdateResponse"; -StreamedUpdateResponse.fields = protobuf_1.proto3.util.newFieldList(() => [ - { no: 1, name: "error", kind: "message", T: types_pb_js_1.Error }, - { no: 2, name: "errors", kind: "message", T: types_pb_js_1.DataEntryError, repeated: true }, -]); -/** - * Define what to subscribe to - * - * @generated from message kuksa.val.v1.SubscribeEntry - */ -class SubscribeEntry extends protobuf_1.Message { - constructor(data) { - super(); - /** - * @generated from field: string path = 1; - */ - this.path = ""; - /** - * @generated from field: kuksa.val.v1.View view = 2; - */ - this.view = types_pb_js_1.View.UNSPECIFIED; - /** - * @generated from field: repeated kuksa.val.v1.Field fields = 3; - */ - this.fields = []; - protobuf_1.proto3.util.initPartial(data, this); - } - static fromBinary(bytes, options) { - return new SubscribeEntry().fromBinary(bytes, options); - } - static fromJson(jsonValue, options) { - return new SubscribeEntry().fromJson(jsonValue, options); - } - static fromJsonString(jsonString, options) { - return new SubscribeEntry().fromJsonString(jsonString, options); - } - static equals(a, b) { - return protobuf_1.proto3.util.equals(SubscribeEntry, a, b); - } -} -exports.SubscribeEntry = SubscribeEntry; -SubscribeEntry.runtime = protobuf_1.proto3; -SubscribeEntry.typeName = "kuksa.val.v1.SubscribeEntry"; -SubscribeEntry.fields = protobuf_1.proto3.util.newFieldList(() => [ - { no: 1, name: "path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "view", kind: "enum", T: protobuf_1.proto3.getEnumType(types_pb_js_1.View) }, - { no: 3, name: "fields", kind: "enum", T: protobuf_1.proto3.getEnumType(types_pb_js_1.Field), repeated: true }, -]); -/** - * Subscribe to changes in datapoints. - * - * @generated from message kuksa.val.v1.SubscribeRequest - */ -class SubscribeRequest extends protobuf_1.Message { - constructor(data) { - super(); - /** - * @generated from field: repeated kuksa.val.v1.SubscribeEntry entries = 1; - */ - this.entries = []; - protobuf_1.proto3.util.initPartial(data, this); - } - static fromBinary(bytes, options) { - return new SubscribeRequest().fromBinary(bytes, options); - } - static fromJson(jsonValue, options) { - return new SubscribeRequest().fromJson(jsonValue, options); - } - static fromJsonString(jsonString, options) { - return new SubscribeRequest().fromJsonString(jsonString, options); - } - static equals(a, b) { - return protobuf_1.proto3.util.equals(SubscribeRequest, a, b); - } -} -exports.SubscribeRequest = SubscribeRequest; -SubscribeRequest.runtime = protobuf_1.proto3; -SubscribeRequest.typeName = "kuksa.val.v1.SubscribeRequest"; -SubscribeRequest.fields = protobuf_1.proto3.util.newFieldList(() => [ - { no: 1, name: "entries", kind: "message", T: SubscribeEntry, repeated: true }, -]); -/** - * A subscription response - * - * @generated from message kuksa.val.v1.SubscribeResponse - */ -class SubscribeResponse extends protobuf_1.Message { - constructor(data) { - super(); - /** - * @generated from field: repeated kuksa.val.v1.EntryUpdate updates = 1; - */ - this.updates = []; - protobuf_1.proto3.util.initPartial(data, this); - } - static fromBinary(bytes, options) { - return new SubscribeResponse().fromBinary(bytes, options); - } - static fromJson(jsonValue, options) { - return new SubscribeResponse().fromJson(jsonValue, options); - } - static fromJsonString(jsonString, options) { - return new SubscribeResponse().fromJsonString(jsonString, options); - } - static equals(a, b) { - return protobuf_1.proto3.util.equals(SubscribeResponse, a, b); - } -} -exports.SubscribeResponse = SubscribeResponse; -SubscribeResponse.runtime = protobuf_1.proto3; -SubscribeResponse.typeName = "kuksa.val.v1.SubscribeResponse"; -SubscribeResponse.fields = protobuf_1.proto3.util.newFieldList(() => [ - { no: 1, name: "updates", kind: "message", T: EntryUpdate, repeated: true }, -]); -/** - * Nothing yet - * - * @generated from message kuksa.val.v1.GetServerInfoRequest - */ -class GetServerInfoRequest extends protobuf_1.Message { - constructor(data) { - super(); - protobuf_1.proto3.util.initPartial(data, this); - } - static fromBinary(bytes, options) { - return new GetServerInfoRequest().fromBinary(bytes, options); - } - static fromJson(jsonValue, options) { - return new GetServerInfoRequest().fromJson(jsonValue, options); - } - static fromJsonString(jsonString, options) { - return new GetServerInfoRequest().fromJsonString(jsonString, options); - } - static equals(a, b) { - return protobuf_1.proto3.util.equals(GetServerInfoRequest, a, b); - } -} -exports.GetServerInfoRequest = GetServerInfoRequest; -GetServerInfoRequest.runtime = protobuf_1.proto3; -GetServerInfoRequest.typeName = "kuksa.val.v1.GetServerInfoRequest"; -GetServerInfoRequest.fields = protobuf_1.proto3.util.newFieldList(() => []); -/** - * @generated from message kuksa.val.v1.GetServerInfoResponse - */ -class GetServerInfoResponse extends protobuf_1.Message { - constructor(data) { - super(); - /** - * @generated from field: string name = 1; - */ - this.name = ""; - /** - * @generated from field: string version = 2; - */ - this.version = ""; - protobuf_1.proto3.util.initPartial(data, this); - } - static fromBinary(bytes, options) { - return new GetServerInfoResponse().fromBinary(bytes, options); - } - static fromJson(jsonValue, options) { - return new GetServerInfoResponse().fromJson(jsonValue, options); - } - static fromJsonString(jsonString, options) { - return new GetServerInfoResponse().fromJsonString(jsonString, options); - } - static equals(a, b) { - return protobuf_1.proto3.util.equals(GetServerInfoResponse, a, b); - } -} -exports.GetServerInfoResponse = GetServerInfoResponse; -GetServerInfoResponse.runtime = protobuf_1.proto3; -GetServerInfoResponse.typeName = "kuksa.val.v1.GetServerInfoResponse"; -GetServerInfoResponse.fields = protobuf_1.proto3.util.newFieldList(() => [ - { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "version", kind: "scalar", T: 9 /* ScalarType.STRING */ }, -]); diff --git a/typescript/examples/aicar-zod/SDVCarActionZodSchema.ts b/typescript/examples/aicar-zod/src/SDVCarActionZodSchema.ts similarity index 100% rename from typescript/examples/aicar-zod/SDVCarActionZodSchema.ts rename to typescript/examples/aicar-zod/src/SDVCarActionZodSchema.ts diff --git a/typescript/examples/aicar-zod/src/gen/kuksa/val/v1/types_pb.d.ts b/typescript/examples/aicar-zod/src/gen/kuksa/val/v1/types_pb.d.ts new file mode 100644 index 00000000..f95de1f1 --- /dev/null +++ b/typescript/examples/aicar-zod/src/gen/kuksa/val/v1/types_pb.d.ts @@ -0,0 +1,970 @@ +import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; +import { Message, proto3, Timestamp } from "@bufbuild/protobuf"; +/** + * VSS Data type of a signal + * + * Protobuf doesn't support int8, int16, uint8 or uint16. + * These are mapped to int32 and uint32 respectively. + * + * + * @generated from enum kuksa.val.v1.DataType + */ +export declare enum DataType { + /** + * @generated from enum value: DATA_TYPE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + /** + * @generated from enum value: DATA_TYPE_STRING = 1; + */ + STRING = 1, + /** + * @generated from enum value: DATA_TYPE_BOOLEAN = 2; + */ + BOOLEAN = 2, + /** + * @generated from enum value: DATA_TYPE_INT8 = 3; + */ + INT8 = 3, + /** + * @generated from enum value: DATA_TYPE_INT16 = 4; + */ + INT16 = 4, + /** + * @generated from enum value: DATA_TYPE_INT32 = 5; + */ + INT32 = 5, + /** + * @generated from enum value: DATA_TYPE_INT64 = 6; + */ + INT64 = 6, + /** + * @generated from enum value: DATA_TYPE_UINT8 = 7; + */ + UINT8 = 7, + /** + * @generated from enum value: DATA_TYPE_UINT16 = 8; + */ + UINT16 = 8, + /** + * @generated from enum value: DATA_TYPE_UINT32 = 9; + */ + UINT32 = 9, + /** + * @generated from enum value: DATA_TYPE_UINT64 = 10; + */ + UINT64 = 10, + /** + * @generated from enum value: DATA_TYPE_FLOAT = 11; + */ + FLOAT = 11, + /** + * @generated from enum value: DATA_TYPE_DOUBLE = 12; + */ + DOUBLE = 12, + /** + * @generated from enum value: DATA_TYPE_TIMESTAMP = 13; + */ + TIMESTAMP = 13, + /** + * @generated from enum value: DATA_TYPE_STRING_ARRAY = 20; + */ + STRING_ARRAY = 20, + /** + * @generated from enum value: DATA_TYPE_BOOLEAN_ARRAY = 21; + */ + BOOLEAN_ARRAY = 21, + /** + * @generated from enum value: DATA_TYPE_INT8_ARRAY = 22; + */ + INT8_ARRAY = 22, + /** + * @generated from enum value: DATA_TYPE_INT16_ARRAY = 23; + */ + INT16_ARRAY = 23, + /** + * @generated from enum value: DATA_TYPE_INT32_ARRAY = 24; + */ + INT32_ARRAY = 24, + /** + * @generated from enum value: DATA_TYPE_INT64_ARRAY = 25; + */ + INT64_ARRAY = 25, + /** + * @generated from enum value: DATA_TYPE_UINT8_ARRAY = 26; + */ + UINT8_ARRAY = 26, + /** + * @generated from enum value: DATA_TYPE_UINT16_ARRAY = 27; + */ + UINT16_ARRAY = 27, + /** + * @generated from enum value: DATA_TYPE_UINT32_ARRAY = 28; + */ + UINT32_ARRAY = 28, + /** + * @generated from enum value: DATA_TYPE_UINT64_ARRAY = 29; + */ + UINT64_ARRAY = 29, + /** + * @generated from enum value: DATA_TYPE_FLOAT_ARRAY = 30; + */ + FLOAT_ARRAY = 30, + /** + * @generated from enum value: DATA_TYPE_DOUBLE_ARRAY = 31; + */ + DOUBLE_ARRAY = 31, + /** + * @generated from enum value: DATA_TYPE_TIMESTAMP_ARRAY = 32; + */ + TIMESTAMP_ARRAY = 32 +} +/** + * Entry type + * + * @generated from enum kuksa.val.v1.EntryType + */ +export declare enum EntryType { + /** + * @generated from enum value: ENTRY_TYPE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + /** + * @generated from enum value: ENTRY_TYPE_ATTRIBUTE = 1; + */ + ATTRIBUTE = 1, + /** + * @generated from enum value: ENTRY_TYPE_SENSOR = 2; + */ + SENSOR = 2, + /** + * @generated from enum value: ENTRY_TYPE_ACTUATOR = 3; + */ + ACTUATOR = 3 +} +/** + * A `View` specifies a set of fields which should + * be populated in a `DataEntry` (in a response message) + * + * @generated from enum kuksa.val.v1.View + */ +export declare enum View { + /** + * Unspecified. Equivalent to VIEW_CURRENT_VALUE unless `fields` are explicitly set. + * + * @generated from enum value: VIEW_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + /** + * Populate DataEntry with value. + * + * @generated from enum value: VIEW_CURRENT_VALUE = 1; + */ + CURRENT_VALUE = 1, + /** + * Populate DataEntry with actuator target. + * + * @generated from enum value: VIEW_TARGET_VALUE = 2; + */ + TARGET_VALUE = 2, + /** + * Populate DataEntry with metadata. + * + * @generated from enum value: VIEW_METADATA = 3; + */ + METADATA = 3, + /** + * Populate DataEntry only with requested fields. + * + * @generated from enum value: VIEW_FIELDS = 10; + */ + FIELDS = 10, + /** + * Populate DataEntry with everything. + * + * @generated from enum value: VIEW_ALL = 20; + */ + ALL = 20 +} +/** + * A `Field` corresponds to a specific field of a `DataEntry`. + * + * It can be used to: + * * populate only specific fields of a `DataEntry` response. + * * specify which fields of a `DataEntry` should be set as + * part of a `Set` request. + * * subscribe to only specific fields of a data entry. + * * convey which fields of an updated `DataEntry` have changed. + * + * @generated from enum kuksa.val.v1.Field + */ +export declare enum Field { + /** + * "*" i.e. everything + * + * @generated from enum value: FIELD_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + /** + * path + * + * @generated from enum value: FIELD_PATH = 1; + */ + PATH = 1, + /** + * value + * + * @generated from enum value: FIELD_VALUE = 2; + */ + VALUE = 2, + /** + * actuator_target + * + * @generated from enum value: FIELD_ACTUATOR_TARGET = 3; + */ + ACTUATOR_TARGET = 3, + /** + * metadata.* + * + * @generated from enum value: FIELD_METADATA = 10; + */ + METADATA = 10, + /** + * metadata.data_type + * + * @generated from enum value: FIELD_METADATA_DATA_TYPE = 11; + */ + METADATA_DATA_TYPE = 11, + /** + * metadata.description + * + * @generated from enum value: FIELD_METADATA_DESCRIPTION = 12; + */ + METADATA_DESCRIPTION = 12, + /** + * metadata.entry_type + * + * @generated from enum value: FIELD_METADATA_ENTRY_TYPE = 13; + */ + METADATA_ENTRY_TYPE = 13, + /** + * metadata.comment + * + * @generated from enum value: FIELD_METADATA_COMMENT = 14; + */ + METADATA_COMMENT = 14, + /** + * metadata.deprecation + * + * @generated from enum value: FIELD_METADATA_DEPRECATION = 15; + */ + METADATA_DEPRECATION = 15, + /** + * metadata.unit + * + * @generated from enum value: FIELD_METADATA_UNIT = 16; + */ + METADATA_UNIT = 16, + /** + * metadata.value_restriction.* + * + * @generated from enum value: FIELD_METADATA_VALUE_RESTRICTION = 17; + */ + METADATA_VALUE_RESTRICTION = 17, + /** + * metadata.actuator.* + * + * @generated from enum value: FIELD_METADATA_ACTUATOR = 20; + */ + METADATA_ACTUATOR = 20, + /** + * metadata.sensor.* + * + * @generated from enum value: FIELD_METADATA_SENSOR = 30; + */ + METADATA_SENSOR = 30, + /** + * metadata.attribute.* + * + * @generated from enum value: FIELD_METADATA_ATTRIBUTE = 40; + */ + METADATA_ATTRIBUTE = 40 +} +/** + * Describes a VSS entry + * When requesting an entry, the amount of information returned can + * be controlled by specifying either a `View` or a set of `Field`s. + * + * @generated from message kuksa.val.v1.DataEntry + */ +export declare class DataEntry extends Message { + /** + * Defines the full VSS path of the entry. + * + * [field: FIELD_PATH] + * + * @generated from field: string path = 1; + */ + path: string; + /** + * The value (datapoint) + * + * [field: FIELD_VALUE] + * + * @generated from field: kuksa.val.v1.Datapoint value = 2; + */ + value?: Datapoint; + /** + * Actuator target (only used if the entry is an actuator) + * + * [field: FIELD_ACTUATOR_TARGET] + * + * @generated from field: kuksa.val.v1.Datapoint actuator_target = 3; + */ + actuatorTarget?: Datapoint; + /** + * Metadata for this entry + * + * [field: FIELD_METADATA] + * + * @generated from field: kuksa.val.v1.Metadata metadata = 10; + */ + metadata?: Metadata; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.DataEntry"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): DataEntry; + static fromJson(jsonValue: JsonValue, options?: Partial): DataEntry; + static fromJsonString(jsonString: string, options?: Partial): DataEntry; + static equals(a: DataEntry | PlainMessage | undefined, b: DataEntry | PlainMessage | undefined): boolean; +} +/** + * @generated from message kuksa.val.v1.Datapoint + */ +export declare class Datapoint extends Message { + /** + * @generated from field: google.protobuf.Timestamp timestamp = 1; + */ + timestamp?: Timestamp; + /** + * @generated from oneof kuksa.val.v1.Datapoint.value + */ + value: { + /** + * @generated from field: string string = 11; + */ + value: string; + case: "string"; + } | { + /** + * @generated from field: bool bool = 12; + */ + value: boolean; + case: "bool"; + } | { + /** + * @generated from field: sint32 int32 = 13; + */ + value: number; + case: "int32"; + } | { + /** + * @generated from field: sint64 int64 = 14; + */ + value: bigint; + case: "int64"; + } | { + /** + * @generated from field: uint32 uint32 = 15; + */ + value: number; + case: "uint32"; + } | { + /** + * @generated from field: uint64 uint64 = 16; + */ + value: bigint; + case: "uint64"; + } | { + /** + * @generated from field: float float = 17; + */ + value: number; + case: "float"; + } | { + /** + * @generated from field: double double = 18; + */ + value: number; + case: "double"; + } | { + /** + * @generated from field: kuksa.val.v1.StringArray string_array = 21; + */ + value: StringArray; + case: "stringArray"; + } | { + /** + * @generated from field: kuksa.val.v1.BoolArray bool_array = 22; + */ + value: BoolArray; + case: "boolArray"; + } | { + /** + * @generated from field: kuksa.val.v1.Int32Array int32_array = 23; + */ + value: Int32Array; + case: "int32Array"; + } | { + /** + * @generated from field: kuksa.val.v1.Int64Array int64_array = 24; + */ + value: Int64Array; + case: "int64Array"; + } | { + /** + * @generated from field: kuksa.val.v1.Uint32Array uint32_array = 25; + */ + value: Uint32Array; + case: "uint32Array"; + } | { + /** + * @generated from field: kuksa.val.v1.Uint64Array uint64_array = 26; + */ + value: Uint64Array; + case: "uint64Array"; + } | { + /** + * @generated from field: kuksa.val.v1.FloatArray float_array = 27; + */ + value: FloatArray; + case: "floatArray"; + } | { + /** + * @generated from field: kuksa.val.v1.DoubleArray double_array = 28; + */ + value: DoubleArray; + case: "doubleArray"; + } | { + case: undefined; + value?: undefined; + }; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.Datapoint"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): Datapoint; + static fromJson(jsonValue: JsonValue, options?: Partial): Datapoint; + static fromJsonString(jsonString: string, options?: Partial): Datapoint; + static equals(a: Datapoint | PlainMessage | undefined, b: Datapoint | PlainMessage | undefined): boolean; +} +/** + * @generated from message kuksa.val.v1.Metadata + */ +export declare class Metadata extends Message { + /** + * Data type + * The VSS data type of the entry (i.e. the value, min, max etc). + * + * NOTE: protobuf doesn't have int8, int16, uint8 or uint16 which means + * that these values must be serialized as int32 and uint32 respectively. + * + * [field: FIELD_METADATA_DATA_TYPE] + * + * @generated from field: kuksa.val.v1.DataType data_type = 11; + */ + dataType: DataType; + /** + * Entry type + * + * [field: FIELD_METADATA_ENTRY_TYPE] + * + * @generated from field: kuksa.val.v1.EntryType entry_type = 12; + */ + entryType: EntryType; + /** + * Description + * Describes the meaning and content of the entry. + * + * [field: FIELD_METADATA_DESCRIPTION] + * + * @generated from field: optional string description = 13; + */ + description?: string; + /** + * Comment [optional] + * A comment can be used to provide additional informal information + * on a entry. + * + * [field: FIELD_METADATA_COMMENT] + * + * @generated from field: optional string comment = 14; + */ + comment?: string; + /** + * Deprecation [optional] + * Whether this entry is deprecated. Can contain recommendations of what + * to use instead. + * + * [field: FIELD_METADATA_DEPRECATION] + * + * @generated from field: optional string deprecation = 15; + */ + deprecation?: string; + /** + * Unit [optional] + * The unit of measurement + * + * [field: FIELD_METADATA_UNIT] + * + * @generated from field: optional string unit = 16; + */ + unit?: string; + /** + * Value restrictions [optional] + * Restrict which values are allowed. + * Only restrictions matching the DataType {datatype} above are valid. + * + * [field: FIELD_METADATA_VALUE_RESTRICTION] + * + * @generated from field: kuksa.val.v1.ValueRestriction value_restriction = 17; + */ + valueRestriction?: ValueRestriction; + /** + * Entry type specific metadata + * + * @generated from oneof kuksa.val.v1.Metadata.entry_specific + */ + entrySpecific: { + /** + * [field: FIELD_METADATA_ACTUATOR] + * + * @generated from field: kuksa.val.v1.Actuator actuator = 20; + */ + value: Actuator; + case: "actuator"; + } | { + /** + * [field: FIELD_METADATA_SENSOR] + * + * @generated from field: kuksa.val.v1.Sensor sensor = 30; + */ + value: Sensor; + case: "sensor"; + } | { + /** + * [field: FIELD_METADATA_ATTRIBUTE] + * + * @generated from field: kuksa.val.v1.Attribute attribute = 40; + */ + value: Attribute; + case: "attribute"; + } | { + case: undefined; + value?: undefined; + }; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.Metadata"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): Metadata; + static fromJson(jsonValue: JsonValue, options?: Partial): Metadata; + static fromJsonString(jsonString: string, options?: Partial): Metadata; + static equals(a: Metadata | PlainMessage | undefined, b: Metadata | PlainMessage | undefined): boolean; +} +/** + * ///////////////////// + * Actuator specific fields + * + * Nothing for now + * + * @generated from message kuksa.val.v1.Actuator + */ +export declare class Actuator extends Message { + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.Actuator"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): Actuator; + static fromJson(jsonValue: JsonValue, options?: Partial): Actuator; + static fromJsonString(jsonString: string, options?: Partial): Actuator; + static equals(a: Actuator | PlainMessage | undefined, b: Actuator | PlainMessage | undefined): boolean; +} +/** + * ////////////////////// + * Sensor specific + * + * Nothing for now + * + * @generated from message kuksa.val.v1.Sensor + */ +export declare class Sensor extends Message { + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.Sensor"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): Sensor; + static fromJson(jsonValue: JsonValue, options?: Partial): Sensor; + static fromJsonString(jsonString: string, options?: Partial): Sensor; + static equals(a: Sensor | PlainMessage | undefined, b: Sensor | PlainMessage | undefined): boolean; +} +/** + * ////////////////////// + * Attribute specific + * + * Nothing for now. + * + * @generated from message kuksa.val.v1.Attribute + */ +export declare class Attribute extends Message { + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.Attribute"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): Attribute; + static fromJson(jsonValue: JsonValue, options?: Partial): Attribute; + static fromJsonString(jsonString: string, options?: Partial): Attribute; + static equals(a: Attribute | PlainMessage | undefined, b: Attribute | PlainMessage | undefined): boolean; +} +/** + * Value restriction + * + * One ValueRestriction{type} for each type, since + * they don't make sense unless the types match + * + * + * @generated from message kuksa.val.v1.ValueRestriction + */ +export declare class ValueRestriction extends Message { + /** + * @generated from oneof kuksa.val.v1.ValueRestriction.type + */ + type: { + /** + * @generated from field: kuksa.val.v1.ValueRestrictionString string = 21; + */ + value: ValueRestrictionString; + case: "string"; + } | { + /** + * For signed VSS integers + * + * @generated from field: kuksa.val.v1.ValueRestrictionInt signed = 22; + */ + value: ValueRestrictionInt; + case: "signed"; + } | { + /** + * For unsigned VSS integers + * + * @generated from field: kuksa.val.v1.ValueRestrictionUint unsigned = 23; + */ + value: ValueRestrictionUint; + case: "unsigned"; + } | { + /** + * For floating point VSS values (float and double) + * + * @generated from field: kuksa.val.v1.ValueRestrictionFloat floating_point = 24; + */ + value: ValueRestrictionFloat; + case: "floatingPoint"; + } | { + case: undefined; + value?: undefined; + }; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.ValueRestriction"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): ValueRestriction; + static fromJson(jsonValue: JsonValue, options?: Partial): ValueRestriction; + static fromJsonString(jsonString: string, options?: Partial): ValueRestriction; + static equals(a: ValueRestriction | PlainMessage | undefined, b: ValueRestriction | PlainMessage | undefined): boolean; +} +/** + * @generated from message kuksa.val.v1.ValueRestrictionInt + */ +export declare class ValueRestrictionInt extends Message { + /** + * @generated from field: optional sint64 min = 1; + */ + min?: bigint; + /** + * @generated from field: optional sint64 max = 2; + */ + max?: bigint; + /** + * @generated from field: repeated sint64 allowed_values = 3; + */ + allowedValues: bigint[]; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.ValueRestrictionInt"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): ValueRestrictionInt; + static fromJson(jsonValue: JsonValue, options?: Partial): ValueRestrictionInt; + static fromJsonString(jsonString: string, options?: Partial): ValueRestrictionInt; + static equals(a: ValueRestrictionInt | PlainMessage | undefined, b: ValueRestrictionInt | PlainMessage | undefined): boolean; +} +/** + * @generated from message kuksa.val.v1.ValueRestrictionUint + */ +export declare class ValueRestrictionUint extends Message { + /** + * @generated from field: optional uint64 min = 1; + */ + min?: bigint; + /** + * @generated from field: optional uint64 max = 2; + */ + max?: bigint; + /** + * @generated from field: repeated uint64 allowed_values = 3; + */ + allowedValues: bigint[]; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.ValueRestrictionUint"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): ValueRestrictionUint; + static fromJson(jsonValue: JsonValue, options?: Partial): ValueRestrictionUint; + static fromJsonString(jsonString: string, options?: Partial): ValueRestrictionUint; + static equals(a: ValueRestrictionUint | PlainMessage | undefined, b: ValueRestrictionUint | PlainMessage | undefined): boolean; +} +/** + * @generated from message kuksa.val.v1.ValueRestrictionFloat + */ +export declare class ValueRestrictionFloat extends Message { + /** + * @generated from field: optional double min = 1; + */ + min?: number; + /** + * @generated from field: optional double max = 2; + */ + max?: number; + /** + * allowed for doubles/floats not recommended + * + * @generated from field: repeated double allowed_values = 3; + */ + allowedValues: number[]; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.ValueRestrictionFloat"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): ValueRestrictionFloat; + static fromJson(jsonValue: JsonValue, options?: Partial): ValueRestrictionFloat; + static fromJsonString(jsonString: string, options?: Partial): ValueRestrictionFloat; + static equals(a: ValueRestrictionFloat | PlainMessage | undefined, b: ValueRestrictionFloat | PlainMessage | undefined): boolean; +} +/** + * min, max doesn't make much sense for a string + * + * @generated from message kuksa.val.v1.ValueRestrictionString + */ +export declare class ValueRestrictionString extends Message { + /** + * @generated from field: repeated string allowed_values = 3; + */ + allowedValues: string[]; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.ValueRestrictionString"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): ValueRestrictionString; + static fromJson(jsonValue: JsonValue, options?: Partial): ValueRestrictionString; + static fromJsonString(jsonString: string, options?: Partial): ValueRestrictionString; + static equals(a: ValueRestrictionString | PlainMessage | undefined, b: ValueRestrictionString | PlainMessage | undefined): boolean; +} +/** + * Error response shall be an HTTP-like code. + * Should follow https://www.w3.org/TR/viss2-transport/#status-codes. + * + * @generated from message kuksa.val.v1.Error + */ +export declare class Error extends Message { + /** + * @generated from field: uint32 code = 1; + */ + code: number; + /** + * @generated from field: string reason = 2; + */ + reason: string; + /** + * @generated from field: string message = 3; + */ + message: string; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.Error"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): Error; + static fromJson(jsonValue: JsonValue, options?: Partial): Error; + static fromJsonString(jsonString: string, options?: Partial): Error; + static equals(a: Error | PlainMessage | undefined, b: Error | PlainMessage | undefined): boolean; +} +/** + * Used in get/set requests to report errors for specific entries + * + * @generated from message kuksa.val.v1.DataEntryError + */ +export declare class DataEntryError extends Message { + /** + * vss path + * + * @generated from field: string path = 1; + */ + path: string; + /** + * @generated from field: kuksa.val.v1.Error error = 2; + */ + error?: Error; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.DataEntryError"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): DataEntryError; + static fromJson(jsonValue: JsonValue, options?: Partial): DataEntryError; + static fromJsonString(jsonString: string, options?: Partial): DataEntryError; + static equals(a: DataEntryError | PlainMessage | undefined, b: DataEntryError | PlainMessage | undefined): boolean; +} +/** + * @generated from message kuksa.val.v1.StringArray + */ +export declare class StringArray extends Message { + /** + * @generated from field: repeated string values = 1; + */ + values: string[]; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.StringArray"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): StringArray; + static fromJson(jsonValue: JsonValue, options?: Partial): StringArray; + static fromJsonString(jsonString: string, options?: Partial): StringArray; + static equals(a: StringArray | PlainMessage | undefined, b: StringArray | PlainMessage | undefined): boolean; +} +/** + * @generated from message kuksa.val.v1.BoolArray + */ +export declare class BoolArray extends Message { + /** + * @generated from field: repeated bool values = 1; + */ + values: boolean[]; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.BoolArray"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): BoolArray; + static fromJson(jsonValue: JsonValue, options?: Partial): BoolArray; + static fromJsonString(jsonString: string, options?: Partial): BoolArray; + static equals(a: BoolArray | PlainMessage | undefined, b: BoolArray | PlainMessage | undefined): boolean; +} +/** + * @generated from message kuksa.val.v1.Int32Array + */ +export declare class Int32Array extends Message { + /** + * @generated from field: repeated sint32 values = 1; + */ + values: number[]; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.Int32Array"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): Int32Array; + static fromJson(jsonValue: JsonValue, options?: Partial): Int32Array; + static fromJsonString(jsonString: string, options?: Partial): Int32Array; + static equals(a: Int32Array | PlainMessage | undefined, b: Int32Array | PlainMessage | undefined): boolean; +} +/** + * @generated from message kuksa.val.v1.Int64Array + */ +export declare class Int64Array extends Message { + /** + * @generated from field: repeated sint64 values = 1; + */ + values: bigint[]; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.Int64Array"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): Int64Array; + static fromJson(jsonValue: JsonValue, options?: Partial): Int64Array; + static fromJsonString(jsonString: string, options?: Partial): Int64Array; + static equals(a: Int64Array | PlainMessage | undefined, b: Int64Array | PlainMessage | undefined): boolean; +} +/** + * @generated from message kuksa.val.v1.Uint32Array + */ +export declare class Uint32Array extends Message { + /** + * @generated from field: repeated uint32 values = 1; + */ + values: number[]; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.Uint32Array"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): Uint32Array; + static fromJson(jsonValue: JsonValue, options?: Partial): Uint32Array; + static fromJsonString(jsonString: string, options?: Partial): Uint32Array; + static equals(a: Uint32Array | PlainMessage | undefined, b: Uint32Array | PlainMessage | undefined): boolean; +} +/** + * @generated from message kuksa.val.v1.Uint64Array + */ +export declare class Uint64Array extends Message { + /** + * @generated from field: repeated uint64 values = 1; + */ + values: bigint[]; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.Uint64Array"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): Uint64Array; + static fromJson(jsonValue: JsonValue, options?: Partial): Uint64Array; + static fromJsonString(jsonString: string, options?: Partial): Uint64Array; + static equals(a: Uint64Array | PlainMessage | undefined, b: Uint64Array | PlainMessage | undefined): boolean; +} +/** + * @generated from message kuksa.val.v1.FloatArray + */ +export declare class FloatArray extends Message { + /** + * @generated from field: repeated float values = 1; + */ + values: number[]; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.FloatArray"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): FloatArray; + static fromJson(jsonValue: JsonValue, options?: Partial): FloatArray; + static fromJsonString(jsonString: string, options?: Partial): FloatArray; + static equals(a: FloatArray | PlainMessage | undefined, b: FloatArray | PlainMessage | undefined): boolean; +} +/** + * @generated from message kuksa.val.v1.DoubleArray + */ +export declare class DoubleArray extends Message { + /** + * @generated from field: repeated double values = 1; + */ + values: number[]; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.DoubleArray"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): DoubleArray; + static fromJson(jsonValue: JsonValue, options?: Partial): DoubleArray; + static fromJsonString(jsonString: string, options?: Partial): DoubleArray; + static equals(a: DoubleArray | PlainMessage | undefined, b: DoubleArray | PlainMessage | undefined): boolean; +} diff --git a/typescript/examples/aicar-zod/gen/kuksa/val/v1/types_pb.js b/typescript/examples/aicar-zod/src/gen/kuksa/val/v1/types_pb.js similarity index 50% rename from typescript/examples/aicar-zod/gen/kuksa/val/v1/types_pb.js rename to typescript/examples/aicar-zod/src/gen/kuksa/val/v1/types_pb.js index 9cf4f8ca..a10c4a40 100644 --- a/typescript/examples/aicar-zod/gen/kuksa/val/v1/types_pb.js +++ b/typescript/examples/aicar-zod/src/gen/kuksa/val/v1/types_pb.js @@ -1115,3 +1115,4 @@ DoubleArray.typeName = "kuksa.val.v1.DoubleArray"; DoubleArray.fields = protobuf_1.proto3.util.newFieldList(() => [ { no: 1, name: "values", kind: "scalar", T: 1 /* ScalarType.DOUBLE */, repeated: true }, ]); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNfcGIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0eXBlc19wYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsaUZBQWlGO0FBQ2pGLDREQUE0RDtBQUM1RCxFQUFFO0FBQ0YsbUVBQW1FO0FBQ25FLDZDQUE2QztBQUM3QyxFQUFFO0FBQ0YsMkVBQTJFO0FBQzNFLHdEQUF3RDtBQUN4RCw2Q0FBNkM7QUFDN0MsRUFBRTtBQUNGLHNDQUFzQztBQUN0QyxnRkFBZ0Y7OztBQVVoRixpREFBZ0U7QUFFaEU7Ozs7Ozs7O0dBUUc7QUFDSCxJQUFZLFFBdUlYO0FBdklELFdBQVksUUFBUTtJQUNsQjs7T0FFRztJQUNILHFEQUFlLENBQUE7SUFFZjs7T0FFRztJQUNILDJDQUFVLENBQUE7SUFFVjs7T0FFRztJQUNILDZDQUFXLENBQUE7SUFFWDs7T0FFRztJQUNILHVDQUFRLENBQUE7SUFFUjs7T0FFRztJQUNILHlDQUFTLENBQUE7SUFFVDs7T0FFRztJQUNILHlDQUFTLENBQUE7SUFFVDs7T0FFRztJQUNILHlDQUFTLENBQUE7SUFFVDs7T0FFRztJQUNILHlDQUFTLENBQUE7SUFFVDs7T0FFRztJQUNILDJDQUFVLENBQUE7SUFFVjs7T0FFRztJQUNILDJDQUFVLENBQUE7SUFFVjs7T0FFRztJQUNILDRDQUFXLENBQUE7SUFFWDs7T0FFRztJQUNILDBDQUFVLENBQUE7SUFFVjs7T0FFRztJQUNILDRDQUFXLENBQUE7SUFFWDs7T0FFRztJQUNILGtEQUFjLENBQUE7SUFFZDs7T0FFRztJQUNILHdEQUFpQixDQUFBO0lBRWpCOztPQUVHO0lBQ0gsMERBQWtCLENBQUE7SUFFbEI7O09BRUc7SUFDSCxvREFBZSxDQUFBO0lBRWY7O09BRUc7SUFDSCxzREFBZ0IsQ0FBQTtJQUVoQjs7T0FFRztJQUNILHNEQUFnQixDQUFBO0lBRWhCOztPQUVHO0lBQ0gsc0RBQWdCLENBQUE7SUFFaEI7O09BRUc7SUFDSCxzREFBZ0IsQ0FBQTtJQUVoQjs7T0FF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RSxPQUFPLEVBQUU7SUFDeEYsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLHNCQUFzQixFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7SUFDdEYsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLHVCQUF1QixFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7SUFDeEYsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7SUFDakYsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7SUFDN0UsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7SUFDL0UsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7SUFDL0UsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7SUFDakYsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsV0FBVyxF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 \ No newline at end of file diff --git a/typescript/examples/aicar-zod/gen/kuksa/val/v1/types_pb.ts b/typescript/examples/aicar-zod/src/gen/kuksa/val/v1/types_pb.ts similarity index 100% rename from typescript/examples/aicar-zod/gen/kuksa/val/v1/types_pb.ts rename to typescript/examples/aicar-zod/src/gen/kuksa/val/v1/types_pb.ts diff --git a/typescript/examples/aicar-zod/src/gen/kuksa/val/v1/val_connect.d.ts b/typescript/examples/aicar-zod/src/gen/kuksa/val/v1/val_connect.d.ts new file mode 100644 index 00000000..9ce20fcf --- /dev/null +++ b/typescript/examples/aicar-zod/src/gen/kuksa/val/v1/val_connect.d.ts @@ -0,0 +1,69 @@ +import { GetRequest, GetResponse, GetServerInfoRequest, GetServerInfoResponse, SetRequest, SetResponse, StreamedUpdateRequest, StreamedUpdateResponse, SubscribeRequest, SubscribeResponse } from "./val_pb.js"; +import { MethodKind } from "@bufbuild/protobuf"; +/** + * @generated from service kuksa.val.v1.VAL + */ +export declare const VAL: { + readonly typeName: "kuksa.val.v1.VAL"; + readonly methods: { + /** + * Get entries + * + * @generated from rpc kuksa.val.v1.VAL.Get + */ + readonly get: { + readonly name: "Get"; + readonly I: typeof GetRequest; + readonly O: typeof GetResponse; + readonly kind: MethodKind.Unary; + }; + /** + * Set entries + * + * @generated from rpc kuksa.val.v1.VAL.Set + */ + readonly set: { + readonly name: "Set"; + readonly I: typeof SetRequest; + readonly O: typeof SetResponse; + readonly kind: MethodKind.Unary; + }; + /** + * @generated from rpc kuksa.val.v1.VAL.StreamedUpdate + */ + readonly streamedUpdate: { + readonly name: "StreamedUpdate"; + readonly I: typeof StreamedUpdateRequest; + readonly O: typeof StreamedUpdateResponse; + readonly kind: MethodKind.BiDiStreaming; + }; + /** + * Subscribe to a set of entries + * + * Returns a stream of notifications. + * + * InvalidArgument is returned if the request is malformed. + * + * @generated from rpc kuksa.val.v1.VAL.Subscribe + */ + readonly subscribe: { + readonly name: "Subscribe"; + readonly I: typeof SubscribeRequest; + readonly O: typeof SubscribeResponse; + readonly kind: MethodKind.ServerStreaming; + }; + /** + * Shall return information that allows the client to determine + * what server/server implementation/version it is talking to + * eg. kuksa-databroker 0.5.1 + * + * @generated from rpc kuksa.val.v1.VAL.GetServerInfo + */ + readonly getServerInfo: { + readonly name: "GetServerInfo"; + readonly I: typeof GetServerInfoRequest; + readonly O: typeof GetServerInfoResponse; + readonly kind: MethodKind.Unary; + }; + }; +}; diff --git a/typescript/examples/aicar-zod/gen/kuksa/val/v1/val_connect.js b/typescript/examples/aicar-zod/src/gen/kuksa/val/v1/val_connect.js similarity index 66% rename from typescript/examples/aicar-zod/gen/kuksa/val/v1/val_connect.js rename to typescript/examples/aicar-zod/src/gen/kuksa/val/v1/val_connect.js index 2ecdffa1..9fcb0ebf 100644 --- a/typescript/examples/aicar-zod/gen/kuksa/val/v1/val_connect.js +++ b/typescript/examples/aicar-zod/src/gen/kuksa/val/v1/val_connect.js @@ -86,3 +86,4 @@ exports.VAL = { }, } }; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsX2Nvbm5lY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ2YWxfY29ubmVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsaUZBQWlGO0FBQ2pGLDREQUE0RDtBQUM1RCxFQUFFO0FBQ0YsbUVBQW1FO0FBQ25FLDZDQUE2QztBQUM3QyxFQUFFO0FBQ0YsMkVBQTJFO0FBQzNFLHdEQUF3RDtBQUN4RCw2Q0FBNkM7QUFDN0MsRUFBRTtBQUNGLHNDQUFzQztBQUN0QyxnRkFBZ0Y7OztBQUVoRix3RUFBd0U7QUFDeEUsb0ZBQW9GO0FBQ3BGLG9CQUFvQjtBQUNwQixjQUFjO0FBRWQsMkNBQWdOO0FBQ2hOLGlEQUFnRDtBQUVoRDs7R0FFRztBQUNVLFFBQUEsR0FBRyxHQUFHO0lBQ2pCLFFBQVEsRUFBRSxrQkFBa0I7SUFDNUIsT0FBTyxFQUFFO1FBQ1A7Ozs7V0FJRztRQUNILEdBQUcsRUFBRTtZQUNILElBQUksRUFBRSxLQUFLO1lBQ1gsQ0FBQyxFQUFFLHNCQUFVO1lBQ2IsQ0FBQyxFQUFFLHVCQUFXO1lBQ2QsSUFBSSxFQUFFLHFCQUFVLENBQUMsS0FBSztTQUN2QjtRQUNEOzs7O1dBSUc7UUFDSCxHQUFHLEVBQUU7WUFDSCxJQUFJLEVBQUUsS0FBSztZQUNYLENBQUMsRUFBRSxzQkFBVTtZQUNiLENBQUMsRUFBRSx1QkFBVztZQUNkLElBQUksRUFBRSxxQkFBVSxDQUFDLEtBQUs7U0FDdkI7UUFDRDs7V0FFRztRQUNILGNBQWMsRUFBRTtZQUNkLElBQUksRUFBRSxnQkFBZ0I7WUFDdEIsQ0FBQyxFQUFFLGlDQUFxQjtZQUN4QixDQUFDLEVBQUUsa0NBQXNCO1lBQ3pCLElBQUksRUFBRSxxQkFBVSxDQUFDLGFBQWE7U0FDL0I7UUFDRDs7Ozs7Ozs7V0FRRztRQUNILFNBQVMsRUFBRTtZQUNULElBQUksRUFBRSxXQUFXO1lBQ2pCLENBQUMsRUFBRSw0QkFBZ0I7WUFDbkIsQ0FBQyxFQUFFLDZCQUFpQjtZQUNwQixJQUFJLEVBQUUscUJBQVUsQ0FBQyxlQUFlO1NBQ2pDO1FBQ0Q7Ozs7OztXQU1HO1FBQ0gsYUFBYSxFQUFFO1lBQ2IsSUFBSSxFQUFFLGVBQWU7WUFDckIsQ0FBQyxFQUFFLGdDQUFvQjtZQUN2QixDQUFDLEVBQUUsaUNBQXFCO1lBQ3hCLElBQUksRUFBRSxxQkFBVSxDQUFDLEtBQUs7U0FDdkI7S0FDRjtDQUNPLENBQUMifQ== \ No newline at end of file diff --git a/typescript/examples/aicar-zod/gen/kuksa/val/v1/val_connect.ts b/typescript/examples/aicar-zod/src/gen/kuksa/val/v1/val_connect.ts similarity index 100% rename from typescript/examples/aicar-zod/gen/kuksa/val/v1/val_connect.ts rename to typescript/examples/aicar-zod/src/gen/kuksa/val/v1/val_connect.ts diff --git a/typescript/examples/aicar-zod/src/gen/kuksa/val/v1/val_pb.d.ts b/typescript/examples/aicar-zod/src/gen/kuksa/val/v1/val_pb.d.ts new file mode 100644 index 00000000..c39557cf --- /dev/null +++ b/typescript/examples/aicar-zod/src/gen/kuksa/val/v1/val_pb.d.ts @@ -0,0 +1,282 @@ +import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; +import { Message, proto3 } from "@bufbuild/protobuf"; +import { DataEntry, DataEntryError, Error, Field, View } from "./types_pb.js"; +/** + * Define which data we want + * + * @generated from message kuksa.val.v1.EntryRequest + */ +export declare class EntryRequest extends Message { + /** + * @generated from field: string path = 1; + */ + path: string; + /** + * @generated from field: kuksa.val.v1.View view = 2; + */ + view: View; + /** + * @generated from field: repeated kuksa.val.v1.Field fields = 3; + */ + fields: Field[]; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.EntryRequest"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): EntryRequest; + static fromJson(jsonValue: JsonValue, options?: Partial): EntryRequest; + static fromJsonString(jsonString: string, options?: Partial): EntryRequest; + static equals(a: EntryRequest | PlainMessage | undefined, b: EntryRequest | PlainMessage | undefined): boolean; +} +/** + * Request a set of entries. + * + * @generated from message kuksa.val.v1.GetRequest + */ +export declare class GetRequest extends Message { + /** + * @generated from field: repeated kuksa.val.v1.EntryRequest entries = 1; + */ + entries: EntryRequest[]; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.GetRequest"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): GetRequest; + static fromJson(jsonValue: JsonValue, options?: Partial): GetRequest; + static fromJsonString(jsonString: string, options?: Partial): GetRequest; + static equals(a: GetRequest | PlainMessage | undefined, b: GetRequest | PlainMessage | undefined): boolean; +} +/** + * Global errors are specified in `error`. + * Errors for individual entries are specified in `errors`. + * + * @generated from message kuksa.val.v1.GetResponse + */ +export declare class GetResponse extends Message { + /** + * @generated from field: repeated kuksa.val.v1.DataEntry entries = 1; + */ + entries: DataEntry[]; + /** + * @generated from field: repeated kuksa.val.v1.DataEntryError errors = 2; + */ + errors: DataEntryError[]; + /** + * @generated from field: kuksa.val.v1.Error error = 3; + */ + error?: Error; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.GetResponse"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): GetResponse; + static fromJson(jsonValue: JsonValue, options?: Partial): GetResponse; + static fromJsonString(jsonString: string, options?: Partial): GetResponse; + static equals(a: GetResponse | PlainMessage | undefined, b: GetResponse | PlainMessage | undefined): boolean; +} +/** + * Define the data we want to set + * + * @generated from message kuksa.val.v1.EntryUpdate + */ +export declare class EntryUpdate extends Message { + /** + * @generated from field: kuksa.val.v1.DataEntry entry = 1; + */ + entry?: DataEntry; + /** + * @generated from field: repeated kuksa.val.v1.Field fields = 2; + */ + fields: Field[]; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.EntryUpdate"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): EntryUpdate; + static fromJson(jsonValue: JsonValue, options?: Partial): EntryUpdate; + static fromJsonString(jsonString: string, options?: Partial): EntryUpdate; + static equals(a: EntryUpdate | PlainMessage | undefined, b: EntryUpdate | PlainMessage | undefined): boolean; +} +/** + * A list of entries to be updated + * + * @generated from message kuksa.val.v1.SetRequest + */ +export declare class SetRequest extends Message { + /** + * @generated from field: repeated kuksa.val.v1.EntryUpdate updates = 1; + */ + updates: EntryUpdate[]; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.SetRequest"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): SetRequest; + static fromJson(jsonValue: JsonValue, options?: Partial): SetRequest; + static fromJsonString(jsonString: string, options?: Partial): SetRequest; + static equals(a: SetRequest | PlainMessage | undefined, b: SetRequest | PlainMessage | undefined): boolean; +} +/** + * Global errors are specified in `error`. + * Errors for individual entries are specified in `errors`. + * + * @generated from message kuksa.val.v1.SetResponse + */ +export declare class SetResponse extends Message { + /** + * @generated from field: kuksa.val.v1.Error error = 1; + */ + error?: Error; + /** + * @generated from field: repeated kuksa.val.v1.DataEntryError errors = 2; + */ + errors: DataEntryError[]; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.SetResponse"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): SetResponse; + static fromJson(jsonValue: JsonValue, options?: Partial): SetResponse; + static fromJsonString(jsonString: string, options?: Partial): SetResponse; + static equals(a: SetResponse | PlainMessage | undefined, b: SetResponse | PlainMessage | undefined): boolean; +} +/** + * @generated from message kuksa.val.v1.StreamedUpdateRequest + */ +export declare class StreamedUpdateRequest extends Message { + /** + * @generated from field: repeated kuksa.val.v1.EntryUpdate updates = 1; + */ + updates: EntryUpdate[]; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.StreamedUpdateRequest"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): StreamedUpdateRequest; + static fromJson(jsonValue: JsonValue, options?: Partial): StreamedUpdateRequest; + static fromJsonString(jsonString: string, options?: Partial): StreamedUpdateRequest; + static equals(a: StreamedUpdateRequest | PlainMessage | undefined, b: StreamedUpdateRequest | PlainMessage | undefined): boolean; +} +/** + * @generated from message kuksa.val.v1.StreamedUpdateResponse + */ +export declare class StreamedUpdateResponse extends Message { + /** + * @generated from field: kuksa.val.v1.Error error = 1; + */ + error?: Error; + /** + * @generated from field: repeated kuksa.val.v1.DataEntryError errors = 2; + */ + errors: DataEntryError[]; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.StreamedUpdateResponse"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): StreamedUpdateResponse; + static fromJson(jsonValue: JsonValue, options?: Partial): StreamedUpdateResponse; + static fromJsonString(jsonString: string, options?: Partial): StreamedUpdateResponse; + static equals(a: StreamedUpdateResponse | PlainMessage | undefined, b: StreamedUpdateResponse | PlainMessage | undefined): boolean; +} +/** + * Define what to subscribe to + * + * @generated from message kuksa.val.v1.SubscribeEntry + */ +export declare class SubscribeEntry extends Message { + /** + * @generated from field: string path = 1; + */ + path: string; + /** + * @generated from field: kuksa.val.v1.View view = 2; + */ + view: View; + /** + * @generated from field: repeated kuksa.val.v1.Field fields = 3; + */ + fields: Field[]; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.SubscribeEntry"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): SubscribeEntry; + static fromJson(jsonValue: JsonValue, options?: Partial): SubscribeEntry; + static fromJsonString(jsonString: string, options?: Partial): SubscribeEntry; + static equals(a: SubscribeEntry | PlainMessage | undefined, b: SubscribeEntry | PlainMessage | undefined): boolean; +} +/** + * Subscribe to changes in datapoints. + * + * @generated from message kuksa.val.v1.SubscribeRequest + */ +export declare class SubscribeRequest extends Message { + /** + * @generated from field: repeated kuksa.val.v1.SubscribeEntry entries = 1; + */ + entries: SubscribeEntry[]; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.SubscribeRequest"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): SubscribeRequest; + static fromJson(jsonValue: JsonValue, options?: Partial): SubscribeRequest; + static fromJsonString(jsonString: string, options?: Partial): SubscribeRequest; + static equals(a: SubscribeRequest | PlainMessage | undefined, b: SubscribeRequest | PlainMessage | undefined): boolean; +} +/** + * A subscription response + * + * @generated from message kuksa.val.v1.SubscribeResponse + */ +export declare class SubscribeResponse extends Message { + /** + * @generated from field: repeated kuksa.val.v1.EntryUpdate updates = 1; + */ + updates: EntryUpdate[]; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.SubscribeResponse"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): SubscribeResponse; + static fromJson(jsonValue: JsonValue, options?: Partial): SubscribeResponse; + static fromJsonString(jsonString: string, options?: Partial): SubscribeResponse; + static equals(a: SubscribeResponse | PlainMessage | undefined, b: SubscribeResponse | PlainMessage | undefined): boolean; +} +/** + * Nothing yet + * + * @generated from message kuksa.val.v1.GetServerInfoRequest + */ +export declare class GetServerInfoRequest extends Message { + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.GetServerInfoRequest"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): GetServerInfoRequest; + static fromJson(jsonValue: JsonValue, options?: Partial): GetServerInfoRequest; + static fromJsonString(jsonString: string, options?: Partial): GetServerInfoRequest; + static equals(a: GetServerInfoRequest | PlainMessage | undefined, b: GetServerInfoRequest | PlainMessage | undefined): boolean; +} +/** + * @generated from message kuksa.val.v1.GetServerInfoResponse + */ +export declare class GetServerInfoResponse extends Message { + /** + * @generated from field: string name = 1; + */ + name: string; + /** + * @generated from field: string version = 2; + */ + version: string; + constructor(data?: PartialMessage); + static readonly runtime: typeof proto3; + static readonly typeName = "kuksa.val.v1.GetServerInfoResponse"; + static readonly fields: FieldList; + static fromBinary(bytes: Uint8Array, options?: Partial): GetServerInfoResponse; + static fromJson(jsonValue: JsonValue, options?: Partial): GetServerInfoResponse; + static fromJsonString(jsonString: string, options?: Partial): GetServerInfoResponse; + static equals(a: GetServerInfoResponse | PlainMessage | undefined, b: GetServerInfoResponse | PlainMessage | undefined): boolean; +} diff --git a/typescript/examples/aicar-zod/src/gen/kuksa/val/v1/val_pb.js b/typescript/examples/aicar-zod/src/gen/kuksa/val/v1/val_pb.js new file mode 100644 index 00000000..f0c64479 --- /dev/null +++ b/typescript/examples/aicar-zod/src/gen/kuksa/val/v1/val_pb.js @@ -0,0 +1,471 @@ +"use strict"; +//******************************************************************************* +// Copyright (c) 2022 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// This program and the accompanying materials are made available under the +// terms of the Apache License 2.0 which is available at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// SPDX-License-Identifier: Apache-2.0 +//****************************************************************************** +Object.defineProperty(exports, "__esModule", { value: true }); +exports.GetServerInfoResponse = exports.GetServerInfoRequest = exports.SubscribeResponse = exports.SubscribeRequest = exports.SubscribeEntry = exports.StreamedUpdateResponse = exports.StreamedUpdateRequest = exports.SetResponse = exports.SetRequest = exports.EntryUpdate = exports.GetResponse = exports.GetRequest = exports.EntryRequest = void 0; +const protobuf_1 = require("@bufbuild/protobuf"); +const types_pb_js_1 = require("./types_pb.js"); +/** + * Define which data we want + * + * @generated from message kuksa.val.v1.EntryRequest + */ +class EntryRequest extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: string path = 1; + */ + this.path = ""; + /** + * @generated from field: kuksa.val.v1.View view = 2; + */ + this.view = types_pb_js_1.View.UNSPECIFIED; + /** + * @generated from field: repeated kuksa.val.v1.Field fields = 3; + */ + this.fields = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new EntryRequest().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new EntryRequest().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new EntryRequest().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(EntryRequest, a, b); + } +} +exports.EntryRequest = EntryRequest; +EntryRequest.runtime = protobuf_1.proto3; +EntryRequest.typeName = "kuksa.val.v1.EntryRequest"; +EntryRequest.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "view", kind: "enum", T: protobuf_1.proto3.getEnumType(types_pb_js_1.View) }, + { no: 3, name: "fields", kind: "enum", T: protobuf_1.proto3.getEnumType(types_pb_js_1.Field), repeated: true }, +]); +/** + * Request a set of entries. + * + * @generated from message kuksa.val.v1.GetRequest + */ +class GetRequest extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated kuksa.val.v1.EntryRequest entries = 1; + */ + this.entries = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new GetRequest().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new GetRequest().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new GetRequest().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(GetRequest, a, b); + } +} +exports.GetRequest = GetRequest; +GetRequest.runtime = protobuf_1.proto3; +GetRequest.typeName = "kuksa.val.v1.GetRequest"; +GetRequest.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "entries", kind: "message", T: EntryRequest, repeated: true }, +]); +/** + * Global errors are specified in `error`. + * Errors for individual entries are specified in `errors`. + * + * @generated from message kuksa.val.v1.GetResponse + */ +class GetResponse extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated kuksa.val.v1.DataEntry entries = 1; + */ + this.entries = []; + /** + * @generated from field: repeated kuksa.val.v1.DataEntryError errors = 2; + */ + this.errors = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new GetResponse().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new GetResponse().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new GetResponse().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(GetResponse, a, b); + } +} +exports.GetResponse = GetResponse; +GetResponse.runtime = protobuf_1.proto3; +GetResponse.typeName = "kuksa.val.v1.GetResponse"; +GetResponse.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "entries", kind: "message", T: types_pb_js_1.DataEntry, repeated: true }, + { no: 2, name: "errors", kind: "message", T: types_pb_js_1.DataEntryError, repeated: true }, + { no: 3, name: "error", kind: "message", T: types_pb_js_1.Error }, +]); +/** + * Define the data we want to set + * + * @generated from message kuksa.val.v1.EntryUpdate + */ +class EntryUpdate extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated kuksa.val.v1.Field fields = 2; + */ + this.fields = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new EntryUpdate().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new EntryUpdate().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new EntryUpdate().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(EntryUpdate, a, b); + } +} +exports.EntryUpdate = EntryUpdate; +EntryUpdate.runtime = protobuf_1.proto3; +EntryUpdate.typeName = "kuksa.val.v1.EntryUpdate"; +EntryUpdate.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "entry", kind: "message", T: types_pb_js_1.DataEntry }, + { no: 2, name: "fields", kind: "enum", T: protobuf_1.proto3.getEnumType(types_pb_js_1.Field), repeated: true }, +]); +/** + * A list of entries to be updated + * + * @generated from message kuksa.val.v1.SetRequest + */ +class SetRequest extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated kuksa.val.v1.EntryUpdate updates = 1; + */ + this.updates = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new SetRequest().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new SetRequest().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new SetRequest().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(SetRequest, a, b); + } +} +exports.SetRequest = SetRequest; +SetRequest.runtime = protobuf_1.proto3; +SetRequest.typeName = "kuksa.val.v1.SetRequest"; +SetRequest.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "updates", kind: "message", T: EntryUpdate, repeated: true }, +]); +/** + * Global errors are specified in `error`. + * Errors for individual entries are specified in `errors`. + * + * @generated from message kuksa.val.v1.SetResponse + */ +class SetResponse extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated kuksa.val.v1.DataEntryError errors = 2; + */ + this.errors = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new SetResponse().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new SetResponse().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new SetResponse().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(SetResponse, a, b); + } +} +exports.SetResponse = SetResponse; +SetResponse.runtime = protobuf_1.proto3; +SetResponse.typeName = "kuksa.val.v1.SetResponse"; +SetResponse.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "error", kind: "message", T: types_pb_js_1.Error }, + { no: 2, name: "errors", kind: "message", T: types_pb_js_1.DataEntryError, repeated: true }, +]); +/** + * @generated from message kuksa.val.v1.StreamedUpdateRequest + */ +class StreamedUpdateRequest extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated kuksa.val.v1.EntryUpdate updates = 1; + */ + this.updates = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new StreamedUpdateRequest().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new StreamedUpdateRequest().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new StreamedUpdateRequest().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(StreamedUpdateRequest, a, b); + } +} +exports.StreamedUpdateRequest = StreamedUpdateRequest; +StreamedUpdateRequest.runtime = protobuf_1.proto3; +StreamedUpdateRequest.typeName = "kuksa.val.v1.StreamedUpdateRequest"; +StreamedUpdateRequest.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "updates", kind: "message", T: EntryUpdate, repeated: true }, +]); +/** + * @generated from message kuksa.val.v1.StreamedUpdateResponse + */ +class StreamedUpdateResponse extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated kuksa.val.v1.DataEntryError errors = 2; + */ + this.errors = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new StreamedUpdateResponse().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new StreamedUpdateResponse().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new StreamedUpdateResponse().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(StreamedUpdateResponse, a, b); + } +} +exports.StreamedUpdateResponse = StreamedUpdateResponse; +StreamedUpdateResponse.runtime = protobuf_1.proto3; +StreamedUpdateResponse.typeName = "kuksa.val.v1.StreamedUpdateResponse"; +StreamedUpdateResponse.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "error", kind: "message", T: types_pb_js_1.Error }, + { no: 2, name: "errors", kind: "message", T: types_pb_js_1.DataEntryError, repeated: true }, +]); +/** + * Define what to subscribe to + * + * @generated from message kuksa.val.v1.SubscribeEntry + */ +class SubscribeEntry extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: string path = 1; + */ + this.path = ""; + /** + * @generated from field: kuksa.val.v1.View view = 2; + */ + this.view = types_pb_js_1.View.UNSPECIFIED; + /** + * @generated from field: repeated kuksa.val.v1.Field fields = 3; + */ + this.fields = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new SubscribeEntry().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new SubscribeEntry().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new SubscribeEntry().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(SubscribeEntry, a, b); + } +} +exports.SubscribeEntry = SubscribeEntry; +SubscribeEntry.runtime = protobuf_1.proto3; +SubscribeEntry.typeName = "kuksa.val.v1.SubscribeEntry"; +SubscribeEntry.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "view", kind: "enum", T: protobuf_1.proto3.getEnumType(types_pb_js_1.View) }, + { no: 3, name: "fields", kind: "enum", T: protobuf_1.proto3.getEnumType(types_pb_js_1.Field), repeated: true }, +]); +/** + * Subscribe to changes in datapoints. + * + * @generated from message kuksa.val.v1.SubscribeRequest + */ +class SubscribeRequest extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated kuksa.val.v1.SubscribeEntry entries = 1; + */ + this.entries = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new SubscribeRequest().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new SubscribeRequest().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new SubscribeRequest().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(SubscribeRequest, a, b); + } +} +exports.SubscribeRequest = SubscribeRequest; +SubscribeRequest.runtime = protobuf_1.proto3; +SubscribeRequest.typeName = "kuksa.val.v1.SubscribeRequest"; +SubscribeRequest.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "entries", kind: "message", T: SubscribeEntry, repeated: true }, +]); +/** + * A subscription response + * + * @generated from message kuksa.val.v1.SubscribeResponse + */ +class SubscribeResponse extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: repeated kuksa.val.v1.EntryUpdate updates = 1; + */ + this.updates = []; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new SubscribeResponse().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new SubscribeResponse().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new SubscribeResponse().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(SubscribeResponse, a, b); + } +} +exports.SubscribeResponse = SubscribeResponse; +SubscribeResponse.runtime = protobuf_1.proto3; +SubscribeResponse.typeName = "kuksa.val.v1.SubscribeResponse"; +SubscribeResponse.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "updates", kind: "message", T: EntryUpdate, repeated: true }, +]); +/** + * Nothing yet + * + * @generated from message kuksa.val.v1.GetServerInfoRequest + */ +class GetServerInfoRequest extends protobuf_1.Message { + constructor(data) { + super(); + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new GetServerInfoRequest().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new GetServerInfoRequest().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new GetServerInfoRequest().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(GetServerInfoRequest, a, b); + } +} +exports.GetServerInfoRequest = GetServerInfoRequest; +GetServerInfoRequest.runtime = protobuf_1.proto3; +GetServerInfoRequest.typeName = "kuksa.val.v1.GetServerInfoRequest"; +GetServerInfoRequest.fields = protobuf_1.proto3.util.newFieldList(() => []); +/** + * @generated from message kuksa.val.v1.GetServerInfoResponse + */ +class GetServerInfoResponse extends protobuf_1.Message { + constructor(data) { + super(); + /** + * @generated from field: string name = 1; + */ + this.name = ""; + /** + * @generated from field: string version = 2; + */ + this.version = ""; + protobuf_1.proto3.util.initPartial(data, this); + } + static fromBinary(bytes, options) { + return new GetServerInfoResponse().fromBinary(bytes, options); + } + static fromJson(jsonValue, options) { + return new GetServerInfoResponse().fromJson(jsonValue, options); + } + static fromJsonString(jsonString, options) { + return new GetServerInfoResponse().fromJsonString(jsonString, options); + } + static equals(a, b) { + return protobuf_1.proto3.util.equals(GetServerInfoResponse, a, b); + } +} +exports.GetServerInfoResponse = GetServerInfoResponse; +GetServerInfoResponse.runtime = protobuf_1.proto3; +GetServerInfoResponse.typeName = "kuksa.val.v1.GetServerInfoResponse"; +GetServerInfoResponse.fields = protobuf_1.proto3.util.newFieldList(() => [ + { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "version", kind: "scalar", T: 9 /* ScalarType.STRING */ }, +]); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsX3BiLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidmFsX3BiLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxpRkFBaUY7QUFDakYsNERBQTREO0FBQzVELEVBQUU7QUFDRixtRUFBbUU7QUFDbkUsNkNBQTZDO0FBQzdDLEVBQUU7QUFDRiwyRUFBMkU7QUFDM0Usd0RBQXdEO0FBQ3hELDZDQUE2QztBQUM3QyxFQUFFO0FBQ0Ysc0NBQXNDO0FBQ3RDLGdGQUFnRjs7O0FBUWhGLGlEQUFxRDtBQUNyRCwrQ0FBOEU7QUFFOUU7Ozs7R0FJRztBQUNILE1BQWEsWUFBYSxTQUFRLGtCQUFxQjtJQWdCckQsWUFBWSxJQUFtQztRQUM3QyxLQUFLLEVBQUUsQ0FBQztRQWhCVjs7V0FFRztRQUNILFNBQUksR0FBRyxFQUFFLENBQUM7UUFFVjs7V0FFRztRQUNILFNBQUksR0FBRyxrQkFBSSxDQUFDLFdBQVcsQ0FBQztRQUV4Qjs7V0FFRztRQUNILFdBQU0sR0FBWSxFQUFFLENBQUM7UUFJbkIsaUJBQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBVUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFpQixFQUFFLE9BQW9DO1FBQ3ZFLE9BQU8sSUFBSSxZQUFZLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQW9CLEVBQUUsT0FBa0M7UUFDdEUsT0FBTyxJQUFJLFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsVUFBa0IsRUFBRSxPQUFrQztRQUMxRSxPQUFPLElBQUksWUFBWSxFQUFFLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUF3RCxFQUFFLENBQXdEO1FBQzlILE9BQU8saUJBQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsQ0FBQzs7QUEzQ0gsb0NBNENDO0FBdkJpQixvQkFBTyxHQUFrQixpQkFBTSxBQUF4QixDQUF5QjtBQUNoQyxxQkFBUSxHQUFHLDJCQUEyQixBQUE5QixDQUErQjtBQUN2QyxtQkFBTSxHQUFjLGlCQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNqRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsdUJBQXVCLEVBQUU7SUFDckUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsaUJBQU0sQ0FBQyxXQUFXLENBQUMsa0JBQUksQ0FBQyxFQUFFO0lBQ2xFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLGlCQUFNLENBQUMsV0FBVyxDQUFDLG1CQUFLLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO0NBQ3RGLENBQUMsQUFKb0IsQ0FJbkI7QUFtQkw7Ozs7R0FJRztBQUNILE1BQWEsVUFBVyxTQUFRLGtCQUFtQjtJQU1qRCxZQUFZLElBQWlDO1FBQzNDLEtBQUssRUFBRSxDQUFDO1FBTlY7O1dBRUc7UUFDSCxZQUFPLEdBQW1CLEVBQUUsQ0FBQztRQUkzQixpQkFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFRRCxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQWlCLEVBQUUsT0FBb0M7UUFDdkUsT0FBTyxJQUFJLFVBQVUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBb0IsRUFBRSxPQUFrQztRQUN0RSxPQUFPLElBQUksVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxVQUFrQixFQUFFLE9BQWtDO1FBQzFFLE9BQU8sSUFBSSxVQUFVLEVBQUUsQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLENBQW9ELEVBQUUsQ0FBb0Q7UUFDdEgsT0FBTyxpQkFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5QyxDQUFDOztBQS9CSCxnQ0FnQ0M7QUFyQmlCLGtCQUFPLEdBQWtCLGlCQUFNLEFBQXhCLENBQXlCO0FBQ2hDLG1CQUFRLEdBQUcseUJBQXlCLEFBQTVCLENBQTZCO0FBQ3JDLGlCQUFNLEdBQWMsaUJBQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2pFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO0NBQzdFLENBQUMsQUFGb0IsQ0FFbkI7QUFtQkw7Ozs7O0dBS0c7QUFDSCxNQUFhLFdBQVksU0FBUSxrQkFBb0I7SUFnQm5ELFlBQVksSUFBa0M7UUFDNUMsS0FBSyxFQUFFLENBQUM7UUFoQlY7O1dBRUc7UUFDSCxZQUFPLEdBQWdCLEVBQUUsQ0FBQztRQUUxQjs7V0FFRztRQUNILFdBQU0sR0FBcUIsRUFBRSxDQUFDO1FBUzVCLGlCQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQVVELE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBaUIsRUFBRSxPQUFvQztRQUN2RSxPQUFPLElBQUksV0FBVyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFvQixFQUFFLE9BQWtDO1FBQ3RFLE9BQU8sSUFBSSxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLFVBQWtCLEVBQUUsT0FBa0M7UUFDMUUsT0FBTyxJQUFJLFdBQVcsRUFBRSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBc0QsRUFBRSxDQUFzRDtRQUMxSCxPQUFPLGlCQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7O0FBM0NILGtDQTRDQztBQXZCaUIsbUJBQU8sR0FBa0IsaUJBQU0sQUFBeEIsQ0FBeUI7QUFDaEMsb0JBQVEsR0FBRywwQkFBMEIsQUFBN0IsQ0FBOEI7QUFDdEMsa0JBQU0sR0FBYyxpQkFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDakUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsdUJBQVMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO0lBQ3pFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLDRCQUFjLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtJQUM3RSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxtQkFBSyxFQUFFO0NBQ3BELENBQUMsQUFKb0IsQ0FJbkI7QUFtQkw7Ozs7R0FJRztBQUNILE1BQWEsV0FBWSxTQUFRLGtCQUFvQjtJQVduRCxZQUFZLElBQWtDO1FBQzVDLEtBQUssRUFBRSxDQUFDO1FBTlY7O1dBRUc7UUFDSCxXQUFNLEdBQVksRUFBRSxDQUFDO1FBSW5CLGlCQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQVNELE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBaUIsRUFBRSxPQUFvQztRQUN2RSxPQUFPLElBQUksV0FBVyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFvQixFQUFFLE9BQWtDO1FBQ3RFLE9BQU8sSUFBSSxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLFVBQWtCLEVBQUUsT0FBa0M7UUFDMUUsT0FBTyxJQUFJLFdBQVcsRUFBRSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBc0QsRUFBRSxDQUFzRDtRQUMxSCxPQUFPLGlCQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7O0FBckNILGtDQXNDQztBQXRCaUIsbUJBQU8sR0FBa0IsaUJBQU0sQUFBeEIsQ0FBeUI7QUFDaEMsb0JBQVEsR0FBRywwQkFBMEIsQUFBN0IsQ0FBOEI7QUFDdEMsa0JBQU0sR0FBYyxpQkFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDakUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsdUJBQVMsRUFBRTtJQUN2RCxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxpQkFBTSxDQUFDLFdBQVcsQ0FBQyxtQkFBSyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtDQUN0RixDQUFDLEFBSG9CLENBR25CO0FBbUJMOzs7O0dBSUc7QUFDSCxNQUFhLFVBQVcsU0FBUSxrQkFBbUI7SUFNakQsWUFBWSxJQUFpQztRQUMzQyxLQUFLLEVBQUUsQ0FBQztRQU5WOztXQUVHO1FBQ0gsWUFBTyxHQUFrQixFQUFFLENBQUM7UUFJMUIsaUJBQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBUUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFpQixFQUFFLE9BQW9DO1FBQ3ZFLE9BQU8sSUFBSSxVQUFVLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQW9CLEVBQUUsT0FBa0M7UUFDdEUsT0FBTyxJQUFJLFVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsVUFBa0IsRUFBRSxPQUFrQztRQUMxRSxPQUFPLElBQUksVUFBVSxFQUFFLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFvRCxFQUFFLENBQW9EO1FBQ3RILE9BQU8saUJBQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUMsQ0FBQzs7QUEvQkgsZ0NBZ0NDO0FBckJpQixrQkFBTyxHQUFrQixpQkFBTSxBQUF4QixDQUF5QjtBQUNoQyxtQkFBUSxHQUFHLHlCQUF5QixBQUE1QixDQUE2QjtBQUNyQyxpQkFBTSxHQUFjLGlCQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNqRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtDQUM1RSxDQUFDLEFBRm9CLENBRW5CO0FBbUJMOzs7OztHQUtHO0FBQ0gsTUFBYSxXQUFZLFNBQVEsa0JBQW9CO0lBV25ELFlBQVksSUFBa0M7UUFDNUMsS0FBSyxFQUFFLENBQUM7UUFOVjs7V0FFRztRQUNILFdBQU0sR0FBcUIsRUFBRSxDQUFDO1FBSTVCLGlCQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQVNELE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBaUIsRUFBRSxPQUFvQztRQUN2RSxPQUFPLElBQUksV0FBVyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFvQixFQUFFLE9BQWtDO1FBQ3RFLE9BQU8sSUFBSSxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLFVBQWtCLEVBQUUsT0FBa0M7UUFDMUUsT0FBTyxJQUFJLFdBQVcsRUFBRSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBc0QsRUFBRSxDQUFzRDtRQUMxSCxPQUFPLGlCQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7O0FBckNILGtDQXNDQztBQXRCaUIsbUJBQU8sR0FBa0IsaUJBQU0sQUFBeEIsQ0FBeUI7QUFDaEMsb0JBQVEsR0FBRywwQkFBMEIsQUFBN0IsQ0FBOEI7QUFDdEMsa0JBQU0sR0FBYyxpQkFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDakUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsbUJBQUssRUFBRTtJQUNuRCxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSw0QkFBYyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Q0FDOUUsQ0FBQyxBQUhvQixDQUduQjtBQW1CTDs7R0FFRztBQUNILE1BQWEscUJBQXNCLFNBQVEsa0JBQThCO0lBTXZFLFlBQVksSUFBNEM7UUFDdEQsS0FBSyxFQUFFLENBQUM7UUFOVjs7V0FFRztRQUNILFlBQU8sR0FBa0IsRUFBRSxDQUFDO1FBSTFCLGlCQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQVFELE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBaUIsRUFBRSxPQUFvQztRQUN2RSxPQUFPLElBQUkscUJBQXFCLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQW9CLEVBQUUsT0FBa0M7UUFDdEUsT0FBTyxJQUFJLHFCQUFxQixFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxVQUFrQixFQUFFLE9BQWtDO1FBQzFFLE9BQU8sSUFBSSxxQkFBcUIsRUFBRSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBMEUsRUFBRSxDQUEwRTtRQUNsSyxPQUFPLGlCQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQzs7QUEvQkgsc0RBZ0NDO0FBckJpQiw2QkFBTyxHQUFrQixpQkFBTSxBQUF4QixDQUF5QjtBQUNoQyw4QkFBUSxHQUFHLG9DQUFvQyxBQUF2QyxDQUF3QztBQUNoRCw0QkFBTSxHQUFjLGlCQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNqRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtDQUM1RSxDQUFDLEFBRm9CLENBRW5CO0FBbUJMOztHQUVHO0FBQ0gsTUFBYSxzQkFBdUIsU0FBUSxrQkFBK0I7SUFXekUsWUFBWSxJQUE2QztRQUN2RCxLQUFLLEVBQUUsQ0FBQztRQU5WOztXQUVHO1FBQ0gsV0FBTSxHQUFxQixFQUFFLENBQUM7UUFJNUIsaUJBQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBU0QsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFpQixFQUFFLE9BQW9DO1FBQ3ZFLE9BQU8sSUFBSSxzQkFBc0IsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBb0IsRUFBRSxPQUFrQztRQUN0RSxPQUFPLElBQUksc0JBQXNCLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLFVBQWtCLEVBQUUsT0FBa0M7UUFDMUUsT0FBTyxJQUFJLHNCQUFzQixFQUFFLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUE0RSxFQUFFLENBQTRFO1FBQ3RLLE9BQU8saUJBQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLHNCQUFzQixFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxRCxDQUFDOztBQXJDSCx3REFzQ0M7QUF0QmlCLDhCQUFPLEdBQWtCLGlCQUFNLEFBQXhCLENBQXlCO0FBQ2hDLCtCQUFRLEdBQUcscUNBQXFDLEFBQXhDLENBQXlDO0FBQ2pELDZCQUFNLEdBQWMsaUJBQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2pFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLG1CQUFLLEVBQUU7SUFDbkQsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsNEJBQWMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO0NBQzlFLENBQUMsQUFIb0IsQ0FHbkI7QUFtQkw7Ozs7R0FJRztBQUNILE1BQWEsY0FBZSxTQUFRLGtCQUF1QjtJQWdCekQsWUFBWSxJQUFxQztRQUMvQyxLQUFLLEVBQUUsQ0FBQztRQWhCVjs7V0FFRztRQUNILFNBQUksR0FBRyxFQUFFLENBQUM7UUFFVjs7V0FFRztRQUNILFNBQUksR0FBRyxrQkFBSSxDQUFDLFdBQVcsQ0FBQztRQUV4Qjs7V0FFRztRQUNILFdBQU0sR0FBWSxFQUFFLENBQUM7UUFJbkIsaUJBQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBVUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFpQixFQUFFLE9BQW9DO1FBQ3ZFLE9BQU8sSUFBSSxjQUFjLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQW9CLEVBQUUsT0FBa0M7UUFDdEUsT0FBTyxJQUFJLGNBQWMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsVUFBa0IsRUFBRSxPQUFrQztRQUMxRSxPQUFPLElBQUksY0FBYyxFQUFFLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUE0RCxFQUFFLENBQTREO1FBQ3RJLE9BQU8saUJBQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEQsQ0FBQzs7QUEzQ0gsd0NBNENDO0FBdkJpQixzQkFBTyxHQUFrQixpQkFBTSxBQUF4QixDQUF5QjtBQUNoQyx1QkFBUSxHQUFHLDZCQUE2QixBQUFoQyxDQUFpQztBQUN6QyxxQkFBTSxHQUFjLGlCQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNqRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsdUJBQXVCLEVBQUU7SUFDckUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsaUJBQU0sQ0FBQyxXQUFXLENBQUMsa0JBQUksQ0FBQyxFQUFFO0lBQ2xFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLGlCQUFNLENBQUMsV0FBVyxDQUFDLG1CQUFLLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO0NBQ3RGLENBQUMsQUFKb0IsQ0FJbkI7QUFtQkw7Ozs7R0FJRztBQUNILE1BQWEsZ0JBQWlCLFNBQVEsa0JBQXlCO0lBTTdELFlBQVksSUFBdUM7UUFDakQsS0FBSyxFQUFFLENBQUM7UUFOVjs7V0FFRztRQUNILFlBQU8sR0FBcUIsRUFBRSxDQUFDO1FBSTdCLGlCQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQVFELE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBaUIsRUFBRSxPQUFvQztRQUN2RSxPQUFPLElBQUksZ0JBQWdCLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQW9CLEVBQUUsT0FBa0M7UUFDdEUsT0FBTyxJQUFJLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxVQUFrQixFQUFFLE9BQWtDO1FBQzFFLE9BQU8sSUFBSSxnQkFBZ0IsRUFBRSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBZ0UsRUFBRSxDQUFnRTtRQUM5SSxPQUFPLGlCQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDcEQsQ0FBQzs7QUEvQkgsNENBZ0NDO0FBckJpQix3QkFBTyxHQUFrQixpQkFBTSxBQUF4QixDQUF5QjtBQUNoQyx5QkFBUSxHQUFHLCtCQUErQixBQUFsQyxDQUFtQztBQUMzQyx1QkFBTSxHQUFjLGlCQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNqRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtDQUMvRSxDQUFDLEFBRm9CLENBRW5CO0FBbUJMOzs7O0dBSUc7QUFDSCxNQUFhLGlCQUFrQixTQUFRLGtCQUEwQjtJQU0vRCxZQUFZLElBQXdDO1FBQ2xELEtBQUssRUFBRSxDQUFDO1FBTlY7O1dBRUc7UUFDSCxZQUFPLEdBQWtCLEVBQUUsQ0FBQztRQUkxQixpQkFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFRRCxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQWlCLEVBQUUsT0FBb0M7UUFDdkUsT0FBTyxJQUFJLGlCQUFpQixFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFvQixFQUFFLE9BQWtDO1FBQ3RFLE9BQU8sSUFBSSxpQkFBaUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsVUFBa0IsRUFBRSxPQUFrQztRQUMxRSxPQUFPLElBQUksaUJBQWlCLEVBQUUsQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLENBQWtFLEVBQUUsQ0FBa0U7UUFDbEosT0FBTyxpQkFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7O0FBL0JILDhDQWdDQztBQXJCaUIseUJBQU8sR0FBa0IsaUJBQU0sQUFBeEIsQ0FBeUI7QUFDaEMsMEJBQVEsR0FBRyxnQ0FBZ0MsQUFBbkMsQ0FBb0M7QUFDNUMsd0JBQU0sR0FBYyxpQkFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDakUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Q0FDNUUsQ0FBQyxBQUZvQixDQUVuQjtBQW1CTDs7OztHQUlHO0FBQ0gsTUFBYSxvQkFBcUIsU0FBUSxrQkFBNkI7SUFDckUsWUFBWSxJQUEyQztRQUNyRCxLQUFLLEVBQUUsQ0FBQztRQUNSLGlCQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQU9ELE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBaUIsRUFBRSxPQUFvQztRQUN2RSxPQUFPLElBQUksb0JBQW9CLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQW9CLEVBQUUsT0FBa0M7UUFDdEUsT0FBTyxJQUFJLG9CQUFvQixFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxVQUFrQixFQUFFLE9BQWtDO1FBQzFFLE9BQU8sSUFBSSxvQkFBb0IsRUFBRSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBd0UsRUFBRSxDQUF3RTtRQUM5SixPQUFPLGlCQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQzs7QUF6Qkgsb0RBMEJDO0FBcEJpQiw0QkFBTyxHQUFrQixpQkFBTSxDQUFDO0FBQ2hDLDZCQUFRLEdBQUcsbUNBQW1DLENBQUM7QUFDL0MsMkJBQU0sR0FBYyxpQkFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsRUFDbEUsQ0FBQyxDQUFDO0FBbUJMOztHQUVHO0FBQ0gsTUFBYSxxQkFBc0IsU0FBUSxrQkFBOEI7SUFXdkUsWUFBWSxJQUE0QztRQUN0RCxLQUFLLEVBQUUsQ0FBQztRQVhWOztXQUVHO1FBQ0gsU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUVWOztXQUVHO1FBQ0gsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUlYLGlCQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQVNELE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBaUIsRUFBRSxPQUFvQztRQUN2RSxPQUFPLElBQUkscUJBQXFCLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQW9CLEVBQUUsT0FBa0M7UUFDdEUsT0FBTyxJQUFJLHFCQUFxQixFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxVQUFrQixFQUFFLE9BQWtDO1FBQzFFLE9BQU8sSUFBSSxxQkFBcUIsRUFBRSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBMEUsRUFBRSxDQUEwRTtRQUNsSyxPQUFPLGlCQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQzs7QUFyQ0gsc0RBc0NDO0FBdEJpQiw2QkFBTyxHQUFrQixpQkFBTSxBQUF4QixDQUF5QjtBQUNoQyw4QkFBUSxHQUFHLG9DQUFvQyxBQUF2QyxDQUF3QztBQUNoRCw0QkFBTSxHQUFjLGlCQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNqRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsdUJBQXVCLEVBQUU7SUFDckUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLHVCQUF1QixFQUFFO0NBQ3pFLENBQUMsQUFIb0IsQ0FHbkIifQ== \ No newline at end of file diff --git a/typescript/examples/aicar-zod/gen/kuksa/val/v1/val_pb.ts b/typescript/examples/aicar-zod/src/gen/kuksa/val/v1/val_pb.ts similarity index 100% rename from typescript/examples/aicar-zod/gen/kuksa/val/v1/val_pb.ts rename to typescript/examples/aicar-zod/src/gen/kuksa/val/v1/val_pb.ts diff --git a/typescript/examples/aicar-zod/input.txt b/typescript/examples/aicar-zod/src/input.txt similarity index 100% rename from typescript/examples/aicar-zod/input.txt rename to typescript/examples/aicar-zod/src/input.txt diff --git a/typescript/examples/aicar-zod/main.ts b/typescript/examples/aicar-zod/src/main.ts similarity index 100% rename from typescript/examples/aicar-zod/main.ts rename to typescript/examples/aicar-zod/src/main.ts diff --git a/typescript/examples/aicar-zod/src/tsconfig.json b/typescript/examples/aicar-zod/src/tsconfig.json new file mode 100644 index 00000000..3c52b822 --- /dev/null +++ b/typescript/examples/aicar-zod/src/tsconfig.json @@ -0,0 +1,23 @@ +{ + "include": [ + "." + ], + "compilerOptions": { + "target": "es2021", + "lib": ["es2021"], + "module": "node16", + "allowJs": true, + "types": ["node"], + "outDir": "../dist", + "rootDirs": ["../gen"], + "esModuleInterop": true, + "moduleResolution": "NodeNext", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noUnusedLocals": false, + "inlineSourceMap": true, + "declaration": true, + "composite": true, + "skipLibCheck": true + } + } \ No newline at end of file diff --git a/typescript/examples/aicar-zod/utils.ts b/typescript/examples/aicar-zod/src/utils.ts similarity index 100% rename from typescript/examples/aicar-zod/utils.ts rename to typescript/examples/aicar-zod/src/utils.ts From 5fba6b5aac10391e2b8a18cca0d15ce61fa39fa0 Mon Sep 17 00:00:00 2001 From: brclarkdev <31588123+brclarkdev@users.noreply.github.com> Date: Thu, 29 Aug 2024 21:58:55 +0000 Subject: [PATCH 10/14] added package for build --- typescript/examples/aicar-zod/package.json | 38 ++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 typescript/examples/aicar-zod/package.json diff --git a/typescript/examples/aicar-zod/package.json b/typescript/examples/aicar-zod/package.json new file mode 100644 index 00000000..bbbd1e8e --- /dev/null +++ b/typescript/examples/aicar-zod/package.json @@ -0,0 +1,38 @@ +{ + "name": "aicar-zod", + "version": "0.0.1", + "main": "dist/main.js", + "scripts": { + "build": "tsc -p src", + "postbuild": "copyfiles -u 1 src/**/*Schema.ts src/**/*.txt src/**/*.html dist" + }, + "exports": { + "./*": [ + "./dist/*.js" + ] + }, + "author": "", + "license": "MIT", + "description": "", + "dependencies": { + "@bufbuild/buf": "^1.39.0", + "@bufbuild/protobuf": "^1.10.0", + "@bufbuild/protoc-gen-es": "^1.10.0", + "@connectrpc/connect": "^1.4.0", + "@connectrpc/connect-node": "^1.4.0", + "@connectrpc/protoc-gen-connect-es": "^1.4.0", + "assert": "^2.1.0", + "commander": "^12.1.0", + "dotenv": "^16.4.5", + "find-config": "^1.0.0", + "ts-progress": "^0.1.9", + "typescript": "^5.5.4", + "zod": "^3.23.8" + }, + "devDependencies": { + "@types/assert": "^1.5.10", + "@types/find-config": "^1.0.4", + "@types/node": "^22.5.1", + "copyfiles": "^2.4.1" + } +} From 832e48760df816cb0ac3fd455420c64cf4212e19 Mon Sep 17 00:00:00 2001 From: brclarkdev <31588123+brclarkdev@users.noreply.github.com> Date: Thu, 29 Aug 2024 22:05:37 +0000 Subject: [PATCH 11/14] added initial readme docs to samples --- typescript/examples/aicar-zod/readme.md | 83 +++++++++++++++++++++++++ typescript/examples/aicar/readme.md | 83 +++++++++++++++++++++++++ 2 files changed, 166 insertions(+) create mode 100644 typescript/examples/aicar-zod/readme.md create mode 100644 typescript/examples/aicar/readme.md diff --git a/typescript/examples/aicar-zod/readme.md b/typescript/examples/aicar-zod/readme.md new file mode 100644 index 00000000..8675eb62 --- /dev/null +++ b/typescript/examples/aicar-zod/readme.md @@ -0,0 +1,83 @@ +# aicar-zod +--- +The goal of this example repo is to experiment with foundational AI tech (TypeChat) & models (GPT4O mini & PHI3 were tested) applied to in-car assistant scenarios. The experiment approach is to utilize the real next generation of in-car standards (Kuksa, Covesa), augment those standards & frameworks with NL understanding tech powered by LLMs, to prove that the user experience can be improved with those technologies. + +[TypeChat](https://microsoft.github.io/TypeChat/) - provides a schema first framework to improve integration between NL understanding and LLM facilitated function calling + +[Covesa VSS](https://covesa.global/) - +Covesa Vehicle Signal Specification provides a standard schema for vehicle communications. The [COVESA Vehicle Signal Specification](https://covesa.github.io/vehicle_signal_specification/) (VSS) defines the names and semantics of a large set of _data entries_ that represent the current and/or intended state of a vehicle's sensors and actuators organized in a tree-like structure. For example, the vehicle's current speed is represented by the `Vehicle.Speed` entry. +This standard has broad interest & support from key auto manufacturers and OEMs (BMW, Volvo, Bosch, Land Rover, etc.) + +[Kuksa](https://projects.eclipse.org/projects/automotive.kuksa) - +Kuksa is a top level eclipse foundation project to define a software defined vehicle ecosystem based on a vehicle schema. The VSS does not define how these signals are to be collected and managed within a vehicle, nor does it prescribe how other components in the vehicle can read or write signal values from and to the tree. + +Kuksa provides a standard databroker & GRPC interface to enable communication with vehicles. + +**Kuksa Databroker** is a resource efficient implementation of the VSS signal tree and is intended to be run within a vehicle on a microprocessor based platform. It allows applications in the vehicle to interact with the vehicle's sensors and actuators using a uniform, high level gRPC API for querying signals, updating current and target values of sensors and actuators and getting notified about changes to signals of interest. + + + +```mermaid +flowchart LR + A[AICar - TypeChat] --VSS--- DB + DB[Kuksa Databroker] --VSS--- P + P[Kuksa provider] --CAN frames etc---E + E[ECU] --- Sensor + E --- Actuator + style DB fill:#999999,stroke:#444444,color:#ffffff +``` + +At the right end, Kuksa providers implement the link between the Databroker and a vehicle's Electronic Control Units (ECU) to which the hardware sensors and actuators are physically attached. + +Data is usually exchanged with ECUs by means of a CAN bus or Ethernet based protocols like SOME/IP. Providers translate between the low level messages used by these protocols and the Databroker's high level gRPC API calls to update a sensor's current reading or to forward a set-point value to an actuator via its controlling ECU. + + +### Features + +- 100% Open Source (Apache 2.0 license) +- Written in Rust with an easy-to-use language agnostic gRPC interface +- Lightweight (<4 MB statically compiled), allowing it to run on even small vehicle computers + + + +## Setup and Environment Simulation +--- +### Databroker & Covesa +The simplest way to get an example Databroker and VSS schema for experimentation is to use the official Databroker container. + +> :memo: **Note:** The examples in this section do not use TLS nor access control. Please refer to the [Databroker User Guide](./doc/user_guide.md) for more sophisticated usage examples. + +### Prerequisites + +- [Docker Engine](https://docs.docker.com/engine/install/) or [Podman](https://podman.io/docs/installation) + +### Starting Databroker + +1. Start Databroker in a container attached to the host network on port 55556: + + ```sh + docker run --rm -it -p 55556:55555 ghcr.io/eclipse-kuksa/kuksa-databroker:main --insecure --enable-databroker-v1 + ``` + + > :bulb: **Tip:** You can stop the container using `ctrl-c`. + +### AICar MVE + + ```sh + node ./dist/main.js + ``` + +### Android Auto Example App (not required) +The Kuksa Companion android application provides a visual interface to see the actions taken by the AICar assistant. It is not required, but helps illustrate how the full system interacts with the databroker & the resulting car. +1. Install Android Studio +2. Start the Pixel android emulator +3. Add the Kuksa Companion APK to the emulator +4. Start the emulator & connect to the databroker + +## Initial Test Results +--- + + + +## Next Steps & Investigations +--- diff --git a/typescript/examples/aicar/readme.md b/typescript/examples/aicar/readme.md new file mode 100644 index 00000000..851c1207 --- /dev/null +++ b/typescript/examples/aicar/readme.md @@ -0,0 +1,83 @@ +# aicar +--- +The goal of this example repo is to experiment with foundational AI tech (TypeChat) & models (GPT4O mini & PHI3 were tested) applied to in-car assistant scenarios. The experiment approach is to utilize the real next generation of in-car standards (Kuksa, Covesa), augment those standards & frameworks with NL understanding tech powered by LLMs, to prove that the user experience can be improved with those technologies. + +[TypeChat](https://microsoft.github.io/TypeChat/) - provides a schema first framework to improve integration between NL understanding and LLM facilitated function calling + +[Covesa VSS](https://covesa.global/) - +Covesa Vehicle Signal Specification provides a standard schema for vehicle communications. The [COVESA Vehicle Signal Specification](https://covesa.github.io/vehicle_signal_specification/) (VSS) defines the names and semantics of a large set of _data entries_ that represent the current and/or intended state of a vehicle's sensors and actuators organized in a tree-like structure. For example, the vehicle's current speed is represented by the `Vehicle.Speed` entry. +This standard has broad interest & support from key auto manufacturers and OEMs (BMW, Volvo, Bosch, Land Rover, etc.) + +[Kuksa](https://projects.eclipse.org/projects/automotive.kuksa) - +Kuksa is a top level eclipse foundation project to define a software defined vehicle ecosystem based on a vehicle schema. The VSS does not define how these signals are to be collected and managed within a vehicle, nor does it prescribe how other components in the vehicle can read or write signal values from and to the tree. + +Kuksa provides a standard databroker & GRPC interface to enable communication with vehicles. + +**Kuksa Databroker** is a resource efficient implementation of the VSS signal tree and is intended to be run within a vehicle on a microprocessor based platform. It allows applications in the vehicle to interact with the vehicle's sensors and actuators using a uniform, high level gRPC API for querying signals, updating current and target values of sensors and actuators and getting notified about changes to signals of interest. + + + +```mermaid +flowchart LR + A[AICar - TypeChat] --VSS--- DB + DB[Kuksa Databroker] --VSS--- P + P[Kuksa provider] --CAN frames etc---E + E[ECU] --- Sensor + E --- Actuator + style DB fill:#999999,stroke:#444444,color:#ffffff +``` + +At the right end, Kuksa providers implement the link between the Databroker and a vehicle's Electronic Control Units (ECU) to which the hardware sensors and actuators are physically attached. + +Data is usually exchanged with ECUs by means of a CAN bus or Ethernet based protocols like SOME/IP. Providers translate between the low level messages used by these protocols and the Databroker's high level gRPC API calls to update a sensor's current reading or to forward a set-point value to an actuator via its controlling ECU. + + +### Features + +- 100% Open Source (Apache 2.0 license) +- Written in Rust with an easy-to-use language agnostic gRPC interface +- Lightweight (<4 MB statically compiled), allowing it to run on even small vehicle computers + + + +## Setup and Environment Simulation +--- +### Databroker & Covesa +The simplest way to get an example Databroker and VSS schema for experimentation is to use the official Databroker container. + +> :memo: **Note:** The examples in this section do not use TLS nor access control. Please refer to the [Databroker User Guide](./doc/user_guide.md) for more sophisticated usage examples. + +### Prerequisites + +- [Docker Engine](https://docs.docker.com/engine/install/) or [Podman](https://podman.io/docs/installation) + +### Starting Databroker + +1. Start Databroker in a container attached to the host network on port 55556: + + ```sh + docker run --rm -it -p 55556:55555 ghcr.io/eclipse-kuksa/kuksa-databroker:main --insecure --enable-databroker-v1 + ``` + + > :bulb: **Tip:** You can stop the container using `ctrl-c`. + +### AICar MVE + + ```sh + node ./dist/main.js + ``` + +### Android Auto Example App (not required) +The Kuksa Companion android application provides a visual interface to see the actions taken by the AICar assistant. It is not required, but helps illustrate how the full system interacts with the databroker & the resulting car. +1. Install Android Studio +2. Start the Pixel android emulator +3. Add the Kuksa Companion APK to the emulator +4. Start the emulator & connect to the databroker + +## Initial Test Results +--- + + + +## Next Steps & Investigations +--- From 902f12a9c1feb9c9e4992e19d29e29b79f1baab9 Mon Sep 17 00:00:00 2001 From: brclarkdev <31588123+brclarkdev@users.noreply.github.com> Date: Fri, 30 Aug 2024 13:41:51 +0000 Subject: [PATCH 12/14] slight updates to readmes --- typescript/examples/aicar-zod/readme.md | 2 +- typescript/examples/aicar/readme.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/typescript/examples/aicar-zod/readme.md b/typescript/examples/aicar-zod/readme.md index 8675eb62..5a84353b 100644 --- a/typescript/examples/aicar-zod/readme.md +++ b/typescript/examples/aicar-zod/readme.md @@ -62,7 +62,7 @@ The simplest way to get an example Databroker and VSS schema for experimentation > :bulb: **Tip:** You can stop the container using `ctrl-c`. ### AICar MVE - +To test the sample in interactive mode, the the command line below. This will leverage TypeChat to translate the natural language entered, translate it into the VSS scheme, and execute the GRPC call against the running databroker. ```sh node ./dist/main.js ``` diff --git a/typescript/examples/aicar/readme.md b/typescript/examples/aicar/readme.md index 851c1207..4f537fcb 100644 --- a/typescript/examples/aicar/readme.md +++ b/typescript/examples/aicar/readme.md @@ -62,7 +62,7 @@ The simplest way to get an example Databroker and VSS schema for experimentation > :bulb: **Tip:** You can stop the container using `ctrl-c`. ### AICar MVE - +To test the sample in interactive mode, the the command line below. This will leverage TypeChat to translate the natural language entered, translate it into the VSS scheme, and execute the GRPC call against the running databroker. ```sh node ./dist/main.js ``` From a4a9e4b6fa973cd026bc5faa4a2565441a676ba9 Mon Sep 17 00:00:00 2001 From: brclarkdev <31588123+brclarkdev@users.noreply.github.com> Date: Fri, 30 Aug 2024 13:44:10 +0000 Subject: [PATCH 13/14] updated readmas --- typescript/examples/aicar-zod/readme.md | 2 +- typescript/examples/aicar/readme.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/typescript/examples/aicar-zod/readme.md b/typescript/examples/aicar-zod/readme.md index 5a84353b..6bb427bc 100644 --- a/typescript/examples/aicar-zod/readme.md +++ b/typescript/examples/aicar-zod/readme.md @@ -62,7 +62,7 @@ The simplest way to get an example Databroker and VSS schema for experimentation > :bulb: **Tip:** You can stop the container using `ctrl-c`. ### AICar MVE -To test the sample in interactive mode, the the command line below. This will leverage TypeChat to translate the natural language entered, translate it into the VSS scheme, and execute the GRPC call against the running databroker. +To test the sample in interactive mode, use the command line below. This will leverage TypeChat to translate the natural language entered, translate it into the VSS scheme, and execute the GRPC call against the running databroker. ```sh node ./dist/main.js ``` diff --git a/typescript/examples/aicar/readme.md b/typescript/examples/aicar/readme.md index 4f537fcb..a9728930 100644 --- a/typescript/examples/aicar/readme.md +++ b/typescript/examples/aicar/readme.md @@ -62,7 +62,7 @@ The simplest way to get an example Databroker and VSS schema for experimentation > :bulb: **Tip:** You can stop the container using `ctrl-c`. ### AICar MVE -To test the sample in interactive mode, the the command line below. This will leverage TypeChat to translate the natural language entered, translate it into the VSS scheme, and execute the GRPC call against the running databroker. +To test the sample in interactive mode, use the command line below. This will leverage TypeChat to translate the natural language entered, translate it into the VSS scheme, and execute the GRPC call against the running databroker. ```sh node ./dist/main.js ``` From 55c5fbc322c3ad6046f5179fee0ad670f4e118bd Mon Sep 17 00:00:00 2001 From: brclarkdev <31588123+brclarkdev@users.noreply.github.com> Date: Fri, 30 Aug 2024 13:45:47 +0000 Subject: [PATCH 14/14] fixed typos --- typescript/examples/aicar-zod/readme.md | 2 +- typescript/examples/aicar/readme.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/typescript/examples/aicar-zod/readme.md b/typescript/examples/aicar-zod/readme.md index 6bb427bc..c3277349 100644 --- a/typescript/examples/aicar-zod/readme.md +++ b/typescript/examples/aicar-zod/readme.md @@ -62,7 +62,7 @@ The simplest way to get an example Databroker and VSS schema for experimentation > :bulb: **Tip:** You can stop the container using `ctrl-c`. ### AICar MVE -To test the sample in interactive mode, use the command line below. This will leverage TypeChat to translate the natural language entered, translate it into the VSS scheme, and execute the GRPC call against the running databroker. +To test the sample in interactive mode, use the command line below. This will leverage TypeChat to translate the natural language entered, validate it into the VSS scheme, and execute the GRPC call against the running databroker. ```sh node ./dist/main.js ``` diff --git a/typescript/examples/aicar/readme.md b/typescript/examples/aicar/readme.md index a9728930..0d567351 100644 --- a/typescript/examples/aicar/readme.md +++ b/typescript/examples/aicar/readme.md @@ -62,7 +62,7 @@ The simplest way to get an example Databroker and VSS schema for experimentation > :bulb: **Tip:** You can stop the container using `ctrl-c`. ### AICar MVE -To test the sample in interactive mode, use the command line below. This will leverage TypeChat to translate the natural language entered, translate it into the VSS scheme, and execute the GRPC call against the running databroker. +To test the sample in interactive mode, use the command line below. This will leverage TypeChat to translate the natural language entered, validate it into the VSS scheme, and execute the GRPC call against the running databroker. ```sh node ./dist/main.js ```