Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
22 files changed:
Key | Value(s) | Default Value | Value type | Description
--- | -------| --------------| ---------- | ------------
Key | Value(s) | Default Value | Value type | Description
--- | -------| --------------| ---------- | ------------
-supervisionURLs | | [] | string[] | array of connection URIs to OCPP-J servers
+supervisionUrls | | [] | string[] | array of connection URIs to OCPP-J servers
distributeStationsToTenantsEqually | true/false | true | boolean | distribute charging stations uniformly to the OCPP-J servers
workerProcess | workerSet/staticPool/dynamicPool | workerSet | string | worker threads process type
workerStartDelay | | 500 | integer | milliseconds to wait at charging station worker threads startup
distributeStationsToTenantsEqually | true/false | true | boolean | distribute charging stations uniformly to the OCPP-J servers
workerProcess | workerSet/staticPool/dynamicPool | workerSet | string | worker threads process type
workerStartDelay | | 500 | integer | milliseconds to wait at charging station worker threads startup
logErrorFile | | error.log | string | error log file relative path
uiWebSocketServer | | { "enabled": true, "options": { "host: "localhost", "port": 8080 } } | { enabled: boolean; options: ServerOptions; } | UI WebSocket server configuration section
performanceStorage | | { "enabled": false, "type": "jsonfile", "file:///performanceRecords.json" } | { enabled: boolean; type: string; URI: string; } where type can be 'jsonfile' or 'mongodb' | performance storage configuration section
logErrorFile | | error.log | string | error log file relative path
uiWebSocketServer | | { "enabled": true, "options": { "host: "localhost", "port": 8080 } } | { enabled: boolean; options: ServerOptions; } | UI WebSocket server configuration section
performanceStorage | | { "enabled": false, "type": "jsonfile", "file:///performanceRecords.json" } | { enabled: boolean; type: string; URI: string; } where type can be 'jsonfile' or 'mongodb' | performance storage configuration section
-stationTemplateURLs | | {}[] | { file: string; numberOfStations: number; }[] | array of charging station templates URIs configuration section (template file name and number of stations)
+stationTemplateUrls | | {}[] | { file: string; numberOfStations: number; }[] | array of charging station templates URIs configuration section (template file name and number of stations)
#### Worker process model:
#### Worker process model:
Key | Value(s) | Default Value | Value type | Description
--- | -------| --------------| ---------- | ------------
Key | Value(s) | Default Value | Value type | Description
--- | -------| --------------| ---------- | ------------
-supervisionURL | | '' | string | connection URI to OCPP-J server
+supervisionUrl | | '' | string | connection URI to OCPP-J server
supervisionUser | | '' | string | basic HTTP authentication user to OCPP-J server
supervisionPassword | | '' | string | basic HTTP authentication password to OCPP-J server
supervisionUser | | '' | string | basic HTTP authentication user to OCPP-J server
supervisionPassword | | '' | string | basic HTTP authentication password to OCPP-J server
-supervisionURLOCPPConfiguration | true/false | false | boolean | Allow supervision URL configuration via a vendor OCPP parameter key
-supervisionURLOCPPKey | | 'ConnectionUrl' | string | The vendor string that will be used as a vendor OCPP parameter key to set the supervision URL
+supervisionUrlOcppConfiguration | true/false | false | boolean | Allow supervision URL configuration via a vendor OCPP parameter key
+supervisionUrlOcppKey | | 'ConnectionUrl' | string | The vendor string that will be used as a vendor OCPP parameter key to set the supervision URL
ocppVersion | 1.6 | 1.6 | string | OCPP version
ocppProtocol | json | json | string | OCPP protocol
wsOptions | | {} | ClientOptions & ClientRequestArgs | [ws](https://github.com/websockets/ws) and node.js [http](https://nodejs.org/api/http.html) clients options intersection
ocppVersion | 1.6 | 1.6 | string | OCPP version
ocppProtocol | json | json | string | OCPP protocol
wsOptions | | {} | ClientOptions & ClientRequestArgs | [ws](https://github.com/websockets/ws) and node.js [http](https://nodejs.org/api/http.html) clients options intersection
"ws://server:8010/OCPP16/5c866e81a2d9593de43efdb4"
],
"distributeStationsToTenantsEqually": true,
"ws://server:8010/OCPP16/5c866e81a2d9593de43efdb4"
],
"distributeStationsToTenantsEqually": true,
"workerPoolMinSize": 4,
"workerPoolMaxSize": 16,
"chargingStationsPerWorker": 1,
"workerPoolMinSize": 4,
"workerPoolMaxSize": 16,
"chargingStationsPerWorker": 1,
- "stationTemplateURLs": [
+ "stationTemplateUrls": [
{
"file": "siemens.station-template.json",
"numberOfStations": 0
{
"file": "siemens.station-template.json",
"numberOfStations": 0
"auto-changelog": "^2.3.0",
"clinic": "^10.0.0",
"cross-env": "^7.0.3",
"auto-changelog": "^2.3.0",
"clinic": "^10.0.0",
"cross-env": "^7.0.3",
"eslint-plugin-import": "^2.25.3",
"eslint-plugin-jsdoc": "^37.1.0",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-import": "^2.25.3",
"eslint-plugin-jsdoc": "^37.1.0",
"eslint-plugin-node": "^11.1.0",
}
},
"node_modules/@eslint/eslintrc": {
}
},
"node_modules/@eslint/eslintrc": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.4.tgz",
- "integrity": "sha512-h8Vx6MdxwWI2WM8/zREHMoqdgLNXEL4QX3MWSVMdyNJGvXVOs+6lp+m2hc3FnuMHDc4poxFNI20vCk0OmI4G0Q==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.5.tgz",
+ "integrity": "sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ==",
"dev": true,
"dependencies": {
"ajv": "^6.12.4",
"debug": "^4.3.2",
"dev": true,
"dependencies": {
"ajv": "^6.12.4",
"debug": "^4.3.2",
"globals": "^13.9.0",
"ignore": "^4.0.6",
"import-fresh": "^3.2.1",
"globals": "^13.9.0",
"ignore": "^4.0.6",
"import-fresh": "^3.2.1",
}
},
"node_modules/@humanwhocodes/config-array": {
}
},
"node_modules/@humanwhocodes/config-array": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.6.0.tgz",
- "integrity": "sha512-JQlEKbcgEUjBFhLIF4iqM7u/9lwgHRBcpHrmUNCALK0Q3amXN6lxdoXLnF0sm11E9VqTmBALR87IlUg1bZ8A9A==",
+ "version": "0.9.2",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.2.tgz",
+ "integrity": "sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA==",
"dev": true,
"dependencies": {
"dev": true,
"dependencies": {
- "@humanwhocodes/object-schema": "^1.2.0",
+ "@humanwhocodes/object-schema": "^1.2.1",
"debug": "^4.1.1",
"minimatch": "^3.0.4"
},
"debug": "^4.1.1",
"minimatch": "^3.0.4"
},
"dev": true
},
"node_modules/@typescript-eslint/eslint-plugin": {
"dev": true
},
"node_modules/@typescript-eslint/eslint-plugin": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.5.0.tgz",
- "integrity": "sha512-4bV6fulqbuaO9UMXU0Ia0o6z6if+kmMRW8rMRyfqXj/eGrZZRGedS4n0adeGNnjr8LKAM495hrQ7Tea52UWmQA==",
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.6.0.tgz",
+ "integrity": "sha512-MIbeMy5qfLqtgs1hWd088k1hOuRsN9JrHUPwVVKCD99EOUqScd7SrwoZl4Gso05EAP9w1kvLWUVGJOVpRPkDPA==",
"dev": true,
"dependencies": {
"dev": true,
"dependencies": {
- "@typescript-eslint/experimental-utils": "5.5.0",
- "@typescript-eslint/scope-manager": "5.5.0",
+ "@typescript-eslint/experimental-utils": "5.6.0",
+ "@typescript-eslint/scope-manager": "5.6.0",
"debug": "^4.3.2",
"functional-red-black-tree": "^1.0.1",
"ignore": "^5.1.8",
"debug": "^4.3.2",
"functional-red-black-tree": "^1.0.1",
"ignore": "^5.1.8",
}
},
"node_modules/@typescript-eslint/experimental-utils": {
}
},
"node_modules/@typescript-eslint/experimental-utils": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.5.0.tgz",
- "integrity": "sha512-kjWeeVU+4lQ1SLYErRKV5yDXbWDPkpbzTUUlfAUifPYvpX0qZlrcCZ96/6oWxt3QxtK5WVhXz+KsnwW9cIW+3A==",
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.6.0.tgz",
+ "integrity": "sha512-VDoRf3Qj7+W3sS/ZBXZh3LBzp0snDLEgvp6qj0vOAIiAPM07bd5ojQ3CTzF/QFl5AKh7Bh1ycgj6lFBJHUt/DA==",
"dev": true,
"dependencies": {
"@types/json-schema": "^7.0.9",
"dev": true,
"dependencies": {
"@types/json-schema": "^7.0.9",
- "@typescript-eslint/scope-manager": "5.5.0",
- "@typescript-eslint/types": "5.5.0",
- "@typescript-eslint/typescript-estree": "5.5.0",
+ "@typescript-eslint/scope-manager": "5.6.0",
+ "@typescript-eslint/types": "5.6.0",
+ "@typescript-eslint/typescript-estree": "5.6.0",
"eslint-scope": "^5.1.1",
"eslint-utils": "^3.0.0"
},
"eslint-scope": "^5.1.1",
"eslint-utils": "^3.0.0"
},
}
},
"node_modules/@typescript-eslint/parser": {
}
},
"node_modules/@typescript-eslint/parser": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.5.0.tgz",
- "integrity": "sha512-JsXBU+kgQOAgzUn2jPrLA+Rd0Y1dswOlX3hp8MuRO1hQDs6xgHtbCXEiAu7bz5hyVURxbXcA2draasMbNqrhmg==",
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.6.0.tgz",
+ "integrity": "sha512-YVK49NgdUPQ8SpCZaOpiq1kLkYRPMv9U5gcMrywzI8brtwZjr/tG3sZpuHyODt76W/A0SufNjYt9ZOgrC4tLIQ==",
"dev": true,
"dependencies": {
"dev": true,
"dependencies": {
- "@typescript-eslint/scope-manager": "5.5.0",
- "@typescript-eslint/types": "5.5.0",
- "@typescript-eslint/typescript-estree": "5.5.0",
+ "@typescript-eslint/scope-manager": "5.6.0",
+ "@typescript-eslint/types": "5.6.0",
+ "@typescript-eslint/typescript-estree": "5.6.0",
"debug": "^4.3.2"
},
"engines": {
"debug": "^4.3.2"
},
"engines": {
}
},
"node_modules/@typescript-eslint/scope-manager": {
}
},
"node_modules/@typescript-eslint/scope-manager": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.5.0.tgz",
- "integrity": "sha512-0/r656RmRLo7CbN4Mdd+xZyPJ/fPCKhYdU6mnZx+8msAD8nJSP8EyCFkzbd6vNVZzZvWlMYrSNekqGrCBqFQhg==",
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.6.0.tgz",
+ "integrity": "sha512-1U1G77Hw2jsGWVsO2w6eVCbOg0HZ5WxL/cozVSTfqnL/eB9muhb8THsP0G3w+BB5xAHv9KptwdfYFAUfzcIh4A==",
"dev": true,
"dependencies": {
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "5.5.0",
- "@typescript-eslint/visitor-keys": "5.5.0"
+ "@typescript-eslint/types": "5.6.0",
+ "@typescript-eslint/visitor-keys": "5.6.0"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
"node_modules/@typescript-eslint/types": {
}
},
"node_modules/@typescript-eslint/types": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.5.0.tgz",
- "integrity": "sha512-OaYTqkW3GnuHxqsxxJ6KypIKd5Uw7bFiQJZRyNi1jbMJnK3Hc/DR4KwB6KJj6PBRkJJoaNwzMNv9vtTk87JhOg==",
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.6.0.tgz",
+ "integrity": "sha512-OIZffked7mXv4mXzWU5MgAEbCf9ecNJBKi+Si6/I9PpTaj+cf2x58h2oHW5/P/yTnPkKaayfjhLvx+crnl5ubA==",
"dev": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
"dev": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
"node_modules/@typescript-eslint/typescript-estree": {
}
},
"node_modules/@typescript-eslint/typescript-estree": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.5.0.tgz",
- "integrity": "sha512-pVn8btYUiYrjonhMAO0yG8lm7RApzy2L4RC7Td/mC/qFkyf6vRbGyZozoA94+w6D2Y2GRqpMoCWcwx/EUOzyoQ==",
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.6.0.tgz",
+ "integrity": "sha512-92vK5tQaE81rK7fOmuWMrSQtK1IMonESR+RJR2Tlc7w4o0MeEdjgidY/uO2Gobh7z4Q1hhS94Cr7r021fMVEeA==",
"dev": true,
"dependencies": {
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "5.5.0",
- "@typescript-eslint/visitor-keys": "5.5.0",
+ "@typescript-eslint/types": "5.6.0",
+ "@typescript-eslint/visitor-keys": "5.6.0",
"debug": "^4.3.2",
"globby": "^11.0.4",
"is-glob": "^4.0.3",
"debug": "^4.3.2",
"globby": "^11.0.4",
"is-glob": "^4.0.3",
}
},
"node_modules/@typescript-eslint/visitor-keys": {
}
},
"node_modules/@typescript-eslint/visitor-keys": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.5.0.tgz",
- "integrity": "sha512-4GzJ1kRtsWzHhdM40tv0ZKHNSbkDhF0Woi/TDwVJX6UICwJItvP7ZTXbjTkCdrors7ww0sYe0t+cIKDAJwZ7Kw==",
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.6.0.tgz",
+ "integrity": "sha512-1p7hDp5cpRFUyE3+lvA74egs+RWSgumrBpzBCDzfTFv0aQ7lIeay80yU0hIxgAhwQ6PcasW35kaOCyDOv6O/Ng==",
"dev": true,
"dependencies": {
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "5.5.0",
+ "@typescript-eslint/types": "5.6.0",
"eslint-visitor-keys": "^3.0.0"
},
"engines": {
"eslint-visitor-keys": "^3.0.0"
},
"engines": {
}
},
"node_modules/caniuse-lite": {
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001283",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001283.tgz",
- "integrity": "sha512-9RoKo841j1GQFSJz/nCXOj0sD7tHBtlowjYlrqIUS812x9/emfBLBt6IyMz1zIaYc/eRL8Cs6HPUVi2Hzq4sIg==",
+ "version": "1.0.30001285",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001285.tgz",
+ "integrity": "sha512-KAOkuUtcQ901MtmvxfKD+ODHH9YVDYnBt+TGYSz2KIfnq22CiArbUxXPN9067gNbgMlnNYRSwho8OPXZPALB9Q==",
"dev": true,
"funding": {
"type": "opencollective",
"dev": true,
"funding": {
"type": "opencollective",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
"node_modules/color-string": {
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
"node_modules/color-string": {
- "version": "1.8.2",
- "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.8.2.tgz",
- "integrity": "sha512-w5ZkKRdLsc5NOYsmnpS2DpyRW71npwZGwbRpLrJTuqjfTs2Bhrba7UiV59IX9siBlCPl2pne5NtiwnVWUzvYFA==",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.0.tgz",
+ "integrity": "sha512-9Mrz2AQLefkH1UvASKj6v6hj/7eWgjnT/cVsR8CumieLoT+g900exWeNogqtweI8dxloXN9BDQTYro1oWu/5CQ==",
"dependencies": {
"color-name": "^1.0.0",
"simple-swizzle": "^0.2.2"
"dependencies": {
"color-name": "^1.0.0",
"simple-swizzle": "^0.2.2"
"hasInstallScript": true
},
"node_modules/core-util-is": {
"hasInstallScript": true
},
"node_modules/core-util-is": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
- "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
+ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
},
"node_modules/cosmiconfig": {
"version": "7.0.1",
},
"node_modules/cosmiconfig": {
"version": "7.0.1",
}
},
"node_modules/electron-to-chromium": {
}
},
"node_modules/electron-to-chromium": {
- "version": "1.4.8",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.8.tgz",
- "integrity": "sha512-Cu5+dbg55+1E3ohlsa8HT0s4b8D0gBewXEGG8s5wBl8ynWv60VuvYW25GpsOeTVXpulhyU/U8JYZH+yxASSJBQ==",
+ "version": "1.4.12",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.12.tgz",
+ "integrity": "sha512-zjfhG9Us/hIy8AlQ5OzfbR/C4aBv1Dg/ak4GX35CELYlJ4tDAtoEcQivXvyBdqdNQ+R6PhlgQqV8UNPJmhkJog==",
"dev": true
},
"node_modules/elliptic": {
"dev": true
},
"node_modules/elliptic": {
}
},
"node_modules/eslint": {
}
},
"node_modules/eslint": {
- "version": "8.3.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.3.0.tgz",
- "integrity": "sha512-aIay56Ph6RxOTC7xyr59Kt3ewX185SaGnAr8eWukoPLeriCrvGjvAubxuvaXOfsxhtwV5g0uBOsyhAom4qJdww==",
+ "version": "8.4.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.4.0.tgz",
+ "integrity": "sha512-kv0XQcAQJL/VD9THQKhTQZVqkJKA+tIj/v2ZKNaIHRAADcJWFb+B/BAewUYuF6UVg1s2xC5qXVoDk0G8sKGeTA==",
"dev": true,
"dependencies": {
"dev": true,
"dependencies": {
- "@eslint/eslintrc": "^1.0.4",
- "@humanwhocodes/config-array": "^0.6.0",
+ "@eslint/eslintrc": "^1.0.5",
+ "@humanwhocodes/config-array": "^0.9.2",
"ajv": "^6.10.0",
"chalk": "^4.0.0",
"cross-spawn": "^7.0.2",
"ajv": "^6.10.0",
"chalk": "^4.0.0",
"cross-spawn": "^7.0.2",
"eslint-scope": "^7.1.0",
"eslint-utils": "^3.0.0",
"eslint-visitor-keys": "^3.1.0",
"eslint-scope": "^7.1.0",
"eslint-utils": "^3.0.0",
"eslint-visitor-keys": "^3.1.0",
"esquery": "^1.4.0",
"esutils": "^2.0.2",
"fast-deep-equal": "^3.1.3",
"esquery": "^1.4.0",
"esutils": "^2.0.2",
"fast-deep-equal": "^3.1.3",
}
},
"node_modules/espree": {
}
},
"node_modules/espree": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.1.0.tgz",
- "integrity": "sha512-ZgYLvCS1wxOczBYGcQT9DDWgicXwJ4dbocr9uYN+/eresBAUuBu+O4WzB21ufQ/JqQT8gyp7hJ3z8SHii32mTQ==",
+ "version": "9.2.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.2.0.tgz",
+ "integrity": "sha512-oP3utRkynpZWF/F2x/HZJ+AGtnIclaR7z1pYPxy7NYM2fSO6LgK/Rkny8anRSPK/VwEA1eqm2squui0T7ZMOBg==",
"dev": true,
"dependencies": {
"acorn": "^8.6.0",
"dev": true,
"dependencies": {
"acorn": "^8.6.0",
}
},
"node_modules/glob": {
}
},
"node_modules/glob": {
- "version": "7.1.7",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
- "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
+ "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
}
},
"node_modules/mariadb/node_modules/@types/node": {
}
},
"node_modules/mariadb/node_modules/@types/node": {
- "version": "14.17.34",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.34.tgz",
- "integrity": "sha512-USUftMYpmuMzeWobskoPfzDi+vkpe0dvcOBRNOscFrGxVp4jomnRxWuVohgqBow2xyIPC0S3gjxV/5079jhmDg=="
+ "version": "14.18.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.0.tgz",
+ "integrity": "sha512-0GeIl2kmVMXEnx8tg1SlG6Gg8vkqirrW752KqolYo1PHevhhZN3bhJ67qHj+bQaINhX0Ra3TlWwRvMCd9iEfNQ=="
},
"node_modules/mariadb/node_modules/iconv-lite": {
"version": "0.6.3",
},
"node_modules/mariadb/node_modules/iconv-lite": {
"version": "0.6.3",
"url": "https://github.com/sponsors/sindresorhus"
}
},
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/mocha/node_modules/glob": {
+ "version": "7.1.7",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
+ "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
"node_modules/mocha/node_modules/locate-path": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
"node_modules/mocha/node_modules/locate-path": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
}
},
"node_modules/object-inspect": {
}
},
"node_modules/object-inspect": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz",
- "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==",
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.1.tgz",
+ "integrity": "sha512-If7BjFlpkzzBeV1cqgT3OSWT3azyoxDGajR+iGnFBfVV2EWyDyWaZZW2ERDjUaY2QM8i5jI3Sj7mhsM4DDAqWA==",
"dev": true,
"funding": {
"url": "https://github.com/sponsors/ljharb"
"dev": true,
"funding": {
"url": "https://github.com/sponsors/ljharb"
+ "node_modules/protocol-buffers-encodings/node_modules/varint": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.0.tgz",
+ "integrity": "sha1-2Ca4n3SQcy+rwMDtaT7Uddyynr8=",
+ "dev": true
+ },
"node_modules/protocol-buffers-schema": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz",
"node_modules/protocol-buffers-schema": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz",
}
},
"node_modules/punycode": {
}
},
"node_modules/punycode": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
- "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
"dev": true
},
"node_modules/pupa": {
"dev": true
},
"node_modules/pupa": {
}
},
"node_modules/qs": {
}
},
"node_modules/qs": {
- "version": "6.10.1",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz",
- "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==",
+ "version": "6.10.2",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.2.tgz",
+ "integrity": "sha512-mSIdjzqznWgfd4pMii7sHtaYF8rx8861hBO80SraY5GT0XQibWZWJSid0avzHGkDIZLImux2S5mXO0Hfct2QCw==",
"dev": true,
"dependencies": {
"side-channel": "^1.0.4"
"dev": true,
"dependencies": {
"side-channel": "^1.0.4"
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
+ "node_modules/readable-stream/node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
"node_modules/readdirp": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
"node_modules/readdirp": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
}
},
"node_modules/string_decoder": {
}
},
"node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
- "safe-buffer": "~5.1.0"
+ "safe-buffer": "~5.2.0"
- "node_modules/string_decoder/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
"node_modules/string-width": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
"node_modules/string-width": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "node_modules/url/node_modules/punycode": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
+ "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
+ "dev": true
+ },
"node_modules/use": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
"node_modules/use": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
}
},
"node_modules/varint": {
}
},
"node_modules/varint": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.0.tgz",
- "integrity": "sha1-2Ca4n3SQcy+rwMDtaT7Uddyynr8=",
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz",
+ "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==",
"dev": true
},
"node_modules/verror": {
"dev": true
},
"node_modules/verror": {
"extsprintf": "^1.2.0"
}
},
"extsprintf": "^1.2.0"
}
},
+ "node_modules/verror/node_modules/core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+ "devOptional": true
+ },
"node_modules/vm-browserify": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz",
"node_modules/vm-browserify": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz",
}
},
"@eslint/eslintrc": {
}
},
"@eslint/eslintrc": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.4.tgz",
- "integrity": "sha512-h8Vx6MdxwWI2WM8/zREHMoqdgLNXEL4QX3MWSVMdyNJGvXVOs+6lp+m2hc3FnuMHDc4poxFNI20vCk0OmI4G0Q==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.5.tgz",
+ "integrity": "sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ==",
"dev": true,
"requires": {
"ajv": "^6.12.4",
"debug": "^4.3.2",
"dev": true,
"requires": {
"ajv": "^6.12.4",
"debug": "^4.3.2",
"globals": "^13.9.0",
"ignore": "^4.0.6",
"import-fresh": "^3.2.1",
"globals": "^13.9.0",
"ignore": "^4.0.6",
"import-fresh": "^3.2.1",
}
},
"@humanwhocodes/config-array": {
}
},
"@humanwhocodes/config-array": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.6.0.tgz",
- "integrity": "sha512-JQlEKbcgEUjBFhLIF4iqM7u/9lwgHRBcpHrmUNCALK0Q3amXN6lxdoXLnF0sm11E9VqTmBALR87IlUg1bZ8A9A==",
+ "version": "0.9.2",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.2.tgz",
+ "integrity": "sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA==",
"dev": true,
"requires": {
"dev": true,
"requires": {
- "@humanwhocodes/object-schema": "^1.2.0",
+ "@humanwhocodes/object-schema": "^1.2.1",
"debug": "^4.1.1",
"minimatch": "^3.0.4"
}
"debug": "^4.1.1",
"minimatch": "^3.0.4"
}
"dev": true
},
"@typescript-eslint/eslint-plugin": {
"dev": true
},
"@typescript-eslint/eslint-plugin": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.5.0.tgz",
- "integrity": "sha512-4bV6fulqbuaO9UMXU0Ia0o6z6if+kmMRW8rMRyfqXj/eGrZZRGedS4n0adeGNnjr8LKAM495hrQ7Tea52UWmQA==",
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.6.0.tgz",
+ "integrity": "sha512-MIbeMy5qfLqtgs1hWd088k1hOuRsN9JrHUPwVVKCD99EOUqScd7SrwoZl4Gso05EAP9w1kvLWUVGJOVpRPkDPA==",
"dev": true,
"requires": {
"dev": true,
"requires": {
- "@typescript-eslint/experimental-utils": "5.5.0",
- "@typescript-eslint/scope-manager": "5.5.0",
+ "@typescript-eslint/experimental-utils": "5.6.0",
+ "@typescript-eslint/scope-manager": "5.6.0",
"debug": "^4.3.2",
"functional-red-black-tree": "^1.0.1",
"ignore": "^5.1.8",
"debug": "^4.3.2",
"functional-red-black-tree": "^1.0.1",
"ignore": "^5.1.8",
}
},
"@typescript-eslint/experimental-utils": {
}
},
"@typescript-eslint/experimental-utils": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.5.0.tgz",
- "integrity": "sha512-kjWeeVU+4lQ1SLYErRKV5yDXbWDPkpbzTUUlfAUifPYvpX0qZlrcCZ96/6oWxt3QxtK5WVhXz+KsnwW9cIW+3A==",
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.6.0.tgz",
+ "integrity": "sha512-VDoRf3Qj7+W3sS/ZBXZh3LBzp0snDLEgvp6qj0vOAIiAPM07bd5ojQ3CTzF/QFl5AKh7Bh1ycgj6lFBJHUt/DA==",
"dev": true,
"requires": {
"@types/json-schema": "^7.0.9",
"dev": true,
"requires": {
"@types/json-schema": "^7.0.9",
- "@typescript-eslint/scope-manager": "5.5.0",
- "@typescript-eslint/types": "5.5.0",
- "@typescript-eslint/typescript-estree": "5.5.0",
+ "@typescript-eslint/scope-manager": "5.6.0",
+ "@typescript-eslint/types": "5.6.0",
+ "@typescript-eslint/typescript-estree": "5.6.0",
"eslint-scope": "^5.1.1",
"eslint-utils": "^3.0.0"
}
},
"@typescript-eslint/parser": {
"eslint-scope": "^5.1.1",
"eslint-utils": "^3.0.0"
}
},
"@typescript-eslint/parser": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.5.0.tgz",
- "integrity": "sha512-JsXBU+kgQOAgzUn2jPrLA+Rd0Y1dswOlX3hp8MuRO1hQDs6xgHtbCXEiAu7bz5hyVURxbXcA2draasMbNqrhmg==",
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.6.0.tgz",
+ "integrity": "sha512-YVK49NgdUPQ8SpCZaOpiq1kLkYRPMv9U5gcMrywzI8brtwZjr/tG3sZpuHyODt76W/A0SufNjYt9ZOgrC4tLIQ==",
"dev": true,
"requires": {
"dev": true,
"requires": {
- "@typescript-eslint/scope-manager": "5.5.0",
- "@typescript-eslint/types": "5.5.0",
- "@typescript-eslint/typescript-estree": "5.5.0",
+ "@typescript-eslint/scope-manager": "5.6.0",
+ "@typescript-eslint/types": "5.6.0",
+ "@typescript-eslint/typescript-estree": "5.6.0",
"debug": "^4.3.2"
}
},
"@typescript-eslint/scope-manager": {
"debug": "^4.3.2"
}
},
"@typescript-eslint/scope-manager": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.5.0.tgz",
- "integrity": "sha512-0/r656RmRLo7CbN4Mdd+xZyPJ/fPCKhYdU6mnZx+8msAD8nJSP8EyCFkzbd6vNVZzZvWlMYrSNekqGrCBqFQhg==",
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.6.0.tgz",
+ "integrity": "sha512-1U1G77Hw2jsGWVsO2w6eVCbOg0HZ5WxL/cozVSTfqnL/eB9muhb8THsP0G3w+BB5xAHv9KptwdfYFAUfzcIh4A==",
"dev": true,
"requires": {
"dev": true,
"requires": {
- "@typescript-eslint/types": "5.5.0",
- "@typescript-eslint/visitor-keys": "5.5.0"
+ "@typescript-eslint/types": "5.6.0",
+ "@typescript-eslint/visitor-keys": "5.6.0"
}
},
"@typescript-eslint/types": {
}
},
"@typescript-eslint/types": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.5.0.tgz",
- "integrity": "sha512-OaYTqkW3GnuHxqsxxJ6KypIKd5Uw7bFiQJZRyNi1jbMJnK3Hc/DR4KwB6KJj6PBRkJJoaNwzMNv9vtTk87JhOg==",
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.6.0.tgz",
+ "integrity": "sha512-OIZffked7mXv4mXzWU5MgAEbCf9ecNJBKi+Si6/I9PpTaj+cf2x58h2oHW5/P/yTnPkKaayfjhLvx+crnl5ubA==",
"dev": true
},
"@typescript-eslint/typescript-estree": {
"dev": true
},
"@typescript-eslint/typescript-estree": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.5.0.tgz",
- "integrity": "sha512-pVn8btYUiYrjonhMAO0yG8lm7RApzy2L4RC7Td/mC/qFkyf6vRbGyZozoA94+w6D2Y2GRqpMoCWcwx/EUOzyoQ==",
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.6.0.tgz",
+ "integrity": "sha512-92vK5tQaE81rK7fOmuWMrSQtK1IMonESR+RJR2Tlc7w4o0MeEdjgidY/uO2Gobh7z4Q1hhS94Cr7r021fMVEeA==",
"dev": true,
"requires": {
"dev": true,
"requires": {
- "@typescript-eslint/types": "5.5.0",
- "@typescript-eslint/visitor-keys": "5.5.0",
+ "@typescript-eslint/types": "5.6.0",
+ "@typescript-eslint/visitor-keys": "5.6.0",
"debug": "^4.3.2",
"globby": "^11.0.4",
"is-glob": "^4.0.3",
"debug": "^4.3.2",
"globby": "^11.0.4",
"is-glob": "^4.0.3",
}
},
"@typescript-eslint/visitor-keys": {
}
},
"@typescript-eslint/visitor-keys": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.5.0.tgz",
- "integrity": "sha512-4GzJ1kRtsWzHhdM40tv0ZKHNSbkDhF0Woi/TDwVJX6UICwJItvP7ZTXbjTkCdrors7ww0sYe0t+cIKDAJwZ7Kw==",
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.6.0.tgz",
+ "integrity": "sha512-1p7hDp5cpRFUyE3+lvA74egs+RWSgumrBpzBCDzfTFv0aQ7lIeay80yU0hIxgAhwQ6PcasW35kaOCyDOv6O/Ng==",
"dev": true,
"requires": {
"dev": true,
"requires": {
- "@typescript-eslint/types": "5.5.0",
+ "@typescript-eslint/types": "5.6.0",
"eslint-visitor-keys": "^3.0.0"
}
},
"eslint-visitor-keys": "^3.0.0"
}
},
- "version": "1.0.30001283",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001283.tgz",
- "integrity": "sha512-9RoKo841j1GQFSJz/nCXOj0sD7tHBtlowjYlrqIUS812x9/emfBLBt6IyMz1zIaYc/eRL8Cs6HPUVi2Hzq4sIg==",
+ "version": "1.0.30001285",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001285.tgz",
+ "integrity": "sha512-KAOkuUtcQ901MtmvxfKD+ODHH9YVDYnBt+TGYSz2KIfnq22CiArbUxXPN9067gNbgMlnNYRSwho8OPXZPALB9Q==",
"dev": true
},
"capture-stack-trace": {
"dev": true
},
"capture-stack-trace": {
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
"color-string": {
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
"color-string": {
- "version": "1.8.2",
- "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.8.2.tgz",
- "integrity": "sha512-w5ZkKRdLsc5NOYsmnpS2DpyRW71npwZGwbRpLrJTuqjfTs2Bhrba7UiV59IX9siBlCPl2pne5NtiwnVWUzvYFA==",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.0.tgz",
+ "integrity": "sha512-9Mrz2AQLefkH1UvASKj6v6hj/7eWgjnT/cVsR8CumieLoT+g900exWeNogqtweI8dxloXN9BDQTYro1oWu/5CQ==",
"requires": {
"color-name": "^1.0.0",
"simple-swizzle": "^0.2.2"
"requires": {
"color-name": "^1.0.0",
"simple-swizzle": "^0.2.2"
"dev": true
},
"core-util-is": {
"dev": true
},
"core-util-is": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
- "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
+ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
},
"cosmiconfig": {
"version": "7.0.1",
},
"cosmiconfig": {
"version": "7.0.1",
}
},
"electron-to-chromium": {
}
},
"electron-to-chromium": {
- "version": "1.4.8",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.8.tgz",
- "integrity": "sha512-Cu5+dbg55+1E3ohlsa8HT0s4b8D0gBewXEGG8s5wBl8ynWv60VuvYW25GpsOeTVXpulhyU/U8JYZH+yxASSJBQ==",
+ "version": "1.4.12",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.12.tgz",
+ "integrity": "sha512-zjfhG9Us/hIy8AlQ5OzfbR/C4aBv1Dg/ak4GX35CELYlJ4tDAtoEcQivXvyBdqdNQ+R6PhlgQqV8UNPJmhkJog==",
"dev": true
},
"elliptic": {
"dev": true
},
"elliptic": {
- "version": "8.3.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.3.0.tgz",
- "integrity": "sha512-aIay56Ph6RxOTC7xyr59Kt3ewX185SaGnAr8eWukoPLeriCrvGjvAubxuvaXOfsxhtwV5g0uBOsyhAom4qJdww==",
+ "version": "8.4.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.4.0.tgz",
+ "integrity": "sha512-kv0XQcAQJL/VD9THQKhTQZVqkJKA+tIj/v2ZKNaIHRAADcJWFb+B/BAewUYuF6UVg1s2xC5qXVoDk0G8sKGeTA==",
"dev": true,
"requires": {
"dev": true,
"requires": {
- "@eslint/eslintrc": "^1.0.4",
- "@humanwhocodes/config-array": "^0.6.0",
+ "@eslint/eslintrc": "^1.0.5",
+ "@humanwhocodes/config-array": "^0.9.2",
"ajv": "^6.10.0",
"chalk": "^4.0.0",
"cross-spawn": "^7.0.2",
"ajv": "^6.10.0",
"chalk": "^4.0.0",
"cross-spawn": "^7.0.2",
"eslint-scope": "^7.1.0",
"eslint-utils": "^3.0.0",
"eslint-visitor-keys": "^3.1.0",
"eslint-scope": "^7.1.0",
"eslint-utils": "^3.0.0",
"eslint-visitor-keys": "^3.1.0",
"esquery": "^1.4.0",
"esutils": "^2.0.2",
"fast-deep-equal": "^3.1.3",
"esquery": "^1.4.0",
"esutils": "^2.0.2",
"fast-deep-equal": "^3.1.3",
"integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA=="
},
"espree": {
"integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA=="
},
"espree": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.1.0.tgz",
- "integrity": "sha512-ZgYLvCS1wxOczBYGcQT9DDWgicXwJ4dbocr9uYN+/eresBAUuBu+O4WzB21ufQ/JqQT8gyp7hJ3z8SHii32mTQ==",
+ "version": "9.2.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.2.0.tgz",
+ "integrity": "sha512-oP3utRkynpZWF/F2x/HZJ+AGtnIclaR7z1pYPxy7NYM2fSO6LgK/Rkny8anRSPK/VwEA1eqm2squui0T7ZMOBg==",
"dev": true,
"requires": {
"acorn": "^8.6.0",
"dev": true,
"requires": {
"acorn": "^8.6.0",
- "version": "7.1.7",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
- "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
+ "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
"requires": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"requires": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
},
"dependencies": {
"@types/node": {
},
"dependencies": {
"@types/node": {
- "version": "14.17.34",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.34.tgz",
- "integrity": "sha512-USUftMYpmuMzeWobskoPfzDi+vkpe0dvcOBRNOscFrGxVp4jomnRxWuVohgqBow2xyIPC0S3gjxV/5079jhmDg=="
+ "version": "14.18.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.0.tgz",
+ "integrity": "sha512-0GeIl2kmVMXEnx8tg1SlG6Gg8vkqirrW752KqolYo1PHevhhZN3bhJ67qHj+bQaINhX0Ra3TlWwRvMCd9iEfNQ=="
},
"iconv-lite": {
"version": "0.6.3",
},
"iconv-lite": {
"version": "0.6.3",
"path-exists": "^4.0.0"
}
},
"path-exists": "^4.0.0"
}
},
+ "glob": {
+ "version": "7.1.7",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
+ "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
"locate-path": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
"locate-path": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
"integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw=="
},
"object-inspect": {
"integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw=="
},
"object-inspect": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz",
- "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==",
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.1.tgz",
+ "integrity": "sha512-If7BjFlpkzzBeV1cqgT3OSWT3azyoxDGajR+iGnFBfVV2EWyDyWaZZW2ERDjUaY2QM8i5jI3Sj7mhsM4DDAqWA==",
"dev": true
},
"object-keys": {
"dev": true
},
"object-keys": {
"requires": {
"signed-varint": "^2.0.1",
"varint": "5.0.0"
"requires": {
"signed-varint": "^2.0.1",
"varint": "5.0.0"
+ },
+ "dependencies": {
+ "varint": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.0.tgz",
+ "integrity": "sha1-2Ca4n3SQcy+rwMDtaT7Uddyynr8=",
+ "dev": true
+ }
}
},
"protocol-buffers-schema": {
}
},
"protocol-buffers-schema": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
- "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
- "version": "6.10.1",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz",
- "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==",
+ "version": "6.10.2",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.2.tgz",
+ "integrity": "sha512-mSIdjzqznWgfd4pMii7sHtaYF8rx8861hBO80SraY5GT0XQibWZWJSid0avzHGkDIZLImux2S5mXO0Hfct2QCw==",
"dev": true,
"requires": {
"side-channel": "^1.0.4"
"dev": true,
"requires": {
"side-channel": "^1.0.4"
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
"dev": true
},
"string_decoder": {
"dev": true
},
"string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
- "safe-buffer": "~5.1.0"
- },
- "dependencies": {
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- }
+ "safe-buffer": "~5.2.0"
"requires": {
"punycode": "1.3.2",
"querystring": "0.2.0"
"requires": {
"punycode": "1.3.2",
"querystring": "0.2.0"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
+ "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
+ "dev": true
+ }
"dev": true
},
"varint": {
"dev": true
},
"varint": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.0.tgz",
- "integrity": "sha1-2Ca4n3SQcy+rwMDtaT7Uddyynr8=",
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz",
+ "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==",
"dev": true
},
"verror": {
"dev": true
},
"verror": {
"assert-plus": "^1.0.0",
"core-util-is": "1.0.2",
"extsprintf": "^1.2.0"
"assert-plus": "^1.0.0",
"core-util-is": "1.0.2",
"extsprintf": "^1.2.0"
+ },
+ "dependencies": {
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+ "devOptional": true
+ }
"auto-changelog": "^2.3.0",
"clinic": "^10.0.0",
"cross-env": "^7.0.3",
"auto-changelog": "^2.3.0",
"clinic": "^10.0.0",
"cross-env": "^7.0.3",
"eslint-plugin-import": "^2.25.3",
"eslint-plugin-jsdoc": "^37.1.0",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-import": "^2.25.3",
"eslint-plugin-jsdoc": "^37.1.0",
"eslint-plugin-node": "^11.1.0",
"ws://localhost:8010/OCPP16/5be7fb271014d90008992f06"
],
"distributeStationsToTenantsEqually": true,
"ws://localhost:8010/OCPP16/5be7fb271014d90008992f06"
],
"distributeStationsToTenantsEqually": true,
"workerProcess": "workerSet",
"workerPoolMinSize": 4,
"workerPoolMaxSize": 16,
"workerProcess": "workerSet",
"workerPoolMinSize": 4,
"workerPoolMaxSize": 16,
- "stationTemplateURLs": [
+ "stationTemplateUrls": [
{
"file": "siemens.station-template.json",
"numberOfStations": 1
{
"file": "siemens.station-template.json",
"numberOfStations": 1
}));
Configuration.getPerformanceStorage().enabled && (this.storage = StorageFactory.getStorage(
Configuration.getPerformanceStorage().type,
}));
Configuration.getPerformanceStorage().enabled && (this.storage = StorageFactory.getStorage(
Configuration.getPerformanceStorage().type,
- Configuration.getPerformanceStorage().URI,
+ Configuration.getPerformanceStorage().uri,
this.logPrefix()
));
Configuration.setConfigurationChangeCallback(async () => Bootstrap.getInstance().restart());
this.logPrefix()
));
Configuration.setConfigurationChangeCallback(async () => Bootstrap.getInstance().restart());
await this.storage?.open();
await this.workerImplementation.start();
this.uiWebSocketServer?.start();
await this.storage?.open();
await this.workerImplementation.start();
this.uiWebSocketServer?.start();
+ const stationTemplateUrls = Configuration.getStationTemplateUrls();
// Start ChargingStation object in worker thread
// Start ChargingStation object in worker thread
- if (Configuration.getStationTemplateURLs()) {
- for (const stationURL of Configuration.getStationTemplateURLs()) {
+ if (stationTemplateUrls) {
+ for (const stationTemplateUrl of stationTemplateUrls) {
- const nbStations = stationURL.numberOfStations ?? 0;
+ const nbStations = stationTemplateUrl.numberOfStations ?? 0;
for (let index = 1; index <= nbStations; index++) {
const workerData: ChargingStationWorkerData = {
index,
for (let index = 1; index <= nbStations; index++) {
const workerData: ChargingStationWorkerData = {
index,
- templateFile: path.join(path.resolve(__dirname, '../'), 'assets', 'station-templates', path.basename(stationURL.file))
+ templateFile: path.join(path.resolve(__dirname, '../'), 'assets', 'station-templates', path.basename(stationTemplateUrl.file))
};
await this.workerImplementation.addElement(workerData);
this.numberOfChargingStations++;
}
} catch (error) {
};
await this.workerImplementation.addElement(workerData);
this.numberOfChargingStations++;
}
} catch (error) {
- console.error(chalk.red('Charging station start with template file ' + stationURL.file + ' error '), error);
+ console.error(chalk.red('Charging station start with template file ' + stationTemplateUrl.file + ' error '), error);
- console.warn(chalk.yellow('No stationTemplateURLs defined in configuration, exiting'));
+ console.warn(chalk.yellow('No stationTemplateUrls defined in configuration, exiting'));
}
if (this.numberOfChargingStations === 0) {
console.warn(chalk.yellow('No charging station template enabled in configuration, exiting'));
}
if (this.numberOfChargingStations === 0) {
console.warn(chalk.yellow('No charging station template enabled in configuration, exiting'));
}
get wsConnectionUrl(): URL {
}
get wsConnectionUrl(): URL {
- return this.getSupervisionURLOCPPConfiguration() ? new URL(this.getConfigurationKey(this.stationInfo.supervisionURLOCPPKey ?? VendorDefaultParametersKey.ConnectionUrl).value + '/' + this.stationInfo.chargingStationId) : this.wsConfiguredConnectionUrl;
+ return this.getSupervisionUrlOcppConfiguration() ? new URL(this.getConfigurationKey(this.stationInfo.supervisionUrlOcppKey ?? VendorDefaultParametersKey.ConnectionUrl).value + '/' + this.stationInfo.chargingStationId) : this.wsConfiguredConnectionUrl;
}
public logPrefix(): string {
}
public logPrefix(): string {
- private getSupervisionURLOCPPConfiguration(): boolean {
- return this.stationInfo.supervisionURLOCPPConfiguration ?? false;
+ private getSupervisionUrlOcppConfiguration(): boolean {
+ return this.stationInfo.supervisionUrlOcppConfiguration ?? false;
}
private getChargingStationId(stationTemplate: ChargingStationTemplate): string {
}
private getChargingStationId(stationTemplate: ChargingStationTemplate): string {
- private getOCPPVersion(): OCPPVersion {
+ private getOcppVersion(): OCPPVersion {
return this.stationInfo.ocppVersion ? this.stationInfo.ocppVersion : OCPPVersion.VERSION_16;
}
return this.stationInfo.ocppVersion ? this.stationInfo.ocppVersion : OCPPVersion.VERSION_16;
}
this.initializeConnectorStatus(connectorId);
}
}
this.initializeConnectorStatus(connectorId);
}
}
- this.wsConfiguredConnectionUrl = new URL(this.getConfiguredSupervisionURL().href + '/' + this.stationInfo.chargingStationId);
- switch (this.getOCPPVersion()) {
+ this.wsConfiguredConnectionUrl = new URL(this.getConfiguredSupervisionUrl().href + '/' + this.stationInfo.chargingStationId);
+ switch (this.getOcppVersion()) {
case OCPPVersion.VERSION_16:
this.ocppIncomingRequestService = new OCPP16IncomingRequestService(this);
this.ocppRequestService = new OCPP16RequestService(this, new OCPP16ResponseService(this));
break;
default:
case OCPPVersion.VERSION_16:
this.ocppIncomingRequestService = new OCPP16IncomingRequestService(this);
this.ocppRequestService = new OCPP16RequestService(this, new OCPP16ResponseService(this));
break;
default:
- this.handleUnsupportedVersion(this.getOCPPVersion());
+ this.handleUnsupportedVersion(this.getOcppVersion());
break;
}
// OCPP parameters
break;
}
// OCPP parameters
- this.initOCPPParameters();
+ this.initOcppParameters();
if (this.stationInfo.autoRegister) {
this.bootNotificationResponse = {
currentTime: new Date().toISOString(),
if (this.stationInfo.autoRegister) {
this.bootNotificationResponse = {
currentTime: new Date().toISOString(),
- private initOCPPParameters(): void {
- if (this.getSupervisionURLOCPPConfiguration() && !this.getConfigurationKey(this.stationInfo.supervisionURLOCPPKey ?? VendorDefaultParametersKey.ConnectionUrl)) {
- this.addConfigurationKey(VendorDefaultParametersKey.ConnectionUrl, this.getConfiguredSupervisionURL().href, { reboot: true });
+ private initOcppParameters(): void {
+ if (this.getSupervisionUrlOcppConfiguration() && !this.getConfigurationKey(this.stationInfo.supervisionUrlOcppKey ?? VendorDefaultParametersKey.ConnectionUrl)) {
+ this.addConfigurationKey(VendorDefaultParametersKey.ConnectionUrl, this.getConfiguredSupervisionUrl().href, { reboot: true });
}
if (!this.getConfigurationKey(StandardParametersKey.SupportedFeatureProfiles)) {
this.addConfigurationKey(StandardParametersKey.SupportedFeatureProfiles, `${SupportedFeatureProfiles.Core},${SupportedFeatureProfiles.Local_Auth_List_Management},${SupportedFeatureProfiles.Smart_Charging}`);
}
if (!this.getConfigurationKey(StandardParametersKey.SupportedFeatureProfiles)) {
this.addConfigurationKey(StandardParametersKey.SupportedFeatureProfiles, `${SupportedFeatureProfiles.Core},${SupportedFeatureProfiles.Local_Auth_List_Management},${SupportedFeatureProfiles.Smart_Charging}`);
- private getConfiguredSupervisionURL(): URL {
- const supervisionUrls = Utils.cloneObject<string | string[]>(this.stationInfo.supervisionURL ?? Configuration.getSupervisionURLs());
+ private getConfiguredSupervisionUrl(): URL {
+ const supervisionUrls = Utils.cloneObject<string | string[]>(this.stationInfo.supervisionUrl ?? Configuration.getSupervisionUrls());
let indexUrl = 0;
if (!Utils.isEmptyArray(supervisionUrls)) {
if (Configuration.getDistributeStationsToTenantsEqually()) {
let indexUrl = 0;
if (!Utils.isEmptyArray(supervisionUrls)) {
if (Configuration.getDistributeStationsToTenantsEqually()) {
this.wsConnection.close();
}
let protocol: string;
this.wsConnection.close();
}
let protocol: string;
- switch (this.getOCPPVersion()) {
+ switch (this.getOcppVersion()) {
case OCPPVersion.VERSION_16:
protocol = 'ocpp' + OCPPVersion.VERSION_16;
break;
default:
case OCPPVersion.VERSION_16:
protocol = 'ocpp' + OCPPVersion.VERSION_16;
break;
default:
- this.handleUnsupportedVersion(this.getOCPPVersion());
+ this.handleUnsupportedVersion(this.getOcppVersion());
break;
}
this.wsConnection = new WebSocket(this.wsConnectionUrl, protocol, options);
break;
}
this.wsConnection = new WebSocket(this.wsConnectionUrl, protocol, options);
-import { Protocol, ProtocolCommand, ProtocolRequest, ProtocolVersion } from '../types/UIProtocol';
+import { Protocol, ProtocolCommand, ProtocolRequest, ProtocolVersion } from '../types/UiProtocol';
import WebSocket, { OPEN, Server, ServerOptions } from 'ws';
import AbstractUIService from './ui-websocket-services/AbstractUIService';
import WebSocket, { OPEN, Server, ServerOptions } from 'ws';
import AbstractUIService from './ui-websocket-services/AbstractUIService';
-import { ProtocolCommand, ProtocolRequestHandler } from '../../types/UIProtocol';
+import { ProtocolCommand, ProtocolRequestHandler } from '../../types/UiProtocol';
import BaseError from '../../exception/BaseError';
import UIWebSocketServer from '../UIWebSocketServer';
import BaseError from '../../exception/BaseError';
import UIWebSocketServer from '../UIWebSocketServer';
-import { ProtocolCommand, ProtocolRequestHandler } from '../../types/UIProtocol';
+import { ProtocolCommand, ProtocolRequestHandler } from '../../types/UiProtocol';
import AbstractUIService from './AbstractUIService';
import UIWebSocketServer from '../UIWebSocketServer';
import AbstractUIService from './AbstractUIService';
import UIWebSocketServer from '../UIWebSocketServer';
import AbstractUIService from './AbstractUIService';
import AbstractUIService from './AbstractUIService';
-import { ProtocolVersion } from '../../types/UIProtocol';
+import { ProtocolVersion } from '../../types/UiProtocol';
import UIService001 from './UIService001';
import UIWebSocketServer from '../UIWebSocketServer';
import UIService001 from './UIService001';
import UIWebSocketServer from '../UIWebSocketServer';
-import { Protocol, ProtocolVersion } from '../../types/UIProtocol';
+import { Protocol, ProtocolVersion } from '../../types/UiProtocol';
import { IncomingMessage } from 'http';
import Utils from '../../utils/Utils';
import { IncomingMessage } from 'http';
import Utils from '../../utils/Utils';
private readonly statistics: Statistics;
private displayInterval: NodeJS.Timeout;
private readonly statistics: Statistics;
private displayInterval: NodeJS.Timeout;
- public constructor(objId: string, URI: URL) {
+ public constructor(objId: string, uri: URL) {
this.objId = objId;
this.initializePerformanceObserver();
this.objId = objId;
this.initializePerformanceObserver();
- this.statistics = { id: this.objId ?? 'Object id not specified', URI: URI.toString(), createdAt: new Date(), statisticsData: new Map<string, Partial<StatisticsData>>() };
+ this.statistics = { id: this.objId ?? 'Object id not specified', uri: uri.toString(), createdAt: new Date(), statisticsData: new Map<string, Partial<StatisticsData>>() };
}
public static beginMeasure(id: string): string {
}
public static beginMeasure(id: string): string {
public start(): void {
this.startLogStatisticsInterval();
if (Configuration.getPerformanceStorage().enabled) {
public start(): void {
this.startLogStatisticsInterval();
if (Configuration.getPerformanceStorage().enabled) {
- logger.info(`${this.logPrefix()} storage enabled: type ${Configuration.getPerformanceStorage().type}, URI: ${Configuration.getPerformanceStorage().URI}`);
+ logger.info(`${this.logPrefix()} storage enabled: type ${Configuration.getPerformanceStorage().type}, uri: ${Configuration.getPerformanceStorage().uri}`);
export class JSONFileStorage extends Storage {
private fd: number | null = null;
export class JSONFileStorage extends Storage {
private fd: number | null = null;
- constructor(storageURI: string, logPrefix: string) {
- super(storageURI, logPrefix);
- this.dbName = this.storageURI.pathname;
+ constructor(storageUri: string, logPrefix: string) {
+ super(storageUri, logPrefix);
+ this.dbName = this.storageUri.pathname;
}
public storePerformanceStatistics(performanceStatistics: Statistics): void {
}
public storePerformanceStatistics(performanceStatistics: Statistics): void {
private storageType: StorageType;
private orm: MikroORM | null;
private storageType: StorageType;
private orm: MikroORM | null;
- constructor(storageURI: string, logPrefix: string, storageType: StorageType) {
- super(storageURI, logPrefix);
+ constructor(storageUri: string, logPrefix: string, storageType: StorageType) {
+ super(storageUri, logPrefix);
this.storageType = storageType;
this.dbName = this.getDBName();
}
this.storageType = storageType;
this.dbName = this.getDBName();
}
if (this.storageType === StorageType.SQLITE) {
return `${Constants.DEFAULT_PERFORMANCE_RECORDS_DB_NAME}.db`;
}
if (this.storageType === StorageType.SQLITE) {
return `${Constants.DEFAULT_PERFORMANCE_RECORDS_DB_NAME}.db`;
}
- return this.storageURI.pathname.replace(/(?:^\/)|(?:\/$)/g, '') ?? Constants.DEFAULT_PERFORMANCE_RECORDS_DB_NAME;
+ return this.storageUri.pathname.replace(/(?:^\/)|(?:\/$)/g, '') ?? Constants.DEFAULT_PERFORMANCE_RECORDS_DB_NAME;
}
private getOptions(): Configuration<IDatabaseDriver<Connection>> | Options<IDatabaseDriver<Connection>> {
}
private getOptions(): Configuration<IDatabaseDriver<Connection>> | Options<IDatabaseDriver<Connection>> {
case StorageType.SQLITE:
case StorageType.MARIA_DB:
case StorageType.MYSQL:
case StorageType.SQLITE:
case StorageType.MARIA_DB:
case StorageType.MYSQL:
- return this.storageURI.toString();
+ return this.storageUri.toString();
private readonly client: MongoClient | null;
private connected: boolean;
private readonly client: MongoClient | null;
private connected: boolean;
- constructor(storageURI: string, logPrefix: string) {
- super(storageURI, logPrefix);
- this.client = new MongoClient(this.storageURI.toString());
+ constructor(storageUri: string, logPrefix: string) {
+ super(storageUri, logPrefix);
+ this.client = new MongoClient(this.storageUri.toString());
- this.dbName = this.storageURI.pathname.replace(/(?:^\/)|(?:\/$)/g, '') ?? Constants.DEFAULT_PERFORMANCE_RECORDS_DB_NAME;
+ this.dbName = this.storageUri.pathname.replace(/(?:^\/)|(?:\/$)/g, '') ?? Constants.DEFAULT_PERFORMANCE_RECORDS_DB_NAME;
}
public async storePerformanceStatistics(performanceStatistics: Statistics): Promise<void> {
}
public async storePerformanceStatistics(performanceStatistics: Statistics): Promise<void> {
import logger from '../../utils/Logger';
export abstract class Storage {
import logger from '../../utils/Logger';
export abstract class Storage {
- protected readonly storageURI: URL;
+ protected readonly storageUri: URL;
protected readonly logPrefix: string;
protected dbName: string;
protected readonly logPrefix: string;
protected dbName: string;
- constructor(storageURI: string, logPrefix: string) {
- this.storageURI = new URL(storageURI);
+ constructor(storageUri: string, logPrefix: string) {
+ this.storageUri = new URL(storageUri);
this.logPrefix = logPrefix;
}
this.logPrefix = logPrefix;
}
- public static getStorage(type: StorageType, connectionURI: string, logPrefix: string): Storage {
+ public static getStorage(type: StorageType, connectionUri: string, logPrefix: string): Storage {
let storageInstance: Storage = null;
switch (type) {
case StorageType.JSON_FILE:
let storageInstance: Storage = null;
switch (type) {
case StorageType.JSON_FILE:
- storageInstance = new JSONFileStorage(connectionURI, logPrefix);
+ storageInstance = new JSONFileStorage(connectionUri, logPrefix);
break;
case StorageType.MONGO_DB:
break;
case StorageType.MONGO_DB:
- storageInstance = new MongoDBStorage(connectionURI, logPrefix);
+ storageInstance = new MongoDBStorage(connectionUri, logPrefix);
break;
// case StorageType.MYSQL:
// case StorageType.MARIA_DB:
break;
// case StorageType.MYSQL:
// case StorageType.MARIA_DB:
}
export default interface ChargingStationTemplate {
}
export default interface ChargingStationTemplate {
- supervisionURL?: string;
- supervisionURLOCPPConfiguration?: boolean;
- supervisionURLOCPPKey?: string;
+ supervisionUrl?: string;
+ supervisionUrlOcppConfiguration?: boolean;
+ supervisionUrlOcppKey?: string;
supervisionUser?: string;
supervisionPassword?: string;
ocppVersion?: OCPPVersion;
supervisionUser?: string;
supervisionPassword?: string;
ocppVersion?: OCPPVersion;
import type { WorkerChoiceStrategy } from 'poolifier';
import { WorkerProcessType } from './Worker';
import type { WorkerChoiceStrategy } from 'poolifier';
import { WorkerProcessType } from './Worker';
-export interface StationTemplateURL {
+export interface StationTemplateUrl {
file: string;
numberOfStations: number;
}
file: string;
numberOfStations: number;
}
export interface StorageConfiguration {
enabled?: boolean;
type?: StorageType;
export interface StorageConfiguration {
enabled?: boolean;
type?: StorageType;
}
export default interface ConfigurationData {
}
export default interface ConfigurationData {
- supervisionURLs?: string[];
- stationTemplateURLs: StationTemplateURL[];
+ supervisionUrls?: string[];
+ stationTemplateUrls: StationTemplateUrl[];
uiWebSocketServer?: UIWebSocketServerConfiguration;
performanceStorage?: StorageConfiguration;
autoReconnectMaxRetries?: number;
uiWebSocketServer?: UIWebSocketServerConfiguration;
performanceStorage?: StorageConfiguration;
autoReconnectMaxRetries?: number;
export default interface Statistics {
id: string;
export default interface Statistics {
id: string;
createdAt: Date;
updatedAt?: Date;
statisticsData: Map<string, Partial<StatisticsData>>;
createdAt: Date;
updatedAt?: Date;
statisticsData: Map<string, Partial<StatisticsData>>;
-import ConfigurationData, { StationTemplateURL, StorageConfiguration, UIWebSocketServerConfiguration } from '../types/ConfigurationData';
+import ConfigurationData, { StationTemplateUrl, StorageConfiguration, UIWebSocketServerConfiguration } from '../types/ConfigurationData';
import Constants from './Constants';
import { ServerOptions } from 'ws';
import Constants from './Constants';
import { ServerOptions } from 'ws';
}
static getPerformanceStorage(): StorageConfiguration {
}
static getPerformanceStorage(): StorageConfiguration {
+ Configuration.warnDeprecatedConfigurationKey('URI', 'performanceStorage', 'Use \'uri\' instead');
let storageConfiguration: StorageConfiguration = {
enabled: false,
type: StorageType.JSON_FILE,
let storageConfiguration: StorageConfiguration = {
enabled: false,
type: StorageType.JSON_FILE,
- URI: this.getDefaultPerformanceStorageURI(StorageType.JSON_FILE)
+ uri: this.getDefaultPerformanceStorageUri(StorageType.JSON_FILE)
};
if (Configuration.objectHasOwnProperty(Configuration.getConfig(), 'performanceStorage')) {
storageConfiguration =
{
...Configuration.objectHasOwnProperty(Configuration.getConfig().performanceStorage, 'enabled') && { enabled: Configuration.getConfig().performanceStorage.enabled },
...Configuration.objectHasOwnProperty(Configuration.getConfig().performanceStorage, 'type') && { type: Configuration.getConfig().performanceStorage.type },
};
if (Configuration.objectHasOwnProperty(Configuration.getConfig(), 'performanceStorage')) {
storageConfiguration =
{
...Configuration.objectHasOwnProperty(Configuration.getConfig().performanceStorage, 'enabled') && { enabled: Configuration.getConfig().performanceStorage.enabled },
...Configuration.objectHasOwnProperty(Configuration.getConfig().performanceStorage, 'type') && { type: Configuration.getConfig().performanceStorage.type },
- ...Configuration.objectHasOwnProperty(Configuration.getConfig().performanceStorage, 'URI')
- ? { URI: Configuration.getConfig().performanceStorage.URI }
- : { URI: this.getDefaultPerformanceStorageURI(Configuration.getConfig()?.performanceStorage?.type ?? StorageType.JSON_FILE) }
+ ...Configuration.objectHasOwnProperty(Configuration.getConfig().performanceStorage, 'uri')
+ ? { uri: Configuration.getConfig().performanceStorage.uri }
+ : { uri: this.getDefaultPerformanceStorageUri(Configuration.getConfig()?.performanceStorage?.type ?? StorageType.JSON_FILE) }
};
}
return storageConfiguration;
};
}
return storageConfiguration;
- static getStationTemplateURLs(): StationTemplateURL[] {
- Configuration.getConfig().stationTemplateURLs.forEach((stationURL: StationTemplateURL) => {
- if (!Configuration.isUndefined(stationURL['numberOfStation'])) {
- console.error(chalk`{green ${Configuration.logPrefix()}} {red Deprecated configuration key 'numberOfStation' usage for template file '${stationURL.file}' in 'stationTemplateURLs'. Use 'numberOfStations' instead}`);
+ static getStationTemplateUrls(): StationTemplateUrl[] {
+ Configuration.warnDeprecatedConfigurationKey('stationTemplateURLs', null, 'Use \'stationTemplateUrls\' instead');
+ !Configuration.isUndefined(Configuration.getConfig()['stationTemplateURLs']) && (Configuration.getConfig().stationTemplateUrls = Configuration.getConfig()['stationTemplateURLs'] as StationTemplateUrl[]);
+ Configuration.getConfig().stationTemplateUrls.forEach((stationUrl: StationTemplateUrl) => {
+ if (!Configuration.isUndefined(stationUrl['numberOfStation'])) {
+ console.error(chalk`{green ${Configuration.logPrefix()}} {red Deprecated configuration key 'numberOfStation' usage for template file '${stationUrl.file}' in 'stationTemplateUrls'. Use 'numberOfStations' instead}`);
- return Configuration.getConfig().stationTemplateURLs;
+ return Configuration.getConfig().stationTemplateUrls;
}
static getWorkerProcess(): WorkerProcessType {
}
static getWorkerProcess(): WorkerProcessType {
return Configuration.objectHasOwnProperty(Configuration.getConfig(), 'logErrorFile') ? Configuration.getConfig().logErrorFile : 'error.log';
}
return Configuration.objectHasOwnProperty(Configuration.getConfig(), 'logErrorFile') ? Configuration.getConfig().logErrorFile : 'error.log';
}
- static getSupervisionURLs(): string[] {
+ static getSupervisionUrls(): string[] {
+ Configuration.warnDeprecatedConfigurationKey('supervisionURLs', null, 'Use \'supervisionUrls\' instead');
+ !Configuration.isUndefined(Configuration.getConfig()['supervisionURLs']) && (Configuration.getConfig().supervisionUrls = Configuration.getConfig()['supervisionURLs'] as string[]);
- return Configuration.getConfig().supervisionURLs;
+ return Configuration.getConfig().supervisionUrls;
}
static getDistributeStationsToTenantsEqually(): boolean {
}
static getDistributeStationsToTenantsEqually(): boolean {
- private static getDefaultPerformanceStorageURI(storageType: StorageType) {
+ private static getDefaultPerformanceStorageUri(storageType: StorageType) {
const SQLiteFileName = `${Constants.DEFAULT_PERFORMANCE_RECORDS_DB_NAME}.db`;
switch (storageType) {
case StorageType.JSON_FILE:
const SQLiteFileName = `${Constants.DEFAULT_PERFORMANCE_RECORDS_DB_NAME}.db`;
switch (storageType) {
case StorageType.JSON_FILE: