From 6dd2ec75f021d840ea227e6ca8b9105c12cdf8fc Mon Sep 17 00:00:00 2001 From: Skylar Sadlier Date: Wed, 9 Feb 2022 12:13:27 -0700 Subject: [PATCH] - Move client storage to the Node-RED user directory. - Remove mention of Device ID being required for encryption (since it can now auto generate if not provided this could make people think they have to set it when that isn't the case) - matrix-js-sdk updated from ^v15.3.0 to ^v15.5.0 - got updated from ^11.8.2 to ^12.0.1 (this also required us to change how we import this library in code) - Node-RED version requirement added for >=v1.3.0 - NodeJS version requirement added for >=v14.0.0 - removed `process` dependency - send-image node fixed so error doesn't get thrown (`matrix-js-sdk` updated causing some errors) - updated send-image node docs to explain that msg.contentType is necessary for some clients to render the image (otherwise it could display as a blank message in the room). - If a matrix server configuration node was missing it's User ID it would throw a TypeError instead of telling the user the actual issue. - Updated user list example: it now paginates all users on the server (if you had a lot of users the message would fail to send because it was too large) - Added example for creating a room and inviting a user - Added example for joining a mentioned room - Added example for listing out a user's or server's rooms - Added example for getting session data from a user via whois info - Added example for getting a room's user list - Added example for downloading & storing received files/images - Added example for kicking/banning user from a room. - Added example for deactivating a user - Removed message in the room-users config stating it only works if you are an admin - Receive node now outputs `msg.filename` for files and images --- examples/README.md | 119 +++- examples/deactivate-user.json | 0 examples/deactivate-user.png | Bin 0 -> 24880 bytes examples/respond-joinroom.json | 90 +++ examples/respond-joinroom.png | Bin 0 -> 17032 bytes examples/respond-newroom-invite.json | 157 +++++ examples/respond-newroom-invite.png | Bin 0 -> 28351 bytes examples/respond-room-users.json | 134 ++++ examples/respond-room-users.png | Bin 0 -> 26099 bytes examples/respond-rooms.json | 151 ++++ examples/respond-rooms.png | Bin 0 -> 27786 bytes examples/respond-users-list.json | 318 +++++++-- examples/respond-users-list.png | Bin 17719 -> 44955 bytes examples/respond-whois.json | 153 ++++ examples/respond-whois.png | Bin 0 -> 22752 bytes examples/room-kick-ban.json | 211 ++++++ examples/room-kick-ban.png | Bin 0 -> 36690 bytes examples/store-received-files.json | 166 +++++ examples/store-received-files.png | Bin 0 -> 24788 bytes package-lock.json | 997 ++++++++++++++++----------- package.json | 13 +- src/matrix-crypt-file.js | 3 +- src/matrix-receive.html | 10 + src/matrix-receive.js | 3 +- src/matrix-room-users.html | 3 - src/matrix-send-image.html | 2 +- src/matrix-send-image.js | 14 +- src/matrix-server-config.html | 2 +- src/matrix-server-config.js | 37 +- src/matrix-synapse-register.js | 6 +- 30 files changed, 2089 insertions(+), 500 deletions(-) create mode 100644 examples/deactivate-user.json create mode 100644 examples/deactivate-user.png create mode 100644 examples/respond-joinroom.json create mode 100644 examples/respond-joinroom.png create mode 100644 examples/respond-newroom-invite.json create mode 100644 examples/respond-newroom-invite.png create mode 100644 examples/respond-room-users.json create mode 100644 examples/respond-room-users.png create mode 100644 examples/respond-rooms.json create mode 100644 examples/respond-rooms.png create mode 100644 examples/respond-whois.json create mode 100644 examples/respond-whois.png create mode 100644 examples/room-kick-ban.json create mode 100644 examples/room-kick-ban.png create mode 100644 examples/store-received-files.json create mode 100644 examples/store-received-files.png diff --git a/examples/README.md b/examples/README.md index 3ba6d01..8739d65 100644 --- a/examples/README.md +++ b/examples/README.md @@ -16,6 +16,14 @@ Build something cool with these nodes? Feel free to submit a pull request to sha - [Respond to "file" with an uploaded file](#respond-to-file-with-an-uploaded-file) - [Respond to "react" with a reaction](#respond-to-react-with-a-reaction) - [Respond to "users" with full list of server users](#respond-to-users-with-full-list-of-server-users) +- [Respond to "newroom" by creating new room and inviting user](#respond-to-newroom-by-creating-new-room-and-inviting-user) +- [Respond to "joinroom " by joining mentioned room](#respond-to-joinroom-room_id_or_alias-by-joining-mentioned-room) +- [Respond to "rooms " with user's rooms (list server's rooms if is left blank)](#respond-to-rooms-user_id-with-users-rooms-list-servers-rooms-if-user_id-is-left-blank) +- [Respond to "whois " with information about the user's session](#respond-to-whois-user_id-with-information-about-the-users-session) +- [Respond to "room_users" with current room's users](#respond-to-room_users-with-current-rooms-users) +- [Download & store all received files/images](#download--store-all-received-filesimages) +- [Kick/Ban user from room](#kickban-user-from-room) +- [Deactivate user](#deactivate-user) ### Create user with Shared Secret Registration @@ -28,7 +36,7 @@ Edit the object on the inject node to the user/pass combo you want to create and **Note:** This only works on Synapse servers. -![img.png](shared-secret-registration.png) +![shared-secret-registration.png](shared-secret-registration.png) ### Create/Edit Synapse User @@ -37,7 +45,7 @@ Edit the object on the inject node to the user/pass combo you want to create and Allows an administrator to create or modify a user account with a specified `msg.userId`. -![img.png](add-user-with-admin-user.png) +![add-user-with-admin-user.png](add-user-with-admin-user.png) ### Use function node to run any command @@ -50,7 +58,7 @@ If we do not have a node for something you want to do (such as redacting events/ To view what sort of functions you have access to check out the `client.ts` file from `matrix-js-sdk` [here](https://github.com/matrix-org/matrix-js-sdk/blob/master/src/client.ts). -![img.png](custom-redact-function-node.png) +![custom-redact-function-node.png](custom-redact-function-node.png) ### Respond to "ping" with "pong" @@ -58,7 +66,7 @@ To view what sort of functions you have access to check out the `client.ts` file Use this flow to respond to anyone that says "ping" with "pong" into the same room. -![img.png](respond-ping-pong.png) +![respond-ping-pong.png](respond-ping-pong.png) @@ -68,7 +76,7 @@ Use this flow to respond to anyone that says "ping" with "pong" into the same ro Use this flow to respond to anyone that says "html" with an example HTML message. This shows how easy it is to send HTML. -![img.png](respond-to-html-with-html.png) +![respond-to-html-with-html.png](respond-to-html-with-html.png) @@ -78,7 +86,7 @@ Use this flow to respond to anyone that says "html" with an example HTML message You will need an image on the machine running Node-RED. In this case example.png exists inside the Node-RED directory. -![img_1.png](respond-image-with-image.png) +![respond-image-with-image.png](respond-image-with-image.png) @@ -88,7 +96,7 @@ You will need an image on the machine running Node-RED. In this case example.png You will need a file on the machine running Node-RED. In this case sample.pdf exists inside the Node-RED directory. -![img.png](respond-file-with-file.png) +![respond-file-with-file.png](respond-file-with-file.png) @@ -98,7 +106,7 @@ You will need a file on the machine running Node-RED. In this case sample.pdf ex Give a 👍 reaction when someone says "react" -![img.png](respond-react-with-reaction.png) +![respond-react-with-reaction.png](respond-react-with-reaction.png) @@ -106,8 +114,99 @@ Give a 👍 reaction when someone says "react" [View JSON](respond-users-list.json) -When someone sends the text "users" they get a HTML message back containing all the current users on the server. +When someone sends the text "users" they get a HTML message back containing all the current users on the server. If your server has a lot of users this paginates and sends a message with 25 users per message. This requires admin privileges. -![img.png](respond-users-list.png) \ No newline at end of file +![respond-users-list.png](respond-users-list.png) + + +### Respond to "newroom" by creating new room and inviting user + +[View JSON](respond-users-list.json) + +When someone sends "newroom" a new room will be created and the user that said the message will be invited. The client will also send a welcome message into the new room. + +![respond-newroom-invite.png](respond-newroom-invite.png) + + +### Respond to "joinroom " by joining mentioned room + +[View JSON](respond-joinroom.json) + +When someone sends "newroom" a new room will be created and the user that said the message will be invited. The client will also send a welcome message into the new room. + +![respond-joinroom.png](respond-joinroom.png) + +### Respond to "rooms " with user's rooms (list server's rooms if is left blank) + +[View JSON](respond-rooms.json) + +Responds to "rooms " with that user's rooms. If the message is just "rooms" it responds with a list of all rooms the server is participating in. + +Note: If there are a lot of rooms this may fail to send the message as it is too large. This also only works for user's that are on the current server. + +This requires admin privileges. + +![respond-rooms.png](respond-rooms.png) + + +### Respond to "whois " with information about the user's session + +[View JSON](respond-whois.json) + +This lists out the user's session info. Each session contains the IP address, when it was last seen, and the user agent. Useful to find out more about a specific user on your server. + +Note: If there are a lot of sessions this may fail to send the message as it is too large. This also only works for user's that are on the current server. + +This requires admin privileges. + +![respond-whois.png](respond-whois.png) + + +### Respond to "room_users" with current room's users + +[View JSON](respond-room-users.json) + +List out the users participating in a room. + +Note: If there are a lot of users in the room this will fail to send due to a large message error. + +![respond-room-users.png](respond-room-users.png) + + +### Download & store all received files/images + +[View JSON](store-received-files.json) + +Download received files/images. If the file is encrypted it will decrypt it for you. The decrypt node downloads the file for you otherwise you need to use a HTTP Request node to download the file. + +Note: You may need to edit the storage directory for this to work. Default action is to create a `downloads` folder in the Node-RED directory and places files in that but there is a good chance your Node-RED instance doesn't have access to write to this directory. + +![store-received-files.png](store-received-files.png) + + +### Kick/Ban user from room + +[View JSON](room-kick-ban.json) + +If you say "kick @test:example.com" the bot will kick @test:example.com from the current room. + +If you say "ban @test:example.com" the bot will ban @test:example.com from the current room. + +Note: This requires the bot to have permissions to kick/ban in the current room. + +![room-kick-ban.png](room-kick-ban.png) + + +### Deactivate user + +[View JSON](deactivate-user.json) + +If you say "deactivate_user @test:example.com" the bot will deactivate the @test:example.com account on the server. + +Note: This requires the bot to be a server admin. + +WARNING: Accounts that are deleted cannot be restored. If you want to temp-disable edit the user instead. + +![room-kick-ban.png](deactivate-user.png) \ No newline at end of file diff --git a/examples/deactivate-user.json b/examples/deactivate-user.json new file mode 100644 index 0000000..e69de29 diff --git a/examples/deactivate-user.png b/examples/deactivate-user.png new file mode 100644 index 0000000000000000000000000000000000000000..12944ff8e30ff5f68de21b3816da202fba8aafbf GIT binary patch literal 24880 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%0DVEE#+OKE2G6d#2fqaw7q}| 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\" by joining the mentioned room", + "info": "", + "x": 440, + "y": 1980, + "wires": [] + }, + { + "id": "2a44927d9317a4b4", + "type": "function", + "z": "f025a8b9fbd1b054", + "name": "msg.payload == \"joinroom\"", + "func": "if(!msg.payload.startsWith(\"joinroom\")) {\n return null;\n}\n\nlet split = msg.payload.split(\" \");\nif(split.length < 2) {\n return; // no room provided\n}\n\nmsg.topic = split[1];\nreturn msg;", + "outputs": 1, + "noerr": 0, + "initialize": "", + "finalize": "", + "libs": [], + "x": 640, + "y": 2020, + "wires": [ + [ + "a34d05c3b6f6bd27" + ] + ] + }, + { + "id": "a34d05c3b6f6bd27", + "type": "matrix-join-room", + "z": "f025a8b9fbd1b054", + "name": "", + "server": null, + "x": 850, + "y": 2020, + "wires": [ + [], + [] + ] + } +] \ No newline at end of file diff --git a/examples/respond-joinroom.png b/examples/respond-joinroom.png new file mode 100644 index 0000000000000000000000000000000000000000..05c72415693823c274485a170cea98f99062fab8 GIT binary patch literal 17032 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 J7BL9?{{S@9^Nj!i literal 0 HcmV?d00001 diff --git a/examples/respond-newroom-invite.json b/examples/respond-newroom-invite.json new file mode 100644 index 0000000..cf7b0aa --- /dev/null +++ b/examples/respond-newroom-invite.json @@ -0,0 +1,157 @@ +[ + { + "id": "ea0921f33b58e337", + "type": "switch", + "z": "f025a8b9fbd1b054", + "name": "msg.payload is \"newroom\"", + "property": "payload", + "propertyType": "msg", + "rules": [ + { + "t": "eq", + "v": "newroom", + "vt": "str" + } + ], + "checkall": "true", + "repair": false, + "outputs": 1, + "x": 640, + "y": 1820, + "wires": [ + [ + "d7ce5027bc1e2eee" + ] + ] + }, + { + "id": "9f9a24376b94c977", + "type": "switch", + "z": "f025a8b9fbd1b054", + "name": "is from me", + "property": "userId", + "propertyType": "msg", + "rules": [ + { + "t": "eq", + "v": "@skylord123:skylar.tech", + "vt": "str" + } + ], + "checkall": "true", + "repair": false, + "outputs": 1, + "x": 430, + "y": 1820, + "wires": [ + [ + "ea0921f33b58e337" + ] + ] + }, + { + "id": "3bce23488138c013", + "type": "matrix-receive", + "z": "f025a8b9fbd1b054", + "name": "", + "server": null, + "roomId": "", + "acceptText": true, + "acceptEmotes": true, + "acceptStickers": true, + "acceptReactions": true, + "acceptFiles": true, + "acceptImages": true, + "x": 260, + "y": 1820, + "wires": [ + [ + "9f9a24376b94c977" + ] + ] + }, + { + "id": "d7ce5027bc1e2eee", + "type": "matrix-create-room", + "z": "f025a8b9fbd1b054", + "name": "", + "server": null, + "x": 250, + "y": 1880, + "wires": [ + [ + "735b9d9fd1401e96" + ], + [] + ] + }, + { + "id": "735b9d9fd1401e96", + "type": "matrix-invite-room", + "z": "f025a8b9fbd1b054", + "name": "", + "server": null, + "roomId": "", + "x": 410, + "y": 1880, + "wires": [ + [ + "089f2a7f0c079b6b" + ], + [] + ] + }, + { + "id": "222ee3c08028c1df", + "type": "matrix-send-message", + "z": "f025a8b9fbd1b054", + "name": "", + "server": null, + "roomId": "", + "messageType": "m.text", + "messageFormat": "", + "x": 760, + "y": 1880, + "wires": [ + [], + [] + ] + }, + { + "id": "089f2a7f0c079b6b", + "type": "change", + "z": "f025a8b9fbd1b054", + "name": "", + "rules": [ + { + "t": "set", + "p": "payload", + "pt": "msg", + "to": "Welcome to my new room!", + "tot": "str" + } + ], + "action": "", + "property": "", + "from": "", + "to": "", + "reg": false, + "x": 580, + "y": 1880, + "wires": [ + [ + "222ee3c08028c1df" + ] + ] + }, + { + "id": "48a1fd26227f277e", + "type": "comment", + "z": "f025a8b9fbd1b054", + "name": "Respond to \"newroom\" by creating new room and inviting person that said it then send welcome message", + "info": "", + "x": 520, + "y": 1780, + "wires": [] + } +] \ No newline at end of file diff --git a/examples/respond-newroom-invite.png b/examples/respond-newroom-invite.png new file mode 100644 index 0000000000000000000000000000000000000000..9c3477a461c06f4a3dd5a9e049fcc27725d030b9 GIT binary patch literal 28351 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 X%p^83l?O~rcSGfg=Hn_w%h3M;U+XH_ literal 0 HcmV?d00001 diff --git a/examples/respond-room-users.json b/examples/respond-room-users.json new file mode 100644 index 0000000..c76c12c --- /dev/null +++ b/examples/respond-room-users.json @@ -0,0 +1,134 @@ +[ + { + "id": "a7581a6224cbd24d", + "type": "matrix-room-users", + "z": "f025a8b9fbd1b054", + "name": "", + "server": null, + "roomId": "", + "x": 440, + "y": 2800, + "wires": [ + [ + "3e37b5fded58782d" + ], + [] + ] + }, + { + "id": "2764620d2d514996", + "type": "switch", + "z": "f025a8b9fbd1b054", + "name": "is from me", + "property": "userId", + "propertyType": "msg", + "rules": [ + { + "t": "eq", + "v": "@skylord123:skylar.tech", + "vt": "str" + } + ], + "checkall": "true", + "repair": false, + "outputs": 1, + "x": 610, + "y": 2740, + "wires": [ + [ + "f487951ea1b22a95" + ] + ] + }, + { + "id": "7ed8fc36ba75298a", + "type": "matrix-receive", + "z": "f025a8b9fbd1b054", + "name": "", + "server": null, + "roomId": "", + "acceptText": true, + "acceptEmotes": true, + "acceptStickers": true, + "acceptReactions": true, + "acceptFiles": true, + "acceptImages": true, + "x": 440, + "y": 2740, + "wires": [ + [ + "2764620d2d514996" + ] + ] + }, + { + "id": "f487951ea1b22a95", + "type": "switch", + "z": "f025a8b9fbd1b054", + "name": "msg.payload filter", + "property": "payload", + "propertyType": "msg", + "rules": [ + { + "t": "eq", + "v": "room_users", + "vt": "str" + } + ], + "checkall": "true", + "repair": false, + "outputs": 1, + "x": 790, + "y": 2740, + "wires": [ + [ + "a7581a6224cbd24d" + ] + ] + }, + { + "id": "3e37b5fded58782d", + "type": "function", + "z": "f025a8b9fbd1b054", + "name": "Room List (for user or all)", + "func": "let payload = null;\nif(!msg.payload || !msg.payload.joined) {\n payload = 'No users in room.';\n} else {\n payload = `Room ${msg.topic} users:`;\n payload += '
    ';\n for(let user_id in msg.payload.joined) {\n payload += `
  • ${msg.payload.joined[user_id].display_name} - ${user_id}
  • `;\n }\n payload += '
'\n}\n\nif(payload){\n msg.payload = payload;\n}\nreturn msg;", + "outputs": 1, + "noerr": 0, + "initialize": "", + "finalize": "", + "libs": [], + "x": 650, + "y": 2800, + "wires": [ + [ + "86a4895c4fe46657" + ] + ] + }, + { + "id": "86a4895c4fe46657", + "type": "matrix-send-message", + "z": "f025a8b9fbd1b054", + "name": "Send HTML Message", + "server": null, + "roomId": "", + "messageType": "m.text", + "messageFormat": "html", + "x": 880, + "y": 2800, + "wires": [ + [], + [] + ] + }, + { + "id": "cae1a37fe034b8f8", + "type": "comment", + "z": "f025a8b9fbd1b054", + "name": "Respond to \"room_users\" with that room's users", + "info": "", + "x": 600, + "y": 2700, + "wires": [] + } +] \ No newline at end of file diff --git a/examples/respond-room-users.png b/examples/respond-room-users.png new file mode 100644 index 0000000000000000000000000000000000000000..abb145faea0904ff41bf801e76bb52e6f3f4229f GIT binary patch literal 26099 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 Hx)bvs^)54S literal 0 HcmV?d00001 diff --git a/examples/respond-rooms.json b/examples/respond-rooms.json new file mode 100644 index 0000000..a9ef916 --- /dev/null +++ b/examples/respond-rooms.json @@ -0,0 +1,151 @@ +[ + { + "id": "2eb2dd1b5dbdd03b", + "type": "comment", + "z": "f025a8b9fbd1b054", + "name": "Response to \"rooms\" with all rooms", + "info": "", + "x": 580, + "y": 2500, + "wires": [] + }, + { + "id": "f3415a10f124d586", + "type": "function", + "z": "f025a8b9fbd1b054", + "name": "", + "func": "let matches = msg.payload.match(/^rooms ?(\\@.*)?/);\nmsg.userId = matches[1] ? matches[1] : null;\nreturn msg;", + "outputs": 1, + "noerr": 0, + "initialize": "", + "finalize": "", + "libs": [], + "x": 420, + "y": 2620, + "wires": [ + [ + "2cae98732747989d" + ] + ] + }, + { + "id": "2cae98732747989d", + "type": "function", + "z": "f025a8b9fbd1b054", + "name": "Room List (for user or all)", + "func": "let matrixClient = global.get(\"matrixClient['@bot:example.com']\"),\n matrixOnline = global.get(\"matrixClientOnline['@bot:example.com']\");\n\nif(!matrixOnline) {\n msg.payload = 'Matrix client not connected.';\n return [null, msg];\n}\n\nif(msg.userId) {\n matrixClient.http\n .authedRequest(\n undefined,\n 'GET',\n `/_synapse/admin/v1/users/${msg.userId}/joined_rooms`,\n {}, // query params\n undefined,\n { prefix: '' }\n ).then(function(e){\n msg.payload = e;\n if(!e.joined_rooms) {\n msg.payload = 'User is not part of any rooms.';\n } else {\n msg.payload = `${msg.userId}'s rooms:`;\n msg.payload += '
    ';\n e.joined_rooms.forEach(function(room_id){\n msg.payload += `
  • ${room_id}
  • `;\n });\n msg.payload += '
'\n }\n node.send([msg, null]);\n }).catch(function(e){\n node.warn(\"Error fetching server user list \" + e);\n msg.payload = e;\n node.send([null, msg]);\n });\n} else {\n matrixClient.http\n .authedRequest(\n undefined,\n 'GET',\n `/_synapse/admin/v1/rooms`,\n {}, // query params\n undefined,\n { prefix: '' }\n ).then(function(e){\n msg.payload = e;\n if(!e.rooms) {\n msg.payload = 'Server has no rooms.';\n } else {\n msg.payload = `Server rooms:`;\n msg.payload += '
    ';\n e.rooms.forEach(function(room){\n msg.payload += `
  • ${room.name} - ${room.room_id} (members: ${room.joined_members} | creator: ${room.creator})
  • `;\n });\n msg.payload += '
'\n }\n node.send([msg, null]);\n }).catch(function(e){\n node.warn(\"Error fetching server user list \" + e);\n msg.payload = e;\n node.send([null, msg]);\n });\n}", + "outputs": 2, + "noerr": 0, + "initialize": "", + "finalize": "", + "libs": [], + "x": 610, + "y": 2620, + "wires": [ + [ + "d7508993ec1ce895" + ], + [ + "d7508993ec1ce895" + ] + ] + }, + { + "id": "2f8c696ec0dc8f6d", + "type": "comment", + "z": "f025a8b9fbd1b054", + "name": "Respond to \"rooms \" with that user's rooms", + "info": "", + "x": 590, + "y": 2540, + "wires": [] + }, + { + "id": "d7508993ec1ce895", + "type": "matrix-send-message", + "z": "f025a8b9fbd1b054", + "name": "Send HTML Message", + "server": null, + "roomId": "", + "messageType": "m.text", + "messageFormat": "html", + "x": 840, + "y": 2620, + "wires": [ + [], + [] + ] + }, + { + "id": "13a9a0331352338a", + "type": "switch", + "z": "f025a8b9fbd1b054", + "name": "is from me", + "property": "userId", + "propertyType": "msg", + "rules": [ + { + "t": "eq", + "v": "@skylord123:skylar.tech", + "vt": "str" + } + ], + "checkall": "true", + "repair": false, + "outputs": 1, + "x": 590, + "y": 2580, + "wires": [ + [ + "afe88b8e115f661f" + ] + ] + }, + { + "id": "e261cc12da739901", + "type": "matrix-receive", + "z": "f025a8b9fbd1b054", + "name": "", + "server": null, + "roomId": "", + "acceptText": true, + "acceptEmotes": true, + "acceptStickers": true, + "acceptReactions": true, + "acceptFiles": true, + "acceptImages": true, + "x": 420, + "y": 2580, + "wires": [ + [ + "13a9a0331352338a" + ] + ] + }, + { + "id": "afe88b8e115f661f", + "type": "switch", + "z": "f025a8b9fbd1b054", + "name": "msg.payload filter", + "property": "payload", + "propertyType": "msg", + "rules": [ + { + "t": "regex", + "v": "^rooms", + "vt": "str", + "case": false + } + ], + "checkall": "true", + "repair": false, + "outputs": 1, + "x": 770, + "y": 2580, + "wires": [ + [ + "f3415a10f124d586" + ] + ] + } +] \ No newline at end of file diff --git a/examples/respond-rooms.png b/examples/respond-rooms.png new file mode 100644 index 0000000000000000000000000000000000000000..e8940ce17260627e3b92239c7d3712c02828181a GIT binary patch literal 27786 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�Zk8Gacf77rt;*wuU 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 G=zjxvmN+Z` literal 0 HcmV?d00001 diff --git a/examples/respond-users-list.json b/examples/respond-users-list.json index 39970b6..d8650dc 100644 --- a/examples/respond-users-list.json +++ b/examples/respond-users-list.json @@ -1,27 +1,257 @@ [ { - "id": "a9b412957063b06c", - "type": "matrix-receive", + "id": "49e4b3a1ee3e9e1e", + "type": "matrix-synapse-users", "z": "f025a8b9fbd1b054", "name": "", - "roomId": "", - "ignoreText": false, - "ignoreReactions": false, - "ignoreFiles": false, - "ignoreImages": false, - "x": 460, - "y": 120, + "server": null, + "x": 610, + "y": 2240, "wires": [ [ - "4aa45cd8653ba898" + "d4978f7c2dad7ecf" + ], + [ + "da9d25c324cb727e" ] ] }, { - "id": "4aa45cd8653ba898", + "id": "e199d3db1ea6757c", + "type": "matrix-send-message", + "z": "f025a8b9fbd1b054", + "name": "Send HTML Notice", + "server": null, + "roomId": "", + "messageType": "m.notice", + "messageFormat": "html", + "x": 970, + "y": 2240, + "wires": [ + [ + "e248881d6749ba70" + ], + [ + "da9d25c324cb727e" + ] + ] + }, + { + "id": "d4978f7c2dad7ecf", + "type": "function", + "z": "f025a8b9fbd1b054", + "name": "", + "func": "msg.next_token = msg.payload.next_token || false;\nlet new_payload = '
    ';\nmsg.payload.users.forEach(function(user, index){\n if(msg.guests == 'false' && user.is_guest) {\n return;\n }\n new_payload += '
  • '+ JSON.stringify(user, null, 2).replace(/(?:\\r\\n|\\r|\\n)/g, \"\\n
    \"); + '
  • '\n});\nmsg.payload = new_payload + '
';\n\nreturn msg;", + "outputs": 1, + "noerr": 0, + "initialize": "", + "finalize": "", + "libs": [], + "x": 800, + "y": 2240, + "wires": [ + [ + "e199d3db1ea6757c" + ] + ] + }, + { + "id": "880cac7307d9a786", + "type": "comment", + "z": "f025a8b9fbd1b054", + "name": "Response to \"users\" with full server user list (excluding guests)", + "info": "", + "x": 620, + "y": 2160, + "wires": [] + }, + { + "id": "469d2ebd9995747a", + "type": "matrix-send-message", + "z": "f025a8b9fbd1b054", + "name": "", + "server": null, + "roomId": "", + "messageType": "m.notice", + "messageFormat": "", + "x": 600, + "y": 2300, + "wires": [ + [], + [] + ] + }, + { + "id": "da9d25c324cb727e", + "type": "change", + "z": "f025a8b9fbd1b054", + "name": "", + "rules": [ + { + "t": "set", + "p": "payload", + "pt": "msg", + "to": "error", + "tot": "msg" + } + ], + "action": "", + "property": "", + "from": "", + "to": "", + "reg": false, + "x": 420, + "y": 2300, + "wires": [ + [ + "469d2ebd9995747a" + ] + ] + }, + { + "id": "86577e484ca26aca", + "type": "change", + "z": "f025a8b9fbd1b054", + "name": "", + "rules": [ + { + "t": "set", + "p": "guests", + "pt": "msg", + "to": "false", + "tot": "str" + }, + { + "t": "set", + "p": "limit", + "pt": "msg", + "to": "25", + "tot": "num" + }, + { + "t": "set", + "p": "order_by", + "pt": "msg", + "to": "creation_ts", + "tot": "str" + } + ], + "action": "", + "property": "", + "from": "", + "to": "", + "reg": false, + "x": 420, + "y": 2240, + "wires": [ + [ + "49e4b3a1ee3e9e1e" + ] + ] + }, + { + "id": "e248881d6749ba70", "type": "switch", "z": "f025a8b9fbd1b054", - "name": "msg.payload == \"users\"", + "name": "More to paginate?", + "property": "next_token", + "propertyType": "msg", + "rules": [ + { + "t": "istype", + "v": "string", + "vt": "string" + } + ], + "checkall": "true", + "repair": false, + "outputs": 1, + "x": 1190, + "y": 2240, + "wires": [ + [ + "11d7fcf6335bc75b" + ] + ] + }, + { + "id": "11d7fcf6335bc75b", + "type": "change", + "z": "f025a8b9fbd1b054", + "name": "", + "rules": [ + { + "t": "set", + "p": "from", + "pt": "msg", + "to": "next_token", + "tot": "msg" + } + ], + "action": "", + "property": "", + "from": "", + "to": "", + "reg": false, + "x": 1370, + "y": 2240, + "wires": [ + [ + "49e4b3a1ee3e9e1e" + ] + ] + }, + { + "id": "8b48e27a118999ec", + "type": "switch", + "z": "f025a8b9fbd1b054", + "name": "is from me", + "property": "userId", + "propertyType": "msg", + "rules": [ + { + "t": "eq", + "v": "@skylord123:skylar.tech", + "vt": "str" + } + ], + "checkall": "true", + "repair": false, + "outputs": 1, + "x": 590, + "y": 2200, + "wires": [ + [ + "7a64319e26e8b689" + ] + ] + }, + { + "id": "553da6dd77e5e03b", + "type": "matrix-receive", + "z": "f025a8b9fbd1b054", + "name": "", + "server": null, + "roomId": "", + "acceptText": true, + "acceptEmotes": true, + "acceptStickers": true, + "acceptReactions": true, + "acceptFiles": true, + "acceptImages": true, + "x": 420, + "y": 2200, + "wires": [ + [ + "8b48e27a118999ec" + ] + ] + }, + { + "id": "7a64319e26e8b689", + "type": "switch", + "z": "f025a8b9fbd1b054", + "name": "msg.payload filter", "property": "payload", "propertyType": "msg", "rules": [ @@ -34,70 +264,12 @@ "checkall": "true", "repair": false, "outputs": 1, - "x": 670, - "y": 120, + "x": 770, + "y": 2200, "wires": [ [ - "b95a674179d93416" + "86577e484ca26aca" ] ] - }, - { - "id": "b95a674179d93416", - "type": "matrix-synapse-users", - "z": "f025a8b9fbd1b054", - "name": "", - "x": 890, - "y": 120, - "wires": [ - [ - "19b654e5f28d93c4" - ], - [] - ] - }, - { - "id": "8720c66e867f89f6", - "type": "matrix-send-message", - "z": "f025a8b9fbd1b054", - "name": "Send HTML Notice", - "roomId": "", - "messageType": "m.notice", - "messageFormat": "html", - "x": 1230, - "y": 120, - "wires": [ - [], - [] - ] - }, - { - "id": "19b654e5f28d93c4", - "type": "function", - "z": "f025a8b9fbd1b054", - "name": "", - "func": "let new_payload = '
    ';\nmsg.payload.users.forEach(function(user, index){\n new_payload += '
  • '+ JSON.stringify(user, null, 2).replace(/(?:\\r\\n|\\r|\\n)/g, \"\\n
    \"); + '
  • '\n});\nmsg.payload = new_payload + '
';\n\nreturn msg;", - "outputs": 1, - "noerr": 0, - "initialize": "", - "finalize": "", - "libs": [], - "x": 1060, - "y": 120, - "wires": [ - [ - "8720c66e867f89f6" - ] - ] - }, - { - "id": "563da45ab1747c2b", - "type": "comment", - "z": "f025a8b9fbd1b054", - "name": "Response to \"users\" with full server user list", - "info": "", - "x": 550, - "y": 80, - "wires": [] } ] \ No newline at end of file diff --git a/examples/respond-users-list.png b/examples/respond-users-list.png index bf1f76860975cd93ae50dfb1b76e2fe47ca5196a..77a7f336022c9bf199adc784da7348a2f528c41b 100644 GIT binary patch literal 44955 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 YaWTQO^=Ayg2T|}8WL0Gfo|y#wFKmE+Qvd(} diff --git a/examples/respond-whois.json b/examples/respond-whois.json new file mode 100644 index 0000000..02088cf --- /dev/null +++ b/examples/respond-whois.json @@ -0,0 +1,153 @@ +[ + { + "id": "93df869346a728d3", + "type": "comment", + "z": "f025a8b9fbd1b054", + "name": "Response to \"whois \" with user information", + "info": "", + "x": 610, + "y": 2360, + "wires": [] + }, + { + "id": "656ed1e444fd2e0a", + "type": "function", + "z": "f025a8b9fbd1b054", + "name": "", + "func": "let matches = msg.payload.match(/^whois ?(\\@.*)?/);\nmsg.userId = matches[1].trim() ? matches[1].trim() : msg.userId;\nreturn msg;", + "outputs": 1, + "noerr": 0, + "initialize": "", + "finalize": "", + "libs": [], + "x": 440, + "y": 2440, + "wires": [ + [ + "4869676dab929d20" + ] + ] + }, + { + "id": "4869676dab929d20", + "type": "matrix-whois-user", + "z": "f025a8b9fbd1b054", + "name": "", + "server": null, + "x": 590, + "y": 2440, + "wires": [ + [ + "a894fcabf9e41dca" + ], + [] + ] + }, + { + "id": "a894fcabf9e41dca", + "type": "function", + "z": "f025a8b9fbd1b054", + "name": "", + "func": "try { \n var sessions = msg.payload.devices[\"\"].sessions || null;\n} catch (error) { \n var sessions = null;\n}\nlet html = \"whois (session) information for \" + msg.userId + \"\\n
    \";\nfor(let session of sessions) {\n try { \n var connections = session.connections;\n } catch (error) { \n var connections = null;\n }\n for(let connection of connections) {\n html += \"\\n
  1. \"+JSON.stringify(connection, null, 2)+\"
  2. \"\n }\n}\nhtml += \"
\"\nmsg.payload = html;\nreturn msg;", + "outputs": 1, + "noerr": 0, + "initialize": "", + "finalize": "", + "libs": [], + "x": 740, + "y": 2440, + "wires": [ + [ + "898b8974f2b24861" + ] + ] + }, + { + "id": "898b8974f2b24861", + "type": "matrix-send-message", + "z": "f025a8b9fbd1b054", + "name": "Send HTML Notice", + "server": null, + "roomId": "", + "messageType": "m.notice", + "messageFormat": "html", + "x": 910, + "y": 2440, + "wires": [ + [], + [] + ] + }, + { + "id": "c8855c79f194796e", + "type": "switch", + "z": "f025a8b9fbd1b054", + "name": "is from me", + "property": "userId", + "propertyType": "msg", + "rules": [ + { + "t": "eq", + "v": "@skylord123:skylar.tech", + "vt": "str" + } + ], + "checkall": "true", + "repair": false, + "outputs": 1, + "x": 590, + "y": 2400, + "wires": [ + [ + "ae1537a16b9e3b4c" + ] + ] + }, + { + "id": "39109d4f02d241ca", + "type": "matrix-receive", + "z": "f025a8b9fbd1b054", + "name": "", + "server": null, + "roomId": "", + "acceptText": true, + "acceptEmotes": true, + "acceptStickers": true, + "acceptReactions": true, + "acceptFiles": true, + "acceptImages": true, + "x": 420, + "y": 2400, + "wires": [ + [ + "c8855c79f194796e" + ] + ] + }, + { + "id": "ae1537a16b9e3b4c", + "type": "switch", + "z": "f025a8b9fbd1b054", + "name": "msg.payload filter", + "property": "payload", + "propertyType": "msg", + "rules": [ + { + "t": "regex", + "v": "^whois", + "vt": "str", + "case": false + } + ], + "checkall": "true", + "repair": false, + "outputs": 1, + "x": 770, + "y": 2400, + "wires": [ + [ + "656ed1e444fd2e0a" + ] + ] + } +] \ No newline at end of file diff --git a/examples/respond-whois.png b/examples/respond-whois.png new file mode 100644 index 0000000000000000000000000000000000000000..bc7e9b09a6c48a20db3b1d2b61c28289bec2b7d0 GIT binary patch literal 22752 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 literal 0 HcmV?d00001 diff --git a/examples/room-kick-ban.json b/examples/room-kick-ban.json new file mode 100644 index 0000000..196f10f --- /dev/null +++ b/examples/room-kick-ban.json @@ -0,0 +1,211 @@ +[ + { + "id": "d78dd157085ed843", + "type": "matrix-room-kick", + "z": "f025a8b9fbd1b054", + "name": "", + "server": null, + "roomId": "", + "x": 570, + "y": 2980, + "wires": [ + [ + "44d49fcaad67790c" + ], + [ + "44d49fcaad67790c" + ] + ] + }, + { + "id": "32a99c44b50fe3f3", + "type": "matrix-room-ban", + "z": "f025a8b9fbd1b054", + "name": "", + "server": null, + "roomId": "", + "x": 570, + "y": 3080, + "wires": [ + [ + "04628a976e7acf1b" + ], + [ + "04628a976e7acf1b" + ] + ] + }, + { + "id": "5e786bbae3b1a368", + "type": "switch", + "z": "f025a8b9fbd1b054", + "name": "is from me", + "property": "userId", + "propertyType": "msg", + "rules": [ + { + "t": "eq", + "v": "@skylord123:skylar.tech", + "vt": "str" + } + ], + "checkall": "true", + "repair": false, + "outputs": 1, + "x": 230, + "y": 3020, + "wires": [ + [ + "5b3ddae8335383e7" + ] + ] + }, + { + "id": "ca278a6ffc3b9d6b", + "type": "matrix-receive", + "z": "f025a8b9fbd1b054", + "name": "", + "server": null, + "roomId": "", + "acceptText": true, + "acceptEmotes": false, + "acceptStickers": false, + "acceptReactions": false, + "acceptFiles": false, + "acceptImages": false, + "x": 220, + "y": 2960, + "wires": [ + [ + "5e786bbae3b1a368" + ] + ] + }, + { + "id": "b6830f430157be4e", + "type": "comment", + "z": "f025a8b9fbd1b054", + "name": "Respond to \"room_ban \" by banning user from room", + "info": "", + "x": 580, + "y": 3040, + "wires": [] + }, + { + "id": "8bffe425d3c1bf24", + "type": "comment", + "z": "f025a8b9fbd1b054", + "name": "Respond to \"room_kick \" by kicking user from room", + "info": "", + "x": 580, + "y": 2940, + "wires": [] + }, + { + "id": "5b3ddae8335383e7", + "type": "switch", + "z": "f025a8b9fbd1b054", + "name": "Kick or Ban", + "property": "payload", + "propertyType": "msg", + "rules": [ + { + "t": "regex", + "v": "^room_kick", + "vt": "str", + "case": false + }, + { + "t": "regex", + "v": "^room_ban", + "vt": "str", + "case": false + } + ], + "checkall": "true", + "repair": false, + "outputs": 2, + "x": 230, + "y": 3060, + "wires": [ + [ + "a19b38afd7b52834" + ], + [ + "925c59f485bf7247" + ] + ] + }, + { + "id": "925c59f485bf7247", + "type": "function", + "z": "f025a8b9fbd1b054", + "name": "", + "func": "let matches = msg.payload.match(/^room_ban ?(\\@.*)?/);\nmsg.userId = matches[1].trim() ? matches[1].trim() : null;\nif(!msg.userId) {\n return null;\n}\nreturn msg;", + "outputs": 1, + "noerr": 0, + "initialize": "", + "finalize": "", + "libs": [], + "x": 420, + "y": 3080, + "wires": [ + [ + "32a99c44b50fe3f3" + ] + ] + }, + { + "id": "a19b38afd7b52834", + "type": "function", + "z": "f025a8b9fbd1b054", + "name": "", + "func": "let matches = msg.payload.match(/^room_kick ?(\\@.*)?/);\nmsg.userId = matches[1].trim() ? matches[1].trim() : null;\nif(!msg.userId) {\n return null;\n}\nreturn msg;", + "outputs": 1, + "noerr": 0, + "initialize": "", + "finalize": "", + "libs": [], + "x": 420, + "y": 2980, + "wires": [ + [ + "d78dd157085ed843" + ] + ] + }, + { + "id": "04628a976e7acf1b", + "type": "debug", + "z": "f025a8b9fbd1b054", + "name": "", + "active": true, + "tosidebar": true, + "console": false, + "tostatus": false, + "complete": "true", + "targetType": "full", + "statusVal": "", + "statusType": "auto", + "x": 710, + "y": 3080, + "wires": [] + }, + { + "id": "44d49fcaad67790c", + "type": "debug", + "z": "f025a8b9fbd1b054", + "name": "", + "active": true, + "tosidebar": true, + "console": false, + "tostatus": false, + "complete": "true", + "targetType": "full", + "statusVal": "", + "statusType": "auto", + "x": 710, + "y": 2980, + "wires": [] + } +] \ No newline at end of file diff --git a/examples/room-kick-ban.png b/examples/room-kick-ban.png new file mode 100644 index 0000000000000000000000000000000000000000..51e3715848bbf17d9388a13d89e42fba7d41f5ab GIT binary patch literal 36690 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 ARR910 literal 0 HcmV?d00001 diff --git a/examples/store-received-files.json b/examples/store-received-files.json new file mode 100644 index 0000000..0c904dd --- /dev/null +++ b/examples/store-received-files.json @@ -0,0 +1,166 @@ +[ + { + "id": "d7573ed76980dc64", + "type": "matrix-receive", + "z": "f025a8b9fbd1b054", + "name": "", + "server": null, + "roomId": "", + "acceptText": false, + "acceptEmotes": false, + "acceptStickers": false, + "acceptReactions": false, + "acceptFiles": true, + "acceptImages": true, + "x": 1740, + "y": 600, + "wires": [ + [ + "4d4e992ed895413f" + ] + ] + }, + { + "id": "addcccdfea9935b1", + "type": "comment", + "z": "f025a8b9fbd1b054", + "name": "Download & store received files/images and decrypt if necessary", + "info": "", + "x": 1970, + "y": 560, + "wires": [] + }, + { + "id": "4d4e992ed895413f", + "type": "switch", + "z": "f025a8b9fbd1b054", + "name": "", + "property": "encrypted", + "propertyType": "msg", + "rules": [ + { + "t": "true" + }, + { + "t": "else" + } + ], + "checkall": "true", + "repair": false, + "outputs": 2, + "x": 1890, + "y": 600, + "wires": [ + [ + "660782188696fc62" + ], + [ + "857bce169036e3cb" + ] + ] + }, + { + "id": "660782188696fc62", + "type": "matrix-decrypt-file", + "z": "f025a8b9fbd1b054", + "name": null, + "x": 2050, + "y": 600, + "wires": [ + [ + "cdbaf88f6631322e" + ], + [] + ] + }, + { + "id": "b62db6caf4697242", + "type": "file", + "z": "f025a8b9fbd1b054", + "name": "", + "filename": "", + "appendNewline": true, + "createDir": false, + "overwriteFile": "true", + "encoding": "none", + "x": 2240, + "y": 660, + "wires": [ + [] + ] + }, + { + "id": "857bce169036e3cb", + "type": "http request", + "z": "f025a8b9fbd1b054", + "name": "", + "method": "GET", + "ret": "bin", + "paytoqs": "ignore", + "url": "", + "tls": "", + "persist": false, + "proxy": "", + "authType": "", + "senderr": false, + "x": 1910, + "y": 660, + "wires": [ + [ + "7d0be52f8c3f1b54" + ] + ] + }, + { + "id": "7d0be52f8c3f1b54", + "type": "switch", + "z": "f025a8b9fbd1b054", + "name": "", + "property": "statusCode", + "propertyType": "msg", + "rules": [ + { + "t": "eq", + "v": "200", + "vt": "num" + } + ], + "checkall": "true", + "repair": false, + "outputs": 1, + "x": 2050, + "y": 660, + "wires": [ + [ + "cdbaf88f6631322e" + ] + ] + }, + { + "id": "cdbaf88f6631322e", + "type": "change", + "z": "f025a8b9fbd1b054", + "name": "set directory", + "rules": [ + { + "t": "set", + "p": "filename", + "pt": "msg", + "to": "\"downloads/\" & msg.filename", + "tot": "jsonata" + } + ], + "action": "", + "property": "", + "from": "", + "to": "", + "reg": false, + "x": 2230, + "y": 600, + "wires": [ + [ + "b62db6caf4697242" + ] + ] + } +] \ No newline at end of file diff --git a/examples/store-received-files.png b/examples/store-received-files.png new file mode 100644 index 0000000000000000000000000000000000000000..b47bbd100bfd0ef9867d9e58deddc82e27cd2d58 GIT binary patch literal 24788 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

1!ikJQ~AytXF`W+$b)YI4Ot=FgXl| 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.0.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.0.2.tgz", + "integrity": "sha512-sE8Gx+qSDMLoJvb3QarJJlDQK7SSY4rK3hxp4XsiANeFOmjU46ZI7Y9adAQRJrmbz8zbtZkp3mJTT+rGxtF0XA==", + "optional": true, + "peer": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.2.2", + "sourcemap-codec": "1.4.8" + }, + "engines": { + "node": ">=6.0.0" } }, "node_modules/@babel/code-frame": { @@ -29,9 +45,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.8.tgz", - "integrity": "sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.0.tgz", + "integrity": "sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==", "optional": true, "peer": true, "engines": { @@ -39,27 +55,27 @@ } }, "node_modules/@babel/core": { - "version": "7.16.12", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.12.tgz", - "integrity": "sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.0.tgz", + "integrity": "sha512-x/5Ea+RO5MvF9ize5DeVICJoVrNv0Mi2RnIABrZEKYvPEpldXwauPkgvYA17cKa6WpU3LoYvYbuEMFtSNFsarA==", "optional": true, "peer": true, "dependencies": { + "@ampproject/remapping": "^2.0.0", "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.16.8", + "@babel/generator": "^7.17.0", "@babel/helper-compilation-targets": "^7.16.7", "@babel/helper-module-transforms": "^7.16.7", - "@babel/helpers": "^7.16.7", - "@babel/parser": "^7.16.12", + "@babel/helpers": "^7.17.0", + "@babel/parser": "^7.17.0", "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.10", - "@babel/types": "^7.16.8", + "@babel/traverse": "^7.17.0", + "@babel/types": "^7.17.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" + "semver": "^6.3.0" }, "engines": { "node": ">=6.9.0" @@ -109,13 +125,13 @@ } }, "node_modules/@babel/generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.8.tgz", - "integrity": "sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.0.tgz", + "integrity": "sha512-I3Omiv6FGOC29dtlZhkfXO6pgkmukJSlT26QjVvS1DGZe/NzSVCPG41X0tS21oZkJYlovfj9qDWgKP+Cn4bXxw==", "optional": true, "peer": true, "dependencies": { - "@babel/types": "^7.16.8", + "@babel/types": "^7.17.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" }, @@ -180,9 +196,9 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.10.tgz", - "integrity": "sha512-wDeej0pu3WN/ffTxMNCPW5UCiOav8IcLRxSIyp/9+IF2xJUM9h/OYjg0IJLHaL6F8oU8kqMz9nc1vryXhMsgXg==", + "version": "7.17.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.1.tgz", + "integrity": "sha512-JBdSr/LtyYIno/pNnJ75lBcqc3Z1XXujzPanHqjvvrhOA+DTceTFuJi8XjmWTZh4r3fsdfqaCMN0iZemdkxZHQ==", "optional": true, "peer": true, "dependencies": { @@ -202,14 +218,14 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.7.tgz", - "integrity": "sha512-fk5A6ymfp+O5+p2yCkXAu5Kyj6v0xh0RBeNcAkYUMDvvAAoxvSKXn+Jb37t/yWFiQVDFK1ELpUTD8/aLhCPu+g==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz", + "integrity": "sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==", "optional": true, "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.16.7", - "regexpu-core": "^4.7.1" + "regexpu-core": "^5.0.1" }, "engines": { "node": ">=6.9.0" @@ -492,15 +508,15 @@ } }, "node_modules/@babel/helpers": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.7.tgz", - "integrity": "sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.0.tgz", + "integrity": "sha512-Xe/9NFxjPwELUvW2dsukcMZIp6XwPSbI4ojFBJuX5ramHuVE22SVcZIwqzdWo5uCgeTXW8qV97lMvSOjq+1+nQ==", "optional": true, "peer": true, "dependencies": { "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/traverse": "^7.17.0", + "@babel/types": "^7.17.0" }, "engines": { "node": ">=6.9.0" @@ -590,9 +606,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.16.12", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.12.tgz", - "integrity": "sha512-VfaV15po8RiZssrkPweyvbGVSe4x2y+aciFCgn0n0/SJMR22cwofRV1mtnJQYcSB1wUTaA/X1LnA3es66MCO5A==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.0.tgz", + "integrity": "sha512-VKXSCQx5D8S04ej+Dqsr1CzYvvWgf20jIw2D+YhQCrIlr2UZGaDds23Y0xg75/skOxpLCRpUZvk/1EAVkGoDOw==", "optional": true, "peer": true, "bin": { @@ -690,15 +706,17 @@ } }, "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.16.7.tgz", - "integrity": "sha512-DoEpnuXK14XV9btI1k8tzNGCutMclpj4yru8aXKoHlVmbO1s+2A+g2+h4JhcjrxkFJqzbymnLG6j/niOf3iFXQ==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.17.0.tgz", + "integrity": "sha512-JR8HTf3T1CsdMqfENrZ9pqncwsH4sPcvsyDLpvmv8iIbpDmeyBD7HPfGAIqkQph2j5d3B84hTm+m3qHPAedaPw==", "optional": true, "peer": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.17.0", "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-decorators": "^7.16.7" + "@babel/helper-replace-supers": "^7.16.7", + "@babel/plugin-syntax-decorators": "^7.17.0", + "charcodes": "^0.2.0" }, "engines": { "node": ">=6.9.0" @@ -977,9 +995,9 @@ } }, "node_modules/@babel/plugin-syntax-decorators": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.16.7.tgz", - "integrity": "sha512-vQ+PxL+srA7g6Rx6I1e15m55gftknl2X8GCUW1JTlkTaXZLJOS0UcaY0eK9jYT7IYf4awn6qwyghVHLDz1WyMw==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.17.0.tgz", + "integrity": "sha512-qWe85yCXsvDEluNP0OyeQjH63DlhAR3W7K9BxxU1MvbDb48tgBG+Ao6IJJ6smPDrrVzSQZrbF6donpkFBMcs3A==", "optional": true, "peer": true, "dependencies": { @@ -1731,9 +1749,9 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.16.10.tgz", - "integrity": "sha512-9nwTiqETv2G7xI4RvXHNfpGdr8pAA+Q/YtN3yLK7OoK7n9OibVm/xymJ838a9A6E/IciOLPj82lZk0fW6O4O7w==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.0.tgz", + "integrity": "sha512-fr7zPWnKXNc1xoHfrIU9mN/4XKX4VLZ45Q+oMhfsYIaHvg7mHgmhfOy/ckRWqDK7XF3QDigRpkh5DKq6+clE8A==", "optional": true, "peer": true, "dependencies": { @@ -2046,16 +2064,16 @@ } }, "node_modules/@babel/register": { - "version": "7.16.9", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.16.9.tgz", - "integrity": "sha512-jJ72wcghdRIlENfvALcyODhNoGE5j75cYHdC+aQMh6cU/P86tiiXTp9XYZct1UxUMo/4+BgQRyNZEGx0KWGS+g==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.17.0.tgz", + "integrity": "sha512-UNZsMAZ7uKoGHo1HlEXfteEOYssf64n/PNLHGqOKq/bgYcu/4LrQWAHJwSCb3BRZK8Hi5gkJdRcwrGTO2wtRCg==", "optional": true, "peer": true, "dependencies": { "clone-deep": "^4.0.1", "find-cache-dir": "^2.0.0", "make-dir": "^2.1.0", - "pirates": "^4.0.0", + "pirates": "^4.0.5", "source-map-support": "^0.5.16" }, "engines": { @@ -2066,9 +2084,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.7.tgz", - "integrity": "sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.0.tgz", + "integrity": "sha512-etcO/ohMNaNA2UBdaXBBSX/3aEzFMRrVfaPv8Ptc0k+cWpWW0QFiGZ2XnVqQZI1Cf734LbPGmqBKWESfW4x/dQ==", "dependencies": { "regenerator-runtime": "^0.13.4" }, @@ -2105,20 +2123,20 @@ } }, "node_modules/@babel/traverse": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.10.tgz", - "integrity": "sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.0.tgz", + "integrity": "sha512-fpFIXvqD6kC7c7PUNnZ0Z8cQXlarCLtCUpt2S1Dx7PjoRtCFffvOkHHSom+m5HIxMZn5bIBVb71lhabcmjEsqg==", "optional": true, "peer": true, "dependencies": { "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.16.8", + "@babel/generator": "^7.17.0", "@babel/helper-environment-visitor": "^7.16.7", "@babel/helper-function-name": "^7.16.7", "@babel/helper-hoist-variables": "^7.16.7", "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.16.10", - "@babel/types": "^7.16.8", + "@babel/parser": "^7.17.0", + "@babel/types": "^7.17.0", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -2140,9 +2158,9 @@ } }, "node_modules/@babel/types": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz", - "integrity": "sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", "optional": true, "peer": true, "dependencies": { @@ -2390,6 +2408,27 @@ "node": ">= 10.14.2" } }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.4.tgz", + "integrity": "sha512-cz8HFjOFfUBtvN+NXYSFMHYRdxZMaEl0XypVrhzxBgadKIXhIkRd8aMeHhmF56Sl7SuS8OnUpQ73/k9LE4VnLg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.2.6.tgz", + "integrity": "sha512-rVJf5dSMEBxnDEwtAT5x8+p6tZ+xU6Ocm+cR1MYL2gMsRi4MMzVf9Pvq6JaxIsEeKAyYmo2U+yPQN4QfdTfFnA==", + "optional": true, + "peer": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "sourcemap-codec": "1.4.8" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -2901,14 +2940,14 @@ } }, "node_modules/@szmarczak/http-timer": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", - "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", "dependencies": { - "defer-to-connect": "^2.0.0" + "defer-to-connect": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=14.16" } }, "node_modules/@types/asn1js": { @@ -2978,9 +3017,9 @@ } }, "node_modules/@types/node": { - "version": "17.0.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.12.tgz", - "integrity": "sha512-4YpbAsnJXWYK/fpTVFlMIcUIho2AYCi4wg5aNPrG1ng7fn/1/RZfCIpRCiBX+12RVa34RluilnvCqD+g3KiSiA==" + "version": "17.0.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.14.tgz", + "integrity": "sha512-SbjLmERksKOGzWzPNuW7fJM7fk3YXVTFiZWB/Hs99gwhk+/dnrQRPBQjPW9aO+fi1tAffi9PrwFvsmOKmDTyng==" }, "node_modules/@types/responselike": { "version": "1.0.0", @@ -3062,14 +3101,14 @@ "peer": true }, "node_modules/accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "optional": true, "peer": true, "dependencies": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" }, "engines": { "node": ">= 0.6" @@ -3336,6 +3375,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "optional": true, "engines": { "node": ">= 4.0.0" } @@ -3445,14 +3485,14 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.1.tgz", - "integrity": "sha512-TihqEe4sQcb/QcPJvxe94/9RZuLQuF1+To4WqQcRvc+3J3gLCPIPgDKzGLG6zmQLfH3nn25heRuDNkS2KR4I8A==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", + "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", "optional": true, "peer": true, "dependencies": { "@babel/helper-define-polyfill-provider": "^0.3.1", - "core-js-compat": "^3.20.0" + "core-js-compat": "^3.21.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -3796,9 +3836,9 @@ } }, "node_modules/cacheable-lookup": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-6.0.4.tgz", + "integrity": "sha512-mbcDEZCkv2CZF4G01kr8eBd/5agkt9oCqz75tJMSIsquvRZ2sL6Hi5zGVKi/0OSC9oO1GHfJ2AV0ZIOY9vye0A==", "engines": { "node": ">=10.6.0" } @@ -3820,6 +3860,28 @@ "node": ">=8" } }, + "node_modules/cacheable-request/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "engines": { + "node": ">=8" + } + }, "node_modules/call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -3882,9 +3944,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001303", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001303.tgz", - "integrity": "sha512-/Mqc1oESndUNszJP0kx0UaQU9kEv9nNtJ7Kn8AdA0mNnH8eR1cj0kG+NbNuC1Wq/b21eA8prhKRA3bbkjONegQ==", + "version": "1.0.30001307", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001307.tgz", + "integrity": "sha512-+MXEMczJ4FuxJAUp0jvAl6Df0NI/OfW1RWEE61eSmzS7hw6lz4IKutbhbXendwq8BljfFuHtu26VWsg4afQ7Ng==", "optional": true, "peer": true, "funding": { @@ -3926,6 +3988,16 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/charcodes": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/charcodes/-/charcodes-0.2.0.tgz", + "integrity": "sha512-Y4kiDb+AM4Ecy58YkuZrrSRJBDQdQ2L+NyS1vHHFtNtUjgutcZfx3yp1dAONI/oPaPmyGfCLx5CxL+zauIMyKQ==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, "node_modules/ci-info": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", @@ -4345,9 +4417,9 @@ "peer": true }, "node_modules/core-js-compat": { - "version": "3.20.3", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.20.3.tgz", - "integrity": "sha512-c8M5h0IkNZ+I92QhIpuSijOxGAcj3lgpsWdkCqmUTZNwidujF4r3pi6x1DCN+Vcs5qTS2XWWMfWSuCqyupX8gw==", + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.21.0.tgz", + "integrity": "sha512-OSXseNPSK2OPJa6GdtkMz/XxeXx8/CJvfhQWTqd6neuUraujcL4jVsjkLQz1OWnax8xVQJnRPe0V2jqNWORA+A==", "optional": true, "peer": true, "dependencies": { @@ -4604,9 +4676,9 @@ "peer": true }, "node_modules/electron-to-chromium": { - "version": "1.4.54", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.54.tgz", - "integrity": "sha512-jRAoneRdSxnpRHO0ANpnEUtQHXxlgfVjrLOnQSisw1ryjXJXvS0pJaR/v2B7S++/tRjgEDp4Sjn5nmgb6uTySw==", + "version": "1.4.64", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.64.tgz", + "integrity": "sha512-8mec/99xgLUZCIZZq3wt61Tpxg55jnOSpxGYapE/1Ma9MpFEYYaz4QNYm0CM1rrnCo7i3FRHhbaWjeCLsveGjQ==", "optional": true, "peer": true }, @@ -4952,9 +5024,9 @@ "peer": true }, "node_modules/expo": { - "version": "44.0.5", - "resolved": "https://registry.npmjs.org/expo/-/expo-44.0.5.tgz", - "integrity": "sha512-QNQjUb+Rve1r1wUjs2fSx3JVxAVtcmqWZgS+izCLFovAoX6bZ1UUkQBUkVP9PNfimnZ11EDFG4243E0yxtmuuA==", + "version": "44.0.6", + "resolved": "https://registry.npmjs.org/expo/-/expo-44.0.6.tgz", + "integrity": "sha512-iHnra6uD5kXZgdSUrvxZ3sLjg1FtgtA4p4uaSKVQ39IaMHJBngo8RKqFUJ+BF2kPDpBLJ251eLlhgYUlnAyuag==", "optional": true, "peer": true, "dependencies": { @@ -4963,14 +5035,14 @@ "@expo/vector-icons": "^12.0.4", "babel-preset-expo": "~9.0.2", "cross-spawn": "^6.0.5", - "expo-application": "~4.0.1", + "expo-application": "~4.0.2", "expo-asset": "~8.4.6", - "expo-constants": "~13.0.0", - "expo-file-system": "~13.1.0", - "expo-font": "~10.0.4", - "expo-keep-awake": "~10.0.1", + "expo-constants": "~13.0.2", + "expo-file-system": "~13.1.3", + "expo-font": "~10.0.5", + "expo-keep-awake": "~10.0.2", "expo-modules-autolinking": "0.5.5", - "expo-modules-core": "0.6.4", + "expo-modules-core": "0.6.5", "fbemitter": "^2.1.1", "invariant": "^2.2.4", "md5-file": "^3.2.3", @@ -4981,13 +5053,13 @@ "expo": "bin/cli.js" }, "optionalDependencies": { - "expo-error-recovery": "~3.0.4" + "expo-error-recovery": "~3.0.5" } }, "node_modules/expo-application": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/expo-application/-/expo-application-4.0.1.tgz", - "integrity": "sha512-yZM/SrpWdi84m5+5F3VDfhrMZOz/uKwXcgBhOP1wzfXt0otGSRW1V5tM+a0sgaKZsDRCGojTU7Jm73BVwwVrwg==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/expo-application/-/expo-application-4.0.2.tgz", + "integrity": "sha512-ngTaFplTkWn0X45gMC+VNXGyJfGxX4wOwKmtr17rNMVWOQUhhLlyMkTj9bAamzsuwZh35l3S/eD/N1aMWWUwMw==", "optional": true, "peer": true, "peerDependencies": { @@ -5009,9 +5081,9 @@ } }, "node_modules/expo-constants": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-13.0.1.tgz", - "integrity": "sha512-48rhXCZMJGVx/v4DEd9PqTY6V/xLgtWHBy8nos27QIpYCyiC27I3QUQEUI1T3MXUwBsIR4LLJuwnD/4IfftrBw==", + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-13.0.2.tgz", + "integrity": "sha512-vGs/kI65vplPFvG8z4W1ariGEtVHHp9Avl28G0zJprt2v/q1E/BnXjwvFSBPc1GB+Zb/7crWSHWRwjaFULBjsg==", "optional": true, "peer": true, "dependencies": { @@ -5023,9 +5095,9 @@ } }, "node_modules/expo-error-recovery": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/expo-error-recovery/-/expo-error-recovery-3.0.4.tgz", - "integrity": "sha512-7z2V7n9Yvm9/ogm4I1KgcsQZfgyDMSOBVHk8pA3IY0jL8+tXTyTrStxHsPXRjE8HHeYikfTRBIeFsh/1wWY7oA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/expo-error-recovery/-/expo-error-recovery-3.0.5.tgz", + "integrity": "sha512-VM6OOecjt0aPu5/eCdGGJfNjvAZIemaQym0JF/+SA5IlLiPpEfbVCDTO/5yiS8Zb5fKpeABx+GCRmtfnFqvRRw==", "optional": true, "peer": true, "peerDependencies": { @@ -5033,9 +5105,9 @@ } }, "node_modules/expo-file-system": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-13.1.2.tgz", - "integrity": "sha512-TA0LZTi8ZlnmyB2q6rEuTEo7b63e2luBzNhR5h/ow2J55xxRTXQLeaoK9m69XgazLVq6Ys7wiJma/q+Hg38hrQ==", + "version": "13.1.3", + "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-13.1.3.tgz", + "integrity": "sha512-yh1LmxVvezoxwSAUWDRda36+nw96IQj4EgiYNbl6LK6Drtc/v5OhWl1vJG7oSYNhZ0zMwo1CSE4gC7h50ZldtQ==", "optional": true, "peer": true, "dependencies": { @@ -5047,9 +5119,9 @@ } }, "node_modules/expo-font": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-10.0.4.tgz", - "integrity": "sha512-ieEsT6tD6yD6qT7WUzzJ5el0UvACr53RqICu0GI9GUiWuwDFPM2Oi5WfWwYFFStCRuaP6kEtpkJDUZ9cjT5F+w==", + "version": "10.0.5", + "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-10.0.5.tgz", + "integrity": "sha512-x9YwM0xLkDdSvFjeNbyuh33Q1Hk3uc2jbMuuAN5W2ZVcUZqG0M8GCX/KV/D/7rYqdXKbliQA5r44MyDwZe/XRw==", "optional": true, "peer": true, "dependencies": { @@ -5060,9 +5132,9 @@ } }, "node_modules/expo-keep-awake": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-10.0.1.tgz", - "integrity": "sha512-kcBtoDGkm3RRe6BpKDvR7gof/ErajEia38u92pRvNRctdh+p8AFO7GQuiipyg3iMfhcCFVTCIV7h3tuA0g/yDw==", + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-10.0.2.tgz", + "integrity": "sha512-Ro1lgyKldbFs4mxhWM+goX9sg0S2SRR8FiJJeOvaRzf8xNhrZfWA00Zpr+/3ocCoWQ3eEL+X9UF4PXXHf0KoOg==", "optional": true, "peer": true, "peerDependencies": { @@ -5085,10 +5157,25 @@ "expo-modules-autolinking": "bin/expo-modules-autolinking.js" } }, + "node_modules/expo-modules-autolinking/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "optional": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/expo-modules-core": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-0.6.4.tgz", - "integrity": "sha512-I5MvSZHjww4Jfvob/woCbI0ZLZIUBmhoiLeZsMJoWJuWa8QmtxXjI+4eRjaDB7+RxNVhrnVcmRjQPYG/5HepVg==", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-0.6.5.tgz", + "integrity": "sha512-h/9+SJ3m8XkDUV1QrPO8WeXaeRYWLBJrOqhokDyhgWUYSqe6JOuRx1ZkoGq/GmTiwjouRDbXPsXUBiU9HWLYyA==", "optional": true, "peer": true, "dependencies": { @@ -5097,9 +5184,9 @@ } }, "node_modules/expo-random": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/expo-random/-/expo-random-12.1.1.tgz", - "integrity": "sha512-AxxP9aqgCgGQsUC9jvMaaMXLmdkwbeil1MYqLJVMsueeAifsRDAroSGcpkbuXjK7lgNFdfdJNU/+4Z7ybBev/A==", + "version": "12.1.2", + "resolved": "https://registry.npmjs.org/expo-random/-/expo-random-12.1.2.tgz", + "integrity": "sha512-ajB+Mwff9PdglsyLliaU4K9BtVwKvAVVI2hQhnvlS3QgsAhHf+jQVUfAysQJHuioF6ADMEsab/kRUy4Dy03aoQ==", "optional": true, "dependencies": { "base64-js": "^1.3.0" @@ -5125,6 +5212,22 @@ "expo-modules-autolinking": "bin/expo-modules-autolinking.js" } }, + "node_modules/expo/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "optional": true, + "peer": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -5439,6 +5542,11 @@ "node": ">= 0.12" } }, + "node_modules/form-data-encoder": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.1.tgz", + "integrity": "sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg==" + }, "node_modules/fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", @@ -5463,17 +5571,16 @@ } }, "node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", + "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", "dependencies": { - "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/fs.realpath": { @@ -5536,14 +5643,11 @@ } }, "node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dependencies": { - "pump": "^3.0.0" - }, + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -5621,24 +5725,26 @@ } }, "node_modules/got": { - "version": "11.8.3", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.3.tgz", - "integrity": "sha512-7gtQ5KiPh1RtGS9/Jbv1ofDpBFuq42gyfEib+ejaRBJuj/3tQFeR5+gw57e4ipaU8c/rCjvX6fkQz2lyDlGAOg==", + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/got/-/got-12.0.1.tgz", + "integrity": "sha512-1Zhoh+lDej3t7Ks1BP/Jufn+rNqdiHQgUOcTxHzg2Dao1LQfp5S4Iq0T3iBxN4Zdo7QqCJL+WJUNzDX6rCP2Ew==", "dependencies": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", + "@sindresorhus/is": "^4.2.0", + "@szmarczak/http-timer": "^5.0.1", + "@types/cacheable-request": "^6.0.2", "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", + "cacheable-lookup": "^6.0.4", "cacheable-request": "^7.0.2", "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", + "form-data-encoder": "1.7.1", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.9", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", "responselike": "^2.0.0" }, "engines": { - "node": ">=10.19.0" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sindresorhus/got?sponsor=1" @@ -5843,12 +5949,12 @@ } }, "node_modules/http2-wrapper": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "version": "2.1.10", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.1.10.tgz", + "integrity": "sha512-QHgsdYkieKp+6JbXP25P+tepqiHYd+FVnDwXpxi/BlUcoIB0nsmTOymTNvETuTO+pDuwcSklPE72VR3DqV+Haw==", "dependencies": { "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" + "resolve-alpn": "^1.2.0" }, "engines": { "node": ">=10.19.0" @@ -6631,9 +6737,9 @@ } }, "node_modules/keyv": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.5.tgz", - "integrity": "sha512-531pkGLqV3BMg0eDqqJFI0R1mkK1Nm5xIP2mM6keP5P8WfFtCkg2IOwplTUmlGoTgIg9yQYZ/kdihhz89XH3vA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.1.0.tgz", + "integrity": "sha512-YsY3wr6HabE11/sscee+3nZ03XjvkrPWGouAmJFBdZoK92wiOlJCzI5/sDEIKdJhdhHO144ei45U9gXfbu14Uw==", "dependencies": { "json-buffer": "3.0.1" } @@ -6905,11 +7011,14 @@ } }, "node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/lru-cache": { @@ -6982,10 +7091,15 @@ "node": ">=0.10.0" } }, + "node_modules/matrix-events-sdk": { + "version": "0.0.1-beta.6", + "resolved": "https://registry.npmjs.org/matrix-events-sdk/-/matrix-events-sdk-0.0.1-beta.6.tgz", + "integrity": "sha512-VMqPXe3Bg4R9yC9PNqGv6bDFwWlVYadYxp0Ke1ihhXUCpGcx7e28kOYcqK2T3RxLXK4KK7VH4JRbY53Do3r+Fw==" + }, "node_modules/matrix-js-sdk": { - "version": "15.4.0", - "resolved": "https://registry.npmjs.org/matrix-js-sdk/-/matrix-js-sdk-15.4.0.tgz", - "integrity": "sha512-4iFYnIYEzRwM8W+D3wwcpcv3EspxlYgBNZN3pxWUoYqsTL8PnPSsq2wYFWsoKfEt27EEWour5jwEoP8vjlwYOw==", + "version": "15.5.0", + "resolved": "https://registry.npmjs.org/matrix-js-sdk/-/matrix-js-sdk-15.5.0.tgz", + "integrity": "sha512-Y8BoJ5xEejTeO2vwGrE4hNrSSOKLP6/brqeTy+gjjgti/PUhf+foC+ww9lHv7MqiNYFl9a/8tBf3crhU8+3jVw==", "dependencies": { "@babel/runtime": "^7.12.5", "another-json": "^0.2.0", @@ -6993,6 +7107,7 @@ "bs58": "^4.0.1", "content-type": "^1.0.4", "loglevel": "^1.7.1", + "matrix-events-sdk": "^0.0.1-beta.6", "p-retry": "^4.5.0", "qs": "^6.9.6", "request": "^2.88.2", @@ -7739,9 +7854,9 @@ } }, "node_modules/negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "optional": true, "peer": true, "engines": { @@ -8236,11 +8351,11 @@ } }, "node_modules/p-cancelable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", "engines": { - "node": ">=8" + "node": ">=12.20" } }, "node_modules/p-finally": { @@ -8615,14 +8730,6 @@ "node": ">= 10" } }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "engines": { - "node": ">= 0.6.0" - } - }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -8828,9 +8935,9 @@ "peer": true }, "node_modules/react-native": { - "version": "0.67.1", - "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.67.1.tgz", - "integrity": "sha512-doKN9qhtjilF+6p8603OVzqGKL4fq8EDAH5u00KPmZbL5ampHDQX9y8/uwlUvJggvHwZXlnvhW63u8Y1LA8rxw==", + "version": "0.67.2", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.67.2.tgz", + "integrity": "sha512-grEtpOLLvtSg8Bivg0ffVRCjTkresqMt7Jdog/geF6VAYhb4RnLaaUCWvyrfyB9buf135FKnqg5BIuve/XQNXA==", "optional": true, "peer": true, "dependencies": { @@ -8976,9 +9083,9 @@ "peer": true }, "node_modules/regenerate-unicode-properties": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", - "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", + "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", "optional": true, "peer": true, "dependencies": { @@ -9018,16 +9125,16 @@ } }, "node_modules/regexpu-core": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", - "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", + "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", "optional": true, "peer": true, "dependencies": { "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^9.0.0", - "regjsgen": "^0.5.2", - "regjsparser": "^0.7.0", + "regenerate-unicode-properties": "^10.0.1", + "regjsgen": "^0.6.0", + "regjsparser": "^0.8.2", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.0.0" }, @@ -9036,16 +9143,16 @@ } }, "node_modules/regjsgen": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", - "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", + "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", "optional": true, "peer": true }, "node_modules/regjsparser": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", - "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", + "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", "optional": true, "peer": true, "dependencies": { @@ -9221,6 +9328,14 @@ "lowercase-keys": "^2.0.0" } }, + "node_modules/responselike/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "engines": { + "node": ">=8" + } + }, "node_modules/restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", @@ -9759,9 +9874,9 @@ } }, "node_modules/signal-exit": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", - "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "optional": true, "peer": true }, @@ -10115,6 +10230,13 @@ "optional": true, "peer": true }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "optional": true, + "peer": true + }, "node_modules/split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -11335,6 +11457,17 @@ } }, "dependencies": { + "@ampproject/remapping": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.0.2.tgz", + "integrity": "sha512-sE8Gx+qSDMLoJvb3QarJJlDQK7SSY4rK3hxp4XsiANeFOmjU46ZI7Y9adAQRJrmbz8zbtZkp3mJTT+rGxtF0XA==", + "optional": true, + "peer": true, + "requires": { + "@jridgewell/trace-mapping": "^0.2.2", + "sourcemap-codec": "1.4.8" + } + }, "@babel/code-frame": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", @@ -11346,34 +11479,34 @@ } }, "@babel/compat-data": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.8.tgz", - "integrity": "sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.0.tgz", + "integrity": "sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==", "optional": true, "peer": true }, "@babel/core": { - "version": "7.16.12", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.12.tgz", - "integrity": "sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.0.tgz", + "integrity": "sha512-x/5Ea+RO5MvF9ize5DeVICJoVrNv0Mi2RnIABrZEKYvPEpldXwauPkgvYA17cKa6WpU3LoYvYbuEMFtSNFsarA==", "optional": true, "peer": true, "requires": { + "@ampproject/remapping": "^2.0.0", "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.16.8", + "@babel/generator": "^7.17.0", "@babel/helper-compilation-targets": "^7.16.7", "@babel/helper-module-transforms": "^7.16.7", - "@babel/helpers": "^7.16.7", - "@babel/parser": "^7.16.12", + "@babel/helpers": "^7.17.0", + "@babel/parser": "^7.17.0", "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.10", - "@babel/types": "^7.16.8", + "@babel/traverse": "^7.17.0", + "@babel/types": "^7.17.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" + "semver": "^6.3.0" }, "dependencies": { "@babel/code-frame": { @@ -11406,13 +11539,13 @@ } }, "@babel/generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.8.tgz", - "integrity": "sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.0.tgz", + "integrity": "sha512-I3Omiv6FGOC29dtlZhkfXO6pgkmukJSlT26QjVvS1DGZe/NzSVCPG41X0tS21oZkJYlovfj9qDWgKP+Cn4bXxw==", "optional": true, "peer": true, "requires": { - "@babel/types": "^7.16.8", + "@babel/types": "^7.17.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" } @@ -11461,9 +11594,9 @@ } }, "@babel/helper-create-class-features-plugin": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.10.tgz", - "integrity": "sha512-wDeej0pu3WN/ffTxMNCPW5UCiOav8IcLRxSIyp/9+IF2xJUM9h/OYjg0IJLHaL6F8oU8kqMz9nc1vryXhMsgXg==", + "version": "7.17.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.1.tgz", + "integrity": "sha512-JBdSr/LtyYIno/pNnJ75lBcqc3Z1XXujzPanHqjvvrhOA+DTceTFuJi8XjmWTZh4r3fsdfqaCMN0iZemdkxZHQ==", "optional": true, "peer": true, "requires": { @@ -11477,14 +11610,14 @@ } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.7.tgz", - "integrity": "sha512-fk5A6ymfp+O5+p2yCkXAu5Kyj6v0xh0RBeNcAkYUMDvvAAoxvSKXn+Jb37t/yWFiQVDFK1ELpUTD8/aLhCPu+g==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz", + "integrity": "sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==", "optional": true, "peer": true, "requires": { "@babel/helper-annotate-as-pure": "^7.16.7", - "regexpu-core": "^4.7.1" + "regexpu-core": "^5.0.1" } }, "@babel/helper-define-polyfill-provider": { @@ -11703,15 +11836,15 @@ } }, "@babel/helpers": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.7.tgz", - "integrity": "sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.0.tgz", + "integrity": "sha512-Xe/9NFxjPwELUvW2dsukcMZIp6XwPSbI4ojFBJuX5ramHuVE22SVcZIwqzdWo5uCgeTXW8qV97lMvSOjq+1+nQ==", "optional": true, "peer": true, "requires": { "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/traverse": "^7.17.0", + "@babel/types": "^7.17.0" } }, "@babel/highlight": { @@ -11785,9 +11918,9 @@ } }, "@babel/parser": { - "version": "7.16.12", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.12.tgz", - "integrity": "sha512-VfaV15po8RiZssrkPweyvbGVSe4x2y+aciFCgn0n0/SJMR22cwofRV1mtnJQYcSB1wUTaA/X1LnA3es66MCO5A==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.0.tgz", + "integrity": "sha512-VKXSCQx5D8S04ej+Dqsr1CzYvvWgf20jIw2D+YhQCrIlr2UZGaDds23Y0xg75/skOxpLCRpUZvk/1EAVkGoDOw==", "optional": true, "peer": true }, @@ -11849,15 +11982,17 @@ } }, "@babel/plugin-proposal-decorators": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.16.7.tgz", - "integrity": "sha512-DoEpnuXK14XV9btI1k8tzNGCutMclpj4yru8aXKoHlVmbO1s+2A+g2+h4JhcjrxkFJqzbymnLG6j/niOf3iFXQ==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.17.0.tgz", + "integrity": "sha512-JR8HTf3T1CsdMqfENrZ9pqncwsH4sPcvsyDLpvmv8iIbpDmeyBD7HPfGAIqkQph2j5d3B84hTm+m3qHPAedaPw==", "optional": true, "peer": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.17.0", "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-decorators": "^7.16.7" + "@babel/helper-replace-supers": "^7.16.7", + "@babel/plugin-syntax-decorators": "^7.17.0", + "charcodes": "^0.2.0" } }, "@babel/plugin-proposal-dynamic-import": { @@ -12040,9 +12175,9 @@ } }, "@babel/plugin-syntax-decorators": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.16.7.tgz", - "integrity": "sha512-vQ+PxL+srA7g6Rx6I1e15m55gftknl2X8GCUW1JTlkTaXZLJOS0UcaY0eK9jYT7IYf4awn6qwyghVHLDz1WyMw==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.17.0.tgz", + "integrity": "sha512-qWe85yCXsvDEluNP0OyeQjH63DlhAR3W7K9BxxU1MvbDb48tgBG+Ao6IJJ6smPDrrVzSQZrbF6donpkFBMcs3A==", "optional": true, "peer": true, "requires": { @@ -12539,9 +12674,9 @@ } }, "@babel/plugin-transform-runtime": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.16.10.tgz", - "integrity": "sha512-9nwTiqETv2G7xI4RvXHNfpGdr8pAA+Q/YtN3yLK7OoK7n9OibVm/xymJ838a9A6E/IciOLPj82lZk0fW6O4O7w==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.0.tgz", + "integrity": "sha512-fr7zPWnKXNc1xoHfrIU9mN/4XKX4VLZ45Q+oMhfsYIaHvg7mHgmhfOy/ckRWqDK7XF3QDigRpkh5DKq6+clE8A==", "optional": true, "peer": true, "requires": { @@ -12777,23 +12912,23 @@ } }, "@babel/register": { - "version": "7.16.9", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.16.9.tgz", - "integrity": "sha512-jJ72wcghdRIlENfvALcyODhNoGE5j75cYHdC+aQMh6cU/P86tiiXTp9XYZct1UxUMo/4+BgQRyNZEGx0KWGS+g==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.17.0.tgz", + "integrity": "sha512-UNZsMAZ7uKoGHo1HlEXfteEOYssf64n/PNLHGqOKq/bgYcu/4LrQWAHJwSCb3BRZK8Hi5gkJdRcwrGTO2wtRCg==", "optional": true, "peer": true, "requires": { "clone-deep": "^4.0.1", "find-cache-dir": "^2.0.0", "make-dir": "^2.1.0", - "pirates": "^4.0.0", + "pirates": "^4.0.5", "source-map-support": "^0.5.16" } }, "@babel/runtime": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.7.tgz", - "integrity": "sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.0.tgz", + "integrity": "sha512-etcO/ohMNaNA2UBdaXBBSX/3aEzFMRrVfaPv8Ptc0k+cWpWW0QFiGZ2XnVqQZI1Cf734LbPGmqBKWESfW4x/dQ==", "requires": { "regenerator-runtime": "^0.13.4" } @@ -12823,20 +12958,20 @@ } }, "@babel/traverse": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.10.tgz", - "integrity": "sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.0.tgz", + "integrity": "sha512-fpFIXvqD6kC7c7PUNnZ0Z8cQXlarCLtCUpt2S1Dx7PjoRtCFffvOkHHSom+m5HIxMZn5bIBVb71lhabcmjEsqg==", "optional": true, "peer": true, "requires": { "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.16.8", + "@babel/generator": "^7.17.0", "@babel/helper-environment-visitor": "^7.16.7", "@babel/helper-function-name": "^7.16.7", "@babel/helper-hoist-variables": "^7.16.7", "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.16.10", - "@babel/types": "^7.16.8", + "@babel/parser": "^7.17.0", + "@babel/types": "^7.17.0", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -12854,9 +12989,9 @@ } }, "@babel/types": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz", - "integrity": "sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==", + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", "optional": true, "peer": true, "requires": { @@ -13078,6 +13213,24 @@ "chalk": "^4.0.0" } }, + "@jridgewell/resolve-uri": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.4.tgz", + "integrity": "sha512-cz8HFjOFfUBtvN+NXYSFMHYRdxZMaEl0XypVrhzxBgadKIXhIkRd8aMeHhmF56Sl7SuS8OnUpQ73/k9LE4VnLg==", + "optional": true, + "peer": true + }, + "@jridgewell/trace-mapping": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.2.6.tgz", + "integrity": "sha512-rVJf5dSMEBxnDEwtAT5x8+p6tZ+xU6Ocm+cR1MYL2gMsRi4MMzVf9Pvq6JaxIsEeKAyYmo2U+yPQN4QfdTfFnA==", + "optional": true, + "peer": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "sourcemap-codec": "1.4.8" + } + }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -13519,11 +13672,11 @@ "integrity": "sha512-QppPM/8l3Mawvh4rn9CNEYIU9bxpXUCRMaX9yUpvBk1nMKusLKpfXGDEKExKaPhLzcn3lzil7pR6rnJ11HgeRQ==" }, "@szmarczak/http-timer": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", - "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", "requires": { - "defer-to-connect": "^2.0.0" + "defer-to-connect": "^2.0.1" } }, "@types/asn1js": { @@ -13593,9 +13746,9 @@ } }, "@types/node": { - "version": "17.0.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.12.tgz", - "integrity": "sha512-4YpbAsnJXWYK/fpTVFlMIcUIho2AYCi4wg5aNPrG1ng7fn/1/RZfCIpRCiBX+12RVa34RluilnvCqD+g3KiSiA==" + "version": "17.0.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.14.tgz", + "integrity": "sha512-SbjLmERksKOGzWzPNuW7fJM7fk3YXVTFiZWB/Hs99gwhk+/dnrQRPBQjPW9aO+fi1tAffi9PrwFvsmOKmDTyng==" }, "@types/responselike": { "version": "1.0.0", @@ -13671,14 +13824,14 @@ "peer": true }, "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "optional": true, "peer": true, "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" } }, "ajv": { @@ -13898,7 +14051,8 @@ "at-least-node": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "optional": true }, "atob": { "version": "2.1.2", @@ -13987,14 +14141,14 @@ } }, "babel-plugin-polyfill-corejs3": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.1.tgz", - "integrity": "sha512-TihqEe4sQcb/QcPJvxe94/9RZuLQuF1+To4WqQcRvc+3J3gLCPIPgDKzGLG6zmQLfH3nn25heRuDNkS2KR4I8A==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", + "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", "optional": true, "peer": true, "requires": { "@babel/helper-define-polyfill-provider": "^0.3.1", - "core-js-compat": "^3.20.0" + "core-js-compat": "^3.21.0" } }, "babel-plugin-polyfill-regenerator": { @@ -14283,9 +14437,9 @@ } }, "cacheable-lookup": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==" + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-6.0.4.tgz", + "integrity": "sha512-mbcDEZCkv2CZF4G01kr8eBd/5agkt9oCqz75tJMSIsquvRZ2sL6Hi5zGVKi/0OSC9oO1GHfJ2AV0ZIOY9vye0A==" }, "cacheable-request": { "version": "7.0.2", @@ -14299,6 +14453,21 @@ "lowercase-keys": "^2.0.0", "normalize-url": "^6.0.1", "responselike": "^2.0.0" + }, + "dependencies": { + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "requires": { + "pump": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + } } }, "call-bind": { @@ -14345,9 +14514,9 @@ "peer": true }, "caniuse-lite": { - "version": "1.0.30001303", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001303.tgz", - "integrity": "sha512-/Mqc1oESndUNszJP0kx0UaQU9kEv9nNtJ7Kn8AdA0mNnH8eR1cj0kG+NbNuC1Wq/b21eA8prhKRA3bbkjONegQ==", + "version": "1.0.30001307", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001307.tgz", + "integrity": "sha512-+MXEMczJ4FuxJAUp0jvAl6Df0NI/OfW1RWEE61eSmzS7hw6lz4IKutbhbXendwq8BljfFuHtu26VWsg4afQ7Ng==", "optional": true, "peer": true }, @@ -14376,6 +14545,13 @@ "supports-color": "^7.1.0" } }, + "charcodes": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/charcodes/-/charcodes-0.2.0.tgz", + "integrity": "sha512-Y4kiDb+AM4Ecy58YkuZrrSRJBDQdQ2L+NyS1vHHFtNtUjgutcZfx3yp1dAONI/oPaPmyGfCLx5CxL+zauIMyKQ==", + "optional": true, + "peer": true + }, "ci-info": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", @@ -14734,9 +14910,9 @@ "peer": true }, "core-js-compat": { - "version": "3.20.3", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.20.3.tgz", - "integrity": "sha512-c8M5h0IkNZ+I92QhIpuSijOxGAcj3lgpsWdkCqmUTZNwidujF4r3pi6x1DCN+Vcs5qTS2XWWMfWSuCqyupX8gw==", + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.21.0.tgz", + "integrity": "sha512-OSXseNPSK2OPJa6GdtkMz/XxeXx8/CJvfhQWTqd6neuUraujcL4jVsjkLQz1OWnax8xVQJnRPe0V2jqNWORA+A==", "optional": true, "peer": true, "requires": { @@ -14936,9 +15112,9 @@ "peer": true }, "electron-to-chromium": { - "version": "1.4.54", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.54.tgz", - "integrity": "sha512-jRAoneRdSxnpRHO0ANpnEUtQHXxlgfVjrLOnQSisw1ryjXJXvS0pJaR/v2B7S++/tRjgEDp4Sjn5nmgb6uTySw==", + "version": "1.4.64", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.64.tgz", + "integrity": "sha512-8mec/99xgLUZCIZZq3wt61Tpxg55jnOSpxGYapE/1Ma9MpFEYYaz4QNYm0CM1rrnCo7i3FRHhbaWjeCLsveGjQ==", "optional": true, "peer": true }, @@ -15222,9 +15398,9 @@ } }, "expo": { - "version": "44.0.5", - "resolved": "https://registry.npmjs.org/expo/-/expo-44.0.5.tgz", - "integrity": "sha512-QNQjUb+Rve1r1wUjs2fSx3JVxAVtcmqWZgS+izCLFovAoX6bZ1UUkQBUkVP9PNfimnZ11EDFG4243E0yxtmuuA==", + "version": "44.0.6", + "resolved": "https://registry.npmjs.org/expo/-/expo-44.0.6.tgz", + "integrity": "sha512-iHnra6uD5kXZgdSUrvxZ3sLjg1FtgtA4p4uaSKVQ39IaMHJBngo8RKqFUJ+BF2kPDpBLJ251eLlhgYUlnAyuag==", "optional": true, "peer": true, "requires": { @@ -15233,15 +15409,15 @@ "@expo/vector-icons": "^12.0.4", "babel-preset-expo": "~9.0.2", "cross-spawn": "^6.0.5", - "expo-application": "~4.0.1", + "expo-application": "~4.0.2", "expo-asset": "~8.4.6", - "expo-constants": "~13.0.0", - "expo-error-recovery": "~3.0.4", - "expo-file-system": "~13.1.0", - "expo-font": "~10.0.4", - "expo-keep-awake": "~10.0.1", + "expo-constants": "~13.0.2", + "expo-error-recovery": "~3.0.5", + "expo-file-system": "~13.1.3", + "expo-font": "~10.0.5", + "expo-keep-awake": "~10.0.2", "expo-modules-autolinking": "0.5.5", - "expo-modules-core": "0.6.4", + "expo-modules-core": "0.6.5", "fbemitter": "^2.1.1", "invariant": "^2.2.4", "md5-file": "^3.2.3", @@ -15262,13 +15438,26 @@ "find-up": "^5.0.0", "fs-extra": "^9.1.0" } + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "optional": true, + "peer": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } } } }, "expo-application": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/expo-application/-/expo-application-4.0.1.tgz", - "integrity": "sha512-yZM/SrpWdi84m5+5F3VDfhrMZOz/uKwXcgBhOP1wzfXt0otGSRW1V5tM+a0sgaKZsDRCGojTU7Jm73BVwwVrwg==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/expo-application/-/expo-application-4.0.2.tgz", + "integrity": "sha512-ngTaFplTkWn0X45gMC+VNXGyJfGxX4wOwKmtr17rNMVWOQUhhLlyMkTj9bAamzsuwZh35l3S/eD/N1aMWWUwMw==", "optional": true, "peer": true, "requires": {} @@ -15288,9 +15477,9 @@ } }, "expo-constants": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-13.0.1.tgz", - "integrity": "sha512-48rhXCZMJGVx/v4DEd9PqTY6V/xLgtWHBy8nos27QIpYCyiC27I3QUQEUI1T3MXUwBsIR4LLJuwnD/4IfftrBw==", + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-13.0.2.tgz", + "integrity": "sha512-vGs/kI65vplPFvG8z4W1ariGEtVHHp9Avl28G0zJprt2v/q1E/BnXjwvFSBPc1GB+Zb/7crWSHWRwjaFULBjsg==", "optional": true, "peer": true, "requires": { @@ -15299,17 +15488,17 @@ } }, "expo-error-recovery": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/expo-error-recovery/-/expo-error-recovery-3.0.4.tgz", - "integrity": "sha512-7z2V7n9Yvm9/ogm4I1KgcsQZfgyDMSOBVHk8pA3IY0jL8+tXTyTrStxHsPXRjE8HHeYikfTRBIeFsh/1wWY7oA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/expo-error-recovery/-/expo-error-recovery-3.0.5.tgz", + "integrity": "sha512-VM6OOecjt0aPu5/eCdGGJfNjvAZIemaQym0JF/+SA5IlLiPpEfbVCDTO/5yiS8Zb5fKpeABx+GCRmtfnFqvRRw==", "optional": true, "peer": true, "requires": {} }, "expo-file-system": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-13.1.2.tgz", - "integrity": "sha512-TA0LZTi8ZlnmyB2q6rEuTEo7b63e2luBzNhR5h/ow2J55xxRTXQLeaoK9m69XgazLVq6Ys7wiJma/q+Hg38hrQ==", + "version": "13.1.3", + "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-13.1.3.tgz", + "integrity": "sha512-yh1LmxVvezoxwSAUWDRda36+nw96IQj4EgiYNbl6LK6Drtc/v5OhWl1vJG7oSYNhZ0zMwo1CSE4gC7h50ZldtQ==", "optional": true, "peer": true, "requires": { @@ -15318,9 +15507,9 @@ } }, "expo-font": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-10.0.4.tgz", - "integrity": "sha512-ieEsT6tD6yD6qT7WUzzJ5el0UvACr53RqICu0GI9GUiWuwDFPM2Oi5WfWwYFFStCRuaP6kEtpkJDUZ9cjT5F+w==", + "version": "10.0.5", + "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-10.0.5.tgz", + "integrity": "sha512-x9YwM0xLkDdSvFjeNbyuh33Q1Hk3uc2jbMuuAN5W2ZVcUZqG0M8GCX/KV/D/7rYqdXKbliQA5r44MyDwZe/XRw==", "optional": true, "peer": true, "requires": { @@ -15328,9 +15517,9 @@ } }, "expo-keep-awake": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-10.0.1.tgz", - "integrity": "sha512-kcBtoDGkm3RRe6BpKDvR7gof/ErajEia38u92pRvNRctdh+p8AFO7GQuiipyg3iMfhcCFVTCIV7h3tuA0g/yDw==", + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-10.0.2.tgz", + "integrity": "sha512-Ro1lgyKldbFs4mxhWM+goX9sg0S2SRR8FiJJeOvaRzf8xNhrZfWA00Zpr+/3ocCoWQ3eEL+X9UF4PXXHf0KoOg==", "optional": true, "peer": true, "requires": {} @@ -15346,12 +15535,26 @@ "fast-glob": "^3.2.5", "find-up": "~5.0.0", "fs-extra": "^9.1.0" + }, + "dependencies": { + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "optional": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + } } }, "expo-modules-core": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-0.6.4.tgz", - "integrity": "sha512-I5MvSZHjww4Jfvob/woCbI0ZLZIUBmhoiLeZsMJoWJuWa8QmtxXjI+4eRjaDB7+RxNVhrnVcmRjQPYG/5HepVg==", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-0.6.5.tgz", + "integrity": "sha512-h/9+SJ3m8XkDUV1QrPO8WeXaeRYWLBJrOqhokDyhgWUYSqe6JOuRx1ZkoGq/GmTiwjouRDbXPsXUBiU9HWLYyA==", "optional": true, "peer": true, "requires": { @@ -15360,9 +15563,9 @@ } }, "expo-random": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/expo-random/-/expo-random-12.1.1.tgz", - "integrity": "sha512-AxxP9aqgCgGQsUC9jvMaaMXLmdkwbeil1MYqLJVMsueeAifsRDAroSGcpkbuXjK7lgNFdfdJNU/+4Z7ybBev/A==", + "version": "12.1.2", + "resolved": "https://registry.npmjs.org/expo-random/-/expo-random-12.1.2.tgz", + "integrity": "sha512-ajB+Mwff9PdglsyLliaU4K9BtVwKvAVVI2hQhnvlS3QgsAhHf+jQVUfAysQJHuioF6ADMEsab/kRUy4Dy03aoQ==", "optional": true, "requires": { "base64-js": "^1.3.0" @@ -15633,6 +15836,11 @@ "mime-types": "^2.1.12" } }, + "form-data-encoder": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.1.tgz", + "integrity": "sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg==" + }, "fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", @@ -15651,11 +15859,10 @@ "peer": true }, "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", + "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", "requires": { - "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" @@ -15705,12 +15912,9 @@ } }, "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "requires": { - "pump": "^3.0.0" - } + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" }, "get-value": { "version": "2.0.6", @@ -15766,20 +15970,22 @@ "peer": true }, "got": { - "version": "11.8.3", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.3.tgz", - "integrity": "sha512-7gtQ5KiPh1RtGS9/Jbv1ofDpBFuq42gyfEib+ejaRBJuj/3tQFeR5+gw57e4ipaU8c/rCjvX6fkQz2lyDlGAOg==", + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/got/-/got-12.0.1.tgz", + "integrity": "sha512-1Zhoh+lDej3t7Ks1BP/Jufn+rNqdiHQgUOcTxHzg2Dao1LQfp5S4Iq0T3iBxN4Zdo7QqCJL+WJUNzDX6rCP2Ew==", "requires": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", + "@sindresorhus/is": "^4.2.0", + "@szmarczak/http-timer": "^5.0.1", + "@types/cacheable-request": "^6.0.2", "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", + "cacheable-lookup": "^6.0.4", "cacheable-request": "^7.0.2", "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", + "form-data-encoder": "1.7.1", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.9", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", "responselike": "^2.0.0" } }, @@ -15941,12 +16147,12 @@ } }, "http2-wrapper": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "version": "2.1.10", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.1.10.tgz", + "integrity": "sha512-QHgsdYkieKp+6JbXP25P+tepqiHYd+FVnDwXpxi/BlUcoIB0nsmTOymTNvETuTO+pDuwcSklPE72VR3DqV+Haw==", "requires": { "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" + "resolve-alpn": "^1.2.0" } }, "iconv-lite": { @@ -16587,9 +16793,9 @@ } }, "keyv": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.5.tgz", - "integrity": "sha512-531pkGLqV3BMg0eDqqJFI0R1mkK1Nm5xIP2mM6keP5P8WfFtCkg2IOwplTUmlGoTgIg9yQYZ/kdihhz89XH3vA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.1.0.tgz", + "integrity": "sha512-YsY3wr6HabE11/sscee+3nZ03XjvkrPWGouAmJFBdZoK92wiOlJCzI5/sDEIKdJhdhHO144ei45U9gXfbu14Uw==", "requires": { "json-buffer": "3.0.1" } @@ -16820,9 +17026,9 @@ } }, "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==" }, "lru-cache": { "version": "6.0.0", @@ -16881,10 +17087,15 @@ "object-visit": "^1.0.0" } }, + "matrix-events-sdk": { + "version": "0.0.1-beta.6", + "resolved": "https://registry.npmjs.org/matrix-events-sdk/-/matrix-events-sdk-0.0.1-beta.6.tgz", + "integrity": "sha512-VMqPXe3Bg4R9yC9PNqGv6bDFwWlVYadYxp0Ke1ihhXUCpGcx7e28kOYcqK2T3RxLXK4KK7VH4JRbY53Do3r+Fw==" + }, "matrix-js-sdk": { - "version": "15.4.0", - "resolved": "https://registry.npmjs.org/matrix-js-sdk/-/matrix-js-sdk-15.4.0.tgz", - "integrity": "sha512-4iFYnIYEzRwM8W+D3wwcpcv3EspxlYgBNZN3pxWUoYqsTL8PnPSsq2wYFWsoKfEt27EEWour5jwEoP8vjlwYOw==", + "version": "15.5.0", + "resolved": "https://registry.npmjs.org/matrix-js-sdk/-/matrix-js-sdk-15.5.0.tgz", + "integrity": "sha512-Y8BoJ5xEejTeO2vwGrE4hNrSSOKLP6/brqeTy+gjjgti/PUhf+foC+ww9lHv7MqiNYFl9a/8tBf3crhU8+3jVw==", "requires": { "@babel/runtime": "^7.12.5", "another-json": "^0.2.0", @@ -16892,6 +17103,7 @@ "bs58": "^4.0.1", "content-type": "^1.0.4", "loglevel": "^1.7.1", + "matrix-events-sdk": "^0.0.1-beta.6", "p-retry": "^4.5.0", "qs": "^6.9.6", "request": "^2.88.2", @@ -17560,9 +17772,9 @@ } }, "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "optional": true, "peer": true }, @@ -17954,9 +18166,9 @@ "peer": true }, "p-cancelable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==" }, "p-finally": { "version": "1.0.0", @@ -18237,11 +18449,6 @@ "react-is": "^17.0.1" } }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" - }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -18396,9 +18603,9 @@ "peer": true }, "react-native": { - "version": "0.67.1", - "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.67.1.tgz", - "integrity": "sha512-doKN9qhtjilF+6p8603OVzqGKL4fq8EDAH5u00KPmZbL5ampHDQX9y8/uwlUvJggvHwZXlnvhW63u8Y1LA8rxw==", + "version": "0.67.2", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.67.2.tgz", + "integrity": "sha512-grEtpOLLvtSg8Bivg0ffVRCjTkresqMt7Jdog/geF6VAYhb4RnLaaUCWvyrfyB9buf135FKnqg5BIuve/XQNXA==", "optional": true, "peer": true, "requires": { @@ -18527,9 +18734,9 @@ "peer": true }, "regenerate-unicode-properties": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", - "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", + "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", "optional": true, "peer": true, "requires": { @@ -18563,31 +18770,31 @@ } }, "regexpu-core": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", - "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", + "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", "optional": true, "peer": true, "requires": { "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^9.0.0", - "regjsgen": "^0.5.2", - "regjsparser": "^0.7.0", + "regenerate-unicode-properties": "^10.0.1", + "regjsgen": "^0.6.0", + "regjsparser": "^0.8.2", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.0.0" } }, "regjsgen": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", - "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", + "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", "optional": true, "peer": true }, "regjsparser": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", - "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", + "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", "optional": true, "peer": true, "requires": { @@ -18730,6 +18937,13 @@ "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==", "requires": { "lowercase-keys": "^2.0.0" + }, + "dependencies": { + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + } } }, "restore-cursor": { @@ -19172,9 +19386,9 @@ } }, "signal-exit": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", - "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "optional": true, "peer": true }, @@ -19477,6 +19691,13 @@ "optional": true, "peer": true }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "optional": true, + "peer": true + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", diff --git a/package.json b/package.json index 4f58a26..af01878 100644 --- a/package.json +++ b/package.json @@ -1,18 +1,18 @@ { "name": "node-red-contrib-matrix-chat", - "version": "0.4.1", + "version": "0.4.5", "description": "Matrix chat server client for Node-RED", "dependencies": { - "fs-extra": "^9.1.0", - "got": "^11.8.2", + "fs-extra": "^10.0.0", + "got": "^12.0.1", "isomorphic-webcrypto": "^2.3.8", - "matrix-js-sdk": "^15.3.0", + "matrix-js-sdk": "^15.5.0", "node-localstorage": "^2.2.1", "olm": "https://packages.matrix.org/npm/olm/olm-3.2.1.tgz", - "process": "^0.11.10", "utf8": "^3.0.0" }, "node-red": { + "version": ">=1.3.0", "nodes": { "matrix-server-config": "src/matrix-server-config.js", "matrix-receive": "src/matrix-receive.js", @@ -35,6 +35,9 @@ "matrix-room-users": "src/matrix-room-users.js" } }, + "engines": { + "node": ">=14.0.0" + }, "keywords": [ "node-red", "matrix", diff --git a/src/matrix-crypt-file.js b/src/matrix-crypt-file.js index 3aa993f..e58086d 100644 --- a/src/matrix-crypt-file.js +++ b/src/matrix-crypt-file.js @@ -1,5 +1,4 @@ module.exports = function(RED) { - const got = require('got'); const crypto = require('isomorphic-webcrypto'); function MatrixDecryptFile(n) { @@ -10,6 +9,8 @@ module.exports = function(RED) { this.name = n.name; node.on("input", async function (msg) { + const { got } = await import('got'); + if(!msg.type) { node.error('msg.type is required.'); return; diff --git a/src/matrix-receive.html b/src/matrix-receive.html index 209c0db..616dc94 100644 --- a/src/matrix-receive.html +++ b/src/matrix-receive.html @@ -204,6 +204,11 @@

  • msg.type == 'm.file' +
    +
    msg.filename string
    +
    the file's parsed filename
    +
    +
    msg.url string
    the file's URL
    @@ -216,6 +221,11 @@
  • msg.type == 'm.image' +
    +
    msg.filename string
    +
    the image's parsed filename
    +
    +
    msg.url string
    the image's URL
    diff --git a/src/matrix-receive.js b/src/matrix-receive.js index 2ac9cd2..81ac351 100644 --- a/src/matrix-receive.js +++ b/src/matrix-receive.js @@ -62,6 +62,7 @@ module.exports = function(RED) { case 'm.file': if(!node.acceptFiles) return; + msg.filename = msg.content.filename || msg.content.body; if(msg.encrypted) { msg.url = node.server.matrixClient.mxcUrlToHttp(msg.content.file.url); msg.mxc_url = msg.content.file.url; @@ -73,7 +74,7 @@ module.exports = function(RED) { case 'm.image': if(!node.acceptImages) return; - + msg.filename = msg.content.filename || msg.content.body; if(msg.encrypted) { msg.url = node.server.matrixClient.mxcUrlToHttp(msg.content.file.url); msg.mxc_url = msg.content.file.url; diff --git a/src/matrix-room-users.html b/src/matrix-room-users.html index 3e70404..c94e8fe 100644 --- a/src/matrix-room-users.html +++ b/src/matrix-room-users.html @@ -31,9 +31,6 @@ -
    - This only works on Synapse servers. The user also must be an administrator. -