Repository: influxdata/influxdb-client-js (ts)

Issue:
Null values in columns of type `boolean` are returned as `false`
### Specifications

* Client Version: 1.29.0
* InfluxDB Version: 2.0.7
* Platform: Linux


### Code sample to reproduce problem

```javascript
import { InfluxDB } from '@influxdata/influxdb-client'

const token = '### enter token ###';
const queryApi = new InfluxDB({url: 'http://localhost:8086', token}).getQueryApi('Org');

queryApi.queryRows(
        `import "experimental/array"

        array.from(rows: [
                {_measurement: "m0", _field: "f0", _value: true, _time: 2020-01-01T00:00:00Z,},
                {_measurement: "m0", _field: "f1", _value: true, _time: 2020-01-01T00:00:00Z,},
                {_measurement: "m0", _field: "f0", _value: true,  _time: 2020-01-01T01:00:00Z,},
                // no entry for f1 at 01:00:00 -> _value will be set to null by pivot()
        ])
                |> pivot(rowKey: ["_time"], columnKey: ["_field"], valueColumn: "_value")`,
        {
                next: (row, tableMeta) => {
                        console.log(`At ${tableMeta.get(row, '_time')} f0 is ${tableMeta.get(row, 'f0')} and f1 is ${tableMeta.get(row, 'f1')}`);
                },
                error: e => console.log(e),
                complete: () => {},
        }
);

```


### Expected behavior

```
At 2020-01-01T00:00:00Z f0 is true and f1 is true
At 2020-01-01T01:00:00Z f0 is true and f1 is null
```

### Actual behavior

```
At 2020-01-01T00:00:00Z f0 is true and f1 is true
At 2020-01-01T01:00:00Z f0 is true and f1 is false
```

### Additional info

I think [this line](https://github.com/influxdata/influxdb-client-js/blob/master/packages/core/src/results/FluxTableColumn.ts#L59) should be changed to

```
   boolean: (x: string): any => (x === '' ? null : x === 'true'),
```

Pull request:
fix(core): repair deserialization of empty string to boolean
Fixes #578


## Proposed Changes

Empty boolean value in a flux csv response is herein by default serialized to `null`, i.e. the same way as other types are.

## Checklist

<!-- Checkboxes below this note can be erased if not applicable to your Pull Request. -->

- [x] CHANGELOG.md updated
- [x] Rebased/mergeable
- [x] A test has been added if appropriate
- [x] `yarn test` completes successfully
- [x] Commit messages are [conventional](https://www.conventionalcommits.org/en/v1.0.0/)


Patch:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5b64c1e7..30237679 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,7 @@
 
 1. [#567](https://github.com/influxdata/influxdb-client-js/pull/567): Repair generated API documentation so that links between packages are rendered.
 1. [#570](https://github.com/influxdata/influxdb-client-js/pull/570): Rename Headers to HttpHeaders to avoid clash with DOM's Headers type.
+1. [#578](https://github.com/influxdata/influxdb-client-js/pull/578): Repair deserialization of a missing boolean value.
 
 ## 1.29.0 [2022-08-25]
 
diff --git a/packages/core/src/results/FluxTableColumn.ts b/packages/core/src/results/FluxTableColumn.ts
index 44dcdb59..3fb80ea4 100644
--- a/packages/core/src/results/FluxTableColumn.ts
+++ b/packages/core/src/results/FluxTableColumn.ts
@@ -56,7 +56,7 @@ const identity = (x: string): any => x
  * See {@link https://docs.influxdata.com/influxdb/latest/reference/syntax/annotated-csv/#data-types }
  */
 export const typeSerializers: Record<ColumnType, (val: string) => any> = {
-  boolean: (x: string): any => x === 'true',
+  boolean: (x: string): any => (x === '' ? null : x === 'true'),
   unsignedLong: (x: string): any => (x === '' ? null : +x),
   long: (x: string): any => (x === '' ? null : +x),
   double(x: string): any {


Test patch:
diff --git a/packages/core/test/unit/results/FluxTableMetaData.test.ts b/packages/core/test/unit/results/FluxTableMetaData.test.ts
index cb99ff3f..ff0a9ac8 100644
--- a/packages/core/test/unit/results/FluxTableMetaData.test.ts
+++ b/packages/core/test/unit/results/FluxTableMetaData.test.ts
@@ -115,6 +115,7 @@ describe('FluxTableMetaData', () => {
   const serializationTable: Array<[ColumnType | undefined, string, any]> = [
     ['boolean', 'false', false],
     ['boolean', 'true', true],
+    ['boolean', '', null],
     ['unsignedLong', '1', 1],
     ['unsignedLong', '', null],
     ['long', '1', 1],