node-red-contrib-web-worldmap 5.6.2 → 5.7.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/CHANGELOG.md +1 -0
- package/README.md +5 -0
- package/node_modules/@turf/bezier-spline/package.json +4 -5
- package/node_modules/@turf/helpers/package.json +2 -3
- package/node_modules/@turf/invariant/package.json +3 -4
- package/node_modules/body-parser/HISTORY.md +6 -0
- package/node_modules/body-parser/lib/types/json.js +1 -5
- package/node_modules/body-parser/lib/types/urlencoded.js +5 -6
- package/node_modules/body-parser/node_modules/qs/.editorconfig +46 -0
- package/node_modules/body-parser/node_modules/qs/.github/FUNDING.yml +12 -0
- package/node_modules/body-parser/node_modules/qs/.github/SECURITY.md +11 -0
- package/node_modules/body-parser/node_modules/qs/.github/THREAT_MODEL.md +78 -0
- package/node_modules/body-parser/node_modules/qs/.nycrc +13 -0
- package/node_modules/body-parser/node_modules/qs/CHANGELOG.md +822 -0
- package/node_modules/body-parser/node_modules/qs/LICENSE.md +29 -0
- package/node_modules/body-parser/node_modules/qs/README.md +758 -0
- package/node_modules/body-parser/node_modules/qs/dist/qs.js +141 -0
- package/node_modules/body-parser/node_modules/qs/eslint.config.mjs +57 -0
- package/node_modules/body-parser/node_modules/qs/lib/formats.js +23 -0
- package/node_modules/body-parser/node_modules/qs/lib/index.js +11 -0
- package/node_modules/body-parser/node_modules/qs/lib/parse.js +403 -0
- package/node_modules/body-parser/node_modules/qs/lib/stringify.js +363 -0
- package/node_modules/body-parser/node_modules/qs/lib/utils.js +342 -0
- package/node_modules/body-parser/node_modules/qs/package.json +94 -0
- package/node_modules/body-parser/node_modules/qs/test/empty-keys-cases.js +267 -0
- package/node_modules/body-parser/node_modules/qs/test/parse.js +1703 -0
- package/node_modules/body-parser/node_modules/qs/test/stringify.js +1448 -0
- package/node_modules/body-parser/node_modules/qs/test/utils.js +432 -0
- package/node_modules/body-parser/package.json +2 -2
- package/node_modules/hasown/CHANGELOG.md +11 -0
- package/node_modules/hasown/eslint.config.mjs +6 -0
- package/node_modules/hasown/index.d.ts +1 -0
- package/node_modules/hasown/package.json +14 -14
- package/node_modules/side-channel-list/CHANGELOG.md +25 -4
- package/node_modules/side-channel-list/index.js +1 -3
- package/node_modules/side-channel-list/package.json +8 -8
- package/node_modules/side-channel-list/test/index.js +50 -0
- package/package.json +3 -3
- package/worldmap/css/worldmap.css +4 -0
- package/worldmap/index.html +2 -5
- package/worldmap/worldmap.js +323 -56
- package/worldmap.js +9 -7
- package/node_modules/hasown/.eslintrc +0 -5
- package/worldmap/leaflet/Leaflet.Dialog.css +0 -106
- package/worldmap/leaflet/Leaflet.Dialog.js +0 -372
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
### Change Log for Node-RED Worldmap
|
|
2
2
|
|
|
3
|
+
- v5.7.0 - Add events for openPopup and closePopup actions, small popup fixups. Add showdialog command.
|
|
3
4
|
- v5.6.1 - Also call autoswitch on initial connect to ensure map in view.
|
|
4
5
|
- v5.6.0 - Autoswitch pmtiles basemaps based on zoom and/or coverage.
|
|
5
6
|
- v5.5.8 - Bump qs dep for CVE
|
package/README.md
CHANGED
|
@@ -10,6 +10,7 @@ A <a href="https://nodered.org" target="mapinfo">Node-RED</a> node to provide a
|
|
|
10
10
|
|
|
11
11
|
### Updates
|
|
12
12
|
|
|
13
|
+
- v5.7.0 - Add events for openPopup and closePopup, small popup fixups. Add showdialog command.
|
|
13
14
|
- v5.6.1 - Also call autoswitch on initial connect to ensure map in view.
|
|
14
15
|
- v5.6.0 - Autoswitch pmtiles basemaps based on zoom and/or coverage.
|
|
15
16
|
- v5.5.8 - Bump qs dep for CVE
|
|
@@ -404,6 +405,7 @@ Optional properties for **msg.payload.command** include
|
|
|
404
405
|
- **showmenu** - Show or hide the display of the hamberger menu control in the top right . Values can be "show" or "hide". - `{"command":{"showmenu": "hide"}}`
|
|
405
406
|
- **showlayers** - Show or hide the display of selectable layers. Does not control the display of an individual layer, rather a users ability to interact with them. Values can be "show" or "hide". - `{"command":{"showlayers": "hide"}}`
|
|
406
407
|
- **sidcEdgeIcon** - Show or hide small sidc icons around edge of map for things just outside of view. Values can be true or false (default is true). - `{"command":{"sidcEdgeIcon": false}}`
|
|
408
|
+
- **showdialog** - Show a dialog style overlay of html to provide information to the user. Send an empty string to close automatically. - `{"command":{"showdialog": "<h1>Title</h1>Hello World"}}`
|
|
407
409
|
|
|
408
410
|
#### To switch layer, move map and zoom
|
|
409
411
|
|
|
@@ -677,6 +679,9 @@ The **worldmap in** node can be used to receive various events from the map. Exa
|
|
|
677
679
|
|
|
678
680
|
{ "action": "file", "name": "myfilename", "type":"image/jpeg", "lat":51, "lon":-1, "content":"....."} // when a file is dropped on the map - see below.
|
|
679
681
|
|
|
682
|
+
{ "action": "openPopup", "name":"Poptest", "lat":47.59, "lon":18.41, "popped":true } // when a popup is opened
|
|
683
|
+
{ "action":"closePopup", "name":"Poptest", "lat":47.59, "lon":18.41, "popped":false } // when a popup is closed
|
|
684
|
+
|
|
680
685
|
{ "action": "button", "name": "My Fancy Button" } // when a user defined button is clicked
|
|
681
686
|
|
|
682
687
|
{ "action": "feedback", "name": "some name", "value": "some value", "lat":51, "lon":0, "layer":"unknown" } // when a user calls the feedback function - see below
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@turf/bezier-spline",
|
|
3
|
-
"version": "7.3.
|
|
3
|
+
"version": "7.3.5",
|
|
4
4
|
"description": "Smooths a line into a curve using Bézier splines, great for visualizing routes.",
|
|
5
5
|
"author": "Turf Authors",
|
|
6
6
|
"license": "MIT",
|
|
@@ -47,7 +47,6 @@
|
|
|
47
47
|
"scripts": {
|
|
48
48
|
"bench": "tsx bench.ts",
|
|
49
49
|
"build": "tsup --config ../../tsup.config.ts",
|
|
50
|
-
"docs": "tsx ../../scripts/generate-readmes.ts",
|
|
51
50
|
"test": "pnpm run /test:.*/",
|
|
52
51
|
"test:tape": "tsx test.ts"
|
|
53
52
|
},
|
|
@@ -63,10 +62,10 @@
|
|
|
63
62
|
"write-json-file": "^6.0.0"
|
|
64
63
|
},
|
|
65
64
|
"dependencies": {
|
|
66
|
-
"@turf/helpers": "7.3.
|
|
67
|
-
"@turf/invariant": "7.3.
|
|
65
|
+
"@turf/helpers": "7.3.5",
|
|
66
|
+
"@turf/invariant": "7.3.5",
|
|
68
67
|
"@types/geojson": "^7946.0.10",
|
|
69
68
|
"tslib": "^2.8.1"
|
|
70
69
|
},
|
|
71
|
-
"gitHead": "
|
|
70
|
+
"gitHead": "a33ca387405df72847af00cdf689d3209301a2c1"
|
|
72
71
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@turf/helpers",
|
|
3
|
-
"version": "7.3.
|
|
3
|
+
"version": "7.3.5",
|
|
4
4
|
"description": "Provides helper functions to create GeoJSON features, like points, lines, or areas on a map.",
|
|
5
5
|
"author": "Turf Authors",
|
|
6
6
|
"contributors": [
|
|
@@ -52,7 +52,6 @@
|
|
|
52
52
|
"scripts": {
|
|
53
53
|
"bench": "tsx bench.ts",
|
|
54
54
|
"build": "tsup --config ../../tsup.config.ts",
|
|
55
|
-
"docs": "tsx ../../scripts/generate-readmes.ts",
|
|
56
55
|
"test": "pnpm run /test:.*/",
|
|
57
56
|
"test:tape": "tsx test.ts",
|
|
58
57
|
"test:types": "tsc --esModuleInterop --module node16 --moduleResolution node16 --noEmit --strict types.ts"
|
|
@@ -70,5 +69,5 @@
|
|
|
70
69
|
"@types/geojson": "^7946.0.10",
|
|
71
70
|
"tslib": "^2.8.1"
|
|
72
71
|
},
|
|
73
|
-
"gitHead": "
|
|
72
|
+
"gitHead": "a33ca387405df72847af00cdf689d3209301a2c1"
|
|
74
73
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@turf/invariant",
|
|
3
|
-
"version": "7.3.
|
|
3
|
+
"version": "7.3.5",
|
|
4
4
|
"description": "Lightweight utility for input validation and data extraction in Turf.js. Ensures GeoJSON inputs are in the correct format and extracts specific components like coordinates or geometries.",
|
|
5
5
|
"author": "Turf Authors",
|
|
6
6
|
"contributors": [
|
|
@@ -49,7 +49,6 @@
|
|
|
49
49
|
"scripts": {
|
|
50
50
|
"bench": "tsx bench.ts",
|
|
51
51
|
"build": "tsup --config ../../tsup.config.ts",
|
|
52
|
-
"docs": "tsx ../../scripts/generate-readmes.ts",
|
|
53
52
|
"test": "pnpm run /test:.*/",
|
|
54
53
|
"test:tape": "tsx test.ts",
|
|
55
54
|
"test:types": "tsc --esModuleInterop --module node16 --moduleResolution node16 --noEmit --strict types.ts"
|
|
@@ -64,9 +63,9 @@
|
|
|
64
63
|
"typescript": "^5.8.3"
|
|
65
64
|
},
|
|
66
65
|
"dependencies": {
|
|
67
|
-
"@turf/helpers": "7.3.
|
|
66
|
+
"@turf/helpers": "7.3.5",
|
|
68
67
|
"@types/geojson": "^7946.0.10",
|
|
69
68
|
"tslib": "^2.8.1"
|
|
70
69
|
},
|
|
71
|
-
"gitHead": "
|
|
70
|
+
"gitHead": "a33ca387405df72847af00cdf689d3209301a2c1"
|
|
72
71
|
}
|
|
@@ -158,11 +158,7 @@ function createStrictSyntaxError (str, char) {
|
|
|
158
158
|
var partial = ''
|
|
159
159
|
|
|
160
160
|
if (index !== -1) {
|
|
161
|
-
partial = str.substring(0, index) + JSON_SYNTAX_CHAR
|
|
162
|
-
|
|
163
|
-
for (var i = index + 1; i < str.length; i++) {
|
|
164
|
-
partial += JSON_SYNTAX_CHAR
|
|
165
|
-
}
|
|
161
|
+
partial = str.substring(0, index) + new Array(str.length - index + 1).join(JSON_SYNTAX_CHAR)
|
|
166
162
|
}
|
|
167
163
|
|
|
168
164
|
try {
|
|
@@ -206,16 +206,15 @@ function getCharset (req) {
|
|
|
206
206
|
|
|
207
207
|
function parameterCount (body, limit) {
|
|
208
208
|
var count = 0
|
|
209
|
-
var index =
|
|
209
|
+
var index = -1
|
|
210
210
|
|
|
211
|
-
|
|
211
|
+
do {
|
|
212
212
|
count++
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
if (count === limit) {
|
|
213
|
+
if (count > limit) {
|
|
216
214
|
return undefined
|
|
217
215
|
}
|
|
218
|
-
|
|
216
|
+
index = body.indexOf('&', index + 1)
|
|
217
|
+
} while (index !== -1)
|
|
219
218
|
|
|
220
219
|
return count
|
|
221
220
|
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
root = true
|
|
2
|
+
|
|
3
|
+
[*]
|
|
4
|
+
indent_style = space
|
|
5
|
+
indent_size = 4
|
|
6
|
+
end_of_line = lf
|
|
7
|
+
charset = utf-8
|
|
8
|
+
trim_trailing_whitespace = true
|
|
9
|
+
insert_final_newline = true
|
|
10
|
+
max_line_length = 180
|
|
11
|
+
quote_type = single
|
|
12
|
+
|
|
13
|
+
[test/*]
|
|
14
|
+
max_line_length = off
|
|
15
|
+
|
|
16
|
+
[LICENSE.md]
|
|
17
|
+
indent_size = off
|
|
18
|
+
|
|
19
|
+
[*.md]
|
|
20
|
+
max_line_length = off
|
|
21
|
+
|
|
22
|
+
[*.json]
|
|
23
|
+
max_line_length = off
|
|
24
|
+
|
|
25
|
+
[Makefile]
|
|
26
|
+
max_line_length = off
|
|
27
|
+
|
|
28
|
+
[CHANGELOG.md]
|
|
29
|
+
indent_style = space
|
|
30
|
+
indent_size = 2
|
|
31
|
+
|
|
32
|
+
[LICENSE]
|
|
33
|
+
indent_size = 2
|
|
34
|
+
max_line_length = off
|
|
35
|
+
|
|
36
|
+
[coverage/**/*]
|
|
37
|
+
indent_size = off
|
|
38
|
+
indent_style = off
|
|
39
|
+
indent = off
|
|
40
|
+
max_line_length = off
|
|
41
|
+
|
|
42
|
+
[.nycrc]
|
|
43
|
+
indent_style = tab
|
|
44
|
+
|
|
45
|
+
[tea.yaml]
|
|
46
|
+
indent_size = 2
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# These are supported funding model platforms
|
|
2
|
+
|
|
3
|
+
github: [ljharb]
|
|
4
|
+
patreon: # Replace with a single Patreon username
|
|
5
|
+
open_collective: # Replace with a single Open Collective username
|
|
6
|
+
ko_fi: # Replace with a single Ko-fi username
|
|
7
|
+
tidelift: npm/qs
|
|
8
|
+
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
|
9
|
+
liberapay: # Replace with a single Liberapay username
|
|
10
|
+
issuehunt: # Replace with a single IssueHunt username
|
|
11
|
+
otechie: # Replace with a single Otechie username
|
|
12
|
+
custom: # Replace with a single custom sponsorship URL
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Security
|
|
2
|
+
|
|
3
|
+
Please file a private vulnerability report via GitHub, email [@ljharb](https://github.com/ljharb), or see https://tidelift.com/security if you have a potential security vulnerability to report.
|
|
4
|
+
|
|
5
|
+
## Incident Response Plan
|
|
6
|
+
|
|
7
|
+
Please see our [Incident Response Plan](https://github.com/ljharb/.github/blob/main/INCIDENT_RESPONSE_PLAN.md).
|
|
8
|
+
|
|
9
|
+
## Threat Model
|
|
10
|
+
|
|
11
|
+
Please see [THREAT_MODEL.md](./THREAT_MODEL.md).
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
## Threat Model for qs (querystring parsing library)
|
|
2
|
+
|
|
3
|
+
### 1. Library Overview
|
|
4
|
+
|
|
5
|
+
- **Library Name:** qs
|
|
6
|
+
- **Brief Description:** A JavaScript library for parsing and stringifying URL query strings, supporting nested objects and arrays. It is widely used in Node.js and web applications for processing query parameters[2][6][8].
|
|
7
|
+
- **Key Public APIs/Functions:** `qs.parse()`, `qs.stringify()`
|
|
8
|
+
|
|
9
|
+
### 2. Define Scope
|
|
10
|
+
|
|
11
|
+
This threat model focuses on the core parsing and stringifying functionality, specifically the handling of nested objects and arrays, option validation, and cycle management in stringification.
|
|
12
|
+
|
|
13
|
+
### 3. Conceptual System Diagram
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
Caller Application → qs.parse(input, options) → Parsing Engine → Output Object
|
|
17
|
+
│
|
|
18
|
+
└→ Options Handling
|
|
19
|
+
|
|
20
|
+
Caller Application → qs.stringify(obj, options) → Stringifying Engine → Output String
|
|
21
|
+
│
|
|
22
|
+
└→ Options Handling
|
|
23
|
+
└→ Cycle Tracking
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
**Trust Boundaries:**
|
|
27
|
+
- **Input string (parse):** May come from untrusted sources (e.g., user input, network requests)
|
|
28
|
+
- **Input object (stringify):** May contain cycles, which can lead to infinite loops during stringification
|
|
29
|
+
- **Options:** Provided by the caller
|
|
30
|
+
- **Cycle Tracking:** Used only during stringification to detect and handle circular references
|
|
31
|
+
|
|
32
|
+
### 4. Identify Assets
|
|
33
|
+
|
|
34
|
+
- **Integrity of parsed output:** Prevent malicious manipulation of the output object structure, especially ensuring builtins/globals are not modified as a result of parse[3][4][8].
|
|
35
|
+
- **Confidentiality of processed data:** Avoid leaking sensitive information through errors or output.
|
|
36
|
+
- **Availability/performance for host application:** Prevent crashes or resource exhaustion in the consuming application.
|
|
37
|
+
- **Security of host application:** Prevent the library from being a vector for attacks (e.g., prototype pollution, DoS).
|
|
38
|
+
- **Reputation of library:** Maintain trust by avoiding supply chain attacks and vulnerabilities[1].
|
|
39
|
+
|
|
40
|
+
### 5. Identify Threats
|
|
41
|
+
|
|
42
|
+
| Component / API / Interaction | S | T | R | I | D | E |
|
|
43
|
+
|---------------------------------------|----|----|----|----|----|----|
|
|
44
|
+
| Public API Call (`parse`) | – | ✓ | – | ✓ | ✓ | ✓ |
|
|
45
|
+
| Public API Call (`stringify`) | – | ✓ | – | ✓ | ✓ | – |
|
|
46
|
+
| Options Handling | ✓ | ✓ | – | ✓ | – | ✓ |
|
|
47
|
+
| Dependency Interaction | – | – | – | – | ✓ | – |
|
|
48
|
+
|
|
49
|
+
**Key Threats:**
|
|
50
|
+
- **Tampering:** Malicious input can, if not prevented, alter parsed output (e.g., prototype pollution via `__proto__`, modification of builtins/globals)[3][4][8].
|
|
51
|
+
- **Information Disclosure:** Error messages may expose internal details or sensitive data.
|
|
52
|
+
- **Denial of Service:** Large or malformed input can exhaust memory or CPU.
|
|
53
|
+
- **Elevation of Privilege:** Prototype pollution can lead to unintended privilege escalation in the host application[3][4][8].
|
|
54
|
+
|
|
55
|
+
### 6. Mitigation/Countermeasures
|
|
56
|
+
|
|
57
|
+
| Threat Identified | Proposed Mitigation |
|
|
58
|
+
|---------------------------------------------------|---------------------|
|
|
59
|
+
| Tampering (malicious input, prototype pollution) | Strict input validation; keep `allowPrototypes: false` by default; use `plainObjects` for output; ensure builtins/globals are never modified by parse[4][8]. |
|
|
60
|
+
| Information Disclosure (error messages) | Generic error messages without stack traces or internal paths. |
|
|
61
|
+
| Denial of Service (memory/CPU exhaustion) | Enforce `arrayLimit` and `parameterLimit` with safe defaults; enable `throwOnLimitExceeded`; limit nesting depth[7]. |
|
|
62
|
+
| Elevation of Privilege (prototype pollution) | Keep `allowPrototypes: false`; validate options against allowlist; use `plainObjects` to avoid prototype pollution[4][8]. |
|
|
63
|
+
|
|
64
|
+
### 7. Risk Ranking
|
|
65
|
+
|
|
66
|
+
- **High:** Denial of Service via array parsing or malformed input (historical vulnerability)
|
|
67
|
+
- **Medium:** Prototype pollution via options or input (if `allowPrototypes` enabled)
|
|
68
|
+
- **Low:** Information disclosure in errors
|
|
69
|
+
|
|
70
|
+
### 8. Next Steps & Review
|
|
71
|
+
|
|
72
|
+
1. **Audit option validation logic.**
|
|
73
|
+
2. **Add depth limiting to nested parsing and stringification.**
|
|
74
|
+
3. **Implement fuzz testing for parser and stringifier edge cases.**
|
|
75
|
+
4. **Regularly review dependencies for vulnerabilities.**
|
|
76
|
+
5. **Keep documentation and threat model up to date.**
|
|
77
|
+
6. **Ensure builtins/globals are never modified as a result of parse.**
|
|
78
|
+
7. **Support round-trip consistency between parse and stringify as a non-security goal, with the right options[5][9].**
|