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-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" + } +} diff --git a/typescript/examples/aicar-zod/readme.md b/typescript/examples/aicar-zod/readme.md new file mode 100644 index 00000000..c3277349 --- /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 +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 + ``` + +### 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-zod/src/SDVCarActionZodSchema.ts b/typescript/examples/aicar-zod/src/SDVCarActionZodSchema.ts new file mode 100644 index 00000000..8aca1d99 --- /dev/null +++ b/typescript/examples/aicar-zod/src/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/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/src/gen/kuksa/val/v1/types_pb.js b/typescript/examples/aicar-zod/src/gen/kuksa/val/v1/types_pb.js new file mode 100644 index 00000000..a10c4a40 --- /dev/null +++ b/typescript/examples/aicar-zod/src/gen/kuksa/val/v1/types_pb.js @@ -0,0 +1,1118 @@ +"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 }, +]); +//# 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/src/gen/kuksa/val/v1/types_pb.ts b/typescript/examples/aicar-zod/src/gen/kuksa/val/v1/types_pb.ts new file mode 100644 index 00000000..d3a30e3b --- /dev/null +++ b/typescript/examples/aicar-zod/src/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/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/src/gen/kuksa/val/v1/val_connect.js b/typescript/examples/aicar-zod/src/gen/kuksa/val/v1/val_connect.js new file mode 100644 index 00000000..9fcb0ebf --- /dev/null +++ b/typescript/examples/aicar-zod/src/gen/kuksa/val/v1/val_connect.js @@ -0,0 +1,89 @@ +"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, + }, + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsX2Nvbm5lY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ2YWxfY29ubmVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsaUZBQWlGO0FBQ2pGLDREQUE0RDtBQUM1RCxFQUFFO0FBQ0YsbUVBQW1FO0FBQ25FLDZDQUE2QztBQUM3QyxFQUFFO0FBQ0YsMkVBQTJFO0FBQzNFLHdEQUF3RDtBQUN4RCw2Q0FBNkM7QUFDN0MsRUFBRTtBQUNGLHNDQUFzQztBQUN0QyxnRkFBZ0Y7OztBQUVoRix3RUFBd0U7QUFDeEUsb0ZBQW9GO0FBQ3BGLG9CQUFvQjtBQUNwQixjQUFjO0FBRWQsMkNBQWdOO0FBQ2hOLGlEQUFnRDtBQUVoRDs7R0FFRztBQUNVLFFBQUEsR0FBRyxHQUFHO0lBQ2pCLFFBQVEsRUFBRSxrQkFBa0I7SUFDNUIsT0FBTyxFQUFFO1FBQ1A7Ozs7V0FJRztRQUNILEdBQUcsRUFBRTtZQUNILElBQUksRUFBRSxLQUFLO1lBQ1gsQ0FBQyxFQUFFLHNCQUFVO1lBQ2IsQ0FBQyxFQUFFLHVCQUFXO1lBQ2QsSUFBSSxFQUFFLHFCQUFVLENBQUMsS0FBSztTQUN2QjtRQUNEOzs7O1dBSUc7UUFDSCxHQUFHLEVBQUU7WUFDSCxJQUFJLEVBQUUsS0FBSztZQUNYLENBQUMsRUFBRSxzQkFBVTtZQUNiLENBQUMsRUFBRSx1QkFBVztZQUNkLElBQUksRUFBRSxxQkFBVSxDQUFDLEtBQUs7U0FDdkI7UUFDRDs7V0FFRztRQUNILGNBQWMsRUFBRTtZQUNkLElBQUksRUFBRSxnQkFBZ0I7WUFDdEIsQ0FBQyxFQUFFLGlDQUFxQjtZQUN4QixDQUFDLEVBQUUsa0NBQXNCO1lBQ3pCLElBQUksRUFBRSxxQkFBVSxDQUFDLGFBQWE7U0FDL0I7UUFDRDs7Ozs7Ozs7V0FRRztRQUNILFNBQVMsRUFBRTtZQUNULElBQUksRUFBRSxXQUFXO1lBQ2pCLENBQUMsRUFBRSw0QkFBZ0I7WUFDbkIsQ0FBQyxFQUFFLDZCQUFpQjtZQUNwQixJQUFJLEVBQUUscUJBQVUsQ0FBQyxlQUFlO1NBQ2pDO1FBQ0Q7Ozs7OztXQU1HO1FBQ0gsYUFBYSxFQUFFO1lBQ2IsSUFBSSxFQUFFLGVBQWU7WUFDckIsQ0FBQyxFQUFFLGdDQUFvQjtZQUN2QixDQUFDLEVBQUUsaUNBQXFCO1lBQ3hCLElBQUksRUFBRSxxQkFBVSxDQUFDLEtBQUs7U0FDdkI7S0FDRjtDQUNPLENBQUMifQ== \ No newline at end of file diff --git a/typescript/examples/aicar-zod/src/gen/kuksa/val/v1/val_connect.ts b/typescript/examples/aicar-zod/src/gen/kuksa/val/v1/val_connect.ts new file mode 100644 index 00000000..ed09e035 --- /dev/null +++ b/typescript/examples/aicar-zod/src/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/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/src/gen/kuksa/val/v1/val_pb.ts b/typescript/examples/aicar-zod/src/gen/kuksa/val/v1/val_pb.ts new file mode 100644 index 00000000..2b656bbe --- /dev/null +++ b/typescript/examples/aicar-zod/src/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-zod/src/input.txt b/typescript/examples/aicar-zod/src/input.txt new file mode 100644 index 00000000..23ce2372 --- /dev/null +++ b/typescript/examples/aicar-zod/src/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/src/main.ts b/typescript/examples/aicar-zod/src/main.ts new file mode 100644 index 00000000..e69de29b 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/src/utils.ts b/typescript/examples/aicar-zod/src/utils.ts new file mode 100644 index 00000000..b6171714 --- /dev/null +++ b/typescript/examples/aicar-zod/src/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/package.json b/typescript/examples/aicar/package.json new file mode 100644 index 00000000..84c38f6a --- /dev/null +++ b/typescript/examples/aicar/package.json @@ -0,0 +1,38 @@ +{ + "name": "aicar", + "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" + } +} diff --git a/typescript/examples/aicar/readme.md b/typescript/examples/aicar/readme.md new file mode 100644 index 00000000..0d567351 --- /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 +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 + ``` + +### 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/src/SDVCarActionSchema.ts b/typescript/examples/aicar/src/SDVCarActionSchema.ts new file mode 100644 index 00000000..cb304b4b --- /dev/null +++ b/typescript/examples/aicar/src/SDVCarActionSchema.ts @@ -0,0 +1,143 @@ +// 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 interface CarActions { + actions: (GetTempurature | SetTemperature | GetDoorLockState + | SetDoorLockState | GetLightState | SetLightState | SetDoorOpenState + | GetTirePressure | GetDoorOpenState | SetTirePressure | UnknownAction)[]; +} + +//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/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/src/gen/kuksa/val/v1/types_pb.js b/typescript/examples/aicar/src/gen/kuksa/val/v1/types_pb.js new file mode 100644 index 00000000..a10c4a40 --- /dev/null +++ b/typescript/examples/aicar/src/gen/kuksa/val/v1/types_pb.js @@ -0,0 +1,1118 @@ +"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 }, +]); +//# 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/src/gen/kuksa/val/v1/types_pb.ts b/typescript/examples/aicar/src/gen/kuksa/val/v1/types_pb.ts new file mode 100644 index 00000000..d3a30e3b --- /dev/null +++ b/typescript/examples/aicar/src/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/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/src/gen/kuksa/val/v1/val_connect.js b/typescript/examples/aicar/src/gen/kuksa/val/v1/val_connect.js new file mode 100644 index 00000000..9fcb0ebf --- /dev/null +++ b/typescript/examples/aicar/src/gen/kuksa/val/v1/val_connect.js @@ -0,0 +1,89 @@ +"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, + }, + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsX2Nvbm5lY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ2YWxfY29ubmVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsaUZBQWlGO0FBQ2pGLDREQUE0RDtBQUM1RCxFQUFFO0FBQ0YsbUVBQW1FO0FBQ25FLDZDQUE2QztBQUM3QyxFQUFFO0FBQ0YsMkVBQTJFO0FBQzNFLHdEQUF3RDtBQUN4RCw2Q0FBNkM7QUFDN0MsRUFBRTtBQUNGLHNDQUFzQztBQUN0QyxnRkFBZ0Y7OztBQUVoRix3RUFBd0U7QUFDeEUsb0ZBQW9GO0FBQ3BGLG9CQUFvQjtBQUNwQixjQUFjO0FBRWQsMkNBQWdOO0FBQ2hOLGlEQUFnRDtBQUVoRDs7R0FFRztBQUNVLFFBQUEsR0FBRyxHQUFHO0lBQ2pCLFFBQVEsRUFBRSxrQkFBa0I7SUFDNUIsT0FBTyxFQUFFO1FBQ1A7Ozs7V0FJRztRQUNILEdBQUcsRUFBRTtZQUNILElBQUksRUFBRSxLQUFLO1lBQ1gsQ0FBQyxFQUFFLHNCQUFVO1lBQ2IsQ0FBQyxFQUFFLHVCQUFXO1lBQ2QsSUFBSSxFQUFFLHFCQUFVLENBQUMsS0FBSztTQUN2QjtRQUNEOzs7O1dBSUc7UUFDSCxHQUFHLEVBQUU7WUFDSCxJQUFJLEVBQUUsS0FBSztZQUNYLENBQUMsRUFBRSxzQkFBVTtZQUNiLENBQUMsRUFBRSx1QkFBVztZQUNkLElBQUksRUFBRSxxQkFBVSxDQUFDLEtBQUs7U0FDdkI7UUFDRDs7V0FFRztRQUNILGNBQWMsRUFBRTtZQUNkLElBQUksRUFBRSxnQkFBZ0I7WUFDdEIsQ0FBQyxFQUFFLGlDQUFxQjtZQUN4QixDQUFDLEVBQUUsa0NBQXNCO1lBQ3pCLElBQUksRUFBRSxxQkFBVSxDQUFDLGFBQWE7U0FDL0I7UUFDRDs7Ozs7Ozs7V0FRRztRQUNILFNBQVMsRUFBRTtZQUNULElBQUksRUFBRSxXQUFXO1lBQ2pCLENBQUMsRUFBRSw0QkFBZ0I7WUFDbkIsQ0FBQyxFQUFFLDZCQUFpQjtZQUNwQixJQUFJLEVBQUUscUJBQVUsQ0FBQyxlQUFlO1NBQ2pDO1FBQ0Q7Ozs7OztXQU1HO1FBQ0gsYUFBYSxFQUFFO1lBQ2IsSUFBSSxFQUFFLGVBQWU7WUFDckIsQ0FBQyxFQUFFLGdDQUFvQjtZQUN2QixDQUFDLEVBQUUsaUNBQXFCO1lBQ3hCLElBQUksRUFBRSxxQkFBVSxDQUFDLEtBQUs7U0FDdkI7S0FDRjtDQUNPLENBQUMifQ== \ No newline at end of file diff --git a/typescript/examples/aicar/src/gen/kuksa/val/v1/val_connect.ts b/typescript/examples/aicar/src/gen/kuksa/val/v1/val_connect.ts new file mode 100644 index 00000000..ed09e035 --- /dev/null +++ b/typescript/examples/aicar/src/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/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsX3BiLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidmFsX3BiLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxpRkFBaUY7QUFDakYsNERBQTREO0FBQzVELEVBQUU7QUFDRixtRUFBbUU7QUFDbkUsNkNBQTZDO0FBQzdDLEVBQUU7QUFDRiwyRUFBMkU7QUFDM0Usd0RBQXdEO0FBQ3hELDZDQUE2QztBQUM3QyxFQUFFO0FBQ0Ysc0NBQXNDO0FBQ3RDLGdGQUFnRjs7O0FBUWhGLGlEQUFxRDtBQUNyRCwrQ0FBOEU7QUFFOUU7Ozs7R0FJRztBQUNILE1BQWEsWUFBYSxTQUFRLGtCQUFxQjtJQWdCckQsWUFBWSxJQUFtQztRQUM3QyxLQUFLLEVBQUUsQ0FBQztRQWhCVjs7V0FFRztRQUNILFNBQUksR0FBRyxFQUFFLENBQUM7UUFFVjs7V0FFRztRQUNILFNBQUksR0FBRyxrQkFBSSxDQUFDLFdBQVcsQ0FBQztRQUV4Qjs7V0FFRztRQUNILFdBQU0sR0FBWSxFQUFFLENBQUM7UUFJbkIsaUJBQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBVUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFpQixFQUFFLE9BQW9DO1FBQ3ZFLE9BQU8sSUFBSSxZQUFZLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQW9CLEVBQUUsT0FBa0M7UUFDdEUsT0FBTyxJQUFJLFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsVUFBa0IsRUFBRSxPQUFrQztRQUMxRSxPQUFPLElBQUksWUFBWSxFQUFFLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNoRSxDQUFD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 \ No newline at end of file diff --git a/typescript/examples/aicar/src/gen/kuksa/val/v1/val_pb.ts b/typescript/examples/aicar/src/gen/kuksa/val/v1/val_pb.ts new file mode 100644 index 00000000..2b656bbe --- /dev/null +++ b/typescript/examples/aicar/src/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/src/input.txt b/typescript/examples/aicar/src/input.txt new file mode 100644 index 00000000..23ce2372 --- /dev/null +++ b/typescript/examples/aicar/src/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/src/main.ts b/typescript/examples/aicar/src/main.ts new file mode 100644 index 00000000..268c7a2f --- /dev/null +++ b/typescript/examples/aicar/src/main.ts @@ -0,0 +1,54 @@ +import assert from "assert"; +import dotenv from "dotenv"; +import findConfig from "find-config"; +import fs from "fs"; +import path from "path"; +import { createJsonTranslator } 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); + +if(inputOptions.validate){ + + if(inputOptions.inputfile) + { + 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/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/src/utils.ts b/typescript/examples/aicar/src/utils.ts new file mode 100644 index 00000000..61180ea9 --- /dev/null +++ b/typescript/examples/aicar/src/utils.ts @@ -0,0 +1,129 @@ +import { z } from "zod"; +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 { 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: 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}; + translator.attemptRepair = true; + requestTracking.prompt = translator.createRequestPrompt(request); + const response = await translator.translate(request); + if (!response.success) { + requestTracking.status = "Failed"; + requestTracking.errors = [response.message]; + return requestTracking; + } + const car = response.data; + for (const item of car.actions) { + 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); + } + } + return requestTracking; +} 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 87941205..83d6da40 100644 --- a/typescript/package-lock.json +++ b/typescript/package-lock.json @@ -31,6 +31,48 @@ } } }, + "examples/aicar": { + "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", + "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", @@ -209,6 +251,241 @@ "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)", + "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", + "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/@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", + "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", @@ -248,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", @@ -295,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", @@ -357,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", @@ -435,6 +755,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", @@ -502,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", @@ -709,6 +1061,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 +1139,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", @@ -897,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", @@ -940,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" }, @@ -1134,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" }, @@ -1160,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", @@ -1348,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", @@ -1567,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", @@ -1590,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", @@ -1970,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", @@ -2049,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", @@ -2696,6 +3235,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", @@ -2724,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" @@ -2735,6 +3287,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", @@ -2787,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", @@ -2823,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", @@ -2938,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" }