@kalisio/kdk 2.4.0 → 2.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/core/client/components/time/KDate.vue +4 -1
- package/core/client/components/time/KDateTimeRange.vue +2 -2
- package/core/client/components/time/KTime.vue +3 -1
- package/core/client/time.js +1 -1
- package/map/client/leaflet/TiledFeatureLayer.js +2 -3
- package/map/client/mixins/map/mixin.geojson-layers.js +2 -1
- package/map/client/utils/utils.js +10 -0
- package/map/client/utils/utils.time-series.js +99 -25
- package/package.json +1 -1
- package/test/api/core/test-log-2024-11-18.log +0 -0
- package/test/api/core/test-log-2024-12-03.log +30 -0
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
import _ from 'lodash'
|
|
23
23
|
import moment from 'moment'
|
|
24
24
|
import { computed } from 'vue'
|
|
25
|
+
import { Time } from '../../time.js'
|
|
25
26
|
|
|
26
27
|
// Props
|
|
27
28
|
const props = defineProps({
|
|
@@ -66,7 +67,9 @@ const model = computed({
|
|
|
66
67
|
}
|
|
67
68
|
})
|
|
68
69
|
const format = computed(() => {
|
|
69
|
-
|
|
70
|
+
const dateDateFormat = _.get(Time.getFormat(), 'date.short')
|
|
71
|
+
const defaultYearFormat = _.get(Time.getFormat(), 'year.long')
|
|
72
|
+
return _.get(props.options, 'format', `${dateDateFormat}/${defaultYearFormat}`)
|
|
70
73
|
})
|
|
71
74
|
const picker = computed(() => {
|
|
72
75
|
return _.merge({}, _.get(props.options, 'picker'), { mask })
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<!-- Start dateTime -->
|
|
4
4
|
<KDateTime
|
|
5
5
|
v-model="startModel"
|
|
6
|
-
:options="props.options"
|
|
6
|
+
:options="props.options.dateTime || props.options"
|
|
7
7
|
:min="props.min"
|
|
8
8
|
:max="props.max"
|
|
9
9
|
:disabled="disabled"
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
<!-- End dateTime -->
|
|
16
16
|
<KDateTime
|
|
17
17
|
v-model="endModel"
|
|
18
|
-
:options="props.options"
|
|
18
|
+
:options="props.options.dateTime || props.options"
|
|
19
19
|
:min="startDateTime ? startDateTime.toISOString() : null"
|
|
20
20
|
:max="props.max"
|
|
21
21
|
:disabled="disabled || startDateTime === null"
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
import _ from 'lodash'
|
|
23
23
|
import moment from 'moment'
|
|
24
24
|
import { computed } from 'vue'
|
|
25
|
+
import { Time } from '../../time.js'
|
|
25
26
|
|
|
26
27
|
// Props
|
|
27
28
|
const props = defineProps({
|
|
@@ -66,7 +67,8 @@ const model = computed({
|
|
|
66
67
|
}
|
|
67
68
|
})
|
|
68
69
|
const format = computed(() => {
|
|
69
|
-
|
|
70
|
+
const defaultFormat = _.get(Time.getFormat(), 'time.long')
|
|
71
|
+
return _.get(props.options, 'format', defaultFormat)
|
|
70
72
|
})
|
|
71
73
|
const picker = computed(() => {
|
|
72
74
|
return _.merge({}, _.get(props.options, 'picker'), { mask })
|
package/core/client/time.js
CHANGED
|
@@ -18,7 +18,7 @@ export const Time = {
|
|
|
18
18
|
const end = now.clone().endOf('day')
|
|
19
19
|
// Try to guess user timezone
|
|
20
20
|
const timezone = moment.tz.guess() || ''
|
|
21
|
-
Store.set('time', _.
|
|
21
|
+
Store.set('time', _.defaultsDeep(config.time || {}, {
|
|
22
22
|
range: {
|
|
23
23
|
start,
|
|
24
24
|
end,
|
|
@@ -24,6 +24,7 @@ const TiledFeatureLayer = L.GridLayer.extend({
|
|
|
24
24
|
return getFeatureId(feature, this.layer)
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
+
this.probeSource = options.probeSource
|
|
27
28
|
this.featureSource = options.featureSource
|
|
28
29
|
|
|
29
30
|
this.flyingTiles = new Map()
|
|
@@ -365,9 +366,7 @@ const TiledFeatureLayer = L.GridLayer.extend({
|
|
|
365
366
|
// may have children tiles too, these will get updated also.
|
|
366
367
|
const featureRequests = this.mergeRequests(tilesWithFeaturesRequest)
|
|
367
368
|
featureRequests.forEach((r) => {
|
|
368
|
-
const promise = this.layer.probeService
|
|
369
|
-
? this.activity.getProbeFeatures(_.merge({ baseQuery: r.query }, this.layer))
|
|
370
|
-
: this.featureSource(r.query)
|
|
369
|
+
const promise = this.layer.probeService ? this.probeSource(r.query) : this.featureSource(r.query)
|
|
371
370
|
r.tiles.forEach((tile) => {
|
|
372
371
|
tile.featuresRequest = promise
|
|
373
372
|
|
|
@@ -198,7 +198,8 @@ export const geojsonLayers = {
|
|
|
198
198
|
leafletOptions.removeMissing = false
|
|
199
199
|
// Fetching is managed by tiles but even for manual update leaflet realtime require a src
|
|
200
200
|
_.set(leafletOptions, 'source', async (successCallback, errorCallback) => {})
|
|
201
|
-
// Generate fetch
|
|
201
|
+
// Generate fetch functions for tiled feature layer
|
|
202
|
+
leafletOptions.probeSource = (baseQuery) => this.getProbeFeatures(_.merge({ baseQuery }, options))
|
|
202
203
|
leafletOptions.featureSource = (baseQuery) => this.getFeatures(_.merge({ baseQuery }, options))
|
|
203
204
|
} else {
|
|
204
205
|
leafletOptions.removeMissing = !options.probeService
|
|
@@ -43,6 +43,16 @@ export function getFeatureId (feature, layer) {
|
|
|
43
43
|
return featureId.map(id => _.get(feature, 'properties.' + id, _.get(feature, id))).join('-')
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
+
export function getFeatureLabel (feature, layer) {
|
|
47
|
+
// Support compound labels
|
|
48
|
+
let featureLabel = layer.featureLabel || 'name'
|
|
49
|
+
featureLabel = (Array.isArray(featureLabel) ? featureLabel : [featureLabel])
|
|
50
|
+
return featureLabel.reduce((result, label) => {
|
|
51
|
+
label = _.get(feature, `properties.${label}`)
|
|
52
|
+
return (result ? result + ` - ${label}` : label)
|
|
53
|
+
}, '')
|
|
54
|
+
}
|
|
55
|
+
|
|
46
56
|
export function formatUserCoordinates (lat, lon, format, options) {
|
|
47
57
|
if (format === 'aeronautical') {
|
|
48
58
|
const coords = formatcoords(lat, lon)
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import _ from 'lodash'
|
|
2
2
|
import moment from 'moment'
|
|
3
|
+
import centroid from '@turf/centroid'
|
|
3
4
|
import { Time, Units, i18n } from '../../../core/client/index.js'
|
|
4
5
|
import { isMeasureLayer } from './utils.layers.js'
|
|
5
6
|
import { getMeasureForFeature } from './utils.features.js'
|
|
6
7
|
import { getForecastForLocation, getForecastProbe, getForecastForFeature } from './utils.weacast.js'
|
|
7
8
|
|
|
9
|
+
// Extract target variable data for timeseries from timeseries request result
|
|
8
10
|
async function getDataForVariable(data, variable, forecastLevel, runTime) {
|
|
9
11
|
data = await data
|
|
10
12
|
const times = _.get(data, 'time', _.get(data, 'forecastTime', {}))
|
|
@@ -28,9 +30,10 @@ async function getDataForVariable(data, variable, forecastLevel, runTime) {
|
|
|
28
30
|
return values
|
|
29
31
|
}
|
|
30
32
|
|
|
31
|
-
|
|
33
|
+
// Retrieve data coming from a weather forecast request for timeseries
|
|
34
|
+
async function fetchDataForForecastSeries({
|
|
32
35
|
feature, location, layer, startTime, endTime,
|
|
33
|
-
|
|
36
|
+
forecastModel, forecastLevel, weacastApi
|
|
34
37
|
}) {
|
|
35
38
|
// Use current time range if not provided
|
|
36
39
|
const { start, end } = Time.getRange()
|
|
@@ -40,16 +43,13 @@ async function fetchDataForSeries({
|
|
|
40
43
|
let data
|
|
41
44
|
// No feature clicked => custom probe function or dynamic weacast probe at position
|
|
42
45
|
if (!feature) {
|
|
43
|
-
|
|
44
|
-
else data = await getForecastForLocation({ longitude: location.lng, latitude: location.lat, startTime, endTime, forecastModel, forecastLevel, weacastApi })
|
|
46
|
+
data = await getForecastForLocation({ longitude: location.lng, latitude: location.lat, startTime, endTime, forecastModel, forecastLevel, weacastApi })
|
|
45
47
|
} else if (layer.probe) { // Static weacast probe
|
|
46
48
|
const probe = await getForecastProbe({ name: layer.probe, forecastModel, weacastApi })
|
|
47
49
|
if (probe) {
|
|
48
50
|
data = await getForecastForFeature({ probe, featureId: _.get(feature, probe.featureId), startTime, endTime, forecastModel, forecastLevel, weacastApi })
|
|
49
51
|
}
|
|
50
|
-
} else
|
|
51
|
-
data = await getMeasureForFeature(layer, feature, startTime, endTime, level)
|
|
52
|
-
} else { // dynamic weacast probe at feature position
|
|
52
|
+
} else { // Dynamic weacast probe at feature position
|
|
53
53
|
const location = centroid(feature)
|
|
54
54
|
const longitude = _.get(location, 'geometry.coordinates[0]')
|
|
55
55
|
const latitude = _.get(location, 'geometry.coordinates[1]')
|
|
@@ -58,12 +58,89 @@ async function fetchDataForSeries({
|
|
|
58
58
|
return data
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
+
// Retrieve data coming from a measure request for timeseries
|
|
62
|
+
// Can also use a custom probing function if provided
|
|
63
|
+
async function fetchDataForMeasureSeries({
|
|
64
|
+
feature, location, layer, startTime, endTime, level, probeFunction
|
|
65
|
+
}) {
|
|
66
|
+
// Use current time range if not provided
|
|
67
|
+
const { start, end } = Time.getRange()
|
|
68
|
+
if (!startTime) startTime = start
|
|
69
|
+
if (!endTime) endTime = end
|
|
70
|
+
// Depending on input use the right function to retrieve data
|
|
71
|
+
let data
|
|
72
|
+
// No feature clicked => custom probe function or dynamic weacast probe at position
|
|
73
|
+
if (probeFunction) {
|
|
74
|
+
data = await probeFunction({ feature, location, layer, level, startTime, endTime })
|
|
75
|
+
} else if (isMeasureLayer(layer)) { // Static measure probe
|
|
76
|
+
data = await getMeasureForFeature(layer, feature, startTime, endTime, level)
|
|
77
|
+
}
|
|
78
|
+
return data
|
|
79
|
+
}
|
|
80
|
+
|
|
61
81
|
// Build timeseries to be used in charts for target feature and associated layer definition or probe location
|
|
62
|
-
export function
|
|
82
|
+
export function getForecastTimeSeries({
|
|
83
|
+
feature, location, layer, startTime, endTime, runTime,
|
|
84
|
+
forecastLayers, forecastModel, forecastLevel, weacastApi, fetchDelay
|
|
85
|
+
}) {
|
|
86
|
+
let forecastVariables = []
|
|
87
|
+
if (forecastLayers && forecastLayers.length > 0) forecastLayers.forEach(layer => { forecastVariables = forecastVariables.concat(_.get(layer, 'variables', [])) })
|
|
88
|
+
forecastVariables = _.uniqBy(forecastVariables, 'name')
|
|
89
|
+
if (forecastVariables.length === 0) return []
|
|
90
|
+
const properties = _.get(feature, 'properties', {})
|
|
91
|
+
// Create promise to fetch data as it will be shared by all series,
|
|
92
|
+
// indeed a weather forecast request gets all aggregated variables
|
|
93
|
+
const forecastData = fetchDataForForecastSeries({
|
|
94
|
+
feature, location, layer, startTime, endTime, forecastModel, forecastLevel, weacastApi
|
|
95
|
+
})
|
|
96
|
+
// Fetch data function to request data update,
|
|
97
|
+
// we use debounce as a weather forecast request stores all aggregated variables
|
|
98
|
+
// so that when all series are updated at once a single query will be send.
|
|
99
|
+
const fetchForecast = _.debounce(() => fetchDataForForecastSeries({
|
|
100
|
+
feature, location, layer, startTime, endTime, forecastModel, forecastLevel, weacastApi
|
|
101
|
+
}), fetchDelay || 250, { leading: true, trailing: false })
|
|
102
|
+
|
|
103
|
+
const series = forecastVariables.map(variable => {
|
|
104
|
+
// Base unit could be either directly the unit or the property of the measure storing the unit
|
|
105
|
+
const baseUnit = _.get(properties, 'unit', variable.unit)
|
|
106
|
+
// Known by the unit system ?
|
|
107
|
+
const unit = Units.getUnit(baseUnit)
|
|
108
|
+
const targetUnit = Units.getTargetUnit(baseUnit)
|
|
109
|
+
const serie = {
|
|
110
|
+
probedLocationData: forecastData,
|
|
111
|
+
data: getDataForVariable(forecastData, variable, forecastLevel, runTime),
|
|
112
|
+
variable: {
|
|
113
|
+
name: variable.name,
|
|
114
|
+
label: `${i18n.tie(variable.label)} (${Units.getTargetUnitSymbol(baseUnit)})`,
|
|
115
|
+
unit,
|
|
116
|
+
targetUnit,
|
|
117
|
+
chartjs: Object.assign({
|
|
118
|
+
parsing: {
|
|
119
|
+
xAxisKey: 'time',
|
|
120
|
+
yAxisKey: (forecastLevel ? `${variable.name}-${forecastLevel}` : variable.name)
|
|
121
|
+
},
|
|
122
|
+
cubicInterpolationMode: 'monotone',
|
|
123
|
+
tension: 0.4
|
|
124
|
+
}, _.cloneDeep(variable.chartjs))
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
serie.fetch = () => {
|
|
128
|
+
serie.probedLocationData = fetchForecast()
|
|
129
|
+
serie.data = getDataForVariable(serie.probedLocationData, variable, forecastLevel, runTime)
|
|
130
|
+
return serie.data
|
|
131
|
+
}
|
|
132
|
+
return serie
|
|
133
|
+
})
|
|
134
|
+
|
|
135
|
+
return series
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// Build timeseries to be used in charts for target feature and associated layer definition or probe location
|
|
139
|
+
export function getMeasureTimeSeries({
|
|
63
140
|
feature, location, layer, layers, startTime, endTime, runTime,
|
|
64
|
-
level,
|
|
141
|
+
level, probeFunction, fetchDelay
|
|
65
142
|
}) {
|
|
66
|
-
// A feature comes from a single layer so target variables from it
|
|
143
|
+
// A feature comes from a single layer so target variables from it by default
|
|
67
144
|
let variables = _.get(layer, 'variables', [])
|
|
68
145
|
// However, a probe can target variables coming from multiple layers
|
|
69
146
|
if (layers && layers.length > 0) layers.forEach(layer => { variables = variables.concat(_.get(layer, 'variables', [])) })
|
|
@@ -71,18 +148,16 @@ export function getTimeSeries({
|
|
|
71
148
|
if (variables.length === 0) return []
|
|
72
149
|
const properties = _.get(feature, 'properties', {})
|
|
73
150
|
// Create promise to fetch data as it will be shared by all series,
|
|
74
|
-
// indeed a measure
|
|
75
|
-
const data =
|
|
76
|
-
feature, location, layer, startTime, endTime,
|
|
77
|
-
level, forecastModel, forecastLevel, probeFunction, weacastApi
|
|
151
|
+
// indeed a measure request gets all aggregated variables
|
|
152
|
+
const data = fetchDataForMeasureSeries({
|
|
153
|
+
feature, location, layer, startTime, endTime, level, probeFunction
|
|
78
154
|
})
|
|
79
155
|
// Fetch data function to request data update,
|
|
80
|
-
// we use debounce as a measure stores all aggregated variables
|
|
156
|
+
// we use debounce as a measure request stores all aggregated variables
|
|
81
157
|
// so that when all series are updated at once a single query will be send.
|
|
82
|
-
const fetch = _.debounce(() =>
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
}), fetchDelay || 250, { leading: true, trailing: false })
|
|
158
|
+
const fetch = _.debounce(() => fetchDataForMeasureSeries({
|
|
159
|
+
feature, location, layer, startTime, endTime, level, probeFunction
|
|
160
|
+
}), fetchDelay || 250, { leading: true, trailing: false })
|
|
86
161
|
|
|
87
162
|
const series = variables.map(variable => {
|
|
88
163
|
// Base unit could be either directly the unit or the property of the measure storing the unit
|
|
@@ -91,8 +166,8 @@ export function getTimeSeries({
|
|
|
91
166
|
const unit = Units.getUnit(baseUnit)
|
|
92
167
|
const targetUnit = Units.getTargetUnit(baseUnit)
|
|
93
168
|
const serie = {
|
|
94
|
-
|
|
95
|
-
data: getDataForVariable(data, variable
|
|
169
|
+
probedLocationData: data,
|
|
170
|
+
data: getDataForVariable(data, variable),
|
|
96
171
|
variable: {
|
|
97
172
|
name: variable.name,
|
|
98
173
|
label: `${i18n.tie(variable.label)} (${Units.getTargetUnitSymbol(baseUnit)})`,
|
|
@@ -101,17 +176,16 @@ export function getTimeSeries({
|
|
|
101
176
|
chartjs: Object.assign({
|
|
102
177
|
parsing: {
|
|
103
178
|
xAxisKey: 'time',
|
|
104
|
-
yAxisKey:
|
|
179
|
+
yAxisKey: variable.name
|
|
105
180
|
},
|
|
106
181
|
cubicInterpolationMode: 'monotone',
|
|
107
182
|
tension: 0.4
|
|
108
183
|
}, _.cloneDeep(variable.chartjs))
|
|
109
184
|
}
|
|
110
185
|
}
|
|
111
|
-
// FIXME: how to share promise between series ?
|
|
112
186
|
serie.fetch = () => {
|
|
113
|
-
serie.
|
|
114
|
-
serie.data = getDataForVariable(serie.
|
|
187
|
+
serie.probedLocationData = fetch()
|
|
188
|
+
serie.data = getDataForVariable(serie.probedLocationData, variable)
|
|
115
189
|
return serie.data
|
|
116
190
|
}
|
|
117
191
|
return serie
|
package/package.json
CHANGED
|
File without changes
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{"level":"error","message":"Could not connect to mongodb database(s), please check your configuration failed to connect to server [127.0.0.1:27017] on first connect [Error: connect ECONNREFUSED 127.0.0.1:27017\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1606:16) {\n name: 'MongoNetworkError'\n}]","name":"MongoNetworkError","stack":"MongoNetworkError: failed to connect to server [127.0.0.1:27017] on first connect [Error: connect ECONNREFUSED 127.0.0.1:27017\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1606:16) {\n name: 'MongoNetworkError'\n}]\n at Pool.<anonymous> (/home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/topologies/server.js:441:11)\n at Pool.emit (node:events:519:28)\n at /home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/pool.js:564:14\n at /home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/pool.js:1000:11\n at /home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/connect.js:32:7\n at callback (/home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/connect.js:300:5)\n at Socket.<anonymous> (/home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/connect.js:330:7)\n at Object.onceWrapper (node:events:634:26)\n at Socket.emit (node:events:519:28)\n at emitErrorNT (node:internal/streams/destroy:169:8)\n at emitErrorCloseNT (node:internal/streams/destroy:128:3)\n at process.processTicksAndRejections (node:internal/process/task_queues:82:21)"}
|
|
2
|
+
{"level":"error","message":"Could not connect to mongodb database(s), please check your configuration failed to connect to server [127.0.0.1:27017] on first connect [Error: connect ECONNREFUSED 127.0.0.1:27017\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1606:16) {\n name: 'MongoNetworkError'\n}]","name":"MongoNetworkError","stack":"MongoNetworkError: failed to connect to server [127.0.0.1:27017] on first connect [Error: connect ECONNREFUSED 127.0.0.1:27017\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1606:16) {\n name: 'MongoNetworkError'\n}]\n at Pool.<anonymous> (/home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/topologies/server.js:441:11)\n at Pool.emit (node:events:519:28)\n at /home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/pool.js:564:14\n at /home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/pool.js:1000:11\n at /home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/connect.js:32:7\n at callback (/home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/connect.js:300:5)\n at Socket.<anonymous> (/home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/connect.js:330:7)\n at Object.onceWrapper (node:events:634:26)\n at Socket.emit (node:events:519:28)\n at emitErrorNT (node:internal/streams/destroy:169:8)\n at emitErrorCloseNT (node:internal/streams/destroy:128:3)\n at process.processTicksAndRejections (node:internal/process/task_queues:82:21)"}
|
|
3
|
+
{"level":"error","message":"Could not connect to mongodb database(s), please check your configuration failed to connect to server [127.0.0.1:27017] on first connect [Error: connect ECONNREFUSED 127.0.0.1:27017\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1606:16) {\n name: 'MongoNetworkError'\n}]","name":"MongoNetworkError","stack":"MongoNetworkError: failed to connect to server [127.0.0.1:27017] on first connect [Error: connect ECONNREFUSED 127.0.0.1:27017\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1606:16) {\n name: 'MongoNetworkError'\n}]\n at Pool.<anonymous> (/home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/topologies/server.js:441:11)\n at Pool.emit (node:events:519:28)\n at /home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/pool.js:564:14\n at /home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/pool.js:1000:11\n at /home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/connect.js:32:7\n at callback (/home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/connect.js:300:5)\n at Socket.<anonymous> (/home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/connect.js:330:7)\n at Object.onceWrapper (node:events:634:26)\n at Socket.emit (node:events:519:28)\n at emitErrorNT (node:internal/streams/destroy:169:8)\n at emitErrorCloseNT (node:internal/streams/destroy:128:3)\n at process.processTicksAndRejections (node:internal/process/task_queues:82:21)"}
|
|
4
|
+
{"level":"error","message":"Could not connect to mongodb database(s), please check your configuration failed to connect to server [127.0.0.1:27017] on first connect [Error: connect ECONNREFUSED 127.0.0.1:27017\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1606:16) {\n name: 'MongoNetworkError'\n}]","name":"MongoNetworkError","stack":"MongoNetworkError: failed to connect to server [127.0.0.1:27017] on first connect [Error: connect ECONNREFUSED 127.0.0.1:27017\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1606:16) {\n name: 'MongoNetworkError'\n}]\n at Pool.<anonymous> (/home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/topologies/server.js:441:11)\n at Pool.emit (node:events:519:28)\n at /home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/pool.js:564:14\n at /home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/pool.js:1000:11\n at /home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/connect.js:32:7\n at callback (/home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/connect.js:300:5)\n at Socket.<anonymous> (/home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/connect.js:330:7)\n at Object.onceWrapper (node:events:634:26)\n at Socket.emit (node:events:519:28)\n at emitErrorNT (node:internal/streams/destroy:169:8)\n at emitErrorCloseNT (node:internal/streams/destroy:128:3)\n at process.processTicksAndRejections (node:internal/process/task_queues:82:21)"}
|
|
5
|
+
{"level":"error","message":"Could not connect to mongodb database(s), please check your configuration failed to connect to server [127.0.0.1:27017] on first connect [Error: connect ECONNREFUSED 127.0.0.1:27017\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1606:16) {\n name: 'MongoNetworkError'\n}]","name":"MongoNetworkError","stack":"MongoNetworkError: failed to connect to server [127.0.0.1:27017] on first connect [Error: connect ECONNREFUSED 127.0.0.1:27017\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1606:16) {\n name: 'MongoNetworkError'\n}]\n at Pool.<anonymous> (/home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/topologies/server.js:441:11)\n at Pool.emit (node:events:519:28)\n at /home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/pool.js:564:14\n at /home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/pool.js:1000:11\n at /home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/connect.js:32:7\n at callback (/home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/connect.js:300:5)\n at Socket.<anonymous> (/home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/connect.js:330:7)\n at Object.onceWrapper (node:events:634:26)\n at Socket.emit (node:events:519:28)\n at emitErrorNT (node:internal/streams/destroy:169:8)\n at emitErrorCloseNT (node:internal/streams/destroy:128:3)\n at process.processTicksAndRejections (node:internal/process/task_queues:82:21)"}
|
|
6
|
+
{"level":"error","message":"Could not connect to mongodb database(s), please check your configuration failed to connect to server [127.0.0.1:27017] on first connect [Error: connect ECONNREFUSED 127.0.0.1:27017\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1606:16) {\n name: 'MongoNetworkError'\n}]","name":"MongoNetworkError","stack":"MongoNetworkError: failed to connect to server [127.0.0.1:27017] on first connect [Error: connect ECONNREFUSED 127.0.0.1:27017\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1606:16) {\n name: 'MongoNetworkError'\n}]\n at Pool.<anonymous> (/home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/topologies/server.js:441:11)\n at Pool.emit (node:events:519:28)\n at /home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/pool.js:564:14\n at /home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/pool.js:1000:11\n at /home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/connect.js:32:7\n at callback (/home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/connect.js:300:5)\n at Socket.<anonymous> (/home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/connect.js:330:7)\n at Object.onceWrapper (node:events:634:26)\n at Socket.emit (node:events:519:28)\n at emitErrorNT (node:internal/streams/destroy:169:8)\n at emitErrorCloseNT (node:internal/streams/destroy:128:3)\n at process.processTicksAndRejections (node:internal/process/task_queues:82:21)"}
|
|
7
|
+
{"level":"error","message":"Could not connect to mongodb database(s), please check your configuration failed to connect to server [127.0.0.1:27017] on first connect [Error: connect ECONNREFUSED 127.0.0.1:27017\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1606:16) {\n name: 'MongoNetworkError'\n}]","name":"MongoNetworkError","stack":"MongoNetworkError: failed to connect to server [127.0.0.1:27017] on first connect [Error: connect ECONNREFUSED 127.0.0.1:27017\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1606:16) {\n name: 'MongoNetworkError'\n}]\n at Pool.<anonymous> (/home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/topologies/server.js:441:11)\n at Pool.emit (node:events:519:28)\n at /home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/pool.js:564:14\n at /home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/pool.js:1000:11\n at /home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/connect.js:32:7\n at callback (/home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/connect.js:300:5)\n at Socket.<anonymous> (/home/luc/Development/kalisio/kdk/node_modules/mongodb/lib/core/connection/connect.js:330:7)\n at Object.onceWrapper (node:events:634:26)\n at Socket.emit (node:events:519:28)\n at emitErrorNT (node:internal/streams/destroy:169:8)\n at emitErrorCloseNT (node:internal/streams/destroy:128:3)\n at process.processTicksAndRejections (node:internal/process/task_queues:82:21)"}
|
|
8
|
+
{"level":"error","message":"error: api/account - Method: create: The provided password does not comply to the password policy"}
|
|
9
|
+
{"level":"error","message":"error: api/account - Method: create: The provided password does not comply to the password policy"}
|
|
10
|
+
{"level":"error","message":"error: api/account - Method: create: The provided password does not comply to the password policy"}
|
|
11
|
+
{"level":"error","message":"error: api/tags - Method: create: You are not allowed to access service tags"}
|
|
12
|
+
{"level":"error","message":"error: api/users - Method: create: The provided password does not comply to the password policy"}
|
|
13
|
+
{"level":"error","message":"error: api/users - Method: create: The provided password does not comply to the password policy"}
|
|
14
|
+
{"level":"error","message":"error: api/authorisations - Method: create: You are not allowed to change authorisation on resource"}
|
|
15
|
+
{"level":"error","message":"error: api/authorisations - Method: remove: You are not allowed to change authorisation on subject(s)"}
|
|
16
|
+
{"level":"info","message":"This is a log test"}
|
|
17
|
+
{"level":"error","message":"error: api/service - Method: create: validation failed"}
|
|
18
|
+
{"level":"error","message":"error: api/service - Method: create: validation failed"}
|
|
19
|
+
{"level":"error","message":"error: api/service - Method: create: validation failed"}
|
|
20
|
+
{"level":"error","message":"error: api/service - Method: create: validation failed"}
|
|
21
|
+
{"level":"error","message":"error: api/storage - Method: get: The specified key does not exist."}
|
|
22
|
+
{"level":"error","message":"error: api/storage - Method: get: The specified key does not exist."}
|
|
23
|
+
{"level":"error","message":"error: api/organisations - Method: create: You are not allowed to access service organisations"}
|
|
24
|
+
{"level":"error","message":"error: api/authorisations - Method: create: You are not allowed to perform create operation on authorisations"}
|
|
25
|
+
{"level":"error","message":"error: api/674ecb93d03838d4be0587a4/storage - Method: get: You are not allowed to access service 674ecb93d03838d4be0587a4/storage"}
|
|
26
|
+
{"level":"error","message":"error: api/674ecb93d03838d4be0587a4/groups - Method: create: You are not allowed to perform create operation on groups"}
|
|
27
|
+
{"level":"error","message":"error: api/674ecb93d03838d4be0587a4/groups - Method: patch: You are not allowed to perform patch operation on groups"}
|
|
28
|
+
{"level":"error","message":"error: api/authorisations - Method: create: You are not allowed to perform create operation on authorisations"}
|
|
29
|
+
{"level":"error","message":"error: api/authorisations - Method: create: You are not allowed to perform create operation on authorisations"}
|
|
30
|
+
{"level":"error","message":"error: api/users - Method: remove: You are not allowed to delete the user undefined"}
|